Сохранен 309
https://2ch.hk/pr/res/315895.html
24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Python-request тред (реинкарнация)

 Аноним Чтв 09 Янв 2014 04:24:43  #1 №315895 
1389227083016.png

Поскольку из бэкапов восстановили треды аж прошлого лета, восстанавливаю Python-request тред

Итак, мы остановились на версии чекера с прокси:
http://ideone.com/TEpFYE

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


max_number_items_in_urls = 100000 # max url in one cycle
requests_in_time = 1000 # specifies the number of requests


Скорость - просто бешенная. Но есть капля дегтя в этой реализации: некоторые адреса возвращают http_answer 650 хз, я первый раз про такое слышу вообще:


650 | http://2046.INFO/
Traceback (most recent call last):
File "checker.py", line 116, in <module>
create_request(urls, proxy)
File "checker.py", line 98, in create_request
file_name].write('%s | %s\n' % (req.status_code, req.url))
KeyError: '6xx.txt'


что приводит к ошибке, и остановке чекера.

Добрый Анон, который принимал участие в создании, пофикси, пожалуйста эту багу фичу.

ОП-того-треда
Аноним Чтв 09 Янв 2014 06:02:47  #2 №315900 

Строка 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

Аноним Чтв 09 Янв 2014 06:04:54  #3 №315901 
1389233094719.gif

>>315900
блять, разметку проебал http://pastebin.com/SV5DUAGs

Аноним Чтв 09 Янв 2014 07:40:40  #4 №315905 

>>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
Аноним Чтв 09 Янв 2014 15:18:02  #5 №315958 

что это, зачем это?

Аноним Чтв 09 Янв 2014 15:55:14  #6 №315966 

>>315895
ОП, давай поместим код в Mercurial и зальём репозиторий, например, на bitbucket. Так и код не потеряется и анон сможет принять участие в его доработке. Алсо потренируемся в использовании систем контроля версий (сейчас без этого никуда).

Я сам давно хотел попробовать пул реквесты, вот это всё, но не выдавалось подходящего щанса.

Почему mercurial, а не git? Проще в изучении, интуитивнее система команд, по возможностями они с git примерно равны.

Аноним Чтв 09 Янв 2014 16:43:42  #7 №315971 
1389271422544.png

>>315895
> max_number_items_in_urls = 100000
> requests_in_time = 1000
Мне лень читать питонокод, к которому мой глаз не очень привык, поэтому объясните, чем отличаются эти две штуки и что именно каждая из них ограничивает.

У тебя нет файла 6xx.txt. Не программирование, а детский сад студентов-птушников какой-то.

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

Аноним Чтв 09 Янв 2014 17:37:17  #8 №315981 

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

Аноним Чтв 09 Янв 2014 19:24:48  #9 №316018 

>>315981
Вайпалку, например, можно написать. Для чухача.

Аноним Чтв 09 Янв 2014 19:26:03  #10 №316019 

>>315981
Новую движок борды.

Аноним Чтв 09 Янв 2014 19:40:23  #11 №316024 

>>315905
выложи полный код, скорей всего отступы где-то убежали у тебя

Аноним Чтв 09 Янв 2014 19:42:00  #12 №316025 

>>315966
предлагаю git на том же битбакете

Аноним Чтв 09 Янв 2014 20:25:56  #13 №316040 

блять, кто нибудь может объяснить, что должна делать программа?
Говнокод лень читать

Аноним Чтв 09 Янв 2014 20:35:18  #14 №316044 

>>316040
Чекает огромный список url на возвращаемое значение http answer. C прокси. Асинхронно.

Аноним Чтв 09 Янв 2014 20:55:06  #15 №316049 

>>316044
http://pastebin.ubuntu.com/6721678/

Если наплодить 2,5к потоков, то наверняка на ОП-списке уложится в 10-11 секунд, но насилие — это плохо. Если с таймаутами поиграться, тоже много чего сделать можно. Руби-анону на заметку: разработчики typhoeus явно не любят лишний раз переписывать документацию, так что знайте: таймауты внезапно в секундах, потому что теперь Float.

>>315971-кун

Аноним Чтв 09 Янв 2014 22:40:57  #16 №316080 

>>316044
>C прокси

всмысле запрос через прокси-сервер?
должна выдавать status code, или весь response, что нахуй за answer, ты школьник чтоли?

Аноним Чтв 09 Янв 2014 22:43:44  #17 №316082 

кароч на всякий случай http://testutils.org/multi-mechanize/

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

Аноним Чтв 09 Янв 2014 23:53:47  #18 №316109 

>>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.

Аноним Птн 10 Янв 2014 00:22:03  #19 №316122 

>>316049
>http://pastebin.ubuntu.com/6721678/
Попробуй ка на тестовом input.txt прогнать: http://rghost.ru/51381124

>наплодить 2,5к потоков
Можно, но вопрос: где взять хотяб по 200 рабочих прокси на поток? Полагаю идея с прокси была не оче.

Аноним Птн 10 Янв 2014 00:38:25  #20 №316125 

>>316109
>Потому "просто починить багу" неполучится.
Хотя, еще один костыль - почему нет?
http://ideone.com/A71668

Аноним Птн 10 Янв 2014 00:53:07  #21 №316130 

>>316122
>Попробуй ка на тестовом input.txt
Ох извиняй, недопонимание, скрипт у тебя просто прокси проверяет. Человек хочет получить HTTP status code от разных доменов, числом 800 млн. за разумное время.

самофикс

Аноним Птн 10 Янв 2014 01:57:21  #22 №316140 

>>316109
>затем одну проксю и отправляет на эту бедную проксю не больше
>Идея была в том, чтоб насиловать DNS-ы по сотне запросов для каждой прокси
Нет, ну я пиздец. Зачем создавать асинхронную очередь запросов для одной прокси, ведь можно задать свою проксю для каждого запроса.

Аноним Птн 10 Янв 2014 02:35:30  #23 №316146 

Оп, мой тебе совет.
Импортируешь либу threading
http://docs.python.org/2/library/threading.html
Кидаешь соплю сокетом
http://docs.python.org/2/library/socket.html
Отправляешь простейший http заголовок на get и получаешь HTTP 200 OK или ещё какую хуйню.
Читаешь первую строку ???? Профит.
Ну ещё траями захуячить это всё и получишь прирост скорости % на 20, может больше.
Ещё можно сделать буферизацию и в файл писать не сразу, а когда наберётся хотя бы 1000 запросов, дальше лочишь все функции, записываешь в файл, почистил буфер и разлочил

Аноним Птн 10 Янв 2014 03:37:41  #24 №316164 

>>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'


>>316146
>Импортируешь либу threading...

Тут уже сделали скрипт на erequests/Eventlet, потоки - мне кажется, плохая идея. Они просто подвисать будут в силу специфики.
Аноним Птн 10 Янв 2014 04:07:30  #25 №316167 

>>316164
Ну да, поспешил немного с тредингом, тогда костыль в виде
http://docs.python.org/2/library/multiprocessing.html#module-multiprocessing

Аноним Птн 10 Янв 2014 10:11:37  #26 №316187 

>>316167
Добро пожаловать в новый ад с отдельным процессом на каждого воркера. Рекомендую попробовать greenlet'ы на кококорутинах. Вам же все равно только async I/O надо. Правда там пики точеные ввиде манкипатчинга...

Аноним Птн 10 Янв 2014 11:03:54  #27 №316196 

>>316187
>Правда там пики точеные ввиде манкипатчинга

Кстати поясните за этот monkey patching. Уже неоднократно встречал его в разных сетевых программах; программисты на форумах обсуждают его с явным недоверием, даже страхом; похоже никто не знает в действительности, как оно работает и откуда взялось; при этом все почему-то пользуются. Всё это создаёт тень мистики над этим странным патчингом, в голову закрадываются самые разные теории.

Аноним Птн 10 Янв 2014 14:18:32  #28 №316245 

>>316109
> 4 запроса в секунду
Э-э… это ж мало совсем. Можно через каждую проксю по запросу в секунду делать, въебал сотню воркеров — получил сотню запросов в секунду. Ну или даже в три-четыре секунды отклика. Один хуй больше будет, даже если слипов въебать везде. У меня скрипт за десять секунд проверил примерно 1300 адресов в сотню потоков.

> по списку разных DNS-ов
Беглый гуглинг не показал никаких возможностей по смене DNS для curl. В моей руби-обертке libcurl можно вроде бы сетевой интерфейс указывать, но не DNS. И вообще эта хуйня делается в настройках самих сетевых интерфейсов, по-моему. В любом случае, можно один раз зарезолвить все нужные тебе адреса и сохранить список айпишников — вряд ли часто будут переезжать.

Кстати, зачем тебе все это говно нужно, ОП?

Аноним Птн 10 Янв 2014 18:34:49  #29 №316339 

>>316245
>Э-э… это ж мало совсем.
Так и есть. У меня выходило где-то 100-150/сек (с прокси), трудно сказать точно, эта ошибка 6xx всю малину мне запорола.

>Кстати, зачем тебе все это говно нужно, ОП?
Слишком много всего, но первая задача - тупо чекнуть все домены.

Аноним Птн 10 Янв 2014 18:54:08  #30 №316349 

Ничего не понимаю

мимо-сишечка-20к-коннектов

Аноним Птн 10 Янв 2014 20:17:19  #31 №316390 

>>316349
>мимо-сишечка-20к-коннектов-к-127.0.0.1
А адрес сервера назвать опять стешняешься?

Аноним Птн 10 Янв 2014 20:24:59  #32 №316395 

>>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.

Аноним Птн 10 Янв 2014 20:34:13  #33 №316398 

>>316395
>>никаких возможностей по смене DNS для curl
http://curl.haxx.se/mail/lib-2011-11/0067.html
Я хотел сказать, что curl вроде включает в себя c-ares, а ему можно указать DNS. Может я что не понял - надо будет разобраться.

Аноним Птн 10 Янв 2014 20:39:40  #34 №316400 

>>316390
Адреса сервера нет, есть примерно 20к хостов, к которым подключен единственный процесс (с 1 тредом)

Аноним Птн 10 Янв 2014 20:45:59  #35 №316401 

>>316400
Как обычно в общем. Сишники такие сказочники.

Аноним Птн 10 Янв 2014 20:47:26  #36 №316402 

>>316349
>Ничего не понимаю
>>316130
>Человек хочет получить HTTP status code от разных доменов, числом 800 млн. за разумное время.
>>316109
>т. е. проверить очень много разных доменов не получив бан от DNS-сервера.
Что тебе не понятно?

Аноним Птн 10 Янв 2014 21:10:26  #37 №316406 
1389373826655.jpg

>>316196
>поясните за этот monkey patching
http://ru.wikipedia.org/wiki/Monkey_patch

Аноним Птн 10 Янв 2014 23:32:13  #38 №316444 

>>316395
> 200 прокси и 2 000 урлов - 9m18.841s
То 100-150 в секунду, то такой результат. Может, ты нули где-то потерял?

руби-кун

Аноним Птн 10 Янв 2014 23:49:36  #39 №316450 

Прочитал тред @ нихуя не понял. Тупо отправить хед-запрос, получить статус код и записать на файл? И что за прокси? Зачем он?

дилетант Суб 11 Янв 2014 00:02:02  #40 №316454 

