Это копия, сохраненная 5 апреля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Красные и несъедобные. Как раби.
Анонасы, после введения channels в джангу сможем ли мы использовать ее для полноценного риалтайма?
Какие выгоды перед например раздельным использованием aiohttp?
for x in l:
..pass
else:
..print('empty')
Но else в for совсем другое делает, наоборот выполняясь только когда цикл завершился без break.
for x in l:
....print('Внимание! Цикл в работе!')
А если серьезно, то непонятно чего ты хочешь.
Мне нужно совершить действие если цикл не прошелся по списку ни разу. Можно конечно сделать (в случае с пустым списком)
if l:
..for x in l
else:
..print('empty')
Но нет ли чего более питоничного?
Нахуй путешествуй.
То есть лишняя строчка с else тебе не беспокоит, а if not i: print(empty) неприятна. Не понимаю я этой неприязни к if.
Если бы for else выполнялся при неудачном for, а не наоборот, то было бы всего 2 дополнительных строки - сам else и действие. А так еще if добавляется. Целых три.
А, ну да. Ты прав.
Ребята, правильно делаю, что ебашу конспект с кодакадеми ?
Решил начать учить с кодакадеми, а то я не понял первую же задачку из книги укус питона
Дело такое: есть файлики с кучами многострочных сообщений выдранных из ватсапа:
06.03.2016, 18:25 - ХУЙ1-: IMG-20160306-WA0252.jpg (файл в приложении)
Скв 777. 18.05
06.03.2016, 18:25 - ХУЙ1-: IMG-20160306-WA0251.jpg (файл в приложении)
Скв 777 18.10
06.03.2016, 18:54 - ХУЙ1-: IMG-20160306-WA0311.jpg (файл в приложении)
Нет дороги на Скв 666 и 555. 18.50
Выдираю имя файла и текст вот такой регуляркой:
re.match(r'[0-9]{2}\.[0-9]{2}\.[0-9]{4}, [0-9]{2}:[0-9]{2} - .: IMG-([0-9]{8}-WA[0-9]{4})\.jpg \(.?\)\n(.*)?', text, flags=re.S).groups()
Какого-то хуя питон 2.7 возвращает только последнюю строку. Если проверяю регулярку в sublime text, то там выделяются все строчки с файлами.
Таки где я наебался?
+совмещенный с блокнотом, да
Пользовался им когда только начинал в питоне, лет 6 назад. Постоянно сталкивался с какими-то проблемами в кодировке, в итоге перешёл на Geany. Да и плюс ко всему он только для винды.
Потому что я только под прыщи гуй пишу и использовать монструозный и уродливый куте смысла не вижу, но если речь о кросплатформе то кроме pyqt вариантов нету.
Кути - убогое, раздутое наследие крестов, пользователи которых без кутей как без костылей. Там и qstring и qbytearray и qint и qlist и qwebkit и qopengl и qnetwork и qsql и qsky и qallah. Собственно от байтослесарей форс этих костылей и идет. В нормальном языке кути не дают абсолютно ничего кроме раздувания проекта до уровня жабы. И что самое забавное - это пустая вонь и хайп, примерно как от руби. Большинство софта все равно пишут на gtk.
Интересно.
Может ты и прав. А на чем писать gtk?
Запостил вот главный цикл, чтобы вы взглянули, ибо допускаю, что сам дурак:
- код с четением/записью в файл - http://pastebin.com/7JpCGRGr (8 минут, входной файл 30 Мб)
- код без работы с файлами - http://pastebin.com/AB05yYhP (2 минуты)
Если что, запускаю на ультрабучном i7 (2.5-3.1 ГГц), а пишу на SSD (r/w speed 1000/300 МБайт/с). Пиздец. У меня микроконтроллер на Си быстрее бы эту хуйню посчитал.
Весь код давай, ёпта. По этим кускам ничего не скажешь, это раз. И никто вот так
inputFile.read(2)
не делает. Читаешь весь файл в строку и работаешь с ней. Ещё бы не 8 минут оно читало, по два байта то.
>Читаешь весь файл в строку и работаешь с ней
Охуеть. А если у меня там 10-ти гиговый файл? Алсо, там буферизованный ввод/вывод должен быть по дефолту, судя по докам.
>>679026
>Весь код давай, ёпта.
Ну ладно: http://pastebin.com/MrduVd9M
спс
Ты бы на каждой строчке ещё try напихал. Применение его там, где не нужно - очень плохая практика. В блоке try-except оставь только операции открытия/создания файлов, а всё остальное вынеси наружу.
>This module performs conversions between Python values and C structs represented as Python bytes objects
Но мне на биты надо разбивать, а там про это нет ничего или я просто в глаза долблюсь.
>Применение его там, где не нужно
Но мне оно нужно там! Без try мне пришлось бы городить двухуровневый if, плюс при использовании try, блок finally закроет мне все файлы, если я внезапно решу выбросить ошибку где-нибудь уже после открытия файлов.
>Но мне оно нужно там!
Зачем?
>Без try мне пришлось бы городить двухуровневый if
Зачем?
>блок finally закроет мне все файлы, если я внезапно решу выбросить ошибку где-нибудь уже после открытия файлов
Если перепишешь нормально, то ничего не выбросит.
>>Без try мне пришлось бы городить двухуровневый if
>Зачем?
Затем, что там происходит две проверки: на правильный аргумент и на правильную длину файла. Если понадобиться проверить что-то еще, то будет и третий и четвертый уровни. Блоки try тащемта для того и придумали, чтобы не городить вложенность.
>>679060
>Если перепишешь нормально, то ничего не выбросит.
1. write/read может выбросить ошибку. В нормальныхдругих языках io-функции вообще вне try-блоков вызывать нельзя.
2. Я сам в будущем могу решить добавить какую-либо проверку и хочу быть уверен, что произойдет закрытие файлов в случае ее не выполнения.
Алсо, напомню, что проблема сейчас заключается в скорости, а не корректности обработки ошибок.
Блоки try придумали, чтобы возникшие ощибки обработать, а не чтобы заменять ими ifы, которые могли бы эти ошибки предотвратить. Не хочешь убирать try - страдай, или переписывай на крестах.
>Не хочешь убирать try - страдай
А какое собсно отношение try имеет к скорости выполнения программы? Если исключение не выбрасывается в каждой второй строчке а у меня оно не выбрасывается, то и снижения производительности из-за исключений быть не может.
>И зачем тут else?
вообще то много раз слыхал что проверять ситуацию ДО действия это не питонично. Мол, надо делать, а там уже куда кривая американской мечты.
В этом случае for-else выглядит будто Гвидо сам начертал
>вообще то много раз слыхал что проверять ситуацию ДО действия это не питонично.
Есть такое, типа экспешн обрабатывайте лучше, а не проверки на всё возможно делайте, но лично мне это не нравится, например.
Однако, for-else для совсем другого сделан.
нахуй пошел
>>679051
>ы бы на каждой строчке ещё try напихал. Применение его там, где не нужно - очень плохая практика.
ты должен это пруфануть или обосновать.
>нахуй пошел
Кек, насколько зол, что уже видишь плохо? Этот пост был адресован анону с регэксп-проблемой.
>Блоки try придумали, чтобы возникшие ощибки обработать, а не чтобы заменять ими ifы, которые могли бы эти ошибки предотвратить
Ровно блять наоборот.
>Кек, насколько зол, что уже видишь плохо? Этот пост был адресован анону с регэксп-проблемой.
Ну, я когда скролю и вижу ответы с тупой отсылкой в доки/гугл то рвусь. Даже не глядел на контекст.
Ну и дурашка.
>Охуеть. А если у меня там 10-ти гиговый файл?
А в чёс проблема делать десятигиговый на маленькие 30-мегабайтовые?
В любом случае, чтения не такая проблема - у меня за 10-20 секунд по два байта читается 32мб файл (ультраслоу компьютер)
Оптимизируй свои операции по выискиванию нужных битов. Например, задействуй видео-карту, она как раз любит миллионы одинаковых и независимых действий - https://mathema.tician.de/software/pyopencl/
1. Тебе нужно findall использовать
2. Зачем такой ебанутый регэксп? Неужели проще нельзя? Если не IMG.#\.jpg, то уж хотя бы (.#?: )(.#?\.jpg) [# - это звёздочка]
Можешь (и наверное это и лучше всего) параллельно кодекадеми просто Луца читать по темам - этот сучёнок разжуёт так что не понять невозможно
Спасибо, хоть кто-то ответил
Да, ведь твой pront вместо print или неверное использование функции это ахуеть проблема, и обязательно нужно править именно твой код, ведь ты, долбоеб, не удосужился почитать что пишут в доках/выдает гугл.
Ну, можно не использовать 90% qt. Только окошки, виджеты, модели-вьюхи. Остальное-то в пифоне заебись. Или твой бомбинг из-за размера бинарников? Тогда вообще странный аргумент.
Если один твой брут не жрет по минуте процессорного времени а зависит от io, то делается легко с помощью asyncio. Если надо что-то считать с труЪ многопоточностью то мультипроцессинг.
Что за ошибка?
>Конструкция with..as сама закроет
А 16 файлов для записи она мне тоже закроет в случае какой-либо ошибки?
>>679288
>на типичную ошибку join'а строк
Но я их не джоиню миллионами, а пишу сразу в файл. Или ты про singleChannelSample + '\n'? Ну дак даже если эту строчку закомментить, то все-равно жве минуты процесс идет.
>>679138
>А в чёс проблема делать десятигиговый на маленькие 30-мегабайтовые?
В том что нахуй такое делоть, когда там буферизованный ввод/вывод итак есть.
>>679138
>Например, задействуй видео-карту
Пиздос. Мне просто по порядку надо байт на биты разбить, а он мне видеокарту предлагает. Походу придется на нормальном яп переписывать...
Для начала посмотри вот это презентацию http://legacy.python.org/doc/essays/ppt/sd99east/index.htm Она хоть и старая, но эти основные моменты языка не изменились, кроме print. А потом какую-нибудь книжку параллельно с заданиями. НАсчёт книги не подскажу, сам не читал, но вроде Укус питона неплох. А задания на checkio.org
Добра анон.
Ты похоже просто потралить зашел, намеренно игнорируешь все ответы и придумываешь какие-то маняотмазки, постоянно упоминая про НОРМАЛЬНЫЕ ЯП. Нахуй путешествуй.
>Ты похоже просто потралить зашел
Нет. Давай разбираться вместе:
1. Дело не в блоках try. Вот пруф: http://stackoverflow.com/questions/3929837/python-if-vs-try-except
2. Дело не в записи/чтении, ибо если все io операции убрать, то все-равно затрачивается жве минуты.
В чем тогда может быть дело? Вангую, что в разборе на биты. Тогда возникает вопрос, как это сделать более эффективно, но без видеокарты, ибо это - явный овекилл.
Кстати, может кому надо интернет магазин на джанго - так вот есть штука новая какая-то. Выглядит модно, что внутри не знаю. Сегодня буду разбираться.
Ну так запили синтетический тест, прогони разборку пару тысяч раз и замерь времяю
Можно скомпилять сразу в байткод .pyc, но скорость работы это не увеличит, только скорость запуска.
Лол, это я убрать забыл прост))
А так? http://pastebin.com/Bh8gSgzA
>{built-in method builtins.exec}
Что это такое?
Ест line_profiler, показывает затраченное время построчно. Возможно тебе с ним понятней будет. Но в целом у тебя там в io упирается.
>>679476
В общем, прогнал я твой скриптик на файле 333 Мб, и основное время занимает твой getBit из-за большого количества вызовов. Как решение, вижу только сокращение количества вызовов, больше ничего придумать пока не в силах.
>основное время занимает твой getBit
Я его убрал в последней версии, заменив однострочником: http://pastebin.com/6CFzXKFb
Уменьшить вызовы никак, ибо надо каждый байт обработать. А нет у вас в Питоне более быстрых способов битоёбства?
>>679479
>Но в целом у тебя там в io упирается
Как же io, когда там это
>1 0.000 0.000 8.952 8.952 {built-in method builtins.exec}
больше всего гадит?
>>1 0.000 0.000 8.952 8.952 {built-in method builtins.exec}
>больше всего гадит?
Вру. Гадят внутренности скрипта. Т. е. >>679479 прав, надо построчно прогнать.
Это старый скрипт. Тут лучше видно просто, а суть не меняется, битовые операции никуда не делись.
>битовые операции никуда не делись
Конечно, ведь они нужны мне. Может есть более эффективный способ разобрать байт на биты?
хотя на кодакадемии попроще, там не видео а текстом
Вроде jira как раз для этого компилирования
>Да, ведь твой pront вместо print или неверное использование функции это ахуеть проблема, и обязательно нужно править именно твой код, ведь ты, долбоеб, не удосужился почитать что пишут в доках/выдает гугл.
После "твой" можно было бы и не читать, аутист ебаный.
Но интересно узнать, однако, насколько ты был доволен собой кинув ссылочку на гугл? Почуствовал что помог анону?
Остальные две попробуй тогда
Не за что. Развивайся и познавай.
>int(bin(i)[j])
Ты хочешь сказать, что конвертирование байта в бинарную строку и извлечение отдельных символов будет быстрее чем битовые операции с целыми числами?
Ща проверю
>for j in bin(i)[2:]
Всегда ли bin выдает 8 знаков? Я имею ввиду, если я подам ей на вход 1, то она выдаст мне 0b00000001 или же 0b1?
>Всегда ли bin выдает 8 знаков
Нет. Делай что-нибудь типа
b=bin(a)
for channel_number, value in enumerate(b[::-1][:-2]):
channels[channel_number] = value
bin выдаёт запись вида 0b10101010101. Т.к. тебе нужны атомы в порядке возрастания, ты переворачиваешь строку через [::-1], а потом тебе нужно избавиться от оставшихся 0b, т.е. ты делаешь [:-2].
>>679747
Я попробовал делать как-то так
multiChannelSample = inputFile.read(1000)
bits = bin(int(multiChannelSample.hex(), 16)).lstrip('0b')
if multiChannelSample == b'':
....break
for i in bits:
....singleChannelSample = '+1' if (bool(i)) else '-1'
И знаете, прирост есть, но совсем маленький. Думаю, и ваш вариант много пользы не принесёт.
if multiChannelSample == b'':
....break
перенеси в условие цикла, а
....singleChannelSample = '+1' if (bool(i)) else '-1'
замени на
....singleChannelSample = i and '+1' or '-1'
ну и в bits у тебя порядок будет старший->младший
Тогда bin еще нулями дополнить надо. Алсо, зачем переворачивать, когда можно просто с обратной стороны циклом пройти. К тому же, я по прежнему не уверен, что текстовые манипуляции окажутся эффективнее.
В общем вы не обижайтесь посоны, но я наверно обратно на свой петушиный сисярп перекачусь или даже на си. Не дорос я до вашего питона, видимо.
Да толку-то, проще это время потратить на ожидание выполнение старого скрипта, попивая чай, чем пытаться эти секунды выиграть. Я так, из любопытства, пытаюсь помочь в меру сил.
>Тогда bin еще нулями дополнить
Можно, но не обязательно
>зачем переворачивать
Затем, что так гораздо удобнее
>К тому же, я по прежнему не уверен, что текстовые манипуляции окажутся эффективнее
Так проверил бы у себя. Я ж тебе даже результаты кидал.
>Я ж тебе даже результаты кидал
Ты об этом >>679727? Если да, то я как раз и указал на их некорректность вопросом про bin. То, что он не всегда дает на выходе 8 символов, позволяет ему выиграть во времени из-за меньшего числа итераций в for j in bin(i)[2:]. На реальных же данных 1 и 0 будут встречаться с одинаковой частотой, поэтому строки будут почти всегда длинной в 8 символов и такого выигрыша не получится.
Сам только начал читать, пока доставляет. У меня проблема была что я питон за 3 месяца выучил, кодить могу шоугодно, а что именно кодить - не знаю. Понимаю о чём базарят итт почти полностью например, а самому ни единой идеи где такое применять.
Ладно, по книжке: совсем элементарщину не рассказывают, примеров кода я так понимаю каноничного, правильного - достаточно. На всякий случай объясняется, но без деталей, в двух словах.
Лет 15 назад кодил на делфи5, лет 8 назад - на пехопе. Без классов, ооп и прочего, на уровне echo '<p>hello</p>'
Для полных нубасов думаю в самый раз 1) кодекадеми+лутц 2) доусон / укус 3) думай, питон! (think python)
а остальное уже опциональное и сам разберёшься надо-не надо
Главное начать, а знания по необходимости уже можно нагуглить.
Лутц пиздец скучное говно. Доусон поинтерейсней, но примеры на ИГРАХ ВИСИЛИЦА ПОКЕР - это пиздец. Попахивает старым пердежом. Единственная годнота - кодакадеми и укус. Думай, питон! не читал.
Лутц это справочник, блин. От вас никто этого не скрывает включая лутца. Поиграл на кодекадеми по теме "работа со строками" - полистал Луца. Не вызубрил, не скопировал всё написанное, а полистал.
Читни думательного питона, я так до сих пор из овер 10 книжечек считаю его лучшей (ну или во всяком случае мне больше всего именно она помогла)
Ну вот закончу курс на codeschool от доброАнона, который выше акком поделился и читну. Спасибо.
re.search('^yyy', 'xxx') == re.match('yyy', 'xxx') ?
Вроде норм.
(запятая с пробелом) или (пробел если после него 5 цифр или 2 большие буквы)?
вот ету хуету сделал - не пашет
re.split(', |(?= (?:\d{5}|[A-Z]{2}))', var)
убери функцию getBit, в питоне оверхед большой на вызов функции (делай проверку в ифе прям) это ускорит процентов на 15 ну и врайт оптимизируй. А вообще такие вещи делаются на golang за 10 минут и работать будет с приемлимой скоростью
Гном и GTK не перевариваю, хотя один виджет написан на нём.
i3 не подойдёт, т.к. пилю это для масс -- для студентов.
Ебу дал? i3 на си, там только апи питоном дергать позволяют, но даже до интеграции уровня awesome/lua далеко.
Ты ебанутый какой-то.
Я слышал как в /b/ твою мамку ебали, крики аж до /pr/ доносились.
Ну а хуле. Нормально будет, если совмещу 'tk', а другую часть (с той, что не справится 'tk') на GTK/QT?
Просто пиши на GTK, заебал. tkinter это мертвое днище. Ничего на нем писать не надо.
Ну ок.
>2016
делать интернет магазин? Брать какой-то фреймворк типа оскара или самую простую функциональньость запилить самому, а для сложных вещей брать готовые приложения типа django_robokassa для оплаты? Какие вообще подводные камни то в екомерс системах? Вот я как написал выше начал ковыртять shoop, но он какой-то странный. Сделали свою админку, например, а он такая неудобная как по мне..
>bin выдаёт запись вида 0b10101010101. Т.к. тебе нужны атомы в порядке возрастания, ты переворачиваешь строку через [::-1], а потом тебе нужно избавиться от оставшихся 0b, т.е. ты делаешь [:-2].
Тогда тут нужен не bin, а format(arg, 'b') - он без префиксов результат возвращает.
Ну, луче тогда уж str.format("{:0>8b}", byte). Не вникал в проблемы байтослесаря, но лучше использовать сдвиги (как он вроде и делал). На производительность в пифоне можно положить.
>Какие вообще подводные камни то в екомерс системах?
Главный камень - заказчик.
"А нам вот надо чтобы скидка зависела от города, если это город-герой и начинается на Ж, то скидка рассчитывается в процентах от прошлой корзины этого покупателя, а если нет, то пусть менеджер каждую неделю выставляет через админку."
Короче, составь список фич и, смотря на него, думай. Если хотя бы по паре пунктов есть сомнения, как сделать - бери что-нибудь готовое.
Иначе будешь ездить на велосипедах по граблям.
Да по сути заказ - маленький локальный магазин. Я точно не знаю, но вряд ли он за пределы даже своей области выйдет.
Пока что я вижу - mptt для категорий, да и все, честно говоря. Фронт на ангуляре сделаю. Оплату тоже подключу какую нибудь, если вообще надо будет. Админка обычная пойдет. Какие вообще стандартные задачи у магазина то есть?
Для настройки приложения.
https://docs.djangoproject.com/en/1.9/ref/applications/#initialization-process
В чем фишка mptt для категорий и в чем профит вообще его использовать?
Структура дерева в базе данных. Удобно для всяких данных, которые надо делить на категории и подкатегории. Одним запросом из бд можно вынуть почти всю нужную инфу - предков, потомков и т.д.
Дешевый SELECT - все дерево выбирается одним запросом.
Дорогой INSERT|UPDATE - надо выставить значения не только для ноды, но и для её потомков и предков.
Поскольку 99% запросов это селекты, профит налицо.
В apps.py обычно лежит класс
class MySuperAppConfig(AppConfig)
у которого есть всякие вкусные свойства и методы. Например, verbose_name - в админке можно показывать название приложения с выебонами "OLOLO ~Super App~ by Vasyan". Или метод ready - в котором регистрируют сигналы и т.п.
А. Ну понятно. Круто. Спасибо!
А то я в каком-то году проходил курс по веб программированию на юдасити, и там очень его рекомендовали.
Это просто стандартная хэш функция для джанги. Если нужно, можешь хоть кузнечика использовать.
Не, бикрипт не стандартная же. Надо специально включать. Просто говорили что бикрипт медленнее, зато непробиваемый.
Там прямо можно нормально вебсокеты замутить или что? Или это костыли над запросом-ответом?
По идее да. Но, как я понял, для вебсокетов нужно обязателно использовать ASGI вместе с WSGI. Единственный минус который я вижу - это отсутствие гарантии того что сообщение дойдет до клиента. http://channels.readthedocs.org/en/latest/concepts.html
Ах, ну и походу они хотят в 1.10 сделать asgi стандартом, но оставить возможность использовать wsgi
>>679759
Питон, всё-таки, не для байтоёбства, ну и 33 миллиона операций это, всё же, много.
Поигрался как мог и частный случай сократил до ~1 минуты (твой оригинальный код у меня за 4.5 выполнялся). (возможно, на 3 байта ещё потянет, но сомневаюсь).
Писал в один файл, но в лупе 16 раз, поэтому не должно сильно влиять. Да и, в любом случае, ~70% времени сжирает генератор и конкатенация байтов.
Размер буфера между 64-512 мало влияет, а если больше - становится медленнее, причём оче сильно (4096 в четыре раза медленнее 512-и). http://pastebin.com/byA5AkNy
А вот о мультипроцессинге, кстати, можно и задуматься, ведь ограничивает не io (3 процесса):
real 0m30.024s
user 1m22.070s
sys 0m1.683s
Ну и плюс потом объединить 16 групп файлов нужно, но это мелочи, наверное.
Наговнокодил тут на плюсах (http://pastebin.com/RpdtNpnY):
length: 33554432
Read samples: 16777216
Elapsed time: 80.289 seconds.
без os.write, однако, всего 5 секунд. Так что пили c-extension, который будет биты считать, а читай-пиши питоном, лол. (Где я обосрался-то с записью, кроме того, что по одному байту пишу? (В питоне я с побайтовым письмом двух минут добился))
>>679764
Так там не секунды, а минуты и часы, если действительно много данных. Поэтому борьба за 5-10% (а я тут ~90% времени сократил, если на трёх тредах i5 4300M делать) вполне себе оправдана, я считаю. Хотя-таки да, такое лучше на нормальном языке делать.
анон, в шутку советовавший использовать видео-карту
Там английским по белому написано, что для установки этой версии питона тебе нужна Win7 sp1.
Я уже примерно понял в чем проблема именно в этот раз, но разобравшись с ней, я мало что решу, на самом деле. Что меня беспокоит, так это то, что я абсолютно не шарю в компах. Совсем. Обновлял шиндовс, скачивал пиратские игры, убирал винлок все детские годы (мне сейчас 17, еще пиздюк) не я, а мой старший брат, который сейчас живет в другом городе (в ДС учится). Я решил изучать python, но оказалось, что у меня даже базовых знаний о компьютере нет. Короче, реквестирую гайды, как перестать быть кретином в этой сфере, так чтобы батя сказал "погромист растет".
P.S. Написал сумбурно, наверное, извиняйте.
Я не знаю как ее установить, не скачав при этом всякие "зонды" шиндовса. Эта проблема вытекает из общей неграмотности во всей сфере >>680106.
>Я не знаю как ее установить, не скачав при этом всякие "зонды" шиндовса.
Control Panel -> windows update. От зондов не скроешься.
Заменил тупл на лист, поигрался с буфером (256 самый лучший), в итоге добил до 42 секунд так и 20 с четырьмя процессами.
Сижу ломаю голову, как же по-другому вообще алгоритм построить, чтобы не пришлось по 16 раз проходить по одному и тому же списку с туплами (больше половины времени туда уходит).
Должен быть способ сделать это красиво и быстро, надо математику задействовать, наверное.
У мну питон 3.5 тоже ругался при установке (не помню по какой причине). В итоге я просто поставил версию 3.4 и счастливо живу.
32 мегабайта, как было изначально аноном заявлено (>>679022).
Зачем pop?
У меня список вида:
[(1,0,1,..),(1,1,0,..),(0,0,1,...)]
для каждой пары байт. Затем я собираю все первые элементы каждого тупла (первый "канал"), потом вторые, потом третьи и т.д.
Грубо говоря, нужно это как-то в матрицу перевести и транспонировать, но с нампи получается либо медленнее, либо так же (если из вышеуказанного списка делать np.matrix(...).transpose().tolist() и иметь 16 строк на каждый канал, которые мы спокойно затем джоиним).
Вот код - http://pastebin.com/bmqxcNAk
С нампи, правда. можно иметь гораздо больший "буфер" и реше писать в файл. Толку от этого никакого, правда.
Я пытался вчера сразу с нампиевского массива/матрицы начинать, но там добавлять строки/столбцы проблемно - каждый раз новый создаётся. В итоге прироста не заметил и идею забросил.
Каждый тупл - это поибтовое представление short'а. Всё-таки, комбинаций 65к, а семплов - 16 миллионов, поэтому пришла идея лишь один раз всё посчитать.
Хотелось бы, конечно, ебануть словарь 16^16, чтобы все возможные комбинации 16-значных строк каждого "канала" иметь и влёгкую их писать в файл, без необходимости ничего соединять, но...
>собираю все первые элементы каждого тупла
Ну так и я говорю, зачем каждый раз пробегать, если можно пробежать один раз распихивая биты по 16 буферам?
kivy
халп сосоны, мне надо успеть за сегодня доделать
Не слишком ли запарная модель для хранения адресов пользователей?
Как обычно вообще делают?
Я так понимаю,эта приблуда отправляет полученные данные консумеру, только для http.request есть дефолтный консумер, который делает из полученных данных обычный request и скармливает вьюхе? Т.е. HTTP все равно синхронно?
>np.matrix(...).transpose().tolist()
А не проще сделать zip(*samples)? Всегда так "транспонирую", зависимость есть.
Олсо, зачем тебе
out_list = [out_file]*CHANNELS ?
Это же список из 16 ссылок на один и тот же объект?
Это когда йоба-проекты пилишь такое происходит. А когда кода на 50 строк, то такой хуйни быть не должно.
Нажми alt.
Хули тебе в notepad++ не пишется, м?
all() не сортирует выборку. чтобы норм работало: models.objects.all().order_by('id')
Я уже понял, спасибо. Все последующие операции с выборкой давали ожидаемый результат, значит, я проебался с порядком.
> В чем профиты по сравнению с Си?
если С хорошо знаешь и задачи типа твоей, то нет профитов.
А так на нем быстрее (чем на С) разрабатывать всякую ебалу типа твоей задачи + компилится в один бинарник и никакой ебли с линкованием
{x 2 for x in [1, 2, 3, 4]}
выводит это:
{16, 1, 4, 9}
а не это:
{1, 4, 9, 16}
?
А, нашел.
потому что set неупорядочен.
Но тогда почему эта строка всегда выводит именно в таком порядке? Вроде бы должна же в случайном.
Ну вот такю
Хочу ноут под винду точенный купить
Извращений захотелось? Если уж в так не хочешь линукс на своем железе - Виртуалка или впс.
https://www.asus.com/uk/Notebooks/E403SA/
В нём поди и биос ебанутый будет, наглухо к винде привинченный.
Виртуалку можно, только на 4 гб это какой вагрант кастрированный будет. Тогда уж легче гонять по ссш на серваке.
Но смысл в другом был, для путешевсвтий и прочих коммандировок ноут вин как мне кажется, а питониться в дороге мне только для фана, а не необходимости. Потому поставить кигвин который из коробки пашет - охуенно, а ебаться с деплоями на хероку всякие или в 4 гб озу виртуалку с убунту минимал пихать - уже гемор.
Говно твой лёрн зе хард вей
Прочитал от корки до корки. Состоит из превозмоганий "ДЕЛАЙ УПРАЖНЕНИЕ2 ЧЕГО БЫ НЕ СТОИЛО ИЛИ НЕ ПАЦАН", истерик "ЕСЛИ ТАКОЙ УМНЫЙ ХУЛИ ЧИТАЕШЬ ЕТУ КНИГУ ИДИ ПО ЛИСПУ ЧИТАЙ!!!!111" и маняоправданий "Я НЕ ВНИКАЮ В ПОДРОБНОСТИ А ТУПО МОТИВИРУЮ ВАС ХУЯРИТЬ А ТЕПЕРЬ БЫСТРО ИФ РУМ = АРЕНА ЗЕН ПРИНТ ТРОЛЛ ФАЙТС Ю!!!" и рекламы не то платных курсов, не то видосиков если ничего не путаю
Мой вердикт - для дебилов. Распиарена потому что в забугорном интернете пиздить не принято, а только это дерьмо собачье бесплатное.
Пойди наверни нормальных книжек, их же дохуя и больше
>для путешевсвтий и прочих коммандировок ноут вин как мне кажется
Зачем? Вафля везде одна. Имею зенбук UX31A с дебианом на борту для разъездов, никогда проблем не было. Вот прибито не прибито хуй знает, но я еще не видел ноутов куда нельзя было воткнуть линуксы.
Ну для чувака книга - реклама платных видосиков где он гнусавым базарит как пикрелейтед
Нахуй его после этого переводить? Эта книга не продукт в каноничном понимании.
Понял. Спасибо за информацию! Пойду тогда лучше укус читну.
>>680894
Лолшто? Проиграл с тебя адово. Говнокниги с оценкой 3 на амазоне это как раз Лутц какой-нибудь, которые в своей говнокниге ещё и курсы свои рекламирует, сам притом нихуя не работая, а только теоретизируя.
Зед охуенный программист, книга его бесплатная, видео и курсы лолшто, это как курсы от Линуса он не продает, они служат бонусом за фактический "донат" за книгу, а за те 29 баксов ты покупаешь поддержку и можешь задать ему свои тупые вопросы по непонятным местам, если даже после видео ты их нихуя не понел.
Только в зк можно так проиграть от тупости местных.
Держи бесплатную тру годноту, которую тут половина читала и подтвердит:
http://greenteapress.com/wp/think-python/
www.obeythetestinggoat.com
Теперь будешь хоть знать как оно выглядит
https://github.com/Microsoft/Pyjion
В чем фишка и чем отличается от пайпай? И что то он почти не разрабатывается и хайпа нет вокруг.
> отличается от пайпай?
Там в ридми написано
> хайпа нет вокруг.
Вокруг - это где?
Мне сегодня на подкаст "talk python" прилетело про это, ещё не слушал.
>хайпа нет вокруг
Тебе не хватает реализаций питона? Богу реализаций языка нужно больше реализаций! Питон это наиболее многократно реализованный язык программирования имхо. Javascript и тот где-то на 2-3 ничем принципиально не отличающихся движках по большому счёту зиждется. А тут тебе и под дотнет, и под жвм, и под жаваскрипт даже неоднократно делали (однако гвида нерекомендуе, ибо гарантированно будет тормозить, гвида говорит кофе юзайте).
Эта штука добавляет jit в обычный cpython, это не отдельная реализация.
> Питон это наиболее многократно реализованный язык программирования
Да ну, глупости, других языков реализаций тысячи, особенно старых всяких.
> ибо гарантированно будет тормозить
Когда будет вебассембли сделают нормальную реализацию без тормозов.
Уже зделоли. Подводный камень в том что рантайм питона весит много. Это вам не жуквери подключить.
Это пытались сделать ещё начиная с 1991 года. Но не взлетело. Гвида сдался в 1995.
Вот тебе сцылочка кстати.
http://pypyjs.org/
Да, но намного медленнее выполняется.
Я знаю что долго пытались вставить в браузеры разные языки, в том числе питон, но я не совсем понимаю почему этого не делают большие браузеры. Дело в отсутствии хорошего JIT? Или может у питона по факту хуевый перформанс с отсутствием мультитрединга? Или дело в ебле с версиями? А может просто никому не нужен еще один язык на фронтенде?
>просто никому не нужен еще один язык на фронтенд
Тоталли зис. Ты учти что эти жаваскрипты там гвоздями прибиты к дому. Просто вставить рантайм не получится.
Нахуя мультитрединг на фронте? На ноде на бэке для этого кластеры используют. А зачем в браузере то?
Чтобы было.
Майнить биткоины
>2016 год
>программы до сих пор не умеют в многоядерность
>дваядратригига стоят без дела
>пока ссаная косынка на жаваскрипте страшно лагает
Из разряда 640кбайт хватит всем.
>Zed A. Shaw is a software developer most commonly known for creating the Mongrel web server for Ruby web applications
Ну если ты не используешь, значит хуета и нинужно. Пусть удоляют. Это нужно чтобы страница не зависала во время тяжёлого рассчёта к примеру.
codesec.replace('[changeme]', call_iat)
Суть в том, что там есть большие куски кода, в которых надо менять определенную часть данными, которые есть в переменной. Но нихуя не происходит вообще. Выдает шаблон + [changeme]
Небось inplace пытаешься заменить? Строки в питоне иммутабельны.
И правда. Что-то я о зипе совсем забыл. Почти в два раза ускорилось. Ещё убрал проверку на длину списка (профайлер показывал, что туда чуть ли не 8% времени уходило), добавил просто инкрементирующую переменную. В итоге - 22 секунды (9 с четырьмя процессами).
24% - слайсинг и получений тупла битов
23% - джоин тупла с битами
10% - аппенд к листу
5% - запись в файлы
10% - подготовка словаря с туплами
26% - остальная часть функции.
(оставшиеся проценты на всякую мелочь типа чтения файла)
Осталось совсем чуть-чуть. Первый и последний пункты, наверное, можно ещё как-то оптимизировать.
>>680345
Ну так ты предложи быстрый способ это сделать, раз всё так просто. Нужно весь большой файл на биты разобрать и каждый 1-16-ый бит в свой файл записать.
>>680377
Это эмуляция записи в 16 разных файлов, которые анону требовались.
>>679022
Зачем ты сюда с этим пришёл, столько времени у меня отнимаешь...
На с#-то переписал уже?
import re
print(
re.search(r'''(?x)
\((?P<kodgoroda>\d{3})\) # kod goroda
[ ] # probel
(?P<prefiks>\d{3}) # prefiks
- # defis
(?P<nomer>\d{4}) # nomer konechnoy tochki
''', '(800) 555-1212').groupdict()
)
http://puu.sh/nA5Zz/4fca1701e4.png
ебаный_стыд.jpeg, совсем объебался, спасибо, анон.
Заебись, а чего дальше с этими битами делать предлагаешь? По одной штуке писать в файл? Аппендить к какой-то строке миллионы раз? Время-то замерял?
До напиевского fromfile я уже добрался, однако на первый взгляд было медленнее (аж в два раза). Заменил словарь vals на лист - 17 секунд!
Почему доступ к int'овым ключам словаря насколько медленнее, чем к байтовым? http://ideone.com/cAWzu4
Оригинал постер срал этими битами в файлы текстом. Хуй знает для чего оно ему.
Ну на тебе аскибайты, которые можно tofile
http://pastebin.com/pea0nbMS
Но опять же, мне кажется там должна быть какая-то нагрузка и писать биты текстом дебилизм.
Блин, не честно так. Не знал, что нампи и битовые операции может к массиву так легко и быстро применять.
>там должна быть какая-то нагрузка и писать биты текстом дебилизм.
Ну мало ли, псевдошифратор ЦП какой-нибудь, где прочитав потом заново эти раздельные биты получаешь 16 картинок.
Вообще, только сейчас, блин дошло, что это банальный interleaver получается, надо было его имплементации в интернетике и искать.
Я только так смог http://pastebin.com/EwrGGS13 :
real 0m10.025s
user 0m26.737s
sys 0m2.135s
Твоё же, считай, мгновенно (меньше секунды). С другой стороны, использовать нампи это считай использовать C extension'ы.
Ну а почему остальные не надо так делать, и зачем вообще две пары скобок там?
А мама говорит что я очень умный и каска мне идет.
Скобки без слешей - это группировка найденного. Со слешем - просто символ, который ищешь в тексте, как любая буква.
Numpy это очень хорошая вещь. Покрывает 90% возможного байтоёбства на уровне си. Сам питон конечно же медленный, зато на нём просто написать прототип, что-то вроде minimum viable product.
>>681258
Скобки могут значить очень разные вещи в регексах. Обычно это группы соответствия. У тебя там несколько именнованных групп соответствия, которые работают только в питоне, поэтому там префикс (?P<..>). Со слешами скобки идут как обычные символы (точно так же \+ \. \? и прочее). То есть твой код города должен находиться внутри скобок в тексте.
>>681260
Ну ты прям фанат. Программы-то где? Нахуй нам твоя мода
Да не, я так-то нампи люблю и уважаю, а тут что-т ума не хватило правильно впихнуть, поэтому пошёл длинным путём (хотя тоже, по-моему, не так плохо, по сравнению с топорным вариантом).
Симлинк поставить. Пердон ищет модули сначала в текущем каталоге. Либо pip install https://github.com/.../.../zipball/master
Нихрена не понял. Как вообще модули разрабатываются? Сильно сомневаюсь, что разрабы их переустанавливают после каждого коммита. Также сильно сомневаюсь, что нужно возиться с симлинками и менять что-то в папке с модулями. У меня есть файл, для которого нужна ещё не реализованная в модуле функциональность. Я клонирую модуль в подпапку, что дальше?
Допустим у тебя есть app зависящий от module.
ls app_dir:
app/ setup.py README
ls module_dir:
module/ setup.py README
cd app_dir
ln -s module_dir/module/ module
Теперь у тебя при запуске питона из app_dir можно импортировать и app и module. Причём изменения в module становятся доступны сразу же.
Я юзаю requests, там просто делаю s = reqyests.Session()
Можно ли еще как ускорить работу?
Купить хороший интернет с большой скоростью и малым пингом.
Найти всех пользователей сайта и перерезать им кабели с интернетами.
Помочь мейнтейнеру сайта сделать его быстрее.
Accept encoding gzip попробовать. Хз
Ясно, спасибо, сработало.
Теперь другой вопрос. В один файл автор свалил кучу классов. Я это попытался растащить по подпапкам (1 класс - один файл), но получилось дерьмо: при импорте файла сначала приходится писать имя файла, а потом имя класса. Как сделать так, чтобы класс шёл в модуль минуя имя файла? И как сделать, чтобы при написании import имя папки я получил импортированными все классы из файлов в этой папке в пространство имён с именем папки, а также класс из файла папкой выше - суперкласс всех классов в папке.
module/--init--.py:
from .file1 import Class1
from .file2 import Class2
from .file3 import Class3
Теперь
from module import Class3
спасибо, сделал
Как сделать так чтобы скачивался только desktop?
Лол. Реквестс здесь не при делах. User agent разве что установить можно. Так-то угадывать надо как сайтец это определяет, куки может какие-то надо ставить.
Также мне интересно, насколько совпадают языки и их библиотеки по задачам, которые они призваны выполнять. То есть, степень: сильно совпадают, вполне совпадают, почти не совпадают и так далее. Лично мне более выразительным и красивым показался именно Ruby, но это впечатление сложилось у меня после знакомства с основами. Разбираться я все равно буду в обоих, чтобы составить окончательное мнение. В него я включу и мнения со стороны.
Заранее всем спасибо за ответы, и еще раз прошу воздержаться от бессмысленной ругани.
Добро пожаловать на харкач, тут все недолюбливают всех по любому поводу. А если повода нет - он создается искусственно. Но в целом руби - умирающий язык одного фреймворка (рельс), без применений хоть где-нибудь вне веба. И работы на нем даже меньше чем на питоне.
> программисты Ruby и Python'a недолюбливают друг друга,
Нет. Это похожие языки и многие владеют обеими. Есть фанатики(в основнои среди рубистов, кстати) которые пытаются доказать как их болото лучше соседнего, в основном от незнания что в соседнем языке все аналогичные штуки есть, отличается только синтаксис немного(коко отступы и т.п.)
> без применений хоть где-нибудь вне веба
Неправда, на нем ещё есть всякие тулзы типа chef, puppet и т.п.
> И работы на нем даже меньше чем на питоне.
Это видимо зависит от региона, в прибалтике RoR относительно популярен, хотя там почти везде php.
Слышал от хохлов жалобы что не могут найти работу на джанго, лучше бы учили RoR(хотя подозреваю они бы и на RoR работу не нашли).
>>681565
У питона область пременения намного больше. Кластеры-фигастеры, наука, системное администрирование, десктопные приложения, сетевые серверы.
На руби почти сплошной веб.
> chef, puppet
Которые выкидывают на помойку и заменяют в пользу ansible. Теперь давай еще homebrew вспомним и, и, и... все. Раби без рельс не представляет из себя никакого интереса. Да и вообще, когда не язык тащит за собой фреймворк а фреймворк тащит язык - с этим языком что-то не так.
Ещё у них дофига несовместимостей между даже минорными версиями. И интерпретатор был тормозной, но сейчас вроде допилили.
>раби
>end
>end
>end
Не, спасибо.
Я люблю Зеда потому, что он не лицемерит когда говорит что некая хуйня являет собою адовое говно, чем страдает половина разработчиков на конференциях. Каждый раз смотря конференции охуеваю как людям говно в уши заливают А они и рады.
В этом плане он похож на Линуса и Мартина.
С моего дивана скажу следующее.
Python стал lingua franca современного CS, 95% книг его используют как основы для объяснения всяких штук, начиная от машинлернинга и заканчивая всякой веб архитектурой и скриптопарашей уровня баша. Знать его стоит, даже если не планируешь на нём серьезную разработку, хотя для прототипирования и быстрых решений это пожалуй лучший выбор в наше время, но в некоторых нишах его может потеснить тот же Go сейчас.
Про Ruby. Это отличный язык, но нишу Python ему уже не получить, а RoR сейчас заметно уступил рынок JS Meteor получил за пару лет 33к звезд на гитхабе, RoR за 10 лет получил 30к, нафф сэйд в плане быстрой разработки и решений, ну, реалии рынка поменялись, асинхронность, ультрамодульность, spa, изоморфность, всё такое.
В целом, учить можно любой, но с практической точки зрения выбор Python был бы разумнее, а если уж хочется вебдева, то тут лидеры php + js с огромным отрывом, но вот как раз их круг задач очень ограничен этим вебдевом, если же хочешь и вебдев django и flask откровенно НИОЧЕНЬ на фоне RoR и Sinatra в сфере быстрой прототипной разработки, где их и юзают крудошлепства то можно и Ruby.
> php
Но это pain in the ass. Разве что сайты - визитки клепать.
> django и flask откровенно НИОЧЕНЬ на фоне RoR
Обоснуй
>Но это pain in the ass. Разве что сайты - визитки клепать.
Я об этом и написал
>а если уж хочется вебдева, то тут лидеры php + js с огромным отрывом, но вот как раз их круг задач очень ограничен этим вебдевом
>Обоснуй
Декларативный подход рельсов с магией против более императивного джанговского, где большее количество вещей надо делать ручками.
Явно? - Да.
Разработка при знании инструмента медленнее? - Да.
Заказчик хочет быстрее и чтобы всё работало? - Да.
Такие дела. RoR мощнее Django заметно.
Flask - копия Sinatra, но развит меньше ввиду того, что всё таки Python не является языком который взлетел из-за вебразработки в отличии от Ruby.
Тащемта, достаточно открыть любые сайты с ремоут работой, даже тот же апворк, последний раз когда я смотрел - число вакансий для веб-питона кроме парсеров всяких было значительно ниже, тоже самое с remoteok и weworkremotely.
Может что-то поменялось конечно, но скорее просто Ruby вытеснили JS-ом.
Вообще, если судить по основам, то рейтинг этих четырех языков я бы оформил так:
1. Ruby. Мне понравился больше всего с точки зрения ООП. Можно писать очень лаконично, что меня привлекает.
2. Python. Не понравилось то, что тут есть примеси в ООП. Например, чтобы высчитать количество элементов в списке, нужно передать его в функцию, а не вызвать метод этого списка. Я люблю, чтобы все было единообразно. Но в целом язык понравился, и я буду изучать его и дальше.
3. JavaScript. Не произвел особого впечатления, но в будущем все равно в нем разберусь. Пригодится знание такого инструмента. Из дополнительных средств попробовал jQuery - громоздкая ерунда. Хотя, может, я ее неправильно готовил?
4. PHP. Не понравился совершенно. На этом мое знакомство с ним закончено.
Все это вкусовщина.
> большее количество вещей надо делать ручками.
Ты конкретные примеры можешь привести?
В джанго очень много делается по дефолту, та же админка делается двумя строчками, писать больше надо только если какое-то поведение сильно отличное от дефолтных возможностей нужно.
> но развит меньше
В каком месте? Каких-то библиотек не хватает? Их миллион и очень мощные - шаблонизаторы, orm, всё что хочешь.
> Flask - копия Sinatra
> не является языком который взлетел из-за вебразработки
Тем не менее тот же wsgi появился сначала в питоне, а в рубе его содрали.
Кстати, мочу-рабиста пидорнули же, теперь рабитред вахтерить некому. Можно набигать и щитпостить.
>>681624
Парни, призываю вас остановиться. Не хочу, чтобы мой вопрос вылился в ковровое говнометание. Оно кому-нибудь надо?
С того что зк некоторое время не модерировался вообще, потом Абу объявил набор в модераторы, потом был перепилен прикрепленный ньюфаг-тред. Оттуда выкинули форс раби и воткнули жабу.
>В: Хочу стать программистом, какой язык учить?
>О: Английский + Java
Смекаешь?
ничего
пикрел почитай, там на питоне всё. есть в переводе на русский.
>В: Хочу стать программистом, какой язык учить?
>O: Python/Ruby + Английский. По руби читать то-то, по питону вот книжка какая-то, я питон не знаю.
Руби там висел слишком долго чтобы просто так исчезнуть. До питона/руби там был просто питон + английский. Алсо, раньше вбросы в рубитред вида gem install rabota удалялись а постер банился. Сейчас они висят и агрят купившихся на рубихайп дураков.
>Ты конкретные примеры можешь привести?
Мне лениво тратить на это время в интернете полно сравнений, даже на хабре, можешь считать что я только пиздеть горазд, всё равно я уже давно прототипированием и крудошлепством на скриптоязыках не занимаюсь.
> До питона/руби там был просто питон + английский
И что? Тогда руби-модера не было по-твоему?
> купившихся на рубихайп дураков.
ну ты-то не такой, это хорошо.
Ну вот например ты делаешь интернет-магазин книжек или ютуб и хочешь давать "рекомендации" на основе предпочтений других пользователей с похожими вкусами.
Там про алгоритмы для всякого такого.
Интересно. Спасибо.
Эта страна всегда немного отставала.
>Неправда, на нем ещё есть всякие тулзы типа chef, puppet и т.п.
...о которых не знает никто, кроме парочки фанбоев.
Я читал такие сравнение. Вот например первая ссылка в гугле https://bernardopires.com/2014/03/rails-vs-django-an-in-depth-technical-comparison/
Вывод:
Both Ruby on Rails and Django are outstanding frameworks for web development.
You can not really go wrong by picking either one of them. My suggestion is always to try both and figure out which one you’re more confortable with. The decision may come down to which language you prefer or which principle you want to follow: convention-over-configuration or explicit is better than implicit. With CoC you get automatic imports, controller instance variables are automatically passed to the view and writing tests is convenient. With explicit is better than implicit, it’s always obvious what the code is doing, even for those not familiar with it.
From my personal experience I prefer Django. I like Python’s explicitness and I love Django’s forms and the fact that the framework is more defensive (limited template language, null not enabled by default on model fields). I know however plenty of folks that can’t live without Rails’ magic and its superior testing environment.
Среди админов популярен ansible, очень удобно иметь платформу оркестровки и собственно свои скрипты на одном языке.
ансимбл тоже популярен успокойся.
Ты учишь второй, он уже не развивается и прекратит поддерживаться через 4 года.
Я другой анон, просто тоже интересно.
Есть вообще что-то вроде кодекадеми, с третьим питоном?
>Программы-то где?
Ты уровень моих книжек видел? Какие программы ты ожидаешь. Хотя, пару уже постил. Но в основном итт спрашиваю.
>>681636
>то из этого стоит почитать на досуге?
Если ты нуп, то Automating Boring Stuff - оче хороша. Да и остальные, несмотря на начальный уровень содержать примеры разносторонних проектов дающие как минимум представление "как бывает"
Но ты виджеты рисуешь на окне, а не на экране.
Ты хочешь сделать что-то типа панели оконного менеджера?
window.set_decorated(False)
window.move(0,0)
window.resize(gtk.gdk.screen_get_default().get_width(), 22)
Ну и always on top сделай его наверное
Спасибо, анончик.
А то чем, дальше тем непонятней.
Скорее всего говнокод получиться.
Да и вместо map удобней list comprehension использовать чаще всего, если ты не готовую функцию в map подсовываешь. Иначе лямбды придется городить да и в list comprehension можно сразу filter заебенить или 2 и более for
Цвет обложки именно такой должен быть? Нашёл только с зелёной рамкой. 2008 года как я понял.
Ну да та же. У меня была такая с пингвинами на обложке..
map нынче генерит итераторы вместо списков, что далеко не всегда удобно. решай сам.
Чёт мне нравится как хохлы ехидничают. Чего стоит только одно ДА ТЫ ШО на одесситский манер.
Руби силён в том что может строить DSL.
Питон силён в том что всё явно и просто.
Руби силён рельсами, хотя джанга уже почти доросла.
Питон силён numpy/научными пакаджами.
Оба языка в принципе те же сорта говнаповидла. Что в лоб, что по лбу. Основные отличия я тебе перечислил.
> уже почти
Вы заебали, что такого есть в рельсах чего нет в джанге, можете ответить? Конкретно.
mvc
Много самоцветиков. Под джангу меньше и половина спизжена из рельс. В целом объективно мне похуй конкретные различия. Но то что рельсы это законодатель мод в вебе, по крайней мере прошлых лет, у меня сомнений нет. В принципе оно и понятно почему всё так. Руби более гибкий. Для вебразработки это важнее чем надёжность и ясность кода.
Например sass/haml сделаны изначально под рельсы, в джанге до недавних пор все ебались со всякими тормозными ломающимися джангакомпрессорами и до сих пор ебутся с кастрированной версией jinja. Кофескрипт похож на руби. Вот тебе например пакет для рельс: https://github.com/thoughtbot/factory_girl и его клон для джанги https://factoryboy.readthedocs.org/en/latest/ Ещё мне страшно не нравится south который вшили в джангу, работает как пиздец, DROP DATABASE становится любимой командой. Ещё блядь агрегация в джанго орм это сука отдельное шаманство, часто уже и SQL про себя написал и сидишь гуглишь как это сделать через annotate.
sqlobject в рельсах тоже примитивный вроде как. в джанге можно алхимию с боку присобачить или raw sql написать.
> рельсы это законодатель мод
Они одновременно с джангой вышли
В руби тоже из мира питона тащат то то удачно вышло, это работает в обе стороны.
Насчет миграций - я вообще проблемы не понимаю. Их надо просматривать и править руками конечно, но это всегда так. Плохой API для этого? Да вроде норм.
Я до того как впилили south использовал какие-то другие миграции, попроще, мне больше нравилось. Только их штуки 3 было альтернативных библиотеки для этого.
Роутинг через регексы.. Ну хуй с ним, пусть живёт, хотя регексы могут легко пересекаться и для скоупа мне приходится их копировать по многу раз. Страшнее другая хуитка: джангисты привыкли задавать алиас названию вьюхи, заместо 'myapp.views.login' они обязательно сделают алиас 'myapp:login' хотя он по сути нахуй не всрался.
Меня бесит подключать staticurl в темплейты. Сука просто нахуй бесит.
Тайтлы моделей не могут в словоформы кроме английских. 2 ПРОДУКТОВ ДОБАВЛЕНО
Джангомодуль не работает без файла с моделями. Вот хоть пустой но надо.
Никто толком не умеет использовать DJANGO_SETTINGS_MODULE, все ебутся с import local_settings.
Меня трисёт от того что я не могу примитивы админки просто импортировать в своё приложение и использовать.
>>682160
Плохой конечно. Лучше всего это вычисление diff между желаемой схемой и существующей в БД, и применение минимального пути модификаций. А так мне надо коммитить твоё говно из migrations, заставлять людей ждать по полдня чтобы все миграции выполнились, самому периодически нахуй сносить все эти миграции когда их становится много, починять это срань когда модели нестандартные (вроде mptt всяких). САМИ ЖРИТЕ СВОЁ ГОВНО. НЕТ НЕТ НЕТ!
> Никто толком не умеет использовать DJANGO_SETTINGS_MODULE
Неправда. Многие умеют. local_settings - устаревшая практика, раньше так делали, да.
> мне приходится их копировать по многу раз.
Что? Зачем?
> периодически нахуй сносить все эти миграции когда их становится много
Зачем?
> diff между желаемой схемой и существующей в БД
И как ты угадаешь что там и как менялось? Магически? Если ты например вынес что-то в другую модель и т.п. А миграция данных как будет проходить, которая часто нужна иначе данные потеряются или вообще всё сломается.
Вообще на реальных проектах с кучей данных ты alter table хрен зделаешь без остановки всего надолго. Это другая проблема.
Не используй его. Нафиг он вообще нужен, тем более, если ты gzip`ом страницу жмешь это бесмысленно.
Мне насрать на данные. Я разрабатывать хочу быстро. Я хочу syncdb и не ебать себе мозг. На продакшене это всё конечно же руками будут делать. Да и к тому же автоматика может показать какие данные проебутся, а вот блядская миграция всё молча дропнет.
>И как ты угадаешь что там
Интроспекция, йоба. БД показывают свои схемы. Соответственно набор необходимых альтеров можно вычислить.
>>682178
Так почему бы ему не съебать в отдельный пакадж?
>>682179
Он должен отрабатывать compile-time, а не каждый раз потом.
> Он должен отрабатывать compile-time
Ну так запили так. Можешь потом патч прислать им.
> Интроспекция, йоба. БД показывают свои схемы.
Это понятно. Непонятно - ты переименовал и перенес какие-то колонки, вынес данные из одной модели в отдельную, как она узнает какие и куда?
Никак не узнает. На локалхосте это нинужно. Новых данных набьёшь. Во всяком случае я сомневаюсь что админы продакшена будут запускать миграции джанги на живом серваке. Это такая глупая попытка переложить ответственность на разработчиков. Разработчики в свою очередь забивают хуй в пользу автоматики south. В итоге получаем ненадёжный мусор вместо ясного плана миграции.
Diff же может стать не просто кнопочкой сделать хорошо, а ещё и тулсетом-анализатором. В итоге админы могут например автоматически проверить все data loss/coercion на живых данных. South же просто разок спрашивает "ви таки уверены д/н", и разработчики на отъебись жмут да.
Ну была библиотека которая типа diff делала как ты хочешь. Вот
https://github.com/beanbaginc/django-evolution
Вот тут ещё какие-то есть не пробовал
https://www.djangopackages.com/grids/g/database-migration/
Да не, ок. Я даже сам такое делал. Удобно пиздец. Просто тот факт что в джангу вшили south означает что 99% проектов будут использовать south, и всегда найдётся куча ОДЕПТОВ которые будут меня критиковать за то что НИСТАНДАРТНО.
lock.acquire() будет блокировать поток пока этот lock не освободится
http://www.bogotobogo.com/python/Multithread/python_multithreading_Using_Locks_with_statement_Context_Manager.php
Или просто with statement используй как по ссылке.
Мне нужно перегнать несколько Gb данных через него и не словить OutOfMemmory
Ну какбе пайп сам по себе это такой буфер, ОС ограничивает его размер. То есть send на передающей стороне в случае чего заблокируется.
import json
import sys
ps = Popen(['ps', 'fax'], stdout = PIPE)
proc = Popen (['grep', 'grep'], stdin = ps.stdout, stdout = STDOUT)
proc.wait()
input("PRESS ENTER TO CONTINUE.")
>Traceback (most recent call last):
> File "popen_test.py", line 6, in <module>
> proc = Popen (['grep', 'grep'], stdin = ps.stdout, stdout >= STDOUT)
> File "/usr/local/lib/python3.5/subprocess.py", line 950, >in __init__
> restore_signals, start_new_session)
> File "/usr/local/lib/python3.5/subprocess.py", line 1544, >in _execute_child
> raise child_exception_type(errno_num, err_msg)
>OSError: [Errno 9] Bad file descriptor
Почему не работает?
>Почему доступ к int'овым ключам словаря насколько медленнее, чем к байтовым? http://ideone.com/cAWzu4
Бамп вопросу. Я в теории кампутер саенса не шарю, как там это хеширование происходит конкретно.
Все уже перетыкал, что на stackoverflow нашел.
>на венде
Дальше не читал.
>>682522
Надо: proc = Popen(['grep', 'grep'], stdin = ps.stdout, stdout = PIPE)
Почему? Потому что ты делаешь proc =, т.е. пытаешься получить вывод в питоне. А STDOUT выводит напрямую в терминал. Питон в данном случае последний элемент пайпа и для захвата вывода ему надо выводить на пайп.
List comprehension > map > for
Но все зависит от задачи, лямбды медленней фора, если не ошибаюсь. Читал у Лутца.
А что не так?
Хорошо, что ты прекрасно справился с самоидентификацией.
>Потому что ты делаешь proc =
Я делаю proc = потому, что питона не знаю.
Мне не нужно обрабатывать вывод в скрипте, мне надо сразу напрямую в терминал
Прикрепил по ошибке. Каюсь.
Понятно, благодарю.
Ок
Это сложно назвать "работает". Так, подрабатывает. Ты же сам вот пишешь, какая это боль. На никсах или яблоке всё в два клика команды делается и чинится почти всегда.
https://www.youtube.com/watch?v=l-GsfyVCBu0
До сих пор не могли создать программу, которая выигравала бы в го. Даже не у самых сильных игроков.
Был даже приз в миллион долларов для того кто такой алгоритм создаст.
Маняфантазии
Как считается, сложность го для компьютера (по сравнению, например, с шахматами) вызвана двумя основными факторами:
Большое число вариантов ходов[57]. В шахматах в начальной позиции существует 20 разных ходов, в го — 55, с учётом симметрии доски, но после нескольких первых ходов позиция утрачивает симметрию и далее число возможных ходов становится практически равным числу оставшихся свободных пунктов. Дерево вариантов при попытке просчитать партию вперёд на несколько ходов растёт существенно быстрее: если в шахматах после четвёртого полухода может возникнуть порядка ста тысяч позиций, то в го их число превышает шестнадцать миллиардов. Такие масштабы полностью исключают возможность «механического» перебора позиций, которым, в значительной мере, берут нынешние шахматные программы.
Сложность формализованной оценки позиции. В шахматах давно и достаточно точно выработаны формальные критерии оценки позиции и определена сравнительная ценность фигур, а в го оценка позиции алгоритмизируется плохо. Компьютеру доступны пока только простейшие критерии качества позиции, что и определяет его возможности.
С 1987 года фонд Инга (Ing Foundation) проводит ежегодный турнир среди компьютерных программ, победители которого получают денежные призы. Самое известное предложение фонда: «The Ing Challenge» — 40 миллионов тайваньских долларов (около миллиона евро) за программу, способную победить чемпиона среди тайваньских любителей. Пока приз остаётся невыплаченным.
Да, только кнопки должны быть в горизонтальном скролле.
Какие исходники? Я просто в glade форму набросал.
Ну собственно без glade создаешь ScrolledWindow, внтурь добавляешь ViewPort, а в него hbox. На hbox pack_start/pack_end кнопки
Ну ты когда-нить с mvc фреймворками работал?
Вообще не вижу проблемы, возьми и почитай туториал по джанге это пол часа занимает.
Да конечно работал, codeigniter, kohana, yii... У меня есть шансы?)
Спасибо тебе, мил человек!)
Ну там принципы такие же - шаблончики, модели, объекты request/response, сессии, orm, формы.
Вы заебали. Очень много советчиков qt, но софта почему на нем нихуя нет, особенно на pyqt/pyside. Вообще.
В тоже время на pygtk дофига известного софта - gajim, gwsmg, meld, mirage, deluge, exaile, pitivi и так далее
Как мне проще передать на сервер через socket два числа, чтобы с ними провести операции? Я их превращаю в строку и отправляю, но если их кодировать в байты то мой сервер постоянно выводит с ними в строке b'.
Как от него избавиться или как мне задачу проще сделать?шесть пар было, правда туплю уже сижу.
import struct
да, гуглится на каком-то то линукс форуме в первой строке
dict = {'k':'test'}
b = dict.get('k', None)
Теперь мне надо значение b перегнать в байты. При том что b может быть как строкой так и None. Как это сделать лаконично.
Это лишняя строка.
>Теперь мне надо значение b перегнать в байты. При том что b может быть как строкой так и None. Как это сделать лаконично.
Нахуя ты сам себе яму выкопал, а теперь её перепрыгнуть пытаешься?
Потому что это надо передавать в функцию, которая принимает только байты и None.
Электорату Володи Питуна неприятна.
Выглядит чуть менее всрато. Взял твое, спасибо.
Анон, а почему тройка а не двойка?
Зачем учить это бесполезное говно? учи сразу ruby или java. или с++
>ruby
>не бесполезное говно
Ты же понимаешь что даже если полезешь за фактами то жиденько обосрешься, верно? Как и тысячи рабифанатиков до тебя.
Не могу в джаву. Сложно. ruby не хочу.
Сколько депрекейтед говна было дропнуто с переходом на тройку. Говна, на которое забили не то что пользователи, но и авторы. А все что надо либо портировали, либо переписали.
Есть только 2 нормальных языка программирования: лисп и ассемблер
Многие новые библиотеки выходят под двойку потому что тройка никому нахуй не впилась кроме студентов.
Ронахер со своим РУСТом ебанулся.
Как можно сделать прокрутку списка с помощью кнопок? То есть, делаю кнопки, конекчу событие и список прокручивается.
У scrolledwindow
adj=sw.get_hadjustment()
adj.set_value(adj.get_value()+10)
Короче идею понял.
Вроде можно этот adjustment как-то привезять к каким-то другим контролам сразу лень щас смотреть, но ты можешь просто повесть вот эту хрень на события кнопки
Нет. Глобальные переменные это не всегда плохо, иногда это даже незаменимо. Сейчас набигут кукаретики которые всё оборачивают в классы, даже main, даже аллаха.
>The WebAssembly project to improve the Web's performance now has experimental implementations in place for major browsers. In fact, WebAssembly could be ready this year on several browsers.
Заживем.
>As a first step, in the minimal viable product, the goal is to ensure that a C/C++ program can be compiled to WebAssembly and run within the browser
Остальные языки тоже подтянутся. Или еще какие подводные камни есть?
Понимаешь, сишечка-то она компилируемая. И в среде asm.js у неё практически нет рантайма (нет например printf, cout, fopen, iostream и прочего, если ты конечно сам не подключишь облегчайзеры жизни из emscripten). А у питона есть довольно жирный рантайм, который тебе каждый раз придётся скачивать чтобы взлететь.
Есть micropython для микроконтроллеров, например. Если уж змея туда пролезла то в веб, где люди на каждый чих подгружают жквери и ангуляр, пролезет тем более.
Ну знаешь ли, контроллеры тоже разные бывают. Я считаю что микропитон это скорее глупость чем полезность. Ну или способ помигать светодиодом совсем легко и быстро. Но в целом конечно вектор правильный, под asm.js лучше компилять вот такой вот минимальный рантайм.
Но во-первых нужно запилить систему импорта. Во-вторых вырезать/переделать всякие open/print и прочие билтины. В-третьих вырезать/переделать большую часть стандартной библиотеки. То есть даже с выходом полностью стабильного webassembly (хотя нахуя ждать ассембли если уже давно есть и работает emscripten+asm.js?) соответствующая реализация питона будет выходить ещё очень долго.
Под сишечкой микруху можно значительно дешевле брать для той же задачи. Вот почему.
Пацаны, у меня тупой вопрос нуба.
#!/bin/python
import sys,random
from time import sleep
def GetRandString(parts,partlen,separator):
return separator.join(''.join(random.choice('0123456789ABCDEF') for x in range(partlen) for y in range(parts))
;
if len(sys.argv)==4:
for rows_counter in range(0,int(sys.argv[3])):
print(GetRandString(int(sys.argv[2]),int(sys.argv[1]),' '))
sleep(0.05)
elif len(sys.argv)==3:
try:
while True:
print(GetRandString(int(sys.argv[2]),int(sys.argv[1]),' '))
sleep(0.05)
except KeyboardInterrupt:
print('')
Как правильно определить функцию чтобы потом на if не ругалось?
И че ты хотел сделать?
Чтоб в функцию разное кол-во переменных передавалось, гугли args kwargs.
Если рабочую консольную утилиту, то гугли arg parser'ы всякие. https://docs.python.org/3/library/argparse.html
Или сорцы входящих в поставку утилит.
''.join(random.choice('0123456789ABCDEF') for x in range(partlen)
Для этого есть random.sample
проверку аргументов ещё заебашь.
Чего? Каких байтов, наркоман?
In [1]: s='0123456789ABCDEF'
In [2]: from random import sample as sam
In [3]: sam(s, 10)
Out[3]: ['3', 'B', 'D', '8', '9', 'C', '5', 'E', '0', 'A']
In [4]: ''.join(sam(s, 10))
Out[4]: '6381AD25CB'
http://pastebin.com/JHd6LYc7
сэмпл ругается если я пытаюсь сделать комбинацию из 20 символов (больше 16 на самом деле)
Да я ж нубло тупое в питоне. Пусть зубры пилят. А то впердолю хуйню в шапку и краснеть потом.
Шапку не сложно сокипастить, ничего нового не надо. Ну и да, №500 пилит перекат.
А, ну значит он без повторов выбирает.
да похуй вобще, оставь два for. Как осилишь итераторы, генераторы на них все перепишешь.
18 марта, в пятницу, приглашаем на MoscowPython Meetup 33 в офис компании Mail.Ru Group.
Нахуй иди.
Ты так говоришь будто из своего кармана платишь. Вон плисы все берут и похуй, что оверхед, главное быстро и гибко.
Возмите меня на Почту, я умею в sort()
Ты здесь? Ты из Почты? Запиши на телефон вот эту и выложи на ютуб: Лев Тонких, Rambler&Co «iPython & Jupyter: 4 fun & profit» На русском совсем нет инфы по ipython
Использую requests.Session
Но я не знаю какие headers передавать чтобы скачать именно mobile версию, а не desktop
Можете помочь?
ой умри нахуй пидарас и мама твоя пусть умрет нахуй и твой отец пусть умрет нахуй, а твоего деда я ебал, понял?
Это копия, сохраненная 5 апреля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.