24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
>>532427 Ретрограды из прошлого треда так и не смогли ответить что собираются делать после 2020 со своим вторым говном. Только мычали что-то невразумительное.
>>532432 К 2020 появится четвертый - такой же как второй, только лучше. А что будут делать люди с третьим решать уже им потому, что вливаться в четвертый смогут только второпитоногоспода.
>>532421 (OP) Ребята привет! Я тут начал читать за питон, и не могу въехать в задание подключиться к базе данных. Есть в наличие собственно python, postgresql. И ещё я понимаю что нужно юзать драйвер для подключения. А что мне со всем этим делать, в инете ничего понятного найти не удалось, хочу спросить у вас тут
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'
Есть ли годные и производительные графические 2д либы под питон? Из того что есть одно говно. И что там с пигеймом, будет ли развитие? Неужели придется менять язык для разработки высоконагруженных игр?
>>532558 Сам задавался этим вопросом и моё исследование показало: pygame - самое годное, хоть и медленное. Если руки не совсем крюки, то можно оптимизировать небо и аллаха за счёт грязных спрайтов в большинстве ситуаций, реальные проблемы только когда плавную прокрутку в фулХД запилить требуется. Твой выбор если ты сам хочешь сделать свою игру на питоне. pyglet - быстра как понос относительно пайгейма (за счёт ускорения железом), но не может быстро в сотни слоёв. С одной стороны за тебя уже запилили часть скелета игры, который может тебе и не подойти, а с другой тебе придётся ебаться с опнглом на низком уровне частенько. Твой выбор если тебе не нужны сотни слоёв, твоя игра вписывается в их шаблоны и тебе норм ещё и опнгл паралельно учить. cocos2d - надстройка над пайглетом, за тебя запилили ещё большую часть игры. При этом там замыливают твои пиксели и я не смог найти как это отключить. Можно быстро сваять казуалку, но если твоя игра не вписывается в их шаблон то тебя ждут весёлые баги, типа чёрных полос на стыках тайлов, или ненужного мыльца из за координат спрайтов с плавающей точкой, найти решение которых будет затруднительно, тк поиск насмерть засран кокосом2д для гейфонов на всяких сишарпах. >И что там с пигеймом, будет ли развитие? А чего тебе в нём сейчас не хватает? >>532559 >pyglet самый шустрый Не всегда. Там сортировка по высоте только через группы, а если у меня карта в 100 тайлов по высоте и нужно, чтобы деревце с Y верхушкой кроны закрывало корень деревца Y-1 b и при этом это не между ними мог влезть персонаж, так чтобы он закрывал головой деревце выше его, а деревце ниже его закрывало его, то тогда нужно пилить 200 групп, что по скорости будет тормознутее пайгейма. Но если у тебя вся игра помещается в 5-10 слоёв, то он самый быстрый да.
>>532558 Алсо, учитывай, что через то время, что ты запилишь игру производительность процессоров скакнёт и пайгейм станет в 2-4 раза быстрее за счёт этого на десктопах.
>>532586 >>А чего тебе в нём сейчас не хватает? sdl2, pythonic, python3 >>532596 Не думаю что процессоры в ближайшие годы станут сильно производительней, особенно учитывая тот факт что амд умирает. >>532600 Ты взгляни на сайт того же pygame.org, зеленый пиздец из 2000. Так они еще несколько дней назад поставили переадресацию на новый сайт, где дизайн еще хуже. Весь сайт на большом дашборде, который еще проматывать вправо нужно, при это все лагает. Пиздец короче.
Даже не знаю что делать. Лучше пережду пару годков, а там надеюсь станет понятней что выбирать для разработки, глядишь выйдет новый движок или тот же пигейм обновят для работы с вулканом. Пока смотрю в сторону godot engine, но с кастомным языком не сильно хочу работать.
>>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.
>>532621 Аргументы против использования мертвой поделки? Ты серьезно? Ну ладно.
Отсутствие багфиксов. Никто не пишет идеальный код, всего есть что чинить. Отсутствие новых фич. Опять таки идеальных фреймворков не существует, даже лучшие развиваются до сих пор. Отсутствие новых платформ. Один пека в 2015 не катит. Отсутствие секурити фиксов. Для игровой библиотеки не актуально, но все же. Отсутствие улучшений производительности. Никто не будет вылизывать алгоритмы для хуйни, которой никто не пользуется. Очень актуально. Неизбежное снижение пользовательской и кодовой базы. Больше не сделаешь import new_cool_module, потому что никто его не напишет. Мне продолжать?
Ты дебил какой-то. Или зеленый. Иди нахуй на коболе под os/2 пиши.
>>532635 > Отсутствие багфиксов. Никто не пишет идеальный код, всего есть что чинить. В старых и мёртвых либах все критические вещи уже пофикшены. > Отсутствие новых фич. Опять таки идеальных фреймворков не существует, даже лучшие развиваются до сих пор. 1) Ты в любом случае пишешь игру сейчас и не можешь ориентироваться не некоторые неопределённые фичи, что могут быть. 2) Новые фичи - новые баги. > Отсутствие новых платформ. Один пека в 2015 не катит. И какие платформы там не работают? > Отсутствие секурити фиксов. Для игровой библиотеки не актуально, но все же. Сам сказал, что неактуально. > Неизбежное снижение пользовательской и кодовой базы. Больше не сделаешь import new_cool_module, потому что никто его не напишет. Если у самого руки прямые, то несущественно, тк решаешь задачи сам и так как именно тебе нужно, а не тащишь чужие баги. > Мне продолжать? Может хоть 1 валидный пункт придумаешь.
Термин «аргумент» подразумевает, что конкретно и какой конкретной функции было передано, а параметр — в каком качестве функция применила это принятое. То есть вызывающий код передает аргумент в параметр, который определен в члене спецификации функции.
>>532647 >1) Ты в любом случае пишешь игру сейчас и не можешь ориентироваться не некоторые неопределённые фичи, что могут быть. Но ведь он игру не забросит после написания, а будет её, наверное, развивать, не? Да, в первой версии никаких "будущих" фич модуля не будет, а через полгода раз и свистелку добавят, которая будет ему как раз. А используя мёртвый модуль и сама игра получается мёртвой изначально. Это как начинать писать игру на заброшенном движке, далеко не в графоне же разница. Конечно, ты в состоянии сам всё реализовать, если что-то конкретное нужно, но в таком случае отстаивается позиция "модули не нужны", и "современные и поддерживаемые модули не нужны" лишь одна из её частей.
>>532730 Я вообще игру не пишу, а тот чувак видимо только спросил и сразу нахуй послал. Ну и правильно сделал. Я только говорил что писать новый код используя дохлые библиотеки - говноедство. Хотя у тебя похоже легасиЫНТЫРПРАЙЗ головного мозга и использовать то, что еще не разложилось и не завоняло ты считаешь зашкваром и детскими шалостями.
>>532630 Дизайн сайта - хороший показатель качества либы. Если какое-то хуйло не может фронтэнд сверстать нормально в 2015 году, что вообще ему можно доверять? Хуже пхп-макаки. >>532712 А мандада, как известно, это масив.
>>532736 Я считаю, что нужно смотреть на возможности либы, а не на дату. Например: "В этой конкретной библиотеке нет такой-то критичной для меня возможности." - аргумент. "Библиотека не обновлялась пару лет и только поэтому я не буду даже смотреть, что она может." - подход дегенератов без мозга.
Почему нельзя сделать простую и удобную графическую библиотеку как http://www.ness-engine.com/, почему обязательно нужно делать мертворожденные клоны и форки пигейма?
>>533051 В производительность и многопоточность. Всякое мелкое говно можно написать практически в любом языке, а вот тот же клон террарии сделать, чтобы он не лагал, уже очень проблематично сделать. Попробуй godot engine, синтаксис похож на питоновский, либо ебись с пигеймом без экспорта на мобилки. Выбор невелик.
Как узнать какая часть скрипта на питоне больше всего тормозит? Очевидно можно вычитать время конца функции от начала и постепенно сужать круг поиска. Но может существуют специальные модули для этого или внешние инструменты.
>>533291 Возможно хорошая штука чтобы делать всякие приложения с киви, но думаю для серьезных игр для пк это не пойдет, особенно если учесть что сам киви основан на пигейме. Там даже третий питон не работает на андройде. Стоит ждать перенос киви на сдл2, который сейчас и происходит. Возможно в будущем это станет такой же платформой для разработки игр как и пигейм.
>>533319 Я уже сомневаюсь что они осилят sdl2 и питон3 для андроида. И пигейм кстати выкидывают, меняют на свое. Там какой-то адский замок из костылей, абсолютно непереносимый.
Анон исправьте в FAQ ссылку на тред. Блядь она на тред июля ведет. Там народ сидит вопросы задает лол. А этот тред создал какой то пиздоглазый мудак даже не назвав его Python и через поиск он не ищется. >>532421 (OP) Мудак блядь.
>>532849 Тебе красивая циферка версии нужна или чтобы программа ТЗ выполняла? Если ты из той либы ничего, что есть только в обновлениях не используешь, то всё норм. А ты этого не делаешь в 99,99% случаев. Куда я попал? Доска не программистов, а модниц каких-то, которые берут новинку только потому, что это новинка.
>>533171 Можно и оче просто. Pygame, например, оче хорош для обучения, тк не городит за тебя структуры игры, а просто даёт тебе возможность вывести картинку, звук, получить нажатие клавиши или положение мышки и ты сам разбираешься, как всё нужно устраивать. Можно писать и сложные игры. Питон не может в скорость исполнения, но при текущей производительности процессоров это не критично, если ты не собрался цикл в миллионы элементов 60 раз в секунду обрабатывать. Но при необходимости даже это решается заменой этого места модулем на С или перекатом на PyPy какой-нибудь.
Накати его и pylint, вылезает кучу ошибок. Ну, большую часть я пофиксил, но вот например есть "D103 Docstring missing in public function" и я не знаю как его пофиксить. Докстринги вроде всюду есть, но может я оформляю как-то не так?
Может кто-то привести пример правильной функции с докстрингом который не вызывает ошибку?
>>533651 Впизду. Вставляю примеры с документации PEP257 и всё равно получаю ошибку D103. Вставил код в другой редактор - написало что всё ОК. В итоге просто заигнорил ошибку. атомопроблемы
Пагни, нужна помощь по BeautifulSoup. У меня есть страничка, и с этой странички нужно сохранить текст, который внутри тэгов. Меня интересует вот эта вот строка: <td width=470 colspan=3 align=center valign=middle bgcolor=#eeeeee><font color=#00008f>блаблабла</font></td></tr> Мне нужно отсюда вывести "блаблабла". Т.е. вот этот текст задан конкретными специфичными параметрами, как к нему подобраться? Пишу разную хуйню с findAll, но пока не могу по-нормальному все сделать.
>>533707 Питон это язык для обучения, типа бейсика. Никаких зарплат там нет и никаких синьеров. Если хочешь найти работу учи java или php. Это энтерпрайз.
>>534008 >Базовые знания статистических алгоритмов >Хорошая математическая подготовка >Знание библиотек (Pandas) и языков (R) Это не про сосачера из этого треда. Тут задают настолько дебильные вопросы, которые гуглятся за 2 секунды, ну ты сам видишь.
>>534014 Сижу на лоре там в development иногда задают довольно непростые вопросы и по python в т.ч. и находятся ответы. Просто аудитория повзрослее и поумнее.
>>534009 Ну, с этим никто не спорит. Тут в целом соотношение 5% сениоров к 95% студентоты и всяких посетителей из б, которые узнали "как легко зарабатывать 25 баксов в час на удаленке и дать пососать всем своим одноклассниками которые тебя травили". Ничего удивительного.
И да, многие реально гуглом пользоваться не умеют, вводишь их вопрос в гугл и первая же ссылка ответом, копипастишь им и они такие "ОГО, СПАСИБО!". Безумие какое-то.
>>534014 > аудитория невелика. Потому что моча неадекватная. Бан на бане, половина тредов закрыты, только дженерал треды имеют право жить. Скоро тут вообще поланона будет. Тащемта я в #python на фриноде и на лор перекатываюсь.
>>534038 Никакой нормальный человек не будет свой годный проект тут палить. Его потом еще в резюме пихать, а двачеры все зашкварят. Не говоря уже про деанон.
>>534058 Не в идеях дело, а в зашкваре. Мы даже ОПа на гитхабе переименоваться заставили. Он изначально назвался 2chPythonThread или как-то так. Пиздос. И еще удивлялся почему никто не коммитит. Да, сейчас, побегу я коммитить в двачетред со своим настоящим именем. Да хоть и не двачетред, все равно понятно откуда я этот репозиторий нашел.
Это какие-нибудь безобидные ычаньки могут скооперироваться, сдеанониться и запилить очередное бесконечное лето. А тут петухи одни.
>>534065 Нету да. Лично я сижу в треде потому что мне нехуй делать и могу какому-нить совсем нубу что-то объяснить, хоть какая-то польза от меня человека-говна.
Короче есть такая игруля https://screeps.com/ Там пишется бот, который за тебя потом играет. Соответственно это требует сервера, соответственно поэтому оно платное (ибо могут нарегать тысячи левых акков и уронить всю игру). Хотелось бы видеть это в p2p варианте. То есть запускаем у себя на компе и оно там считает. Выключили - наши боты остановились.
>>534076 Мир большой и разреженный, боты определённого игрока находятся обычно в очень ограниченной части мира. То есть можно использовать локальную когерентность позиций чтобы не учитывать всех-всех-всех для просчёта каждой точки мира.
>>534087 > локальную когерентность позиций Я не понял что это значит. Что если у нескольких игроков карта мира одинаковая, а у ещё одного другая - то типа верна карта большинства? А что если они все виртуалы читера? Нет p2p игры это проблема большая в плане наеба. Поэтому почти все игры централизованные.
>>534094 Можно сделать это как распределенные системы контроля версий. У каждого копия репозитория, ты делаешь один коммит и делаешь push другим. У них проверяется подходит ли этот коммит под правила и если да то принимается. Как-то так да?
>>534095 Именно так, да. Но здесь будет не совсем коммит, а скорее массив ботов с направлениями и типами действий (идти, атаковать, добывать). Проверяющий код будет супер тривиальный.
Соответственно если читаны начинают ломать клиент, произойдёт форк игрового мира и читаны будут играть сами с собой.
Решил значит выучить питон, читаю Лутца. часть про строки, поиск по шаблону. В книге написан код: 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' >>> Шта делать?
>>534168 Если match не находит нихуя то возвращает None вместо объекта match Конкертно у тебя должно быть re.match('(.)/(.)/(.)', 'Hello/Python/world') или re.match('/(.)/(.)/(.)', '/Hello/Python/world') Иначе оно нихуя не подподает под шаблон
>>534205>>534225 Чтобы ты совсем понял, "return a, b" возвращает не две переменных, а кортеж (он же tuple) с этими элементами (основная часть при создании кортежа это запятая, а не скобки). Именно поэтому тебе выдавалась ошибка об отсутствующем аргументе, ведь ты один и передавал.
Дергаю стороннюю утилитку через os.system() Утилита дает выхлоп в stdout. Если сделать response = os.system('/bin/zalupka') то в response остается pid, а не выхлоп. Мне нужен выхлоп чтобы распарсить. Как это сделать?
>>534345 Если бы ты хоть немного читал документацию, то увидел бы что os.system это как раз дёргать ls, а что посложнее - проследуйте в subprocess. Конкретно тебе нужен subprocess.POpen
>>534345 Тебя не учили не использовать system()? Или ты думаешь что идеально знаешь синтаксис sh? Сколько таких по весне на пробелах и кавычках оттаяло. subprocess.check_output(['/bin/zalupka'])
>>534513 >Попытка админить на пистоне это хуёвая попытка. Тащемта не считая баша питон язык номер один для админа. Что для шиндового, что для юниксового. Раньше перл был.
Перепост из ньюфаг-треда. Сап, котаны. Хочу запилить ГТД систему с интегрированным миндмэпом и экселем. Хз почему никто еще не додумался до такой вещи. Дико угораю по гтд. Сам ниразу не программист, первый раз зашел в раздел. В универе как бог решал задачки и делал лабы на бейсике. Есть по 2 часа свободного времени в будни и по 6 часов в выходные. Нужно чтобы можно было работать с ноута и мобильного, поэтому скорее всего это должно быть что то типо сайта. Что мне учить, чтобы максимально быстро, учитывая время освоения новой для меня технологии запилить мою йобу и начать с ней работать? И сколько это займет по времени? Если это важно то на ноуте у меня стоит Линукс Минт, а смартфон андроид.
Добавлю, что после 2х дней курения программача и гугла решил, что это лучше сделать на пайтоне, ибо по отзывам самый простой язык. Уже читаю Марка Лутца. Дадите ли каких-нибудь советов мудрых, как мою мечту быстрее воплотить в жизнь?
А чойта у тебя Version с заглавной буквы? Не по пепу, Гвидо не одобрит!
>>534757 pyqt/pyside/pygobject наверни с соответствующими конструкторами гуйца. Покроет 98% нужных функций. >Хз почему никто еще не додумался до такой вещи. Потому что на самом деле их никто не использует. Только саморазвиванцы вроде тебя.
Сап, коданы, есть одна 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)
Что сие может значить? Ни в какую кодировку не дает сконвертить эти байты.
>>534954 Какую строчку и зачем, по-вашему, я ввожу в консоль? Не понимаю вопроса. Я получил результат функции target.readline() и он выглядит как b'строка', то бишь в байтах, но перекодировать не дает вообще никуда
Решил наконец освоить питон который третий. Из скриптовых отлично знаю руби, и достаточно хорошо перл который пятый, поэтому проблем с изучением быть не должно. Но все же, может быть есть что-то, что мне нужно знать перед изучением, учитывая предыдущий опыт?
>>534972 >ввожу вывести Что там в этой строке-то посомтри хотя бы. EncodeError вылезает при попытке вывода куда-то (или str() над юникодовой строкой, содержащей не-ascii символы во втором питоне). b''.encode('utf-8') попробуй.
>>534778 >Проиграл. А чойта у тебя Version с заглавной буквы? Не по пепу, Гвидо не одобрит!
Реально, не могу сделать нормально, бьюсь уже месяц об табы в tkinter. А Version, что она есть, что нет, один хуй. Гвидо тоже пепы не слишком соблюдает, пруфы в коде IDLE.
>>535081 >>535013 bytes содержит кодированные данные, отсюда и слово кодировка. Соответственно у него есть только decode в символы.
str содержит символы, о внутреннем представлении которых нам заботиться совсем ни к чему. У него только метод encode в байты.
В py2 bytes и str это одно и то же, ещё есть unicode, ещё исходники по умолчанию читаются как ascii, поэтому в нём легко можно прострелить себе колено.
>>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)
>>535117 У тебя ясно же спросили, ты, долбоебина, результат декодирования в консоль выводишь? Ты print в своем коде видишь? Ты понимаешь что у тебя терминал вывод кириллицы не поддерживает? >>535118 windows-1251 было правильно.
>>535125 А ты даже не посмотришь, что ошибка не в выводе а в декодировании, сразу называешь меня долбоебиной, рашкопрограммер, хули. Да еще сагаешь тред, который ни в чем не виноват. В консоль выводит строку вида b'строка' с недекодированной кириллицей если убрать метод, который декодирует. С методом вышеуказанный трейсбек получаю.
>>535129 >А ты даже не посмотришь, что ошибка не в выводе а в декодировании, сразу называешь меня долбоебиной, рашкопрограммер, хули. >в декодировании Тебе, мудаку, уже два раза указали что ошибка называется UnicodeEncodeError. Повторяй за мной: Unicode. ENCODE. Error. Ошибка возникает потому что print(x) делает sys.stdout.write(str(x).encode(sys.stdout.encoding)), а sys.stdout.encoding == 'ascii', который кириллицу не кодирует.
>>535137 Это ты скорее всего пердон как-то не так установил. Ну в любом случае можно попробовать sys.setdefaultencoding('windows-1251') или где-то в конфигах питона это найти. Не верится что спермоконсоль не может в кириллицу.
>>535138 Проверь что в /etc/locale.gen раскомментирована en_US.UTF-8, выполни sudo locale-gen, в .bashrc добавь export LANG=en_US.utf8 и перезапусти терминал.
Как узнать, что объект итерабл, но не строка? Именно list-like iterable, как это назвали на со. hasattr("asdf", '__iter__') во втором возвращает False, а вот в третьем - True.
>>535251 Ну почему же "хочу то не знаю что". Строка это, так сказать, не настоящий список. Итерировать по списку объектов и итеровать по буковкам строки - совсем разные вещи же. Например, если мне в функцию передали один объект, я с ним что-то делаю. Если передали список объектов, я с каждым из них что-то делаю. А строка тут совсем не к месту получается, потому что с каждой отдельной буквой мне нафиг не надо ничего делать, я хочу либо над строкой, либо над списком строк. И, думаю, редко попадается необходимость производить одну и ту же операцию как над элементами списка, так и над каждой буквой строки.
>>535266 >Строка это, так сказать, не настоящий список. Строка это низменяемый список символов. >Итерировать по списку объектов и итеровать по буковкам строки - совсем разные вещи же. Нет. >Например, если мне в функцию передали один объект, я с ним что-то делаю. Если передали список объектов, я с каждым из них что-то делаю. Хуйней какой-то занимаешься. Сделай две разные функции.
>>535269 >>535271 Хм, пожалуй, вы правы. Не, две разные фукнции глупо городить, если разница там в две-три строки, не считая определения итерабла). Так-то я и ('string',) мог при вызове функции писать и вообще не париться, но не хотелось это уродство в кодпихать.
Ещё вот сегодня напоролся: def func((звёздочка)args, foo=None): Выдаёт синтакс эррор во втором (2.7.10), а в третьем всё ок. Это нормально? Никогда раньше, почему-то, не сталкивался с этим.
>>535383 Откуда вы лезете блядь? Меня даже на собеседовании это спрашивали. Во всех языках народ с радостью перекатывается на новые версии, только в питонах какие-то мудоёбы собрались.
>>535474 Типичный aioдебил, в Twisted был аналог твоего @coroutine и yield from на генераторах (@inlineCallbacks и yield), начиная с релиза питона 2.5, когда даже жаваскриптодети о подобном не задумывались.
>>535483 Нет, это asyncio проебан по дизайну. Это ты поймёшь, когда тебе придётся реализовывать сетевой протокол чуть сложнее echo (вроде Zookeeper'ского например или Thrift с кастомными командами контроля соединения) на чистом asyncio без нормальных деферредов.
>>535495 Ну я тот самый поехавший запиливающий p2p игру. Хуй знает, сейчас больше голова болит с проектированием самого протокола. Стандартные клиент-сервер написались за 5 минут, тривиально до безобразия. Что такое деферред? Есть тут фьючеры и таски, оно?
>>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 как собать имена я нашёл, теперь что в этом тимплейте записать, что бы он зашуршал, я всё обязательно выучу, додрочу доудсона. схаваю Лутца, но щас реально нет времени, нужно просто что бы заработало и я воспарю
>>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]
>>535495 >без нормальных деферредов Пиздец, понапридумывали баззвордов, "пок-пок деферреды", "ко-ко горутины и каналы", и выебываются ими как киллерфичами. Говори "future" как нормальный человек, уеба. >вроде Zookeeper'ского например Я бы сказал что его реализовать как два пальца обоссать, но к сожалению я не нашел его описания, и даже ссылка на API Docs на сайте апаче выдает 404. Реверс-инженерить так-то действительно будет сложно, да.
Привет! Вас беспокоит хекка 26 лвл, который нашел для себя новое замечательное увлечение - программирование. Сейчас полностью прошел курс питона на кодакадемии, решил, что хочу пилить сайтики в качестве хобби, ибо для чего-то другого я наверно туповат. Посоветуйте, пожалуйста, что почитать/посмотреть для питона и джанго+ там мб еще что-то нужно?
Посоны, на чём сделать announcement list? Надо где-то хранить и обновлять список ойпишнегов общедоступно. Я так понял magnet links всё равно содержат урл трекера. Можт есть где какая срамота в духе narod.ru куда можно невозбранно закатать хуйни в шифрованом виде?
>>535773 А гитхаб не зобанит? Пиров может быть дохуя. Каждый из них анонсит себя (пишет свой ойпи в список), многие из них читают список (остальные из старых кешей тянут, и обновляют прямо из p2p сети если хоть к кому-нибудь приконнектились).
>>535768 > Я так понял magnet links всё равно содержат урл трекера Даже если и содержат, это fallback для более быстрого получения пиров. А вообще, вкратце, в magnet содержится инфохэш (хэш информации о хуйне, которую ты хочешь скачать). Твой клиент входит в DHT-сеть и спрашивает об узлах, чьи ID наиболее близки к этому хэшу. У полученных узлов он опять спрашивает. Таким образом он добирается до узлов, чей ID близок к инфохэшу. Эти узлы хранят адреса пиров, у которых есть нужный тебе контент.
Чтобы это работало, тебе, конечно, нужен список узлов для бутстрапа (входа в сеть). Зашивай в клиент при билде список из самых долгоживущих известных тебе на тот момент нод. Это сразу решает большинство проблем. Но для слоупоков, которые поставят клиент через год после скачивания, можно поднять fallback-ноды на известном IP (как в BitTorrent есть router.bittorrent.com на крайний случай), или даже автоматически выгружаемый свежий список нод на гитхабе или где-то еще. Запросов много не будет.
А можешь просто DHT битторрента использовать. Там не так уж много кода, для Python готовые реализации есть.
антоша, как вызвать интерпретер с контекстом моего скрипта после того, как он завершит своё кунфу? ну чтоб потыкать в переменные и просто мутить дальше уличную магию.
>>535936 Падает с ошибкой segmentation fault. >>535930 >мне больше нравится второй, в нём поменьше хипстеров Может ты еще и использовал питон до того, как он стал моден? >>535902 В том что второй устарел, а третий нет. Не утихают кукареки про второй по той же причине, что и про сисвинит - чтобы обновиться нужно немного поработать, а программисты и сисадмины скорее в дворники перейдут чем сделают то, за что им деньги платят.
Эй, жуки, сука. Частично умею в С/С++ studying короче, чё-то там сука шпарю в кодинге немного. Пайтон учил давно, всё нахуй забыл. Подскажите, такая вот шняга (штука (вещь)) подойдёт, чтобы освежить знания и перейти позже к книгам? Или лучше сразу с книг, раз у меня есть немного опыта? Скачал 300 мб учебников, сука, люблю пайтон.
>>536015 Ладно, раз говоришь, что так изи, то я всё-таки попробуй там за полчаса-час пройти эту штуку по ссылочке, а потом сразу книги-книжечки-книженции оххх как я люблю качать гайды туториалы книжечки читаю кончаю радуюсь пайтон для победы!!!
Peace брателла \/ Спасибо за помощь добра удачи чтобы код писался одними табами мизинчиком клацнул и всё заехало! :3
>>536022 На хабре статья была, можно вместо виртуаленв использовать pip install xxxx -t .pip Сам так делаю. Плюшек чуть поменьше (нет freeze и прямого запуска из bin), но работает, без всяких activate.
>>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 и видит, что флажок выставлен, он просто выходит.
>>536112 Скачай исходники питона, скомпилируй и вставляй printf, чтобы понять что когда вызывается. У меня просто была задача понять почему приложение иногда падает.
>>536159 Дебаггер нужен когда ты знаешь какое именно место дебагать, а когда тебе нужно понять в какую ветку заходит исполнение, быстрее натыкать принты чем ставить брейкпоинт а потом много раз жать n n n n Наверное, с gui-шным отладчиком это как-то веселее, но я не осилил.
>>536192 Я вот тоже непонимаю. Он бы ещё на модуль signal или atexit повесил какие-нить долгие действия - тоже бы проблемы были. Но это описано в докуменации.
>>536192 >>536195 Прочитать первое предложение никак? >sleep для того, чтобы подольше отпустить GIL. Отпускают GIL дохуя какие операции. Например, закрытие файлов, особенно сокетов. >какие-нить долгие действия Вот уж в многопоточном окружении продолжительность действия - не аргумент. "Авось пронесет" не прокатит, если что-то не атомарное, то когда-нибудь гонка там возникнет.
>>532421 (OP) Только начал учить стандартный питон. Смогу ли я фрилансом на апворке например получать зха месяц хотя бы тыщ 20 деревянных? Или мне ещё придется выучивать всякие джанго и прочее?
>>536242 фриланс на 90% - это вебня, поэтому придется ебать практически все фреймворки. есть небольшая ниша, когда клиенту похуй на чем, лишь бы работало (etl\скрейперы всякие), но для этого надо уже иметь какую-то репутацию.
>>536101 А на кой хуй тебе вообще задумываться о GIL? Насколько я понял демон здесь это такой фоновый поток, который можно убить в любой момент. Может тебе нужен не демон?
А ещё после таких плясок у тебя потом обязательно случится PYPY.
>>536303 Зато теперь мы знаем что у местного хейтера тройки на самом деле околонулевые знания. В его шаражке только-только начали 2.6 преподавать ПРОДАКШЫН, ЫНТЫРПРАЙЗ, мучается человек, осиливает. А тут уже перекатываться пора. Я бы тоже бомбанул.
>>536335 Спасибо, ты процитировал мне ссылку, которую я дал постом выше. А теперь объясни, как такой результат может пригодиться.
>>536338 >Нужная либа осталась на двойке? А почему бы не попробовать запустить её на тройке и не посмотеть, почему не работает? Велика вероятность, что подправив десяток-другой строк, всё заведётся и на третьем, если это не что-то громадное.
>>536340 >А почему бы не попробовать запустить её на тройке и не посмотеть, почему не работает? Велика вероятность, что подправив десяток-другой строк, всё заведётся и на третьем, если это не что-то громадное. Удваиваю юношу. Почти всегда 2to3 справляется. Если уж не справляется, то правишь либу. Сам так пару раз делал, в итоге дошёл до пулл-реквеста.
>>536349 >в итоге дошёл до пулл-реквеста. А я до полноценного форка. Автор сдох похоже. Проект на гуглокоде был, который закрывают. С последним коммитом от 2008. Теперь вот лайки собираю. На три часа работы вышло.
Сел я значит изучать ваш Питон. Скачал книжку "Майкл Доусон — Программируем на Python, 3-е издание " с примерами. Скачал, установил IDLE последней версии. И у меня в консольке вот такая вот телега. Это можно пофиксить, что бы глаз не резало? Linux mint 17.2 python 2.7.6 shell
>>536436 >>536438 Запустил на python3, оказалось и правда, дело в IDLE, которая использует версию 2.7.6. А ее можно как-нибудь перепаять, что бы она с python3 работала? Просто читая книгу не охота иметь кучу окошек. да тут и в книге сноска В этой главе и далее мы переводим в обраэцах кода все английские выскаэывания (ком ментарии и текст, отображаемый на экране) на русский язык. В отличие от Python 2.х, Python 3.1 не требует в таких случаях включать русскую локаль, но в начале кода может понадобиться директива# coding: ср1251 или# coding: utf-8. - Примеч. пер. Пардон, не дочитал.
>>536481 Это не бредовые ситуации. И ты там != забыл сделать, которое-таки тру и выдало бы. {} — множество. Одно может содержать другие подмножества, т.е. быть "больше". {0,1} < {0,1,2}, {2,1} == {1,2}, {1,2,3} <= {1,2,3,4}
А когда ты {0} и {1} сравниваешь, то элементы первого вообще не содержаться во твором. Они никак не пересекаются и просто-напросто "не равны". Поэтому любое сравнение будет выдавать false. {0} и не больше, и не меньше, чем {1}. Просто "другое", т.е. не равное.
>>536487 Мог бы просто сказать что множества упорядочены по включению. Сорь, нашел просто на реддите пример мол min(({1}, {0})) != min(({0}, {1})), не понял сначала что минимумов на самом деле несколько.
>>536544 >множества упорядочены по включению Звучит сложно. Да я и не знал же, почему ты такой пост накатал, вдруг ты дурачок-нуфаг какой-то, вот и решил подробно расписать.
Антоша, что посоветуешь читать или смотреть по Design Patterns? я немного пошерстил сеть, только одно говно. или не полное, или совсем по-уебански и без примеров вещают. Или же только одни примеры коды, но я не понимаю выгоду и в каких ситуациях их применять из сухого кода.
>>536675 Пока трудно. Почти вся литература или про "решёточка объявляет начало комментария" или же о слесарных байтовых делах. А что-то между, я пока не нашёл.
Как мне разложить мою проблемму на абстракции и развернуть всю ОПП магию? Как объекты будут между собой шуршать? Вот это всё.
>>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]
Прверку на жульничество я добавил (но не в псевдокод) по своей инициативе, а не по заданию.
Скажите, я хороший хелловорлдщик, или у меня получился уродливый коды?
Питоны, есть smtplib. Когда адрес сервера ololo.mail.ru вместо smtp.mail.ru то возвращается непонятная хуета
Traceback (most recent call last): File "script.py", line 13, in <module> print (main("ololo.mail.ru", "[email protected]", "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
>>536737 >socket.gaierror: [Errno -2] Name or service not known >озвращается непонятная хуета >Name or service not known >Как перехватить такое исключение? >socket.gaierror
Питон и С. Передавая список или кортеж известного размера в С-функцию, как можно значение этого аргумента сразу записать в массив? А то надоело городить лапшу типа — http://ideone.com/SdWUv3 Должен же быть какой-то способ, вроде — http://ideone.com/f0RQrR (сегфолт выдаёт, хотя на СО кто-то упоминал). Конечно, можно PyArg_ParseTuple(args, "(ddd)", &array[0], &array[1], &array[2]) сделать, но если я передаю прилично списков (координаты точек, задающих плоскость и прочие вектора для рейтрейсинга, например), то фукция во много нечитаемых строк выльется).
>>536934 http://ideone.com/eup4ll (smtplib.socket на скриншоте можно заменить на socket, если вручную импортировать в своём скрипте.) Где-то ты не там эксепшн ловишь.
Привет, Аноны. Задача: заставить включать/выключать 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.
>>537152 Только что попробовал такой же скриптик, всё работает. Кстати перед тем как выводить 'LED if OFF' тебе надо вывести print('Content-type: text/html\n\n')
А права на папку правильные? Из того каталога запускаешь?
>>537156 LED if OFF и pass-ы - это зарубленные куски тестового кода. Прошляпил в три ночи. Думаю, они не имеют значения тут. Права на папку - 777. (с рекурсией) Каталог виден из терминала (надеюсь что тот, лол).
>>537159 У тебя короче проблема не с cgi. Попробуй запросить файл которого реально нет будет выдавать код 404, а не 200. Сам cgi скрипт у тебя запускается, но выдает ошибку какую-то.
>>537167 Хм. Короче когда запускаешь вебсервер этот через sudo - у скрипт выполняется от UID 65534(должно быть 0 для рута). Видимо так сделано с точки зрения безопасности.
>>537167 Альтернативный способ Отредактируй /usr/lib/python3.4/http/server.py Сделай чтобы функция nobody_uid возвращала 0 или Убери строку os.setuid(nobody) или замени её на os.setuid(0)
>>537173 Тут какая-то мутная тема. Не запускается даже тот скрипт, который должен работать и без рута. Абсолютно та же ошибка при том, что на винде код работает отлично. Похоже проблема в том, что я накатывал пайтон 3.4.2 собирая его (в репах нет нового). Может криво установился. Других вариантов не вижу. Спасибо за помощь, Анон!
>>537231 Тяжёлые задачи, ака воркеры в кластере, ты будешь делать на синхронном-процессо-говне, чтобы если грохнется один процесс, остальные остались живы.
>>537241 Технически да. Оно неэффективно из-за постоянного перезапуска процесса. Но зато оно позволяет вчерашний хелловорлд превратить в вебсервер. И полезно нубам, дабы они узрели что их любимая джанга никакой особой магии внутри не делает.
>>537241 Смотря для чего. Мигнуть светодиодом на rasberri pi сойдет. Надо инструмент под задачу выбирать. Нахуя вот для такой ерунды твой asicio? Ты ещё для celery туда прикрути.
Начал читать tutorial, и уже на этом примере я завис, как же он работает? Вот как этот if в 3 строке определяет что надо пихать в print 4 строки? Ведь 2%2 = 0, как и 4%2 = 0, так почему же он пихает туда именно 4, а не 2? Да, я тупой. https://ideone.com/FaMIWe0
>>537540 Предствь, что сейчас время 1:02. Предположим, что ты Катя, и засыпаешь мгновенно. Хочешь поспать 480 минут (8 часов). На какое время нужно поставить будильник? 9:02.
>>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)
>>537577 Использовать велосипеды когда есть встроенные функции которые работают быстрее и с которыми работать удобнее - так себе идейка. За такое убивают нахуй.
>>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)), то он же нихуя не поймёт, как это всё работает, и застопорится на следующем простом задании типа сортировки по какому-то заданному ключу, как товарищ из джаваскрипт треда.
Допустим, в этой задаче он не написал бы излишнее количество операций, если бы либы использовал, но в сложной задаче он бы таким же образом нагородил излишнее количество встроенных функций, потому что не до конца понимает, что происходит. А сразу со сложного же начать нельзя, наверное.
Так что, с велосипедами ты промахнулся, мы не о самопальных методах сортировки для использования в продакшне интерпрайз и на втором питоне обязательно, тут говорим, а о пяти, блин, операрциях на всё решение.
>>537386 В общем-то сойдет. Если идея будет развиваться дальше, то самое страшное, что может вылиться из использования CGI - гроубокс или какая-нибудь система "умный дом" в миниатюре. а скорее всего я ничего интересного не придумаю и мигания светодиодом хватит с головой
>>537602 Лол, но в этих операциях нет смысла, они ничему не учат. Достаточно запомнить PEMDAS и всё. Его все школьники знают старше 5го класса
Для сравнения посмотри какой-нибудь CS61A от Беркли, там такую хуиту не делают, зато охуенно учат использовать функции и всё такое. Курс основан на SICP Карочи, я нихуя не согласен. Лучше пусть LPTHW почитает и оттуда задачки поделает, полезнее будет.
Кстати, ещё камень в cgi и не только. Получается ты обучаешься тому, что лучше не использовать в серьёзных проектах. Тогда какой в этом смысл? Отсюда и растут ноги всяких йоба синхронных фреймворков и те, кто их использует. На асинхронных писать не сложнее же.
>>537678 >(...){1,20} Находит от 1 до 20 повторений того, что внутри скобок. А внутри у тебя там >[a-zA-Z0-9\.-](звёздочка) Которое все 100 символов и ловит.
>>537668 Я обучаюсь тому, что мне удобно сделать на своём нано-проекте (если его проектом можно будет назвать). На крупных проектах этот вариант будет так же неуместен, как и применение мощных средств для дёрганья одним светодиодом и парочкой моторов.
Прошлый:
Слоупокам напоминаю, что в 2020 заканчивается поддержка второго питона и пора бы переходить на третий
http://legacy.python.org/dev/peps/pep-0373/