Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
#1

Собака в логине - Objective-C

19.05.2013, 19:27. Просмотров 1860. Ответов 28
Метки нет (Все метки)

Возможно, дурной вопрос, но я что-то туплю второй день.
Есть у меня логин к FTP-серверу вида username@host. На всякий случай уточняю. Это именно логин такой.
Задача - залить на этот ftp файлик. Соединение открываю через CFWriteStreamCreateWithFTPURL. Ей требуется connection string. Так вот вопрос: Как ее формировать?
Строка вида CFSTR("ftp://user@mysite.ru:pass@ftp.mysite.ru"); приводит к kCFErrorDomainCFNetwork error 200. CFSTR("ftp://user%64mysite.ru:pass@ftp.mysite.ru"); - тоже.
FileZilla логинится без капризов. Причем, я на 100% уверен, что с остальным у меня все нормально: если заменить логин на пользователя без собаки, все работает.
Никто с подобной бедой не сталкивался?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2013, 19:27     Собака в логине
Посмотрите здесь:

Что значат собака (@) и процент (%) в тексте кода - Objective-C
Добрый день всем! Извините, если задаю вопрос немного неправильно или это уже было. Учусь в колледже на отделении ПОИТ и пока в...

Моргание экрана при логине - Windows 10
Запускаю компьютер - нужно ввести пароль(начинает моргать экран) все ввожу правильно и жму enter. пишет: добро пожаловать, но эран все еще...

Лишние пробелы в логине и пароле - SQL Server
Доброго всем времени суток. Я создал процедуру для создания логина и пользователя, чтобы можно было войти в БД под другим именем: ...

ошыбка в логине помогите плиз - PHP ООП
<?php @session_start(); class Login { protected $_id; protected $_user; protected $_pass; protected...

Использование прокси при логине - C#
Доброго новогоднего дня. У меня вопрос, есть у меня логин в ВК, работает норм, но если добавляю коннект с помощью прокси - получаю...

Вылеты при логине в опере - Софт
Проблема в следующем - при логине на каком-либо сайте (ну естессно где авторизация требуется) через пару-тройку переходов по страницам...

Фильтрация символов при логине - PHP
Вот при логине на сайт, я зделал для себя функцыю для фильтрации всяких ненужных символов, вот код function check($str) { if...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
19.05.2013, 20:01     Собака в логине #2
@ = %40, а не %64, %64 - это "d".

Попробуйте свою изначальную строку заURLэнкодить
Чтобы не вручную, как говорится

Добавлено через 6 минут
И так как NSString и CFStringRef кастуемы друг в друга, не заморачивайтесь, работайте с NSString, а потом просто кастуйте в (CFStringRef).
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
19.05.2013, 21:30  [ТС]     Собака в логине #3
Ой блин! Точно 40. Эк меня приглючило-то
Спасибо!
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
20.05.2013, 09:30     Собака в логине #4
Пожалуйста. С утра прочитал название темы... "Собака в логине"
- вспомнилось изречение старшего товарища -
Ааа... Воот где собака-то порылась
Здесь она получается, порылась в логине
alexpac26
14 / 22 / 0
Регистрация: 20.01.2013
Сообщений: 125
20.05.2013, 11:10     Собака в логине #5
Objective-C
1
2
#define urlencode(str) CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)str, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8)
#define urlencodeansi(str) CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)str, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingWindowsCyrillic)
Objective-C
1
2
NSLog(@"%@",urlencode(@"ftp://user@mysite.ru:pass@ftp.mysite.ru"));
// ftp%3A%2F%2Fuser%40mysite.ru%3Apass%40ftp.mysite.ru
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,276
20.05.2013, 11:56     Собака в логине #6
Да перестаньте вы везде эти дефайны впихивать, есть же понятие метода, что за подход?
alexpac26
14 / 22 / 0
Регистрация: 20.01.2013
Сообщений: 125
20.05.2013, 12:28     Собака в логине #7
Да перестаньте вы везде эти дефайны впихивать, есть же понятие метода, что за подход?
откуда такая ненависть к макросам?

есть же понятие метода
все в статический класс спихивать? "синглтон с улитилитами" TM ?

а может ваще в хелпер класс?

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// расширенная строка
 
@interface NSString (StringExt)
 
-(NSString*) ext_urlecode;
-(NSString*) ext_urlecodeansi;
 
@end
 
@implementation NSString (StringExt)
 
-(NSString*) ext_urlecode {
   return CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)self, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8)
}
-(NSString*) ext_urlecodeansi {
   return CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)self, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingWindowsCyrillic)
}
 
