Этого треда уже нет.
Это копия, сохраненная 26 сентября 2015 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
30 Кб, 400x308
Шапка: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat
Прошлый: >>525512 (OP)

Слоупокам напоминаю, что в 2020 заканчивается поддержка второго питона и пора бы переходить на третий
http://legacy.python.org/dev/peps/pep-0373/
#2 #532427
>>532421 (OP)

>третий


Не нужен.
#3 #532430
>>532427
А вот и некрофил объявился.
#4 #532432
>>532427
Ретрограды из прошлого треда так и не смогли ответить что собираются делать после 2020 со своим вторым говном.
Только мычали что-то невразумительное.
#5 #532441
>>532432
К 2020 появится четвертый - такой же как второй, только лучше. А что будут делать люди с третьим решать уже им потому, что вливаться в четвертый смогут только второпитоногоспода.
#6 #532443
>>532441
Маняфантазии пошли. Гвидо только на последнем пайконе отвечал что выпуска версии с обратной совместимостью к 2.7 Н-Е Б-У-Д-Е-Т.
#7 #532462
>>532432
А что они должны делать? Ты так говоришь, будто первого января 2020го все интерпретаторы второго пистона перестанут работать.
#8 #532467
>>532462
ЛЕГАСИ
Е
Г
А
С
И

Братишка, если технология в айти перестает развиваться - она начинает умирать. Будет тебе второй перл.
#9 #532497
Двойкаёбы, как мне переключить дефолтную кодировку интерпретатора? Чтобы оно мне не выдавало тонны \ux9343\ux9343\ux9343\ux9343\ux9343\ux9343
#10 #532503
>>532421 (OP)
Ребята привет! Я тут начал читать за питон, и не могу въехать в задание подключиться к базе данных. Есть в наличие собственно python, postgresql. И ещё я понимаю что нужно юзать драйвер для подключения. А что мне со всем этим делать, в инете ничего понятного найти не удалось, хочу спросить у вас тут
#11 #532516
>>532503
Ну бля, как можно задавать такие вопросы? первые ссылки в гугле - python postgresql
https://wiki.postgresql.org/wiki/Python
Выбираешь драйвер, например как написано самый популярный Psycopg2
Идешь на офсайт, там все расписано.
установка pip install psycopg2
пример http://initd.org/psycopg/docs/usage.html
#12 #532528
>>532497
print u"Это текст"
print "Это текст".decode('utf-8')

Системную кодировку можно узнать через sys.stdout.encoding
#13 #532529
Наконец-то нормальний картинка. А то в прошлом страшная была.
#14 #532537
>>532528
Не. Проблема в интерактиве:

Python 2.7.9 (default, Jun 16 2015, 20:34:36)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> u'лол'


u'\u043b\u043e\u043b'
#15 #532545
>>532529
Зато в этом я название темы проебал.
#16 #532557
>>532545
Да похуй, по картинке понятно.
#17 #532558
Есть ли годные и производительные графические 2д либы под питон? Из того что есть одно говно. И что там с пигеймом, будет ли развитие? Неужели придется менять язык для разработки высоконагруженных игр?
#18 #532559
>>532558
pyglet самый шустрый из всех что я тыкал

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


У меня для тебя плохие новости.
#19 #532570
>>532558
Владимир?
#20 #532572
>>532559
какие?
>>532570
Андрюха?
#21 #532579
>>532572
Такие, что графонистей какого-нибудь раймана или braid ты на скриптоте не напишешь.
#22 #532583

>Python developer


>500$


>Опыт, навыки, технологии: 1,5 года опыта


>куча фронтендопараши


до слёз
#23 #532586
>>532558
Сам задавался этим вопросом и моё исследование показало:
pygame - самое годное, хоть и медленное. Если руки не совсем крюки, то можно оптимизировать небо и аллаха за счёт грязных спрайтов в большинстве ситуаций, реальные проблемы только когда плавную прокрутку в фулХД запилить требуется. Твой выбор если ты сам хочешь сделать свою игру на питоне.
pyglet - быстра как понос относительно пайгейма (за счёт ускорения железом), но не может быстро в сотни слоёв. С одной стороны за тебя уже запилили часть скелета игры, который может тебе и не подойти, а с другой тебе придётся ебаться с опнглом на низком уровне частенько. Твой выбор если тебе не нужны сотни слоёв, твоя игра вписывается в их шаблоны и тебе норм ещё и опнгл паралельно учить.
cocos2d - надстройка над пайглетом, за тебя запилили ещё большую часть игры. При этом там замыливают твои пиксели и я не смог найти как это отключить. Можно быстро сваять казуалку, но если твоя игра не вписывается в их шаблон то тебя ждут весёлые баги, типа чёрных полос на стыках тайлов, или ненужного мыльца из за координат спрайтов с плавающей точкой, найти решение которых будет затруднительно, тк поиск насмерть засран кокосом2д для гейфонов на всяких сишарпах.

>И что там с пигеймом, будет ли развитие?


А чего тебе в нём сейчас не хватает?
>>532559

>pyglet самый шустрый


Не всегда. Там сортировка по высоте только через группы, а если у меня карта в 100 тайлов по высоте и нужно, чтобы деревце с Y верхушкой кроны закрывало корень деревца Y-1 b и при этом это не между ними мог влезть персонаж, так чтобы он закрывал головой деревце выше его, а деревце ниже его закрывало его, то тогда нужно пилить 200 групп, что по скорости будет тормознутее пайгейма. Но если у тебя вся игра помещается в 5-10 слоёв, то он самый быстрый да.
33 Кб, 1044x439
#24 #532593
Анон,что я делаю не так ? В гугле по второй ошибке ничего не нашел.
#25 #532595
>>532593
Поставь виртуалку с линуксом, половина пакето-проблем уйдет.
#26 #532596
>>532558
Алсо, учитывай, что через то время, что ты запилишь игру производительность процессоров скакнёт и пайгейм станет в 2-4 раза быстрее за счёт этого на десктопах.
#27 #532600
>>532586
Питоновский кокос разве еще живой? По их сайту создается впечатление трупа.
#28 #532612
>>532600
Незнаю. А какая разница?
#29 #532613
>>532612
Большая.
#30 #532617
>>532586

>>А чего тебе в нём сейчас не хватает?


sdl2, pythonic, python3
>>532596
Не думаю что процессоры в ближайшие годы станут сильно производительней, особенно учитывая тот факт что амд умирает.
>>532600
Ты взгляни на сайт того же pygame.org, зеленый пиздец из 2000. Так они еще несколько дней назад поставили переадресацию на новый сайт, где дизайн еще хуже. Весь сайт на большом дашборде, который еще проматывать вправо нужно, при это все лагает. Пиздец короче.

Даже не знаю что делать. Лучше пережду пару годков, а там надеюсь станет понятней что выбирать для разработки, глядишь выйдет новый движок или тот же пигейм обновят для работы с вулканом.
Пока смотрю в сторону godot engine, но с кастомным языком не сильно хочу работать.
#31 #532620
>>532617

>новый сайт


Феерический пиздец. Даже с музякой и плеером на главной. Давно я так не проигрывал.
#32 #532621
>>532613
Например?
Ты же не баба, чтобы моде следовать и бездумно брать то что новее типа третьего питона. Аргументы давай.
#33 #532622
>>532407
Наверни a byte of python и пили проектики, Лутц и говносайты не нужны.
#34 #532625
>>532617

>sdl2


И зачем он нужен? Алсо:

>Tom Rothamel has announced that Pygame_sdl2 development is underway. Pygame_sdl2 uses SDL2 and implements a large portion of the pygame API. For now, Pygame_sdl2 is available at https://github.com/renpy/pygame_sdl2.



>pythonic


Чито?

>python3


Есть, хоть и не нужен.
#35 #532630
>>532617

>зеленый пиздец из 2000


>дизайн


Тебе шашечки или ехать?
#36 #532633
>>532622
Лучше дайту пасту про погруджение в питон.

>>532630
Это че еще? Иди нахуй
#37 #532635
>>532621
Аргументы против использования мертвой поделки? Ты серьезно? Ну ладно.

Отсутствие багфиксов. Никто не пишет идеальный код, всего есть что чинить.
Отсутствие новых фич. Опять таки идеальных фреймворков не существует, даже лучшие развиваются до сих пор.
Отсутствие новых платформ. Один пека в 2015 не катит.
Отсутствие секурити фиксов. Для игровой библиотеки не актуально, но все же.
Отсутствие улучшений производительности. Никто не будет вылизывать алгоритмы для хуйни, которой никто не пользуется. Очень актуально.
Неизбежное снижение пользовательской и кодовой базы. Больше не сделаешь import new_cool_module, потому что никто его не напишет.
Мне продолжать?

Ты дебил какой-то. Или зеленый. Иди нахуй на коболе под os/2 пиши.
#38 #532636
>>532625
Нахуй иди, сказали же тебе.
#39 #532639
>>532633

>Это че еще? Иди нахуй


Охуеть ты школота.
#40 #532641
>>532639

>ПОК-ПОК-ПОК РАЗВИТИЕ НИНУЖНО НОВЫЕ ФИЧИ НИНУЖНЫ


>МАМ СМАРИ Я ЗАТРАЛЕЛ ШКАЛЬНИКОВ))0

#41 #532647
>>532635

> Отсутствие багфиксов. Никто не пишет идеальный код, всего есть что чинить.


В старых и мёртвых либах все критические вещи уже пофикшены.

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


1) Ты в любом случае пишешь игру сейчас и не можешь ориентироваться не некоторые неопределённые фичи, что могут быть.
2) Новые фичи - новые баги.

> Отсутствие новых платформ. Один пека в 2015 не катит.


И какие платформы там не работают?

> Отсутствие секурити фиксов. Для игровой библиотеки не актуально, но все же.


Сам сказал, что неактуально.

> Неизбежное снижение пользовательской и кодовой базы. Больше не сделаешь import new_cool_module, потому что никто его не напишет.


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

> Мне продолжать?


Может хоть 1 валидный пункт придумаешь.
#42 #532650
>>532641

>Пост про то что петушок смотрит на дизайн сайта, а не на функционал либы.


>ПОК-ПОК-ПОК РАЗВИТИЕ НИНУЖНО


Ты у мамы особенный как я погляжу.
#43 #532695
def square(x, y): # x, y - параметры
result = xy
print "%d в степени %d = %d" % (x, y, result)

square(x, y) # А это уже аргументы! Чувствуете?
#44 #532702
Термин «аргумент» подразумевает, что конкретно и какой конкретной функции было передано, а параметр — в каком качестве функция применила это принятое. То есть вызывающий код передает аргумент в параметр, который определен в члене спецификации функции.
#45 #532712
Метод это функция класса.
#46 #532713
Пифон — ето язык программирования
#47 #532722
>>532695>>532702>>532712
А нахуя ты это всё пишешь сюда, да ещё и в отдельнх постах?

>>532647

>1) Ты в любом случае пишешь игру сейчас и не можешь ориентироваться не некоторые неопределённые фичи, что могут быть.


Но ведь он игру не забросит после написания, а будет её, наверное, развивать, не? Да, в первой версии никаких "будущих" фич модуля не будет, а через полгода раз и свистелку добавят, которая будет ему как раз. А используя мёртвый модуль и сама игра получается мёртвой изначально. Это как начинать писать игру на заброшенном движке, далеко не в графоне же разница. Конечно, ты в состоянии сам всё реализовать, если что-то конкретное нужно, но в таком случае отстаивается позиция "модули не нужны", и "современные и поддерживаемые модули не нужны" лишь одна из её частей.
#48 #532725
>>532722