>>316444
>То 100-150 в секунду, то такой результат
Откуда такие цифры? Ты на ОП-а не смотри, он такой что на одну проксю готов послать десять тысяч запросов разом ожидая получить корректные ответы.
>>316450
>Тупо отправить хед-запрос, получить статус код и записать на файл?
Ага, 800 миллионов доменов.

дилетант Суб 11 Янв 2014 00:07:00  #41 №316456 

>>316454
>корректные ответы
корректные результаты - конечно
самофикс

sageАноним Суб 11 Янв 2014 00:37:21  #42 №316467 

Долбаёбы итт, не понимают что всем языкам похуй на такую обработку, и скорость зависит только от сети.

дилетант Суб 11 Янв 2014 01:52:11  #43 №316493 

>>316395
>читаем файл с проксями, проверяем и те что не проходят проверку удаляем из файла
Полагаю очень поха мысль удалять записи из этого файла. Изменил http://ideone.com/un2eGE для мертвых прокси создается файл bad_proxy.txt. С помощью него можно принять решение о срочности обновления файла proxy.txt, а существующая мертвая прокся просто не допускается к очереди асинхронных запросов.

дилетант Суб 11 Янв 2014 02:47:00  #44 №316505 

>>316493
>Изменил http://ideone.com/un2eGE
Строка 145 лишняя, удалил. Проверка прокси для остатка url-ов не нужна.
http://ideone.com/zLQekC

Аноним Суб 11 Янв 2014 09:03:31  #45 №316542 

>>315895
Объясните ньюфагу на python в основном программируются вед приложения? или как вообще, проведите параллель с С++, тоесть где в основном используется python, а где С++
Пожалуйста, анончик

Аноним Суб 11 Янв 2014 10:01:43  #46 №316544 

>>316542
Веб это только одна из сторон применения питона.
Ещё можно использовать в качестве скриптового языка, прикрученного к какой-нибудь тяжёлой программе вроде игры или пакета для 3д моделирования.
Плюс питон - отличный язык для прототипирования.

А вообще его можно использовать везде, где тебе хватит его производительности, даже для несложных игор.

Аноним Суб 11 Янв 2014 13:41:52  #47 №316577 

>>316196
Мистика появляется потому что при использовании манкипатчинга неопытным погромистом возможны баги в самых неожиданных местах.

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

Аноним Суб 11 Янв 2014 14:59:38  #48 №316595 

>>316544
>Ещё можно использовать в качестве скриптового языка, прикрученного к какой-нибудь тяжёлой программе вроде игры или пакета для 3д моделирования.
Дружище, а примерчик можешь какой-нибудь привести. Например игра полноценная, написана на с\с++, а к ней приделана произвольная фича, с помощью python?

Аноним Суб 11 Янв 2014 15:04:14  #49 №316598 

>>316577
> Мистика появляется потому что при использовании манкипатчинга неопытным погромистом возможны баги в самых неожиданных местах.
Ага, особенно если нет refinements.

Аноним Вск 12 Янв 2014 06:16:58  #50 №316853 

>>316595
Вот недавно прошёл Bloodlines. Правда троишники не особо умели программировать… Можно сказать, что совсем не умели. И вообще я не он, а мимопробегал.

Ищу либу Аноним Вск 12 Янв 2014 06:49:48  #51 №316856 

1) Которая умеет кавычки там расставить и прочее ко-ко-ководство.
> "У всех свой "вкус"!" - сказал индус, снимая с хуя обезьяну.
> →
> « У всех свой „вкус“! » — сказал индус, снимая с хуя обезьяну.

2) Которая может текст разбить по словам, чтоб вписывался в заданную ширину, а потом сообщить размеры получившегося прямоугольника с текстом.

На питоне. Лучше не для веб, но можно и для веб.

Аноним Вск 12 Янв 2014 11:19:58  #52 №316876 

>>316856
1) Делается на коленке за пять минут.
2) TeX.

Аноним Вск 12 Янв 2014 11:39:53  #53 №316880 
1389512393408.png

>>316505
Спасибо за фикс! Скрипт завершился с ошибкой после того, как получил от сайта ответом 600.
Вообще стало намного лучше - с "распределением" по проксям - раньше действительно многое улетало в error, сейчас медленнее, но качественнее.

Аноним Вск 12 Янв 2014 17:38:06  #54 №316959 

>>316450
> Откуда такие цифры
А хули бы им не быть? Я беру сто прокси, делаю сто потоков, каждый поток берет по одному прокси и в цикле берет урл, пока есть что взять, и проверяет его. На срелних прокси я со своей машины смогу выжать от трех до восьми-десяти тысяч урл в секунду это если get, head'ом может еще больше будет, наверное, но я просто не смогу столько прокси найти.

руби-кун

Аноним Вск 12 Янв 2014 19:47:31  #55 №316991 

>>316959
>от трех до восьми-десяти тысяч урл в секунду
Это что-то из разряда имиджборды на 5 тысяч постов в секунду? Локалхост запрашивать и в один поток можно.

Аноним Вск 12 Янв 2014 19:54:42  #56 №316993 

>>316454
>Откуда такие цифры?
Очень просто. Есть особая категория людей, которые любят пиздеть - называются "хайлоадщики". У них веб-сайты обрабатывают по 20000 запросов в секунду (HEAD с локалхоста), серверы на эрланге держат по 100000 соединений (при том что для решения проблемы всего 10000 потребовалось написать лучший на сегодня статик-сервер на сишке, а протокол TCP вообще говоря не поддерживает больше 65535 портов [там 16 бит под порт], из которых только ~40000 для передачи данных), и так далее. Меньше читай этих диванных кукаретиков.

!xnn2uE3AU. Вск 12 Янв 2014 20:47:18  #57 №317013 

>>316993

> а протокол TCP вообще говоря не поддерживает больше 65535 портов [там 16 бит под порт], из которых только ~40000 для передачи данных), и так далее.
На один порт можно установить сколько угодно* соединений, с разных хостов/портов.

* - с учетом ограничений ОС

Аноним Вск 12 Янв 2014 21:36:15  #58 №317040 

>>317013
Ты походу не знаешь как работает TCP/IP. У клиентских сокетов тоже есть порты, эфемерные называются. ("Клиентские" это включая и те, которые создаются через accept().) Иначе как по-твоему ОС будет определять, какой именно это клиент?

Аноним Вск 12 Янв 2014 22:22:14  #59 №317074 

Пишу скрипт, управляющий скоростью закачек uTorrent. Нужно чтобы он умел определять наличие других компьютеров в домашней сети ну и менял скорость соответственно.
Пока что использую socket.gethostbyname('PC_name') чтобы детектить свой ноут, но это решение далеко от идеала, лол.
Читал посты на Stack Overflow, но возникли трудности с установкой сторонних библиотек scrapy и netifaces. Использовать nmap по моему оверкилл.
Какие будут идеи?

Аноним Вск 12 Янв 2014 22:52:55  #60 №317089 

>>315895
>Поскольку из бэкапов восстановили треды аж прошлого лета
Вклинюсь вопросом - что здесь случилось? Чем вайпнули?

Аноним Вск 12 Янв 2014 23:09:51  #61 №317095 

>>316991
Ну давай разберем по пунктам все тобою написанное)) кстати, поясните, откуда это? Так, я не понимаю. Что тебе не нравится? Каждый прокси получит новый запрос не ранее, чем отдаст мне результат. Где и что я упустил?

Аноним Вск 12 Янв 2014 23:11:58  #62 №317096 

Пайкютинист в треде.

Задавайте свои вопросы.

дилетант Пнд 13 Янв 2014 00:00:13  #63 №317125 

>>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 секунд, что-бы прокси не дохли слишком быстро. Бесполезных потоков с асинхронной очередью наплодить не проблема, но может я что не понял - поясни пожалуйста.

дилетант Пнд 13 Янв 2014 00:32:14  #64 №317140 

>>317074
>Какие будут идеи?

if peer_ip[:-some_number] in ip_subnet_masks:
home_network_peers.append(peer_ip)

РЕКВЕСТ № 2 Пнд 13 Янв 2014 20:56:43  #65 №317431 

РЕКВЕСТ № 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 и так далее. Фактически до бесконечности, пока я не остановлю скрипт.

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

РЕКВЕСТ № 2 Пнд 13 Янв 2014 21:02:20  #66 №317434 

>>317431
А, вспомнил почему, лучше асинхронно, в один поток: со временем, этот пул полученных url будет раздуваться до больших размеров, т.к. разные адреса будут тупить и подолгу отвечать. А создавать кучу потоков - как-то нецелесообразно под это дело....

Аноним Пнд 13 Янв 2014 21:49:37  #67 №317446 

>>317431
http://scrapy.org/

Аноним Пнд 13 Янв 2014 22:05:58  #68 №317450 

>>317431
>>317434
Честное слово, я нихуя не понимаю, что может помешать создать определенное количество потоков, дать им общий пул и не злить Вселенную.

РЕКВЕСТ № 2 Пнд 13 Янв 2014 22:14:36  #69 №317452 

>>317446
Оч. мощная штука, хотелось бы конечно, чего-нибудь попроще в настройке. Но спасибо!

>>317450
Ну я не спецпоэтому и здесь. Просто мне кажется, что если собрался, допустим, пул из 100 000 url, то проще закидывать их в один поток хрен знает, когда они там ещё ответят. Потоки - это всегда ожидание, зависли несколько хостов - ждёёём. Надеюсь, я понятно излагаю свою точку зрения.

>>317431-кун

sageАноним Пнд 13 Янв 2014 22:58:14  #70 №317470 
1389639494287.jpg

>>317452
>Надеюсь, я понятно излагаю свою точку зрения.
Более чем.

Аноним Пнд 13 Янв 2014 23:30:43  #71 №317484 

>>315895
Братишка, таки нашел время сверстать свое говно.
Вообще что бы обойти лок днс серверов юзай google dns, им почти похуй.
Скорость збс.
За стабильность не особо ручаюсь но вроде как окэ, если уж тебе още надо прокси то могу пожже прикрутить, пока потести это гуано
http://pastebin.com/f4bFERM8

Аноним Пнд 13 Янв 2014 23:49:21  #72 №317494 

>>317140
Поясни, пожалуйста, как это должно работать?
Еще раз: задача в том, чтобы просканировать локальную сеть и определить, есть ли в ней еще компы, кроме того на котором работает скрипт. Ось - вин 7.
Я совсем нуб в сетях. Все эти сокеты и пиры вызывают у меня недоумение.

Аноним Пнд 13 Янв 2014 23:57:19  #73 №317498 

>>317484
Самофикс 13-ой строки
url = url.replace("http://", "").strip().lower()
О переносах не забудь, окда?

РЕКВЕСТ № 2 Втр 14 Янв 2014 00:03:16  #74 №317501 

>>317498
Добра тебе!

ОП

Аноним Втр 14 Янв 2014 00:27:09  #75 №317516 

Давай немножко оптимизируем дабы не дёргать ЦПУ на подсчёт общего колво годных урлов
http://pastebin.com/sCtdMSxu
Говнокод разрастается и набухает!

Аноним Втр 14 Янв 2014 02:24:06  #76 №317581 

>>317516
Я бы выебал кочергой за такой код.

sageАноним Втр 14 Янв 2014 02:39:13  #77 №317585 

