|
| Дата |
|
USD/RUB | 88.4375 | BTC/USD | 67598.6682 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
20.03.2011, 12:23
|
Start Post: python или ruby
|
Ебланнед
Регистрация: 03.06.2008
Сообщений: 3,846
Бабло: $432125
|
вообщем хочу что - то популярное, про руби не знаю, но вот про питон понятно всё
прошу прочесть пост полностью и ответить, очень нужно выслушать, есть ли это всё в этих ЯП
сейчас речь идёт именно о библиотеках соответствующих ЯП, а не о сторонних решениях, типа возьми selenium и пользуйся им
хотелось бы услышать ваши мнения, какой ЯП лучше
что мне точно понадобиться:
модули и классы, чтобы были не глючные, чтобы не было проблем с установкой:
http(s)
smtp
pop
imap
ftp
ssl
proxy
socks
чтобы классы позволяли работать через все протоколы через socks
чтобы классы позволяли работать через http и https через proxy
чтобы классы позволяли авторизироваться через http(s)
чтобы классы позволяли авторизироваться на proxy и socks серверах
чтобы классы позволяли составлять цепочки socks
чтобы классы производили автозаполнение cookies
чтобы классы производили атозаполнение referrer
теперь про автозаполнение, то есть при переходе по страницам, по доменам объекты классов сами считывали кукисы и подставляли в HTTP Header Cookie
чтобы при переходе по страницам и доменам объекты классов сами заполняли HTTP Header Referrer, это означает, что при заходе на сайт и при переходе после этого на другую страницу домена этого же сайта или другого referrer автоматически заполнялся
классы должны поддерживать метод POST:
application/x-www-form-urlencoded
Multipart/form-data
и так далее
чтобы классы поддерживали загрузку больших фалов с запоминанием количества скачанных байтов и поледующее продолжение, то есть докачку чего - либо
чтобы классы не зависали из - за плохой реализации, это значит, что если через сокс нельзя подключиться например или просто нет connect, то должно что - то возвращаться, чтобы в своих скриптах это что - то можно было обработать, то есть при любых ошибках класс не прерывал работу всей программы, а что - то возвращал для дальнейшей обработке в своих программах, это обязательно, лучше сразу спросить, чем потом самому всё писать, мне нужно всё работающее
и чтобы эти библиотеки работали отлично и на windows и на unix
Последний раз редактировалось super; 20.03.2011 в 12:31.
|
|
|
20.03.2011, 19:00
|
#22
|
grablab.org
Регистрация: 18.09.2007
Адрес: Thailand
Сообщений: 4,891
Бабло: $322264
|
уровень заработков неплохого erlang кодера позволит ему смотреть на вебмастеров как на гавно. =)
кстати касательно хаскелля! на питоне тоже есть функциональное программирование очень понимаешь ли иногда приятно завернуть ченить этакое dict(filter(lambda x : False if x is False else True, map(lambda x, y : (x, y) if x is not None else False, a, b)))
а вообще вот что ) недавно была задача.
self.items - результат парсинга csv файла в словарь. там поля разные title/product_type/link/image url и в таком духе причем по категориям разбито все хуево (поле product type часто не соответствует наименованию или даже оно пустое). нужно было получать как бы выборки товаров по определенным кейвордам из этого списка (к пример все часы watches). т.е. проверять входил ли кейворд в title/product_type и т.д. Умельцы девелоперы с канала pythonua (jabber.ru) которым я показал как я решил задачу почти посакрощали это дело до одной строчки на пятоне. снабдив все это комментарием :
Цитата:
«код завершён не когда больше нечего дописать, а когда больше нечего убрать» ©
|
Но собственно один из принципов говорит - простое лучше сложного поэтому излишнее рвение по применению функционального программирования сильно затрудняет чтение кода и неподготовленного человека ставит в ступор.
что получилось в итоге (компромис между читаемостью и размером). обратите внимание на кол-во строк.
Код:
def get_category_by_keyword(self, keywords, types=['product type', 'title']):
"""
Get slice from item list by keyword
"""
def _match(items, keys_, types_):
""" A=['a','b'] B = ['cd', 'ae', 'bu'] => (false, true, true) """
for t in types_:
for k in keys_:
yield k in items[t]
return filter(lambda x: any(_match(x, keywords, types)), self.items)
Последний раз редактировалось WebNinja; 20.03.2011 в 19:14.
|
|
|
20.03.2011, 19:05
|
#23
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,354
Бабло: $470735
|
Цитата:
Сообщение от WebNinja
уровень заработков неплохого erlang кодера позволит ему смотреть на вебмастеров как на гавно. =)
|
haskell надо
читал интервью одного из создателей хаскеля, он сейчас работает в исследовательской группе IBM(вроде). Говорит сложный язык получился
это если уж создатель такое сказал....
|
|
|
20.03.2011, 19:05
|
#24
|
Senior Member
Регистрация: 28.11.2009
Сообщений: 1,787
Бабло: $299365
|
Цитата:
Сообщение от WebNinja
уровень заработков неплохого erlang кодера позволит ему смотреть на вебмастеров как на гавно. =)
кстати касательно хаскелля! на питоне тоже есть функциональное программирование очень понимаешь ли иногда приятно завернуть ченить этакое dict(filter(lambda x : False if x is False else True, map(lambda x, y : (x, y) if x is not None else False, a, b)))
|
Бред написал или я не смог в голове разобрать ?
|
|
|
20.03.2011, 19:09
|
#25
|
Senior Member
Регистрация: 15.11.2008
Сообщений: 13,197
Бабло: $247847021
|
Цитата:
уровень заработков неплохого erlang кодера позволит ему смотреть на вебмастеров как на гавно. =)
|
на него вакансий то куй есть
|
|
|
20.03.2011, 19:17
|
#26
|
grablab.org
Регистрация: 18.09.2007
Адрес: Thailand
Сообщений: 4,891
Бабло: $322264
|
Цитата:
Сообщение от rushter
Бред написал или я не смог в голове разобрать ?
|
нет )
Есть два списка разной длины, в одном ключи, в другом значения. Составить словарь. Для ключей, для которых нет значений использовать None в качестве значения. Значения, для которых нет ключей игнорировать.
можно короче. это вариант что называется "в лоб"
|
|
|
20.03.2011, 19:23
|
#27
|
Senior Member
Регистрация: 15.11.2008
Сообщений: 13,197
Бабло: $247847021
|
Цитата:
«код завершён не когда больше нечего дописать, а когда больше нечего убрать» ©
|
Цитата:
dict(filter(lambda x : False if x is False else True, map(lambda x, y : (x, y) if x is not None else False, a, b)))
|
|
|
|
20.03.2011, 19:50
|
#28
|
кодер-энтузиаст
Регистрация: 04.04.2007
Адрес: Джамайка
Сообщений: 3,378
Бабло: $447150
|
Цитата:
Сообщение от chesser
читал интервью одного из создателей хаскеля, он сейчас работает в исследовательской группе IBM(вроде). Говорит сложный язык получился
|
Хаскелл. Мой любимый. Создан чтобы троллить форумы вроде этого. Свою задачу выполняет на 100%, идеален. Не слишком распространён, чтобы меня с ходу могли поймать за руку за размещение нерабочего кода, но и не слишком редок, чтобы все начали думать, что на нём никто не программирует. Позволяет писать шарады, достаточно сложные для понимания даже другими хаскеллистами, при этом не выглядит как Перл. Любой начинающий программист, решивший написать `Hello World' на Хаскелле, наткнётся на слово `монада'. При попытке выяснить что это такое, получит что-то среднее между `моноид в категории эндофункторов' и `живые, духообразные единицы, из которых все состоит и кроме которых ничего в мире нет'. Поэтому начинающие программисты пишут на Хаскелле факториалы. При этом в той же степени рискуя наткнуться на любое другое непонятное слово, начиная с `правая свёртка' заканчивая `зигохистоморфический препроморфизм' . По свистоперделкам Хаскелл уступает разве что C#-у. Но если типичная свистоперделка шарпа - это LINQ - такая клёвая штучка, чтобы писать на C# как на SQL-е, то типичная хаскеллевская свистоперделка - это полиморфизм ранга 2 - такая клёвая штучка, чтобы писать зигохистоморфические препроморфизмы. А чтобы писать на Хаскелле как SQL-е, нужно подключить кванторы существования (ExistentialQuantification), классы типов с несколькими параметрами (MultiParamTypeClasses), функциональные зависимости (FunctionalDependencies), полиморфизм ранга 2 (Rank2Types), гибкие экземпляры (FlexibleInstances), гибкие контексты (FlexibleContexts), неразрешимые экземпляры (UndecidableInstances), экземпляры синонимов типов (TypeSynonymInstances), лексические области видимости для переменных типа (ScopedTypeVariables) и шаблоны (TemplateHaskell) конечно же, зато вам не придется учить SQL, клёво! Однако по непонятной причине большинство людей всё-таки вбирают C# с LINQ.
http://www.e1.ru/talk/forum/read.php...78035&t=178035
|
|
|
20.03.2011, 20:15
|
#29
|
grablab.org
Регистрация: 18.09.2007
Адрес: Thailand
Сообщений: 4,891
Бабло: $322264
|
да ладно, разобраться можно ) чутка другая прадигма.
все что там написано умного можно объяснить простыми словами.
|
|
|
20.03.2011, 20:17
|
#30
|
Senior Member
Регистрация: 15.11.2008
Сообщений: 13,197
Бабло: $247847021
|
Ненавижу принцип меньше кода - лучше. Глупые выебоны хитрожопых индусских кодеров.
|
|
|
20.03.2011, 20:22
|
#31
|
Senior Member
Регистрация: 28.11.2009
Сообщений: 1,787
Бабло: $299365
|
Индусам больше как раз таки надо.
|
|
|
|