>А нахуя ты это всё пишешь сюда, да ещё и в отдельнх постах?


Чтобы знали.
#49 #532726
>>532712
>>532713
Язек программирования — ета программированный язек.
#50 #532727
>>532725
И разбирались в терминах, а то интерфейс от класса не могут отличить, блядь.
#51 #532730
>>532722

>Но ведь он игру не забросит после написания, а будет её, наверное, развивать, не?


С 99,9% вероятности, не будет даже если напишет.
#52 #532736
>>532730
Я вообще игру не пишу, а тот чувак видимо только спросил и сразу нахуй послал. Ну и правильно сделал.
Я только говорил что писать новый код используя дохлые библиотеки - говноедство. Хотя у тебя похоже легаси ЫНТЫРПРАЙЗ головного мозга и использовать то, что еще не разложилось и не завоняло ты считаешь зашкваром и детскими шалостями.
#53 #532745
>>532630
Дизайн сайта - хороший показатель качества либы. Если какое-то хуйло не может фронтэнд сверстать нормально в 2015 году, что вообще ему можно доверять? Хуже пхп-макаки.
>>532712
А мандада, как известно, это масив.
#54 #532756
>>532736
Я считаю, что нужно смотреть на возможности либы, а не на дату.
Например:
"В этой конкретной библиотеке нет такой-то критичной для меня возможности." - аргумент.
"Библиотека не обновлялась пару лет и только поэтому я не буду даже смотреть, что она может." - подход дегенератов без мозга.
#55 #532757
>>532756
"Библиотека не обновлялась пару лет поэтому древние версии системных либ с которыми она работает можно найти разве что в четвертом редхате."
#56 #532760
>>532757

>2015


>не использовать божественный четвертый редхат


Туда ли ты зашел, петушок? У нас тут клуб любителей питона 2.6
#57 #532761
>>532757
Всегда можно поставить другой питон с нужными либами.
#58 #532798
>>532761
А если проект уже в третьем питоне?
#59 #532801
>>532798
Таких не бывает, все пишут под 2.6, это продакшн.
#60 #532803
>>532745
При всем при этом им делали макеты нормальных сайтов, хотели помочь, а они в итоге сделали сайт не из 2015, а из 2006
#61 #532849
>>532761
Т.е. подстраиваться под устаревшую либу, вместо того, чтобы просто новую взять? Что-то это беседа уже скатилсь хер знает куда.
#62 #532851
>>532516
Спасибо, я просто совсем нуб, дочитываю только Луца
#63 #532896
>>532849
Это просто зеленый. У него и питон 3 не нужен. Не кормите.
#64 #532948
>>532497

>второй пистон


>2015

#65 #533048
Почему нельзя сделать простую и удобную графическую библиотеку как http://www.ness-engine.com/, почему обязательно нужно делать мертворожденные клоны и форки пигейма?
#66 #533051
>>533048
Потому что как нам пояснили эксперты - мертвое - значит стабильное, значит надежное и можно наконец использовать в продакшыне.
2044 Кб, 248x291
#67 #533171
Анон, на питоне можно писать простые 2д игры? С пиксельным графоном например. И во что питон, по сравнению с другими языками, не может?
#68 #533173
>>533171
Можно.
Зависит от языка с которым сравниваешь.
#69 #533174
>>533171
Можно.

>И во что питон, по сравнению с другими языками, не может?


В скорость.
#70 #533175
>>533051
В производительность и многопоточность.
Всякое мелкое говно можно написать практически в любом языке, а вот тот же клон террарии сделать, чтобы он не лагал, уже очень проблематично сделать. Попробуй godot engine, синтаксис похож на питоновский, либо ебись с пигеймом без экспорта на мобилки. Выбор невелик.
#71 #533185
#72 #533291
>>532558
Еще есть kivEnt.
http://kivent.org/
На нем запилили прикольную игруху для андроида.
https://play.google.com/store/apps/details?id=org.chozabu.boardzfree
#73 #533296
Как узнать какая часть скрипта на питоне больше всего тормозит? Очевидно можно вычитать время конца функции от начала и постепенно сужать круг поиска. Но может существуют специальные модули для этого или внешние инструменты.
#75 #533319
>>533291
Возможно хорошая штука чтобы делать всякие приложения с киви, но думаю для серьезных игр для пк это не пойдет, особенно если учесть что сам киви основан на пигейме. Там даже третий питон не работает на андройде. Стоит ждать перенос киви на сдл2, который сейчас и происходит. Возможно в будущем это станет такой же платформой для разработки игр как и пигейм.
#76 #533323
>>533319
Я уже сомневаюсь что они осилят sdl2 и питон3 для андроида. И пигейм кстати выкидывают, меняют на свое. Там какой-то адский замок из костылей, абсолютно непереносимый.
#77 #533341
Анон исправьте в FAQ ссылку на тред. Блядь она на тред июля ведет. Там народ сидит вопросы задает лол. А этот тред создал какой то пиздоглазый мудак даже не назвав его Python и через поиск он не ищется.
>>532421 (OP)
Мудак блядь.
#78 #533343
>>533341
Нюфак порвался.
#79 #533350
>>533343
Ну да я только пришел. Блядь ну тред хоть Python можно назвать нет? Олдфаги хуевы блядь.
#80 #533355
>>533350
Ну проебался я немношк, извиняй. Хуле дерзкий то такой?

Раздел все равно полудохлый, и все живые треды на первой странице висят. А ссылки в FAQ'е никто не правит. На рубитред там вообще 404.
#81 #533360
>>533355
Да что то я переборщил извини. Уф я думал хули там никого нет думал Python - ВСЁ лол, мой мир рухнул.
17 Кб, 420x350
#82 #533417
ПИИИИИИИФОООООООООН!
75 Кб, 500x333
#83 #533418
>>533417
Опять ты?
#84 #533446
>>532849
Тебе красивая циферка версии нужна или чтобы программа ТЗ выполняла?
Если ты из той либы ничего, что есть только в обновлениях не используешь, то всё норм. А ты этого не делаешь в 99,99% случаев.
Куда я попал? Доска не программистов, а модниц каких-то, которые берут новинку только потому, что это новинка.
#85 #533449
>>533171
Можно и оче просто. Pygame, например, оче хорош для обучения, тк не городит за тебя структуры игры, а просто даёт тебе возможность вывести картинку, звук, получить нажатие клавиши или положение мышки и ты сам разбираешься, как всё нужно устраивать. Можно писать и сложные игры.
Питон не может в скорость исполнения, но при текущей производительности процессоров это не критично, если ты не собрался цикл в миллионы элементов 60 раз в секунду обрабатывать. Но при необходимости даже это решается заменой этого места модулем на С или перекатом на PyPy какой-нибудь.
#86 #533451
>>533048
А чем тебе пайгем не простой и не удобный?
#87 #533470
>>533174

>В скорость.


Numba, Cython, Theano. Было бы желание.
#88 #533643
>>533449
А какие игры на нем написаны?
#89 #533651
Посаны. Вопросы по PEP257.

Накати его и pylint, вылезает кучу ошибок. Ну, большую часть я пофиксил, но вот например есть "D103 Docstring missing in public function" и я не знаю как его пофиксить.
Докстринги вроде всюду есть, но может я оформляю как-то не так?

Может кто-то привести пример правильной функции с докстрингом который не вызывает ошибку?
#90 #533657
Пишу camelCase и ничего не могу с собой поделать.
64 Кб, 1280x720
#91 #533666
>>533651
Впизду. Вставляю примеры с документации PEP257 и всё равно получаю ошибку D103. Вставил код в другой редактор - написало что всё ОК. В итоге просто заигнорил ошибку.
атомопроблемы
#92 #533677
Пагни, нужна помощь по BeautifulSoup. У меня есть страничка, и с этой странички нужно сохранить текст, который внутри тэгов. Меня интересует вот эта вот строка:
<td width=470 colspan=3 align=center valign=middle bgcolor=#eeeeee><font color=#00008f>блаблабла</font></td></tr>
Мне нужно отсюда вывести "блаблабла". Т.е. вот этот текст задан конкретными специфичными параметрами, как к нему подобраться? Пишу разную хуйню с findAll, но пока не могу по-нормальному все сделать.
#93 #533707
Посоны, а какие сейчас средние зарплаты у сильных сеньёров на питоне/джанге/sql/nosql?
#94 #533713
>>533677
td.text
>>533651
Забей на эту хуйню. Понимаю ещё для документации формат соблюдать.
#96 #533731
>>533657
в wxpython функции ВсёВотТак
#97 #533734
>>533707
40к рублей. Если в ДС то 50, может даже 60.
#98 #533739
>>533707
Питон это язык для обучения, типа бейсика.
Никаких зарплат там нет и никаких синьеров.
Если хочешь найти работу учи java или php. Это энтерпрайз.
#99 #533742
>>533739
Можно стать главным и диктовать свои условия, например.
#100 #533743
>>533739

>Если хочешь найти работу учи java или php. Это энтерпрайз.


Если хочешь развиваться учи Python. Это highload и не только.
#101 #533748
>>533743
Что такое highload? buzzword? Ещё про BIG DATA расскажи.
#102 #533772
>>533748
Ебать вы науч.
#103 #533908
Такс-такс-такс, что тут у нас? Безработные рабисты разводят срачики про зарплату в питонотреде? АЗХаза ну наканецта.
#104 #534004
>>533739

>Никаких зарплат там нет и никаких синьеров.


Но у меня есть друг, пишет на питоне, тимлид.
И вообще видел немало мидлов и сеньоров.
#105 #534008
>>533739

>Никаких зарплат там нет и никаких синьеров.


>учи java или php


> Это энтерпрайз.


>php


>энтерпрайз


Ты долбон или еблон?

С соседнего треда. https://mathrioshka.atlassian.net/wiki/display/VAC/Back-end+Python+Developer
Зарплата от 100 до 160к. Нууу, даже не знаю, лол.
#106 #534009
>>534008

>Базовые знания статистических алгоритмов


>Хорошая математическая подготовка


>Знание библиотек (Pandas) и языков (R)


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

Какая математическая подготовка.
#107 #534014
>>534009
Сложные вопросы нет смысла задавать, мала вероятность, что кто-то знаком с предметом твоего вопроса, ибо аудитория невелика.
#108 #534015
>>534014
Сижу на лоре там в development иногда задают довольно непростые вопросы и по python в т.ч. и находятся ответы.
Просто аудитория повзрослее и поумнее.
#109 #534016
>>534009
Ну, с этим никто не спорит. Тут в целом соотношение 5% сениоров к 95% студентоты и всяких посетителей из б, которые узнали "как легко зарабатывать 25 баксов в час на удаленке и дать пососать всем своим одноклассниками которые тебя травили". Ничего удивительного.

И да, многие реально гуглом пользоваться не умеют, вводишь их вопрос в гугл и первая же ссылка ответом, копипастишь им и они такие "ОГО, СПАСИБО!". Безумие какое-то.
#110 #534017
>>534014

> аудитория невелика.


