Строка 97:
output_files[
file_name].write('%s | %s\n' % (req.status_code, req.url))
заменить на
try:
output_files[
file_name].write('%s | %s\n' % (req.status_code, req.url))
except KeyError:
pass
>>315900
блять, разметку проебал http://pastebin.com/SV5DUAGs
>>315901
Вот такую штуку выдает после правки выше:
Traceback (most recent call last):
File "checker.py", line 99, in <module>
file_name].write('%s | %s\n' % (req.status_code, req.url))
NameError: name 'req' is not defined
что это, зачем это?
>>315895
ОП, давай поместим код в Mercurial и зальём репозиторий, например, на bitbucket. Так и код не потеряется и анон сможет принять участие в его доработке. Алсо потренируемся в использовании систем контроля версий (сейчас без этого никуда).
Я сам давно хотел попробовать пул реквесты, вот это всё, но не выдавалось подходящего щанса.
Почему mercurial, а не git? Проще в изучении, интуитивнее система команд, по возможностями они с git примерно равны.
>>315895
> max_number_items_in_urls = 100000
> requests_in_time = 1000
Мне лень читать питонокод, к которому мой глаз не очень привык, поэтому объясните, чем отличаются эти две штуки и что именно каждая из них ограничивает.
У тебя нет файла 6xx.txt. Не программирование, а детский сад студентов-птушников какой-то.
Алсо, ты мне напомнил, что я тоже хотел такую штуку запилить, ибо оче пригодится в ближайшем будущем.
Посоны, го чем-нибудь осмысленным займемся, а не обосанным скриптом для проверки проксей.
>>315905
выложи полный код, скорей всего отступы где-то убежали у тебя
блять, кто нибудь может объяснить, что должна делать программа?
Говнокод лень читать
>>316040
Чекает огромный список url на возвращаемое значение http answer. C прокси. Асинхронно.
>>316044
http://pastebin.ubuntu.com/6721678/
Если наплодить 2,5к потоков, то наверняка на ОП-списке уложится в 10-11 секунд, но насилие — это плохо. Если с таймаутами поиграться, тоже много чего сделать можно. Руби-анону на заметку: разработчики typhoeus явно не любят лишний раз переписывать документацию, так что знайте: таймауты внезапно в секундах, потому что теперь Float.
>>315971-кун
>>316044
>C прокси
всмысле запрос через прокси-сервер?
должна выдавать status code, или весь response, что нахуй за answer, ты школьник чтоли?
кароч на всякий случай http://testutils.org/multi-mechanize/
вот зацените, там уже дохуя из коробки есть, просто запилите скрипт и конфиг
>>315895
>пофикси, пожалуйста эту багу фичу
>>315971
>объясните, чем отличаются эти две штуки и что именно каждая из них ограничивает.
В общем так, скрипт берет первые 100 000 url-ов max_number_items_in_urls = 100000 затем одну проксю и отправляет на эту бедную проксю не больше requests_in_time = 1000 (тысячи!) запросов почти одновременно записывая ответы в файл по мере поступления, отправляя новые запросы пока не закончатся url-ы в max_number_items_in_urls (сто тысяч!). Потом идет за новой порцией адресов из файла, берет новую проксю и все повторяется.
Т. е. изменение параметров которые я прописал изначально не помогут увеличить скорость. В старом треде оставлял тест скорости, а это ~4 запроса в секунду. Выше скорость - половина ответов от прокси будет ошибочными по таймауту. Потому "просто починить багу" неполучится. Хотя если тебя не смущают ошибочные данные - пофиксю, лол.
Идея была в том, чтоб насиловать DNS-ы по сотне запросов для каждой прокси, т. е. проверить очень много разных доменов не получив бан от DNS-сервера.
Я не забыл о мысли переписать это дело с использованием pycurl резольвя url-ы по списку разных DNS-ов, просто времени пока нет свободного.
>>315966
>Так и код не потеряется
Нахуй это говно дилетанта кому сдалось кроме ОП-а? Потому и пишу, что оно хоть кому-то нужно, а мне развлечение. Вот его форкни для изучения ревизий https://gist.github.com/pyos/fe7c0f44401047c29632 там только False на True надо заменить, чтоб запросы сразу отправлялись, а не набирались все разом из input.txt.
>>316049
>http://pastebin.ubuntu.com/6721678/
Попробуй ка на тестовом input.txt прогнать: http://rghost.ru/51381124
>наплодить 2,5к потоков
Можно, но вопрос: где взять хотяб по 200 рабочих прокси на поток? Полагаю идея с прокси была не оче.
>>316109
>Потому "просто починить багу" неполучится.
Хотя, еще один костыль - почему нет?
http://ideone.com/A71668
>>316122
>Попробуй ка на тестовом input.txt
Ох извиняй, недопонимание, скрипт у тебя просто прокси проверяет. Человек хочет получить HTTP status code от разных доменов, числом 800 млн. за разумное время.
самофикс
>>316109
>затем одну проксю и отправляет на эту бедную проксю не больше
>Идея была в том, чтоб насиловать DNS-ы по сотне запросов для каждой прокси
Нет, ну я пиздец. Зачем создавать асинхронную очередь запросов для одной прокси, ведь можно задать свою проксю для каждого запроса.
Оп, мой тебе совет.
Импортируешь либу threading
http://docs.python.org/2/library/threading.html
Кидаешь соплю сокетом
http://docs.python.org/2/library/socket.html
Отправляешь простейший http заголовок на get и получаешь HTTP 200 OK или ещё какую хуйню.
Читаешь первую строку ???? Профит.
Ну ещё траями захуячить это всё и получишь прирост скорости % на 20, может больше.
Ещё можно сделать буферизацию и в файл писать не сразу, а когда наберётся хотя бы 1000 запросов, дальше лочишь все функции, записываешь в файл, почистил буфер и разлочил
>>316125
Не работает. Предыдущий работал, но сбоил только на 6xx, этот - нет.
http://22871313.COM | HTTPConnectionPool(host='5.254.97.218', port=80): Read timed out. (read timeout=10.001)
Traceback (most recent call last):
File "checker.py", line 116, in <module>
create_request(urls, proxy)
File "checker.py", line 92, in create_request
output_files['error.txt'].write('%s | %s\n' % (req.url, req))
KeyError: 'error.txt'
>>316164
Ну да, поспешил немного с тредингом, тогда костыль в виде
http://docs.python.org/2/library/multiprocessing.html#module-multiprocessing
>>316167
Добро пожаловать в новый ад с отдельным процессом на каждого воркера. Рекомендую попробовать greenlet'ы на кококорутинах. Вам же все равно только async I/O надо. Правда там пики точеные ввиде манкипатчинга...
>>316187
>Правда там пики точеные ввиде манкипатчинга
Кстати поясните за этот monkey patching. Уже неоднократно встречал его в разных сетевых программах; программисты на форумах обсуждают его с явным недоверием, даже страхом; похоже никто не знает в действительности, как оно работает и откуда взялось; при этом все почему-то пользуются. Всё это создаёт тень мистики над этим странным патчингом, в голову закрадываются самые разные теории.
>>316109
> 4 запроса в секунду
Э-э… это ж мало совсем. Можно через каждую проксю по запросу в секунду делать, въебал сотню воркеров — получил сотню запросов в секунду. Ну или даже в три-четыре секунды отклика. Один хуй больше будет, даже если слипов въебать везде. У меня скрипт за десять секунд проверил примерно 1300 адресов в сотню потоков.
> по списку разных DNS-ов
Беглый гуглинг не показал никаких возможностей по смене DNS для curl. В моей руби-обертке libcurl можно вроде бы сетевой интерфейс указывать, но не DNS. И вообще эта хуйня делается в настройках самих сетевых интерфейсов, по-моему. В любом случае, можно один раз зарезолвить все нужные тебе адреса и сохранить список айпишников — вряд ли часто будут переезжать.
Кстати, зачем тебе все это говно нужно, ОП?
>>316245
>Э-э… это ж мало совсем.
Так и есть. У меня выходило где-то 100-150/сек (с прокси), трудно сказать точно, эта ошибка 6xx всю малину мне запорола.
>Кстати, зачем тебе все это говно нужно, ОП?
Слишком много всего, но первая задача - тупо чекнуть все домены.
Ничего не понимаю
мимо-сишечка-20к-коннектов
>>316349
>мимо-сишечка-20к-коннектов-к-127.0.0.1
А адрес сервера назвать опять стешняешься?
>>316245
>никаких возможностей по смене DNS для curl
http://curl.haxx.se/mail/lib-2011-11/0067.html
>>316140
>можно задать свою проксю для каждого запроса
Переписал я скрипт: http://ideone.com/h7D86o
Один урл в очереди - один прокси, 1 млн. прокси - 1 млн одновременных соединений если прописать requests_at_time = 1000000.
Теперь скорость зависит только от колличества и скорости проксей.
Звучит хорошо, но вот тест для 200 прокси и 2 000 урлов - 9m18.841s. Не впечатляет, хотя, может это прокси у меня такие?
Алгоритм работы следующий: открываем файл с проверенными прокси, проверяем их все на отклик ya.ru с таймаутом 30 секунд (timeout_for_proxy_test = 30.0), те что не проходят проверку удаляем из файла, подставляем к каждой прокси url для проверки из файла input.txt пока есть свободные прокси, т. е. длинна асинхронной очереди запросов - число прокси в proxy.txt. Как прокси в очереди закончились - запускаем асинхронно соединения с доменами через прокси, таймаут 10 секунд (timeout_for_req = 10.001), сортируем ответы в файлы, опять читаем файл с проксями, проверяем и те что не проходят проверку удаляем из файла и т. д.. Если прокси в файле закончились, т. е. все померли - скрипт завершит работу по исключению ProxyError: Run out proxy так что следует поддерживать актуальность proxy.txt.
>>316395
>>никаких возможностей по смене DNS для curl
http://curl.haxx.se/mail/lib-2011-11/0067.html
Я хотел сказать, что curl вроде включает в себя c-ares, а ему можно указать DNS. Может я что не понял - надо будет разобраться.
>>316390
Адреса сервера нет, есть примерно 20к хостов, к которым подключен единственный процесс (с 1 тредом)
>>316196
>поясните за этот monkey patching
http://ru.wikipedia.org/wiki/Monkey_patch
>>316395
> 200 прокси и 2 000 урлов - 9m18.841s
То 100-150 в секунду, то такой результат. Может, ты нули где-то потерял?
руби-кун
Прочитал тред @ нихуя не понял. Тупо отправить хед-запрос, получить статус код и записать на файл? И что за прокси? Зачем он?
>>316454
>корректные ответы
корректные результаты - конечно
самофикс
Долбаёбы итт, не понимают что всем языкам похуй на такую обработку, и скорость зависит только от сети.
>>316395
>читаем файл с проксями, проверяем и те что не проходят проверку удаляем из файла
Полагаю очень поха мысль удалять записи из этого файла. Изменил http://ideone.com/un2eGE для мертвых прокси создается файл bad_proxy.txt. С помощью него можно принять решение о срочности обновления файла proxy.txt, а существующая мертвая прокся просто не допускается к очереди асинхронных запросов.
>>316493
>Изменил http://ideone.com/un2eGE
Строка 145 лишняя, удалил. Проверка прокси для остатка url-ов не нужна.
http://ideone.com/zLQekC
>>315895
Объясните ньюфагу на python в основном программируются вед приложения? или как вообще, проведите параллель с С++, тоесть где в основном используется python, а где С++
Пожалуйста, анончик
>>316542
Веб это только одна из сторон применения питона.
Ещё можно использовать в качестве скриптового языка, прикрученного к какой-нибудь тяжёлой программе вроде игры или пакета для 3д моделирования.
Плюс питон - отличный язык для прототипирования.
А вообще его можно использовать везде, где тебе хватит его производительности, даже для несложных игор.
>>316196
Мистика появляется потому что при использовании манкипатчинга неопытным погромистом возможны баги в самых неожиданных местах.
Лично мне он нравится, хотя мой проект пока работает без запросов к базам данных - тоже чисто сокеты, очереди и zmq обернутый в гринлетики. Вот начну добавлять базы - будет мне киркор в пропатченых database-модулях.
>>316544
>Ещё можно использовать в качестве скриптового языка, прикрученного к какой-нибудь тяжёлой программе вроде игры или пакета для 3д моделирования.
Дружище, а примерчик можешь какой-нибудь привести. Например игра полноценная, написана на с\с++, а к ней приделана произвольная фича, с помощью python?
>>316577
> Мистика появляется потому что при использовании манкипатчинга неопытным погромистом возможны баги в самых неожиданных местах.
Ага, особенно если нет refinements.
>>316595
Вот недавно прошёл Bloodlines. Правда троишники не особо умели программировать… Можно сказать, что совсем не умели. И вообще я не он, а мимопробегал.
1) Которая умеет кавычки там расставить и прочее ко-ко-ководство.
> "У всех свой "вкус"!" - сказал индус, снимая с хуя обезьяну.
> →
> « У всех свой „вкус“! » — сказал индус, снимая с хуя обезьяну.
2) Которая может текст разбить по словам, чтоб вписывался в заданную ширину, а потом сообщить размеры получившегося прямоугольника с текстом.
На питоне. Лучше не для веб, но можно и для веб.
>>316505
Спасибо за фикс! Скрипт завершился с ошибкой после того, как получил от сайта ответом 600.
Вообще стало намного лучше - с "распределением" по проксям - раньше действительно многое улетало в error, сейчас медленнее, но качественнее.
>>316450
> Откуда такие цифры
А хули бы им не быть? Я беру сто прокси, делаю сто потоков, каждый поток берет по одному прокси и в цикле берет урл, пока есть что взять, и проверяет его. На срелних прокси я со своей машины смогу выжать от трех до восьми-десяти тысяч урл в секунду это если get, head'ом может еще больше будет, наверное, но я просто не смогу столько прокси найти.
руби-кун
>>316959
>от трех до восьми-десяти тысяч урл в секунду
Это что-то из разряда имиджборды на 5 тысяч постов в секунду? Локалхост запрашивать и в один поток можно.
>>316454
>Откуда такие цифры?
Очень просто. Есть особая категория людей, которые любят пиздеть - называются "хайлоадщики". У них веб-сайты обрабатывают по 20000 запросов в секунду (HEAD с локалхоста), серверы на эрланге держат по 100000 соединений (при том что для решения проблемы всего 10000 потребовалось написать лучший на сегодня статик-сервер на сишке, а протокол TCP вообще говоря не поддерживает больше 65535 портов [там 16 бит под порт], из которых только ~40000 для передачи данных), и так далее. Меньше читай этих диванных кукаретиков.
>>316993
> а протокол TCP вообще говоря не поддерживает больше 65535 портов [там 16 бит под порт], из которых только ~40000 для передачи данных), и так далее.
На один порт можно установить сколько угодно* соединений, с разных хостов/портов.
* - с учетом ограничений ОС
>>317013
Ты походу не знаешь как работает TCP/IP. У клиентских сокетов тоже есть порты, эфемерные называются. ("Клиентские" это включая и те, которые создаются через accept()
.) Иначе как по-твоему ОС будет определять, какой именно это клиент?
Пишу скрипт, управляющий скоростью закачек uTorrent. Нужно чтобы он умел определять наличие других компьютеров в домашней сети ну и менял скорость соответственно.
Пока что использую socket.gethostbyname('PC_name') чтобы детектить свой ноут, но это решение далеко от идеала, лол.
Читал посты на Stack Overflow, но возникли трудности с установкой сторонних библиотек scrapy и netifaces. Использовать nmap по моему оверкилл.
Какие будут идеи?
>>315895
>Поскольку из бэкапов восстановили треды аж прошлого лета
Вклинюсь вопросом - что здесь случилось? Чем вайпнули?
>>316991
Ну давай разберем по пунктам все тобою написанное)) кстати, поясните, откуда это? Так, я не понимаю. Что тебе не нравится? Каждый прокси получит новый запрос не ранее, чем отдаст мне результат. Где и что я упустил?
Пайкютинист в треде.
Задавайте свои вопросы.
>>316880
>Скрипт завершился с ошибкой после того, как получил от сайта ответом 600
Исправил, http://ideone.com/uxW98R - все ответы сервера вне диапазона 1хх-5хх будут уходить в error.txt. Т. к. запрос ответов от серверов и проверка самих прокси происходит попеременно не вижу смысла указывать руками длинну очереди асинхронных запросов отправляемых сразу. Теперь длинна этой очереди равна сумме рабочих прокси при запросе адресов из input.txt или строк в файле proxy.txt если это проверка самих прокси.
>>316959
>Я беру сто прокси, делаю сто потоков, каждый поток берет по одному прокси и в цикле берет урл, пока есть что взять, и проверяет его. На срелних прокси я со своей машины смогу выжать от трех до восьми-десяти тысяч урл в секунду
Тебе не верит мой опыт и хабр:
>Значения 100 запросов за 10 секунд вполне приемлемы даже для тех клиентов, которые серфят «ну очень быстро»
>ограничив двумя запросами в 10 секунд от каждого из клиентов, чтобы пустые запросы типа AAAA localhost. не влияли на работу DNS сервера
>Запись MX... 5 запросов за 60 секунд хватит для работы диагностических утилит
http://habrahabr.ru/post/110771/
Потому я и поставил асинхронные очереди запросов последовательно с таймаутами 10 и 15 секунд, что-бы прокси не дохли слишком быстро. Бесполезных потоков с асинхронной очередью наплодить не проблема, но может я что не понял - поясни пожалуйста.
>>317074
>Какие будут идеи?
if peer_ip[:-some_number] in ip_subnet_masks:
home_network_peers.append(peer_ip)
РЕКВЕСТ № 2_______________________________________________
Аноны, напишите, пожалуйста, мне очень простой краулерпаук. Асинхронный, наверное: gevent\erequests - это клевая штука, и потоки в данном случае, думаю, не подойдут: ниже объясню, почему.
Входные значения (мы их вводим в самом скрипте):
1. Вхождения url, например: "profile|search|user" - лучше через | , т.к. могут быть и запятые и запяточия в url.
2. АНТИвхождения в url, например: "Hello|2ch|ororo"
3. Стартовый url.
Скрипт дергает cтартовый url, ищет все исходящие ссылки вида <a>...</a>картинки, короче, всякие не надо и пихает их себе в пул. Далее записывает только что скачанный url в out.txt (это, собственно, и есть наш результат). Затем отсеивает все АНТИвхождения url и дергает все ВХОЖДЕНИЯ url --> Снова записывает полученные результаты, т.е. url в out.txt ---> снова ищет уже на новых url вхождения, снова отсеивает АНТИвхождения, снова записывает в out.txt и так далее. Фактически до бесконечности, пока я не остановлю скрипт.
Почему асинхронность, а не потоки? Дело с том, что скрипт будет "ходить" по совершенно разным доменам, и некоторые из них могут очень долго отвечать. В целом, скрипт будет без конца "прыгать" с одного домена на другой. В общем, наверное, можно и на потоках хз, асихронный как-то быстрее и легче вроде.
>>317431
А, вспомнил почему, лучше асинхронно, в один поток: со временем, этот пул полученных url будет раздуваться до больших размеров, т.к. разные адреса будут тупить и подолгу отвечать. А создавать кучу потоков - как-то нецелесообразно под это дело....
>>317446
Оч. мощная штука, хотелось бы конечно, чего-нибудь попроще в настройке. Но спасибо!
>>317450
Ну я не спецпоэтому и здесь. Просто мне кажется, что если собрался, допустим, пул из 100 000 url, то проще закидывать их в один поток хрен знает, когда они там ещё ответят. Потоки - это всегда ожидание, зависли несколько хостов - ждёёём. Надеюсь, я понятно излагаю свою точку зрения.
>>317431-кун
>>317452
>Надеюсь, я понятно излагаю свою точку зрения.
Более чем.
>>315895
Братишка, таки нашел время сверстать свое говно.
Вообще что бы обойти лок днс серверов юзай google dns, им почти похуй.
Скорость збс.
За стабильность не особо ручаюсь но вроде как окэ, если уж тебе още надо прокси то могу пожже прикрутить, пока потести это гуано
http://pastebin.com/f4bFERM8
>>317140
Поясни, пожалуйста, как это должно работать?
Еще раз: задача в том, чтобы просканировать локальную сеть и определить, есть ли в ней еще компы, кроме того на котором работает скрипт. Ось - вин 7.
Я совсем нуб в сетях. Все эти сокеты и пиры вызывают у меня недоумение.
Давай немножко оптимизируем дабы не дёргать ЦПУ на подсчёт общего колво годных урлов
http://pastebin.com/sCtdMSxu
Говнокод разрастается и набухает!
>>317452
> Ну я не спец
Ну так не давай советы, лол. Асинки — не поверишь — не в одном потоке работают, а в данном случае их использовать настолько же удобно будет, как микроскоп для выдавливания прыщей. На заднице. Какие-то вы странные, блядь: у одного 4 запроса в секунду через сотню прокси, у другого миллионы урл в один поток, лол.
>>317516
Я опять не читаю код и не знаю точно, что ты имеешь в виду, но хочу на всякий случай напомнить, что длина массивов в 2014 пересчитывается при изменении количества элементов этого массива, а не при необходимости получить ее, то есть получение длины — это, пожалуй, самая дешевая операция, которую вообще можно проделать с массивом.
>>317622
Почесть яйца тоже дешевая операция, но мы почему-то не делает этого при каждом вдохе?
>>317635
Ну ты сравнил. Получить инт из структурки - микросекунда для одного из 2-4-8-дохуя ядер. Почесать яйца - секунд 5 для одной из всего 2 рук. В IO-bound программе экономить на вычислениях - одна из самых тупых и бесполезных оптимизаций.
>>317635
И да, лучше бы хуйню типа "res.find" и "req +=" оптимизировал. Конкатенировать строки как раз медленно, а код ответа всегда находится сразу же после версии хттп и пробела.
>>317646
Квох квох, кудах!
А что если я тебе скажу, что мы тем самым убрали ненужный многократный вызов функции и запихнули это всё в главный поток?
И да, уж если ты почал кукарекать о экономии на спичках то должен тебя огорчить: соеденение строк через + работает не на много медленней если бы всё это запихнуть в массив, а список, а дальше join или писать всё вместе.
И да, бывают весьма ёбнутые сервера, и разницы что ты разобъешь по пробелам или find'ом 0
>>317516
>Давай немножко оптимизируем
1. PEP8.
2. А я полагал, что python это скорее про читабельность и скорость разработки, чем про ресурсы.
3. Вижу у тебя идет обработка только для status_code 200, 301 и 302, а с остальными что - "нинужны"?
4. DNS гугла не похуй.
>>317494
>Поясни, пожалуйста, как это должно работать?
Собираем локальные ip по заданной маске и передаем список libtorrent для изменения скорости, но к uTorrent это конечно имеет отдаленное отношение.
>Пишу скрипт, управляющий скоростью закачек uTorrent.
Опиши алгоритм того, что тебе надо. Чем IPFilter не устраивает?
>>317621
>у одного 4 запроса в секунду
Не запроса конечно, а среднее время проверки урлов в секунду. Согласен, результаты плохие. Какие будут предложения? Уменьшить число проверок прокси? Проверять их не блокиря проверку url-ов но как решить проблему с DNS?
>>317666
>Квох квох, кудах!
Чего раскудахтался?
>убрали ненужный многократный вызов функции
Охуеть, аж целый вызов функции, как же мы раньше жили. Жаль, что сеть по-прежнему медленная.
>соеденение строк через + работает не на много медленнней
Скажи это разработчикам гвидона. Я лишь сказал одну из рекомендаций с их вики.
>бывают весьма ебнутые сервера
Ответы от таких обрабатывать не надо, они невалидные даже если там есть 200.
>разницы что ты разобъешь по пробелами или find'ом 0
code = int(res[9:12])
>>317516
> Скажи это разработчикам гвидона. Я лишь сказал одну из рекомендаций с их вики.
В CPython давно оптимизировано, в PyPy не, насколько я помню.
>>317621
> Ну так не давай советы, лол. Асинки — не поверишь — не в одном потоке работают, а в данном случае их использовать настолько же удобно будет, как микроскоп для выдавливания прыщей.
Ок, напиши, тогда на тредах, пожалуйста.
>>317698
http://pastebin.ubuntu.com/6750887/
good — файлик со свежеотсеянными годными прокси в формате ip:port.
Больше годных прокси — больше скорость. Стандартный HTTP-клиент писали пидарасы, поэтому взял Typhoeus. Даже если их квик-методы каждый раз создают новые реквесты, то они все равно кешируются и никакого проеба скорости не должно быть.
>>317824
Нет, это чекер тех сайтов. Если тебе нужен паук, то тут тебе никто его не напишет, потому что их овер девять как и один уже в тред кинули.
>>317843
Если бы я мог в python, я бы, конечно же, настроил scrapy. По умолчанию он регулируется allowed_domains = ["..."], то есть фиксированное количество доменов. А мне нужно бесконечное.
Поэтому я и обратился за помощью сюда.
>>317666
>соеденение строк через + работает не на много медленней если бы всё это запихнуть в массив, а список, а дальше join
Ну да, всего-то в двадцать раз на 2.х.
>>317886
>Поэтому я и обратился за помощью сюда.
Нет, ты обратился сюда потому что ленивый. Тебе лень читать Лутца, документацию и разбираться самостоятельно. Все все понимают, не беспокойся. Ну напишу я тебе травиального паука - дальше, дай угадаю, реквест на спамилку? Хотя посмотрим, если будет время, я еще с DNS и курлом не разобрался.
И да, не так уж хорош этот scrapy, достаточно будет lxml.
>>317678
>Собираем локальные ip по заданной маске
Вот мне именно это и надо. С помощью какой библиотеки это реализовать в винде? у тебя же в коде только имена переменных, блджад!
>>317494
Попробуй так. https://gist.github.com/pyos/26a8ef646f5123f4b607 (Запускать надо от админа, виросов там нет, есть ICMP-запросы.)
>>318011
Ты работаешь? Я помню, тебя в гугол на собеседование приглашали.
Питонолюбы, расскажите, как мне сформулировать запрос к гуголу(можно на английском), чтоб мануалы какие по использованию питона для следующих и аналогичных целей вычитать:
*зайти в контакт, проверить лс, если что - выдать соответствующее сообщение.
*посмотреть, были ли обновления на sitename.ext
Какие технологии для этого должны быть в обойме? Сам почти полный ноль, как вы уже догадались.
>>318090
> зайти в контакт, проверить лс, если что - выдать соответствующее сообщение
И на следующей строке вывести «Hello World!».
> посмотреть, были ли обновления на sitename.ext
Точнее.
>>318092
Если бы я мог точнее, я б пошел в гугл. Анончик, разве хотя бы первого примера недостаточно?
>>318095
1. Я бы сразу пошел на гитхаб искать готовые реализации API для VK, и, скажу я тебе с большой вероятностью не спиздеть, к самым годным таким библиотекам тут же на гитхабе была бы документация с примерами и прочим. Но зачем мне, я ведь хочу нажать кнопку и шоб заебись было, да?
2. Вы заебали уже называть абсолютно абстрактные задачи, решения которых колеблются в диапазоне от банальных до ебически сложных, словно муравьиный хуй в пизде жирафихи. Ты понимаешь, что можно RSS прочитать, а можно дампить какую-то часть сайта и ебаться с разными штуками вроде If-Modified-Since, учитывая случаи, если сервер ебал в рот твои заголовки, а?
>>318109
Спасибо, анон, но насчет "кнопку нажать и заебись" ты несколько ощибаешься, мне не надо готовых решений, я хочу именно разобраться. Понятия не имею только, с чего начать. Поэтому начну с ковыряния в чужом коде с гитхаб, спасибо еще раз
>Ты понимаешь, что можно RSS прочитать, а можно дампить какую-то часть сайта и ебаться с разными штуками вроде If-Modified-Since, учитывая случаи, если сервер ебал в рот твои заголовки, а?
В том-то и дело, что не понимаю.Но хуй знает, зачем я отвечаю на этот вопрос еще раз.
>>318234
А на вывод не пробовал строку дать? Почитай о том как работает пистон.
И да, через питонный модуль time - это маразм
>>318234
Похоже у тебя пистон сломан
>>318307
>Почитай о том как работает пистон.
А чего тут читать-то, на магии он работает. Хотел замерить скорость сложения строк, а получил сигсегв.
Сделайте кроссплатформенный аудиоплеер, с поддержкой сторонних плагинов и скинов.
>>318365
Еще один пример охуительной магии. Походу оптимизация += на строках в гвидоне заключается в проверке, больше ли рефкаунт этой строки чем 1, и если нет, то "иммутабельный" объект таки мутирует.
Котоны, напишите мне, практического паука, пожалуйста лучше, чем заниматься своей экспериментальной магией.
>>317431-кун
Ох, лол, ЯВНОЕ ЛУДШЕ НИЯВНОВО ПОНЯТНОЕ ЛУДШЕ ВСИГДА, а в результате обсёры прямо на уровне плюсов.
Мне нужны гуи с веб-браузером, что посоветуете?
>>318368
Это не шутка, кстати. Хочется плеер к которому можно было бы писать расширения на python и в случае чего поправить исходники самого плеера.
>>318638
Если ты не можешь написать плеер, какие расширения и модификации ты собрался делать? Музычку через гуй запустить - дело 30 строк на qt с phonon.
>>318641
Лол, значит тот, кто сделал плагин/скин к винампу способен сделать винамп? Охуенная логика
>>318736
Ты серьезно думаешь что, например, сделать нормальную имитацию 5.1, да еще и в пределах ограничений АПИ для расширений, гораздо проще, чем взять класс AudioPlayer и сказать ему "play('C:\music.mp3')"? На Qt даже видеоплеер это из разряда "примеры для документации". http://qt-project.org/doc/qt-5.0/qtmultimedia/multimediawidgets-player.html
>>317431
Тестируй: http://ideone.com/8UCZ2w
Ну охуеть вообще. "\9" - вы думаете, это ТАБ? Нет, это не таб. Может быть, это invalid escape sequence? Нет, это не invalid escape sequence. Что же это? Это строка из двух символов. И всё бы ничего, вот только "\0" - это valid escape sequence и означает нулевой символ. Один. У меня, блядь, слов нет.
>>318989
В сисечке варнинг, и строка, состоящая из одного символа. В нормальных языках "invalid escape sequence", и ошибка компиляции. Питон молча творит хуйню.
Сразу предупреждаю, я сижу под шиндоус, не бейте больно, лучше обоссыте.
У меня есть пара вопросов.
1. злоебучий PIL, как его правильно установить?
Прочитал на вики http://ru.wikipedia.org/wiki/Python_Imaging_Library, решил запустить пример. Естественно, ошибка импорта, модуль Image не найден.
Что я пробовал:
easy_install.exe PIL
easy_install.exe Pillow
easy_install.exe Image
качал исходники и засовывал в папку С:\Python27\Lib
Короче, не работает. Как правильно установить?
2. Есть одна строка:
from Huita import HuitaApi, HuitaEnviroment
Это работает, но эклипс всё равно подсвечивает это как ошибку, пишет
Unresolved import: HuitaEnviroment
Unresolved import: HuitaApi
Как сделать чтобы не было такого говна?
>>319087
Пил идёт из каропки, нет?
Python 2.7.3 (default, Apr 20 2012, 22:39:59)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
Даже в линупсах.
>Есть одна строка:
Додумался же для пистона юзать говноэклипс
>>319099
>Додумался же для пистона юзать говноэклипс КОКОКО
А что еще использовать? Любимый прыщеёбами вим? Нотпад++?
Эклипс вполне годная вещь.
>>319102
>Vim
Можешь не продолжать. Вот за такое говноедство я не люблю прыщеблядей.
>>319116
>Вот за такое говноедство
>Использует эклипс
>Называет других говноедами
>>319116
> Пишет на питоне под спермой в эклипсе и называет пользователей лучшего текстового редактора говноедами.
Слишком толсто, съеби.
>>319087
>Короче, не работает. Как правильно установить?
Как все сложно, и установочный экзешник от разработчика не работает?
http://www.pythonware.com/products/pil/
>Как сделать чтобы не было такого говна?
Notepad и консоль.
>>319144
Нотпад это заебись, пока что-то мелкое надо писать. А когда количество кода в проекте переваливает за 50Кб, нужно что-то посерьезнее.
Я более чем положительно отношусь к прыщам, но у меня бомбит от адептов. Чем дождаться помощи от прыщеблядей, легче проебать кучу времени и разобраться самому. Если ты что-нибудь спрашиваешь у прыщебляди, он ответит так, чтобы показать какой он охуенный, и какой я говнарь. И ни разу, чтобы помочь.
- Как сделать что-то в такой-то софтине?
КОКОКОКО ТВОЯ СОФТИНА ГОВНО ИСПОЛЬЗУЙ <прыщеговно-нейм>
Как установить то-то и то-то?
КОКОКОКУДАХ РТФМ
Нахуй так жить-то? Почему большинство прыщеблядей - обиженные на жизнь мудаки, которые таким образом пытаются самоутвердиться.
Поэтому я сижу под спермеркой.
я кончил.
>>319151
Что мешает зафорсить sublime или geany и не страдать на говнософте написаном на джабе?
Нахуя вообще обросшие говном IDE для скриптовых языков? У вас же на код уделяется 30% места, всё остальное засрано какими-то окошечками-хуёшичками.
Вообще используй Sublime + Anaconda
И ошибки сразу выдаст и автокомплит полный Читает все импортируемые и подключеные либы
>>319151
>Нахуй так жить-то? Почему большинство прыщеблядей - обиженные на жизнь мудаки, которые таким образом пытаются самоутвердиться. Поэтому я сижу под спермеркой.
Нифига себе у тебя бомбануло. PIL не может поставить и 50k проект у него. Охуительные истории. Какой ответ ты ожидал на вопрос в стиле "у меня там кнопочка не так нажимается как же это"?
А в общем ты няшка, не обижайся, это интернеты.
Вот то, что никто в треде не хочет code review отписать - это печально, экспертов полон вагон, а ведь это один из способов обучения.
>>319151
>А когда количество кода в проекте переваливает за 50Кб, нужно что-то посерьезнее.
Конечно, для этого нужна иде для Java. Чтобы разрабатывать на питоне. Особенно смешно твое утверждение выглядит если учесть, что в питоне куча возможностей для метапрограммирования - даже список классов получить чистым анализом исходного кода может быть проблемно.
>Чем дождаться помощи от прыщеблядей, легче проебать кучу времени и разобраться самому. Если ты что-нибудь спрашиваешь у прыщебляди, он ответит так, чтобы показать какой он охуенный, и какой я говнарь. И ни разу, чтобы помочь.
Если твоя идея по определению говно, какой помощью с ее реализацией ты хочешь? Скорее всего эклипс просто сканирует исходный код - а значит он просто слишком тупой, чтобы проводить статический анализ кода на динамическом языке.
>>319151
>А когда количество кода в проекте переваливает за 50Кб, нужно что-то посерьезнее.
$ du -cha --apparent-size {addon,core,.} | tail -n1
67K total
>>319181
>Кстати, цените новый сайт. http://pyos.github.io/dg/
Что за говно?
>>319177
> в питоне куча возможностей для метапрограммирования
Люто проиграл.
>>319193
Рубиблядь, иди узнай, что такое метапрограммирование. Нет, это не возможность написать "describe 'it should suck dicks' do do end do do do end end end" вместо простого комментария над куском кода. Вон выше ссылка есть - код на гвидоне генерирует байткод для вм гвидона. Это метапрограммирование.
>>319173
>Нифига себе у тебя бомбануло
Еще как.
>PIL не может поставить и 50k проект у него.
Удивительное рядом.
>Какой ответ ты ожидал
В общем-то я ожидал ответа в стиле, "скачай исходники там-то, положи их в такую-то папку (python27/Lib/ например), или найди setup.py и запусти". Изначально я примерно такого ответа ожидал, и разве я неправильно для этого вопрос задал?
Проблему с Пилом я решил. Вместо import Image надо было написать from PIL import Image, хотя на вики был приведен именно первый вариантможете не проверять, я там уже сделал правку. Нахуя на вики был нерабочий код? Или может это особенности различия спермы и прыщей, что у одних можно без фрома писать, а у других нельзя. Или различия питонов, я работаю под 2.7.
>>319177
Я не отрицаю, что моя идея может оказаться говном, но когда мне вместо моего говна советуют еще большее говно, у меня бомбит. Вместо эклипса советовать вим. Это лол. Еще гедит посоветуй. Вим придуман отнюдь не для того, чтобы им пользоваться им, как основным инструментом разработки, у него другие задачи и для них он годится хорошо.
>>319238
>не для того, чтобы им пользоваться им, как основным инструментом разработки
Ты это столману скажи, спермошлюшка
> советуют еще большее говно
Да ты же только слово vim увидел и у тебя пердак разбомбило так, что ты забыл о предыдущих предложенных вариантах
>>319195
> метапрограммирование
Способность программ писать программы.
>код на гвидоне генерирует байткод для вм гвидона
ахаха проиграл с тебя, любой питон код генерирует байткод для вм гвидона. А раби для раби вм, я понимаю это неожиданный поворот для такого тупого как ты, но всё же
Так что чухалики разбежались по уголкам пока я здесь.
Раби > питон, уже сто раз доказано, только в самых отдалённых жопах мира это не знают. тушите анусы псы.
>>319246
>Моча > говно, уже сто раз доказано, только в самых отдалённых жопах мира это не знают. тушите анусы псы.
Не смотря на то, что схемка и смолток делают остальные скрипты совершено ненужными, массы динамических петушков выбирают ПЫХОПЛЕЯДУ (Perl, PHP, Python, Ruby). ПЫХОПЛЕЯДА - это высеры ГСМ-ов и неграмотных долбоебов, которые проделали большую работу изобретя колесо (квадратное) - чукча не читатель, блеать. Пыхоплеяда состоит из протопыха (слишком переподвыподвывернут для петушков, известно, что новейшую версию первоначально удалось реализовать только на хаскеле), пыха - классика гостевушного жанра, гвидопыха и джапопыха. При этом, если гвидопых отличается от пыха только ЧСВ гвидопыхеров, упивающихся своей невъебенной илитностью, и наличием у хуесосов харизматичного фюрерка, то джапопых действительно несколько более продвинут, и в мокрых фантазиях джапопыхеров является смолтоком. Знатоки пыхоплеяды лепят гостевухи за доширак и заправляют картриджи.
>>319251
Ну давай ты без пасты, а то своих мозгов нету, так ты пасточку с лурочки по всему зк постишь, не стыдно? уёбок хуев
>>319246
>ахаха проиграл с тебя, любой питон код генерирует байткод для вм гвидона. А раби для раби вм
пиздец ты тупой)))) в раби байткод генерирует компилятор а не код, дебилушка) предел метапрограммирования там - это название книги metaprogramming ruby, которую ты даже не читал 100%. небось еще и парашу типа rspec называешь dsl, хотя это и не язык вообще нихуя а набор функций, dsl это штуки вроде toml и papyrus.
>Раби > питон, уже сто раз доказано
британскими учеными доказано?)))) руби настолько парашный, что без рельсов даже юникод нормально не поддерживает, хоть его узкоглазый автор и говорит на недоязыке из ебеней basic multilingual plane)))))00 в гнидоне 3 и то уже пять лет как юникод нормальный есть.
>>319256
>в раби байткод генерирует компилятор а не код, дебилушка)
А в питоне кто? Гвидо лично?
>предел метапрограммирования там - это название книги metaprogramming ruby, которую ты даже не читал 100%
Как будто надо её читать. Да, кстати предел метапрограммирования в питоне, ой я ошибся в питонопараше нету метапрограммирования, а есть костыли.
>британскими учеными доказано?
Какая разница.
>руби настолько парашный, что без рельсов даже юникод нормально не поддерживает
Поддерживает как бы, но ты тупой чтобы это знать.
>гнидоне 3 и то уже пять лет как юникод нормальный есть.
А сейчас ты такой нам по хардкору поясняешься что такое нормальный юникод.
>>319259
>Как будто надо её читать.
Ясно-понятно. Название увидел, мысленно подставил "=" между словами, и побежал кукарекать какой руби охуенный.
>Да, кстати предел метапрограммирования в питоне, ко-ко-ко кукареку
Ну да, создание классов на лету, генерация байткода в рантайме, манки-патчинг объектов, хуки для import - это не метапрограммирование. Что еще кукарекнешь, ущербный? В твоем руби хотя бы в рантайме добавить к классу еще один родитель можно? Ах, да, я забыл, в руби нет множественного наследования.
>Поддерживает как бы, но ты тупой чтобы это знать.
Ну да, ну да. Сравни http://ideone.com/YeLgqv с http://ideone.com/YeLgqv
Ну хотя ладно, это не совсем честно: у идеоне тоже с юникодом не все гладко. Давай на локальной машине.
$ ruby -v
ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux]
$ ruby
puts "Что еще спизданешь, мудло?".upcase
Что еще спизданешь, мудло?
>>319260
>Сравни http://ideone.com/YeLgqv с http://ideone.com/uLpMxF
sfx
>>319260
>>319261
>Ясно-понятно. Название увидел, мысленно подставил "=" между словами, и побежал кукарекать какой руби охуенный.
Ну ты и ванга, может гаданием занимаешься, м?
>Ну да, создание классов на лету, генерация байткода в рантайме, манки-патчинг объектов, хуки для import - это не метапрограммирование.
Угадал это не метапрограммирование, это кал отстойный.
>Ах, да, я забыл, в руби нет множественного наследования.
Есть на миксинах.
А в твоём питоне можно лямбду в десять строк написать без изьёбств вроде передачи метода или какой-нибудь другой хуйни.
> ruby -v
ruby 2.0.0p353
Ой держите поехавшего, если очень надо есть гемы для патчинга этого мелкого бага. А знаешь почему никто это не патчит, потому что питонопараша это замена пердлу и прочим обработчикам строк, а руби это отдельный язык на котором пишут промышленный код вместо того чтобы ебаться со строчками как это принято в питонопараше. Но ты этого не оценишь, потому что слишком тупой для того чтобы тебя взяли куда-нибудь. Также гвидопараша это язык одного лидера, то есть развитие только CPython, остальные платформы сосут по дефолту. В руби есть и jRuby и такие корпорации как Оракл пишут свои бакэнды к руби. В то время как питон даже дебагера не имеет нормального.
Каждый дибил уже кукарекает про строки в руби.
MySimpleSet() | set() #ok
set() | MySimpleSet() #otsos
>>319260
Насчет строк
https://stackoverflow.com/questions/4418196/ruby-unicode-question
мимокрок
>>319271
>Есть на миксинах.
Уровень едва ли выше жабы.
>А в твоём питоне можно лямбду в десять строк написать без изьёбств вроде передачи метода или какой-нибудь другой хуйни.
Конечно.
import dg
eval(dg.compile('''ruby → # 1
ruby.soset = True # 2
ruby.soset = True # 3
ruby.soset = True # 4
ruby.soset = True # 5
ruby.soset = True # 6
ruby.soset = True # 7
ruby.soset = True # 8
ruby.soset = True # 9
ruby.soset = True # 10
>>319274
>Уровень едва ли выше жабы.
Я даже не буду комментировать.
>import dg
>eval
Уёбывай. Просто уёбывай.
>В лиспе тоже много чего было можнозделать, и где он теперь.
Не передёргивай, в руби уже _сделано_.
>Потому что матц НЕ ОСИЛИЛ.
Как я и говорил ванга. Можешь ты там по-больше про жизнь маца расскажешь, интересно знаешь знать что делает мац.
>Что за хуйню ты высрал? Какой еще MySimpleSet?
Простой класс, который расширяет collections из питона.
>Азаза zxc у тебя бомпа давай забань меня еще.
?
>Что руби без рельсов бесполезен и так все знают.
ActiveSupport такой же гем, как и остальные.
>>319276
>Уёбывай. Просто уёбывай.
А я что говорил? Как только рубиблядь увидела настоящее метапрограммирование - сразу обосралась. Это тебе не миксины прикручивать.
>Можешь ты там по-больше про жизнь маца расскажешь, интересно знаешь знать что делает мац.
Инфа отсюда: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/26651 Прекращай хуйню писать. Ванга-хуянга.
>>319279
>А я что говорил? Как только рубиблядь увидела настоящее метапрограммирование - сразу обосралась
Где метапрограммирование?
Может быть "import dg" это программирование?
>Прекращай хуйню писать
Только, когда ты закончишь.
>>319280
>Где метапрограммирование?
dg в рантайме генерирует байткод для десятистрочной лямбды. Покажи-ка мне пример твоего метапрограммирования чтоли.
>>319282
Ну вот для тебя набросал.
class MTest
class << self
def attribute(name, opts = {:read_only => false, :default => nil})
name = name.to_s
self.send(:define_method, name) do
self.instance_variable_get(:@name) || opts[:default]
end
unless opts[:read_only]
self.send(:define_method, "#{name}=") do |var|
if !opts[:type] || (opts[:type] && var.class == opts[:type])
self.instance_variable_set(:@name, var)
else
raise TypeError.new
end
end
end
end
end
attribute :foo, :default => 10, :type => Fixnum
attribute :bar, :type => String
end
>>319288
Функция, создающая property - вершина рубиметапрограммирования? Дново. http://ideone.com/d8mar9
Совсем соскучились, братья рубисты с питонистами друг на друга кидаются.
Подскажите, на что умножать-поделить точку, чтобы можно было скейлить их таким образом, как на картинке. Значение 0.5 - координата точки (пусть это будет флоат от 0 до 1, скажем) не трогается. Значение 1 - точка лежит на потолке. 0 - легла на пол. 0,9 - приблизилась к потолку, 0.1 - почти внизу.
>>319291
М, как бы ты сказал показать метапрограммирование, это ясно не вершина. Да и что может быть вершиной в метапрограммировании? Это понятие, здесь не может быть вершин. Так что прошу не вилять жопой.
Я уже убедился, прочитав этот тред, что питон ничего не может без либы "dg". Так что это такой же костыль для питона, как и рельсовые расширения для руби. Только хуже. Потому что подключив гемы из рельс, я продолжаю писать код на руби. Подключив "dg" мне, насколько я понял, нужно писать в eval, что нонсенс, или писать на самом dg, в какой он стадии развития, я не знаю, но ненашёл ничего, чтобы говорило о текущей версии, поэтому баловаться конечно можно, но в продакшн с такой либой не пропустят.
В общем уже все убедились, что питон не может в метапрограммирование.
>>319294
Давай конкретику. Покажи "метапрогаммирование" на раби, которое не возможно на питоне.
И твои пассажи про многострочные лямбды это полная хуйня, потому что лямбда - это синтаксический сахарок, а вот множественное наследование, которого нет в раби, - нет.
>>319292
Пусть v - координата точки, z - вот это число. Тогда результат x = (1 - 2|z - 0.5|)v + max(2z - 1, 0)
>>319296
К своей радости и к твоему сожелению я не знаю питона. Но давай начнём с простого:
class A
#в руби есть класс Hash
class Hash
def foo ; 1 ; end
end
Hash.new.foo # => 1
>>319294
>ничего не может без либы "dg"
>только что показали код на чистом питоне
Слив засчитан. Конкретно многострочную лямбду гвидон не может исключительно из-за ограничений грамматики языка - аст требует Expression, а не Statement. Возможности рантайма в обоих языках одинаковые, потому что вм одна и та же. Многострочные лямбды ее байткод, кстати, поддерживает.
>>319300
>class A
У тебя syntax error.
class Yoba: pass
Yoba.foo = lambda self: 1
>>319300
> К своей радости и к твоему сожелению я не знаю питона. Но давай начнём с простого:
А с каких хуев ты делаешь вывод,
> что питон не может в метапрограммирование.
?
>>319305
Он просто жопой виляет. Смотри как он классно себе противоречит:
>>319271
>>Ну да, создание классов на лету, генерация байткода в рантайме, манки-патчинг объектов, хуки для import - это не метапрограммирование.
>Угадал это не метапрограммирование, это кал отстойный.
Что же мы видим в >>319288 и >>319300? Манки-патчинг объектов и видим.
>>319304
Копировал из репла.
>>319305
Давай я тебе дам определение что такое "знать". Это мало того что знать синтаксис и семантику, так это знать также инфраструктуру языка, подкапотную, как работает ГЦ, как работают библиотеки.
>>319306
>Манки-патчинг объектов и видим.
Манки-патчинг это и есть метапрограммирование.
>>319304
Отлично. Теперь.
class Test
def foo ; 1 ; end
def bar ; 2 ; end
private :foo
protected :bar
end
>>318800
Не работает. Грузит первый урл и выходит. Условия прописал верно.
>>319311
> приватные методы
> метопрограммирование
Все с тобой ясно, манька. Уебывай.
Слушайте, уважаемые!
А вы не могли бы свои холиворссрачи, о том, какой язык лучше, разводить в другом тредике? Данный как бы задумывался не об этом.
ОП
>>319315
Сейчас речь идёт не о метапрограммировании, а об языках в целом. Но раз нужно, тогда
Test.instance_eval { protected :protected_method }
>>319316
Добро пожаловать на 2ch.hk. За помощью пиздуй на стэковерфлоу.
>>316402
>не получив бан от DNS-сервера
Пусть качает DNS-дамп интернетов. Там несколько гигабайт. Будет слегка устаревшим, зато все данные локально.
>>317040
Тогда можно выделять IP-адреса, не? Получается что коннектимся, нас перебрасывает на свободный ip/порт и в итоге наш сервант держит >64k.
>>317040
Нет, ты. Сколько же неграмотных детей в pr, которые явно прогуливали сетевые технологии.
Сокет определяется значениями (IP сервера; порт сервера; IP клиента; порт клиента)
Допустим, первые 2 фиксированы (т.е. один процесс открыл и слшает один порт). Вопрос, сколько всего может быть уникальных сокетов и сколько соединений может принять этот сервер?
И заметь, мы еще не рассматриваем случай, когда у одной сетевой карты может быть много IP-адресов, например из IPv6.
>>317040
> как по-твоему ОС будет определять, какой именно это клиент?
По 4 значениям (2 Ip адреса и 2 порта), которые указаны в заголовке пакета.
Алсо, читани-ка учебник (какие знакомые картинки, я явно их раньше где-то видел), там есть примеры пакетов и никаких «эфемерных» портов там нет: http://www.soslan.ru/tcp/tcp18.html
Может доброанончик и мне поможет с питоном :3 Мне нужен скрипт сервера/клиента игры "отгадай число", с меня любая помощь в области PHP, HTML, CSS, Javascript
>>321091
Дополнительная информация:
1) Скрипт, клиент, который соеденяется с серваком по порту 4000, при соединении получает сообщение с сервера "какое число я загадал". С серваком может одновременно много клиентов соеденяться.
2) Сервак - принимает соединения от простого клиента и админского, простому клиенту загадывает любое число от 1-10 и пока он не отгадает будет писать "горячё или холодно" . А админский клиент при сообщении LIST выдаст список текущих соединений
Надеюсь ничего не упустил с:
Есть один pyqt4. Создал я QListView и затолкал в него много-много (49) строк. Теперь, если четыре раза прокликнуть по элементам, а потом дёрнуть (вертикальный) скроллбар, то при выходе из скрипта питон падает. Кто-нибудь сталкивался?
>>321176
Оно само пофиксилось(?) после того, как я написал забирание строк из списка. Смешно, что сам список я не трогал и других настроек не менял. На другом проекте не получилось воспроизвести.
Тут наверняка есть буратинка купивший платные курсы на сами знаете каком сайте. Реквестирую слив курсов.
>>321598
Курсы не нужны. Берешь див инто пайтон и берешь книжку по джанго или торнадо. Но джанга популярнее, а в целом на питоне ты работы не найдешь.
>>321675
Кодер помнит пальцами, а не глазами, поэтому мне интересней курсы. А дайв твой я читал. А работать программистом не планирую.
Так что с чего ты взял, что лучше меня знаешь, что мне нужно? Я не просил меня наставлять.
Пролистал до 6-й страницы программач, питон треда не нашел. Надеюсь, этот тред подойдет для моего вопроса.
Накалякал свой первый недокалькулятор. Установил google app engine. Делал все по гуглогайду, используя webapp. Сначала отображается форма
<form action="/form" method="post">
application = webapp.WSGIApplication(
[('/', clMainPage),
('/form', clApply)])
>>321964
Весь проект у меня состоит из двух файлов:
app.yaml
forms.py
>>321092
http://docs.python.org/release/2.5.2/lib/socket-example.html
Элементарно же!
Алсо, нахоя оно тебе надо?
Алсо2, если опять на работке буду хуи пинать тогда может напишу
>>321598
Оно же месяц назад всё бесплатное было?
И да, говно курсы
>>319462
Клиентский порт могут использовать несколько клиентов, для этого флаг есть в апи.
>>321980
>>321092
>>321091
http://pastebin.com/bSzghkKR
Внутри клиент и сервер.
Говнокод ищо тот, сваяно на коленке
Питонобоги, я пал на самое дно и второй раз стреляю себе в ногу в трех строчках кода.
Пишем функцию получающую на вход лист, возвращающую этот лист, из которого удалены уникальные значения.
def foo (lst):
#for n in lst: Тут я первый раз выстрелил в ногу
for n in range(len(lst) + 1):
if lst.count(n) == 1:
lst.remove(n)
return lst
foo([5, 8, 5, 5, 8, 4])
>>322182
>for n in range(len(lst) + 1):
n = [0: length + 1]
>lst.count(n)
Что подсчитываешь, наркоман?
http://ideone.com/M9foH4
>>322182
Пиздишь же, все работает:
Python 2.7.5 (default, Aug 25 2013, 00:04:04)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> def foo (lst):
... #for n in lst: Тут я первый раз выстрелил в ногу
... for n in range(len(lst) + 1):
... if lst.count(n) == 1:
... lst.remove(n)
... return lst
...
>>> foo([5, 8, 5, 5, 8, 4])
[5, 8, 5, 5, 8]
>>>
>>322186
>n = [0: length + 1]
Не понимат.
>Что подсчитываешь, наркоман?
"list.count(x)
Return the number of times x appears in the list."
Подскажите, как сделать работать питон+джанго на своей машине? Нужен апач? Денвера будет достаточно?
>>322189
У тебя n тут - счетчик по индексам массива и изменяется от 0 до его длины, что я и попытался изобразить. Потом ты зачем-то подсчитываешь сколкьо раз индекс массива (не элемент, заметь) встречается в массиве. Ну не наркоман ли?
Однострочник я уже тебе написал.
>>322189
>n = [0: length + 1]
>Не понимат.
Указанный тобой диапазон
for n in range(len(lst) + 1):
>>322188
Окай. С этими входными значениями код магическим образом отрабатывает верно. Усложняем номер, меняем значения и получаем пикрелейтед.
>>322192
За однострочник спасибо. Но, блеат, еще б я понимал, что за фильтр, да и в лямбда-функции я еще не очень могу.
>>322192>>322193
Спасибо, я понял.
Допилил, вроде нога цела:
def foo (lst):
for n in range(len(lst)):
if lst.count(lst[n]) == 1:
lst.remove(lst[n])
return lst
print foo([10,9,10,10,9,8])
>>322190
>Денвер
>Собрался писать на пистоне под виндой
Гоните говноеда!
Тебе будет достаточно и встроеного сервера
>>322228
Бля, табуляция проебалась, не могу в тег code
http://pastebin.com/HDbhJtvT
>>322198
Хотя нет. Я все еще ловлю трейсбек "index out of range", в некоторых случаях. Например print foo([1,2,3,1,3]).
Очевидно, что это происходит при удалении элемента листа. Логичный фикс - сделать второй лист, как сделал вот этот >>322228 сЭр. Но, как то не экономично получается, если предположить, что в листе пизделион элементов.
Пойду читать про filter и лямбды.
Калеки ебаные.
a = [8, 7, 8, 9, 9, 9, 1, 10, 11]
a = [item for item in a if a.count(item) > 1]
print a
# QPython start: 2014-01-31 09:56:31
[8, 8, 9, 9, 9]
# End
>>322423
Ну вот, хотя бы один тръу пистонщик могущий в генераторы заглянул в тред
>>322423
Тоже самое за O(n).
from collections import Counter
[i for i,c in Counter(a).items() if c > 1]
>>322470
>>322423
Ну суть понятна: Вместо того чтобы итерероваться по индексам как в C/паскале надо думать полее питонистично.
Очень рекомендую новичкам:
http://www.dabeaz.com/generators/Generators.pdf
Ну и юзайте уже IPython вместо стандартного интерпретатора. Там и цвета и отладка и numpy и еще куча всего...
Где питонотред? Впрочем, спрошу тут.
Есть винда, есть программа. Есть скрипт на питоне, запускающий эту программу, прописывая кастомные переменные среды и делающий другие няшные вещи. Есть файлы этой программы, которые можно открывать даблкликом, но при этом, естественно, скрипт не запускается, так как файлы открываются прямо через экзешник программы.
Питоний скрипт нельзя поставить в "открыть с помощью", так что, полагаю, нужно сделать какой-то виндовый запускающий скрипт с неким расширением, то ли .bat, то ли .cmd, не пойму, и уже это засунуть в "открыть с помощью". Подскажите, как сделать этот скрипт, и достаточно ведь, чтобы в нем был прописан запуск скрипта, ничего специально делать не нужно, чтобы в программе загрузился файл, по которому мы кликнули? Ещё крайне желательно установить этому скрипту кастомную иконку, чтобы у ассоциированных файлов сохранилось прежнее изображение.
>>322808
используй ярлык запуска программы, в настройках указываешь скрипт и нужные аргументы.
>>319260
По хардкору нужно пояснять, что такое апкейс, он определен в руби только для латиницы.
>>322829
Где в настройках ярлыка указывается скрипт? В третий раз напишу, на всякий, что у меня винда.
>>322927
>{}
Ждем вариантов на Perl и Brainfuck!
Больше скобок богу скобок!
>>323148
> list.select!{|x| (list.count(x) > 1)}
а что эта дрысня делает?
репост из днищетреда
Знаю немного C, C++, Java, C#, Haskell.
Хочу изучить питон, хтмл, ксс, жабаскрипт, чтобы макакить веб на каком-нибудь одеске. Я правильно понимаю, что кроме того, что я написал, мне еще нужен какой-нибудь анальный фреймворк (или как это называется? cms?)
>>323177
>Хочу изучить питон, хтмл, ксс, жабаскрипт, чтобы макакить веб на каком-нибудь одеске.
Нахуй так жить?
Google Apps Engine
Как убрать эту отладочную инфу в выводе? Пикрилейтед подчеркнуто красным, все что перед - мое.
В обработчике webapp режим отладчика не включен:
application = webapp.WSGIApplication(
[('/', clMainPage),
('/form', clAnswer)])
>>323185
Объясните по хардкору в чем суть Apps Engine и зачме его юзать?
>>323192
После изучения основ и синтаксиса языка (работал во встроенном IDE в комплекте с питоном, windows) я задался вопросом, а как теперь перейти к веб-разработке? Ну первое, что нашел, это GAE. Запускаешь на своем компе гае, добавляешь проект (папку с программой), запускаешь проект, и проект-сайт открывается в браузере по http://localhost/
Так же можно сделать, что бы был доступ с других компов в локальной сети. Может быть можно каким-то другим образом запускать, без гае, я пока не интересовался. Плюсом идет авторизация от гугла, какая-то своя база данных, административная часть. Можно с компа выгрузить на сервер гугла, получив бесплатный домен для приложения вида yourapp.appspot.com
>>319311
>Создание приватных и протектед методов
Расскажи ка мне, зачем нужны private/protected методы?
>>323218
К твоему серверу, кстати, можно подключаться через интернет. По ip + порт.
>>323218
Но я всё равно не понимаю нахуя? Обучаться можно и на локалке, а создавать продакшин на гугл апп это зашквар и содомия при том, что вдски сейчас стоят копейки
>>323359
Я попробовал установить джанго на денвер, нагуглил пару гайдов. Ничего не получилось. С GAE в разы проще разобраться.
>>315895
>Я попробовал установить джанго на денвер
LOL, с какой целью? Для локальной работы есть сервер разработки http://djbook.ru/rel1.6/intro/tutorial01.html Если хочешь отработать деплой на боевой сервер - возьми VPS за $5 у digitalocean.com.
>>323438
> возьми VPS за $5 у digitalocean.com.
Ты забыл реферальскую запостить.
Не нашел PYthon треда, потому спрошу здесь.
Хочу научиться парсить текст программы, написанной на питоне. Результат должен быть в виде дерева.
Например для программы "имя_файла":
класс_А:
метод_1():
код_метода_1
метод_2():
код_метода_2
класс_Б:
метод_3():
код_метода_3
Результат будет:
{"имя_файла":{"класс_А":{"метод_1":"код_метода_1", "метод_2":"код_метода_2"}, "класс_Б":{"метод_3":"код_метода_3"}}
Как ловчее всего такое сделать? Использовать регулярки? Или смотреть в сторону yacc lex?
>>323626
Может http://docs.python.org/3/library/language.html поможет?
>>323626
> Использовать регулярки?
http://stackoverflow.com/q/1732454
>>323635
>Ко-ко я не умею думать, а умею копипастить
На токены разбить можно и регуляркой.
>>323626
Именно для такого парсинга регулярка и нинужна жи, достаточно условий и find + 3-6 строчек
>>318800
Не работает. Пофиксите, котаны, а?
Здравствуй, анон! Вопрос есть по питону, но не тред ведь создавать для этого, верно?
Как с помощью питона кликнуть на кнопку на веб-странице? Вчера чуток погуглил и нашёл какую-то НЁХ mechanize, но, судя по комментариям, оно тоже через раз работает или не работает вовсе. Ну а сейчас у меня обед и я решил спросить у анона. Буду приятно удивлён, если кто-нибудь подскажет как это сделать да и вообще возможно ли это.
Если интересно, то надо кликнуть кнопку "Разрешить" при авторизации standalone-приложения впаше.ком.
>>323703
Мимокрокодил. Ящитаю, что кнопка просто добавляет параметр в post-запрос. Поэтому, тебе формально не надо на нее кликать.
>>323703
Сильно зависит от контекста и предыстории попадания на страницу с кнопкой и того, к чему приводит её нажатие: используеться ли авторизация, javascript и т.д.
Возможно, можно обойтись каким-нибудь grab-ом или его аналогом , а возможно что там много JS.
На случай последнего могу подсказать "тяжёлую артиллерию": phantomj
>>315971
Может кто-то сказать что это за цветовая схема?
>>323852
Хуй знает, я как не установлю себе какую-то схему так всё уёбищно, просто пиздец. Что в саблайме что в емаксе. Може дело в шрифтах, хуй знает, кроме droid sans и inconsolata ничего не понравилось. Надо будет создать тред с цветами и шрифтами.
Удаводавы, есть вопрос. Решил перенести сервер с жабы на питон. Не охуеет ли питон держать 3к+ соединений + обсчитывать игровую логику? С питоном ебусь первый раз, повсюду стращают GIL-ом и падением производительности на 1к+ потоков.
>>323903
Ну хууууй знает. Напиши тестовый сервер и протестируй его на нагрузку.
Вот синтетический тест на потоки, в потоке запущен простенький цикл с вычислениями с плавающей точкой
Работал отсносительно шустро, а какая скорость у тебя будет хз, но чем тебя жаба не устраивает то?
>>323903
В ванильном Cpython оче хуевый трединг - одна кривая регулярка(любой кусок сишного кода) в одном потоке ложит весь твой сервер к хуям. Суть в том что интерпретатор считает кванты по инструкциям и внутрь сишного кода лазить не умеет. Поэтому на кривом сишном коде получается лок и пиздарики. Выход - юзать multiprocessing(неудобно + оверхед) или другой интерпретатор типа jython/pypy(не все либы заработают + в jython ест/был эпичный баг в urllib с выжиранием всех доступных файловых дескрипоторв, например).
Пидораса Гвидо уже давно тыкали в это лицом но он вместо того чтобы чистить говно поубирал в python3 то что работало(print) и добавил касметики.
Что за фигня, анон? Смотрю книжку Python Cookbook - там пикрилейтед. Пытаюсь повторить, получаю синтекс эррор.
http://ideone.com/R4gUry
>>323999
5 лет уже не могут избавиться от второй версии, так что сасай.
посоны, почему пайтон для веба, в сравнении с рубями, такое днижче?
>>324001
Кто не может? Питон 2 оффициально™ deprecated и обновлений для него уже не будет. Что кто-то из-за природной лени не может перенести свои древние поделия на гвидон 3 - их проблемы. В конце концов, с коболом кто-то тоже до сих пор страдает.
>>324006
анон в твиттере мне нравится питон, кстати, и Flask. А на чем вообще принято писать небольшие прожекты? Джанга?
>>324007
> Что кто-то из-за природной лени не может перенести свои древние поделия на гвидон 3 - их проблемы.
Блеватеки сами перепишутся? А вот нехуй было ломать обратную соместимость.
>>324235
>А вот нехуй было ломать обратную совместимость.
Sir.
This issue was recently brought to my attention.
On behalf of Python I would like to apologize. I see that now that you have been treated unfairly.
After carefully reviewing this bug report with our board of directors on 4chan, we have come to the conclusion that your "rusty C skills" should be enough to fix the issue.
Again, I sincerely apologize. We will try to stop fixing bugs in Python.
Хуйня ваш python.
Нет ли в этом людей, которые хотят сделать йобу-платформер (или вообще что-нибудь)?
Оставляйте контакты, если такие есть.
>>324516
На пигейме что ли? Да и вообще, гейдев на питоне - что-то сомнительно звучит.
>>324519
Энивей, я должен сделать что-то кроме змейки. Пусть на пигейме или какой-нибудь рогалик-библиотеке.
>>324531
Погнали пилить игру для программистов на пистоне + kivy аль рогалик какой
>>324611
Пиши, бро.
[email protected]
>>324631
А я тоже люблю kivy. Тем более он только что вышел на тройку. Можно с вами?
Аноны, прошу совета. Как на питоне половчее организовать пикрилейтед? Асинхронные сокеты (asyncore) занимают весь тред, так что не остается тиков для таймера. Либо надо переписывать asyncore.loop(), либо выпихивать EventHandler и таймер в отдельный тред, но как тогда организовать двухсторонний обмен данными между двумя тредами?
ебусь с питоном второй день
Скорее эстетический, чем практический вопрос.
http://ideone.com/BN2Gh2
Как обычно проводят такие сравнения? На принадлежность к классу. По логике через class быстрее чем через type(), да?
Предположим, есть прямоугольная область (экран). Разделим его на четыре поменьше. Как бы красиво сгенерировать четыре точки так, чтобы каждая из них была в одном прямоугольнике?
>>326109
НАходишь границы своих прямоугольников, получаешь по два диапазона (икс и игрек). Генеришь числа в диапазонах. Рекомендую выбирать середину. Профит.
>>326124
Ну я так и сделал. Список из списков координат минимума и максимума по икс и по игрек. Просто так не круто выглядит. Вдруг как нибудь элегантно можно это сделать. Видимо нет.
А вот например я напишу вот так:
def f(filename):
with open(filename) as ff:
return ff.read()
def f(filename):
ff = open(filename)
c = ff.read()
ff.close()
return c
Так. Написал значит гуи-приложение на ткинтере. И немного меня ткинтер разочаровал. Делал все в линуксе, и как оказалось не такой уж он и кроссплатформенный. Стиль на винде выглядит не совсем так и вырвиглазно. В связи с этим реквестирую совета по выбору гуи-фреймворка для пайтона. Самые главные критерии: кроссплатформенность, компактность кода, возможность разделения внешнего вида от логики, минимальность размеров распространяемого приложения. Спасибо за внимание.
А по каким мануалам учить многопоточность (или что там в пайтоне), многпроцессорность и так далее? Где это применяется. Нужно ли?
>>327189
вкуривай join calculus, pi-calculus, temporal logic of actions и прочую годноту. Программируй на Хаскелле, используй STM, DPH, CHP, пиши свои реализации. Не зашкварься о пистон или интелевские либы, эта хуита для быдла, которое не умеет ничего, кроме пистонa/рабби и ни на что большее, чем написать #pragma omp for чтобы фор распараллелися не способно.
>>327187
PyQt. Как будто у тебя выбор есть.
>минимальность размеров распространяемого приложения.
разве что кроме этого
А есть какое-то решение, чтобы в гуи приложении все ошибки выводились в одном месте, например в Label? Как нибудь организовать бы все это красиво хочу.
>>327597
>Откуда вы вообще берётесь? В Рашке что уже начали CS-специальности открывать?
Ссаный школьник-ньюфаг не может в МАФИЮ АНОНИММУСОВ)))
>>327821
Ну ты меня понял ведь, да? Понял, да? Верно? Понял?
[По очереди подмигивает двумя глазами]
Господа, как бы мне залогиниться во вконтактике?
Нашел только http://habrahabr.ru/post/143972/
Поскольку из бэкапов восстановили треды аж прошлого лета, восстанавливаю Python-request тред
Итак, мы остановились на версии чекера с прокси:
http://ideone.com/TEpFYE
Результат - как по мне - охренительный. Не могу сейчас сделать замеры, но там ни о каких месяцах-годах не идет речи. Я беру 2500 живых паблик проксей и выставляю такие параметры:
Скорость - просто бешенная. Но есть капля дегтя в этой реализации: некоторые адреса возвращают http_answer 650 хз, я первый раз про такое слышу вообще:
что приводит к ошибке, и остановке чекера.
Добрый Анон, который принимал участие в создании, пофикси, пожалуйста эту багу фичу.
ОП-того-треда