Форум программистов, компьютерный форум, киберфорум
Наши страницы
Objective-C
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
1

Собака в логине

19.05.2013, 19:27. Просмотров 2173. Ответов 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% уверен, что с остальным у меня все нормально: если заменить логин на пользователя без собаки, все работает.
Никто с подобной бедой не сталкивался?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2013, 19:27
Ответы с готовыми решениями:

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

Достанет собака прохожего или нет? Даны координаты точки, где находится собака, дана длина веревки, ограничивающей своб
Помогите

Обновление БД при логине
Нужно что бы когда юзер логинился, в БД обновлялся столбец userrank, юзер...

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

Вылеты при логине в опере
Проблема в следующем - при логине на каком-либо сайте (ну естессно где...

28
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
19.05.2013, 20:01 2
@ = %40, а не %64, %64 - это "d".

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

Добавлено через 6 минут
И так как NSString и CFStringRef кастуемы друг в друга, не заморачивайтесь, работайте с NSString, а потом просто кастуйте в (CFStringRef).
1
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
19.05.2013, 21:30  [ТС] 3
Ой блин! Точно 40. Эк меня приглючило-то
Спасибо!
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
20.05.2013, 09:30 4
Пожалуйста. С утра прочитал название темы... "Собака в логине"
- вспомнилось изречение старшего товарища -
Ааа... Воот где собака-то порылась
Здесь она получается, порылась в логине
0
alexpac26
14 / 22 / 4
Регистрация: 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
0
Vorona
Peace 2 all shining faces
672 / 534 / 84
Регистрация: 05.03.2010
Сообщений: 1,283
20.05.2013, 11:56 6
Да перестаньте вы везде эти дефайны впихивать, есть же понятие метода, что за подход?
0
alexpac26
14 / 22 / 4
Регистрация: 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
0
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
20.05.2013, 13:22  [ТС] 8
Цитата Сообщение от alexpac26 Посмотреть сообщение
откуда такая ненависть к макросам?
Из опыта поддержки. Они же нечитабельны.
Но за попытку спасибо. Хотя, zulkis уже скинул ссылку на правильное решение. "Все уже написано до нас"

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

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

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

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

NSString encodeAsUrlecode: и тп

и ваще

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

проста как бы стандарты стандартами но у каждой "команды" же есть свои "фишки"
свои "компоненты" "классы" и прочие инструменты, не все же с молотком и гвоздями собирается
0
Vorona
Peace 2 all shining faces
672 / 534 / 84
Регистрация: 05.03.2010
Сообщений: 1,283
20.05.2013, 14:59 17
Цитата Сообщение от alexpac26 Посмотреть сообщение
приминением helper класса, макросов, сингтон с утилитами
да не синглтон, а статический класс, вы же методы выносите а не данные...
какой хелпер класс? вы его так и называете HelperClass?

как насчет дебага, как насчет того, что макросы не могут работать в рантайме, а только на этапе компиляции
боже да в интернете миллион людей говорит что не стоит использовать макросы если можно вынести код в функцию\метод

хотя бы тут
http://stackoverflow.com/questions/5...acro-vs-method
0
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
20.05.2013, 15:02  [ТС] 18
Цитата Сообщение от Vorona Посмотреть сообщение
как насчет дебага, как насчет того, что макросы не могут работать в рантайме, а только на этапе компиляции
Зачем дебаг? Писать надо правильно! Без ошибок! И никакой дебаг не нужен :-P

Да, на всякий случай:
0
alexpac26
14 / 22 / 4
Регистрация: 20.01.2013
Сообщений: 125
20.05.2013, 15:04 19
как насчет дебага, как насчет того, что макросы не могут работать в рантайме
баг в макросе? о да откуда там может быть баг?

боже да в интернете миллион людей говорит что не стоит использовать макросы если можно вынести код в функцию\метод
зачем тогда они не дать хедеру 2 раз через компилятор пройти? вот их истинное предназначение?

#ifndef

#endif
0
Vorona
Peace 2 all shining faces
672 / 534 / 84
Регистрация: 05.03.2010
Сообщений: 1,283
20.05.2013, 15:09 20
зачем тогда goto в С?
может вы и его юзаете раз оно там есть?

для строк, значений глобальных (что тоже есть плохо в 21 веке)

ладно, не буду больше спорить, удачи вам в вашей карьере с таким подходом
0
20.05.2013, 15:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2013, 15:09

Лишние пробелы в логине и пароле
Доброго всем времени суток. Я создал процедуру для создания логина и...

Моргание экрана при логине
Запускаю компьютер - нужно ввести пароль(начинает моргать экран) все ввожу...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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