@end
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
20.05.2013, 13:22  [ТС]     Собака в логине #8
Цитата Сообщение от alexpac26 Посмотреть сообщение
откуда такая ненависть к макросам?
Из опыта поддержки. Они же нечитабельны.
Но за попытку спасибо. Хотя, zulkis уже скинул ссылку на правильное решение. "Все уже написано до нас"

Добавлено через 5 минут
Цитата Сообщение от alexpac26 Посмотреть сообщение
все в статический класс спихивать? "синглтон с улитилитами" TM ?
а может ваще в хелпер класс?
В категории соответствующих классов. Если очередной метод делает что-то полезное со строками, пишем категорию для NSString, если как-то по-хитрому массив сортирует - в категорию NSArray его. И так далее. И найти проще и читать привычно. Причем, не только автору
alexpac26
14 / 22 / 0
Регистрация: 20.01.2013
Сообщений: 125
20.05.2013, 13:56     Собака в логине #9
как бы надо различать функции и методы как таковые

urlencode это функция, а не метод объекта

функция берет в качестве параметра аргумент и возвращает значение

если писать как метод то название у него сменится

NSString encodeAsUrlecode: и тп

и ваще

CFURLCreateStringByAddingPercentEscapes()
с СИ синтасисом писать не стремно, а вот если urlencode() который, аж в нескольких языках программирования является стандартной функцией уже сразу все: непонятно неочевидно и прочее
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,276
20.05.2013, 14:29     Собака в логине #10
ну как вы не поймете, что таким никто не пользуется, это неправильно с точки зрения ООП, тяжело в поддержке, интуитивно непонятно

какой хелпер, при чем тут синглтон с утилитами (хотя вы наверняка имели ввиду статический класс, у вас же нету данных, только методы)
выделите метод для этого и используйте его, если такая конструкция понадобится еще где-то, вынесите в категорию или отдельный объект
Я вот вам советовал почитать по рефакторингу литературу, даже М.Фаулер "Рефакторинг - Улучшение существующего кода"
такой подход называется "Выделение метода", вы выносите не совсем читабельный фрагмент кода в метод, название которого объясняет его назначение.

даже если юзать статическую переменную вместо дефайна, компилятор будет использовать только одну копию переменной и всем раздавать на нее указатель, а в случае с дефайн, он везде будет вставлять отдельную копию значения, что отразится на сорсах и нагрузке компилятора (не супер критично, но почему не писать по-человечески, читабельно и интуитивно ясно для других разработчиков, чем везде писать по-своему)

вы наверное не работали в команде хотя бы 5 человек с проектом на 2000 классов, где нужно за критическое время понять структуру и разобраться в коде и вы даже не представляете какое имеет значение для разработчика читабельный код

а если каждый начнет писать то, что ему где-то понравилось и, что он лично считает правильным, несмотря на других, без конвенций и стандартов, то ваш проект загнется на первом же или втором спринте.

Цитата Сообщение от alexpac26 Посмотреть сообщение
CFURLCreateStringByAddingPercentEscapes()
с СИ синтасисом писать не стремно, а вот если urlencode() который, аж в нескольких языках программирования является стандартной функцией уже сразу все: непонятно неочевидно и прочее
не стремно, потому что все ожидают увидеть именно эту функцию для решения данной задачи, а если стремно, то вынесите в отдельный метод, как я уже говорил выше
alexpac26
14 / 22 / 0
Регистрация: 20.01.2013
Сообщений: 125
20.05.2013, 14:42     Собака в логине #11
проще говоря, стандарты "разработки в команде 5 человек с проектом на 2000 классов" сильно отличаются
от разработки практически индивидуального плана и требуют громоздкости, но соотвествия кода стандартам, чем его чистоты и лаконичности.

а в случае с дефайн, он везде будет вставлять отдельную копию значения, что отразится на сорсах и нагрузке компилятора
разница только в 0.01 % времени компиляции

Добавлено через 8 минут
а если стремно, то вынесите в отдельный метод
опятже если, вынести в метод, то темже ALT надо будет идти и смотреть что метод делает, а как иначе?

с макросом тоже самое, тогда в чем преимущества метода в 1 строку и макроса в 1 строку?

причем макрос занимает всего 1 строку в хедере, когда как методу нужен класс исполнения
у макроса правда не указан тип передачи, это да это минус
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,276
20.05.2013, 14:43     Собака в логине #12
в том-то и дело, что будет он не громоздким, а читабельным, понятным, готовым к изменениям, проще говоря конфеткой будет ваш проект, а не говнищем из 90х
может вы еще для краткости переменные называете strCp, rmDir, cnct ?
alexpac26
14 / 22 / 0
Регистрация: 20.01.2013
Сообщений: 125
20.05.2013, 14:45     Собака в логине #13
может вы еще для краткости переменные называете strCp, rmDir, cnct
не угадали
что будет он не громоздким, а читабельным, понятным, готовым к изменениям
как бы не вижу связи между

приминением helper класса, макросов, сингтон с утилитами

и общей гибкости архитектуры проекта?

выше указанные инструменты не блокируют стандарты кода, а просто "упрощают" разработку
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,276
20.05.2013, 14:47     Собака в логине #14
Цитата Сообщение от alexpac26 Посмотреть сообщение
опятже если, вынести в метод, то темже ALT надо будет идти и смотреть что метод делает, а как иначе?
с макросом тоже самое, тогда в чем преимущества метода в 1 строку и макроса в 1 строку?
причем макрос занимает всего 1 строку в хедере, когда как методу нужен класс исполнения
у макроса правда не указан тип передачи, это да это минус
боже мой, да вы заядлый говнокодер и вам тут любой об этом скажет, несчастные те люди, которым прийдется писать с вами проекты и несчастные те заказчики, которые свяжутся с вами

преимущество метода в том, что он может легко использовать данные инстанса класса, а так же четко и понятно описывает часть его поведения

ладно, вам тут все-равно бестолку что-то объяснять и пытаться направить на путь хорошего и качественного программирования

говнокодьте себе на здоровье
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2013, 14:54     Собака в логине
Еще ссылки по теме:

Разграничение возможностей юзера (при логине) - C# MVC
Привет. Плз, расскажите, как делается разграничение (к примеру, контролов на странице сайта) при авторезарованном и не...

.NET 4.x Открытие страницы в зависимости от роли при логине - C# ASP.NET
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Error =...

Символ & в логине tstringlist (Indy,IDHTTP) - Delphi
Что делать если мне нужно оформить пост запрос в indy , а в логине есть символ & , как его передать в пост запросе,без переноса строки ? ...

Как отследить ошибку при логине к Oracle? - C# ASP.NET
Значит делаю я логин к базе Оракл: login, password берётся из формы. Function GetDBConnection() Dim objConnection ...

Зависает на логине после установки родного драйвера на встроенную видеокарту - Ремонт ноутбуков
Добрый день уважаемые форумчани. История такая: у меня на ноутбуке Acer Aspire V3-571G начал перегреваться мост, палецем не дотронуться....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
20.05.2013, 14:54  [ТС]     Собака в логине #15
Предлагаю заканчивать.
alexpac26, попадете на серьезный проект, в серьезную команду, там вам все объяснят на практике отучат лениться (в наборе идентификаторов) и покажут преимущества code completion Единственная беда - переучиваться придется. Потому как, поверьте старому небритому дядьке, ни один разумный PM на своем проекте такого безобразия не потерпит. Стандарты кодирования, они как правила дорожного движения - потом и кровью писаны.
Yandex
Объявления
20.05.2013, 14:54     Собака в логине
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru