[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.17058 Reply
File: python.gif
Gif, 2.49 KB, 211×71
edit Find source with google Find source with iqdb
python.gif
File: pywin9x.jpg
Jpg, 2.46 KB, 102×102
edit Find source with google Find source with iqdb
pywin9x.jpg

К своему величайшему сожалению, я обнаружил, что тред >>7536 утонул безвозвратно. Посему предлагаю спрашивать и отвечать о (питоне|пайтоне) здесь!
Я буду отвечать в меру сил, а там, надеюсь, знающие аноны подтянутся.
Также созданию треда порадуются пользователи других языков, рассуждений которых об убогоньком гвидопыхе тонут вместе со старым тредом.

Краткая справка для новичков:
Официальный сайт: http://python.org/
Документация по стандартной библиотеке и разнообразные Tips & Tricks: http://docs.python.org/
Свежая тема для священной войны, или руководство по выбору между версиями: http://wiki.python.org/moin/Python2orPython3
Ссылка для вопящих про дикие тормоза: http://speed.pypy.org/
От себя могу порекомендовать книгу Марка Лутца (python 2) и Марка Саммерфилда (python 3), для знающих программирование, но не знающих Python самое оно.

Conversation(dobrochan.threads['s'], theme='python',
         captcha='мммм отрывать').begin()
>> No.17061 Reply
>>17058
За ссылки данке, а то я как раз решил упороться PyQt, но кроме Питоньего Дзена ничего о Питоне не знаю.
>> No.17069 Reply
Только начал изучать питон, так и не понимаю, почему его сравнивают с перлом, мне всё больше и больше джаву напоминает, срсли.
>> No.17072 Reply
File: 1326281445227.jpg
Jpg, 555.22 KB, 1280×720 - Click the image to expand
edit Find source with google Find source with iqdb
1326281445227.jpg
>>17069
алсо, обесните мне про отказ от обратной совместимости, читаю Лутца, там говорится, что что-то есть в 2.6, что-то есть в 3, чего-то нет в 2.6, чего-то нет в 3.
Что нового даёт питон 3? Поддержка и развитие ветки 2.6 закончилась с выходом 3?
>> No.17080 Reply
>>17069
Потому что у тебя синдром утёнка. Ты долгое время сидел на Джаве, и теперь тебе любой язык напоминает Джаву.
>> No.17081 Reply
>>17072
Закончатся. 3 - фактически новый язык, оче похожий на старый Питон. Но со старым Питоном больше не совместимый (ни в прямом, ни в обратном направлении).
>> No.17085 Reply
File: h_1304624412_fc1d6e3c5b.jpeg
Jpeg, 89.39 KB, 604×444 - Click the image to expand
edit Find source with google Find source with iqdb
h_1304624412_fc1d6e3c5b.jpeg
>>17072
> Поддержка и развитие ветки 2.
Ты имел в виду ветку 2? Нет, её развивают, текущая версия 2.7.
Про то, почему есть Python 3000, красноречиво (довольно) глаголет эта страничка: http://wiki.python.org/moin/PythonWarts
От себя скажу, что выкинули legacy классы (они, по-моему, с 1.5.2 точно тянутся), починили за***вший юникод простым и понятным способом, перепилили двусмысленные конструкции типа softspace, print>> и except с запятой, в общем, привели язык чуть ближе к import this. Можно what's new покурить, вот, например: http://docs.python.org/release/3.0.1/whatsnew/3.0.html

>>17069
Единственное, на мой взгляд, чем похожи Python и Perl - тем. что это традиционные для Unix и Web скриптовые языки. В Python обработка текста похуже. зато сложные структуры получше поставлены. Ещё дальше убежал Ruby - он принёс всю возможную производительность в жертву общности и читаемости программ со сложными структурами.
>> No.17086 Reply
>>17080
Иди перечитай дефайн для "синдром утёнка".
>> No.17104 Reply
>>17086
Ой, да, чушь сморозил. Ну, всё равно понятно.
>> No.17113 Reply
>>17072
Есть ещё такие картинки?
>> No.17114 Reply
>>17069
питон у тебя в штанах, блядь.
А пёрл тут вообще ни при чём. Сравнивают. Кто сравнивает? Мудаки, которые рисуют xkcd? Мало ли, что с чем они там сравнивают. Ещё пайтон сравнивают с пехопе, руби, хаскелем, брейнфаком... нашёл о чём задумываться.
Хотя, если уж с чем его и сравнивать, так это действительно с пёрлом. Потому что изначально среда применения одна и та же. Производительность низкая, скорость разработки высокая, узкой ниши нет - типа швейцарский нож. Раньше в этой роли перл был, теперь пайтон. Джаву он напоминает в той же степени, в которой он напоминает любой императивный язык, не больше, не меньше.
>> No.17116 Reply
File: av-67.png
Png, 42.04 KB, 150×150 - Click the image to expand
edit Find source with google Find source with iqdb
av-67.png
>>17114
> А пёрл тут вообще ни при чём. Сравнивают. Кто сравнивает? Мудаки, которые рисуют xkcd?
> Хотя, если уж с чем его и сравнивать, так это действительно с пёрлом.
>> No.17117 Reply
>>17114
> Кто сравнивает? Мудаки, которые рисуют xkcd? Мало ли, что с чем они там сравнивают.
Во-первых, по-моему, мудак там ~один. Во-вторых, по-моему, он не сравнивает.
> Хотя, если уж с чем его и сравнивать, так это действительно с пёрлом.
Suddenly.
> Джаву он напоминает в той же степени, в которой он напоминает любой императивный язык, не больше, не меньше.
Позволю себе не согласиться. По уровни интроспекции ООП питон напоминает Java (и обходит её, но это другой разговор). По синтаксису - C и немного Basic. По инструментам функционального программирования - функциональные, а не императивные языки.

PS Предпочитать произношение "пайтон" произношению "питон", используя аргументы в духе "кококо монтипайтон кококо" - спорно. Наезжать на собеседника по этому поводу - невежливо.
>> No.17118 Reply
>>17117
Нихуя не спорно. Название это название, а питон - у тебя в штанах.
> мудак там ~один. Во-вторых, по-моему, он не сравнивает
Да, один, и сравнивал, как и положено бывшему перлоёбу, но это не важно, на самом деле.
> Позволю себе не согласиться.
Видимо, маловато ты языков видел. Потому что функциональные языки он не не напоминает вообще никак, даже со всеми этими его недолямбдами и list comprehension. И джаву он напоминает в той же степени, в которой он напоминает любой императивный язык, не больше, не меньше.
От джавы в нём только прогрессивные техники разработки тех времён, когда джава ещё была прогрессивной. Ну там, модуль юнит-тестов из джавы и тедетепе. Даже "Руби напоминает Джаву" - звучит каким-то собачьим бредом, а ведь в нём в отличие от пайтона в самом деле можно найти порядочно добра привычного джависту: и вам настоящая инкапсуляция есть с геттерами-сеттерами, ООП нормальный (в отличие от пайтона, опять же, в котором ООП грубо "приклеен", и вовсе не определяет стиль написания прогарммы), что делает архитектуру приложений немножко похожей на архитектуру обычного Джава-приложения.
Средний же скрипт на пайтоне - это именно скрипт на пайтоне, т.е. скрипт на перле, откуда выкинули весь мусор, чтоб его можно не только писать, но и читать, а потом добавили своего мусора - где-то удачно, где-то не очень. Получилось что-то уродливое, но удобное в использовании, как и положено нормальному скриптовому языку.
> C и немного Basic
Ну это вообще пушка. Не удивлюсь, если авокадо тебе напоминает овсянку. А что, и то съедобно, и другое съедобно...

Ну и питон у тебя в штанах.
>> No.17119 Reply
>>17118
Название названием, но есть вещи общепринятые, ты в где-нибудь встречал правильное употребление happy edning или game is over? Я только пару раз. Все говорят неправильно, а на того, кто попробует исправить, только посмотрят как на идиота. Глупо на эту тему спорить.
> функциональные языки он не не напоминает вообще никак
Многое еще от стиля программирования зависит, но в целом ко всему остальному сказанному присоединяюсь.
>> No.17138 Reply
>>17118
> в отличие от пайтона, опять же, в котором ООП грубо "приклеен", и вовсе не определяет стиль написания прогарммы
это что же - меня обманывали, и Питон ООП-язык в той же степени, в коей им являются и плюсы?
>> No.17139 Reply
>>17138
> Это
>> No.17157 Reply
>>17138
Просто там ООП без фанатизма, сравнить хотя бы способы доступа к приватным методам в Java и в Python. Таким образом в последнем очень легко можно многие постулаты ООП нарушать. В общем, ООП не то чтобы грубо приклеено, но в состав клея входят парадигмоисповедание, скилл и совесть программиста. Зато питон может в такое-то метапрототипирование, которое в Шарподжавах только через жопу реализуется.
>> No.17158 Reply
>>17157
Но мне казалось, что в питоне нет приватных методов, как например в том же пехапе. Вроде бы там только соглашения об именовании
>> No.17160 Reply
>>17158
Это анон и имел в виде под 'грубо "приклеен"'.
>> No.17161 Reply
>>17160
> в виду
>> No.17180 Reply
>>17119
Не повод коверкать язык.
>>17138
Питон у тебя в штанах.

Ну, как тебе сказать... Вообще сравнивать их некорректно. Аналогия в общем-то верна, в том смысле, что язык по своей структуре - процедурный, но вот мы пишем-пишем и друг ХУЯК, вставляем, значит, класс со всякими там методами. С другой стороны, подобное сравнение может вызвать много непонимания, потому что в остальном ООП в них совершенно разное. То есть, да, ООП и в том и в другом до Руби и Джавы как до луны, но по-разному. Во-первых, в то время как С++ это действительно "Си с ООП", то Пайтон действительно оперирует с объектами. Строка - объект, список - объект, функция - объект. Вот только мы можем об этом даже не задумываться, а писать как на Паскале. В то же время в Пайтоне нет настоящей инкапсуляции, которая есть в С++, о чём уже отписались ниже. Обычно это и ставят ему в упрёк, но по моему скромному мнению - это хуйня. В конце-концов, идея вовсе не в том, чтоб сделать доступ к чему-то невозможным, а всего лишь обезопасить другого разработчика от использования того, что ему не следует использовать и в этом плане должно быть вполне достаточно того, что мы говорим "не лезь, епта". К не-ООПшности пайтона это не имеет отношения.
Паттерны, знакомые нам по книжкам о Джаве, опять же, довольно херово накладываются на Пайтон. Некоторые из них просто не нужны, другие реализовываются так, что стоит задуматься, а так ли они нам тут нужны? Ну и вообще, нет цельности. Например, как уже упоминалось, всё вроде как суть объект, но у списка и строки нет метода (или аттрибута) length. Нельзя написать mylist.length(), можно написать len(mylist). Мне кажется, это довольно говорящий пример.
И, кстати, встроенные типы нерасширяемы. В то время как к объекту своего класса мы можем добавить что угодно прямо на ходу. Т.е., создав пустой класс My, можно
my = My()
my.first = 1
Прямо как в джаваскрипте.

В общем, в целом, да, всё именно так и есть. Простите за лирику: ООП в Пайтоне - один из его костюмов, а вовсе не его душа. Как и у плюсов.
>> No.17191 Reply
>>17118
> Потому что функциональные языки он не не напоминает вообще никак,
Ну, я довольно неточно выразился. Я имел в виду, что list comprehensions там похожи на list comprehensions в функциональных языках. Что он похож на функциональный, я в виду не имел.
> в отличие от пайтона, опять же, в котором ООП грубо "приклеен", и вовсе не определяет стиль написания прогарммы
Это называется пафосным словом "мультипарадигменность" и является одной из вещей, за которую стоит любить питон. Не люблю, когда компьютер мне рассказывает, как я должен представлять объекты у себя в голове.
Вообще тот же C, например, несмотря на свою процедурную структуру, довольно-таки мультипарадигменный. Ему вот очень полиморфизма не хватает, как и его инкрементнутой версии, почему и пилят всякие суслики, ржавчины и прочую ересь.
> Ну это вообще пушка. Не удивлюсь, если авокадо тебе напоминает овсянку. А что, и то съедобно, и другое съедобно...
Ну, на Си питон похож; он от него унаследовал всё байтоложество, кроме указателей. Wait, oh shi~ memoryview()
А на бейсик похож малым количеством пунктуации. Он вообще ему внуком приходится, напоминаю.
>> No.17193 Reply
>>17180
> Не повод коверкать язык.
Sure. Это ваше Пайтон есть коверкание русского языка. Ты ещё "Си плас плас" начни говорить.
> Питон у тебя в штанах.
У тебя в штанах, видимо, АЙ.
> Ну и вообще, нет цельности. Например, как уже упоминалось, всё вроде как суть объект, но у списка и строки нет метода (или аттрибута) length.
Ну и нормально. Ещё нет атрибута abs(), атрибута contains(), атрибута add(), атрибута slice(), эт цетера. Вполне целостно.
> И, кстати, встроенные типы нерасширяемы.
Performance reasons.
> В то время как к объекту своего класса мы можем добавить что угодно прямо на ходу. Т.е., создав пустой класс My, можно
Я искренне надеюсь, что ты понимаешь зачем нужны heap types. Но на всякий случай:
Это даёт возможность не выписывать список атрибутов заранее + возможность rebinding (перекрытие метода класса) + возможность доинициализации потом.
>> No.17198 Reply
>>17193
Да ты долбоёб какой-то. "Плюс" это блядь слово такое. "Пайтон", это блядь название и фамилия такая. А "питон" это животное, которое у тебя в штанах, мудило ты неграмотное.
> Ну и нормально. Ещё нет атрибута abs(), атрибута contains(), атрибута add(), атрибута slice(), эт цетера. Вполне целостно.
Да нихуя это не целостно. Ну и я знаю же, что нет метода abs(). Это к тому, что язык какбе процедурный с ООП сверху, как СИ ПЛАС ПЛАС. На самом деле, чем больше обмусоливаю это сравнение, которое анон так небрежно вбросил, тем больше оно мне нравится. Ей-Богу, так и есть. В принципе же, мне довольно на это похуй. Когда-то давно я очень путался, пытаясь вспомнить "а вот это говно пишется как метод или как функция?", и поэтому мне очень понравилось, что в Руби всё так гладко и однородно. Но всё-таки там слишком много сахара, поэтому я до сих пор скриптую на пейсоне.
> Но на всякий случай:
На самом деле ты хуйню написал. Впрочем, я это писал не как что-то плохое, просто отвечал на вопрос, какой он этот пайтон есть. Но вообще-то это довольно говняная фича, если уж на то пошло. Доинициализация потом возможна без этого. В том же сипласпласе она возможна. Как и rebinding. А возможность добавить что угодно когда угодно но не КУДА угодно - это очень яркая иллюстрация отсутствия ООП как парадигмы всего языка. И, кстати, весьма рискованная штука, потому как любая очевидная опечатка может стать внезапно легальной конструкцией, и пойди потом её найди.
>>17191
Ты совершенно не понимаешь СУТИ проектирования языков. Всё это делает бидон уродливым говном, которое тем не менее весьма удобно в использовании. Но никак не определяет парадигмы. Вот ООП-шность рубей - это парадигма. Функциональнось хачкеля - парадигма. А бидон, это, по сути, процедурный язык, с налепленым на него ООП. Как кресты, точно.
Ладно, мне надоело.
>> No.17202 Reply
>>17198
Calm down.
>> No.17203 Reply
>>17058
Здравствуйте, уважаемые питонщики. Скажите, есть ли возможность прикрутить к движку на C++ скриптование на питоне?
>> No.17204 Reply
>>17203
Да, есть. Для нового питона есть, который Lua называется.
>> No.17222 Reply
>>17204
> Для нового питона есть
> который Lua называется.
> питона
> Lua
пикрелейтед.
>>17203
Да, можно. При помощи libpython.
>> No.17224 Reply
File: narkoman.jpg
Jpg, 71.28 KB, 550×485 - Click the image to expand
edit Find source with google Find source with iqdb
narkoman.jpg
>>17222
Блин, пикрелейтед отклеился.
>> No.17241 Reply
Сел я как-то эпично так изучать Python, рисуя в голове мего-проекты, и наткнулся знач вот на такую вот интересную куйнюшку. При попытке ввести raw-input("vvod tipa"), мой форд мустанг компопроизводства выдает:

Traceback (most recent call last):
File "<blender_console>", line 1, in <module>
NameError: name 'raw' is not defined

Ищу в инете и натыкаюсь щами на такой факт, что в старой версии писалось raw-input(), а в новой забомбили просто input(). Ок, допустим. Теперь выдает:

Traceback (most recent call last):
File "<blender_console>", line 1, in <module>
RuntimeError: input(): lost sys.stdin

Вполне возможно, что из-за кривож*пия я сделал что-то совсем не так, как прописал доктор, но факт есть факт. Что делать и как с этим бороться? Качать старую проверенную версию ради одного оператора ввода нет смысла. Помогите, буду очень признателен. Великие проекты застаиваются (хD) -_-.
>> No.17244 Reply
>>17241
Нет функции raw-input. Я тебе по секрету больше скажу: не может быть вообще ни одной функции через дефис, потому что это МИНУС, блядь.
Есть функция raw_input()
>> No.17245 Reply
>>17244
И в догонку: судя по тому, что я сказал, архисложных вопросов ты задавать пока что не собираешься. Пожалуйста, оформляй их в меньшее число слов.
>> No.17249 Reply
raw_input('sdf')
Traceback (most recent call last):
File "<blender_console>", line 1, in <module>
NameError: name 'raw_input' is not defined

Тире выскочило из-за недожатия пальцем. Лучше скачать более старую версию или как-то по-другому можно обойти функцию ввода?
>> No.17250 Reply
>>17249
> 19 Dec 2008 – So, in Python 3, raw_input() is renamed input() ...
>> No.17251 Reply
В своем первом комменте я указал ошибку при input():

Traceback (most recent call last):
File "<blender_console>", line 1, in <module>
RuntimeError: input(): lost sys.stdin
>> No.17252 Reply
File: 319015.jpg
Jpg, 63.01 KB, 500×393 - Click the image to expand
edit Find source with google Find source with iqdb
319015.jpg
я просто оставлю это здесь - http://ekbpy.ru/programma/
>> No.17255 Reply
В пи*ду, уговорили, ставлю старую версию. Насчет этой ошибки нашел тот же вопрос на одном форуме, тоже никто не знает.
>> No.17258 Reply
>>17241
Reproduced:
$ python -c 'import sys; del sys.stdin; input()'
Traceback (most recent call last):
   File "<string>", line 1, in <module>
RuntimeError: [raw_]input: lost sys.stdin

Вывод? В новом API блендера нет стандартного ввода. Капча "фактически" подтверждает.
>> No.18300 Reply
File: 1196889316_green_python.jpg
Jpg, 44.52 KB, 450×299 - Click the image to expand
edit Find source with google Find source with iqdb
1196889316_green_python.jpg
Здравствуй, Доброкодер.
Есть большая вероятность, что буду писать практическую часть дипломной работы на пайтоне. Дело в том, что я внём полный ноль, а чтобы мне поверил мой потенциальный научрук в то, что я смогу, даже не имея никаких знаний или опыта на входе, мне надо очень быстро въехать в основы.
Надеюсь, местный анон не против, если я буду иногда спрашивать его мудрых советов, ведь больше мне положиться не на кого.
Первый вопрос — с чего начать? Нужен годный достаточно краткий манул по основам на русском языке (именно на русском, мои познания в английском позволяют лишь читать простые пояснения, например, в справке по отдельным функциям). Пока мои знания на уровне учебника с wikibooks, который я только что быстренько прочитал.
>> No.18301 Reply
File: manul_zoo_3.jpg
Jpg, 126.63 KB, 800×533 - Click the image to expand
edit Find source with google Find source with iqdb
manul_zoo_3.jpg
>>18300
> краткий манул
Не удержался.

Поделюсь историей. Я учил питон по книге "Python за 24 часа" или как-то так. Так вот, эта книга была ужасна.
Я оттуда вынул ещё меньше, чем из wikibooks.
Потом я прочитал Марка Лутца, и всё настолько встало на свои места, что лучше некуда.
(Стоит заметить, правда, что к моменту прочтения второй книги я уже видел много листингов на бейсике - старые книги по программированию вызывают у меня необъяснимую нежность - и покуривал Кнута, но Паскаля или Сей не видал).
Из книг для тех, кто умеет прогать, говорят, Саммерфилд весьма неплох, по третьепитону. По второпитону есть очень годная книга Гвидо ван Россума с соавторами. Все книги легко гуглятся. Не благодари.
>> No.18302 Reply
>>18301
> Не благодари.
А я всё же поблагодарю. Спасибо.
Надеюсь, скоро я ещё сюда загляну, уже с более серьёзными вопросами.
>> No.18303 Reply
>>18302
> А я всё же поблагодарю. Спасибо.
Так это. Доброчан, как-никак.
> Надеюсь, скоро я ещё сюда загляну, уже с более серьёзными вопросами.
Заглядывай, конечно.

Надо же, в мой тред ещё и люди пишут...
>> No.18311 Reply
>>18300
Dive in python, очевидно. Пиривот на русский должен быть, хотя если ты планируешь в жизни стать кем-то выше чем "тупой быдлокодер", учи английский. Без него никуда.
>> No.18318 Reply
>>18311
Спасибо. А английский я обязательно выучу. Стоит первым пунктом в моей программе, после пункта об изучении пайтона.
>>18303
> Надо же, в мой тред ещё и пишут
Я шёл сюда с целью создать уютный ньюфажий тредик. Но потом подумал, что правильнее будет копнуть поглубже и найти уже существующий.
>> No.18348 Reply
File: snakes.gif
Gif, 28.01 KB, 600×600 - Click the image to expand
edit Find source with google Find source with iqdb
snakes.gif
Где можно почитать подробно(ну хоть как ни будь) документированных листингов/исходников на питоне?
>> No.18352 Reply
>>18348
> подробно(ну
> как ни будь
Будь внимательнее, няша.
>> No.18354 Reply
>>18348
PyPy, однозначно. Заодно в устройстве питона разберёшься.
>> No.18366 Reply
File: horo1.jpg
Jpg, 115.99 KB, 728×827 - Click the image to expand
edit Find source with google Find source with iqdb
horo1.jpg
>>17058
Здравствуй, аноним. Насоветуй годной литературы по питоновским алгоритмам на подобии "Коллективный разум". С меня доброта и печеньки.
>> No.18367 Reply
>>18366
Книжки Ахо-Хопкрофта-Ульмана и Кнута уже читал?
>> No.18368 Reply
>>18367
сейчас Кормена изучаю.
Я немног уточню - книги по Python, ориентированную на сеть.
>> No.18376 Reply
>>18368
Нашел одну хорошую. Если кому интересно, то вот автор и название: John Goerzen - Foundations of Python Network Programming.
>> No.18446 Reply
Никогда не писал игры на пайтоне. Да и вообще, в основном скрипты, вместо шелла.
А тут вот подумал написать. Суть такова: есть игра, brain workshop. С точки зрения разработки это что-то на уровне тетриса. На пайтоне она и написана. Вот только это глючное тормозное говно, сделана ну оче плохо. Короче, я бы хотел её переписать. Не образования для, а чтоб была. Ну и вообще весь lumosity.com сделать десктопным и опенсорсным. Ну уровень тетриса же, чего б не сделать, а?

Но есть у меня два вопроса:
1. Я что-то не понимаю, и пайтон для этого не годится? (Просто я действительно не возьму в толк, почему brain workshop такое говно.)
2. Что там для этого положено использовать? PyGame, или для тетрисов с кьютешным гуем для статистики как на lumosity что-нибудь подойдёт лучше?

Алсо, если есть что-то, что для этого подойдёт лучше - можно и не на пайтоне, в принципе всё равно, на чём писать. Буду благодарен любым направлениям.
>> No.18452 Reply
>>18446
1. Нет, просто многие пишут на питоне, не понимая, где расставлены оверхеды.
2. Не GTK и не Qt. Лучше PyGame, хотя их можно интегрировать. Или pyglet.
>> No.18453 Reply
>>18452
> GTK Qt PyGame можно интегрировать
А можно ссылочку на документацию по этому попросу? Нагуглил только с вариант с wx, или надо было в него вчитаться, и там некий общий метод расписан?
>> No.18455 Reply
>>18453
ВПИЗДУ WX, оно суперкривожопое!
>> No.18456 Reply
File: b022med[1].jpg
Jpg, 171.02 KB, 450×317 - Click the image to expand
edit Find source with google Find source with iqdb
b022med[1].jpg
Сап, Доброкодер.
Вот у меня появилось и первое задание на пайтоне, сразу вызвавшее ряд вопросов.
Суть задания: надо парсить новости с nytimes.
Я использую библиотеку feedparser, всё вроде просто и удобно, но мне надо получить новостей больше чем за текущие сутки, желательно намного больше, а сам сайт RSS в удобном мне формате больше чем за день не выдаёт. Их архив с поиском выдаёт данные за любой временной промежуток, но я на своём уровне ума не приложу, как всё это дело можно использовать.
Значит, вопрос таков, есть ли здесь хтмл-боги, которые доставят мне ссылку/комплект ссылок на nytimes, с которых я бы мог получить RSS хотя бы за месяц (или подскажут, где есть те, кто мог бы помочь мне с этим)?
Если предыдущий никак не разрешим, то вопрос уже к python-богам, как мне тогда прочитать все их новости через архив? Этот сервис
http://query.nytimes.com/search/query?srchst=nyt&&srcht=a&srchr=n
Выдаёт сколько нужно новостей, но я их собирать не умею.
>> No.18457 Reply
>>18453
http://stackoverflow.com/questions/25661/pygame-within-a-pygtk-application
С gobject-introspection делаешь from gi.repository import Gtk, а дальше примерно то же самое.
>> No.18458 Reply
>>18456
После отправки запроса получаем ссылку вида:
http://query.nytimes.com/search/query?frow=0&n=10&srcht=s&query=&srchs[...]=2012

из нужного тебе:
srchst - в каком архиве искать.
frow - первая новость на страницею
daterange - собственно за какой срок новости.
n - количество новостей на странице.
С остальным сам разберешься, со всякими mon, year и так далее. Использую разный параметры поиска, и смотри, как изменяются параметры в запросе. Узнав все нужно генери такие ссылки сам.

Для html использовать можешь BeautifulSoup.
>> No.18554 Reply
>>18458
Спасибо.
Что-то вроде получилось.
>> No.18562 Reply
Оп, можешь сказать что-нибудь про научные расчеты на python/scipy/numpy? Я слышал, что все пишут на С и говорят, что python медленный. Так ли это на самом деле?
>> No.18577 Reply
>>18562
Правда, в числодробилках он медленный, в остальном зависит от того, насколько ты выебнешься или насколько тебя устраивает подлагивание.
>> No.18578 Reply
>>18577
не-ОП
забыл, представиться
>> No.18668 Reply
>>18562
Медленный, инфа 100%.
Где-то видел сравнение что ажно до 70 раз медленнее бывает.
>> No.18763 Reply
>>17058
анон, поясни по хардкору, как это: https://gist.github.com/1980389
привести к функциональному виду?
я смог в фильтр: https://gist.github.com/1980391
но как запихать сюда else?
>> No.18764 Reply
>>18763
'true' if True else 'false'
>> No.18867 Reply
> Python 3.3 includes a range of improvements of the 3.x series, as well as easier porting between 2.x and 3.x.
Отлично, они сначала сломали совместимость, а теперь её восстанавливают.
>Python 8.3 includes a range of improvements of the 8.x series, as well as easier porting between 2.x and 8.x.
>> No.19024 Reply
Кто чем работает с sql под виндой?
>> No.19061 Reply
Пришло время делать ГУИ.
Так вот, я хочу чтоб гуем была поупрозрачная тёмно-зелёная хуёвина со светящимися буквами, например. И, естественно, без панельки с названием окна и кнопкой выхода. Такое можно сделать?
>> No.19064 Reply
>>19061
> Такое можно сделать?
На кутях за пару минут.
>> No.19065 Reply
>>19024
IB Expert, ибо православно.
>> No.19067 Reply
>>19064
Отлично. Как раз сделал hello world на PySide. Можно чуть подробнее? Ибо пока что я не вижу, где в нём такие возможности спрятаны. Большой он, чорт.
>> No.19069 Reply
>>19061
Что-то не видать у вас в кутях свойства связанного с window decorations, только splash screen. И по ходу еще даже нет возможности управлять этим.
http://www.mail-archive.com/pyside@lists.openbossa.org/msg01960.html

мимопыхоеб
>> No.19118 Reply
>>19069
А они должны быть? Кутя - она же кроссплатформенная, а не на всех платформах window decorations есть. Наверно.
>> No.19215 Reply
>>18456
Понимаю, что вопрос не совсем сюда, но раз начал писать в этом треде, то продолжу.
Дело в том, что мне всё-таки необходимо получить RSS, таково задание. Проблема: нужно не текущий RSS (несколько десятков новостей), а за более длительный срок. Гугл-ридер это может, есть ли возможность получить такую же ленту самому? Понимаю, что скорее всего нет, и что гугл хранит всё это где-то у себя скорее всего, но вдруг не всё так плохо?
Алсо, если всё плохо, может быть есть возможность взять эту ленту у ГРидера?
>> No.19218 Reply
>>19118
Ты не понял, в кутях, которые на плюсах возможность делать кастомные заголовки не помню правильного названия есть, а вот в пайсад такого нет.
>> No.19243 Reply
>>19067
Для всяких полупрозрачных интерфейсов непонятной формы можно использовать кутишный QML и QtQuick. Так же смотри QStyle, для настройки окон читай про WindowsFlags. Все это поддерживается в PySide, хотя с ним дела не имел, но от того же PyQt там отличий не должно быть.
>>19215
Это все с того же nytimes.com?
>> No.19254 Reply
>>19243
> Это все с того же nytimes.com?
По идее, да. Но пока интересует про вообще, есть ли способ такой в принципе?
>> No.19256 Reply
>>19254
Это надо доступные параметры запроса разбирать. Иногда можно будет выставить количество отображаемых новостей, в других случаях можно постранично получать записи. То есть, тут уже зависит все от целевого ресурса.
>> No.19607 Reply
Посоветуйте какую-нибудь кроссплатформенную либу, чтобы делать гуй. Хочу переписать питонью следилку за доброчаном, чтобы не было зависимости от кед. Ничего сложного не требуется, просто несколько текстбоксов, кнопок, да диалоговых окон. Опционально наличие возможности изображения в текст втыкать. Смотрел TKinter, функционально то, что нужно, но мне он показался упоротым.
>> No.19687 Reply
>>19607
Ай, чёрт, Tkinter поздно советовать?
Не, он упорото выглядит, но API у него очень нормальный.
Есть GLUT (хе-хе). Есть lesstif, но у него тяжко с биндингами к питону. Есть easygui.sourceforge.net . Есть FLTK. Есть GTK, в конце концов.
>> No.19688 Reply
>>19607
Ай, чёрт, Tkinter поздно советовать?
Не, он упорото выглядит, но API у него очень нормальный.
Есть GLUT (хе-хе). Есть lesstif, но у него тяжко с биндингами к питону. Есть easygui.sourceforge.net . Есть FLTK. Есть GTK, в конце концов.
>> No.19690 Reply
>>19607
wxPython посмотри.
>> No.19711 Reply
Очевидно, Qt4?
>> No.19727 Reply
>>19688
Объясни тогда апи tkinter в двух словах, если он нормальный.
>> No.19757 Reply
>>19727
anywidget = WidgetClass(parent, here=goes, default=config)
anywidget.bind('<event><sequence>', handler)
anywidget['configname'] = 'configvalue'

Если совсем кратко.
>> No.19776 Reply
File: 14441_bc65_122_218lo.jpg
Jpg, 26.56 KB, 315×419 - Click the image to expand
edit Find source with google Find source with iqdb
14441_bc65_122_218lo.jpg
Аноны, поясните подробнее питон вс жаба?
Жаба может в андроид, а в питоне удобный синтаксис.
На жабе библиотеки, а у питона перегрузка операторов.
>> No.19777 Reply
>>19776
http://www.youtu be.com/watch?v=m8T5jUD60v8&feature=player_detailpage#t=85s
>> No.19937 Reply
>>19757
Я наконец-то начал понимать:

class App(Frame):
def __init__(self, master = None):
    Frame.__init__(self, master)
    self.pack()
root = Tk()
app = App(root)
app.mainloop()

Тащил из документации по питону, буду рад пояснению, потому что мог что-то неправильно понять.
>> No.19964 Reply
>>19937
Ещё раз и с вопросами:

root = Tk() -- основной виджет приложения. Нужен ли он? Если какому-нибудь фрейму не задавать мастера, то всё равно он содержит ссылку на экземпляр Tk(), и хорошо себя чувствует.

app = Frame(root)
app.pack()
app.mainloop() -- это создание нового виджета с мастером, вызов пакера (он же для размещения виджета внутри мастера нужен?), а затем запуск оснвного цикла. Вообще если посмотреть на иерархию виджетов, то какой должен запускать mainloop?
>> No.19969 Reply
>>19937
С доками по питону ты мало в чем сможешь разобраться, смотри лучше http://www.tkdocs.com/tutorial/
Алсо pack не православен, юзай grid.
>> No.19971 Reply
>>19969
Доку по ткинтеру уже раскурил, grid действительно няшнее. А отличается ли Tk от Toplevel чем-нибудь, кроме функционального назначения (главное окно и просто окно)?
>> No.19972 Reply
>>19971
Топлевелов может быть несколько, смотри например демку по перетаскиванию виджетов с одного топлевела на другой - c:\Python\Lib\lib-tk\Tkdnd.py
>> No.19973 Reply
File: 2012-04-02_195331.png
Png, 9.96 KB, 251×808 - Click the image to expand
edit Find source with google Find source with iqdb
2012-04-02_195331.png
>>19688
> Tk ... упорото выглядит
Выглядел. С новым набором виджетов вид стал нативным. Открой для себя ttk (Themed widgets).
%%Пикрелейтед - формошлепка для Tk http://page.sourceforge.net/%%
>> No.19975 Reply
>>19973
Формошлёпка не нужна, упоротым мне казался апи. Теперь вроде разобрался.
>> No.20237 Reply
File: 046.jpg
Jpg, 94.90 KB, 788×1050 - Click the image to expand
edit Find source with google Find source with iqdb
046.jpg
Доброго дня, питонисты, поясните, пожалуйста. Есть скрипт на питоне 3.2, принимающий в качестве аргументов имена директорий, а также опциональный параметр "-m". Как правильно и наиболее просто учитывать наличие данного параметра среди аргументов? Доку по argparse читал, но, насколько я понял, вместе с параметром надо обязательно передавать некое значение (например, "-m 1"), а я хочу учитывать только наличие параметра без всяких переданных значений. Заранее спасибо.
>> No.20238 Reply
>>20237
> вместе с параметром надо обязательно передавать некое значение (например, "-m 1"),
Нет, зависит от action. Если тебе нужен просто флаг, то используй store_true / store_false, лайк зис:
parser.add_argument('--foo', action='store_true')
>> No.20405 Reply
Как рефакторить код на Python, если он может поломаться от изменённого форматирования (отступы и пробелы там)?
>> No.20435 Reply
Здравствуй, питонист-кун.
Есть словарь (DATA), из которого я достаю ссылки на файлы и их локальные имена, проверяю размер файла (кастомная функция getsize()), после чего принимается решение, скачивать файл, или пропустить. Хотел запустить несоколько потоков и оформил в виде кода ниже, но на практике работает в один поток. Подскажи, пожалуйста, где я свалял дурака?
def action(args):
   url = args
   fname = DATA[args]
   return(url, fname)

pool = Pool(5)
for item in pool.imap_unordered(action, DATA):
   num = item[0]
   name = item[1]

   link = 'http://domain.com/' + num
   try:
	if getsize(link) < tinyFileSize:
		print('{} too small'.format(num))
	else:
		print('\tGetting file:', name)
>> No.20452 Reply
>>19973
> http://page.sourceforge.net/
Хау-хау... Хотеть рабочую ссылку.
>> No.20552 Reply
>>20435
Ну, только action выполняется в потоке, тело for работает в том потоке, в котором выполняется блок кода.
>> No.20553 Reply
>>19973
Linux.
>> No.20557 Reply
>>20405
Использовать нормальный IDE, который умеет сам переносить код с правильным учетом отступов.
Ваш Капитан
>> No.20569 Reply
>>20405
1. Адекватные скрипты.
1.1 Coding convention
2. ???
3. PROFIT!

Как можно писать рефактор-скрипты, которые не учитывают отуступы и превращают код на сишке в говно?
>> No.20577 Reply
File: 201.jpg
Jpg, 112.42 KB, 810×1080 - Click the image to expand
edit Find source with google Find source with iqdb
201.jpg
>>20552
Спасибо.
>> No.20682 Reply
Использую IDLE как IDE, я нормален? Ничего нет, а всё есть.
Неужели нет тольковых IDE кроме vim и GNU Emacs?
>> No.20683 Reply
>>20682
kate для кедорасов, gedit для гномосексуалистов.
>> No.20684 Reply
>> No.20704 Reply
>>20682
> IDE кроме vim и GNU Emacs
vim и емакс - не IDE.

Мне нравится WingIDE Pro. Кто-то рекомендовал PyCharm. Их много разных для питона.
>> No.20707 Reply
>>20704
не знаю как этот ваш emacs, но мой вим умеет быть иде после допила плагинами (собственно сиплюсплюсую в нем)
>> No.20709 Reply
>>20707
Пакеж скринчик, потом конфиг.
>> No.20710 Reply
>>20707
> быть иде
Что, там нормальная интерактивная отладка, питоновый интеллисенс, интеграция с юнит-тестами и интеграция с системой контроля версий?
>> No.20712 Reply
>>20710
Не знаю, как насчёт всего этого добра, но дополнения целой линии (^X^L) сильно не хватает в других.
Мимо-вимолюб
>> No.20713 Reply
>>20712
> дополнения целой линии
Это вообще как?
>> No.20714 Reply
>>20707
> (собственно сиплюсплюсую в нем)
Рефакторинг там на каком уровне? Просто я тоже хочу эти ваши эргономичные редакторы упороть, могли бы упарывать вместе.
>> No.20803 Reply
>>20682
Да, абсолютно. IDLE - самая адекватная IDE для Python.
Пользуюсь вимом только потому, что он универсальнее и консольный.
>>20710
> нормальная интерактивная отладка
Не уверен, врать не буду. В крайнем случае есть PIDA.
> питоновый интеллисенс
Очевидно, да.
> интеграция с юнит-тестами
Что ты подразумеваешь под этим?
> интеграция с юнит-тестами
Очевидно, да.
>>20714
Рефакторинг питона там на уровне "плагин для python-rope". Возможно, он хорош, я такими вещами не пользуюсь, я грепом больше.
>> No.20805 Reply
>>20713
А вот так. Как со словами, только с целыми линиями текста. Копипейст НЕ НУЖЕН!
>> No.20806 Reply
>>20803
> > питоновый интеллисенс
> Очевидно, да.
Не очевидно. Скрины в студию.
>> No.20807 Reply
File: why-face.png
Png, 8.60 KB, 225×199 - Click the image to expand
edit Find source with google Find source with iqdb
why-face.png
>>20805
НАУЧИ!
>> No.20814 Reply
>>20807
0. Ставишь vim (или gvim, если совсем нуб), естественно.
1. Открываешь текст.
2. Переводишь в режим вставки.
3. На новой строке жмёшь Ctrl-X, Ctrl-L.
4. ???
5. МАГИЯ!
>> No.20816 Reply
>>20814
А, и вот ещё. Обычное автодополнение слова делается по Ctrl-N и Ctrl-P.
>> No.20820 Reply
кстати, чем отличапется vim от gvimа? После того как арч попросил переехать, разницы не заметил
>> No.20821 Reply
>>20820 vim — терминальный, можно запускать без иксов на голом терминале, gvim — графическая оболочка для предыдущего, нужны иксы и, желательно, ГНОМЕ.
>> No.20822 Reply
>>20820
У гвима свои менюшка и тулбар сверху, еще можно мышой тыкать и ресайзить всякие там окошки внутри.
>> No.20828 Reply
>>20821
а команда vim просто чтобы я не волновался, да?
Пойду пощупаю
>> No.20833 Reply
В регулярке на третьем питоне: r'\w{3,4}/{files}'.format(files=files)' format считает, что {3,4} относится к нему. Кто-нибудь знает, как можно обойти?
>> No.20834 Reply
>>20833
{{}}
>> No.20838 Reply
File: 201.jpg
Jpg, 156.59 KB, 1620×1080 - Click the image to expand
edit Find source with google Find source with iqdb
201.jpg
>> No.20869 Reply
Как с помощью os.walk() посмотреть содержимое папки "мой компьютер"?
>> No.20871 Reply
>>20869
import os
home = os.path.expanduser('~')
for root, dirs, files in os.walk(home):
    print 'root:', root
    print 'dirs:', dirs
    print 'files:', files
    break
Типа так?
>> No.20872 Reply
Лирика: %%Здравствуйте. Начал изучать python, ну и чтобы разбираться на конкретных примерах стал с его помощью писать программы требуемые в ВУЗе. С отдельными моментами вроде разобрался сам, но сейчас встал вопрос: есть небольшая таблица и заданы правила перехода между её элементами (довольно простые: один "прямой" путь и один "альтернативный"). Требуется перебрать все пути в нём.
В общем-то, наверное, можно было попробовать смастерить из этой таблицы граф и затем применить к нему стандартные методы поиска всех путей, но мне этот способ не очень подходит (таблица правда маленькая и больше времени уйдёт на преобразование каждого её элемента в вершину графа), поэтому я сделал ещё одну таблицу, где хранились бы "координаты" элементов, на которые можно перейти (не совсем так, вообще-то).%%

Отсюда вопрос: можно ли как-то передать в функцию ссылку на таблицу с номерами, а не копировать саму таблицу? Ибо поиск итерационный и если каждый раз копировать эту таблицу, то будет некрасиво. Как я понял, в случае с функциями по умолчанию происходит копирование объекта, а не создание ещё одной ссылки на него (как в случае с присваиванием). Использую python 3.1.
>> No.20873 Reply
>>20872
> Как я понял, в случае с функциями по умолчанию происходит копирование объекта, а не создание ещё одной ссылки на него
Нет. Или тогда Питон полное говно. Проверь, такого быть не должно.

Над задачей подумай еще. Словаря (пока не знаю, от чего к чему) здесь вполне хватит.
> можно было попробовать смастерить из этой таблицы граф и затем применить к нему стандартные методы поиска всех путей
This. А это
> (таблица правда маленькая и больше времени уйдёт на преобразование каждого её элемента в вершину графа)
иррелевантно.

Эффективность. Программы должны работать не медленнее и тратить ресурсов не более, чем это необходимо. Я повторю: не медленнее, а не настолько быстро, насколько это возможно. А то начинают оптимизировать каждую инструкцию, а добрым людям потом всё это разгребать, ёбаный пердот!
>> No.20875 Reply
>>20871
> Типа так?
Не совсем. Это домашняя папка юзера. Проблема в том, что "мой компьютер" это не настоящая папка. Короче нужно просто узнать названия всех дисков. Блин упорото как-то объяснил.
>> No.20876 Reply
>>20875
> названия всех дисков
Винда шоле?
>> No.20880 Reply
>>20872
Спойлеродебил соснул.
>> No.20881 Reply
>>20876
А то!
>> No.20882 Reply
>>20881
import win32api
drives = win32api.GetLogicalDriveStrings()
drives = drives.split('\000')[:-1]
print drives
Не?
>> No.20883 Reply
>>20873
> Проверь, такого быть не должно.
Действительно. Сделал функцию, которая просто применяет append к введённому в неё списку. Я раньше, до того как написать сюда, сделал подобное же, но переставлял первый элемент списка в конец - причём делал это, разумеется с помощью среза. Совсем вылетело из головы, что срез создаёт копию списка и работает уже с ним.
Премного благодарен, как-то я сильно затупил.
Ну, пока писал этот пост, придумал как малость улучшить программу, так что можно сказать, что потратил время не зря.
> Я повторю: не медленнее, а не настолько быстро, насколько это возможно.
Это справедливо, конечно, но в моём случае требуется перебирать пути в чуть более чем ста тысячах таких таблиц для одной полноценной программы. Так что тут "настолько быстро, насколько это возможно" экономит солидный кус времени. Особенно если помножить на то, что программа преимущественно для личного пользования, да возвести в степень того что применять её придётся не однажды.
> This
Тоже верно. Будь эта программа для чего-то иного, обязательно бы попробовал (просто ради того, чтобы посмотреть-попробовать сделать в питоне что-то такое - может займусь этим на выходных в порядке удовлетворения любопытства). Но в данном случае, к вышесказанному добавляется ещё и то, что в исходной таблице присутствует определённая структура и при "решении задачи", было бы нерационально отказываться от её использования и решать всё как в случае с произвольным {ациклическим направленным} графом.
>> No.20884 Reply
>>20883
Ad hoc оптимизацией занимаешься, в общем.
>> No.20886 Reply
>>20882
> win32api
Спасибо, это то что нужно. Жаль только, что нельзя этого сделать средствами стандартной библиотеки.
>> No.20994 Reply
Хм... если не ошибаюсь, то в python начиная с третьей версии немного переделали обращение со словарями/ключами? Не подскажите в чём ошибка следующего кода:
if h in spis.keys()==False:
    spis[h]=1
else:
    spis[h]+=1
h - кортеж, возвращаемый функцией, spis изначально пустой словарь
Собственно в словарь пытаются засовывать кортежи h (до этого куска кода ещё стоит while). Если такого ключа там нет, то его добавляют и присваивают значение 1 (встретился один раз). Если есть, то увеличивают значение на единицу (встретился ещё раз).

Проблема в том, h in spis.keys() похоже уже на первом шаге, когда словарь пуст, выдаёт True, ибо spis[h]=1 похоже не выполняется никогда.
капча: медскилз мужчины
>> No.20996 Reply
>>20994
> if h in spis.keys()==False:
Это ты сейчас на каком языке писал? Явно не на питоне.
Во-первых приоритеты операторов.
Хинт:
>>> 1 in [2,3] == False
False
>>> (1 in [2,3]) == False
True
Во-вторых на питоне то, что ты хотел написать, выглядит так:
if not h in spis:
...
В третьих defaultdict, используй его.
from collections import defaultdict
spis = defaultdict(int)
...
spis[h] += 1
>> No.21032 Reply
>>20996
> if not h in spis:
Есть же оператор not in.
>> No.21070 Reply
>>21032
Оп-коды там одинаковые, кому как нравится, так и пишет. Мне понятнее с нот впереди, но дело вкуса:
>>> def a(b):
...     if not 1 in b:
...         return
... 
>>> def c(b):
...     if 1 not in b:
...         return
... 
>>> dis.dis(a)
  2           0 LOAD_CONST               1 (1)
              3 LOAD_FAST                0 (b)
              6 COMPARE_OP               7 (not in)
              9 POP_JUMP_IF_FALSE       16

  3          12 LOAD_CONST               0 (None)
             15 RETURN_VALUE        
        >>   16 LOAD_CONST               0 (None)
             19 RETURN_VALUE        
>>> dis.dis(c)
  2           0 LOAD_CONST               1 (1)
              3 LOAD_FAST                0 (b)
              6 COMPARE_OP               7 (not in)
              9 POP_JUMP_IF_FALSE       16

  3          12 LOAD_CONST               0 (None)
             15 RETURN_VALUE        
        >>   16 LOAD_CONST               0 (None)
             19 RETURN_VALUE        
>> No.21106 Reply
Понадобилось перебрать файлы в каталоге и взять из каждого однотипную информацию. Полистав учебники, у меня получился такой код:
import os, sys, re
def someSearch():
    pattern1 = re.compile('a')
    pattern2 = re.compile('b')
    ...
    for fileName in os.listdir(os.getcwd()):
        file = open(fileName)
        content = ' '.join(file.readlines())
        a = pattern1.search(content).group(0)
        b = pattern2.search(content).group(0)
	...
Который даже работает, но. Как можно его ускорить? Если это важно, то это будет макрос для OpenOffice.
>> No.21107 Reply
>>21106
К OOo можно уже скрипты на Питоне писать?
>> No.21109 Reply
>>21107
Можно.
>> No.21119 Reply
>>21106
Для начала надо узнать что именно тормозит http://docs.python.org/library/profile.html
>> No.21123 Reply
>>21106
> Полистав учебники, у меня получился такой код:
Сидя у окна, в комнату влетел воробей.
> os.getcwd()
-> os.curdir
> pattern1 = re.compile('a')
> pattern2 = re.compile('b')
Вынести в глобальные константы.
> content = ' '.join(file.readlines())
Попробовать как-то заменить на read.
> a = pattern1.search(content).group(0)
group() достаточно.

По теме: попробовать выкинуть re.
>> No.21144 Reply
>>21106
> Как можно его ускорить?
Если тормозит на i/o - то, в общем-то, никак.

А вообще зависит от паттернов и содержимого файлов.
>> No.21156 Reply
File: Cannes+Film+Festival+2010+Mallika+Sherawat+dDRFDpLqH5ol.jpg
Jpg, 57.32 KB, 594×412 - Click the image to expand
edit Find source with google Find source with iqdb
Cannes+Film+Festival+2010+Mallika+Sherawat+dDRFDpLqH5ol.jpg
>>21119
Тема для меня неизведанная, но интересная.
>>21123
Спасибо за замечания.
>>21144
В том то и дело, что файлов десятки тысяч и штук десять регулярок. Я думал, может в алгоритме лажа. Ничего другого не придумал, кроме как:
  • Открыть файл.
  • Превратить его в строку.
  • Применить по очереди все регекспы.
  • Вывести результаты и перейти к следующему.
Но, видимо, если никто не обратил внимание, значит всё в порядке.
Ещё есть безумная идея использовать потоки. Вот и повод узнать что это такое и как с ними работать. Не знаю, может глупости говорю. А здесь это вообще применимо? И будет ли прирост скорости?
>> No.21165 Reply
>>21156
> Ещё есть безумная идея использовать потоки
Смотря на чем затык.
Я подозреваю два узких места - дисковое i/o и чтение файлов целиком. Потоки в этом случае во-первых не помогут, а во-вторых хрен знает, как оно с ООо будет работать вместе.
Потоки в общем случае помогают, когда не хватает ресурсов процессора. В питоне добавляется ограничение на GIL, параллельно может работать лишь нативный код, который освобождает GIL перед исполнением (в принципе, i/o модуль питона GIL должен освобождать, но, поскольку ограничение там по скорости самого диска, а не по скорости процессора, то особого смысла в этом нет).
> Но, видимо, если никто не обратил внимание, значит всё в порядке.
Я обратил внимание, но не зная структуры файлов, конкретного вида регулярок и результатов профилинга сказать точнее ничего нельзя.
Если проблема в регулярках, то решения есть, например, использовать Ахо-Корасика (реализация под питон - http://code.google.com/p/esmre/).

Если проблема в больших файлах, то надо подумать, есть ли необходимость их читать целиком, да еще и построчно, да еще и соединяя в одну строку.
Варианты - читать и проверять блоками. Читать сразу весь файл (file.read()), а не отдельные строки.
>> No.21167 Reply
>>21156
Выполни свой сценарий через [c]Profile и посмотри, какие функции занимают больше всего времени.
Если это только IO, то ничего не поделаешь.
Если это только re, попробуй без него.
Если оба, смотри предыдущий пункт или если скучно, можешь попробовать читать файлы и обрабатывать данные разными потоками один читает, второй обрабатывает.
>> No.22186 Reply
Бампую.

Нужно открыть пикчу, как строку байтов, а потом сохранить. Например открыли:
jpg=open(r'/xyuta/xyuta.jpg','rb')
st=jpg.read()
А сохранить не могу. Если тупо запихать строку в файл,
newjpg=open(r'/xyuta/new.jpg','wb')
newjpg.write(st)
получается битая хуита. Image.open() и Image.fromstring() из PIL, говорят, что строка неправильная.
>> No.22187 Reply
Господа питонисты, у меня к вам необычный вопрос:
представьте, что питон интегрирован с неким языком, в котором идентификаторы могут содержать специальные символы(дефис, астериск и т.п.). В какой форме было бы удобно с ними работать?
>> No.22188 Reply
>>22187
Конкретнее.
>> No.22190 Reply
>>22188
Какие именно детали нужны?
Есть, например, идентификатор 'foo+BAR^баз-x', определенный в другом языке, с которым питон работает на одной платформе. В питоне выражение 'x+y' читается как сложение 'x' и 'y', так что напрямую использовать этот идентификатор невозможно. Очевиден вариант обращения к нему через какую-нибудь спецфункцию 'external_id("foo+BAR^баз-x")', но выглядит это как неудобный костыль. Нужен удобный костыль.
>> No.22195 Reply
>>22190
> Очевиден вариант обращения к нему через какую-нибудь спецфункцию 'external_id("foo+BAR^баз-x")'
Но ведь это удобный костыль же.
>> No.22197 Reply
>>22195
Удобный для имплементации. Но 'externalid("function-name")(arg, externalid("CONSTANT-NAME"))' явно не образец читаемости. Есть ли лучшие идеи?
>> No.22199 Reply
>>22197
Закодить недопустимые символы последовательностями вида "uXXXX". Ну или как-то так.
>> No.22205 Reply
>>22199
Разметка лезет, куда ее не просят. Я сказал, что я хочу сказать "_uXXXX_" — значит, я хочу сказать "_uXXXX_", и никакая разметка мне тут не указ!
>> No.22207 Reply
>>22197
На мой взгляд, всё достаточно очевидно и няшно. Тебе эстетства или кодить?
>> No.22227 Reply
File: pypythongit.jpeg
Jpeg, 12.13 KB, 269×187 - Click the image to expand
edit Find source with google Find source with iqdb
pypythongit.jpeg
Разыскивается способ сделать pull из удалённого git репозитория в локальный, используя dulwich или доки в которых это разжевано чуть более подробно чем в официальных.
>> No.22233 Reply
>>22227
По идее pull = fetch + merge.
>> No.22258 Reply
>>22197
В голову лезут извращения. Даже писать не буду.
А где это у вас такая интеграция, что вы идентификаторы туда-сюда гоняете? Обычно объекты гоняют.
>> No.22290 Reply
>>22258
> В голову лезут извращения. Даже писать не буду.
Пиши, идеи лишними не бывают.
> Обычно объекты гоняют.
Свободный обмен идентификаторами это самый простой способ гонять объекты между языками, не так ли?
>> No.22348 Reply
File: 1330449588546.jpg
Jpg, 65.88 KB, 600×480 - Click the image to expand
edit Find source with google Find source with iqdb
1330449588546.jpg
Привет.
Ньюфаг в программировании, изучаю Пайтон 3 по книге Доусона. Возникла необходимость использования в программе базы данных. Но я о них ничего не знаю - какую выбрать, как прикрутить к программе? Что посоветуешь, доброкодер? Есть ли какие-нибудь мануалы для критически недалёких людей? Мне многого не надо - заполнять табличку (что-то вводить самому, остальное будет рассчитываться), сохранять её в файл (и открывать), да выводить на экран. Буду очень рад любым советам и наставлениям.
>> No.22349 Reply
>>22348
Осваивай сразу SQLAlchemy или ноускульки.
Я вот сейчас по ZDB угорел, достаточно удобно, не нужно тащить всякие майскули/постгресы, плюс не нужно мучаться с отображением объектов на реляционку.
>> No.22350 Reply
>>22348
Лиспачую sqlalchemy + sqlite.
>> No.22351 Reply
>>22349
>>22350
Спасибо.
SQLAlchemy, я так понял, есть мост между базой данных и программой?
>> No.22352 Reply
>>22351
Это ORM, object-relational mapper, т.е. отображение объектной модели на реляционную.
Ты в программе используешь обычные питоновые классы и объекты, а оно их автоматически переделывает в записи таблиц.
>> No.22353 Reply
File: 1.png
Png, 929.26 KB, 1280×1024 - Click the image to expand
edit Find source with google Find source with iqdb
1.png
>>22352
Значит, мне не нужно искать мануалы по SQLite, а сразу заняться SQLAlchemy?
>> No.22354 Reply
>>22353
Если вообще брать реляционки, то да.
Но, если тебе не нужно хранить миллионы записей, стоит взглянуть в сторону встраиваемых NoSQL, типа ZDB.
>> No.22371 Reply
На нем можно гостевые книжечки писать?
4хэлоуворлдщик
>> No.22372 Reply
>>22371
На любом тьюринг-полном языке можно написать всё, что можно написать на любом другом.
>> No.22373 Reply
>>22371
Доброчан, кстати, на питоне написан.
>> No.22374 Reply
>>22373
Откуда инфа?
>> No.22375 Reply
>>22372
Даже на асм?!
>> No.22376 Reply
>>22375
Особенно на асме.
>> No.22383 Reply
>>22373
Это 100%?
>> No.22384 Reply
>>22374
Зая когда-то упоминал. Правда если мне не изменяет память, часть функционала написана на C.
>> No.22385 Reply
>>22384
Я ещё помню, что он не может опубликовать код движка, так как используются некие сторонние компоненты, которые закрыты. Это так? Есть подозрения, что это может быть? Просто интересно.
>> No.22829 Reply
File: Python1.jpg
Jpg, 103.79 KB, 800×400 - Click the image to expand
edit Find source with google Find source with iqdb
Python1.jpg
Народ, насчёт это пасты. Я понимаю конечно, что автор больной и не лечится, но однако, что в этой пасте вполне правда, а что полное враньё?

Собственно, читаю Лутца 4-е издание. Стандартную библиотеку уж точно буду осиливать, а конвенцию тоже не наплевать, но всё без фанатизма. А что дальше? Что-то бред с асинхроными хранилищами?

И да, чем же так скриптовые языка отличаются от ЯП? Разницы сильно не вижу, но в Монти создавать списки и т.д. быстрее.
>> No.22830 Reply
>>22829
Что же в этой пасте заставляет считать её автора больным? Первые три пункта выполнить явно не повредит.
> Что-то бред с асинхроными хранилищами?
Если тебе не нужно заниматься хайлоадом, то не бери в голову. Всякая асинхронность/распределенность нужна далеко не всем.
>> No.22832 Reply
>>22830
Лурочка говорит:
"По непроверенным данным, написана школьником-долбоёбом из Харькова Пашей, который предпринял попытку написать принципиально новый движок™ для Сосача. ЧСХ, потерпел фиаско. Паста широко используется Анонимусом как ответ на дебильный вопрос "какой язык программирования учить"."

Народ, собственно, прощу разобрать эту пасту по пунктам, кроме первых трёх, они подходят для любого языка программирования, и вполне себе годны, то есть, насколько на реальна эта паста? Кстати, в отвлетлениях от неё, была мной замечена достаточно хорошая литература.
>> No.23182 Reply
Народ, не понимаю почему не работает пример из книги, пробовал наугад вставлять аргументы, не вышло:
(http://ideone.com/MxILA)
>> No.23183 Reply
>>23182
Ты запускаешь в третьем питухоне пример для второго. С префиксом байтостроки, т.е. b'spam' должно и в третьем заработать.
>> No.23184 Reply
>>23183
Сработало, спасибо, няша. Кхм, ну вот нашёл в учебники опечатку значит.
>> No.23186 Reply
>>23184
Это ты Learning Python by Mark Lutz читаешь?
>> No.23188 Reply
File: 3dd17cf2d77b1f9480291c22e274809f7ef68a7b.jpg
Jpg, 474.47 KB, 707×1000 - Click the image to expand
edit Find source with google Find source with iqdb
3dd17cf2d77b1f9480291c22e274809f7ef68a7b.jpg
>>23186
Ну у меня это называется Марк Лутц Изучаем Python 4 издание (2011), да.
>> No.23191 Reply
>>23188
> Изучаем Python 4
>> No.23194 Reply
[Esper-raws] To Aru Kagaku no Railgun - 13 [BDrip 720p x264 FLAC].mkv_snapshot_04.42_[2012.02.29_18.53.28].jpg
>>23191
Не анон, это 4 издание, Python 4 не вышел.
>> No.23411 Reply
А есть ли какие-нибудь веб-фреймворки без принудительного ООП?
>> No.23413 Reply
>>23411
Ни разу не встречал, а для чего тебе такие? Единственное, что могу тебе посоветовать CherryPy — он достаточно прост в обращении и не требует написания большого количества классов.
>> No.23433 Reply
>>23411
Упоротый сишкоид штоле?
>> No.23556 Reply
>>17180
> Например, как уже упоминалось, всё вроде как суть объект, но у списка и строки нет метода (или аттрибута) length. Нельзя написать mylist.length(), можно написать len(mylist). Мне кажется, это довольно говорящий пример.
{~}python
Python 2.7.3 (default, Apr 13 2012, 00:05:08)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
> > > a = [1, 2, 3, 4, 5]
> > > a.len()
5
> > > b = 'ty tupoj mudak'
> > > b.len()
14
>> No.23557 Reply
>>23556
Тоже самое для 3 версии, ещё меньше писать:
> > > a = [1, 2, 3, 4, 5]
> > > b = 'На доброчане все няши'
> > > len(a)
5
> > > len(b)
21
>> No.23560 Reply
>>23557
он хотел методы - на тебе метод
   .len()
>> No.23561 Reply
>>23560
 .__len__()
йобаная разметка
>> No.23579 Reply
File: 00001338.jpg
Jpg, 92.47 KB, 800×532 - Click the image to expand
edit Find source with google Find source with iqdb
00001338.jpg
сап питонач
я ничего не понял в малтитрединг логинге. юзаю logging либу. логгер настроен на 2 хендлера - консоль и файл
все треды пишут лог в один файл, корованы все дела
но при запуске ValueError: I/O operation on closed file
какого добра, спрашивается?
>> No.23589 Reply
>>23579
Потому что выводить лог, в общий для всех файл, должен только root logger.
>> No.23591 Reply
Почему долбаный zipfail помещает в архив файл вместе со всеми объемлющими директориями?
>> No.23593 Reply
Еще не появилось никаких тулз, чтобы компилировать код с питона в машинный? (не байт-код)
>> No.23595 Reply
>>23591
Потому что тебе лень скачать исходники и переписать.
>> No.23596 Reply
>>23593
Упоротый? Нет и не будет.
>> No.23597 Reply
>>23596
> Нет и не будет.
Вай нот?
Питон няшка, но это - единственное, что отбивает желание его изучать.
В конце концов, язык - лишь синтаксис и стандарт
>> No.23602 Reply
>>23597
> это - единственное, что отбивает желание его изучать.
Почему? Тебе нужен универсальный язык для всего? Так не бывает.
> Питон няшка
И откуда тебе знать, если судить по твоим словам, ты его ещё не изучал?
> В конце концов, язык - лишь синтаксис и стандарт
Ебать ты лох - других слов нет.
>> No.23604 Reply
>>23597
> Вай нот?
Потому что Python это интерпретируемый язык.
>> No.23612 Reply
>>23602
> Тебе нужен универсальный язык для всего? Так не бывает.
См. ответ 604 антону
> И откуда тебе знать, если судить по твоим словам, ты его ещё не изучал?
Читал философию языка, много постов на хабре о нем (в т.ч. сравнение с руби), да и знаком с синтаксисом в общих чертах. (знакомый пишет на нем, часто приходится читать его код)
> Ебать ты лох - других слов нет.
Смотрю доброчан все добрее и ламповее становится, прямо жуть.

>>23604
Для того же самого D есть так называемый dscript - интерпретатор. Вопреки википедии, придерживаюсь мнения, что язык - лишь стандартизированный синтаксис, компиляторы и интерпретаторы не часть языка.
>> No.23613 Reply
>>23602
Опережая вопрос. D - универсален, но малопопулярен, его имеет смысл изучать только для себя, что я собственно и делал.
Возможно он войдет в популярность, но нескоро. Пару раз совершенно случайно натыкался на сурцы на D, перспективы у него явно есть.
>> No.23614 Reply
>>23613
Перспективы у него точно такие же, как и у C++.
>> No.23615 Reply
>>23612
Для ASM тоже есть интерпретатор..
Но Python только интерпретируемый язык, он не предназначен для компилирования в машинный код.
Конечно можно попробовать, с помощью PyPy, частично интерпретировать его в компилируемый Си и т.д. Но зачем? буханка хлеба.jpg
>> No.23618 Reply
>>23615
Если в коде не будет eval'ов, то можно и компилятор в машкод написать, в принципе.
Смысл компиляции мне кажется следующим: возрастет скорось выполнения в десятки/сотни раз, уменьшится потребление памяти тоже значительно.
>> No.23624 Reply
>>23618
> Если в коде не будет eval'ов
И что это будет? Уже не Python?
Создавай свой язык.

Вспомни, для чего Python создавался и почему его сделали именно интерпретируемым.
Если можно в командном интерпретаторе в одну строчку написать небольшую команду без компиляции, куда быстрее, чем написать проект и откомпилировать его, а потом запустить бинарник, то зачем нужна компиляция? Без этого будет быстрее (в смысле создания скрипта - написать какую-нибудь парашу быстрее) и надёжнее.
Плюс терять все заебатые фишки Python как динамического языка. Ты уверен, что ты понял его философию-то, захабренный?
> Читал философию языка, много постов на хабре о нем (в т.ч. сравнение с руби), да и знаком с синтаксисом в общих чертах.
Ну и чё, норм Раби конпиляется?
А синтаксис как, кул выглядит? Синтаксис на свойства и особенности языка в последнюю, пожалуй, очередь влияет. Попограммировал бы уже на нём что-нибудь.
> Для того же самого D есть так называемый dscript - интерпретатор
Поиск не дал ничего вменяемого, чую, ты наврал насчёт компилятора или попутал просто.
>> No.23649 Reply
>>23618
> Если в коде не будет eval'ов, то можно и компилятор в машкод написать, в принципе.
Это вряд ли, в питоне и без эвалов хватает проблем с конпеляцией, в частности динамическое создание классов, динамическое переопределение методов у объектов и классов, динамическая типизация и т.д.
>> No.23654 Reply
>>23618
> компилятор в машкод
Масло маслянное.
>>23649
> поключаем python27.dll
> используем функции внутри C
> ускорение и статическая типизация!
trolltech.jpg
>> No.23668 Reply
>>23624
> Поиск не дал ничего вменяемого, чую, ты наврал насчёт компилятора или попутал просто.
Ох щи, и ведь вправду перепутал, пардоньте.
http://www.digitalmars.com/dscript/
>> No.23670 Reply
>>23615
> Конечно можно попробовать, с помощью PyPy, частично интерпретировать его в компилируемый Си
Спасибо, попробую.
> Но зачем?
При запуске программы не нужно запускать толстый интерпретатор команд и стдлибу, например.
Ну и да, как тут уже сказали, не надо тратить время на чтение py\byte-кода для интерпретатора, вследствии увеличивается скорость.

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

>>23624
> Без этого будет быстрее
Так если есть и интерпретатор и компилятор, можно выйграть и в скорости разработки, и в скорости исполнения.
>> No.23671 Reply
>>23670
> При запуске программы не нужно запускать толстый интерпретатор команд и стдлибу, например.
> Ну и да, как тут уже сказали, не надо тратить время на чтение py\byte-кода для интерпретатора, вследствии увеличивается скорость.
> Кроме того, иногда не очень хочется чтобы твой код читали (байт-код и обфускация не так надежны)
С питоном это невозможно. VM с JIT типа PyPy - это самое близкое к конпеляции, что можно получить без радикального изменения дизайна языка.
Да и не нужно, ибо PyPy достаточно быстр.

Если же конпелировать кусок питона (т.е. радикальное упрощение) то конпеляторов дохуя и больше - ShedSkin, Cython и т.д.
>> No.23673 Reply
>>23671
> Если же конпелировать кусок питона (т.е. радикальное упрощение) то конпеляторов дохуя и больше - ShedSkin, Cython
Ни один, ни другой не являются компиляторами Python.
>> No.23674 Reply
>>23670
> Так если есть и интерпретатор и компилятор, можно выйграть и в скорости разработки, и в скорости исполнения.
> выйграть
Где ты такой язык-то видел, выйгрышный ты наш чудила?
>> No.23675 Reply
>>23673
Чо, правда штоле? Они по-твоему вдруг перестали генерировать машинный код?
>> No.23677 Reply
>>23654
> Масло масляное.
Таки нет. Бывают компиляторы не в машкод.
>> No.23679 Reply
>>23671
> VM с JIT типа PyPy
Ну уж нет, лучше страдать от скриптовости, чем от джавагадских VM
>> No.23680 Reply
>>23679
Наркоман штоле? При чем тут джава? PyPy JIT оптимизирован под питон и дает стократный прирост производительности на математике.
>> No.23681 Reply
>>23680
Все VM - от лукавого.
>> No.23682 Reply
>>23681
Как там в 90х?
Сейчас языков и платформ без VM не осталось. Даже на ембеддедах используются VMы типа дарвина.
>> No.23683 Reply
File: imagination[1].gif
Gif, 56.45 KB, 400×405 - Click the image to expand
edit Find source with google Find source with iqdb
imagination[1].gif
>>23674
Haskell! Есть и интерпретатор и компилятор.
а вообще, для компилируемых языков, не трудно сделать интерпретатор.
>> No.23694 Reply
>>23683
% cat cishka 
#!/bin/sh
fname="$(realpath $1)"
bname="$(basename $fname)"
cachedir="/tmp/.cishka_cache$(dirname $fname)"
mkdir -p "$cachedir"
gcc $fname -std=c99 -o "$cachedir/${bname}.bin"
$cachedir/${bname}.bin
% cat shit.c 
#include <stdio.h>
int main() {
    printf("суп лиспач\n");
}
% cishka shit.c 
суп лиспач
Типа так?
>> No.23700 Reply
>> No.23701 Reply
>>23677
Бывают, но тогда они называются трансляторы.

>>23683
Запили С++ интерпретацию, там не так глубоко C++ тред. Хочу видеть.

>>23700
Не юзал cling. Пробовал cint, очень много вещей там не по сишному, вплоть до невосприятия синтаксиса. То есть, сишкой я бы это таки не назвал.

>>23674
Common Lisp. Транслирует на ходу в машкод все функции, и окружение можно дампнуть в файл, сделав бинарником.
>> No.23703 Reply
>>23701
> Запили С++ интерпретацию, там не так глубоко C++ тред. Хочу видеть.
LLVM.
>> No.23910 Reply
>>23701
> Common Lisp
SBCL. Остальные реализации либо интерпретаторы, либо с байткодами. Ещё ECL компилит функции через GCC, но это ПИ**ЕЦ КОСТЫЛЬ.
>> No.23912 Reply
>>23910
orelly?
cmucl, ccl.
>> No.23915 Reply
File: st.jpg
Jpg, 3.57 KB, 139×140 - Click the image to expand
edit Find source with google Find source with iqdb
st.jpg
Адепты питона, выручайте. Поставил Sublime Text 2, он вроде как преимущественно написан на питоне, так что обращаюсь к вам.
Когда я юзаю Build для питона или кода на любом другом языке(пробовал джаву запустить и плюсы), то получаю в консоли следующую ошибку
Traceback (most recent call last):
  File ".\sublime_plugin.py", line 337, in run_
  File ".\exec.py", line 154, in run
  File ".\exec.py", line 45, in __init__
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcf in position 6: ordinal not in range(128)
Гугл говорит что все дело в пути к файлу или в имени пк. Но в них нет кириллических или каких-то других символов. Не знаю что и делать, халп.
>> No.23920 Reply
>>23915
Добавь в оба два питонячьих файла (sublime_plugin.py и exec.py):
# -*- coding: utf-8 -*-
Авось заработает.
>> No.23921 Reply
File: 13.03.2012-550x388.png
Png, 397.03 KB, 550×388 - Click the image to expand
edit Find source with google Find source with iqdb
13.03.2012-550x388.png
>>23920
Не помогло к сожалению. Все равно держи няшу.
Пробовал разные версии сублайма. Все версии выше 2.0 ведут себя одинаково. Попробовал 1.4 - все ок. Любопытная ситуация.
>> No.23926 Reply
>>23915
Я таки нашел решение ребятки. Нужно заменить 45 строку exec.py вот этим
os.path.expandvars(v.decode(sys.getfilesystemencoding())).encode(sys.getfilesystemencoding())
может еще кто-то с подобным столкнется. Всем добра.
>> No.23930 Reply
>>23926
Ды да, в питоне вечно трах между байто-строками и юникот-строками. А еще сорцы по умолчанию в аски-7, пендосам то поболту, а все остальные ебутся.
>> No.23933 Reply
>>23930
А нехера в сорцах писать не по-пиндосски. Каждая национальная строка должна быть снабжена идентификатором и помещена во внешний файл, который будут потом перепидорашивать переводчики.
Миможирнодил
>> No.23934 Reply
>>23933
Дело в том, что в либах и нету надписей не по-пендосски, вот подключает ее какой-нибудь чурка косоглазый, хочет передать параметром свои иероглифы, а она херакс - кэннот инту ёр вейрд леттерс, искпектид юэс-аскии-7 йопта.
>> No.23935 Reply
>>23682

Смартфоны и планшеты с железом уровня топовых десктопов начала 200х - это уже нихуя не эмбед, эмбед - это когда гарвардская архитектура и полтора - два килобайта ОЗУ, на край 64-128.
>> No.23937 Reply
>>23935
> эмбед - это когда гарвардская архитектура и полтора - два килобайта ОЗУ, на край 64-128.
Эмбеддедов с такими характеристиками давно уже нет нигде, даже в армии.
>> No.23940 Reply
>>23556
Кстати, читаю я "Dive Into Python" и не понимаю кто тут не в курсе происходящего: Питон-в-штанах-кун пишущий в >>17180
> ООП в Пайтоне - один из его костюмов, а вовсе не его душа
или автор отличной книги, утверждающий, что "всё есть объекты"?
>> No.23941 Reply
>>23937
А как же домофоны, светофоры, стиральные машинки и контроллеры впрыска топлива?
>> No.23942 Reply
>>23937

Орили? Видимо, NXP, Texas instruments и Freescale тогда мне чото пиздят:

http://www.nxp.com/products/microcontrollers/cortex_m0/lpc1100_x_l/#products
>> No.23943 Reply
>>23942
> 32 bit
> 4kb flash
> 1kb sram
Байтоёбы с паяльниками действительно настолько пизданутые что
   покупаются на этот свежий хлеб чтоле?
>> No.23949 Reply
>>23943

Дык. Есть же на том же сайтике в панельке слева линейка на ядре M4 c внешней памятью, MMU, двумя ядрами и прочим - любые фреймворки взлетят, даже линух возможно, но нет, не хотим, хотим жрать говно кококо сот20 нимагу в бга нимагу заказать у китайцев за копейки многослойную плату. Лучше нахуярить лутом говно под сот20 и ебать байты в 2 кб ОЗУ.
>> No.23951 Reply
>>23949

Отлично. А теперь объясни мне, скриптодроч, зачем я должен увеличивать стоимость изделия, зачем я должен вместо компактного корпуса и разводки под сот 20 для задач мелкой автоматизации покупать дуру с двумя ядрами в QFP144 минимум и разводить под неё многослойную плату? Зачем мне внешний интерфейс к памяти когда моя задача - померять одну ногу и выдать по формуле нужное значение на другую?
>> No.23953 Reply
>>23951
> Зачем мне внешний интерфейс к памяти когда моя задача - померять одну ногу и выдать по формуле нужное значение на другую?
Ну то есть ты только что подтвердил, что эмбедщики занимаются по сути запиливанием лабораторных работок в пару строчек на ассемблере. Вот пиздец, да вы ещё большие макаки чем жавобляди - те хотя как негры пашут.
>> No.23962 Reply
>>23943
Ну, чтобы покупаться на 32-bit при таких характеристиках, нужно быть реально умственно неполноценным. А если ты имеешь ввиду маленькие объемы памяти, то это нормально, для многих задач в эмбеде этого хватает за глаза.
>> No.23966 Reply
>>23953
Во-первых, няша, ты слишком злой. Выпей вкусненького чаю, с медом и булочками.
Во-вторых, эмбедщики — это не программисты в полном смысле этого слова. Это электронщики. Я не встречал еще ни одного программиста, который бы писал под ATmeg-и и при этом не умел бы паять. Отсюда "в-третьих": да, эмбедщики по сути занимаются запиливанием лабораторных работок в пару строчек на Оссёмблере. Либо очень-очень жёсткой байтоёблей шипованным хуём без смазки через ухо прямо в мозг.
>> No.23975 Reply
>>23949
> заказать у китайцев за копейки многослойную плату
попезди мне тут функци-аналоблядок. и да, мы говорим о промышленном производстве - разницу в пару баксов умнож на 100 тыс., которые я могу положить себе в карман/пустить на рекламу

на самом деле между похапешниками и хаскеллеблядями только одна разница - первые знают что их возле параши, а вторых нужно еще разъяснять
>> No.23977 Reply
>>23975
> и да, мы говорим о промышленном производстве
Дай угадаю, это наверняка то самое крупносерийное промышленное производство плат для ядерных электростанций?
>> No.23980 Reply
А вообще тред утек в каком-то неправильном направлении.

И если уж говорить о питоне и эмбеддеде то вот - http://pyastra.sourceforge.net/ Компиляция питона (точнее его небольшого подмножества) в самый что ни на есть 8-битный PIC.

Если заглнуть в исходнички примеров - сразу станет видна серъезная проблема такого подхода - в питоне как в высокоуровневом ЯП очень много автоматики, которая, очевидно, создает накладные расходы. Незаметные на большом компутере, но ощутимые или даже недопустимые на однокристаллках.
>> No.23981 Reply
>>23951
Я думаю что виной всему тут иннертность эмбедовендоров. Типа "низя выпустить 32-разрядный арм в DIP8 там же 32-разрядные шины их же никуда не вывидешь!!". Вот одумаются расширят линейку форм-факторов для армов и можно будет греметь ацп, дрыгать ногами на питоне, хаскеле и си-шарп.
>> No.23984 Reply
>>23981
Анальные игрушки для быдляков никому не сдались. И никого это не беспокоит.
>> No.24224 Reply
File: 1170156528066.gif
Gif, 19.34 KB, 618×291 - Click the image to expand
edit Find source with google Find source with iqdb
1170156528066.gif
Сап Добропрограммач.
Пытаясь использовать <class 'type'> в качестве ключа в словаре, столкнулся с проблемой - один и тот же класс, может быть не одним и тем же классом...
`class: MyClass: pass`
dictioanry[MyClass] = value
`'''тем временем, в паралельном треде...'''`
`from myModule import MyClass`
dictionary[MyClass] KeyError: <class 'myModule.MyClass'>
`repr(dictionary)`
`{<class 'MyClass'>: value}`
Погуглив, обнаружил что hash() генерирует хеш классам, основываясь на id(), результат которой не всегда постоянен (в CPython).
Как и где переопределить hash, eq и т.д. для <class 'type'>?
Или как добиться подобного поведения другим способом (для <class 'type'>)?
>> No.24239 Reply
File: water_lj2.jpg
Jpg, 116.42 KB, 580×580 - Click the image to expand
edit Find source with google Find source with iqdb
water_lj2.jpg
>>17058
Анон, я к тебе с откровенно нубскими вопросами, ты уж прости. Их два, кстати, но если ты на них ответишь, то прям дашь мне надежду на счастье.
1. Часто слышал, что если мне не будет хватать производительности пайтона, то я могу какие-то участки кода переписать на крестах, к примеру. Анон, как это происходит. Как соединить вместе питоний код и код на крестах? Взгрей ссылкой, что почитать по этой теме.
2. Насколько мне поможет pypy, да и вообще насколько он хорош?
>> No.24243 Reply
>>24239
1. http://docs.python.org/extending/extending.html
2. Нинасколько, пока не определишься, помощи в чём ты стремишься от него добиться. Хорош производительностью относительно мейнстримной имплементации и возможностью трансляции в более нискоуровневый язык, тот же Си, к примеру.
>> No.24258 Reply
>>24224
Используй имя класса (строку).
>> No.24282 Reply
File: am i not late guise.png
Png, 21.34 KB, 180×176 - Click the image to expand
edit Find source with google Find source with iqdb
am i not late guise.png
>>23411

Pyramid, не?
>> No.24287 Reply
>>24258
Именно для этого я и хотел переопределить методы __hash__, __eq__, что бы классы сравнивались по имени, а не по id.
Но теперь ещё оказалось вот что:
`>>> from module.myModule import MyClass as Class1
`>>> from myModule import MyClass as Class2
`>>> issubclass(Class1, Class2)
`False
ЧЯДНТ? Что то я совсем не понимаю как, на самом деле работает import.
>> No.24303 Reply
>>24287
Ты фактически импортируешь классы из двух разных неймспейсов. То есть, у тебя получается два совершенно разных класса. И пофигу, что с одним и тем же содержимым — Питон про это ничего не знает.
>> No.24304 Reply
>>24303
То есть, не выйдет без шаманства и костылей использовать один и тот же класс, в модулях из разных неймспейсов?
>> No.24306 Reply
>>24304
Почему, выйдет, если Питон позволяет
> from myModule import MyClass as Class1
> from myModule import MyClass as Class2
>> No.24307 Reply
>>24306
Это 3-й Питон позволяет.
>> No.24309 Reply
>>24306
Имелось ввиду, что при такой схеме:
..\
..[module1]
..\myModule\
..\myModule\MyClass
..\myModule\[module2]

[module1] и [module2] не смогут использовать один и тот же класс если заранее не известны полные пути.
>> No.24748 Reply
>>24224
class EQ(type):
    __eq__ = lambda s,x: True
    __hash__ = lambda s: 333
#python3
class MyClass(metaclass=EQ): pass
#python2
class MyClass:
    __metaclass__ = EQ
> MyClass == 'random'
True
>>> hash(MyClass)
333
>> No.24831 Reply
File: 1339280569292.gif
Gif, 2050.99 KB, 525×300 - Click the image to expand
edit Find source with google Find source with iqdb
1339280569292.gif
Подскажите пожалуйста, куда копать, чтобы освоить написание клиентов для веба(сохранять картинки, логинится на трекерах и т.д). Интересует библиотека с толковой документацией или учебник. Пробовал mechanize, twill - не разобрался с мануалами. Также подойдут ссылки на ресурсы где можно что-то узнать по сабжу.
>> No.24832 Reply
>>24831
urllib, urlib2, cookielib посмотри примеры — там все просто.
>> No.24833 Reply
>>24832
Чего-то более высокоуровневого нет?
>> No.24835 Reply
>>24833
Для твоих задач хватит, twill и mechanize только облегчать заполнение форм. Но они все еще не могут в js, насколько я помню, так что иногда все равно придется строить запросы самостоятельно. Для простых грабберов стандартных либ хватало более чем, разве что дополнительно использовал beautifulsoup — он входит так же в mechanize. Не знаю куда уже проще.
>> No.24855 Reply
>>24833
Есть requests, он очень клевый и всяко удобнее урллиба.
>> No.25037 Reply
File: img1006_162.jpg
Jpg, 155.31 KB, 660×990 - Click the image to expand
edit Find source with google Find source with iqdb
img1006_162.jpg
Доброчан, есть окно на pyQt с двумя вкладками. На одной из них два QPlainTextEdit. Работать должно так: при вводе текста в верхнюю форму текст должен копироватся в нижнюю. Копироватся должно при изменении текста и непрерывно(бесконечный цикл). Но как быть со второй вкладкой?
Получается зацикливание на копировании текста.
>> No.25038 Reply
>>25037
Зачем бесконечный цикл, если тебе просто нужно обрабатывать сигнал QPlainTextEdit::textChanged?
>> No.25041 Reply
File: 1341721109632.jpg
Jpg, 95.58 KB, 500×714 - Click the image to expand
edit Find source with google Find source with iqdb
1341721109632.jpg
>>25038
Как правильно записать сигнал? Получаю вот такое:(t1 мой QPlainTextEdit)

self.connect(self.t1, self.t1.textChanged(),
TypeError: native Qt signal is not callable

Заранее спасибо.
>> No.25043 Reply
>>25041
t1.textChanged.connect(_callback)
или
self.connect(t1, QtCore.SIGNAL("textChanged()"), _callback)
>> No.25044 Reply
>>25041
t1.textChanged.connect(handler_function)
>> No.25046 Reply
Почему кто то использует что то кроме QT? Это же охуенно!
>> No.25048 Reply
File: lWRQirGZip0.jpg
Jpg, 92.80 KB, 820×1024 - Click the image to expand
edit Find source with google Find source with iqdb
lWRQirGZip0.jpg
Доброчан, подскажи. Есть SQLCE в которую мне надо запихнуть данные. Пытаюсь выполнить следующее:

#--coding: utf-8 --
import adodbapi

conn=adodbapi.connect("Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source='base.sdf';SSCE:Database Password='';")
c = conn.cursor()

query = "INSERT INTO wrkorglicense (reforgid, Series, Number, DateBegin, DateEnd, reflicTypeid, Vidana) VALUES (1, 1234567890, 0987654321, '01.01.2012', '01.01.2013', '17', 'test')"
c.execute(query)

query = 'SELECT * FROM wrkorglicense'
c.execute(query)

res = c.fetchall()
for row in res:
print row
c.close()
conn.close()

В текущем коннекте запись есть!
> ('9', '1', '1234567', '564654654', '01.01.2012', '01.01.2013', '17', '\xd0\xb0\xd0\xb2\xd1\x8b\xd0\xbf\xd1\x8b\xd0\xb2\xd0\xb0\xd0\xbf\xd1\x8b\xd0\xb2\xd0\xb0\xd0\xbf')
> ('28', '1', '1234567890', '987654321', '01.01.2012', '01.01.2013', '17', 'test')
Но если в следующем коннекте:
> ('9', '1', '1234567', '564654654', '01.01.2012', '01.01.2013', '17', '\xd0\xb0\xd0\xb2\xd1\x8b\xd0\xbf\xd1\x8b\xd0\xb2\xd0\xb0\xd0\xbf\xd1\x8b\xd0\xb2\xd0\xb0\xd0\xbf')
Что это за мистика?
>> No.25049 Reply
>>25048
Прозреваю отключенный автокоммит. Коммить изменения.

мимокрокодил
>> No.25051 Reply
>>25049
Можно поподробнее уважаемый крокодил.
>> No.25052 Reply
>>25049
Спасибо уважаемый крокодил.
>> No.25173 Reply
File: 882758.jpg
Jpg, 230.48 KB, 1000×1261 - Click the image to expand
edit Find source with google Find source with iqdb
882758.jpg
>>17058
Привет, решил упороться на ближайшие 3 года каким нибудь языком программирования. Сегодня уже хотел взять на вооружение C# но внезапно вспомнил про Python. Слышал что питон няша, и вообщем то больше нечего дельно о нем не слышал. Меня интересует что можно интересного сотворить на нем? Стоит ли тратить время на питон или лучше углубится в шарп? Смогу ли я делать игры на этом чудо языке? По моему можно, если мне память не изменяет. Имею немного практики в программирование на шарпе и плюсах. Особо не углублялся так как не интересовался. Просто делал лабы, игры, курсовые которые задавали в универе в течении 2 лет. Уже как пол года не кодил, только баловался не большими скриптами и .bat файлами но они думаю не считаются. Надеюсь что наставишь меня на путь истинный доброанон.
>> No.25174 Reply
>>25173
игры можно. есть либа pygame, есть привязка к OpenGL
да вообще библиотек к питону очень много
>> No.25175 Reply
>>25174
python26.dll это значит используют питон версии 2.6 ? Ничего страшного если я начну курить 2.6 версию? Тяжело поднять сетевые игры на питоне?
>> No.25177 Reply
>>25173
Можете написать какие трушные программы написаны на питоне? чтобы ознакомится и понять что вообще он из себя представляет.
>> No.25180 Reply
>> No.25182 Reply
>>25046
Потому что это за пределами плюсов, это охуенно только как гуедельня.
>> No.25186 Reply
File: 93896cc86d116daa38235a9c170d27db.jpg
Jpg, 225.62 KB, 716×1011 - Click the image to expand
edit Find source with google Find source with iqdb
93896cc86d116daa38235a9c170d27db.jpg
Няши, у меня есть 2 QPlainTextEdit. Нужно из первого при изменении текста, скопировать этот текст во сторой. Доброкодер подсказал, что нужно обрабатывать сигнал textChanged(), но textChanged() не позволяет взять строку из QPlainTextEdit.(спинбокс, например, умеет valueChanged(x))
Как выполнить 2 действия(скопировать с одного, вставить в другой) от одного сигнала, или вызвать функцию(самодельную) которая скопирует и вставит. >>25041 >>25037 семен, инфа 100% ;)
>> No.25188 Reply
>>25046
Потому что в C++ сложный язык.
>> No.25203 Reply
>>25186
> вызвать функцию(самодельную)
this.
>> No.25205 Reply
>>25203
Я совсем нуб, и не знаю как. Окошко сделал в Designer, импортировал через uic и вот это, - не работает:
QtCore.QObject.connect(window.t1, QtCore.SIGNAL('textChanged()'), window.t2, QtCore.SLOT('paste()'))
Сигнал есть(пробовал закрывать окно от него), но вторая часть - никак. Как правильно записать в не ООП стиле?
>> No.25212 Reply
>>25205
def copy_paste():
    window.t2.plainText = window.t1.plainText
  
QtCore.QObject.connect(window.t1, QtCore.SIGNAL('textChanged()'), copy_paste)
#или
window.t1.textChanged.connect(copy_paste)
>> No.25213 Reply
>>25205
> вот это, - не работает
Вот это это где? Туда вообще выполнение кода доходит?
> Как правильно записать в не ООП стиле?
> > QT
Ты куда-то не туда едешь. В философии QT все решается через ООП.
>> No.25216 Reply
>>25212
упс ... так оно работать не будет..
Добавь
global window
в начало copy_paste.
>> No.25220 Reply
>>25213
> через жопу
>> No.25226 Reply
File: sample-78b7490fa3ffe80f01fdd46426234e14.jpg
Jpg, 98.21 KB, 850×850 - Click the image to expand
edit Find source with google Find source with iqdb
sample-78b7490fa3ffe80f01fdd46426234e14.jpg
>>25216
window.t2.plainText = window.t1.plainText в консоли пишет, что нет атрибута plainText, если window.t1.copy() window.t2.paste() вставляет кусок который был в буфере обмена(один и тотже). Сделал вот так: window.t1.selectAll() выделяем, window.t1.copy() копируем, window.t1.moveCursor(11, 0) курсор в конец текста(снимает выделение), window.t2.selectAll(), window.t2.paste(), заменяем весь текст на скопированый. Всем, кто помогал, спасибо. Алсо, теперь нужно вводить капчу на каждый пост? Раньше первых 2-3 поста капчевались, последующие - нет.
>> No.25228 Reply
>>25226
Твой IP проклят доброчаном.
>> No.25232 Reply
>>25226
> нет атрибута plainText
Вроде раньше был.
Ну тогда:
def copy_paste():
    window.t2.setPlainText(window.t1.toPlainText())
# или сразу
window.t1.textChanged.connect(lambda: window.t2.setPlainText(window.t1.toPlainText()))
>> No.25315 Reply
Привет, добрый кун.
Качаю в пять потоков файлики, перечисленные в DATA:
pool = Pool(processes=5)
pool.map(action, DATA)
Есть желание прерывать выполнение функции action, если возникнет некоторое исключение при обработке отдельного файлика. Циклов в функции не используется, поэтому break не подходит. Подскажи, пожалуйста, как можно реализовать?
>> No.25320 Reply
>>25315
> качает файлики
> использует процессы
You doing it wrong.
> прерывать выполнение функции action
try:
    action(*args, **kwargs)
  
except (некоторое исключение при обработке отдельного файлика):
    return
>> No.25321 Reply
>>25320
Большое спасибо. А как правильно качать файлики в несколько потоков?
>> No.25324 Reply
>>25321
Thread Pool
>> No.25326 Reply
>>25324
Спасибо, сделал так:
from multiprocessing.pool import ThreadPool
...
pool = ThreadPool(5)
pool.map(action, DATA)
>> No.25329 Reply
>>25326
Неужели работает?
>> No.25338 Reply
>>25329
Да, работает без проблем. Питон третий, кстати.
>> No.25382 Reply
File: 800px-Grave_digger_(truck).jpg
Jpg, 117.42 KB, 800×542 - Click the image to expand
edit Find source with google Find source with iqdb
800px-Grave_digger_(truck).jpg
Итак. Кто пользовался PyPy? Впихнуть его в аптану удалось без проблем, но впрочем оно и до этого использовалось вместо стандартного интерпретатора. А вот где всегда находились грабли, так это в попытке импорта библиотек.
Я совсем не понимать процесса. Может кто рассказать куда чего пихать и вообще как происходит этот интимный процесс связи собственного кода и сторонних модулей?
>> No.25516 Reply
File: 071.jpg
Jpg, 407.51 KB, 1440×1080 - Click the image to expand
edit Find source with google Find source with iqdb
071.jpg
Анончик, хотел тебе вопрос задать, но уже сам все нашел. Держи няшку.
>> No.25519 Reply
File: jin-roh.jpg
Jpg, 6.05 KB, 193×261 - Click the image to expand
edit Find source with google Find source with iqdb
jin-roh.jpg
>>25516
А я вот сижу, хочу не знает чего. Как быть?.. А ну его в хуй, пойду онемэ упарывать.
>> No.25538 Reply
Какие есть (желательно кросс-платформенные) пайтоновские библиотеки для высокоуровневого рисования на экран? Хочу поэкспериментировать с рисованием всякого математического веселья на экран, но pygame кажется для этого тяжеловатым.
>> No.25539 Reply
>>25538
pygame сделан поверх SDL, всё ОК, не бойся.
Есть ещё движок Panda3D, про него почитай.
>> No.25540 Reply
>>25539
Но в pygame же слишком много хлама, всякие коробки и прочее.
Мне бы просто возможность пикселям цвет задавать, да линии рисовать, лол.
>> No.25541 Reply
>>25540
Может стоит тогда использовать pyQt или pyGTK вместе с их виджетами и средствами рисования и графики?
>> No.25542 Reply
File: pytk.png
Png, 2.75 KB, 208×128 - Click the image to expand
edit Find source with google Find source with iqdb
pytk.png
>>25538
Как насчет tk canvas?
``from Tkinter import *

master = Tk()
w = Canvas(master, width=200, height=100)
w.pack()
w.create_line(0, 0, 200, 100)
w.create_line(0, 100, 200, 0, fill="red", dash=(4, 4))
w.create_rectangle(50, 25, 150, 75, fill="blue")

mainloop()
``
Например.
>> No.25547 Reply
>>25538
Математическое веселье рисуется через matplotlib, который находится по весьма оригинальному адресу http://matplotlib.org/
Но уровень совсем высокий, знай себе значения задавай и получай результат. Никакого рисования по сути и не происходит.
>> No.25563 Reply
>>25542
Во, точно! Я знал, что должно быть что-то простое. Спасибо и добра тебе, няша.
>> No.25646 Reply
Привет, анон-питонщик.
   Ситуация такова: поверхностно знаю вышмат, хорошо представляю себе программирование: классы, объекты, циклы и прочую логику. Поверхностно знаю Паскаль, Java, C.
   Заинтересовал Питон по причине удобного синтаксиса и прославленной(?) простоты. Хочу заняться написанием не математически-олимпиадных задачек, а конкретно имеющего применение кода %% (не хочу без математики научится кодить, просто цель - нужный код, а не гипотетические мат-задачи) %% . Какие подводные камни, что читать?
>> No.25647 Reply
>>25646
*Быстрофикс разметки.
с:полагать исчезают
>> No.25655 Reply
>>25646
Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
>> No.25656 Reply
>>25655
Паста не нужна.
>> No.25663 Reply
>>25646
Если с программированием уже знаком, то просто почитай http://www.python.org/doc/
Некоторые часто употребляемые конструкции, краткий пересказ как правильно писать код и т.д. http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html
>> No.25671 Reply
File: ня-Susan-Coffey-36067.jpeg
Jpeg, 296.99 KB, 683×1024 - Click the image to expand
edit Find source with google Find source with iqdb
ня-Susan-Coffey-36067.jpeg
>>25663
Спасибо, няша. Держи Сьюзан.
>> No.25705 Reply
File: -Huf3h-H1tM.jpg
Jpg, 81.39 KB, 604×362 - Click the image to expand
edit Find source with google Find source with iqdb
-Huf3h-H1tM.jpg
>>25646
> Хочу заняться написанием не математически-олимпиадных задачек, а конкретно имеющего применение кода.
Тогда тебя ждут чудные приложения на Django и Pylons. Применение на практике OpenGL и OpenCV, PyGTK и WxPython для интерфейсов. И прочие прочие чудеса. И да, математику лучше сразу отложи на некоторое время. Учить сторонние библиотеки (которые на практике всегда лучше собственных велосипедов) - это тебе не алгоритмы выдумывать и рассуждать о классах сложности, это запоминать херню вроде "Метод main прикладного объекта Wx обязательно должен возвращать значение отличное от None, иначе нихрена не пашет".
>> No.25720 Reply
>>25705
План: прочесть/понять книги по синтаксису(Лутц, ибо для Дайва я еще недостаточно про) > Выучить стандартную библиотеку > Pylons для вэба + PyGTK для десктопа(размышления: а Tkinter не будет лучше? Все таки кроссплатформа и уже в поставке) > Радость от программирования.
В плане есть совсем уж критичные баги?
>> No.25727 Reply
>>25720
> книги по синтаксису
Злая шутка.
>> No.25738 Reply
>>25727
Угу. Некоторые фишки непонятны и не поясняются, вроде нахрена >> или " незакрытые в строках, но это я еще пойму, надеюсь. По голому коду изучать тоже не сладкое дело, так что пока надеюсь на это и святые справочники/документация. Алсо хочу всю базу выписать в блокнотик и так запоминать потом, запиливая всякие хэллоуворлды, так должно по идее быть лучше и легче.
>> No.25739 Reply
>>25738
Не помню, было или нет: http://python.org/doc/
>> No.25750 Reply
>>25720
Tkinter - не лучше. wxPython и PyGTK давно уже кроссплатформенее некуда (есть грабли, но тебе о них заранее узнавать, только мозги себе пудрить), выглядят нативно на всех платформах и позволяют легко и просто клепать тырфейсы. Tk выглядит как говно, особенно не обновляется и да... с ним можно понять суть эвент-бейзеда и прочей шушеры. Но потом придется брать и учить PyGTK, чтоб рожа у проги выглядела годно для продажи. Так не проще ли сразу взять нужный инструмент?
>> No.25781 Reply
>>25750
>>25739
> > святые справочники/документация
> > Не помню, было или нет: http://python.org/doc/
Было и используется.
> Но потом придется брать и учить PyGTK, чтоб рожа у проги выглядела годно для продажи. Так не проще ли сразу взять нужный инструмент?
Благодарю. С меня решение реквеста. Если срочно что-нибудь понадобится - чем смогу.
>> No.25818 Reply
Здравствуй, анон-питонщик.

В качестве второго этапа собеседования выслали тестовое задание. Суть задания раскрывать не буду. Решение требуется написать на питоне. Язык я в глаза до этого не видел, но, благодаря книге Россума, все-таки написал прогу. Работает даже.

Суть решения такова: 1. открыть файл; 2. считать данные; 3. выполнить некоторую последовательность действий (однократно); 4. записать результат обратно и закрыть файл. Все эти шаги я реализовал без какого-либо разбиения программы на функции/процедуры; писал команды просто по порядку.

Два вопроса: желательно ли проводить разбиение кода на отдельные части? И желательно ли писать обработчики на каждое возможное исключение?
>> No.25820 Reply
>>25818
Да.
>> No.25838 Reply
>>25818
> выслали тестовое задание. Суть задания раскрывать не буду
Мне всегда казалось, что суть тестовых заданий в их сути, и главное реализовать их суть.
>> No.25845 Reply
>>25838
Глядя на твоё решение тестового задания, работодатель также оценивает и твой стиль написания кода. Если даже ты решил задачу, но при этом весь код решения лежит в main, в нём полно скопипащенных кусков, все переменные имеют имена из одного-двух символов, и на всё решение нет ни одного содержательного комментария - можешь лишь надеяться, что работодатель когда-нибудь в далёком будущем тебе обязательно перезвонит.
>> No.25896 Reply
>>25845
> переменные имеют имена из одного-двух символов
будто что-то плохое
>> No.25897 Reply
>>25896
Тогда уж комментировать. Суть хорошего кода в легком развитии и модернизации. Если придется каждый раз переписывать/писать непонятно как работающие костыли, лучше почитать правила хорошего тона, однако, прежде чем писать.
>> No.25898 Reply
>>25896
В школьном коде очередной программы по сортировке массива - нет, ничего плохого.
>> No.25899 Reply
>>25896
Как нет ничего плохого и в переменных ThatAwesomePropertyIfYouKnowWhatIMean или HKWNDMDmgDwgGGG.
>> No.25900 Reply
>>25818
Если тестовое задание простое, то заниматься украшательством нет смысла. Единственное, для чтения/записи лучше использовать with, если ты его не использовал. Показать, так сказать, что ты в курсе последней моды питона.
>> No.25901 Reply
>>25899
> HKWNDMDmgDwgGGG
Это по-плюсоёбски - они и так пишут код во всяком говне без автодополнения, пусть сами и экономят каждый символ.
> ThatAwesomePropertyIfYouKnowWhatIMean
А вот тут не вижу ничего плохого. По крайней мере, имена переменных вроде sumOfInputNumbers или collectedItems, как по мне, звучат гораздо понятнее и логичнее, чем школовысеры вроде so или ci. Идите тогда до конца и называйте все переменные одним латинским символом, вообще не связанным с назначением переменной. Методы тоже можно начать в духе void rtrt(), int qqq(float s, int p, string f) или string yyy(object[] d).
>> No.25907 Reply
>>25818
все это можно сделать в блоке with, разбивать ничего не нужно. чем проще, тем лучше.
>> No.25909 Reply
Есть тестовый opener, которым я пытаюсь открыть некоторую ссылку:
#!/usr/bin/env python3

import urllib.request

opener = urllib.request.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
opener.open(url)
В ответ на что opener падает вот так: urllib.error.HTTPError: HTTP Error 503: Service Unavailable А юниксовая утилитка curl без всяких дополнительных настроек нормально открывает страничку. Отчего так происходит, и как научить opener тоже открывать страничку нормально?
>> No.25917 Reply
>>25901
> Это по-плюсоёбски
У вас плюсофобия. Сие творение, ака Венгерская нотация, получило рождения в думаю Вами любимой мелкомягкой корпорации. И не зависит от языка.
> код во всяком говне без автодополнения
Все что не имеет автодополнения - говно! Вот первостепенный критерий оценки IDE!
> имена переменных вроде sumOfInputNumbers или collectedItems, как по мне, звучат гораздо понятнее и логичнее, чем школовысеры вроде so или ci
Ага, а PreferredBackBufferHeight звучит гораздо понятнее и более запоминающееся чем просто BackBufferHeight, и тем более чем WindowHeight, чем, по сути, он и является.
> Идите тогда до конца и называйте все переменные одним латинским символом, вообще не связанным с назначением переменной
На всяких олимпиадах, где длина кода является показателем так и делают. Но мы то не там.
>> No.25919 Reply
>>25909
Возьми какой-нибудь Wireshark, да посмотри, что оно отправляет и что получает.
>> No.25921 Reply
>>25917
> Сие творение, ака Венгерская нотация, (...) не зависит от языка.
Ещё как зависит. AFAIK, она используется только в процедурных языках (кто ими вообще сейчас пользуется?) и - в качестве исключения - в цепопе. Создатели многих других распространённых языков уже открестились от венгерской нотации и предложили другие, более удобные и лучше читаемые, варианты.
> Все что не имеет автодополнения - говно!
Но ведь это действительно так. Может, текстовым редактором оно будет и неплохим, но кодить в этом смогут только настоящие копрофилы или мазохисты.
>> No.25925 Reply
File: 1337768926338.png
Png, 1494.13 KB, 960×1500 - Click the image to expand
edit Find source with google Find source with iqdb
1337768926338.png
Няши, подскажите как в Qt наследовать класс что бы ссылка на QspinBox(и другие элементы) выглядела как QspinBox(), а не QtGui.QspinBox(). И где можно хоть что-то узнать про наследование в Qt. Читаю "Rapid GUI Programming with Python and Qt Mark Summerfield 2007" - про наследование ни слова.
>> No.25931 Reply
>>25925
> что бы ссылка на QspinBox(и другие элементы) выглядела как QspinBox(), а не QtGui.QspinBox().
Чего-чего?
Приведи лучше код, ибо я, конечно, догадываюсь, что ты этим хотел сказать, но возможно мы и о разном говорим, ибо если ты говоришь об импорте, то к наследованию оно никакого отношения не имеет.
И зачем ты наследуешь от спин-бокса?

Алсо, я таки настоятельно рекомендую использовать QtCreator для создания форм, а потом через pyuic4 их конпелировать в питон, а не создавать формы вручную питоновым кодом.
>> No.25961 Reply
File: Anime-Wallpapers-Neko-(49).jpg
Jpg, 815.70 KB, 1600×900 - Click the image to expand
edit Find source with google Find source with iqdb
Anime-Wallpapers-Neko-(49).jpg
>>25931
Да, похоже дело в импорте.
>> No.26047 Reply
Анон, а анон, можешь подсказать? Есть какой-нибудь способ определить где в коде происходит утечка памяти?

Написал программу (несложная, но слишком длинная, чтобы приводить её здесь). Запускаю IDLE, подключаю модуль, вызываю функцию. Внутри происходят итерации, причём на каждой из них происходит утечка какого-то объёма памяти: например для 10 000 повторений процесс pythonw.exe весит четверть гига, для 100 000 - в десять раз больше, как несложно понять. (Причём после завершения процесс остаётся в списке, пока не будет выключен или перезагружен IDLE).

Собственно хотелось бы понять, где может быть проблема. Возможно python немного неадекватно осуществляет сборку мусора, если выйти из итерации по break?
В общем, какие основные подводные камни есть в автоматической сборке мусора в третьем Питоне?
>> No.26048 Reply
>>26047
valgrind
>> No.26049 Reply
>>26048
Хорошо, постараюсь с этим разобраться (как я понял, для Windows его нет? Ну не проблема).

Ещё один небольшой вопрос: есть ли среди стандартных (или более-менее распространённых) модулей такой, в котором содержалась бы функция, позволяющая перебрать все перестановки списка?
>> No.26050 Reply
>> No.26051 Reply
>>26047
Он не умеет собирать не завершённые треды\(суб)процессы, зависшие сокеты\пайпы, поэтому
> после завершения процесс остаётся в списке, пока не будет выключен или перезагружен
А так же он не умеет собирать объекты, референсы на которых оставляют в каком нибудь списке\словаре и забывают удалить.
Последние можно поискать этим способом: http://stackoverflow.com/questions/1641231/python-working-around-memory-leaks/
>> No.26067 Reply
File: 31223.jpeg
Jpeg, 45.20 KB, 541×767 - Click the image to expand
edit Find source with google Find source with iqdb
31223.jpeg
Доброе утро анончик! Дело такое: я студент второго курса ит, меня уже напихали ц, ц# и жабой, занялся изучением змейки, но проблема в том что каждый раз приходит добрый препод и так по доброму тебе говорит, сделай такую то прогу чтобы она такое то умела делать, и садишься ты лепить из пластилина, а опыта все равно в принципе никакого, так как придя на работу устраиваться тебе дадут на решение конкретную программную задачу и от скорости и красоты ее решения и будет решаться кем ты будешь и сколько будешь зарабатывать. Вот и ведут меня постоянно эти мысли к такому выводу что где то надо искать конкретные рабочие задачи которые дают хотя-бы тем же стажёрам (они то уже какие то жизненные проблемы решают). Накидай пожалуйста годных задач начального уровня по змее и скул которые тебе самому приходится (приходилось) на работе решать. За грамотность извини русский в школе проебывал ибо ненавижу гум науки.
Плачу неками.
>> No.26078 Reply
Анон, привет!
Изучая питон, хочу написать многопоточный прокси-чекер, но что-то мое поделие работает очень медленно. Подскажи, пожалуйста, чего я не учел?
#!/usr/bin/env python3

from multiprocessing.pool import ThreadPool
import urllib.request

def check_proxy(args):

	proxy_ip   = args[0]
	proxy_port = args[1]

	destination_url = 'http://google.com'
	proxy_line = 'http://{}:{}'.format(proxy_ip, proxy_port)
	proxy = {'http': proxy_line}
	opener = urllib.request.FancyURLopener(proxy)

	try:
		opener.open(destination_url)
	except IOError:
		return
	else:
		return 'http://' + proxy_ip + ':' + proxy_port


parsed_data = [('58.221.60.62', '80'), ('190.122.98.147', '8080'), ('218.241.153.43', '8080'),
 ('92.255.185.161', '3128'), ('125.88.75.151', '3128'), ('77.37.192.19', '3128'),
 ('106.3.98.81', '80'), ('201.12.143.197', '8080'), ('190.42.80.50', '8080'), ('50.7.9.227', '8080'),
 ('110.139.125.85', '8080'), ('103.22.182.131', '3128'), ('211.161.152.105', '80'), 
('122.72.28.12', '80'), ('58.22.151.6', '80'), ('89.248.168.139', '8080'), ('211.161.152.106', '80'),
 ('190.249.200.7', '8080'), ('219.133.36.198', '80'), ('201.58.131.27', '8080'), 
('211.136.10.29', '80'), ('201.150.1.6', '8080'), ('119.46.28.146', '3129'),
 ('221.2.226.12', '8080'), ('115.25.216.6', '80'), ('122.72.80.99', '80')]

pool = ThreadPool(50)
result = pool.map(check_proxy, parsed_data)
print(result)
Post was modified last time at 2012-10-17 07:19:34
>> No.26079 Reply
>>26078
Добавил
import socket
socket.setdefaulttimeout(3)
стало получше. Можно еще где ускориться?
>> No.26082 Reply
>>26079
Попробуй не создавать треды заново на каждый запрос.
from urllib.request import FancyURLopener
from queue import Queue, Empty
import threading
  
def check_proxies(proxies, results):
    while True:
        try:
            proxy = 'http://{}:{}'.format(*proxies.get(1))
            FancyURLopener({'http': proxy}).open('http://google.com')
            
        except IOError: continue
        except Empty: break
        
        results.put(proxy)
  
proxies = Queue()
results = Queue()
threads = []
  
for p in parsed_data: proxies.put(p)
  
for _ in range(50):
    t = threading.Thread(target=check_proxies, args=(proxies, results))
    t.daemon = True
    t.start()
    threads.append(t)
  
for p in threads: p.join()
>> No.26083 Reply
File: 060.jpg
Jpg, 201.76 KB, 1440×1080 - Click the image to expand
edit Find source with google Find source with iqdb
060.jpg
>>26082
Большое спасибо, анон, обязательно попробую.
>> No.26176 Reply
Превед, питонисты.
Внезапно 3.3 вышел вместе с появлением моего интереса к питону. Как я полагаю, все книги, что тут советуют описывают 3.1 и 3.2 версии. Итак, есть ли что то достойнее официального туториала на сайте? Английский предлагать (да даже желателен, наверное).
>> No.26178 Reply
>>26176
Алсо, если важно - опыт погромирования есть, писал на Pure C довольно продолжительное время, хоть и для себя.
>> No.26183 Reply
>>26176
Никакой разницы между 3.1, 3.2 или 3.3 при первом рассмотрении ты не увидишь. Так что на этом не стоит акцентировать внимание при изучении. Версии обратно совместимы, что работало в 3.1 будет работать и в 3.3. Бери любой учебник по тройке (Лутц или Саммерфилд) и не парь мозг.
>> No.26207 Reply
Добропитончег, поясни по чесноку. Хочу я вычислить md5 от строки 'test'.
import hashlib

m = hashlib.md5()
m.update(b"test")
m.hexdigest()
Получаю: f9b345c9caa0ad1fb8a1fde740d707d9

А если загоняю "test" вот сюда http://www.md5.cz/, то получаю: 098f6bcd4621d373cade4e832627b4f6

Чому так?
>> No.26208 Reply
>> No.26223 Reply
>>26207
>>> import hashlib
>>> hashlib.md5(b'test').hexdigest()
'098f6bcd4621d373cade4e832627b4f6'
>>>
>> No.26341 Reply
File: py3k-venv-ipython.ro.png
Png, 23.71 KB, 726×863 - Click the image to expand
edit Find source with google Find source with iqdb
py3k-venv-ipython.ro.png
Привет, Доброкодер.
Есть проблема, не желающая решаться. Пикрелейтед.

Windows, python 3.3, venv, внутри окружения ipython.
Запускаю python, help() работает. Запускаю ipython, help() не работает.
Опытным путем выяснил, что ipython импортирует не тот pydoc.py, который должен, потому что изменяет sys.path (в частности, добавляет туда %VIRTUAL_ENV%\Scripts).

1. Баг ли это, или я что неправильно делаю? И если баг, то чей?
2. Можно ли починить малой кровью? Не очень хочется глубоко ковырять ipython.
>> No.26352 Reply
Кодачь, я тут решил выучить язык для скриптов в линукс ах, покатит ли пайтон для крона и автоматизации рутины в шелле?
>> No.26354 Reply
>>26352
bash же, ну.
>> No.26356 Reply
>>26354
там же геморно писать разборы текста, не?

просто я смотрю - бОльшая часть скриптов больших написано на каком-нибудь языке, кроме инсталляторов.
>> No.26357 Reply
>>26356
Нормально там всё писать, но если хочешь на питоне - валяй.
>> No.26359 Reply
>>26357
ну дак а в чем минусы то пайтона перед башем?
>> No.26362 Reply
>>26359
Например
#!/bin/bash
ls -l

#!/usr/bin/env python
from subprocess import call
call(["ls", "-l"])
>> No.26363 Reply
>>26356
Из скрипта можно невозбранно вызывать awk для разбора. Но я не порекомендую bash, я порекомендую rc из 9base.
>> No.26364 Reply
>>26356
> там же геморно писать разборы текста, не?
На баше? Разборы текста? У баша 1.5 функции для манипуляции с текстом, для всего остального используется sed, awk и прочее. Да, скриптуется все это башем, но манипуляции с текстом производятся специально предназначенными для этого программами.
> Ололо, спойлер спойлер спойлер.
Подавляющее большинство скриптов установки заскриптованы под make. А баш там примерно по популярности сравним с перлом и прочим питоном.
В *nix мирке вообще не сильно популярны инсталляторы.
>>26352
> покатит ли пайтон для крона и автоматизации рутины в шелле?
Кодь на чем хочешь, но, например, меня вполне устраивает для моих задач баш и rc.
Питон, имхо, в данном случае чем-то похож на powershell - это как брать слона для перестановки вазочек в фарфорной лавке.
>> No.26438 Reply
>>26364
Наша спасибо, но я все в толк таки не возьму - почему те же почти все скрипты бакупа для ксена на перле/питоне написаны?
>> No.26439 Reply
>>26438
Тут вопрос в размерах скрипта. Вещи в три строки проще писать на баше. Что-нибудь от 10 строк и больше - на питоне.
Питоновый код более читаемый и поддерживать его НАМНОГО проще, но есть оверхед в виде необходимости импортить кучу библиотек.
>> No.26446 Reply
>>26439
> Вещи в три строки проще писать на баше. Что-нибудь от 10 строк и больше - на питоне
Кстати, можно привести пример крупных проектов на баше: sorcery (из Source Mage GNU/Linux) и lunar (из Lunar Linux).

Возможности скриптов часто недооценивают, уродливый синтаксис баша только ухудшает ситуацию.
Жаль, rc мало распространён.
>> No.26449 Reply
File: 17_3930_oboi_zoi_deshanel_iz_500_dnej_leta_1920x10.jpg
Jpg, 546.15 KB, 1920×1080 - Click the image to expand
edit Find source with google Find source with iqdb
17_3930_oboi_zoi_deshanel_iz_500_dnej_leta_1920x10.jpg
>>26446
А почему изначально не сделали человечный синтаксис?
не-линуксовод-просто-интересно
>> No.26454 Reply
>>26449
Потому что он был создан почти 40 лет назад, как примитивная командная оболочка вроде cmd. Разные люди постепенно обвешивали его нужными лично им свистелками, часто несовместимыми между собой. В итоге получилось много-много уродливых, но полноценных скриптовых языков, суть которых идеально передает фраза "it's easier to port a shell than a shell script".
Впрочем, сейчас большинство из них уже вымерло. Все пользуются bash или zsh, а скрипты можно спокойно писать только под bash, зная, что он есть практически на любой машине.
>> No.26455 Reply
>>26454
> как примитивная командная оболочка вроде cmd
Покусаю.
мимоБилл
>> No.26456 Reply
>>26446
Sorcery (и lunar) дико маргинальщина и обскур. Однако да, популярность баша от этого не сильно падает.

Почитал на педевикии про rc, те же яйца что и баш. Подумаешь синтаксис на пару символов и ключевых слов отличается.
А вот портирование с перла на питон (которое произошло и происходит для некоторых утилит) вещь более правильная имхо. В перл-скриптах процветает нечитаемая врайт-онли хуета, разброд и шатания, а питонячий Пеп8 прививает дисциплину. Вот был бы более распространен скриптовый ЯП типа dart например, т.е. с почти сишным синтаксисом, опциональной типизацией и легким манипулированием выхлопами внешних программ, то может он стал бы пушкой. Но увы.
>> No.26457 Reply
>>26362
```import sh
sh.ls('-l')```

См. http://amoffat.github.com/sh/
>> No.26487 Reply
>>26456
> Sorcery (и lunar) дико маргинальщина и обскур
Ну если ты найдёшь более годную систему для сборки (inb4: кривой и тормозной portage и его родственники)...
> Почитал на педевикии про rc, те же яйца что и баш.
Да, только в три раза читабельнее и в сотню раз проще. И не нужно делать на rc то, что проще сделать на awk, например.
> А вот портирование с перла на питон (которое произошло и происходит для некоторых утилит) вещь более правильная имхо
Тут соглашусь (другие языки вроде ruby недостаточно распространены).
>> No.26526 Reply
Есть один скрипт для рисования графиков: http://pastebin.com/UrQBWWGh
Примерный формат входных файлов: http://pastebin.com/1mrfuN3n (столбики с погрешностями необязательны)
Прошу отрецензировать сию поделку.
>> No.26578 Reply
>>26526
На gnuplot было бы пять строк.
>> No.26596 Reply
File: alc.png
Png, 22.46 KB, 260×255 - Click the image to expand
edit Find source with google Find source with iqdb
alc.png
Поставил себе цель запилить калькулятор на Python 3.0, похожий на обычный ШИНДОУСовский, пикрилэйтед. Ничего не знаю про язык, но уже прочитал первую главу учебника.
Реквестирую компилятор для Python 3.0, чтоб работал в Windows XP и мог, собственно, собрать из .py .exe.
>> No.26597 Reply
>>26596
IronPython. Но зачем?
>> No.26654 Reply
>>26596
http://stackoverflow.com/questions/2933/an-executable-python-app
>>26597
> IronPython — одна из основных реализаций языка Python, предназначенная для платформы Microsoft .NET или Mono. Полностью написан на C#, и является транслятором компилирующего типа.
Еле удержался, чтобы не ругаться матом. Доброчан же!
>> No.26659 Reply
>>26654
> Еле удержался, чтобы не ругаться матом.
Why?
>> No.26670 Reply
>>26659
Советовать компилятор питона в экзе основанный на mono, когда есть более годные альтернативы - преступление.
>> No.26671 Reply
>>26596
py2exe
Но придётся переделать скрипт под 2 версию питона.

Ошибочно называть это компилятором.
Просто программа привязывает интерпретатор и необходимые модули.
Если скрипт гуишной программы занимает около 5 кб, например, то в ехе он будет занимать около 10 мб (Tk да и другие GUI не меньше, думаю)
>> No.26672 Reply
>>26670
Лол.
>> No.26674 Reply
>>26671
> Но придётся переделать скрипт под 2 версию питона.
Который является станлартом де-факто, угу.
>> No.26693 Reply
File: питонофагам.png
Png, 14.64 KB, 535×359 - Click the image to expand
edit Find source with google Find source with iqdb
питонофагам.png
Добропитонист, пикрилейтед. Дело в том, что есть один mainform.py - скрипт, генерирующий формочку с кнопочкой. При клике на кнопочку вызывается функция, выделенная рамкой. Эта функция определена в этом же самом mainform.py, и мне это очень не нравится. Какими способами можно вынести функцию в отдельный файл?
>> No.26694 Reply
>>26693
Эээ, вырезать код и вставить в другой файл, а потом добавить импорт. Не понимаю сути проблемы.
>> No.26695 Reply
File: питонофагам.png
Png, 15.42 KB, 535×378 - Click the image to expand
edit Find source with google Find source with iqdb
питонофагам.png
>>26694
Я так и сделал, пикрилейтед, но при запуске вываливается ошибка
"global name 'response' is not defined"
Я так понимаю, эту переменную можно определить как глобальную и тогда заработает. А нельзя ли сделать как-то аккуратнее?
>> No.26697 Reply
>>26695
нашел ответ
после import ololo нужно написать
from ololo import *
осталось понять, как и почему это работает
>> No.26698 Reply
>>26697
Чушка, если у тебя в файле ololo.py есть функция foo(), то ты пишешь import ololo, а потом обращаешься к foo() через ololo.foo().
>> No.26699 Reply
>>26698
Чушка может означать:
Чушка (металлургия) — то же, что и слиток.
Чушка (коса) — коса в Керченском проливе.
Поросёнок, молодая свинья.
Кобура.
Палка для игры в чушки.
>> No.26701 Reply
>>26698
мешок картошки тебе
>> No.26702 Reply
>>26699
> Поросёнок, молодая свинья.
Имел в виду молодой (в смысле ньюфаг) поросёнок.
>>26697-кун
>> No.26745 Reply
Кто-нибудь писал свои расширения на плюсах?
Обесните, обязательно ли объявлять функции, которые я добавляю в дикт модуля как static? В документации написано что обязательно, а у меня и без этого работает - спокойно сконпелировалось с функциями, у которых имплементейшн в других обжект-файлах и которые соответственно не статик. Что будет, если я так же буду делать и в рабочих проектах?
>> No.26826 Reply
File: 255_hentai_K-On-_school_girl.jpg
Jpg, 121.14 KB, 711×1000 - Click the image to expand
edit Find source with google Find source with iqdb
255_hentai_K-On-_school_girl.jpg
Добрач, есть ли в Qt виджет для массива иконок? Выглядить должен как папка с thumbs'ами картинок.
>> No.26828 Reply
>>26826
Я тебе не совсем понял. Почему просто не повесить на клик по превьюшке картинки нужное тебе действие?
>> No.26832 Reply
>>26826
Есть сетколайоут и таблицовиджет. Я бы советовал использовать первый, только не забудь убрать растяжение объектов, либо делай их одинакового размера (кстати, с точки зрения уебищности творящегося на экране зрелища, лучше делать одинакового размера).
>> No.26833 Reply
Тред не читай
@
Сразу спрашивай

А есть ли годные туториалы по питону кроме кодекадеми?
>> No.26834 Reply
>>26833
diveintopython
>> No.26837 Reply
>> No.26838 Reply
File: 3.jpeg
Jpeg, 39.38 KB, 800×500 - Click the image to expand
edit Find source with google Find source with iqdb
3.jpeg
>>26832
На пике то, что мне нужно. Нарисовал криво, но надеюсь, понятно.
>> No.26842 Reply
>>26838
Я давно что-то подобное делал, правда иконки брались из каталогов и постоянно обновлялись, использовал QListView и QStandartItemModel.
>> No.26854 Reply
>>26842
Не подскажешь как в QStandartItemModel добавить именно виджет(QLabel)?
В примерах в модель добавляют только строки.
>> No.26857 Reply
>>26854
Заполняй модель QStandardItem-и вместо QLabel, там есть возможность добавить картинку через QIcon и строку.
>> No.26866 Reply
Привет, питонач.
Для извлечения значений атрибутов некоторых тегов из html-страничек я прикрутил Beautiful soup четвертой версии (т.к. третий питон). А потом задумался, не луплю ли я по воробьям из пушки? Может, есть более адекватные моей задаче модули?
Время выполнения и потребляемые ресурсы прекрасного супа меня не смущают, т.к. пишу просто для себя, но из чувства тяги к прекрасному решил посоватоваться с тообой.
>> No.26868 Reply
>>26866
Можешь использовать например lxml или любой другой xml-парсер, но тогда html-код должен быть валиден.
>> No.26869 Reply
>>26866
Можешь еще регекспами парсить, лол.
инбифор: паста про то что нельзя этого делать
>> No.26870 Reply
>>26868
>>26869
Спасибо за советы.
>> No.26879 Reply
Разучиваю питон, столкнулся с ситуацией, когда надо объединить два списка: a=[[1,2],[4,5]] и b=[3,6] так, чтобы получился список [[1,2,3],[4,5,6]]. Додумался только до такого:
for i in range(len(b)):
    a[i].append(b[i])
Есть ли более элегантное решение? Заранее спасибо.
>> No.26880 Reply
>>26879
[i+j|i<-a,j<-b]
>> No.26881 Reply
>>26879
for i, v in enumerate(b):
    a[i].append(v)
Но поломается если b длиннее a. Этого можно избежать если использовать в а, defaultdict(list).
>> No.26888 Reply
няши, нубас репортед ин.

что-то я туплю с этими регулярными выражениями. в общем вот в чем суть:

есть файл ( на самом деле это вывод, но не важно ), он состоит из нескольких строк, вот пример:
uuid ( RO)           : bcb1c1f6-77b6-46d6-a598-90a1d702ee23
     name-label ( RW): obelisk
    power-state ( RO): running


uuid ( RO)           : f83742e4-a4ff-5748-e1b0-a258dfc662aa
     name-label ( RW): apu
    power-state ( RO): running


uuid ( RO)           : 34d1facb-c93d-e467-9cc9-cdd3b2751ecc
     name-label ( RW): mushi
    power-state ( RO): halted
как бы мне разложить значения полей по полочкам? т.е. мне надо запилить массив ( кортеж то бишь ) вида
[[obelisk,bcb1c1f6-77b6-46d6-a598-90a1d702ee23,running],[apu,f83742e4-a4ff-5748-e1b0-a258dfc662aa,running],[mushi,34d1facb-c93d-e467-9cc9-cdd3b2751ecc,halted]]
заранее благодарю.

строки я получил вот таким образом:
def get_list():
    '''get list'''
    plain_list = open('list','r')
    return plain_list.readlines()
>> No.26893 Reply
>>26888
Тут можно и без регэкспов обойтись.
from itertools import tee
  
def readlog():
    for line in open('list):
        try:
            x, value = line.split(':')
        except ValueError: continue
        yield value.strip()
result = tee(readlog(), 3)
Получится [(uuid, label, state), ...].
>> No.26894 Reply
>>26879
>>> a=[[1,2],[4,5]]
>>> b=[3,6]
>>> for lst, end in zip(a, b):
...     lst.append(end)
... 
>>> a
[[1, 2, 3], [4, 5, 6]]
>>> 
>> No.26896 Reply
File: 125.jpg
Jpg, 152.48 KB, 810×1080 - Click the image to expand
edit Find source with google Find source with iqdb
125.jpg
>>26894
Вот оно, спасибо!
>> No.26898 Reply
File: 13315002084f5d14b00d067.jpg
Jpg, 1179.12 KB, 1500×938 - Click the image to expand
edit Find source with google Find source with iqdb
13315002084f5d14b00d067.jpg
>>26893
спасибо, у меня почти получилось :3
только чтот не разберусь как из генератора получать нормальное значение я, наверное, беспросветно туп

код такой:
''
import re
from itertools import tee


def get_list():
'''get list of VM by open file with output xe vm-list'''
plain_list = open('list','r')
return plain_list.readlines()
#def readlog(vms):
# for line in vms:
# try:
# x, value = line.split(':')
# except ValueError: continue
# yield value.strip()
def readlog(vmlist):
for line in vmlist:
    try:
        x, value = line.split(':')
    except ValueError: continue
    yield value.strip()
def main():
'''main unit'''
vmlist = get_list()
#print(p_list)
#vms = readlog(p_list)
result = tee(readlog(vmlist), 3)
print(result)
main()
''

а вывод такой:


''
[Dbg]>>>
(<itertools.tee object at 0x000000000273C848>, <itertools.tee object at 0x000000000273C888>, <itertools.tee object at 0x000000000273C8C8>)
''


не пойму где загвоздка.
>> No.26899 Reply
>>26866
В общем случае всё правильно делаешь - хмтл надо разбирать хтмл-парсером.
Если время критично, то нужно использовать SAX-парсеры - у них линейная производительность, т.е. они работают быстрее регулярок.
Регулярки для хтмл-я или ад-хок решения не стоит использовать никогда.
>> No.26901 Reply
>>26898
Упс.. Извини, перепутал, вместо tee юзай:
def grouper(n, iterable, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)
А чтобы печатать генераторы, оборачивай их в list().
>> No.26911 Reply
>>26901
хм, спасибо, буду двигаться в этом направлении
>> No.26982 Reply
Вот скажите мне, почему питон просится установиться в C:\Pythonxx ?
И какие причины не ставить его в Program Files?
>> No.26984 Reply
>>26982
Поставь да посмотри. Небось, прыщеделы когда портировали не осилили разделение прав по папкам.
>> No.26985 Reply
>>26984
папка windows тоже не в Program Files
>> No.26987 Reply
>>26985
И что?
>> No.26988 Reply
>>26984
Поставил, куда смотреть?

до версии 2.5 Питон был в Program Files, потом зачем-то мигрировал.
Зачем? Кто-то с пробелом не справился?
>> No.27002 Reply
>>26896
map(list.append, a, b)
>> No.27042 Reply
кодачь, питонота-нубас снова репортед ин.

что мне делать, если у меня есть строка
   tags:autostart, backup, migrate
но могут присутствовать не все параметры, или вообще отсутствовать.
да еще и могут быть в любом порядке.
как разбирать их по отдельным переменным?
>> No.27043 Reply
>>27042
str_tags = 'tags:autostart, backup, migrate'
tags = str_tags[5:].strip().split(', ')
Будет тебе список с тэгами. Не понял по поводу переменных: какие они должны быть и какие значения.
>> No.27044 Reply
>>27043
спасибо :3
но я уже наговнокодил вот так:
'''
def get_detail(uuid):
'''get details of VM
'''
plain_detail = open(uuid,'r')
autostart = False
backup = False
migrate = False
for line in plain_detail:
    try:
        field , value = line.split(':')
        if field.find('name-label') != -1:
            name = value.strip()
        if field.find('power-state') != -1:
            state = value.strip()
        if field.find('tags') != -1:
            tags = value.strip()
            if tags.find('autostart') != -1:
                autostart = True
            if tags.find('backup') != -1:
                backup = True
            if tags.find('migrate') != -1:
                migrate = True
        else:
            continue
    except ValueError: continue
result = dict(uuid=uuid, name=name, state=state, autostart=autostart, backup=backup, migrate=migrate, tags=tags)
return result
'''
а теперь я вот тут не могу сделать список списков

def formatting(p_list):
i = 0
for uuid in p_list:
    try:
        lst[uuid] = dict(get_detail(uuid))
        i += 1
    except ValueError: continue
return lst
получаю
NameError: global name 'lst' is not defined
>> No.27045 Reply
File: [a.f.k.] Sayonara Zetsubou Sensei - 03.avi_snapshot_11.29_[2010.03.14_15.00.52].jpg
Jpg, 25.97 KB, 704×396 - Click the image to expand
edit Find source with google Find source with iqdb
[a.f.k.] Sayonara Zetsubou Sensei - 03.avi_snapshot_11.29_[2010.03.14_15.00.52].jpg
>>27044
точнее словарь словарей.
но мне подошел бы и список словарей, но словари не могут в списки....
как сделать словарь типа {значение из переменной:другой_словарь}

и держи няшу :3
>> No.27047 Reply
>>27044
> NameError: global name 'lst' is not defined
Перед циклом объяви же переменную lst, как пустой список.
> точнее словарь словарей.
Ты имеешь ввиду, что-то вроде этого?
{"a":[2,3,4],"b":{"a":3,"b":6}}
Ключем в словаре может быть что угодно кроме словаря и списка.
>> No.27048 Reply
>>27047
Алсо, для проверки наличия элемента в списке можно использовать "a" in "abc" возвращает булевое значение, кода меньше.
>> No.27049 Reply
File: [a.f.k.]-Sayonara-Zetsubou-Sensei-03.avi_snapshot_.jpg
Jpg, 37.16 KB, 704×396 - Click the image to expand
edit Find source with google Find source with iqdb
[a.f.k.]-Sayonara-Zetsubou-Sensei-03.avi_snapshot_.jpg
>>27047
оу, спасибо :3 я беспросветно туп, пытался объявлять по разному, а про фигурные скобки забыл.
> Ты имеешь ввиду, что-то вроде этого?
> {"a":[2,3,4],"b":{"a":3,"b":6}}
> Ключем в словаре может быть что угодно кроме словаря и списка.
ну да, так слегка проще работать получается. т.е. у меня будет словарь ууидов, а в нём словарь ключей.
правда у меня ууид дублируется, но я еще подумаю как лучше.

а вообще непривычно, я до этого в школе/универе паскалил, а потом кресты немного учил. но т.к. применять некуда особо было всё быстро забрасывалось, а сейчас интересно, блин, и реальное применение тоже есть куда втыкать.
а, так к чему это я - списки и словари вообще крутота я смотрю, только ужас как непривычно :3
>> No.27050 Reply
>>27049
Я пользую как раз создание списков через двойные скобки, компактнее и удобнее.
Питон дает относительную свободу после сишки, крестов, главное привыкнуть к этому, всяких плюшек у него хватает, плюс биндингов куча. Хотя раздражающие места есть, но в целом для скриптов и даже небольшой гуйни пойдет.

А код выше проверял на работоспособность?
>> No.27051 Reply
>>27050
Ага. Все работает.
Возвращает словарь с кучей параметров
>> No.27070 Reply
>>27050
а не подскажешь как лок-файл запилить по грамотному?
ну т.е. у меня скрипт по крону должен вызываться 1 раз в минуту, а выполняться может и больше.
надо сделать какой-то файл, как в апт-гет и тому подобных - пока идет операция повторно её не вызвать.
>> No.27071 Reply
>>27070
Можешь открывать, закрывать сокет.
from multiprocessing.connection import Listener, Client
  
ADDR = #('localhost':12345) # r'\\.\pipe\pipename # r"~path to a socket file"
  
def initiator(*args, **kwargs):
    try:
        Client(ADDR).send(True)
        # занято ...
        return
  
    except Exception: pass
  
    lock = Listener(ADDR)
    r = main(*args, **kwargs) # точка входа
    lock.close()
    return r
>> No.27072 Reply
>>27071
send() делать не обязательно.
бысрофикс
>> No.27073 Reply
>>27070
Можешь создавать lock файл и записывать туда pid скрипта, проверять при запуске его наличие и pid, это на случай, если скрипт вылетит раньше удаления файла.
>> No.27074 Reply
>>27073
этот вариант лучше чем сокет :3, спасибо.

сокет, видимо, позже понадобится.


что-то у меня не получается получить вывод никак
ЧЯДНТ?
''
import subprocess

def get_list():
    plain_list =  subprocess.Popen('/usr/bin/xe vm-list',stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
    lines = []
    line = p.stdout.readline()
    lines.append(line)
    while line:
            line = p.stdout.readline
            lines.append(line)
    return lines
def main():
    p_list = get_list()
    print(list(p_list))
main()
''

и получаю в ответ

''
[root@katana script]# ./test.py
Traceback (most recent call last):
   File "./test.py", line 22, in ?
main()
   File "./test.py", line 18, in main
p_list = get_list()
   File "./test.py", line 7, in get_list
plain_list =  subprocess.Popen('/usr/bin/xe vm-list',stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
   File "/usr/lib/python2.4/subprocess.py", line 550, in init
errread, errwrite)
   File "/usr/lib/python2.4/subprocess.py", line 996, in executechild
raise child_exception
OSError: [Errno 2] No such file or directory
''

чтото я tuple слегка
>> No.27076 Reply
>>27074
subprocess.Popen(['/usr/bin/xe', 'vm-list'],stdout=subprocess.PIPE,stderr=subprocess.STDOUT) Передавать команду и параметры нужно списком.
>> No.27082 Reply
File: Kasuga_Ayumu.jpg
Jpg, 31.49 KB, 800×600 - Click the image to expand
edit Find source with google Find source with iqdb
Kasuga_Ayumu.jpg
Давно хотел спросить: почему в питоне есть кортежи, но нет констант?
>> No.27085 Reply
>>27082
Потому что Гвидо наркоман решил, что программисты на питоне не нуждаются в контроле. Кортежи, вроде как, призваны ускорить работу с данными, но это питон, так что польза их в этом плане сомнительна.
Но все можно сделать, если потребуется, что происходит не столь часто.
>> No.27086 Reply
>>27082
Потому, что ты не понимаешь разницы между именами и объектами. Имя - просто ключ в дикте, как ты его заморозишь?
А объекты многие иммутабл, в том числе числа и строки.
>> No.27106 Reply
>>27076
спасибо, но я что-то что-то я не понимат.

у меня вывод в много строк, а выходит только одна.
import subprocess
p = subprocess.Popen(['/usr/bin/xe', 'vm-list'],stdout=subprocess.PIPE,stderr=subprocess.STDOUT)

print(p)

[root@katana script]# ./test.py
<subprocess.Popen object at 0xb7474e6c>
#!/usr/bin/python
import subprocess
p = subprocess.Popen(['/usr/bin/xe', 'vm-list'],stdout=subprocess.PIPE,stderr=subprocess.STDOUT)

lines = []
for line in p.stdout.readline():
    lines.append(line)
print(lines)

[root@katana script]# ./test.py
['u', 'u', 'i', 'd', ' ', '(', ' ', 'R', 'O', ')', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ':', ' ', 'b', 'd', '5', 'e', 'b', '9', '4', 'd', '-', 'c', '0', '8', 'e', '-', '2', '5', '0', 'f', '-', '0', 'f', '0', 'a', '-', 'e', '9', '2', '2', '0', 'f', 'd', '6', '3', '8', '5', '2', '\n']
как быть то... я что-то не хотет вываливать вывод в файл, а потом оттуда читать.
>> No.27107 Reply
>>27106
оу. по ночам лучше не гуглить, или как минимум с утра повторять процесс.
#!/usr/bin/python
import subprocess
(p, err)= subprocess.Popen(['/usr/bin/xe', 'vm-list'],stdout=subprocess.PIPE,stderr=subprocess.STDOUT).communicate()

lines = []
#for line in p.stdout.readline():
# lines.append(line)


print(p)
и всё пошло как надо.
>> No.27112 Reply
>>27107
вернее надо еще добавить цикл преобразования массива символов в строки.
>> No.27166 Reply
>>23596
Py2exe
Сам не гугл ил, но в "программируем на питон" читал
>> No.27172 Reply
>>27166
Толсто.
>> No.27201 Reply
>>27172
ну правда ведь пишут! не поленюсь - найду.
>> No.27202 Reply
>>27201
Py2exe это не конпеляция, это просто пустой экзешник с ембеддед питоном и запакованными в зип исходниками, чтобы вендобляди могли пользоваться питоновым софтом.
>> No.27208 Reply
>>27202
Ну для вендобляди ведь без разницы
>> No.27209 Reply
>>27208
В каком смысле? Конпеляции питона в нативный код при этом не происходит, вне зависимости вендоблядь это или нет.
>> No.27210 Reply
Привет, ребятки, есть такой код:
#!/usr/bin/env python3

from multiprocessing.pool import ThreadPool
from time import sleep

def action(x):
    sleep(2)
    # print(x*2)
    return x*2

def handle_result(result):
    print(result)

data = [1,2,3,4,5,6,7,8,9,10]

pool = ThreadPool(5)
r = pool.map_async(action, data, callback=handle_result)
r.wait()
Проблема в том, что функция handle_result вызывается, когда уже получен полный список результатов. А я бы хотел получать отдельные значения по ходу выполнения (что-то вроде того, как если раскомментировать print в action). Как это правильно сделать?
>> No.27211 Reply
>>27210
> for i in ThreadPool(5).imap(action, data): print(i) # .imap_unordered(
  
2
4
6
8
10
12
14
16
18
20
Или делай свой пулл, с очередями и потоками.
http://docs.python.org/2/library/queue.html?highlight=queue#Queue
>> No.27213 Reply
>>27211
Большое спасибо!
Расплачусь забавной ссылкой: http://news.siteua.org/Курьезы/456372/Во_Львове_правоохранители_поймал[...]ритон
>> No.27232 Reply
Доброго вечера, доброанон!

Сел я сегодня писать блог на джанго. Почитал мануалы, создал базу данных db
$mysql -u root -p
> create database db;
выдал права самому себе
> GRANT ALL ON db.* TO dobro@localhost IDENTIFIED BY "pony";
здесь вроде все нормально. могу зайти через: mysql -u dobro -p

Решил зайти в нее из джанго. прописал в settings.py
    'ENGINE': 'mysql', 
    'NAME': '/var/lib/mysql/db.db',    
    'USER': 'dobro',                  
    'PASSWORD': 'pony',              
    'HOST': 'localhost',                   
    'PORT': '',          
Запустил ./manage.py syncdb и увидел, что доступ к ней запрещен (mysql_exception... 1044 access denied). Оно вроде и понятно, как же так простой пользователь пытается залезть в каталог /var/ Но блжд как создать базу данных в другом каталоге? Или проблема в чем-то другом?
>> No.27233 Reply
>>27232
Ты никогда до этого с мускулем не работал совсем абсолютно?
Там не полный путь до файла с БД, а лишь ее название указывать надо.
>> No.27235 Reply
>>27233
Ох ты жеж.... всё работает! Спасибо, бро!

И, нет, никогда не работал. Как-то странно всё же, что базы данных создаются в одном месте. Я хочу, чтобы она лежала в том же месте, где и весь остальный контент. Как я это буду переносить с локалхоста на настоящий сервер.... Ох. Ну да ладно, потом разберемся. Добра!
>> No.27237 Reply
>>27235
Если хочешь переносить именно файл БД, то глянь в сторону sqlite.
Другие БД переносятся посредством задампливания/раздампливания. Например:
mysqldump -параметры dbname > dbname.sql
cat dbname.sql | mysql -параметры
>> No.27457 Reply
File: 0_62d9b_2110548f_XL.jpeg
Jpeg, 236.19 KB, 800×787 - Click the image to expand
edit Find source with google Find source with iqdb
0_62d9b_2110548f_XL.jpeg
Аноны, у меня проблема с шрифтами для Python. В IDLE изначальный мне нравился, до того момента, как Лутц стал показывать, синтакстические конструкции для ООП, там весьма много init, get, exit и т.д.

Проблема в том, что нифига не видно, сколько же раз ты поставил ___. У меня каждый раз с этим инвадид синтекс.

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

Python'a боги помогите с этой проблемой. Какой шрифт используйте вы?
>> No.27458 Reply
File: Python.jpg
Jpg, 277.17 KB, 927×456 - Click the image to expand
edit Find source with google Find source with iqdb
Python.jpg
>>27457
Ну я смог в разметку.
>> No.27472 Reply
>>27457 -> >>27350 (ADOBE ™ SOURCE CODE PRO ®)
Только я не питонобог.
>> No.27496 Reply
File: Konachan.com-85311-animal-animal_ears-blonde_hair.jpg
Jpg, 460.91 KB, 1100×794 - Click the image to expand
edit Find source with google Find source with iqdb
Konachan.com-85311-animal-animal_ears-blonde_hair.jpg
>>27472
Какая няша, спасибо.
>> No.27499 Reply
>>27496
Если нужна поддержка кириллицы, которой пока в ADOBE ™ SOURCE CODE PRO ® нет, попробуй Ubuntu Mono.
>> No.27500 Reply
>>27499
Хотя не, наврал, в Ubuntu Mono подчёркивания тоже сливаются.
>> No.27501 Reply
>>27496
Terminus - посоны с лора одобрят.
>> No.27503 Reply
>>27501
Но он ведь страшный.
>> No.27507 Reply
>>27503
Я бы тебя четвертовал за инакомыслие. Но он считается лучшим для программирования в консольке.
>> No.27509 Reply
File: Исходный-Код-Профессионал.png
Png, 3.12 KB, 355×118 - Click the image to expand
edit Find source with google Find source with iqdb
Исходный-Код-Профессионал.png
>>27501
Не красивый, глаза режет, к тому же его аналог уже есть в стандартах.

Кхм, написать на русской раскладке получилось.
>> No.27511 Reply
Получиться-то получилось, только моноширинности нет. Алсо выполнить реквест кириллицы взяли на себя уже два месяца назад.
>> No.27528 Reply
File: dat-math-ass.jpg
Jpg, 54.52 KB, 550×746 - Click the image to expand
edit Find source with google Find source with iqdb
dat-math-ass.jpg
Котаны , поясните за PyGame. Нужно просветление по фунции "Clock.tick"
   в документации сказано
".If you pass the optional framerate argument the function will delay to keep the game running slower than the given ticks per second. This can be used to help limit the runtime speed of a game. By calling Clock.tick(40) once per frame, the program will never run at more than 40 frames per second. "
Не пойму как перевести на могучий tick . Первое предложение - " Если вы не установите частоту обновления кадра , функция будет работать медленнее чем с определенной переменой обновления кадра"
А если не установить переменную , то сколько будет длиться задержка?
Посоветуйте форум по Pygame.
Post was modified last time at 2012-11-28 05:02:02
>> No.27536 Reply
>>27501
Он предназначен для работы вне Иксов. За использование его в оконной среде с таким-то клиар-тайпом Артемий Лебедев кроет хуями.
>> No.27540 Reply
>> No.27626 Reply
File: Снимок-экрана-от-2012-12-01-20:12:27.png
Png, 37.09 KB, 639×308 - Click the image to expand
edit Find source with google Find source with iqdb
Снимок-экрана-от-2012-12-01-20:12:27.png
>> No.27627 Reply
>>27626
> этих
> э
>> No.27631 Reply
>>27627
> несколько своеобразный
>> No.27641 Reply
>>27626
Два чаю этому джентльмену.
>> No.27802 Reply
Авторизация у контакта на https, сам сайт весь на http.
Пытаюсь авторизоваться и получаю:
Traceback (most recent call last):
  File "script.py", line 57, in <module>
    login(EMAIL, PASSWORD)
  File "script.py", line 51, in login
    connection.request("POST", "", payload, {})
  File "/usr/lib/python2.7/httplib.py", line 958, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python2.7/httplib.py", line 992, in _send_request
    self.endheaders(body)
  File "/usr/lib/python2.7/httplib.py", line 954, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python2.7/httplib.py", line 814, in _send_output
    self.send(msg)
  File "/usr/lib/python2.7/httplib.py", line 776, in send
    self.connect()
  File "/usr/lib/python2.7/httplib.py", line 1157, in connect
    self.timeout, self.source_address)
  File "/usr/lib/python2.7/socket.py", line 553, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno -2] Name or service not known
поржал с гейеррор и ошибки номер минус два
>> No.27822 Reply
>>27802
Уже не надо.
ВНЕЗАПНО выяснил, что requests умеет https из коробки.
>> No.27826 Reply
File: sunshine-190-032.jpg
Jpg, 233.51 KB, 1068×1608 - Click the image to expand
edit Find source with google Find source with iqdb
sunshine-190-032.jpg
Решил простенький теннис запилить на питончике + OpenGL, нашёл PyOpenGL, но там примеры OpenGL 1.1 а мне нужно 3.x без всяких depricated, няши, помогите.
>> No.27842 Reply
File: vkmusic.py
Py, 0.00 KB, 0 lines - Click the image to get file
view edit
vkmusic.py
Запилил я тут небольшой скриптик для скачивания музыки с ВК.
Если кому не лень - сделайте code review.
Замечания по английскому языку в комментариях - так же приветствуются.
>> No.27856 Reply
>>27842
> import httplib
Зойчем?
> if name == "main"
Этот бойлерплейт обычно в конце файла пишут. Алсо, я бы туда же запихнул строчки с 73 по 86-ю.

А так норм.
>> No.27857 Reply
>>27856
разметку зафейлил, как всегда.
>> No.27860 Reply
>>27856
Спасибо, исправил.
А ещё хотел узнать - я один соблюдаю pep8 или тут есть ещё кто-то?
Просто даже стандартная библиотека в /usr/lib/python2.7/ его не соблюдает
>> No.27862 Reply
>>27860
> я один соблюдаю pep8
Как бы тебе так помягче сказать, у меня в редактор встроен pylint, так вот, твой файл ему, кхм, не совсем понравился.
>> No.27865 Reply
Создатель языка Python ушел из Google в Dropbox

http://www.opennet.ru/opennews/art.shtml?num=35541
>> No.27870 Reply
>>27865
Интересно, а его пидорнули или он правда сам ушёл?
>> No.27882 Reply
>>27862
Расскажи мне, если не сложно, на что именно ругается?
У себя проверял утилитой, которая так и называется - pep8 - ни одной жалобы.
>> No.27883 Reply
>>27826
Какой там OpenGL, у тебя же центральный процессор!
>> No.27884 Reply
File: -.txt
Txt, 0.00 KB, 0 lines - Click the image to get file
view edit
-.txt
>>27882
lint.py vkmusic.py -f text > report.txt
>> No.27885 Reply
>>27842
В общем и в целом код мне понравился.

То что в апперкейсе должны быть только константами, IP_HANDLER, COOKIES, MP3_LINKS, PAGE, COUNT ими не являются.
counter следует перенести в переменные класса.

if __name__ == "__main__": должно быть после объявлений классов, методов и констант, а также в нем должна быть та ботва от login(EMAIL, PASSWORD) по parser.close().

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

мимо-кодестайл-наци
>> No.27886 Reply
>>27870
Вроде сам, судя по записям в сосниц.сетях и блогах.
>> No.27976 Reply
Ребятки, здравствуйте!
Начал осваивать ООП, и тут vim мне козью морду делает. Предыстория в том, что я пользуюсь в vim-е плагином SuperTab (с опцией let g:SuperTabDefaultCompletionType = "context").
Допустим, есть класс по имени 'Class', у которого есть метод 'method'. И есть экземпляр класса 'Class' по имени 'class'.
Так вот, когда я в vim-е набираю 'class.me<Tab>', то vim не может автоматом дополнить имя метода. Если кто знает, как справиться (плагины какие поставить, или скрипты), расскажите, пожалуйста.
>> No.27992 Reply
>>27976
Не беспокойтесь, кажется, разобрался. Фунции дополнения не нравилась строка: pairs = enumerate(self.images_filenames, start=self.start_num).
Когда перефразировал- заработало.
>> No.28157 Reply
File: 1672727-sp___how_do_i_shot_web_super.jpg
Jpg, 54.66 KB, 600×556 - Click the image to expand
edit Find source with google Find source with iqdb
1672727-sp___how_do_i_shot_web_super.jpg
>>17058
Нубовопрос. У меня установлены обе ветки реализации пайтона. Как мне определить который обрабатывает запускаемые скрипты, и стоит ли вообще об этом волноваться?
У меня есть подозрения, что из за этого CGIсерверный скрипт на 3.3 пайтоне не работает. А 2.7 работает.
>> No.28163 Reply
>>28157
Нормальные люди в начале файла ставят
#!/usr/bin/env python2
#  или
#!/usr/bin/env python3
На пикче глагол должен быть в прошедшем времени.
Олсо, тред переезжает в >>28158


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]