Потому что моча неадекватная. Бан на бане, половина тредов закрыты, только дженерал треды имеют право жить. Скоро тут вообще поланона будет. Тащемта я в #python на фриноде и на лор перекатываюсь.
#111 #534029
>>534015
>>534017
Суть pr не только в вопросах и ответах. никуда вы не перекатитесь, не пиздите, петухи
#112 #534038
>>534029
В чем же суть pr? Ни одного годного проекта за всю историю. Вообще нихуя.
#113 #534049
>>534038
Предлагай.
#114 #534052
>>534038
Никакой нормальный человек не будет свой годный проект тут палить. Его потом еще в резюме пихать, а двачеры все зашкварят. Не говоря уже про деанон.
#115 #534058
>>534052
Попроще и повеселее что-нибудь давайте. Чтобы желающих поучаствовать было побольше.
#116 #534065
>>534058
Не в идеях дело, а в зашкваре. Мы даже ОПа на гитхабе переименоваться заставили. Он изначально назвался 2chPythonThread или как-то так. Пиздос. И еще удивлялся почему никто не коммитит. Да, сейчас, побегу я коммитить в двачетред со своим настоящим именем. Да хоть и не двачетред, все равно понятно откуда я этот репозиторий нашел.

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

Хотя ты прав, идей то все равно нет.
#117 #534072
>>534065
Нету да.
Лично я сижу в треде потому что мне нехуй делать и могу какому-нить совсем нубу что-то объяснить, хоть какая-то польза от меня человека-говна.
#118 #534075
Короче есть такая игруля https://screeps.com/
Там пишется бот, который за тебя потом играет.
Соответственно это требует сервера, соответственно поэтому оно платное (ибо могут нарегать тысячи левых акков и уронить всю игру).
Хотелось бы видеть это в p2p варианте. То есть запускаем у себя на компе и оно там считает. Выключили - наши боты остановились.
#119 #534076
>>534075
А как синхронизацию и т.п. делать? То есть можно конечно
#120 #534087
>>534076
Мир большой и разреженный, боты определённого игрока находятся обычно в очень ограниченной части мира. То есть можно использовать локальную когерентность позиций чтобы не учитывать всех-всех-всех для просчёта каждой точки мира.
#121 #534092
>>534087

> локальную когерентность позиций


Я не понял что это значит. Что если у нескольких игроков карта мира одинаковая, а у ещё одного другая - то типа верна карта большинства? А что если они все виртуалы читера?
Нет p2p игры это проблема большая в плане наеба. Поэтому почти все игры централизованные.
#122 #534094
>>534092
Используем принцип биткоина. Просим других проверить наши рассчёты.

Это значит что боты не могут двинуться дальше чем одна клетка за один такт. Резко перенестись из одной части мира в другую.
#123 #534095
>>534094
Можно сделать это как распределенные системы контроля версий.
У каждого копия репозитория, ты делаешь один коммит и делаешь push другим. У них проверяется подходит ли этот коммит под правила и если да то принимается.
Как-то так да?
#124 #534098
>>534095
Именно так, да. Но здесь будет не совсем коммит, а скорее массив ботов с направлениями и типами действий (идти, атаковать, добывать). Проверяющий код будет супер тривиальный.

Соответственно если читаны начинают ломать клиент, произойдёт форк игрового мира и читаны будут играть сами с собой.
#125 #534116
>>534038
Суть pr постебаться и пообсирать что-нибудь. Ну, максимум видос или либу вбросить.
#126 #534167
Решил значит выучить питон, читаю Лутца. часть про строки, поиск по шаблону. В книге написан код:
import re
match=re.match('/(.)/(.)/(.)', 'Hello/Python/world')
далее по книге надо ввести
match.groups()
чтобы получилось разделение, но в интерпретаторе у меня чомуто нихуя не выходит и выскакивает ошибка:

>>> match=re.match('/(.)/(.)/(.)', 'Hello/Python/world')


>>> match.groups()


Traceback (most recent call last):
File "<pyshell#87>", line 1, in <module>
match.groups()
AttributeError: 'NoneType' object has no attribute 'groups'

>>>


Шта делать?
#127 #534168
>>534167
Черт, там в скобках после точки везде звездочки* стоят
#128 #534171
>>534167