>>317581
U make me sad(

Аноним Втр 14 Янв 2014 09:34:52  #78 №317621 

>>317452
> Ну я не спец
Ну так не давай советы, лол. Асинки — не поверишь — не в одном потоке работают, а в данном случае их использовать настолько же удобно будет, как микроскоп для выдавливания прыщей. На заднице. Какие-то вы странные, блядь: у одного 4 запроса в секунду через сотню прокси, у другого миллионы урл в один поток, лол.

Аноним Втр 14 Янв 2014 09:39:53  #79 №317622 

>>317516
Я опять не читаю код и не знаю точно, что ты имеешь в виду, но хочу на всякий случай напомнить, что длина массивов в 2014 пересчитывается при изменении количества элементов этого массива, а не при необходимости получить ее, то есть получение длины — это, пожалуй, самая дешевая операция, которую вообще можно проделать с массивом.

Аноним Втр 14 Янв 2014 12:23:30  #80 №317635 

>>317622
Почесть яйца тоже дешевая операция, но мы почему-то не делает этого при каждом вдохе?

Аноним Втр 14 Янв 2014 12:43:29  #81 №317643 

>>317635
Cмотря чем чесать.

Аноним Втр 14 Янв 2014 13:08:09  #82 №317645 

>>317635
Ну ты сравнил. Получить инт из структурки - микросекунда для одного из 2-4-8-дохуя ядер. Почесать яйца - секунд 5 для одной из всего 2 рук. В IO-bound программе экономить на вычислениях - одна из самых тупых и бесполезных оптимизаций.

Аноним Втр 14 Янв 2014 13:11:35  #83 №317646 

>>317635
И да, лучше бы хуйню типа "res.find" и "req +=" оптимизировал. Конкатенировать строки как раз медленно, а код ответа всегда находится сразу же после версии хттп и пробела.

Аноним Втр 14 Янв 2014 14:10:25  #84 №317666 

>>317646
Квох квох, кудах!
А что если я тебе скажу, что мы тем самым убрали ненужный многократный вызов функции и запихнули это всё в главный поток?
И да, уж если ты почал кукарекать о экономии на спичках то должен тебя огорчить: соеденение строк через + работает не на много медленней если бы всё это запихнуть в массив, а список, а дальше join или писать всё вместе.
И да, бывают весьма ёбнутые сервера, и разницы что ты разобъешь по пробелам или find'ом 0

дилетант Втр 14 Янв 2014 14:43:20  #85 №317678 
1389696200298.png

>>317516
>Давай немножко оптимизируем
1. PEP8.
2. А я полагал, что python это скорее про читабельность и скорость разработки, чем про ресурсы.
3. Вижу у тебя идет обработка только для status_code 200, 301 и 302, а с остальными что - "нинужны"?
4. DNS гугла не похуй.
>>317494
>Поясни, пожалуйста, как это должно работать?
Собираем локальные ip по заданной маске и передаем список libtorrent для изменения скорости, но к uTorrent это конечно имеет отдаленное отношение.
>Пишу скрипт, управляющий скоростью закачек uTorrent.
Опиши алгоритм того, что тебе надо. Чем IPFilter не устраивает?
>>317621
>у одного 4 запроса в секунду
Не запроса конечно, а среднее время проверки урлов в секунду. Согласен, результаты плохие. Какие будут предложения? Уменьшить число проверок прокси? Проверять их не блокиря проверку url-ов но как решить проблему с DNS?

Аноним Втр 14 Янв 2014 15:03:50  #86 №317689 

>>317666
>Квох квох, кудах!
Чего раскудахтался?
>убрали ненужный многократный вызов функции
Охуеть, аж целый вызов функции, как же мы раньше жили. Жаль, что сеть по-прежнему медленная.
>соеденение строк через + работает не на много медленнней
Скажи это разработчикам гвидона. Я лишь сказал одну из рекомендаций с их вики.
>бывают весьма ебнутые сервера
Ответы от таких обрабатывать не надо, они невалидные даже если там есть 200.
>разницы что ты разобъешь по пробелами или find'ом 0
code = int(res[9:12])

Аноним Втр 14 Янв 2014 15:08:30  #87 №317696 

>>317516
> Скажи это разработчикам гвидона. Я лишь сказал одну из рекомендаций с их вики.
В CPython давно оптимизировано, в PyPy не, насколько я помню.

РЕКВЕСТ № 2 Втр 14 Янв 2014 15:18:45  #88 №317698 

>>317621
> Ну так не давай советы, лол. Асинки — не поверишь — не в одном потоке работают, а в данном случае их использовать настолько же удобно будет, как микроскоп для выдавливания прыщей.

Ок, напиши, тогда на тредах, пожалуйста.

Аноним Втр 14 Янв 2014 19:12:19  #89 №317798 

>>317698
http://pastebin.ubuntu.com/6750887/

good — файлик со свежеотсеянными годными прокси в формате ip:port.

Больше годных прокси — больше скорость. Стандартный HTTP-клиент писали пидарасы, поэтому взял Typhoeus. Даже если их квик-методы каждый раз создают новые реквесты, то они все равно кешируются и никакого проеба скорости не должно быть.

РЕКВЕСТ № 2 Втр 14 Янв 2014 19:58:18  #90 №317824 

>>317798
Это же прокси-чекер…

Аноним Втр 14 Янв 2014 20:36:23  #91 №317843 

>>317824
Нет, это чекер тех сайтов. Если тебе нужен паук, то тут тебе никто его не напишет, потому что их овер девять как и один уже в тред кинули.

РЕКВЕСТ № 2 Втр 14 Янв 2014 22:19:37  #92 №317886 

>>317843
Если бы я мог в python, я бы, конечно же, настроил scrapy. По умолчанию он регулируется allowed_domains = ["..."], то есть фиксированное количество доменов. А мне нужно бесконечное.

Поэтому я и обратился за помощью сюда.

Аноним Срд 15 Янв 2014 00:11:31  #93 №317921 

>>317666
>соеденение строк через + работает не на много медленней если бы всё это запихнуть в массив, а список, а дальше join
Ну да, всего-то в двадцать раз на 2.х.

дилетант Срд 15 Янв 2014 00:14:30  #94 №317923 

>>317886
>Поэтому я и обратился за помощью сюда.
Нет, ты обратился сюда потому что ленивый. Тебе лень читать Лутца, документацию и разбираться самостоятельно. Все все понимают, не беспокойся. Ну напишу я тебе травиального паука - дальше, дай угадаю, реквест на спамилку? Хотя посмотрим, если будет время, я еще с DNS и курлом не разобрался.
И да, не так уж хорош этот scrapy, достаточно будет lxml.

Аноним Срд 15 Янв 2014 09:41:16  #95 №317975 

>>317678
>Собираем локальные ip по заданной маске
Вот мне именно это и надо. С помощью какой библиотеки это реализовать в винде? у тебя же в коде только имена переменных, блджад!

Аноним Срд 15 Янв 2014 12:44:30  #96 №318002 

>>317921
С какого ж потолка такие цыфры?

Аноним Срд 15 Янв 2014 14:06:24  #97 №318011 
1389780384821.png

>>317494
Попробуй так. https://gist.github.com/pyos/26a8ef646f5123f4b607 (Запускать надо от админа, виросов там нет, есть ICMP-запросы.)

Аноним Срд 15 Янв 2014 14:32:26  #98 №318025 

>>318011
Ты работаешь? Я помню, тебя в гугол на собеседование приглашали.

Аноним Срд 15 Янв 2014 14:40:03  #99 №318029 

>>317921
Это пиздежь.

Аноним Срд 15 Янв 2014 14:42:03  #100 №318031 

>>318025
11 класс еще школьник.

Аноним Срд 15 Янв 2014 18:26:59  #101 №318090 

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

*зайти в контакт, проверить лс, если что - выдать соответствующее сообщение.
*посмотреть, были ли обновления на sitename.ext

Какие технологии для этого должны быть в обойме? Сам почти полный ноль, как вы уже догадались.

Аноним Срд 15 Янв 2014 18:29:17  #102 №318092 

>>318090
> зайти в контакт, проверить лс, если что - выдать соответствующее сообщение
И на следующей строке вывести «Hello World!».

> посмотреть, были ли обновления на sitename.ext
Точнее.

Аноним Срд 15 Янв 2014 18:32:03  #103 №318095 

>>318092
Если бы я мог точнее, я б пошел в гугл. Анончик, разве хотя бы первого примера недостаточно?

Аноним Срд 15 Янв 2014 19:29:30  #104 №318109 

>>318095
1. Я бы сразу пошел на гитхаб искать готовые реализации API для VK, и, скажу я тебе с большой вероятностью не спиздеть, к самым годным таким библиотекам тут же на гитхабе была бы документация с примерами и прочим. Но зачем мне, я ведь хочу нажать кнопку и шоб заебись было, да?
2. Вы заебали уже называть абсолютно абстрактные задачи, решения которых колеблются в диапазоне от банальных до ебически сложных, словно муравьиный хуй в пизде жирафихи. Ты понимаешь, что можно RSS прочитать, а можно дампить какую-то часть сайта и ебаться с разными штуками вроде If-Modified-Since, учитывая случаи, если сервер ебал в рот твои заголовки, а?

Аноним Срд 15 Янв 2014 19:36:53  #105 №318110 

>>318109
Спасибо, анон, но насчет "кнопку нажать и заебись" ты несколько ощибаешься, мне не надо готовых решений, я хочу именно разобраться. Понятия не имею только, с чего начать. Поэтому начну с ковыряния в чужом коде с гитхаб, спасибо еще раз

>Ты понимаешь, что можно RSS прочитать, а можно дампить какую-то часть сайта и ебаться с разными штуками вроде If-Modified-Since, учитывая случаи, если сервер ебал в рот твои заголовки, а?
В том-то и дело, что не понимаю.Но хуй знает, зачем я отвечаю на этот вопрос еще раз.

Аноним Срд 15 Янв 2014 23:07:19  #106 №318174 

>>318090
вк.комэ/dev/methods

http://docs.python.org/2/library/json.html
http://docs.python.org/2/library/socket.html
http://docs.python.org/2/library/urllib2.html

Аноним Чтв 16 Янв 2014 03:54:01  #107 №318234 
1389830041435.png

>>318002
>>318029
Такие дела. После первого цикла, похоже, запускается сборщик мусора и портит всю малину, а ещё, я, кажется, считаю время вывода тоже, ололо, но суть ясна, я думаю.
>python 2.7.6 (default, Nov 10 2013, 19:24:18)

Аноним Чтв 16 Янв 2014 06:34:55  #108 №318244 

>>318234
Что за шрифт в ИДЕ?

Аноним Чтв 16 Янв 2014 11:42:24  #109 №318282 

>>318244
monofur

Аноним Чтв 16 Янв 2014 13:45:22  #110 №318307 
1389865522258.png

>>318234
А на вывод не пробовал строку дать? Почитай о том как работает пистон.
И да, через питонный модуль time - это маразм

Аноним Чтв 16 Янв 2014 13:54:15  #111 №318310 
1389866055957.png

>>318234
Похоже у тебя пистон сломан

Аноним Чтв 16 Янв 2014 16:04:18  #112 №318365 
1389873858652.png

>>318307
>Почитай о том как работает пистон.
А чего тут читать-то, на магии он работает. Хотел замерить скорость сложения строк, а получил сигсегв.

Аноним Чтв 16 Янв 2014 16:14:00  #113 №318368 

Сделайте кроссплатформенный аудиоплеер, с поддержкой сторонних плагинов и скинов.

Аноним Чтв 16 Янв 2014 16:25:03  #114 №318373 
1389875103307.png

>>318365
Еще один пример охуительной магии. Походу оптимизация += на строках в гвидоне заключается в проверке, больше ли рефкаунт этой строки чем 1, и если нет, то "иммутабельный" объект таки мутирует.

Аноним Чтв 16 Янв 2014 17:33:23  #115 №318414 

>>318373
>>318365
Да у тебя же эрланг головного мозга

Аноним Чтв 16 Янв 2014 18:43:59  #116 №318433 

Котоны, напишите мне, практического паука, пожалуйста лучше, чем заниматься своей экспериментальной магией.

>>317431-кун

Аноним Чтв 16 Янв 2014 20:54:20  #117 №318463 

>>318433
Нет.

Аноним Птн 17 Янв 2014 02:58:17  #118 №318603 

Ох, лол, ЯВНОЕ ЛУДШЕ НИЯВНОВО ПОНЯТНОЕ ЛУДШЕ ВСИГДА, а в результате обсёры прямо на уровне плюсов.

Аноним Птн 17 Янв 2014 06:46:02  #119 №318621 

Мне нужны гуи с веб-браузером, что посоветуете?

Аноним Птн 17 Янв 2014 09:18:38  #120 №318631 

>>318621
Кутэ 5 и гтк 3.

Аноним Птн 17 Янв 2014 10:16:56  #121 №318637 

>>318621
pyside

Аноним Птн 17 Янв 2014 10:20:55  #122 №318638 

>>318368
Это не шутка, кстати. Хочется плеер к которому можно было бы писать расширения на python и в случае чего поправить исходники самого плеера.

Аноним Птн 17 Янв 2014 10:45:06  #123 №318641 

>>318638
Если ты не можешь написать плеер, какие расширения и модификации ты собрался делать? Музычку через гуй запустить - дело 30 строк на qt с phonon.

Аноним Птн 17 Янв 2014 17:33:51  #124 №318736 

>>318641
Лол, значит тот, кто сделал плагин/скин к винампу способен сделать винамп? Охуенная логика

Аноним Птн 17 Янв 2014 18:55:46  #125 №318755 

>>318736
Ты серьезно думаешь что, например, сделать нормальную имитацию 5.1, да еще и в пределах ограничений АПИ для расширений, гораздо проще, чем взять класс AudioPlayer и сказать ему "play('C:\music.mp3')"? На Qt даже видеоплеер это из разряда "примеры для документации". http://qt-project.org/doc/qt-5.0/qtmultimedia/multimediawidgets-player.html

дилетант Птн 17 Янв 2014 21:04:52  #126 №318800 

>>317431
Тестируй: http://ideone.com/8UCZ2w

Аноним Суб 18 Янв 2014 11:08:11  #127 №318981 

Ну охуеть вообще. "\9" - вы думаете, это ТАБ? Нет, это не таб. Может быть, это invalid escape sequence? Нет, это не invalid escape sequence. Что же это? Это строка из двух символов. И всё бы ничего, вот только "\0" - это valid escape sequence и означает нулевой символ. Один. У меня, блядь, слов нет.

Аноним Суб 18 Янв 2014 11:42:51  #128 №318989 

>>318981
Во всем мире так, AFAIK.

Аноним Суб 18 Янв 2014 12:05:11  #129 №318994 

>>318989
В сисечке варнинг, и строка, состоящая из одного символа. В нормальных языках "invalid escape sequence", и ошибка компиляции. Питон молча творит хуйню.

питононьюфаг Суб 18 Янв 2014 19:36:28  #130 №319087 

Сразу предупреждаю, я сижу под шиндоус, не бейте больно, лучше обоссыте.

У меня есть пара вопросов.
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
Как сделать чтобы не было такого говна?

sageАноним Суб 18 Янв 2014 20:26:17  #131 №319099 

>>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

Даже в линупсах.
>Есть одна строка:
Додумался же для пистона юзать говноэклипс

питононьюфаг Суб 18 Янв 2014 20:42:34  #132 №319101 

>>319099
>Додумался же для пистона юзать говноэклипс КОКОКО
А что еще использовать? Любимый прыщеёбами вим? Нотпад++?
Эклипс вполне годная вещь.

sageАноним Суб 18 Янв 2014 21:04:25  #133 №319102 

>>319101
Geany
Sublime
Vim

питононьюфаг Суб 18 Янв 2014 21:54:01  #134 №319116 

>>319102
>Vim
Можешь не продолжать. Вот за такое говноедство я не люблю прыщеблядей.

sageАноним Суб 18 Янв 2014 22:02:15  #135 №319117 
1390068135937.jpg

>>319116
>Вот за такое говноедство
>Использует эклипс
>Называет других говноедами

Аноним Суб 18 Янв 2014 22:06:32  #136 №319118 

>>319116
> Пишет на питоне под спермой в эклипсе и называет пользователей лучшего текстового редактора говноедами.
Слишком толсто, съеби.

Аноним Суб 18 Янв 2014 22:53:48  #137 №319135 
1390071228003.jpg

>>319118>>319117>>319102

дилетант Суб 18 Янв 2014 23:22:03  #138 №319144 

>>319087
>Короче, не работает. Как правильно установить?
Как все сложно, и установочный экзешник от разработчика не работает?
http://www.pythonware.com/products/pil/
>Как сделать чтобы не было такого говна?
Notepad и консоль.

питононьюфаг Вск 19 Янв 2014 00:09:53  #139 №319151 
1390075793770.jpg

>>319144
Нотпад это заебись, пока что-то мелкое надо писать. А когда количество кода в проекте переваливает за 50Кб, нужно что-то посерьезнее.
Я более чем положительно отношусь к прыщам, но у меня бомбит от адептов. Чем дождаться помощи от прыщеблядей, легче проебать кучу времени и разобраться самому. Если ты что-нибудь спрашиваешь у прыщебляди, он ответит так, чтобы показать какой он охуенный, и какой я говнарь. И ни разу, чтобы помочь.
- Как сделать что-то в такой-то софтине?
КОКОКОКО ТВОЯ СОФТИНА ГОВНО ИСПОЛЬЗУЙ <прыщеговно-нейм>
Как установить то-то и то-то?
КОКОКОКУДАХ РТФМ

Нахуй так жить-то? Почему большинство прыщеблядей - обиженные на жизнь мудаки, которые таким образом пытаются самоутвердиться.
Поэтому я сижу под спермеркой.
я кончил.

sageАноним Вск 19 Янв 2014 00:42:19  #140 №319155 

>>319151
Что мешает зафорсить sublime или geany и не страдать на говнософте написаном на джабе?
Нахуя вообще обросшие говном IDE для скриптовых языков? У вас же на код уделяется 30% места, всё остальное засрано какими-то окошечками-хуёшичками.
Вообще используй Sublime + Anaconda
И ошибки сразу выдаст и автокомплит полный Читает все импортируемые и подключеные либы

дилетант Вск 19 Янв 2014 02:56:02  #141 №319173 
1390085762208.jpg

>>319151
>Нахуй так жить-то? Почему большинство прыщеблядей - обиженные на жизнь мудаки, которые таким образом пытаются самоутвердиться. Поэтому я сижу под спермеркой.
Нифига себе у тебя бомбануло. PIL не может поставить и 50k проект у него. Охуительные истории. Какой ответ ты ожидал на вопрос в стиле "у меня там кнопочка не так нажимается как же это"?
А в общем ты няшка, не обижайся, это интернеты.

Вот то, что никто в треде не хочет code review отписать - это печально, экспертов полон вагон, а ведь это один из способов обучения.

sageАноним Вск 19 Янв 2014 03:16:20  #142 №319177 

>>319151
>А когда количество кода в проекте переваливает за 50Кб, нужно что-то посерьезнее.
Конечно, для этого нужна иде для Java. Чтобы разрабатывать на питоне. Особенно смешно твое утверждение выглядит если учесть, что в питоне куча возможностей для метапрограммирования - даже список классов получить чистым анализом исходного кода может быть проблемно.
>Чем дождаться помощи от прыщеблядей, легче проебать кучу времени и разобраться самому. Если ты что-нибудь спрашиваешь у прыщебляди, он ответит так, чтобы показать какой он охуенный, и какой я говнарь. И ни разу, чтобы помочь.
Если твоя идея по определению говно, какой помощью с ее реализацией ты хочешь? Скорее всего эклипс просто сканирует исходный код - а значит он просто слишком тупой, чтобы проводить статический анализ кода на динамическом языке.

Аноним Вск 19 Янв 2014 03:23:54  #143 №319181 

>>319151
>А когда количество кода в проекте переваливает за 50Кб, нужно что-то посерьезнее.

$ du -cha --apparent-size {addon,core,.} | tail -n1
67K total

Пишу в гедите, все норм. Сегодня вот 1100 строк отрефакторил. (Еще регекспов для подсветки в текстмейте/саблайме/гедите на 10 кб есть, тут не учтены.) Мне кажется, у тебя просто жаба из эклипса в мозг перебралась и выела его.

Кстати, цените новый сайт. http://pyos.github.io/dg/
Аноним Вск 19 Янв 2014 03:31:31  #144 №319184 

>>319181
>Кстати, цените новый сайт. http://pyos.github.io/dg/
Что за говно?

Аноним Вск 19 Янв 2014 03:35:58  #145 №319186 

>>319184
нюфак в треде

sageАноним Вск 19 Янв 2014 04:28:33  #146 №319193 

>>319177
> в питоне куча возможностей для метапрограммирования

Люто проиграл.

Аноним Вск 19 Янв 2014 04:37:03  #147 №319195 

>>319193
Рубиблядь, иди узнай, что такое метапрограммирование. Нет, это не возможность написать "describe 'it should suck dicks' do do end do do do end end end" вместо простого комментария над куском кода. Вон выше ссылка есть - код на гвидоне генерирует байткод для вм гвидона. Это метапрограммирование.

питононьюфаг Вск 19 Янв 2014 13:14:37  #148 №319238 

>>319173
>Нифига себе у тебя бомбануло
Еще как.
>PIL не может поставить и 50k проект у него.
Удивительное рядом.
>Какой ответ ты ожидал
В общем-то я ожидал ответа в стиле, "скачай исходники там-то, положи их в такую-то папку (python27/Lib/ например), или найди setup.py и запусти". Изначально я примерно такого ответа ожидал, и разве я неправильно для этого вопрос задал?

Проблему с Пилом я решил. Вместо import Image надо было написать from PIL import Image, хотя на вики был приведен именно первый вариантможете не проверять, я там уже сделал правку. Нахуя на вики был нерабочий код? Или может это особенности различия спермы и прыщей, что у одних можно без фрома писать, а у других нельзя. Или различия питонов, я работаю под 2.7.

>>319177
Я не отрицаю, что моя идея может оказаться говном, но когда мне вместо моего говна советуют еще большее говно, у меня бомбит. Вместо эклипса советовать вим. Это лол. Еще гедит посоветуй. Вим придуман отнюдь не для того, чтобы им пользоваться им, как основным инструментом разработки, у него другие задачи и для них он годится хорошо.

sageАноним Вск 19 Янв 2014 13:26:51  #149 №319241 

>>319238
>не для того, чтобы им пользоваться им, как основным инструментом разработки
Ты это столману скажи, спермошлюшка
> советуют еще большее говно
Да ты же только слово vim увидел и у тебя пердак разбомбило так, что ты забыл о предыдущих предложенных вариантах

Аноним Вск 19 Янв 2014 13:42:49  #150 №319242 
[url]

>>319241
>Ты это столману скажи, спермошлюшка

Аноним Вск 19 Янв 2014 14:24:04  #151 №319246 

>>319195
> метапрограммирование
Способность программ писать программы.
>код на гвидоне генерирует байткод для вм гвидона
ахаха проиграл с тебя, любой питон код генерирует байткод для вм гвидона. А раби для раби вм, я понимаю это неожиданный поворот для такого тупого как ты, но всё же

Так что чухалики разбежались по уголкам пока я здесь.
Раби > питон, уже сто раз доказано, только в самых отдалённых жопах мира это не знают. тушите анусы псы.

Аноним Вск 19 Янв 2014 14:38:28  #152 №319251 

>>319246
>Моча > говно, уже сто раз доказано, только в самых отдалённых жопах мира это не знают. тушите анусы псы.

Не смотря на то, что схемка и смолток делают остальные скрипты совершено ненужными, массы динамических петушков выбирают ПЫХОПЛЕЯДУ (Perl, PHP, Python, Ruby). ПЫХОПЛЕЯДА - это высеры ГСМ-ов и неграмотных долбоебов, которые проделали большую работу изобретя колесо (квадратное) - чукча не читатель, блеать. Пыхоплеяда состоит из протопыха (слишком переподвыподвывернут для петушков, известно, что новейшую версию первоначально удалось реализовать только на хаскеле), пыха - классика гостевушного жанра, гвидопыха и джапопыха. При этом, если гвидопых отличается от пыха только ЧСВ гвидопыхеров, упивающихся своей невъебенной илитностью, и наличием у хуесосов харизматичного фюрерка, то джапопых действительно несколько более продвинут, и в мокрых фантазиях джапопыхеров является смолтоком. Знатоки пыхоплеяды лепят гостевухи за доширак и заправляют картриджи.

Аноним Вск 19 Янв 2014 14:49:37  #153 №319253 

>>319251
Ну давай ты без пасты, а то своих мозгов нету, так ты пасточку с лурочки по всему зк постишь, не стыдно? уёбок хуев

Аноним Вск 19 Янв 2014 14:54:41  #154 №319255 

>>319253
Попрыгай еще батхёртик.

Аноним Вск 19 Янв 2014 14:55:07  #155 №319256 

>>319246
>ахаха проиграл с тебя, любой питон код генерирует байткод для вм гвидона. А раби для раби вм
пиздец ты тупой)))) в раби байткод генерирует компилятор а не код, дебилушка) предел метапрограммирования там - это название книги metaprogramming ruby, которую ты даже не читал 100%. небось еще и парашу типа rspec называешь dsl, хотя это и не язык вообще нихуя а набор функций, dsl это штуки вроде toml и papyrus.
>Раби > питон, уже сто раз доказано
британскими учеными доказано?)))) руби настолько парашный, что без рельсов даже юникод нормально не поддерживает, хоть его узкоглазый автор и говорит на недоязыке из ебеней basic multilingual plane)))))00 в гнидоне 3 и то уже пять лет как юникод нормальный есть.

Аноним Вск 19 Янв 2014 14:55:40  #156 №319257 

>>319255
Обосрался @ Сказал что батхёртик. ска пздц

Аноним Вск 19 Янв 2014 14:58:48  #157 №319259 

>>319256
>в раби байткод генерирует компилятор а не код, дебилушка)
А в питоне кто? Гвидо лично?

>предел метапрограммирования там - это название книги metaprogramming ruby, которую ты даже не читал 100%
Как будто надо её читать. Да, кстати предел метапрограммирования в питоне, ой я ошибся в питонопараше нету метапрограммирования, а есть костыли.

>британскими учеными доказано?
Какая разница.

>руби настолько парашный, что без рельсов даже юникод нормально не поддерживает
Поддерживает как бы, но ты тупой чтобы это знать.

>гнидоне 3 и то уже пять лет как юникод нормальный есть.
А сейчас ты такой нам по хардкору поясняешься что такое нормальный юникод.

Аноним Вск 19 Янв 2014 15:06:37  #158 №319260 

>>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
Что еще спизданешь, мудло?

Нет, даже так отсосал.
>А сейчас ты такой нам по хардкору поясняешься что такое нормальный юникод.
Как минимум что строки считаются последовательностью символов, а не байтами в какой-либо кодировке, а методы вроде upcase/downcase успешно определяют символы из алфавитов кроме латиницы.
Аноним Вск 19 Янв 2014 15:07:40  #159 №319261 

>>319260
>Сравни http://ideone.com/YeLgqv с http://ideone.com/uLpMxF
sfx

Аноним Вск 19 Янв 2014 15:52:38  #160 №319271 

>>319260
>>319261
>Ясно-понятно. Название увидел, мысленно подставил "=" между словами, и побежал кукарекать какой руби охуенный.
Ну ты и ванга, может гаданием занимаешься, м?

>Ну да, создание классов на лету, генерация байткода в рантайме, манки-патчинг объектов, хуки для import - это не метапрограммирование.
Угадал это не метапрограммирование, это кал отстойный.

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

> ruby -v
ruby 2.0.0p353
Ой держите поехавшего, если очень надо есть гемы для патчинга этого мелкого бага. А знаешь почему никто это не патчит, потому что питонопараша это замена пердлу и прочим обработчикам строк, а руби это отдельный язык на котором пишут промышленный код вместо того чтобы ебаться со строчками как это принято в питонопараше. Но ты этого не оценишь, потому что слишком тупой для того чтобы тебя взяли куда-нибудь. Также гвидопараша это язык одного лидера, то есть развитие только CPython, остальные платформы сосут по дефолту. В руби есть и jRuby и такие корпорации как Оракл пишут свои бакэнды к руби. В то время как питон даже дебагера не имеет нормального.
Каждый дибил уже кукарекает про строки в руби.


MySimpleSet() | set() #ok
set() | MySimpleSet() #otsos

Вся суть гвидона, у нас работают сроки, а остальное подождёт.
Аноним Вск 19 Янв 2014 16:00:49  #161 №319272 

>>319260
Насчет строк
https://stackoverflow.com/questions/4418196/ruby-unicode-question

мимокрок

Аноним Вск 19 Янв 2014 16:27:41  #162 №319274 

>>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

Но ты ведь сейчас скажешь "ко-ко-ко так нечестно, это метапрограммирование, так нельзя, руби так не может". Что с тебя взять.
>Ой держите поехавшего, если очень надо можнозделать скачай костыль
В лиспе тоже много чего было можнозделать, и где он теперь.
>А знаешь почему никто это не патчит,
Потому что матц НЕ ОСИЛИЛ. Он специально в 1.9 оставил upcase/downcase только для /[a-zA-Z]/, потому что скачать юникодную таблицу конверсии регистра и запихнуть ее в руби для него оказалось слишком сложно.
>Вся суть гвидона, у нас работают сроки, а остальное подождёт.
Что за хуйню ты высрал? Какой еще MySimpleSet?
>jRuby
>Оракл
Азаза zxc у тебя бомпа давай забань меня еще.
>>319272
>active_support
Что руби без рельсов бесполезен и так все знают.
Аноним Вск 19 Янв 2014 16:35:17  #163 №319276 

>>319274

>Уровень едва ли выше жабы.
Я даже не буду комментировать.

>import dg
>eval
Уёбывай. Просто уёбывай.

>В лиспе тоже много чего было можнозделать, и где он теперь.
Не передёргивай, в руби уже _сделано_.

>Потому что матц НЕ ОСИЛИЛ.
Как я и говорил ванга. Можешь ты там по-больше про жизнь маца расскажешь, интересно знаешь знать что делает мац.

>Что за хуйню ты высрал? Какой еще MySimpleSet?
Простой класс, который расширяет collections из питона.

>Азаза zxc у тебя бомпа давай забань меня еще.
?

>Что руби без рельсов бесполезен и так все знают.
ActiveSupport такой же гем, как и остальные.


Аноним Вск 19 Янв 2014 16:41:36  #164 №319279 

>>319276
>Уёбывай. Просто уёбывай.
А я что говорил? Как только рубиблядь увидела настоящее метапрограммирование - сразу обосралась. Это тебе не миксины прикручивать.
>Можешь ты там по-больше про жизнь маца расскажешь, интересно знаешь знать что делает мац.
Инфа отсюда: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/26651 Прекращай хуйню писать. Ванга-хуянга.

Аноним Вск 19 Янв 2014 16:50:49  #165 №319280 

>>319279
>А я что говорил? Как только рубиблядь увидела настоящее метапрограммирование - сразу обосралась
Где метапрограммирование?
Может быть "import dg" это программирование?

>Прекращай хуйню писать
Только, когда ты закончишь.

Аноним Вск 19 Янв 2014 16:53:33  #166 №319282 

>>319280
>Где метапрограммирование?
dg в рантайме генерирует байткод для десятистрочной лямбды. Покажи-ка мне пример твоего метапрограммирования чтоли.

Аноним Вск 19 Янв 2014 17:17:48  #167 №319288 

>>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



Сам поймёшь что делает? Нужно ли пояснение.
Аноним Вск 19 Янв 2014 17:32:05  #168 №319291 

>>319288
Функция, создающая property - вершина рубиметапрограммирования? Дново. http://ideone.com/d8mar9

Аноним Вск 19 Янв 2014 17:34:12  #169 №319292 
1390138452638.png

Совсем соскучились, братья рубисты с питонистами друг на друга кидаются.

Подскажите, на что умножать-поделить точку, чтобы можно было скейлить их таким образом, как на картинке. Значение 0.5 - координата точки (пусть это будет флоат от 0 до 1, скажем) не трогается. Значение 1 - точка лежит на потолке. 0 - легла на пол. 0,9 - приблизилась к потолку, 0.1 - почти внизу.

Аноним Вск 19 Янв 2014 17:39:08  #170 №319294 

>>319291
М, как бы ты сказал показать метапрограммирование, это ясно не вершина. Да и что может быть вершиной в метапрограммировании? Это понятие, здесь не может быть вершин. Так что прошу не вилять жопой.

Я уже убедился, прочитав этот тред, что питон ничего не может без либы "dg". Так что это такой же костыль для питона, как и рельсовые расширения для руби. Только хуже. Потому что подключив гемы из рельс, я продолжаю писать код на руби. Подключив "dg" мне, насколько я понял, нужно писать в eval, что нонсенс, или писать на самом dg, в какой он стадии развития, я не знаю, но ненашёл ничего, чтобы говорило о текущей версии, поэтому баловаться конечно можно, но в продакшн с такой либой не пропустят.

В общем уже все убедились, что питон не может в метапрограммирование.

Аноним Вск 19 Янв 2014 17:45:03  #171 №319296 

>>319294
Давай конкретику. Покажи "метапрогаммирование" на раби, которое не возможно на питоне.
И твои пассажи про многострочные лямбды это полная хуйня, потому что лямбда - это синтаксический сахарок, а вот множественное наследование, которого нет в раби, - нет.

Аноним Вск 19 Янв 2014 17:49:45  #172 №319297 

>>319292
Пусть v - координата точки, z - вот это число. Тогда результат x = (1 - 2|z - 0.5|)v + max(2z - 1, 0)

sageАноним Вск 19 Янв 2014 17:52:21  #173 №319299 

>>319296
>>319294
Нахуя вам вообще блять сраное метапрограммирование? Пердолики ёбаные

Аноним Вск 19 Янв 2014 17:54:53  #174 №319300 

>>319296
К своей радости и к твоему сожелению я не знаю питона. Но давай начнём с простого:


class A
#в руби есть класс Hash
class Hash
def foo ; 1 ; end
end
Hash.new.foo # => 1


>множественное наследование, которого нет в раби
Я могу сделать вывод, что ты любишь множественное наследование, так?
Аноним Вск 19 Янв 2014 17:55:28  #175 №319301 

>>319294
>ничего не может без либы "dg"
>только что показали код на чистом питоне
Слив засчитан. Конкретно многострочную лямбду гвидон не может исключительно из-за ограничений грамматики языка - аст требует Expression, а не Statement. Возможности рантайма в обоих языках одинаковые, потому что вм одна и та же. Многострочные лямбды ее байткод, кстати, поддерживает.

Аноним Вск 19 Янв 2014 17:56:31  #176 №319304 

>>319300
>class A
У тебя syntax error.

class Yoba: pass
Yoba.foo = lambda self: 1
Аноним Вск 19 Янв 2014 17:57:16  #177 №319305 

>>319300
> К своей радости и к твоему сожелению я не знаю питона. Но давай начнём с простого:
А с каких хуев ты делаешь вывод,
> что питон не может в метапрограммирование.
?

Аноним Вск 19 Янв 2014 17:59:40  #178 №319306 

>>319305
Он просто жопой виляет. Смотри как он классно себе противоречит:
>>319271
>>Ну да, создание классов на лету, генерация байткода в рантайме, манки-патчинг объектов, хуки для import - это не метапрограммирование.
>Угадал это не метапрограммирование, это кал отстойный.
Что же мы видим в >>319288 и >>319300? Манки-патчинг объектов и видим.

Аноним Вск 19 Янв 2014 18:10:44  #179 №319311 

>>319304
Копировал из репла.
>>319305
Давай я тебе дам определение что такое "знать". Это мало того что знать синтаксис и семантику, так это знать также инфраструктуру языка, подкапотную, как работает ГЦ, как работают библиотеки.
>>319306
>Манки-патчинг объектов и видим.
Манки-патчинг это и есть метапрограммирование.
>>319304
Отлично. Теперь.


class Test
def foo ; 1 ; end
def bar ; 2 ; end
private :foo
protected :bar
end

Создание приватных и протектед методов, реализовано ли это в питоне?


Аноним Вск 19 Янв 2014 18:15:14  #180 №319314 

>>318800
Не работает. Грузит первый урл и выходит. Условия прописал верно.

Аноним Вск 19 Янв 2014 18:15:22  #181 №319315 

>>319311
> приватные методы
> метопрограммирование
Все с тобой ясно, манька. Уебывай.

Аноним Вск 19 Янв 2014 18:17:41  #182 №319316 
1390141061374.jpg

Слушайте, уважаемые!
А вы не могли бы свои холиворссрачи, о том, какой язык лучше, разводить в другом тредике? Данный как бы задумывался не об этом.

ОП

Аноним Вск 19 Янв 2014 18:19:26  #183 №319317 

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


Test.instance_eval { protected :protected_method }
Аноним Вск 19 Янв 2014 18:21:14  #184 №319318 

>>319316
Добро пожаловать на 2ch.hk. За помощью пиздуй на стэковерфлоу.

Аноним Вск 19 Янв 2014 18:34:11  #185 №319322 

>>319297
Спасибо, хорошо что спросил.

Аноним Вск 19 Янв 2014 22:24:22  #186 №319452 

>>316402
>не получив бан от DNS-сервера
Пусть качает DNS-дамп интернетов. Там несколько гигабайт. Будет слегка устаревшим, зато все данные локально.

Аноним Вск 19 Янв 2014 22:35:08  #187 №319458 

>>317040
Тогда можно выделять IP-адреса, не? Получается что коннектимся, нас перебрасывает на свободный ip/порт и в итоге наш сервант держит >64k.

!xnn2uE3AU. Вск 19 Янв 2014 22:44:52  #188 №319462 

>>317040

Нет, ты. Сколько же неграмотных детей в pr, которые явно прогуливали сетевые технологии.

Сокет определяется значениями (IP сервера; порт сервера; IP клиента; порт клиента)

Допустим, первые 2 фиксированы (т.е. один процесс открыл и слшает один порт). Вопрос, сколько всего может быть уникальных сокетов и сколько соединений может принять этот сервер?

И заметь, мы еще не рассматриваем случай, когда у одной сетевой карты может быть много IP-адресов, например из IPv6.

!xnn2uE3AU. Вск 19 Янв 2014 22:52:52  #189 №319468 

>>317040

> как по-твоему ОС будет определять, какой именно это клиент?
По 4 значениям (2 Ip адреса и 2 порта), которые указаны в заголовке пакета.

Алсо, читани-ка учебник (какие знакомые картинки, я явно их раньше где-то видел), там есть примеры пакетов и никаких «эфемерных» портов там нет: http://www.soslan.ru/tcp/tcp18.html

Аноним Суб 25 Янв 2014 05:47:07  #190 №321091 

Может доброанончик и мне поможет с питоном :3 Мне нужен скрипт сервера/клиента игры "отгадай число", с меня любая помощь в области PHP, HTML, CSS, Javascript

Аноним Суб 25 Янв 2014 06:00:59  #191 №321092 

>>321091
Дополнительная информация:

1) Скрипт, клиент, который соеденяется с серваком по порту 4000, при соединении получает сообщение с сервера "какое число я загадал". С серваком может одновременно много клиентов соеденяться.

2) Сервак - принимает соединения от простого клиента и админского, простому клиенту загадывает любое число от 1-10 и пока он не отгадает будет писать "горячё или холодно" . А админский клиент при сообщении LIST выдаст список текущих соединений

Надеюсь ничего не упустил с:

Аноним Суб 25 Янв 2014 16:03:37  #192 №321158 

Есть один pyqt4. Создал я QListView и затолкал в него много-много (49) строк. Теперь, если четыре раза прокликнуть по элементам, а потом дёрнуть (вертикальный) скроллбар, то при выходе из скрипта питон падает. Кто-нибудь сталкивался?

Аноним Суб 25 Янв 2014 17:57:27  #193 №321176 

>>321158
пости свой говнокод.

Аноним Суб 25 Янв 2014 19:40:45  #194 №321190 

>>321176
Оно само пофиксилось(?) после того, как я написал забирание строк из списка. Смешно, что сам список я не трогал и других настроек не менял. На другом проекте не получилось воспроизвести.

Аноним Суб 25 Янв 2014 23:37:21  #195 №321242 

>>321092
Bump

Аноним Пнд 27 Янв 2014 10:29:33  #196 №321598 
1390804173483.png

Тут наверняка есть буратинка купивший платные курсы на сами знаете каком сайте. Реквестирую слив курсов.

Аноним Пнд 27 Янв 2014 15:16:17  #197 №321675 

>>321598
Курсы не нужны. Берешь див инто пайтон и берешь книжку по джанго или торнадо. Но джанга популярнее, а в целом на питоне ты работы не найдешь.

Аноним Срд 29 Янв 2014 14:15:47  #198 №321880 

>>321675
Кодер помнит пальцами, а не глазами, поэтому мне интересней курсы. А дайв твой я читал. А работать программистом не планирую.

Так что с чего ты взял, что лучше меня знаешь, что мне нужно? Я не просил меня наставлять.

Аноним Чтв 30 Янв 2014 11:26:40  #199 №321964 
1391066800986.png

Пролистал до 6-й страницы программач, питон треда не нашел. Надеюсь, этот тред подойдет для моего вопроса.

Накалякал свой первый недокалькулятор. Установил google app engine. Делал все по гуглогайду, используя webapp. Сначала отображается форма

<form action="/form" method="post">

с полями. При нажатии кнопки submit код отправляется обработчику form, к экземпляру класса clApply.
application = webapp.WSGIApplication(
[('/', clMainPage),
('/form', clApply)])

Когда я использую GAE у себя на компе, у меня открывается localhost:9080/form с успешно выполненым кодом, а вот после деплоя на гуглосервер я получаю пикрилейтед. Как исправить?
Аноним Чтв 30 Янв 2014 11:28:16  #200 №321965 

>>321964
Весь проект у меня состоит из двух файлов:
app.yaml
forms.py

Аноним Чтв 30 Янв 2014 12:49:47  #201 №321980 

>>321092
http://docs.python.org/release/2.5.2/lib/socket-example.html
Элементарно же!
Алсо, нахоя оно тебе надо?
Алсо2, если опять на работке буду хуи пинать тогда может напишу

Аноним Чтв 30 Янв 2014 12:57:53  #202 №321983 

>>321598
Оно же месяц назад всё бесплатное было?
И да, говно курсы

Аноним Чтв 30 Янв 2014 15:43:01  #203 №322015 

>>319462
Клиентский порт могут использовать несколько клиентов, для этого флаг есть в апи.

Аноним Птн 31 Янв 2014 00:06:24  #204 №322120 

>>321980
>>321092
>>321091
http://pastebin.com/bSzghkKR
Внутри клиент и сервер.
Говнокод ищо тот, сваяно на коленке

Аноним Птн 31 Янв 2014 10:57:56  #205 №322182 

Питонобоги, я пал на самое дно и второй раз стреляю себе в ногу в трех строчках кода.

Пишем функцию получающую на вход лист, возвращающую этот лист, из которого удалены уникальные значения.


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]) 

где 4 остается жива и здорова.
Вопрос: где теперь я стреляю себе в ногу?
Аноним Птн 31 Янв 2014 11:11:08  #206 №322186 

>>322182
>for n in range(len(lst) + 1):
n = [0: length + 1]
>lst.count(n)
Что подсчитываешь, наркоман?

http://ideone.com/M9foH4

Аноним Птн 31 Янв 2014 11:18:42  #207 №322188 

>>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]
>>>

Правда только для тех чисел, которые не больше длины массива.
Аноним Птн 31 Янв 2014 11:18:52  #208 №322189 

>>322186
>n = [0: length + 1]
Не понимат.

>Что подсчитываешь, наркоман?
"list.count(x)
Return the number of times x appears in the list."

Аноним Птн 31 Янв 2014 11:19:44  #209 №322190 

Подскажите, как сделать работать питон+джанго на своей машине? Нужен апач? Денвера будет достаточно?

Аноним Птн 31 Янв 2014 11:26:44  #210 №322192 

>>322189
У тебя n тут - счетчик по индексам массива и изменяется от 0 до его длины, что я и попытался изобразить. Потом ты зачем-то подсчитываешь сколкьо раз индекс массива (не элемент, заметь) встречается в массиве. Ну не наркоман ли?
Однострочник я уже тебе написал.

Аноним Птн 31 Янв 2014 11:28:34  #211 №322193 

>>322189
>n = [0: length + 1]
>Не понимат.
Указанный тобой диапазон

for n in range(len(lst) + 1):

начинается с нуля. Т.е. первый элемент, который проверяет твой код, это ноль.
Аноним Птн 31 Янв 2014 11:43:27  #212 №322198 
1391154207354.png

>>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])
sageАноним Птн 31 Янв 2014 12:15:04  #213 №322215 

>>322190
>Денвер
>Собрался писать на пистоне под виндой
Гоните говноеда!
Тебе будет достаточно и встроеного сервера

Аноним Птн 31 Янв 2014 12:23:47  #214 №322224 

>>322215
>встроеного сервера
Что это?

Аноним Птн 31 Янв 2014 12:28:07  #215 №322228 

>>322182
>>322198
def foo (lst):
st = " ".join(["%s" % v for v in lst])
out = []
for i in lst:
if st.count(str(i)) > 1:
out.append(i)
return out
print foo([10,9,10,10,9,8])

Вроде как работает

Аноним Птн 31 Янв 2014 12:31:11  #216 №322230 

>>322228
Бля, табуляция проебалась, не могу в тег code
http://pastebin.com/HDbhJtvT

Аноним Птн 31 Янв 2014 12:37:04  #217 №322233 

>>322198
Таки выстрелил
print foo([10,9,10,10,9,3,4])

Аноним Птн 31 Янв 2014 12:39:59  #218 №322234 

>>322198
Хотя нет. Я все еще ловлю трейсбек "index out of range", в некоторых случаях. Например print foo([1,2,3,1,3]).

Очевидно, что это происходит при удалении элемента листа. Логичный фикс - сделать второй лист, как сделал вот этот >>322228 сЭр. Но, как то не экономично получается, если предположить, что в листе пизделион элементов.

Пойду читать про filter и лямбды.

Аноним Птн 31 Янв 2014 21:57:40  #219 №322423 

Калеки ебаные.

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

Аноним Суб 01 Фев 2014 00:09:39  #220 №322449 

>>322423
Ну вот, хотя бы один тръу пистонщик могущий в генераторы заглянул в тред

Аноним Суб 01 Фев 2014 01:08:15  #221 №322469 

>>322423
Тоже самое за O(n).


from collections import Counter
[i for i,c in Counter(a).items() if c > 1]
Аноним Суб 01 Фев 2014 01:15:11  #222 №322470 

>>322469

from collections import Counter
ca = Counter(a)
[i for i in a if ca[i] > 1]

быстрофикс..
Аноним Суб 01 Фев 2014 04:20:57  #223 №322490 

>>322470
>>322423
Ну суть понятна: Вместо того чтобы итерероваться по индексам как в C/паскале надо думать полее питонистично.

Очень рекомендую новичкам:
http://www.dabeaz.com/generators/Generators.pdf

Ну и юзайте уже IPython вместо стандартного интерпретатора. Там и цвета и отладка и numpy и еще куча всего...

Аноним Вск 02 Фев 2014 08:55:53  #224 №322808 
1391316953688.png

Где питонотред? Впрочем, спрошу тут.

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

Питоний скрипт нельзя поставить в "открыть с помощью", так что, полагаю, нужно сделать какой-то виндовый запускающий скрипт с неким расширением, то ли .bat, то ли .cmd, не пойму, и уже это засунуть в "открыть с помощью". Подскажите, как сделать этот скрипт, и достаточно ведь, чтобы в нем был прописан запуск скрипта, ничего специально делать не нужно, чтобы в программе загрузился файл, по которому мы кликнули? Ещё крайне желательно установить этому скрипту кастомную иконку, чтобы у ассоциированных файлов сохранилось прежнее изображение.

Аноним Вск 02 Фев 2014 11:53:25  #225 №322829 

>>322808
используй ярлык запуска программы, в настройках указываешь скрипт и нужные аргументы.

Аноним Вск 02 Фев 2014 17:02:16  #226 №322927 

>>322423
РYБU
list.select!{|x| (list.count(x) > 1)}

Аноним Вск 02 Фев 2014 17:09:14  #227 №322933 

>>319260
По хардкору нужно пояснять, что такое апкейс, он определен в руби только для латиницы.

Аноним Пнд 03 Фев 2014 08:37:57  #228 №323145 

>>322829
Где в настройках ярлыка указывается скрипт? В третий раз напишу, на всякий, что у меня винда.

Аноним Пнд 03 Фев 2014 09:00:48  #229 №323148 

>>322927
>{}
Ждем вариантов на Perl и Brainfuck!
Больше скобок богу скобок!

sageАноним Пнд 03 Фев 2014 09:26:17  #230 №323153 

>>322927
мутабельненько :(

sageАноним Пнд 03 Фев 2014 09:32:14  #231 №323157 

>>323148
> list.select!{|x| (list.count(x) > 1)}
а что эта дрысня делает?

Аноним Пнд 03 Фев 2014 10:24:36  #232 №323177 

репост из днищетреда

Знаю немного C, C++, Java, C#, Haskell.
Хочу изучить питон, хтмл, ксс, жабаскрипт, чтобы макакить веб на каком-нибудь одеске. Я правильно понимаю, что кроме того, что я написал, мне еще нужен какой-нибудь анальный фреймворк (или как это называется? cms?)

Аноним Пнд 03 Фев 2014 10:33:25  #233 №323180 

>>323177
>Хочу изучить питон, хтмл, ксс, жабаскрипт, чтобы макакить веб на каком-нибудь одеске.
Нахуй так жить?

Аноним Пнд 03 Фев 2014 10:55:55  #234 №323183 

>>323177
>какой-нибудь анальный фреймворк
django, flask

Аноним Пнд 03 Фев 2014 11:02:28  #235 №323185 
1391410948119.png

Google Apps Engine
Как убрать эту отладочную инфу в выводе? Пикрилейтед подчеркнуто красным, все что перед - мое.
В обработчике webapp режим отладчика не включен:

application = webapp.WSGIApplication(
[('/', clMainPage),
('/form', clAnswer)])
sageАноним Пнд 03 Фев 2014 12:29:31  #236 №323192 

>>323185
Объясните по хардкору в чем суть Apps Engine и зачме его юзать?

Аноним Пнд 03 Фев 2014 14:56:50  #237 №323218 
1391425010871.png

>>323192
После изучения основ и синтаксиса языка (работал во встроенном IDE в комплекте с питоном, windows) я задался вопросом, а как теперь перейти к веб-разработке? Ну первое, что нашел, это GAE. Запускаешь на своем компе гае, добавляешь проект (папку с программой), запускаешь проект, и проект-сайт открывается в браузере по http://localhost/
Так же можно сделать, что бы был доступ с других компов в локальной сети. Может быть можно каким-то другим образом запускать, без гае, я пока не интересовался. Плюсом идет авторизация от гугла, какая-то своя база данных, административная часть. Можно с компа выгрузить на сервер гугла, получив бесплатный домен для приложения вида yourapp.appspot.com

Аноним Пнд 03 Фев 2014 21:05:50  #238 №323306 

>>319311
>Создание приватных и протектед методов
Расскажи ка мне, зачем нужны private/protected методы?

Аноним Пнд 03 Фев 2014 22:47:27  #239 №323331 

>>323157
Чиатй выше, сагосёр

Аноним Пнд 03 Фев 2014 22:48:50  #240 №323332 

>>323153
Требование заказчика.

Аноним Втр 04 Фев 2014 00:40:34  #241 №323356 

>>323218
К твоему серверу, кстати, можно подключаться через интернет. По ip + порт.

Аноним Втр 04 Фев 2014 00:50:53  #242 №323359 

>>323218
Но я всё равно не понимаю нахуя? Обучаться можно и на локалке, а создавать продакшин на гугл апп это зашквар и содомия при том, что вдски сейчас стоят копейки

Аноним Втр 04 Фев 2014 13:53:27  #243 №323433 

>>323359
Я попробовал установить джанго на денвер, нагуглил пару гайдов. Ничего не получилось. С GAE в разы проще разобраться.

Аноним Втр 04 Фев 2014 14:16:46  #244 №323438 

>>315895
>Я попробовал установить джанго на денвер
LOL, с какой целью? Для локальной работы есть сервер разработки http://djbook.ru/rel1.6/intro/tutorial01.html Если хочешь отработать деплой на боевой сервер - возьми VPS за $5 у digitalocean.com.

sageАноним Втр 04 Фев 2014 16:19:55  #245 №323468 

>>323438
> возьми VPS за $5 у digitalocean.com.
Ты забыл реферальскую запостить.

Аноним Срд 05 Фев 2014 03:25:52  #246 №323626 
1391556352454.jpg

Не нашел PYthon треда, потому спрошу здесь.
Хочу научиться парсить текст программы, написанной на питоне. Результат должен быть в виде дерева.
Например для программы "имя_файла":
класс_А:
метод_1():
код_метода_1
метод_2():
код_метода_2
класс_Б:
метод_3():
код_метода_3

Результат будет:

{"имя_файла":{"класс_А":{"метод_1":"код_метода_1", "метод_2":"код_метода_2"}, "класс_Б":{"метод_3":"код_метода_3"}}

Как ловчее всего такое сделать? Использовать регулярки? Или смотреть в сторону yacc lex?

Аноним Срд 05 Фев 2014 03:53:55  #247 №323632 

>>323626
Может http://docs.python.org/3/library/language.html поможет?

Аноним Срд 05 Фев 2014 04:13:04  #248 №323635 

>>323626
> Использовать регулярки?
http://stackoverflow.com/q/1732454

Аноним Срд 05 Фев 2014 04:31:32  #249 №323636 

>>323635
Так я ведь не HTML парсить собираюсь.

Аноним Срд 05 Фев 2014 04:46:27  #250 №323637 

>>323636
ЯСНО

Аноним Срд 05 Фев 2014 08:36:15  #251 №323655 

>>323635
>Ко-ко я не умею думать, а умею копипастить
На токены разбить можно и регуляркой.

Аноним Срд 05 Фев 2014 09:54:09  #252 №323661 

>>323626
Именно для такого парсинга регулярка и нинужна жи, достаточно условий и find + 3-6 строчек

Аноним Срд 05 Фев 2014 13:30:39  #253 №323698 
1391592639751.jpg

>>318800
Не работает. Пофиксите, котаны, а?

Аноним Срд 05 Фев 2014 13:41:50  #254 №323703 

Здравствуй, анон! Вопрос есть по питону, но не тред ведь создавать для этого, верно?
Как с помощью питона кликнуть на кнопку на веб-странице? Вчера чуток погуглил и нашёл какую-то НЁХ mechanize, но, судя по комментариям, оно тоже через раз работает или не работает вовсе. Ну а сейчас у меня обед и я решил спросить у анона. Буду приятно удивлён, если кто-нибудь подскажет как это сделать да и вообще возможно ли это.
Если интересно, то надо кликнуть кнопку "Разрешить" при авторизации standalone-приложения впаше.ком.

Аноним Срд 05 Фев 2014 14:26:35  #255 №323713 

>>323703
Мимокрокодил. Ящитаю, что кнопка просто добавляет параметр в post-запрос. Поэтому, тебе формально не надо на нее кликать.

Аноним Срд 05 Фев 2014 14:43:56  #256 №323718 

>>323703
Сильно зависит от контекста и предыстории попадания на страницу с кнопкой и того, к чему приводит её нажатие: используеться ли авторизация, javascript и т.д.
Возможно, можно обойтись каким-нибудь grab-ом или его аналогом , а возможно что там много JS.
На случай последнего могу подсказать "тяжёлую артиллерию": phantomj

Аноним Срд 05 Фев 2014 18:26:08  #257 №323770 

>>323713
Спасибо, анон, за совет, но там не всё так просто.
>>323718
А тебе персональное спасибо. Сейчас гляну что это такое, но судя по названию догадываюсь :3

Аноним Срд 05 Фев 2014 19:43:05  #258 №323797 

>>315971
Может кто-то сказать что это за цветовая схема?

Аноним Срд 05 Фев 2014 23:11:39  #259 №323852 

>>323797
Попробуй peacock, ещё захочешь, отвечаю

Аноним Срд 05 Фев 2014 23:59:02  #260 №323875 

>>323852
Хуй знает, я как не установлю себе какую-то схему так всё уёбищно, просто пиздец. Что в саблайме что в емаксе. Може дело в шрифтах, хуй знает, кроме droid sans и inconsolata ничего не понравилось. Надо будет создать тред с цветами и шрифтами.

Аноним Чтв 06 Фев 2014 00:40:00  #261 №323890 

>>323875
На для шрифтов
http://www.slant.co/topics/67/~what-are-the-best-programming-fonts

Аноним Чтв 06 Фев 2014 01:47:38  #262 №323903 

Удаводавы, есть вопрос. Решил перенести сервер с жабы на питон. Не охуеет ли питон держать 3к+ соединений + обсчитывать игровую логику? С питоном ебусь первый раз, повсюду стращают GIL-ом и падением производительности на 1к+ потоков.

Аноним Чтв 06 Фев 2014 11:05:50  #263 №323962 

>>323890
Спасибо

Аноним Чтв 06 Фев 2014 11:34:46  #264 №323964 
1391672086271.png

>>323903
Ну хууууй знает. Напиши тестовый сервер и протестируй его на нагрузку.
Вот синтетический тест на потоки, в потоке запущен простенький цикл с вычислениями с плавающей точкой
Работал отсносительно шустро, а какая скорость у тебя будет хз, но чем тебя жаба не устраивает то?

Аноним Чтв 06 Фев 2014 12:37:47  #265 №323978 
1391675867826.jpg

>>323903
В ванильном Cpython оче хуевый трединг - одна кривая регулярка(любой кусок сишного кода) в одном потоке ложит весь твой сервер к хуям. Суть в том что интерпретатор считает кванты по инструкциям и внутрь сишного кода лазить не умеет. Поэтому на кривом сишном коде получается лок и пиздарики. Выход - юзать multiprocessing(неудобно + оверхед) или другой интерпретатор типа jython/pypy(не все либы заработают + в jython ест/был эпичный баг в urllib с выжиранием всех доступных файловых дескрипоторв, например).

Пидораса Гвидо уже давно тыкали в это лицом но он вместо того чтобы чистить говно поубирал в python3 то что работало(print) и добавил касметики.

Аноним Чтв 06 Фев 2014 13:39:41  #266 №323993 
1391679581688.png

Что за фигня, анон? Смотрю книжку Python Cookbook - там пикрилейтед. Пытаюсь повторить, получаю синтекс эррор.
http://ideone.com/R4gUry

Аноним Чтв 06 Фев 2014 13:43:16  #267 №323994 

>>323993
Как оказалось, работает только в тройке.

Аноним Чтв 06 Фев 2014 14:12:55  #268 №323999 

>>323994
Некрофил должен страдать.

Аноним Чтв 06 Фев 2014 14:19:41  #269 №324001 

>>323999
5 лет уже не могут избавиться от второй версии, так что сасай.

Аноним Чтв 06 Фев 2014 14:34:32  #270 №324003 

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

Аноним Чтв 06 Фев 2014 14:50:14  #271 №324006 

>>324003
А кто тебе такое сказал?

Аноним Чтв 06 Фев 2014 14:54:12  #272 №324007 

>>324001
Кто не может? Питон 2 оффициально™ deprecated и обновлений для него уже не будет. Что кто-то из-за природной лени не может перенести свои древние поделия на гвидон 3 - их проблемы. В конце концов, с коболом кто-то тоже до сих пор страдает.

Аноним Чтв 06 Фев 2014 14:57:37  #273 №324009 

>>324006
анон в твиттере мне нравится питон, кстати, и Flask. А на чем вообще принято писать небольшие прожекты? Джанга?

Аноним Птн 07 Фев 2014 11:40:21  #274 №324235 

>>324007
> Что кто-то из-за природной лени не может перенести свои древние поделия на гвидон 3 - их проблемы.
Блеватеки сами перепишутся? А вот нехуй было ломать обратную соместимость.

Аноним Птн 07 Фев 2014 13:29:23  #275 №324250 

>>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.

Аноним Птн 07 Фев 2014 13:38:26  #276 №324252 

Хуйня ваш python.

Аноним Суб 08 Фев 2014 06:54:11  #277 №324516 

Нет ли в этом людей, которые хотят сделать йобу-платформер (или вообще что-нибудь)?
Оставляйте контакты, если такие есть.

Аноним Суб 08 Фев 2014 06:55:16  #278 №324517 

>>324516
fix: в этой треде

Аноним Суб 08 Фев 2014 07:14:20  #279 №324518 

>>324009
Джанга для больших

Аноним Суб 08 Фев 2014 07:18:06  #280 №324519 

>>324516
На пигейме что ли? Да и вообще, гейдев на питоне - что-то сомнительно звучит.

Аноним Суб 08 Фев 2014 09:44:20  #281 №324531 

>>324519
Энивей, я должен сделать что-то кроме змейки. Пусть на пигейме или какой-нибудь рогалик-библиотеке.

Аноним Суб 08 Фев 2014 17:08:54  #282 №324611 

>>324531
Погнали пилить игру для программистов на пистоне + kivy аль рогалик какой

Аноним Суб 08 Фев 2014 18:23:36  #283 №324631 

>>324611
Пиши, бро.
[email protected]

Аноним Вск 09 Фев 2014 18:08:46  #284 №325051 

>>324631
А я тоже люблю kivy. Тем более он только что вышел на тройку. Можно с вами?

Аноним Вск 09 Фев 2014 21:28:24  #285 №325159 

>>325051
На мыло хоть написал или совсем хикка?

Аноним Вск 09 Фев 2014 21:53:33  #286 №325174 

>>325159
Лол, ща напишу.

Аноним Пнд 10 Фев 2014 00:56:39  #287 №325245 

>>316595
https://web.archive.org/web/20090303223623/http://faqs.ign.com/articles/620/620531p1.html

Аноним Пнд 10 Фев 2014 10:45:35  #288 №325297 
1392014735947.png

Аноны, прошу совета. Как на питоне половчее организовать пикрилейтед? Асинхронные сокеты (asyncore) занимают весь тред, так что не остается тиков для таймера. Либо надо переписывать asyncore.loop(), либо выпихивать EventHandler и таймер в отдельный тред, но как тогда организовать двухсторонний обмен данными между двумя тредами?
ебусь с питоном второй день

Аноним Срд 12 Фев 2014 18:59:26  #289 №326042 

Скорее эстетический, чем практический вопрос.
http://ideone.com/BN2Gh2

Как обычно проводят такие сравнения? На принадлежность к классу. По логике через class быстрее чем через type(), да?

Аноним Срд 12 Фев 2014 19:55:15  #290 №326076 

>>326042
isinstance(obj, t); issubclass(t1, t2).

Аноним Срд 12 Фев 2014 21:18:51  #291 №326109 

Предположим, есть прямоугольная область (экран). Разделим его на четыре поменьше. Как бы красиво сгенерировать четыре точки так, чтобы каждая из них была в одном прямоугольнике?

Аноним Срд 12 Фев 2014 22:14:35  #292 №326124 

>>326109
НАходишь границы своих прямоугольников, получаешь по два диапазона (икс и игрек). Генеришь числа в диапазонах. Рекомендую выбирать середину. Профит.

Аноним Срд 12 Фев 2014 22:34:04  #293 №326140 

>>326124
Ну я так и сделал. Список из списков координат минимума и максимума по икс и по игрек. Просто так не круто выглядит. Вдруг как нибудь элегантно можно это сделать. Видимо нет.

Аноним Птн 14 Фев 2014 13:13:23  #294 №326659 

А вот например я напишу вот так:


def f(filename):
with open(filename) as ff:
return ff.read()


Это правильно? Там все закроется как надо или лучше:

def f(filename):
ff = open(filename)
c = ff.read()
ff.close()
return c
Аноним Птн 14 Фев 2014 13:24:30  #295 №326661 

>>326659
Это правильно.

Аноним Птн 14 Фев 2014 13:35:15  #296 №326662 

>>326661
Благодарю.

Аноним Вск 16 Фев 2014 10:58:09  #297 №327187 
1392533889801.jpg

Так. Написал значит гуи-приложение на ткинтере. И немного меня ткинтер разочаровал. Делал все в линуксе, и как оказалось не такой уж он и кроссплатформенный. Стиль на винде выглядит не совсем так и вырвиглазно. В связи с этим реквестирую совета по выбору гуи-фреймворка для пайтона. Самые главные критерии: кроссплатформенность, компактность кода, возможность разделения внешнего вида от логики, минимальность размеров распространяемого приложения. Спасибо за внимание.

Аноним Вск 16 Фев 2014 11:05:09  #298 №327189 

А по каким мануалам учить многопоточность (или что там в пайтоне), многпроцессорность и так далее? Где это применяется. Нужно ли?

sageАноним Вск 16 Фев 2014 12:17:55  #299 №327206 

>>327189
если не интересно - то не нужно

Аноним Вск 16 Фев 2014 13:42:37  #300 №327224 

>>327206
Так интересно же.

sageАноним Вск 16 Фев 2014 13:46:51  #301 №327227 

>>327189
вкуривай join calculus, pi-calculus, temporal logic of actions и прочую годноту. Программируй на Хаскелле, используй STM, DPH, CHP, пиши свои реализации. Не зашкварься о пистон или интелевские либы, эта хуита для быдла, которое не умеет ничего, кроме пистонa/рабби и ни на что большее, чем написать #pragma omp for чтобы фор распараллелися не способно.

sageАноним Вск 16 Фев 2014 16:54:25  #302 №327302 

>>327187
PyQt. Как будто у тебя выбор есть.

>минимальность размеров распространяемого приложения.
разве что кроме этого

Аноним Пнд 17 Фев 2014 13:46:08  #303 №327591 

>>327302
>>327227>>327206
А что с сажей то?

Аноним Пнд 17 Фев 2014 14:01:22  #304 №327597 

>>327227
Откуда вы вообще берётесь? В Рашке что уже начали CS-специальности открывать?

>>327189
Говорят, нинужна она почти в Пайтоне. Если только для ввода/вывода. И этим занимается threading, вообще говоря.

Аноним Пнд 17 Фев 2014 22:18:30  #305 №327785 

А есть какое-то решение, чтобы в гуи приложении все ошибки выводились в одном месте, например в Label? Как нибудь организовать бы все это красиво хочу.

Аноним Пнд 17 Фев 2014 23:58:32  #306 №327816 

>>327597
>Откуда вы вообще берётесь? В Рашке что уже начали CS-специальности открывать?
Ссаный школьник-ньюфаг не может в МАФИЮ АНОНИММУСОВ)))

Аноним Втр 18 Фев 2014 00:15:02  #307 №327821 

>>327816
лойс

Аноним Втр 18 Фев 2014 00:33:54  #308 №327832 

>>327821
Ну ты меня понял ведь, да? Понял, да? Верно? Понял?
[По очереди подмигивает двумя глазами]

Аноним Чтв 20 Фев 2014 14:38:35  #309 №328732 

Господа, как бы мне залогиниться во вконтактике?
Нашел только http://habrahabr.ru/post/143972/

comments powered by Disqus

Отзывы и предложения