>match('/(.)/


>'Hello/P


Сам поймёшь или подсказать?
29 Кб, 486x350
#129 #534173
>>534168
Если match не находит нихуя то возвращает None вместо объекта match
Конкертно у тебя должно быть
re.match('(.)/(.)/(.)', 'Hello/Python/world')
или
re.match('/(.)/(.)/(.)', '/Hello/Python/world')
Иначе оно нихуя не подподает под шаблон
#130 #534205
Анон, поясни за функции, почему с одной переменной канает и как мне это починить?

c=1

def Test(c):
a=c
b=2
return a,b

def Test2(a,b):
print(a,b)

Test2(Test(c))

TypeError: Test2() missing 1 required positional argument: 'b'?
#131 #534209
>>534205
test2(звёздочка test(c))
#132 #534210
>>534205
[CODE]Test2(*Test(c))[/CODE]
15 Кб, 200x300
#133 #534213
>>534210
Я быстрее.
42 Кб, 604x453
#134 #534218
>>534209
>>534210
Cпасибо, няши, помогло.
#135 #534219
>>534218
Лучше ещё погугли что это значит, чтобы возвыситься, так сказать.
#137 #534225
>>534219
Подозревал, что это args-kwargs, только не понимал, как пользоваться.
91 Кб, 260x295
#138 #534237
>>534224

> https://docs.python.org/2/tutorial/controlflow.html#unpacking-argument-lists

#139 #534243
>>534205>>534225
Чтобы ты совсем понял, "return a, b" возвращает не две переменных, а кортеж (он же tuple) с этими элементами (основная часть при создании кортежа это запятая, а не скобки). Именно поэтому тебе выдавалась ошибка об отсутствующем аргументе, ведь ты один и передавал.
63 Кб, 1024x1024
P2P assburger #140 #534292
Сгенерировал мир.
P2P assburger #142 #534297
>>534296
Это не оно. Тут задача другая совсем. Например тут всё белое - это неразрывная область. И в каждой клетке обязательно есть место.
#143 #534317

ПОЛ ГОДА УЧИЛ ПХП
@
НЕ ПОНИМАЛ КАК ТАМ РАБОТАЮТ ЦИКЛЫ
@
НАЧАЛ ИЗУЧАТЬ ПИТОН
@
МАНИПУЛИРУЕШЬ ЦИКЛАМИ КАК ШЛЮХА ДЕЛАЕТ МИНЕТ С 10-ТИ ЛЕТНИМ СТАЖЕМ
#144 #534337
>>534317

> ПОЛ ГОДА


> МИНЕТ С 10-ТИ ЛЕТНИМ СТАЖЕМ


Динах отсюда, дибил.
#145 #534345
Дергаю стороннюю утилитку через os.system()
Утилита дает выхлоп в stdout. Если сделать response = os.system('/bin/zalupka') то в response остается pid, а не выхлоп. Мне нужен выхлоп чтобы распарсить. Как это сделать?
#147 #534358
>>534346
Эта хуита годится разве что ls дергать. Оно не может нормально передать параметры к /bin/zalupka
#148 #534368
>>534358
Пример чего она не может или не было.
#149 #534369
>>534345
Если бы ты хоть немного читал документацию, то увидел бы что os.system это как раз дёргать ls, а что посложнее - проследуйте в subprocess. Конкретно тебе нужен subprocess.POpen
#151 #534373
Все равно хуйня какая-то получается. Хуй с ним, на баше напишу.
#153 #534422
>>534345
Тебя не учили не использовать system()? Или ты думаешь что идеально знаешь синтаксис sh? Сколько таких по весне на пробелах и кавычках оттаяло. subprocess.check_output(['/bin/zalupka'])
#154 #534468
https://mail.python.org/pipermail/python-announce-list/2015-August/010865.html
https://github.com/micropython/micropython

>MicroPython is an implementation of a subset of Python 3.5 which is optimised for systems with minimal resources, including microcontrollers and embedded/IoT systems.



Харкнул в рот всем питон3-нинужна питухам и зеленым.
#155 #534469
>>534468
питон на микроконтроллерах ненужен.
#156 #534513
>>534417
Пиздец, ты хоть попытайся что-нибудь сложнее хеловорда.
>>534422
Попытка админить на пистоне это хуёвая попытка.
#157 #534514
>>534513

> Попытка админить на пистоне это хуёвая попытка.


Вообще у всех этих облачных сервисов и суперкомпьютеров скрипты управления на питоне.
#158 #534572
>>534514
Кто все эти облачные сервисы и суперкомпьютеры?
#159 #534585
>>534572
гугл, амазон.
#160 #534598
>>534513

>Попытка админить на пистоне это хуёвая попытка.


У вас Ansible
#161 #534601
>>534513

>Попытка админить на пистоне это хуёвая попытка.


Тащемта не считая баша питон язык номер один для админа. Что для шиндового, что для юниксового. Раньше перл был.
831 Кб, 1920x2560
1067 Кб, 2560x1920
#162 #534606
Без меня атом был бы нитаким!
#163 #534612
>>534606
Что за атом? Редактор чтоли текстовый?
#164 #534616
#165 #534619
>>534616
А че в нем хорошего? Чем он лучше vim?
#166 #534623
>>534619
Чем vim. привычные™ шорткаты, минимапа, линтеры
#167 #534625
>>534619
Ничем, это такой сублайм 2.0. Лучше вима только неовим.
#168 #534630
>>534606
Не таким уебишьным или еще более убишьным? Атом - наглядный пример уебанства жабоскрипта и ноды с вебкитом в частности.
#169 #534635
>>534630
Да я тока плагин написал.
#170 #534636
>>534630
Мне атом нравится, хорошо зделали.
#171 #534694
>>534636
Говноед и samefag
#172 #534706
>>534694
Пустослов.
sage #173 #534709
Весомые аргументы ITT
#175 #534757
Перепост из ньюфаг-треда.
Сап, котаны.
Хочу запилить ГТД систему с интегрированным миндмэпом и экселем. Хз почему никто еще не додумался до такой вещи. Дико угораю по гтд.
Сам ниразу не программист, первый раз зашел в раздел. В универе как бог решал задачки и делал лабы на бейсике. Есть по 2 часа свободного времени в будни и по 6 часов в выходные.
Нужно чтобы можно было работать с ноута и мобильного, поэтому скорее всего это должно быть что то типо сайта.
Что мне учить, чтобы максимально быстро, учитывая время освоения новой для меня технологии запилить мою йобу и начать с ней работать? И сколько это займет по времени?
Если это важно то на ноуте у меня стоит Линукс Минт, а смартфон андроид.

Добавлю, что после 2х дней курения программача и гугла решил, что это лучше сделать на пайтоне, ибо по отзывам самый простой язык. Уже читаю Марка Лутца.
Дадите ли каких-нибудь советов мудрых, как мою мечту быстрее воплотить в жизнь?
#176 #534768
Питоны, совершаю перекат с 2 на 3. Кто может что дельное посоветовать для статистики покрытия тестами на джанге? django-coverage порвался на третьем
#177 #534778
>>534724

>Что нового?


>Работает плохо!


Проиграл.

А чойта у тебя Version с заглавной буквы? Не по пепу, Гвидо не одобрит!

>>534757
pyqt/pyside/pygobject наверни с соответствующими конструкторами гуйца. Покроет 98% нужных функций.

>Хз почему никто еще не додумался до такой вещи.


Потому что на самом деле их никто не использует. Только саморазвиванцы вроде тебя.
#178 #534782
>>534768
TDD-петух в треде.
#179 #534817
>>534782
поди прочь, ленивое хуйло
#180 #534818
>>534817
У вас test coverage на 1% упал, надо срочно написать пару бесполезных тестов.
#181 #534823
>>534818
поссу тебе в рот, когда ты будешь перетаскивать проект на другой хостинг
#182 #534824
>>534823
Это каким нужно быть дном, чтобы на питоне написать код, который работает только на одной машине?
#183 #534828
>>534824
просто иди нахуй. Проект будет писаться несколькими людьми и тесты согласованы с заказчиком. Вернись к своему говнокоду под шконку
#184 #534854
посоветуйте какой-нибудь задачник или что-то подобное, а то тухло просто лутца читать
#185 #534871
>>534854
Майкл Доусон - Программируем на Python

В конце каждой главы есть упражнения. Ну, если у тебя еще пока novice level
#186 #534892
>>534854
чекио
#187 #534900
Посоны, чому у меня в PyCharm по правому клику на файл внутри пакаджа нет опции запустить как скрипт?
Есть только Run 'Unittests in XXX'
#188 #534935
>>534854
project euler, nado na github dobavit uje
#189 #534938
>>534935
Dobav', blyat. Davai, blyat, delai pull request. Vstal i sdelela blyat.
#190 #534951
Сап, коданы, есть одна XML-ка, она лежит в интернетах и я читаю ее построчно с помощью urllib,request. В ней прописано:
<?xml version="1.0" encoding="windows-1251"?>

Однако, когда я хочу свежесчитанную строку (если я ничего не путаю, .readline() тут возвращает байты) задекодить, он мне кидает:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 13-15: ordinal not in range(128)

Что сие может значить? Ни в какую кодировку не дает сконвертить эти байты.
#191 #534953
>>534938
Nu a khuli OP kak debil, skol'ko raz etot vopros vspival uje.
#192 #534954
>>534951

>can't encode


Ты там случаем не в консоль по шиндовсом эту строчку вывести пытаешься?
#193 #534962
>>534953
Manya, ti ponimaesh v chem syt' githuba?

>Build software better, together.



Idi dobavlyai ya skazal.
#194 #534972
>>534954
Какую строчку и зачем, по-вашему, я ввожу в консоль? Не понимаю вопроса. Я получил результат функции target.readline() и он выглядит как b'строка', то бишь в байтах, но перекодировать не дает вообще никуда
#195 #535001
Решил наконец освоить питон который третий. Из скриптовых отлично знаю руби, и достаточно хорошо перл который пятый, поэтому проблем с изучением быть не должно. Но все же, может быть есть что-то, что мне нужно знать перед изучением, учитывая предыдущий опыт?
#196 #535005
>>535001
Используй пробелы, а не табы. И не делай list comprehensionов в 100500 символов перлоебы такое любят В остальном обычная скриптота.
#197 #535013
>>534972

>ввожу


вывести
Что там в этой строке-то посомтри хотя бы. EncodeError вылезает при попытке вывода куда-то (или str() над юникодовой строкой, содержащей не-ascii символы во втором питоне). b''.encode('utf-8') попробуй.
#198 #535036
>>534778

>Проиграл. А чойта у тебя Version с заглавной буквы? Не по пепу, Гвидо не одобрит!



Реально, не могу сделать нормально, бьюсь уже месяц об табы в tkinter. А Version, что она есть, что нет, один хуй. Гвидо тоже пепы не слишком соблюдает, пруфы в коде IDLE.
#199 #535054
>>532421 (OP)
Господа, есть у кого переведенная dive into python&? Все 3 части желательно.
#200 #535081
>>535013
\tAttributeError: 'bytes' object has no attribute 'encode'
#201 #535082
>>533677
Xpath юзай.
#202 #535086
>>535054
Учи английский, рак.
#203 #535089
>>535081
>>535013
bytes содержит кодированные данные, отсюда и слово кодировка. Соответственно у него есть только decode в символы.

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

В py2 bytes и str это одно и то же, ещё есть unicode, ещё исходники по умолчанию читаются как ascii, поэтому в нём легко можно прострелить себе колено.
#204 #535094
При попытке декодить байты в утф8:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 13: invalid continuation byte

При попытке декодить в вин-1251:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 13: invalid continuation byte
29 Кб, 423x395
#205 #535099
>>535094

>декодить в вин-1251


>'utf-8' codec

#206 #535101
>>535099
Не то скопировал, там:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 13-15: ordinal not in range(128)
29 Кб, 423x395
#207 #535103
>>535101

>декодить в вин-1251


>'ascii' codec

29 Кб, 423x395
#208 #535108
>>535101

>декодить в вин-1251


>декодить


>UnicodeEncodeError

sage #209 #535110
>>535101
Заебал короче, выкладывай полный трейсбек. С декодированием эта ошибка никак не связана.
#210 #535117
>>535110
Traceback (most recent call last):
File "parser.py", line 6, in <module>
print(target.readline().decode('windows-1251'))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 13-15: ordinal not in range(128)

Traceback (most recent call last):
File "parser.py", line 6, in <module>
print(target.readline().decode('windows-1251'))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 13-15: ordinal not in range(128)
#211 #535118
>>535117
Извиняюсь, вто второй трейсбек:

Traceback (most recent call last):
File "parser.py", line 6, in <module>
print(target.readline().decode('utf-8'))
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 13: invalid continuation byte
#212 #535122
>>535118
Плохие значит у тебя байты. Они не соответствуют кодировке utf-8.

Насколько помню в утф-8 байт может начинаться или с нуля или с 10. То есть 10xxxxxx. У тебя xCE, 11001110. Вот оно тебе и высрало ошибку.
#213 #535124
>>535122
А что по поводу первого трейсбека?
sage #214 #535125
>>535117
У тебя ясно же спросили, ты, долбоебина, результат декодирования в консоль выводишь? Ты print в своем коде видишь? Ты понимаешь что у тебя терминал вывод кириллицы не поддерживает?
>>535118
windows-1251 было правильно.
#215 #535127
>>535124
Попробуй сделать
x = target.readline()
print(type(x))
print(x)
#216 #535129
>>535125
А ты даже не посмотришь, что ошибка не в выводе а в декодировании, сразу называешь меня долбоебиной, рашкопрограммер, хули. Да еще сагаешь тред, который ни в чем не виноват. В консоль выводит строку вида b'строка' с недекодированной кириллицей если убрать метод, который декодирует. С методом вышеуказанный трейсбек получаю.
#217 #535132

>>> 'лол'.encode('windows-1251')


b'\xeb\xee\xeb'

>>> 'лол'.encode('windows-1251').decode('windows-1251')


'лол'
sage #218 #535133
>>535129

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


>в декодировании


Тебе, мудаку, уже два раза указали что ошибка называется UnicodeEncodeError. Повторяй за мной: Unicode. ENCODE. Error. Ошибка возникает потому что print(x) делает sys.stdout.write(str(x).encode(sys.stdout.encoding)), а sys.stdout.encoding == 'ascii', который кириллицу не кодирует.
#219 #535134
>>535133
Ну вот сразу бы так. Спасибо.
#220 #535135
Аж интересно что за консоль такая.
#221 #535137
>>535135
cmd.exe жи. Спермопроблемы-спермоблемочки.
#222 #535138
>>535137
Арч у меня.
#223 #535140
>>535137
Это ты скорее всего пердон как-то не так установил. Ну в любом случае можно попробовать sys.setdefaultencoding('windows-1251') или где-то в конфигах питона это найти. Не верится что спермоконсоль не может в кириллицу.
#224 #535141
>>535140

>Арч у меня

#225 #535142
>>535138
Проверь что в /etc/locale.gen раскомментирована en_US.UTF-8, выполни sudo locale-gen, в .bashrc добавь export LANG=en_US.utf8 и перезапусти терминал.
#226 #535143
>>535142
echo $LANG
en_US.UTF-8
#227 #535144
>>535143
Ну тогда хуй его знает, пришло время переустановить арч наверное.
#228 #535145
>>535144
Упс. Действительно, не была раскомментирована локаль, которая установлена в LANG. Прошу прощения за быдлопроблемы.
#229 #535189
И чем етот арч всем нравится?
#230 #535194
>>535189
Ничего лишнего. В процессе установки устанавливаешь только что тебе действительно нужно.

Но на самом деле это все на любителя.
#231 #535195
>>534900
бампую вопрос
#232 #535218
Как узнать, что объект итерабл, но не строка? Именно list-like iterable, как это назвали на со.
hasattr("asdf", '__iter__') во втором возвращает False, а вот в третьем - True.
#233 #535234
>>535218
hasattr(o, '__iter__') and not isinstance(o, str)
kek.
#234 #535242
Сап, почаны
По celery (желательно в связке с rabbitmq/redis ) гайды или видеоуроки можете посоветовать?
#235 #535246
>>535234
Лол, ну не, должен же быть покрасивше способ.
#236 #535251
>>535246
Как ты себе это представляешь? В итераторах всё движется к унификации и неотличимости. А у тебя какое-то "хочу то не знаю что".
#237 #535253
>>535218
>>535234
Прально ващета так:
isinstance(yoba, collections.Iterable)
Ну, и >>535251 всё разложил, ёпту.
#238 #535266
>>535251
Ну почему же "хочу то не знаю что". Строка это, так сказать, не настоящий список. Итерировать по списку объектов и итеровать по буковкам строки - совсем разные вещи же.
Например, если мне в функцию передали один объект, я с ним что-то делаю. Если передали список объектов, я с каждым из них что-то делаю. А строка тут совсем не к месту получается, потому что с каждой отдельной буквой мне нафиг не надо ничего делать, я хочу либо над строкой, либо над списком строк. И, думаю, редко попадается необходимость производить одну и ту же операцию как над элементами списка, так и над каждой буквой строки.

В общем, всё понятно, спасибо за ответы.
#239 #535269
>>535266
А если ты итерируешь генератор, выплёвывающий попеременно одиночные символы, списки, числа и None? Динамическое петушение типизация, сэр.
#240 #535271
>>535266

>Строка это, так сказать, не настоящий список.


Строка это низменяемый список символов.

>Итерировать по списку объектов и итеровать по буковкам строки - совсем разные вещи же.


Нет.

>Например, если мне в функцию передали один объект, я с ним что-то делаю. Если передали список объектов, я с каждым из них что-то делаю.


Хуйней какой-то занимаешься. Сделай две разные функции.
#241 #535321
>>535189
в арчеговне питон3 по умолчанию. приходится делать rm /usr/bin/python && ln /usr/bin/python2 /usr/bin/python
#242 #535325
>>535321

>ТРОЙКА НИНУЖНА


Мамин траль не осилил man ln и ключик -f. Вся суть дауна-ретрограда.
#243 #535338
>>535269
>>535271
Хм, пожалуй, вы правы.
Не, две разные фукнции глупо городить, если разница там в две-три строки, не считая определения итерабла). Так-то я и ('string',) мог при вызове функции писать и вообще не париться, но не хотелось это уродство в кодпихать.

Ещё вот сегодня напоролся:
def func((звёздочка)args, foo=None):
Выдаёт синтакс эррор во втором (2.7.10), а в третьем всё ок. Это нормально? Никогда раньше, почему-то, не сталкивался с этим.
#244 #535340
>>535338
Нормально. Во втором args, kargs должны быть в конце списка аргументов.
#245 #535341
>>535338
Да съеби ты уже со своим вторым.
#246 #535342
>>535341
Въеби ты. 3-й игрушка для школьников. Энтерпрайз юзает 2-й
#247 #535343
>>535342
Я и есть энтерпрайз, парень, я и есть энтерпрайз!
и я использую третий на работе
#248 #535350
>>535342
Джва точка шесть, джва точка шесть! Чтобы больше ынтырпрайза. В 2015.

Л Е Г А С И
Е
Г
А
С
И
#249 #535351
>>535341
Лол, так я и использую третий (и форшу у себя на работе). Решил интереса ради запустить скрипт во втором, а там такой вот сюрприз.
#250 #535383
А какие профиты от переката на версию 3? Кроме всяких незначительных типа кончающийся поддержки у 2.
#251 #535417
>>535351
Запусти ещё на первом, так… чисто ради интереса.
>>535383
Новые фичи, конечно же.
#252 #535421
>>535383

>кончающийся поддержки у 2


>незначительных


ШинХП еще небось используешь, да?
#253 #535456
>>535383
Откуда вы лезете блядь? Меня даже на собеседовании это спрашивали. Во всех языках народ с радостью перекатывается на новые версии, только в питонах какие-то мудоёбы собрались.
#254 #535460
Twisted перелез на Питон 3 скоро всем пизда настанет, торнадодети и aioдебилы, ховайтесь.
22 Кб, 700x700
#256 #535465
АНОН. БЛЯТЬ, КАК СУКА ОБРАТНО ИЗ СПИСКА ПРИСВОИТЬ ЗНАЧЕНИЯ ЭЛЕМЕНТОВ КАК ИМЕНА ФАЙЛАМ!!?!?
#257 #535466
>>535465
Что?
#258 #535472
>>535465
with open(your_list[0], 'w') as f: ?
#259 #535474
>>535460
А мне итак норм. Говно с колбэками нинужно. yield from наше всио.
aioдебил
#260 #535479
>>535474
Типичный aioдебил, в Twisted был аналог твоего
@coroutine и yield from на генераторах (@inlineCallbacks и yield), начиная с релиза питона 2.5, когда даже жаваскриптодети о подобном не задумывались.
#261 #535483
>>535479
Запоздал твой твистед с яйцами на базар. Нехуй было на двойке столько лет жрать говны.
#262 #535486
>>535483
Под твистед реализовано дохуя протоколов всяких, например и у него api годный и проработанный.
#263 #535495
>>535483
Нет, это asyncio проебан по дизайну. Это ты поймёшь, когда тебе придётся реализовывать сетевой протокол чуть сложнее echo (вроде Zookeeper'ского например или Thrift с кастомными командами контроля соединения) на чистом asyncio без нормальных деферредов.
#264 #535499
>>535472
няшка, ну не в ручную же
#265 #535502
>>535499
Ну так в лупе запусти. Или объясни нормально, чего ты хочешь добиться-то.
#266 #535503
>>535495
Ну я тот самый поехавший запиливающий p2p игру. Хуй знает, сейчас больше голова болит с проектированием самого протокола. Стандартные клиент-сервер написались за 5 минут, тривиально до безобразия. Что такое деферред? Есть тут фьючеры и таски, оно?
#267 #535511
>>535502
я мечтаю своими клешнями собрать скрипт который будет заходить в папку и закидывать в список имена файлов:
import os
directory = '/home/workmachine/source'
list_of_files = os.listdir(directory)
а потом по циклу заменять именя файлов на порядковые имена от 1....n, я уже весь лор заебал, у меня либо так либо через софтину бездуховную, а я не хочу через софтину, я хочу через пайтон, что бы хоть как то его подтягивать пока джаваскриптебучий учу для работы.
вот дали цикл
i = 0
for name in list_of_files:
print(template.format(name, i))
i += 1
как собать имена я нашёл, теперь что в этом тимплейте записать, что бы он зашуршал, я всё обязательно выучу, додрочу доудсона. схаваю Лутца, но щас реально нет времени, нужно просто что бы заработало и я воспарю
#268 #535514
>>535511

>заменять именя файлов


Ты хотел сказать переименовывать файлы?
#269 #535519
>>535511
[code]
import os
os.chdir('/home/workmachine/source')
l = os.listdir('.')
l.sort()
for i, f in enumerate(l):
os.rename(f, '%d.jpg' % i)
[/code]
#270 #535520
>>535514
В голос, блядь.
#271 #535521
>>535519
Если в директории есть 3 файла: 1.jpg, 15.jpg и 2.jpg, то всё сломается, например.
#272 #535522
>>535514
я сказал "заменять имена файлов значением каунтера +".jpg""
#273 #535523
>>535521
>>535521
тогда нахя такое надо, вяское бывает, или ручками менять?
#274 #535524
>>535519

os.rename(f, '%d.jpg' % i)
^
IndentationError: expected an indented block
чё он выябывается?
#275 #535525
>>535524
Отступ перед os.rename добавь.
#276 #535527
>>535522
Задача уровня /bat/: ren . *.jpg
#277 #535529
>>535524
Пиздец, как ты программируешь не зная англицкого и не умея понимать ошибки которые показывает тебе компилятор?
#278 #535543
>>535529
жизнь заставляет>>535525
>>535519
добра
#279 #535551
#280 #535554
>>535529
Интерпретатор жи.
sage #281 #535585
>>535495

>без нормальных деферредов


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

>вроде Zookeeper'ского например


Я бы сказал что его реализовать как два пальца обоссать, но к сожалению я не нашел его описания, и даже ссылка на API Docs на сайте апаче выдает 404. Реверс-инженерить так-то действительно будет сложно, да.
#282 #535587
>>535479
Посколько asycnio уже часть языка (async/await), то нет уже нужды в твистедах. Торнадо поддерживает asyncio-loop и это очень правильный шаг.
#283 #535616
Привет! Вас беспокоит хекка 26 лвл, который нашел для себя новое замечательное увлечение - программирование. Сейчас полностью прошел курс питона на кодакадемии, решил, что хочу пилить сайтики в качестве хобби, ибо для чего-то другого я наверно туповат. Посоветуйте, пожалуйста, что почитать/посмотреть для питона и джанго+ там мб еще что-то нужно?
#284 #535649
>>535616
Какой же ты глупый, сайтики думаешь так просто писать?
#285 #535650
>>535616
greenfeld_d_roy_a_two_scoops_of_django_best_pra.pdf
годная книжка и по свежей версии. но она предполагает, что ты хотя бы туториал прочитал.
#286 #535667
>>535649
Я такого не утверждал
>>535650
Спасибо!
P2P assburger #287 #535768
Посоны, на чём сделать announcement list? Надо где-то хранить и обновлять список ойпишнегов общедоступно. Я так понял magnet links всё равно содержат урл трекера. Можт есть где какая срамота в духе narod.ru куда можно невозбранно закатать хуйни в шифрованом виде?
#288 #535773
>>535768
Не понял о чём ты, но на гитхаб же можно.
#289 #535774
>>535773
bitbucket > gitshit
#290 #535775
>>535774
У тебя смузи простаивает. И яйца через скинни видно.
P2P assburger #291 #535777
>>535773
А гитхаб не зобанит? Пиров может быть дохуя. Каждый из них анонсит себя (пишет свой ойпи в список), многие из них читают список (остальные из старых кешей тянут, и обновляют прямо из p2p сети если хоть к кому-нибудь приконнектились).
#292 #535780
>>535775
вапервых hg лучше чем git
ва втарых на битбакете бисплатные репы пираватные
#293 #535782
>>535780
Борода в смузи упала.
#294 #535784
>>535777
Если есть обмен пирами, то можно не такую уж большую базу делать и не так часто обновлять.
#295 #535785
>>535768

> Я так понял magnet links всё равно содержат урл трекера


Даже если и содержат, это fallback для более быстрого получения пиров. А вообще, вкратце, в magnet содержится инфохэш (хэш информации о хуйне, которую ты хочешь скачать). Твой клиент входит в DHT-сеть и спрашивает об узлах, чьи ID наиболее близки к этому хэшу. У полученных узлов он опять спрашивает. Таким образом он добирается до узлов, чей ID близок к инфохэшу. Эти узлы хранят адреса пиров, у которых есть нужный тебе контент.

Чтобы это работало, тебе, конечно, нужен список узлов для бутстрапа (входа в сеть). Зашивай в клиент при билде список из самых долгоживущих известных тебе на тот момент нод. Это сразу решает большинство проблем. Но для слоупоков, которые поставят клиент через год после скачивания, можно поднять fallback-ноды на известном IP (как в BitTorrent есть router.bittorrent.com на крайний случай), или даже автоматически выгружаемый свежий список нод на гитхабе или где-то еще. Запросов много не будет.

А можешь просто DHT битторрента использовать. Там не так уж много кода, для Python готовые реализации есть.
27 Кб, 600x480
#296 #535793
антоша, как вызвать интерпретер с контекстом моего скрипта после того, как он завершит своё кунфу? ну чтоб потыкать в переменные и просто мутить дальше уличную магию.
#297 #535794
>>535793
python3 -i
#298 #535798
>>535793
import pdb
pdb.set_trace()
#299 #535809
>>534173
а как верно обрабатывать?
через try или if match.groups() ?
ну, чтобы тру
#300 #535812
>>535809
if re.match():
.groups() у None не будет.
#301 #535868
сап собаки ебаные, а может кто фронт фреймворк посоветовать, под жангу ? Шоб без ебли и для тупиц и работодателям нужон
#302 #535869
>>535868
Очевидный бутстрап. Теперь съеби в /web/, обезьяна.
#303 #535872
>>535868
ангуляр
#304 #535878
>>535872
бляя, ентого я и боялся, нахуй там логика в html ?
#305 #535879
>>535869
ты почему вафля то такая ?
#306 #535880
Анон подскажи почему так?

temp = '32'
if temp > 85:
print "Hot"
elif temp > 62:
print "Comfortable"
else:
print "Cold"
Почему выполняеться первое условие?
#307 #535881
>>535879
Прости, не понимаю обезьяний.
#309 #535900
>>535880
Потому что ты используешь питон 2. http://ideone.com/ZD9Z5d
#310 #535902
Постсоны, в чём отличие между 2 и 3?
#311 #535913
>>535880
int(temp)
#312 #535930
>>535902
Во втором этот код сегфолтится, а в третьем - нет.
http://ideone.com/ND2YaF

Но лично мне больше нравится второй, в нём поменьше хипстеров и прочего говна.
#313 #535936
>>535930
Обьясни пожалуйста что значит "сегфолтится".
#314 #535940
>>532617

>pygame.org


Есть же panda3d. Он относительно жив. Правда, в команде разработчиков остался всего один человек.
#315 #535952
>>535936
char p;
memset(p, sizeof(char), 0);
p
= 8;

@
РАСПИДОРАСИЛО СУКА МЯСО КРОВЬ
#316 #535962
>>535902
Второй это промышленный стандарт, который используют чтобы делать работую.
Третий - игрушка для студентов.
#317 #535974
>>535930

>в нём поменьше хипстеров


То чувство, когда хипстор - это ты.
#318 #535976
>>535952
Хорошо. А теперь обьясни мне в каком месте этого кода (http://ideone.com/ND2YaF) это происходит.
#319 #535977
>>535962
Л Е Г А С И
Е
Г
А
С
И
#320 #535978
>>535976
strace
41 Кб, 640x197
#321 #535980
>>535962
COBOL это промышленный стандарт, который используют чтобы делать работую.
Питон - игрушка для студентов.
21 Кб, 526x236
#322 #535982
>>535980
FORTRAN это промышленный стандарт, который используют чтобы делать работую.
COBOL - игрушка для студентов.
#323 #535985
>>535936
Падает с ошибкой segmentation fault.
>>535930

>мне больше нравится второй, в нём поменьше хипстеров


Может ты еще и использовал питон до того, как он стал моден?
>>535902
В том что второй устарел, а третий нет. Не утихают кукареки про второй по той же причине, что и про сисвинит - чтобы обновиться нужно немного поработать, а программисты и сисадмины скорее в дворники перейдут чем сделают то, за что им деньги платят.
#324 #535986
>>535978
segfault.py(14): while True:
segfault.py(15): a += 1
480 Кб, 1536x2048
#325 #535989
>>535982
AUTOCODE это промышленный стандарт, который используют чтобы делать работую.
FORTRAN - игрушка для студентов.
#326 #535991
Если бы во втором не было ебатни с юникодом до сих пор бы сидел.
#327 #535992
>>535976
Вообще нахрена ты делаешь sleep в деструкторе?
54 Кб, 600x926
#328 #535994
>>535989
КАМЕНЬ это промышленный стандарт, который используют чтобы делать работую.
Программирование - игрушка для студентов.
#329 #535997
>>535991
Да, я бы тоже сидел на втором если бы он абсолютно ничем не отличался от третьего. Впрочем был бы тогда вообще третий?
#330 #536003
>>535940
Я ищу 2д, 3д мне не нужен.
#331 #536004
...
for n in x:
if n not in out:
out.append(n)
Сила суперкоровы!
#332 #536005
>>536003
cocos

>>535994
Идите нахуй. Каждый язык выполняет свою задачу.
#333 #536006
>>535976
У меня отработало без ошибок. И в двойке и в тройке.
#334 #536007
>>536006
У меня тоже интерпретатор ошибок не показывал. Но как видишь не все так просто. Запусти скрипт с аргументами -mtrace --trace
#335 #536010
https://www.jetbrains.com/pycharm-educational/

Эй, жуки, сука. Частично умею в С/С++ studying короче, чё-то там сука шпарю в кодинге немного. Пайтон учил давно, всё нахуй забыл. Подскажите, такая вот шняга (штука (вещь)) подойдёт, чтобы освежить знания и перейти позже к книгам? Или лучше сразу с книг, раз у меня есть немного опыта? Скачал 300 мб учебников, сука, люблю пайтон.
#336 #536015
>>536010
Достаточно будет пробежаться по туторилу с питон.орг, а потом по документации.
#337 #536022
Как создать виртуальное окружение в 3 пистоне?
#339 #536024
>>536015
Ладно, раз говоришь, что так изи, то я всё-таки попробуй там за полчаса-час пройти эту штуку по ссылочке, а потом сразу книги-книжечки-книженции оххх как я люблю качать гайды туториалы книжечки читаю кончаю радуюсь пайтон для победы!!!

Peace брателла \/ Спасибо за помощь добра удачи чтобы код писался одними табами мизинчиком клацнул и всё заехало! :3
#340 #536026
>>536024
Нахуй иди, даун-аутист.
#341 #536028
>>536023
Да заглядывал уже
pyvenv myenv
bash: pyvenv: command not found

python3 -m venv myenv
Error: Command '['/home/mvbrn/myenv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1

ЧЯДНТ?
#342 #536035
>>536003
То, что он называется 3д, не значит, что он не умеет рисовать 2д. Ну да, текстурированные плейны, как в Юнити. И чо?
#343 #536039
>>536022
На хабре статья была, можно вместо виртуаленв использовать pip install xxxx -t .pip
Сам так делаю. Плюшек чуть поменьше (нет freeze и прямого запуска из bin), но работает, без всяких activate.
#344 #536041
>>536039

>нет прямого запуска из bin


Добавь в PATH, епта. Будет прямой запуск хоть откуда. Фриз нахуй не нужен.
#345 #536042
>>536039
Можно сделать контейнер в docker и ставить всё в глобальный неймспейс прям
49 Кб, 600x600
#346 #536057
>>536042
Можно использовать vagrant.
#347 #536097
>>536028

>returned non-zero exit status 1


http://askubuntu.com/questions/488529/pyvenv-3-4-error-returned-non-zero-exit-status-1
Первая же ссылка в гугле.
#348 #536101
>>535992
sleep для того, чтобы подольше отпустить GIL.
Суть такая в http://ideone.com/ND2YaF
1) Завершается скрипт, вызывается Py_Finalize()
2) Py_Finalize вызывает threading._shutdown
3) _shutdown join()-ит все не-daemon треды. Очевидно, наш тред daemon, поэтому его мы не ждём.
4) В Py_Finalize вызывается Py_ClearInterpreterState который для каждого треда уменьшает refcnt у его текущего фрейма, фрейм деаллоцируется, в свою очередь он дропает все ref-ы на своё барахло - locals-ы в том числе. sleeper - в локалсах и у него вызывается tp_dealloc, вызывается наш питонячий код в полу-разрушенном интерпретаторе, происходит sleep. Как известно, любой блокирующий код в питоне оборачивается в отпускание GIL Py_BEGIN_ALLOW_THREADS // release gil
fwrite(f, data); // may block for long time
Py_END_ALLOW_THREADS //acquire gil
Значит, когда в деструкторе вызывается time.sleep, отпускается gil, в это время daemon тред, который всё время ждал gil вдруг оживает и начинает работать с полу-разрушенным фреймом.
Происходит LOAD_FAST, который пытается достать из локалсов переменную a, но в это время слот уже NULL, тред пытается зарейзить эксепшн, и вылетает в код, который делает if(tstate->frame->exc-что-то-там) // ceval.c
tstate->frame в этот момент уже NULL, сегфолт.

Проблема в отпускании gil в деструкторе. Это может быть не только sleep, а close(), например, у fileobject. Тогда происходит лотерея - хватит ли треду времени, чтобы засегфолтиться или нет.

Эта хрень ещё противна тем, что всё зависит от того, на каком опкоде проснётся разрушенный тред, иногда оно говорит glibc: corrupter linked list в соврешенно другом месте.

В python3 добавили флажок _Py_Finalizing, который выставляется, когда интерпретатор начинает выходить и если тред захватывает gil и видит, что флажок выставлен, он просто выходит.
#349 #536103
Аноны, помогите исправить ошибку.
http://pastebin.com/Rxncj5rR
Invalid syntax на 224 строчке
Пишу на 3ке
#350 #536104
>>536101
Байтослесарь пожаловал в тред.
#351 #536105
#352 #536106
>>536103
Закрывающей скобки на 223 строке не хватает.
#353 #536111
Спасибо
#354 #536112
>>536101
Откуда ты всё это знаешь? Что почитать чтобы стать таким же байтослесарем?
#355 #536140
>>536112
Скачай исходники питона, скомпилируй и вставляй printf, чтобы понять что когда вызывается. У меня просто была задача понять почему приложение иногда падает.
#356 #536142
>>536140
Ебать ты умный, я хочу от тебя детей.
#357 #536143
>>536140
Ну и вывод отсюда, что в двойке нельзя использовать daemon треды. Вдруг где-то окажется объект, который в деструкторе отпускает GIL.
https://joeshaw.org/python-daemon-threads-considered-harmful/
#358 #536154
>>534337
ми нет
#359 #536159
>>536140
printf?
дебаггер для чего придумали? strace и прочие тулзы?
#360 #536160
>>536159
Отладочная печать - вполне легитимный способ дебага и не только.
#361 #536179
>>536159
Дебаггер нужен когда ты знаешь какое именно место дебагать, а когда тебе нужно понять в какую ветку заходит исполнение, быстрее натыкать принты чем ставить брейкпоинт а потом много раз жать n n n n
Наверное, с gui-шным отладчиком это как-то веселее, но я не осилил.
#362 #536192
>>536101
так нахрена ты делаешь sleep в деструкторе?
#363 #536193
>>536179
долго компилировал?
#364 #536195
>>536192
Я вот тоже непонимаю.
Он бы ещё на модуль signal или atexit повесил какие-нить долгие действия - тоже бы проблемы были. Но это описано в докуменации.
#365 #536200
>>536192
>>536195
Прочитать первое предложение никак?

>sleep для того, чтобы подольше отпустить GIL.


Отпускают GIL дохуя какие операции. Например, закрытие файлов, особенно сокетов.

>какие-нить долгие действия


Вот уж в многопоточном окружении продолжительность действия - не аргумент. "Авось пронесет" не прокатит, если что-то не атомарное, то когда-нибудь гонка там возникнет.
#366 #536242
>>532421 (OP)
Только начал учить стандартный питон. Смогу ли я фрилансом на апворке например получать зха месяц хотя бы тыщ 20 деревянных? Или мне ещё придется выучивать всякие джанго и прочее?
#367 #536244
>>536242
Голый питон чаще всего используют только админы. Если можешь в линуксы - запросто. Иначе хуячь джангу и еще 100500 фреймворков.
#368 #536245
>>536242
Не сможешь. Придётся и дохера.
#369 #536246
>>536242
фриланс на 90% - это вебня, поэтому придется ебать практически все фреймворки. есть небольшая ниша, когда клиенту похуй на чем, лишь бы работало (etl\скрейперы всякие), но для этого надо уже иметь какую-то репутацию.
#370 #536253
>>536041
Хм. А как вариант.
PATH="$PATH:./pip/.../bin".
#371 #536256
>>536101
А на кой хуй тебе вообще задумываться о GIL? Насколько я понял демон здесь это такой фоновый поток, который можно убить в любой момент. Может тебе нужен не демон?

А ещё после таких плясок у тебя потом обязательно случится PYPY.
#372 #536261
>>535880
все дохуя умные а ответа на почему не прозвучало.
ord('3')==51
так схуя ли выполняется первое условие?
мимо дремучий нуб
#373 #536263
>>536179

>быстрее натыкать принты чем ставить брейкпоинт а потом много раз жать n n n n


А логгирование на что?
#374 #536296
>>536261
Сказано же, потому что питон 2. В питоне 3 строки с числами сравнивать нельзя. В питоне 2 можно, но никакой логики в этом процессе нет.
#375 #536299
>>536296

>В питоне 3 строки с числами сравнивать нельзя


Еще одна причина почему он не нужен.
#376 #536302
>>536263
На объекты жи.
#377 #536303
>>536299
Ты долбоёб? Смысл в этом если всегда будет возвращать false?
#378 #536310
>>536299
Пхп-тред не здесь.
20 Кб, 328x323
#379 #536314
>>536299
Тебе в javascript, обезьянка.
#380 #536321
>>536303
Зато теперь мы знаем что у местного хейтера тройки на самом деле околонулевые знания. В его шаражке только-только начали 2.6 преподавать ПРОДАКШЫН, ЫНТЫРПРАЙЗ, мучается человек, осиливает. А тут уже перекатываться пора. Я бы тоже бомбанул.
#381 #536322
>>536314
Чот обосрался с пика.
#382 #536323
>>536299
А зачем стравнивать строки и числа? Это же не имеет никакого смысла. Банан больше Дизайна?
#384 #536325
>>536296>>536261
http://stackoverflow.com/questions/8732240/comparing-strings-and-numbers-in-python
Логика есть, но она какая-то странная.
#385 #536335
>>536323

>Банан больше Дизайна?


Дизайн больше Банана потому что при сравнении несовместимых типов они упорядочиваются по имени типа.
#386 #536338
>>536321
Я вообще не шарю какие проблемы с перекатом. Пишешь себе на тройке. Нужная либа осталась на двойке? Пишешь на двойке. Хуйня вопрос вообще.
#387 #536340
>>536335
Спасибо, ты процитировал мне ссылку, которую я дал постом выше. А теперь объясни, как такой результат может пригодиться.

>>536338

>Нужная либа осталась на двойке?


А почему бы не попробовать запустить её на тройке и не посмотеть, почему не работает? Велика вероятность, что подправив десяток-другой строк, всё заведётся и на третьем, если это не что-то громадное.
#388 #536349
>>536340

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


Удваиваю юношу. Почти всегда 2to3 справляется. Если уж не справляется, то правишь либу. Сам так пару раз делал, в итоге дошёл до пулл-реквеста.
#389 #536353
>>536349

>в итоге дошёл до пулл-реквеста.


А я до полноценного форка. Автор сдох похоже. Проект на гуглокоде был, который закрывают. С последним коммитом от 2008. Теперь вот лайки собираю. На три часа работы вышло.
#390 #536355
>>536353
Что за либа?)
#391 #536361
Бля. Когда уже тема 2 vs 3 исчерпается и закроется?
#392 #536364
>>536361
Когда гвидо закроет тройку как ненужный и бесперперспективный проект и продолжит развивать божественную двойку.
#393 #536366
>>536361
Когда этот >>536364 ниасиливший шкальник наконец уйдет в свою шарагу. 1 сентября, короче.
#394 #536377
>>536366
Ты так говоришь будто после уроков в сосач нельзя зайти.
#395 #536387
>>536361
Когда два треда отдельных создадут.
#396 #536394
>>536387
Когда наступит '20' * 2
#397 #536405
>>536394
Да и тогда трупоеды вякать будут.
#398 #536407
>>532421 (OP)
Добрый день, прочитал шляпу, но так и не понял, что выбрать удобное и легковесное для мака. Canopy какой-то гигант.
18 Кб, 757x91
#399 #536431
Сел я значит изучать ваш Питон. Скачал книжку "Майкл Доусон — Программируем на Python, 3-е издание " с примерами. Скачал, установил IDLE последней версии. И у меня в консольке вот такая вот телега. Это можно пофиксить, что бы глаз не резало? Linux mint 17.2 python 2.7.6 shell
18 Кб, 511x254
#400 #536436
>>536431
В ipython3 всё норм
20 Кб, 483x270
#401 #536438
>>536431
А у тебя python2. В обычном ipython тоже
23 Кб, 577x103
#402 #536443
>>536436
>>536438
Запустил на python3, оказалось и правда, дело в IDLE, которая использует версию 2.7.6. А ее можно как-нибудь перепаять, что бы она с python3 работала? Просто читая книгу не охота иметь кучу окошек. да тут и в книге сноска В этой главе и далее мы переводим в обраэцах кода все английские выскаэывания (ком­
ментарии и текст, отображаемый на экране) на русский язык. В отличие от Python 2.х,
Python 3.1 не требует в таких случаях включать русскую локаль, но в начале кода может
понадобиться директива# coding: ср1251 или# coding: utf-8. - Примеч. пер.
Пардон, не дочитал.
#403 #536444
>>536443
sudo apt-get install idle3
Но я рекомендую ipython
68 Кб, 634x649
#405 #536449
>>536443

># coding: ср1251

#406 #536451
>>536444
>>536445
Благодарю, помогло.
#407 #536481
>>536296
Это, конечно же, не значит, что в питоне 3 нет бредовых ситуаций со сравнением. http://ideone.com/CZ9YBD
#408 #536487
>>536481
Это не бредовые ситуации. И ты там != забыл сделать, которое-таки тру и выдало бы.
{} — множество. Одно может содержать другие подмножества, т.е. быть "больше".
{0,1} < {0,1,2}, {2,1} == {1,2}, {1,2,3} <= {1,2,3,4}

А когда ты {0} и {1} сравниваешь, то элементы первого вообще не содержаться во твором. Они никак не пересекаются и просто-напросто "не равны". Поэтому любое сравнение будет выдавать false. {0} и не больше, и не меньше, чем {1}. Просто "другое", т.е. не равное.
#409 #536540
>>536407
Чёт приуныл.
#410 #536544
>>536487
Мог бы просто сказать что множества упорядочены по включению. Сорь, нашел просто на реддите пример мол min(({1}, {0})) != min(({0}, {1})), не понял сначала что минимумов на самом деле несколько.
#411 #536567
>>536544

>множества упорядочены по включению


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

>>536407
BBEdit и пошёл писать. IDE нинужны.
#412 #536602
>>536481
Ну ты и дибил.
#413 #536609
>>536602

ибил


Ясно))
#414 #536611
>>536609
новый нюфаг закукарекал.
#415 #536616
>>536611
Алтфак в треде.
#416 #536641
>>536616
Обосрался, прикинься троллем.
#417 #536657
>>536449
ты конечно ебанулся сравнивать множества
124 Кб, 700x564
#418 #536660
Антоша, что посоветуешь читать или смотреть по Design Patterns? я немного пошерстил сеть, только одно говно. или не полное, или совсем по-уебански и без примеров вещают. Или же только одни примеры коды, но я не понимаю выгоду и в каких ситуациях их применять из сухого кода.
#419 #536664
>>536657
А что не так? Вполне себе нормальная операция.
#420 #536666
>>536664
но ты же хотел сравнить элементы, а не множества.
#421 #536675
>>536660
В питоне эти паттерны не нужны. Про них начитаются явадебилы и потом юзают там где не надо.
Думай своей головой.
#423 #536678
>>536675
Пока трудно. Почти вся литература или про "решёточка объявляет начало комментария" или же о слесарных байтовых делах. А что-то между, я пока не нашёл.

Как мне разложить мою проблемму на абстракции и развернуть всю ОПП магию? Как объекты будут между собой шуршать? Вот это всё.
#424 #536679
>>536676
смотрю кино, спасибо антоха!
42 Кб, 421x604
#425 #536718
>>532421 (OP)
Посоны, изучаю Пайтон по книге Доусона. Какие подводные камни?

Вот что нахелловорлдил по предложенной в книге задачке (там нужно было сначала написать псевдокод, что и было сделано, но приводить псевдокод не стану):
[code lang="python3"]
# Дай-ка угадаю
# Программа попытается отгадать задагаданное игроком число
# в диапазоне от 1 до 100

low = 0 # нижний предел, которого НЕ должно достигать значение числа
high = 101 # верхний предел, которого НЕ должно достигать значение числа
variant = 0 # предполагаемое значение числа
guess = False # угадал ли компьютер число
otvet = "" # переменная, в которую записываются ответы игрока

print("Давай сыграем!")
print("Ты загадай целое число от 1 до 100, а я попытаюсь его отгадать.")
print("Итак, начали!\n")

while not guess:
# проверяем, не жульничает ли игрок
if high - low <= 1:
print("\nТы жульничиаешь!!! Я с тобой больше не играю!")
break
# используем хитрую формулу
variant = low + (high - low) // 2
# спрашиваем игрока угадали ли мы число
while otvet != "да" and otvet != "нет":
print("Твоё число равно ", variant, "? ", sep = "", end = "")
otvet = input()
if otvet == "да":
print("\nУра! Я угадал!")
guess = True
else:
# спрашиваем игрока, больше ли загаданное число последнего предложенного варианта
while otvet != "больше" and otvet != "меньше":
otvet = input("Твоё число больше или меньше? ")
if otvet == "больше":
low = variant
else:
high = variant

input("\n\nНажмите Enter, чтобы выйти.")

[/code]

Прверку на жульничество я добавил (но не в псевдокод) по своей инициативе, а не по заданию.

Скажите, я хороший хелловорлдщик, или у меня получился уродливый коды?
42 Кб, 421x604
#425 #536718
>>532421 (OP)
Посоны, изучаю Пайтон по книге Доусона. Какие подводные камни?

Вот что нахелловорлдил по предложенной в книге задачке (там нужно было сначала написать псевдокод, что и было сделано, но приводить псевдокод не стану):
[code lang="python3"]
# Дай-ка угадаю
# Программа попытается отгадать задагаданное игроком число
# в диапазоне от 1 до 100

low = 0 # нижний предел, которого НЕ должно достигать значение числа
high = 101 # верхний предел, которого НЕ должно достигать значение числа
variant = 0 # предполагаемое значение числа
guess = False # угадал ли компьютер число
otvet = "" # переменная, в которую записываются ответы игрока

print("Давай сыграем!")
print("Ты загадай целое число от 1 до 100, а я попытаюсь его отгадать.")
print("Итак, начали!\n")

while not guess:
# проверяем, не жульничает ли игрок
if high - low <= 1:
print("\nТы жульничиаешь!!! Я с тобой больше не играю!")
break
# используем хитрую формулу
variant = low + (high - low) // 2
# спрашиваем игрока угадали ли мы число
while otvet != "да" and otvet != "нет":
print("Твоё число равно ", variant, "? ", sep = "", end = "")
otvet = input()
if otvet == "да":
print("\nУра! Я угадал!")
guess = True
else:
# спрашиваем игрока, больше ли загаданное число последнего предложенного варианта
while otvet != "больше" and otvet != "меньше":
otvet = input("Твоё число больше или меньше? ")
if otvet == "больше":
low = variant
else:
high = variant

input("\n\nНажмите Enter, чтобы выйти.")

[/code]

Прверку на жульничество я добавил (но не в псевдокод) по своей инициативе, а не по заданию.

Скажите, я хороший хелловорлдщик, или у меня получился уродливый коды?
#426 #536721
>>536718
Нормально.
#427 #536727
>>536718

> print("\nТы жульничиаешь!!! Я с тобой больше не играю!")


Опечатался :(
#428 #536737
Питоны, есть smtplib. Когда адрес сервера ololo.mail.ru вместо smtp.mail.ru то возвращается непонятная хуета

Traceback (most recent call last):
File "script.py", line 13, in <module>
print (main("ololo.mail.ru", "admin@mail.ru", "ilovepython"))
File "script.py", line 4, in main
smtp = SMTP(host)
File "/usr/lib/python3.4/smtplib.py", line 242, in __init__
(code, msg) = self.connect(host, port)
File "/usr/lib/python3.4/smtplib.py", line 321, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib/python3.4/smtplib.py", line 292, in _get_socket
self.source_address)
File "/usr/lib/python3.4/socket.py", line 494, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
File "/usr/lib/python3.4/socket.py", line 533, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known

Как перехватить такое исключение?
#429 #536746
Короче поставил пичарм вместо канопи и неудобно как-то, не работает стандартные print 2+2
#430 #536770
>>536737

>socket.gaierror: [Errno -2] Name or service not known


>озвращается непонятная хуета


>Name or service not known


>Как перехватить такое исключение?


>socket.gaierror

#431 #536772
>>536443

>но в начале кода может


>понадобиться директива# coding: ср1251 или# coding: utf-8. > Примеч. пер.


Это не нужно если ты кодишь в Линукс.
#432 #536774
Питон и С.
Передавая список или кортеж известного размера в С-функцию, как можно значение этого аргумента сразу записать в массив?
А то надоело городить лапшу типа — http://ideone.com/SdWUv3
Должен же быть какой-то способ, вроде — http://ideone.com/f0RQrR (сегфолт выдаёт, хотя на СО кто-то упоминал). Конечно, можно PyArg_ParseTuple(args, "(ddd)", &array[0], &array[1], &array[2]) сделать, но если я передаю прилично списков (координаты точек, задающих плоскость и прочие вектора для рейтрейсинга, например), то фукция во много нечитаемых строк выльется).
#433 #536934
>>536770
И хули? except socket.gaierror: print ("ololo") не робит. Возвращает тоже самое.
#434 #536960
>>536774
Надоело городить - вынеси в функцию, очевидно же. http://ideone.com/SIxJ2m
14 Кб, 436x104
#435 #537029
>>536934
http://ideone.com/eup4ll
(smtplib.socket на скриншоте можно заменить на socket, если вручную импортировать в своём скрипте.)
Где-то ты не там эксепшн ловишь.
89 Кб, 1910x924
#436 #537152
Привет, Аноны.
Задача: заставить включать/выключать Raspberry PI светодиод через HTML-страничку. Запросы посылаются напрямую через HTML, обрабатываются через CGI с помощью скрипта.

Какого хуя выскакивает
192.168.1.2 - - [31/Aug/2015 02:40:05] "POST /cgi-bin/form.py HTTP/1.1" 200 - : Нет такого файла или каталога

...и ничего не работает? Права доступа изменял, стоят 777.
#437 #537154
Хочу пойти на курсы по питону, какие подводные камни?
#438 #537155
>>537154
курсы нинужны
#439 #537156
>>537152
Только что попробовал такой же скриптик, всё работает.
Кстати перед тем как выводить 'LED if OFF' тебе надо вывести
print('Content-type: text/html\n\n')

А права на папку правильные? Из того каталога запускаешь?
#440 #537157
>>537155
А если нет времени учить самому?
#441 #537159
>>537156
LED if OFF и pass-ы - это зарубленные куски тестового кода. Прошляпил в три ночи. Думаю, они не имеют значения тут.
Права на папку - 777. (с рекурсией)
Каталог виден из терминала (надеюсь что тот, лол).
#442 #537160
>>537157
Ты ебнутый? С таким подходом можешь никуда не записываться.
12 Кб, 594x108
#443 #537162
>>537159
У тебя короче проблема не с cgi.
Попробуй запросить файл которого реально нет будет выдавать код 404, а не 200.
Сам cgi скрипт у тебя запускается, но выдает ошибку какую-то.
39 Кб, 1137x425
#444 #537163
>>537162
Выходит так вот.
#445 #537164
>>537163
Ну вот. Попробуй этот свой скрипт не через бразуер запустить а так, посмотри - он ошибку выдаст.
#446 #537166
>>537163
Набери в терминале
cgi-bin/form.py led=on
#447 #537167
>>537164
>>537166

Спасибо за совет. Заработало через sudo (из-за доступа к портам). Теперь я совсем запутался.
#448 #537171
>>537167
Хм. Короче когда запускаешь вебсервер этот через sudo - у скрипт выполняется от UID 65534(должно быть 0 для рута). Видимо так сделано с точки зрения безопасности.
#449 #537173
>>537167
Так и есть
https://docs.python.org/3/library/http.server.html#http.server.CGIHTTPRequestHandler

> Note that CGI scripts will be run with UID of user nobody, for security reasons.



Короче я советую просто взять и написать код унаследовавшись от SimpleHTTPRequestHandler b т.п. cgi не использовать
22 Кб, 464x257
#450 #537177
>>537167
Альтернативный способ
Отредактируй /usr/lib/python3.4/http/server.py
Сделай чтобы функция nobody_uid возвращала 0
или
Убери строку os.setuid(nobody)
или замени её на
os.setuid(0)
#451 #537178
>>537173
Тут какая-то мутная тема. Не запускается даже тот скрипт, который должен работать и без рута. Абсолютно та же ошибка при том, что на винде код работает отлично.
Похоже проблема в том, что я накатывал пайтон 3.4.2 собирая его (в репах нет нового). Может криво установился. Других вариантов не вижу. Спасибо за помощь, Анон!
#452 #537213

> cgi


> 2015

#453 #537216
>>537213
А что? Можно хоть на баше сайты клепать.

И кстати почему все накатывают свои протоколы, если есть FastCGI?
#454 #537225
>>537216
Зачем жрать говно, когда в пифоне asyncio?
#455 #537226
>>537225
И причём тут паровоз?
#456 #537231
>>537226
При том, что синхронное-cgi-процессо-говно нинужно, когда есть верное решение для io задач.
#457 #537232
>>537231
Тяжёлые задачи, ака воркеры в кластере, ты будешь делать на синхронном-процессо-говне, чтобы если грохнется один процесс, остальные остались живы.
#458 #537234
>>537232
Тяжёлые задачи отделяются от io задач вообще-то.
#459 #537235
>>537234
Ну таки я ж тебе о том же. Асинхронная морда и синхронные воркеры под капотом.
#460 #537238
>>537235
Но это не cgi/fastcgi.
#461 #537240
>>537238
Ну так и ты начал с асинхронности/синхронности когда я заговорил о протоколах.
#462 #537241
>>537240
Всё правильно. Велось обсуждение cgi-говна. Я намекнул, что это плохое решение.
#463 #537287
>>537241
Технически да. Оно неэффективно из-за постоянного перезапуска процесса. Но зато оно позволяет вчерашний хелловорлд превратить в вебсервер. И полезно нубам, дабы они узрели что их любимая джанга никакой особой магии внутри не делает.
#464 #537381
>>537241
Смотря для чего. Мигнуть светодиодом на rasberri pi сойдет.
Надо инструмент под задачу выбирать.
Нахуя вот для такой ерунды твой asicio? Ты ещё для celery туда прикрути.
#465 #537386
>>537381
и так сойдёт.jpg
43 Кб, 417x403
#466 #537462
Начал читать tutorial, и уже на этом примере я завис, как же он работает?
Вот как этот if в 3 строке определяет что надо пихать в print 4 строки? Ведь 2%2 = 0, как и 4%2 = 0, так почему же он пихает туда именно 4, а не 2? Да, я тупой.
https://ideone.com/FaMIWe0
#467 #537464
>>537462
Блин, даже с постом накосячил.
http://ideone.com/I57usF
#468 #537473
>>537462
http://ideone.com/0xGifj Наведет тебя на мысль?
#469 #537475
>>537462
Попробуй ради интереса вывести
list(range(2,2))
list(range(2,3))
поймёшь.
6 Кб, 344x341
#470 #537491
>>537473>>537475
Да, вроде вперемешку со stackoverflow разобрался, спасибо.
44 Кб, 932x696
#471 #537540
>>532421 (OP)
Кто мне внятно напишет условие, я сижу вникнуть нифига не могу в него, хочу решить задачу, а не пойму что хотят от меня.
#472 #537543
>>537540
А причем тут коля?
#473 #537544
>>537540
Предствь, что сейчас время 1:02. Предположим, что ты Катя, и засыпаешь мгновенно. Хочешь поспать 480 минут (8 часов). На какое время нужно поставить будильник? 9:02.
46 Кб, 994x716
#474 #537547
>>537543
Коля ебал катю :3.

Просто предыдущую задачу была про колю и я ее решил вот так
#475 #537549
>>537540
И не слишком ли это много на одну строку кода отводить 256 мегабайт памяти и 5 секунд времени?
#476 #537550
>>537544
Понятно, спасибо. снова надо возиться с этой математикой по часам :< ненавижу
#477 #537553
>>537550
Там же абсолютно то же самое, просто точка отсчёта с нуля сдвигается.
#478 #537575
>>537550
В питоне для этого есть функции.
#479 #537577
>>537575
Использовать какие-либо встроенные функции для столь примитивных задач — так себе идейка, по-моему.
#480 #537579
>>537553
Я тупой, с часами разобрался, с минутами нет и в итоге скатал как минуты делать, наверное из-за того что не спал долго и только вернулся домой я повел себя по свински и скотски и списал.

x = int(input())
h = int(input())
m = int(input())
c = (x // 60 + h + (x % 60 + m)//60) % 24
print(c)
print((x % 60 + m) % 60)
#481 #537581
>>537577
Использовать велосипеды когда есть встроенные функции которые работают быстрее и с которыми работать удобнее - так себе идейка. За такое убивают нахуй.
#482 #537602
>>537579

>% 24


В условии же дана гарантия, что проснётся в тот же день, т.е. время не будет больше 24 часов (x + 60h + m < 1440)

>(x % 60 + m) % 60


Это они такое решение предлагают? Нафиг х %60 делать, еслить (x + m)%60 даст тот же результат?
Ну и с часами тоже можно упростить.

>(x % 60 + m)//60


x = 130, m = 40
130%60 = 10
10 + 40 = 50
40 % 60 = 40
Однако, (130+40)%60 = 40.
Да и незачем сначала высчитывать часы от х, потом минуты от х и м, которые переводятся в часы. Можно же сразу часы от суммы м и х.

>>537581
Цель этих задач — в обучении, а не достижении результата. Не только с языком познакомить, но ещё и какие-то основы мышления заложить.
Если
новичок сам не может написать (h + (x+m)//60), (x+m)%60, а вместо этого будет использовать какие-нибудь to_hours(480+m+h60), to_minutes(480+m+h*60) (а то и вообще date(h,m).add_minutes(x)), то он же нихуя не поймёт, как это всё работает, и застопорится на следующем простом задании типа сортировки по какому-то заданному ключу, как товарищ из джаваскрипт треда.

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

Так что, с велосипедами ты промахнулся, мы не о самопальных методах сортировки для использования в продакшне интерпрайз и на втором питоне обязательно, тут говорим, а о пяти, блин, операрциях на всё решение.
#483 #537604
>>537602

>10 + 40 = 50


>50 % 60 = 50


>Однако, (130+40)%60 = 50.


поправочка
#484 #537621
>>532421 (OP)
Дващ pycharm при любом коде выдает ошибку Process finished with exit code -1073741511 (0xC0000139)
хз че делать все перепробовал
#485 #537623
>>537386
В общем-то сойдет. Если идея будет развиваться дальше, то самое страшное, что может вылиться из использования CGI - гроубокс или какая-нибудь система "умный дом" в миниатюре.
а скорее всего я ничего интересного не придумаю и мигания светодиодом хватит с головой
#486 #537639
>>537623

>гроубокс


Наркоман щтоле?
#487 #537648
>>537621
install gentoo.
#488 #537659
>>537602
Лол, но в этих операциях нет смысла, они ничему не учат. Достаточно запомнить PEMDAS и всё. Его все школьники знают старше 5го класса

Для сравнения посмотри какой-нибудь CS61A от Беркли, там такую хуиту не делают, зато охуенно учат использовать функции и всё такое. Курс основан на SICP
Карочи, я нихуя не согласен. Лучше пусть LPTHW почитает и оттуда задачки поделает, полезнее будет.
#489 #537668
Кстати, ещё камень в cgi и не только. Получается ты обучаешься тому, что лучше не использовать в серьёзных проектах. Тогда какой в этом смысл? Отсюда и растут ноги всяких йоба синхронных фреймворков и те, кто их использует. На асинхронных писать не сложнее же.
#490 #537672
>>537648
ааа. пайтоны куда-то все поудалялись
#491 #537678
http://ideone.com/L2qhea

Поправьте регулярку. Почему не останавливается на 20ти символах?
#492 #537679
>>537672
Я ПЕРЕУСТАНОВИЛ ПАЙТОНЫ А ВСЕ РАВНО НИЧЕГО НЕ РАБОТАЕТ КОКОКО помогите. мне срочн надо в ближ дни прожить.
#493 #537684
>>537678

>(...){1,20}


Находит от 1 до 20 повторений того, что внутри скобок. А внутри у тебя там

>[a-zA-Z0-9\.-](звёздочка)


Которое все 100 символов и ловит.
#494 #537686
>>537684
Да, только хотел про звездочку написать. Спасибо.
#495 #537689
>>537686
Алсо, re.match и так ищет только с начала строки (в отличие от re.search), так что ^, по-моему, излишне.
#496 #537693
>>537689
Ага, спасибо.
#497 #537794
Как читать-писать файлы в asyncio. Везде говорят что нельзя, но что-то не верится.
#498 #537797
>>537668
Я обучаюсь тому, что мне удобно сделать на своём нано-проекте (если его проектом можно будет назвать). На крупных проектах этот вариант будет так же неуместен, как и применение мощных средств для дёрганья одним светодиодом и парочкой моторов.
#499 #537853
>>537794
Читай в доках, может есть чо
Тред утонул или удален.
Это копия, сохраненная 26 сентября 2015 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски