Это копия, сохраненная 19 декабря 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Свой код кидайте через https://ideone.com/
Книги и ссылка на PyCharm: https://yadi.sk/d/tArKKuQu3Kejuq
Предыдущий тред https://2ch.hk/pr/res/1087578.html (М)
self.counter +=1
И
counter = 0
Это ж разные вещи.
Надо тогда и объявлять его как self.counter = 0
А откуда там self-то? Я объявляю в пустом месте внутри класса. Если объявлять внутри функции по понятным причинам будет тоже самое. И к тому же твой довод не объясняет, почему условие if self.counter == 0 вообще работает.
Ну охуеть. Это просто невообразимо сложный для представления код.
https://pastebin.com/7QgDrU0N
Как лучше всего ссылаться из OwnedBook на публикацию? Использовать genericforeignkey? Или есть третий, особый путь?
Я скачал портейбл WinPython-64bit-3.5.4.0Qt5, внутри которого есть jupiter notebook.
Я запустил в жупите нотебуке следующий код:
https://ideone.com/SDJRWh
На что получил ответ:
ImportError: No module named 'ml_metrics'
Мой вопрос в следующем - как сделать так, чтобы жупите нотебук нашёл модуль имя которого 'ml_metrics'?
>Филтруешь из базы 10 тредов, из каждого треда берёшь посты в обратном порядке(начиная со свежего) и всего лишь 3, из общей кучи.
Не, это классическая проблема N+1 получается.
Ну ты для каждого треда делаешь один дополнительный запрос в базу, это неправильно. Представляешь какая нагрузка? Надо как-то через джойны это все делать, а я так давно не работал с обычным sql и джангой что забыл нафиг.
Ну может быть.
Можно ограничить кол-во тредов на страницу и всё.
Хотя подожду годно-ответа, пожалуй.
Неее, вообще не катит. Если ты дома себе делаешь, то ладно, но в продакшене это путь в никуда. Это базовая sql'ная вещь, надо знать. И мне в том числе.
>>1094703
> Блять, ну ты ты ебанутый что ли?
Нет, это Питун какой-то ебанутый. Ну ты же по сути скопировал мой код, если я в глаза не ебусь? У тебя работает, у меня нет.
> А вообще люди делают такую классную штуку, как __init__
Не знаю, что ты имеешь в виду в данном контексте, но я ее использую в других целях. У меня есть целое разнообразие функций pizda, и они все в нем вызываются, в общем, у меня этот класс просто как сборник функций.
Скрин кода давай, может проебался где.
Питон какой?
>Не знаю, что ты имеешь в виду в данном контексте,
Вот это имею ввиду.
скажите что возвращается у вас:
requests.get("https://hh.ru")
у меня 404, ничего не найдено
но оно есть в браузере
я пробовал куки добавлять, чтоб как в браузере, даже с авторизацией и все равно 404
что за дела, помогите
>Это просто невообразимо сложный для представления код.
Задача состоит в представлении конкретно твоего говнокода, чтобы найти в нём ошибки. И тут что-то самомму додумывать бесполезно, а ты, считай, просто сказал "ну у меня там тип что-то есь и вот если это делаю, то оно не работает".
counter = 0 делает переменную классовой. Ты можешь к этой переменной обратится через self у объекта класса. Однако, как только ты делаешь self.counter = ... (+= != ++, если что, переменная не инкрементируется, ей просто присваивается новое значение, равное сумме прошлого и правой части, по крайней мере для примитивных объектов), у инстанса класса появляется поле "counter"
>Срабатывает всегда условие counter == 0.
В выданном тобой коде — нет. https://repl.it/repls/ProudMessyBuzzard
Но ты, я полагаю, маленько обосрался и скопировал код не из своего "проекта", где, наверное, пытаешься эту классовую переменную использовать именно как классовую, пытаясь обращаться к ней и инкрементировать из многих инстансов.
Т.е. Объявление переменной в теле класса, без явного указания вхождения в его 'неймспейс' (я хз, правильно ли сформулировал) это посути заглушка, на случай обращения к этому аттрибуту? В чем профит по сравнению с объявлением в конструкторе в виде self.my_var.
https://github.com/KOLANICH/RichConsole
https://github.com/KOLANICH/HDDModelDecoder.py
https://github.com/KOLANICH/Cache.py
https://github.com/KOLANICH/NoSuspend.py - untested on linux
https://github.com/KOLANICH/bind.py - just a mad experiment. In fact it is sometimes slower.
> это посути заглушка
Нет. Это классовый атрибут.
>В чем профит по сравнению с объявлением в конструкторе в виде self.my_var.
В том, что это один общий на все инстансы атрибут получается. https://repl.it/repls/OldDarksalmonBarnowl
Есть один скрипт, и он хорошо работает, но медленно, все изза того что там есть sleep. Пытался в многопоточность, но никак не могу понять как все работает, а сделать надо было еще вчера. Анон посмотри пожалуйста код.
Есть список данных, большой десятки тысяч значений. Каждое значение подается в функцию. В функции высчитывается кое что, sleep 5 секунд, еще раз высчитывается и если полученное значение больше разрешенного минимума - пишет в бд. Работает это все хорошо но дико медленно вот захотел прикрутить многопоточность. Простота тут в том что данные между потоками не перемещаются интересен только результат. Я вообще все правильно сделал?
Он для функции нужен. Я не хотел расписывать что функция делает что бы пост не засорять. Там просто для примера sleep print . Sleep значит что исполнение функции с каждым поданным параметром занимает некоторое время. От того если просто запускать многопоточно ее то потоки должны сами закрываться через определенный промежуток времени, завала не будет, думаю даже ограничение по потокам не нужно (да и я еще не понял как его делать).
Я как то месяца 3 назад корпел над мультипроцессингом и у меня ничего не вышло, что то вот осталось в голове из того собрал. Еще помню данные надо было в буфер как то писать что ли что бы не захлебнулась БД, но в моем случае данных на выходе будет очень мало, и вероятность захлеба крайне мала. На крайняк в список соберу и потом уже запишу.
>что такое decimal = "," ?
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html
> невообразимо сложный для представления
>статический counter пачиму не работает через селф
мхех
Чёрт, а я на русском искал
Спасибо
>данные надо было в буфер как то писать что ли что бы не захлебнулась БД
master-слейв + размазывание запросов по времени
шардинг
Да он просто имитирует время работы некой тяжёлой функции, при чём тут асинк вообще? Ему это с нехваткой производительности никак не поможет же в любом случае.
Что за хуйня, я нихуя не понимаю, доков нормальных нет, СДК для питона какое-то говно, там ещё импорт неправильный был и принт без скобочек.
Короче, что там на фронте надо писать? Может пример у кого-то есть?
https://github.com/liqpay/sdk-python
Посоны, хули эта ебала некоректно работает?
https://ideone.com/MUpIbe
Должно рандомить слово и находить количество совпадений символов с заданным словом.
>Где и как эти переменные применяют на практике?
Отправил сообщение в другой поток без ожидания ответа, потом перешёл к ожиданию.
Хосспаде, почему я не в дс?
> Скрин кода давай, может проебался где.
Блядь, проебался. Дело в том, что у меня класс пересоздается всегда. Ну пиздос, теперь придется делать внешнюю переменную, а ведь изначальная идея этого класса - собрать весь мусор одного типа в одну кучу, чтоб не мешался. Или этого можно как-то избежать?
Попробуй multiprocessing.dummy(или типа того)
Бумп вопросу
Как вы поступаете если есть две сущности с общим родителем делаю абстрактной моделью например, или через ссылку на родителя и в дальнейшем нужно получать датасет из абстрактной модели обоих сущностей?
Ну тогда ничем не могу помочь.
Дело идёт, только есть одна проблема.
a bytes-like object is required, not 'str'
Вызывает эту проблему
signature = liqpay.cnb_signature(params)
сам cnb_signature Представляет из себя
params = self._prepare_params(params)
data_to_sign = self.data_to_sign(params)
return self._make_signature(self._private_key, data_to_sign, self._private_key)
Но как я понимаю, сама проблема именно в в методе data_to_sign, который состоит из одной линии:
return base64.b64encode(json.dumps(params))
В доках про bytes-like object пишут This includes all bytes, bytearray, and array.array objects
Сами params приходят такие
{'action': 'pay', 'amount': '100', 'currency': 'USD', 'description': 'Payment for clothes', 'order_id': 'order_id_1', 'version': '3', 'sandbox': 1, 'server_url': 'https://test.com/billing/pay-callback/'}
Вопрос, что я делаю не так, учитывая, правда, то, что весь код взят прямо из примера в документации?
Да, сука, я только что сам понял, охуеть.
Там и библиотека установилась для второго, я наверное, догадаться должен был, что pip install liqpay-python3.
Или это в порядке вещей и я реально даун?
> Или это в порядке вещей
Нет, это хуета какая-то. Так обычно в линуксовых пакетных менеджерах называют пакеты. На pypi (до этого момента) такого не встречал.
Честно, я просто охуеваю.
pip install liqpay-python3 устанавливает версию 1.1.1, в которой ещё и нет одного из методов, который у них в примере, на гите у них для 3 питона написана версия 1.0, при этом pip install liqpay-python3==1.0 говорит, что такой нихуя нет, а выбор только 1.1 и 1.1.1
Ладно, хорошо, а может мне кто-то подсказать как инстальнуть из гита именно 3 версию
https://github.com/liqpay/sdk-python
Там папка liqpay и в ней liqpay3.py и liqpay.py
pip install git+https://github.com/liqpay/sdk-python#egg=liqpay
pip install git+https://github.com/liqpay/sdk-python#egg=liqpay3
устанавливает версию для второго
>Или этого можно как-то избежать?
Ну ты можешь, например, захуярить всё классовыми методами: https://repl.it/repls/RedFortunateIndianrhinoceros
Это всё, что я могу посоветовать не видя твоего кода и возможности исправить саму необходимость такого изврата.
Во-первых, у них там при импорте всё должно чпокаться заебись. https://github.com/liqpay/sdk-python/blob/master/liqpay/__init__.py
Во-вторых, выглядит так будто liqpay-python3 на pypi поделка какого-то васяна, которая к https://github.com/liqpay/sdk-python не имеет отношения. Проверь всё ещё раз, ёпту.
Со вторым согласен, но первое не работает, я проверял много раз, что там проверить можно-то?
Скачай репу да запусти python3 setup.py install вручную. Можешь предварительно liqpay.py удалить вообще.
Так он оба файла тебе в либу устанавливает, у тебя liqpay3.py тоже должен быть, и при import liqpay нужный и выберется же.
Тоже не работает, очевидно поставилась вторая, потому что
from urlparse import urljoin
а не
from urllib.parse import urljoin
>поставилась вторая
Они "ставятся" обе сразу. Импортируется нужная динамически по версии пифона.
Ну там же написана версия 3.6, почему тогда для 2.7 импортируется?
> from liqpay.liqpay import ...
Бля, ну ты долбоёб что ли?! Тебе написали лопату, чтобы ты импортировал из liqpay и не лез дальше. Нет, хочу жрать говно руками, а не с лопаты! И это программисты?! Мудачьё!
у меня есть несколько классов-оберток, например, ну и в сокет надо нахуярть это все в бинаре, варианты, типа:
"{0:c}{1:c}".format(ord(somebyte), ord(someotherbyte))
и их модификации со всякими битовыми сдвигами если нужно передать WORD/DWORD -- вот это вот все, чую что строкой с форматом это какой-то дикий костыль.
курить struct? или это ваще мимо?
"This can be used in handling binary data stored in files or from network connections, among other sources." по-ходу оно. первый вопрос снят. теперь если у меня в пакете битовые поля, например два по четыре - чо только побитово двигать и суммировать? или и для битовых полей есть чо?
Провел ядерные испытания. Скрипт захлебнулся, просто повис. Подозреваю что тут либо дело в том что запущено с виртуалки либо что то в теле скрипта ему мешает, пробовал убирать почти все функции становилось лучше, но все равно зависает, чуть позже. Что самое интересное отрабатывает в 2 потока нормально, в три виснет. У меня еще сеть задействована может какие то ответы на запросы не получает и затыкается. А еще момент если например вместо 1000 элементов в списке подать 100 и вьебать 25 потоков то он пулей выполнит, а если поставить 3 потока и из 250 элементов список то он повиснет, а бывает дорабатывает. Но если после того как он отработал снова запустить то он быстро повиснет. Как будто лимит какой то на данные. Память на виртуалке не нагружена, диск тоже, проц свободен. Либо сетевуха захлебывается, но нереально в 3 потока там данных крохи. Короче результат как бы там ни было есть - в 2 раза я его ускорил. Будем учиться, читать мать часть и прочее, разберемся. Спасибо всем кто помогал.
Это довольно сложно, по возможности todo есть в api.py. Вся разработка будет на ветке dev. Смотреть там.
Пасиб :*
Так вы ж так мастерство покажете своё, в опенсоре логгер спрятать!
> https://github.com/anonim-legivon/dvach.api/blob/dev/api2ch/utils.py
> return sum(boards_dict.values(), [])
Говно
> __version__ = '0.0.5.5'
Говно
> requests
Говно
> Хардкод методы
Говно
> js = requests.get(url).text
> return json.loads(js)
Говно
> class Post(object):
Говно
> for key, value in post.items():
> setattr(self, key, value)
Говно
Ну будьте людьми! 2017 год, делайте sans-io с sync/async бекендами, делайте динамические методы и высокоуровневые обёртки или вообще без них (достаточно addict). Всё равно ваше говно никому не нужно
Что не так с хард код методами и как их заменить? Что не так с классом Post и как фиксить?
Ребятки, посмотрите, как сделан vk_api. Вам стоит сделать нечто похожее.
define "взлетит"
От api одно название, посмотри сам и подивись
>Нахуя он наследуется от object?
архаизм, поправили
Есть класс бейсед вью DetailView с продуктом, в котором я создал метод post, чтобы отправлять форму с количеством продуктов, размерами и прочим.
Смотрю в сторону сессий, но нихуя не могу понять почему у меня счетчик каждый раз обнуляется. Вот говнокод
https://pastebin.com/Le7JPdbc
Может надо вью другой использовать? И ещё как мне вернуться на ту же самую страницу красиво, потому что последняя строка не работает, говорит нет object.
Хотя мне вообще кажется что я какую-то хуйню делаю, так что если кто-то подскажет, то буду крайне признателен.
Форма там просто по модели продукта с тремя полями, в request.post приходит вот такое
{'color': '3', 'size': '2', 'count': '2', 'csrfmiddlewaretoken': 'EumG12uNICe2q6iUx91KNJV1nti5XL5uNHznFMwNG5MGBV6y'}
Анан, есть мнение, и не только мое, что с опредленным незавидным бекграундом в веб на питоне имеет смысл соваться только как уже миддл разработчику. Теперь мой вопрос: как мне узнать что я уже мидол? Есть ли гост какой, что должен знать и уметь мидл?
Анон, подкинь идей для проекта, чтобы освоить ооп и наследование?
Обвивает трубы кольцами
Как французский батон
В подворотне притон
Оставь дома свой берберри виттон
У удали с ноута два-семь питон
>2д
для пидоров, поверь мне, ничего там хорошего нет, вообще везде где просто, осядают тупые пёзды и ванильные хуи из обеспеченных семей, похуй вообще на конкуренцию, тебе тупо пообщаться не с кем
а для вебчика ничего кроме модного молодежного жса нинужно, еще лет 5, ясрипт научится понимать человескую речь и наступит ренесанс мира высоких технологий лол
красиво стелишь фраерок
>а для вебчика ничего кроме модного молодежного жса нинужно
Ну не траль плиз? Зачем так говоришь
Еще лет пять, и все бизнес задачи будут решать нейроночки писанные нейроночками, а люди будут ползать по шею в мазуте и радиоктивном пепле
Ну что, анончик? Чего на связь не выходишь?
надо придумать скрипт, который будет слушать сеть и принимать запросы, например json-rpc или что-нибудь подобное.
Он будет принимать IP куда поставить и текст плейбука
и запускать с этими данными
главное, чтобы можно было вызвать его из руби
Сперва юзер вводит число(длину пароля) от 5 до 20
Затем это число определяет длину пароля, сам пароль состоит из рандомных числе от 0 до 9 соответственно
зотем что это переменная класса а не экземпляра класса, и обращатся к ней нужно не через имя экземпляра а через сам класс
>
>
создаешь строку из символов, потом выбираешь random.choice(строка) из строки случайный элемент и прибавляешь его к строке - поролю
Поделитесь как вы пишете код. Вот стоит перед вами задача. Какие действия вы совершаете в первую очередь, какие потом и так далее.
>как вы пишете код
тебе нужно посмотреть ролики картавых хохлов с ютуба, про введение в программирование, прежде чем учить синтаксис нужно понять почему это вообще так, а не по другому
мне очень помогло все окончательно упорядочить
ну в двух словах каждую задачу тебе надо разложить на переменные, а потом подумать как с ними чото сделать что бы было норм
самое главное тут поставить чоткую задачу, а не просто подрочить, потому как дрочь бесконечен и радости там нигде нет
Можете вкратце рассказать о том как блять пользоваться GTK?? Я уже неделю пытаюсь с ним разобраться и так с места и не сдвинулся. Пытаюсь юзать GoGTK. Уроков катастрофически мало, а по тому что есть, вылезают какие-то ебанутейшие ошибки.
Вобщем с чего начать изучение PyGTK?
Ладно пойду книжки почитаю, тут явно с наскока с опытом только в паскале не осилить.
Это только для питон 2
В стандартной библиотеке присутствует что-нибудь для этого, кроме turtle?
Интересуюсь в целях собственного аутизма
Здравствуйте, я хочу запустить код из статьи с сайта habrahabr
https://habrahabr.ru/post/206306/
И когда запускаю, то получаю ошибки на приложенной картинке. Как пофиксить? Скажите, пожалуйста.
Просниффай трафик Wireshark'ом, например.
https://ideone.com/llETMx
Как я понимаю проебался с работой файла, то ли он вообще не видит файл, то ли не видит там строки
сам код работал, если вставлять не файл, а пример одной строки
Анон подскажи пожалуйста про что ты. Я не знаю что это. Нашел какие то лимиты на дескрипторы обращения к файлам но это не то же? Именно с сетью что то связано? Такого не нашел.
но парит только первую строчку в файле, как по остальным пойти
Одна и та же ошибка при попытке вывода сайта в домашней директории, что до создания html документа, что после. Что я не так сделала?
ребят, ну помогите пожалуйста
я сейчас психану, перерыла по этой ошибки статьи, но там все сводится к действиям которыя я не совершала
Блджад, тупые сельди не могут в программирование.
Тебе черным по желтому написано: ШАБЛОН НЕ НАЙДЕН
Суть вот в чём: есть одно OpenGL приложение с использованием pyglet'а. Расчёт всякого дерьма и возврат тупла с координатами вершин делается в C, занимая почти нихуя времени. Далее есть VertexBufferObject, в который можно передать массив GLfloat'ов (что является тем же ctypes.c_float'ом) и отрисовать, этот шаг тоже занимает почти нихуя. Но вот переделка из тупла в массив c_float'ов в самом питоне занимает оче много (раза в 4 больше всего остального), и хотелось бы как-то оптимизировать этот шаг. Возможно, тогда и первый упростится, ведь создавать PyTuple и уже не надо будет.
>тупые сельди не могут в программирование.
Может это ты глуп?
Я чётко указала что шаблон создан и путь к нему указан, а ты и капитан очевидно гугл транслейт моего скриншота копируешь.
Я первый день осваиваю python и django, меньше агрессии, тем более в разделе ДЛЯ НОВИЧКОВ!
жизнь с тобой уже достаточно сделала, что бы мне не трудится.
должен ты ведь знать примерные причины из-за которых не выводится созданный html шаблон
https://tutorial.djangogirls.org/ru/html/ делаю по этому руководству точь в точь, смысла кидать код нету. Я уже отладку запускала, всё в ноль
>должен ты ведь знать примерные причины из-за которых не выводится созданный html шаблон
Примерные причины тебе сама джанга уже написала. Неси код, ёпту. Тут не раздел новичков, если чо.
>смысла кидать код нету.
Cмысла помогать, выходит, тоже? Может у тебя там опечатка где-то, чёрт возьми.
Бгг, даже русского языка не знает. Есть подозрение, что и в английский не может, а ведь ещё и сюда лезет!
Ага, должен. Таких примерно ∞, вплоть до погоды на Марсе. А это не погугли-за-анона-тред.
Я смотрел видео и там нейронка подобрала полином 3 степени для синусоиды. Подскажите, для экспоненты степень какая подойдет?
Давай тогда код сюда и темплейты должны быть в одной директории с manage.py templates/blog/post_list.html
Ты промахнулся реплаем.
Tk/Tcl. Сразу говорю, гиблое дело. Лучше какой-нибудь wxPython.
>>1096904
Пикрил.
http://docs.python-guide.org/en/latest/shipping/freezing/
for q in description[a]:
print(q)
как написать такой код в джанго темплейтах, учитывая, что description это словарь, а description[a] это список
Сделал malloc для массива float'ов и возвращаю адрес прямо в питон (VBO как раз указатель на массив и просит).
Это совсем пиздец или по-другому никак? Работает всё супер-быстро, мне нравится.
Не поможешь мне разобраться? Хотя бы какие-то основы. Вкинь свой мэил или напиши сюда MuuUFONuANUSyan]S@dexPUNCTUMr'`:u
>не факт, что под никсами в составе std поставляется
в пайтоне есть, там не биндинг а реализация
>рановато
Что там рановато? Запомнить 6 комманд init, pull, push, commit, rebase, checkout?
ебать сложна
> но это не то же?
Хз, по тому что ты описал, мне кажется словно у тебя превышение лимита дескрипторов на процесс, абстрактно пишешь.
Ты тролешь? На бесконечности всегда экспонента будет расти быстрее полинома. А значит, твоя задача решаема в узких рамках значений независимой переменной. И ответ зависит от диапазона этих значений и допускаемой ошибки.
description.a
https://en.wikipedia.org/wiki/Taylor_series#Exponential_function
Возьми да сам потестируй и посмотри, насоколько малая степень тебя устроит.
>основы
у них есть канал на тытрубе, плюс туторы от разных левохуев
а вообще хуле там сложного, таскай себе формочки да бинди хуинди
С установки Qt Creator? Гайды в сети.
с постановки задачи
Ввожу, пишет что команда не найдена, что я уже не так сделал?
напиши python2
Потому что python3 --version
Я уже пусть по умолчанию поставил, не знаю. Перезагрузился, ничего не работает.
Блин я тупой что делать? Туплю даже над простыми задачами, которые по идее должны решаться за 10 минут.
Да в азах уже итак по уши. Не получается эти азы друг с другом правильно комбинировать, чтобы результат выходил. Потом когда смотришь решение задачи над коорой полдня ебался без результата, то все кажется просто и без задних мыслей. Но вот самому додуматься не выходит.
Все, справился сам.
Главное чтобы клинап был. У нас делалось так: вызывается из си коллбек питоний, он передаёт указатель в другую функцию. Потом, когда сишная функция заканчивается, заканчивается питоний коллбек, тогда уже первая сишная функция может удалять объект.
Пикрелейтед тупо зависает на .recv
К серверу доступ не имею, но мне известно что он поддерживает websocket. Отправить надо "dict".
Если там будет расписано про проектирование приложений в принципе - тоже отлично.
Но хотелось бы подробней про веб, в частности django/flask.
Я вообще мимокрокодил. Отдели сначала мух от котлет: разберись, что такое сокеты, и чем отличаются от вебсокетов.
Шапка, довен.
Нет, мяско дешевле робота всё равно будет.
Да. А в конце всех разнесет в жидкость LCL
Для начала нужно, собственно, установить библиотеку для вебсокетов. Например, есть одна с довольно очевидным названием: websockets.
>>1097358
>Главное чтобы клинап был.
Это есть. В __del__ объекта же норм запихнуть вызов сишной функции, освобождающей память? У меня в другом месте хранится адрес некоторой кучки данных, привязанных к этому объекту, которые туда-сюда таскать накладно очень было бы.
Двачую вопрос. Разобрался с функциями теперь хотелось бы понять что такое классы и зачем они нужны.
оф дока питона. если не можешь в англ - https://www.ibm.com/developerworks/ru/library/l-python_part_6/index.html
import requests, json
url = 'https://2ch.hk/makaba/mobile.fcgi?task=get_post&board=abu&post=42375' (М)
r = requests.get(url)
data = r.json()
и тут data получается не dict, а list, хотя нормальные json страницы, а не обезьяньи, нормально в dict декодируются с помощью r.json(). я предполагаю это из-за того что у абу в api выдаёт json с квадратными скобками (https://2ch.hk/makaba/mobile.fcgi?task=get_post&board=abu&post=42375). (М) как сделать чтобы выдавало dict и я мог нормально вызывать всякие хуйни?
djbook.ru
Попробуй тогда костылем переопределить data = data[0] чтобы избавиться от листа. А если у тебя только в таких случаях возникает лист, то поставить условие что если у тебя после запроса приходит лист, брать нулевой элемент
https://pastebin.com/Zv6waw3Y
Суть такова, что словаре моём всегда есть одно лишнее значение, которые я перед итерацией хочу убрать, что, в общем-то и делаю, но в self.cart.values() всё равно остаётся это значение. ЧЯДНТ?
Я пишу def my_view(request, pk=None):
Создаю 2 юрла
url(r'^myview/(?P<pk>\d+)/$', views.myview, name='myview_pk'),
url(r'^myview/$', views.myview, name='myview'),
А темплейте есть формы, которые при отправки вызывают myview_pk с аргументом pk.
Но какого-то хуя у меня pk=None всегда, что не так?
В результате, я ожидаю, что когда скрипт находит строку с номером в начале, он считает его вопросом, иначе - ответом на вопрос, который был добавлен последним в список вопросов. Но, на деле, он правильно разбирает вопросы и валит ко всем экземплярам вопросов все доступные ответы.
У меня уже замылился глаз и я не могу найти свою ошибку.
Скрипт: https://pastebin.com/Pnw13MHM (требуется python-docx)
Файл, на котором можно потестить: http://ge.tt/7EgCQUn2
Заранее спасибо.
Господа гуру, обоссыте наше поделие по делу, пожалуйста ;з
я щас уже не найду, там 15летний хуй понтуется 32 гигами оперативки и поесняет за кресты, но помимо этого есть основы за кодинг в целом
просто вбей основы блять
Как это проще всего сделать питоном? А как правильнее? А чего загуглить помимо очевидного text processing with python? Может кто чего видел такого на гитхабе?
Почему просто не удалить ключ командой "del dict[key]"
Ну во-первых они имеют формат А.Я.Клешня.
То есть много точек, заглавные буквы и тд. Во вторых, они в общем распределении по частоте будут в хвосте.
Ну regex'ом если ток, либо ищи нейросеть
codewars
Поподробнее
Ага, сделали ещё поддержку смены заголовков и прокси. Кому нужно прикрутит библиотеку fake_useragent и будет каждый раз менять headers в цикле. Эт вообще если кто-нибудь соберётся делать вайпалку, но тогда надо будет ещё капчу решать сторонними сервисами с:
я долбаебокодер
Добра, помогло
Вряд ли. Только если разбить сам класс на базовые классы / миксины, с которых наследоваться
Как это организовать?
Дважды через randint?
Ну если инты нужны, то да. Можно через нампи с указанием количества сразу:
>np.random.randint(start,stop,size=np.random.randint(np.random.randint(np.random.randint(
Однако с количеством надо бы немного определиться, хотя бы примерным.
Как их "разбить", чтобы можно было написать: "Такой-то параметр равен "Значение1"", "Такой-то параметр равен"Значение 2""?
Пичарм — божественная вещь, ты просто неправильно его готовишь.
Как именно лагает? Сколько RAM?
Он не то, что бы лагает, загружается долго, и если нечаянно клацнешь по нему будь готов смотреть на долгую загрузку. Хочется чего-то более легкого.
А, так это не такая уж и проблема.
> чего-то более легкого
Очевидно, автодополнения/рефакторинг/прочие фишки пичарма будут гораздо хуже/их не будет совсем.
Atom, случаем, не на GitHub Electron? Видишь это название — сразу бросай говно от веб-макак.
Я просто загуглил best python IDE, везде на первом месте либо PyCharm, либо Atom.
>Очевидно, автодополнения/рефакторинг/прочие фишки пичарма будут гораздо хуже/их не будет совсем.
Для этого есть IPython
Параша на электроне.
Помню, из-за него баг был: мерцание курсора в одном окне отжирало 13% CPU. Сейчас как-то обошли. Но все ещё говно.
если пичарм лагает - купи макбук
базарю, пользоваться на нем пичармом одно удовольствие
а вообще vim или spider
по-мелочам так и вовсе можешь обмазываться jupiter notebook - он охуенен и пиздат
Переписали на что-то более нативное?
Вот это перебор для его задачи
Если на тытрубе нету на русском, то возможно я запилю. Я пока осваиваю технику разделения логики и интерфейса. Так считается правильно.
Мутабельными или иммутабельными могут быть типы, а не аргументы функций.
Если же ты просто спрашиваешь, можно ли сделать
def x(a):
a = 1
return 1
print(x(9999)) # 1
то да, разумеется. Но это ты просто переменной a присвоил новое значение.
return a там, конечно же.
По pyqt есть на русском, но всё это уровня "делай по шаблону просто по тому что так надо"
Нигде не объясняются именно основы- что и зачем пишется
А вообще пили. Пользы много будет
Он сможет обрабатывать параллельно несколько соединений в разных потоках? Если нет, то как его можно модернизовать? Есть ли возможность выводить id активного потока, чтобы хоть контролировать правильность работу сервера?
Многопоточным его можно назвать лишь условно. Потоки вроде есть, но в каждый момент времени может выполняться только один. Если хочется паралелльности, то смотри в сторону asyncio, либо запускай несколько однопоточных инстансов своего сервера.
https://pastebin.com/5iPg5KNY
Я с сокетами/запросами почти никогда не сталкивался, поэтому не могли бы вы подсказать:
1) Что в этом случае означают два порта, как их использовать?
2) Как вообще сделать такой запрос? Тут requests хватит или нужно что-то через sockets придумывать?
У меня вместе с anaconda поставился jupiter, только я ещё не вкурил всей сути. Его в браузере каждый раз открывать?
> Потоки вроде есть, но в каждый момент времени может выполняться только один.
Для ввода-вывода пойдет.
>Я с сокетами/запросами почти никогда не сталкивался, поэтому не могли бы вы подсказать:
>1) Что в этом случае означают два порта, как их использовать?
>2) Как вообще сделать такой запрос? Тут requests хватит или нужно что-то через sockets придумывать?
Это не просто сокеты (berkeley sockets), а какое-то флешевое говно. Если я правильно понимаю, тебе надо установить Tcp-соединение и послать внутри него сформированный нуль-терминированный xml.
Зачем два порта, не имею ни малейшего представления. Возможно, один из портов должен как-то указываться в самом xml.
Гугли по XMLSocket.
Повторяюсь, задача не на питон, а разобраться в проприетарном говне.
С чего ты взял?
Спасибо,
>Это не просто сокеты (berkeley sockets), а какое-то флешевое говно.
да, но там оказывается есть возможность послать JSON
>Зачем два порта, не имею ни малейшего представления.
Мне еще докинули доков по платформе. Насколько я понял второй - порт на который переадресуется вызов с первого уже на самом сервере. Т.е. нам нужен только первый.
Итого у меня получилось
https://pastebin.com/jqmw4sZB
Все виснет на socket.recv - судя по докам, это значит что мне ничего не послали в ответ/закрыли соединение.
Т.е. делаю я по сути все правильно, проблема в самой платформе/адресах/запросе?
>Т.е. делаю я по сути все правильно, проблема в самой платформе/адресах/запросе?
Да.
Ты еще забыл терминирующий нуль в запросе. И я думаю сервер хоть что-то да должен отвечать.
И еще изучи неблокирующие сокеты, это чтобы recv не вис.
суть в том, что бы делиться с темным не программерским народом скриптами особо не заставляя их чет устанавливать и тд
ну и удобно, че, крутится себе в интернете где-то твоя страничка с кучкой скриптов "по темам" куда ты из браузера зайти можешь и пользоваться
Emacs вроде годнота. Правда входной порог выше чем у вскода или пайчарма.
>Если хочется паралелльности, то смотри в сторону asyncio
лолшто
Уж вот от кого, а от asyncio точно никакой параллельности ждать не стоит по определению.
Да гонит он.
Есть posix-треды. Но ускорения вычислений это не дает, в один момент выполняется только один тред. Но для задач, ожидающих ввода-вывода это подходит, если только тредов разумное количество и они не каждую секунду создаются/завершаются.
Для распараллеливания вычислений, когда все ядра проца загружены, есть мультипроцессинг.
Проблема в том, что там используется Flask для обработки запросов
Сначала запускаю сервер, потом устанавливаю вебхук для вайбера, и он стабильно при запуске возвращает 502 ошибку. Если обращаюсь по адресу уже после запуска приложения – отвечает нормально. Как я понимаю, Flask запускается асинхронно? Есть ли возможность выполнить команду после старта фласка?
Спсибо
>терминирующий нуль
Пока гуглю и не нашел: а что это такое и как его добавить в запрос? да, я вообще в этом не разбираюсь
Это в сишке строки принято оканчивать нулевым байтом. На сайте адобе я нагуглил что в xml-сокетах данные тоже должны им заканчиваться. Добавь '\x00' или b'\x00' (питон3) в конец того, что шлешь.
Да смотрел, ничего дельного не нашел
Просто если после app.run() вызывать например print, то он срабатывает ПЕРЕД сообщением о том, что сервер запущен
>Просто если после app.run() вызывать например print, то он срабатывает ПЕРЕД сообщением о том, что сервер запущен
Это нормально.
хттп-реквесты фласк обрабатывает синхронно, я вот о чем. А служебный вывод видимо как-то по хитрому кэшируется. Короче забей на это.
Тебе вообще что надо, рабочего клиента эмулировать? Дамп трафика тогда проси.
understandable, спасибо за разъяснения
Кстати, аноны, если кто-то писал на питоне ботов для вайбера, отпишитесь мне, есть пара вопросов
from multiprocessing.pool import ThreadPool
pool = ThreadPool(n)
pool.map_async(func_containing_for_body, list_of_stuff)
...
pool.close()
pool.join()
Это вставлять в for in loop? Напр. 1000000 entries нужно обработать.
for entry in somelist:
action_with_long_response(entry)
А где инфу нашел по написанию ботов для вибера? А то мне пригодилось бы, а долго втыкать в апи лень
Нет. Это писать вместо фор лупа:
>pool.map(action_with_long_response, somelist)
map или map_async выбирай в завимости от того, надо ли тебе что-то делать пока все эти элементы обрабатываются (т.е. map() блокирует основной тред)/
У меня там коллеги-старперчики сидят. И хвала аллаху что они хоть со скайпа съебали
https://developers.viber.com/
>>1099062
Нужно параллельно сделать ботов для вайбера и тг, со вторым уже давно всё готово, а вайбер всё портит
Если еще актуально - отпишись в телегу @malomalsky. Скину годную книгу
Все, нашел.
В формах что ли? А есть про это в доках, а то я писал, но джанга ругалась.
В скайпе тоже давно боты есть.
Конечно можно! Сейчас на pygame почти все написано
>Если хочется паралелльности, то смотри в сторону asyncio
Взял в гугле пример сервера на asyncio, настроил под свои нужды - результат выполнения абсолютно такой же, как и раньше. Прям 1 в 1.
>>1098840
Блджад, а от чего можно ждать параллельности? Казалось бы, такая тривиальная задача - обрабатывать одновременно несколько подключений. Может я зря Питон выбрал для этих нужд? Какие ещё есть варианты?
Вакансии пока не главное, мне важно сейчас решить стоящую передо мной задачу.
нода, епт!
>обрабатывать одновременно несколько подключений.
Сначала давай определимся с терминами. Ты под "одновременно" имеешь в виду именно вот параллельно, на всех доступных ядрах/гипертредах, т.е. для повышения производительности, или же просто асинхронно, не мешая друг другу, чтобы несколько человек могли подключиться и работать с твоим сервером?
Если второе (а я думаю, что именно это тебе и нужно), то и asyncio, и треды вполне тебе подходят.
>Какие ещё есть варианты?
Есть node.js, но там, по сути, тот же asyncio, асинхронщина на одном ядре.
Для "параллельности" можно просто несколько процессов запустить, тогда все ресурсы и будут использованы
Так что спокуха, всё ок, это просто манька выебнуться "знаниями" решила (и мгновенно же и обосралась буквально через пару слов, лел).
>результат выполнения абсолютно такой же, как и раньше. Прям 1 в 1.
Так а что тебя в этом результате неустраивает-то?
> просто асинхронно, не мешая друг другу, чтобы несколько человек могли подключиться и работать с твоим сервером
Именно это.
Например, подключается первый пользователь и присылает мне подряд 100 сообщений hello_world_1.
В это время подключается второй пользователь и присылает 5 раз сообщение hello_world_2.
Мне нужно, чтобы второй пользователь не ждал в очереди, пока закончит первый. Нужно чтобы сообщения от любого пользователя сразу же выводились на консоль как только придут. И таких пользователей будет около 30 штук одновременно.
>чтобы второй пользователь не ждал в очереди, пока закончит первый
Ну так первый будет обращаться к СУБД, наверное.
Нет. Пользователи - это GPS трекеры, которые присылают мне свои координаты.
Пока получается так, что первый трекер общается с сервером, а остальные ждут в очереди и накапливают свои координаты в буфер. В итоге пока очередь доходит до последнего трекера, то буферизация достигает нескольких часов.
Сдаётся мне, что это происходит потому, что как сказал анон >>1098643
>Потоки вроде есть, но в каждый момент времени может выполняться только один
>чтобы второй пользователь не ждал в очереди, пока закончит первый.
Ну так а сейчас у тебя не так, что ли?
>чтобы второй пользователь не ждал в очереди, пока закончит первый.
Зависит от того, как у тебя код написал. Формально, он будет ждать, но зачастую это ожидание очень малое (пренебрежимое). А если обрабатывающая запросы функция обращается к бд или диску, то во время ожидания этих операций (открытия/закрытия файлов, например) питон пойдёт обслуживать другого пользователя.
>>1099403
>Сдаётся мне, что это происходит потому, что как сказал анон
Нет, ты просто наговнокодил. Вырежи всё лишнее, покажи свой код. Могу чуть позже тебе пример нормальный накалякать.
>Какие ещё есть варианты?
uwsgi, как плюс - он сам нагрузку по ядрам раскидывает, если сконфигурировать
Мой говнокод по ссылке: https://ideone.com/Y6ww0V
За работающий пример буду сильно благодарен.
Самое смешное, что сервер может быть и нормально работает, а косяки получаются из-за криво настроенных клиентов.
Попробуй использовать Jython/IronPython.
Я когда многопоточный url-фаззер на request писал, действительно быстрее было. Но там только второй бидон.
не слушай долбоебов вещающих про Гил и однопоточность
И про uwsgi , позор то какой
Твою задачу питоном решить можно.
Конкретнее распиши как трекеры общаются с сервером. Просто по тсп шлют сообщения в своём формате?
>За работающий пример буду сильно благодарен.
>Могу чуть позже тебе пример нормальный накалякать.
Вот-с. https://repl.it/repls/FunnyFunnyHog
>сервер может быть и нормально работает
Увы.
>Мой говнокод
>yield from asyncio.wait_for(reader.readline(), timeout=100.0)
Вот тут херня. Данные у тебя новой строкой не оканчиваются, в итоге он читает и читает, пока там вдруг случайно не появится конец строки (а с таймаутом в 100 секунд шансы довольно велики). При этом при начале поступления данных, походу, readline начинает блокировать. Замени readline на, например, read(500) И всё станет немного лучше. Дальше уже нужно знать протокол и формат сообщений, имеют ли они размер и т.д.
И не слушай всяких долбоёбов, которые тут уже на IronPython, блядь, перейти советуют.
Вот твой же код с моими симуляторами трекеров с выставлением read(36) (размер моего пакета): https://repl.it/repls/IdealJudiciousHornet всё ок работает.
>пока там вдруг случайно не появится конец строки (а с таймаутом в 100 секунд шансы довольно велики)
Хотя тут я хуйню какую-то сморозил, по-моему, но у меня оно почему-то начинало выплёвывать через несколько секунд сразу кучу данных.
блин да пихай их в celery и пусть оно там сколь угодно долго как-то само ебется
>Данные у тебя новой строкой не оканчиваются, в итоге он читает и читает, пока там вдруг случайно не появится конец строки
>Замени readline на, например, read(500)
Т.е. итерация цикла while должна заканчиваться после того, как придёт интересующая меня строка? В данном случае после получения 500 символов. Верно? Длина строки у меня не фиксирована, но, согласно протоколу, строка заканчивается символами \r\n. Получается я должен читать приходящие символы, и как только наберётся последовательность \r\n делать циклу break?
>Длина строки у меня не фиксирована, но, согласно протоколу, строка заканчивается символами \r\n. Получается я должен читать приходящие символы, и как только наберётся последовательность \r\n делать циклу break?
Да. Но ограничение на длину все же поставь. Протокол протоколом, а клиенту чудить никто не запрещает.
>итерация цикла while должна заканчиваться
>наберётся последовательность \r\n делать циклу break?
Не совсем.
Теоретически, при такой связи должно быть два цикла:
1. на всё время подключения клиента
2. на время сбора данных (они же могут не одним куском сразу прийти). Т.е. что-то типа (полупсевдокод)
>while client.connected():
> data = b'' # или socket.read(HEADER_SIZE)
> while len(data) < packet_size:
> data += await socket.read(socket.bytes_available)
> process_data(data)
В даннм случае, внутренний луп у тебя заменён на readline(), потому что ты не по размеру, а по делимитеру определяешь конец пакета (обычно же хедер есть и всё такое).
Твой хендлер вызывается при подключении клиета. Если ты сделаешь break после прочтения первого сообщения, то соединение разорвётся и придётся его устанавливать заново при следующей пачке данных. Тут уже зависит от частоты сообщений (трекеры-то, полагаю, должны бы каждые несколько секунд отсылать? Приятно же наблюдать, как курьер с пиццей к твоему дому подъезжает в почти реальном времени), выбор за тобой.
Длины стоит ограничить, чтобы мамики хацкеры не послали тебе тонну дряни и не засрали твой буфер, который так и будет копить и копить бесконечно данные.
Данные-то правильные приходят, которые получается обработать, лишнего ничего нет? Потому что вообще так-то твой код должен был бы работать, если протокол соблюдён.
Хочу настроить пайчарм для работы с питоном. Скачана новая анаконда, скачан сам питон и пайчарм. Библиотеки все подключены (1й пик), но нужно задать еще run/debug configuration. А там у меня просят какой-то скрипт (2й пик).
Работал с питоном последний раз где-то год назад, скриптов никаких не помню, что там выбирать не знаю. Подскажите!
Кроме двача больше некому помочь, правда
>просят какой-то скрипт (2й пик).
ну так и укажи там путь к какому-то скрипту который ты дебажить собрался.
Я ПОНЯЛ КОД И ЕСТЬ СКРИПТ УКАЗАЛ ЕГО И ВСЕ НОРМ СПАСИБО РЕБЯТА
У меня в бд есть две модели: кастомеры и заказы. У каждой модели есть поле created_date.
Нужно:
задаешь две даты (start, end) -> тебе выдает словарь с
{date:
{customers_created: кол-во кастомеров за дату,
orders_placed: кол-во заказов за дату}
}
Я думаю это можно как-то получить с помощью ORM, но совсем не разбираюсь в этих aggregate/annotateпока гуглю варианты
Если сделать класс то он требует вызов из объекта
А, кажись понял - надо писать перед каждой функцией @staticmethod
сделал для choices в forms.py multipleSelect
все нормально, в админке появились чекбоксы, пытаюсь сохранить модельку, пишет Выберите корректный вариант. ['red', 'blue', 'green'] нет среди допустимых значений.
я вообще понятия не имею что происходит, фигачу по докам и стековерфлов, интуиция подсказывает что в models.py в поле colors определен CharField
colors = models.CharField(choices=COLORS, max_length=50, verbose_name='Цвета')
а админка пытается запихать туда ['basket', 'child', 'tennis'] массив
вопрос что и где мне нужно сделать чтобы это исправить?
пока в голове только переопределить метод save в форме, чтобы он вместо этого массива делал 'basket|child|tennis' но я уверен что есть способ лучше, подскажите какой?
заюзал это
https://github.com/goinnn/django-multiselectfield
пиздец вы питонисты говноеды, ради элементарной задачи тянуть хуй пойми чей говнокод
еще на npm выебонят
ебал вас в рот Антихайп
А зачем в 2017-м нужна Anaconda? Python же вроде давно в venv научился
Предположим, что у нас есть кортеж, и нам нужно доставать из него 2 числа и сравнивать их, как достать эти сразу 2 числа? Или мне надо по очереди их брать, записывать в переменные, сравнивать переменные и очищать после?
>и нам нужно доставать из него 2 числа и сравнивать их,
По два соседних итерируя по длине кортежа чтоли или как? пример приведи.
Ну так чего же? Что же лежит на поверхности и чего я блядь не вижу?
То чувство когда не очень внимательно читал первые уроки. Спасибо, вспомнил
python3.4 -m pip install krokodil
python3.5 -m pip install zalupa
python3.6 -m pip install sir
>>1099821
>как достать эти сразу 2 числа?
if kortezh[0] == kortezh[1]:
>>1099704
Оттуда — никак. Что ты можешь сделать, это добавить глобальный флаг, выставив которые все оставшиеся вызовы просто будут тут же завершены — https://repl.it/repls/KhakiFunnyCaiman
Если у тебя такая задача, по поиску нужного чего-то в списке, то может стоит самому по кускам загружать в пул данные, останавливаясь тогда, когда нашлось нужное? Можешь вот в сторону Queue Глянуть - https://pymotw.com/2/Queue/
В принципе, если использовать imap, то можно сделать pool.terminate(), по по-моему это немного нехорошо, если делать это из одного из тредов пула, а не оттуда, где пул был создан.
Но может быть ты лучше задачу свою опишешь? Потому что какое не очень элегантное решение получается.
>ради элементарной задачи
>еще на npm выебонят
У нас хотя бы is-boolean'ов нет.
А зачем тебе питон, нода же гораздо лучше для веба?
Задача такова: много операций с долгим выполнением, которые надо расспаралелить и оборвать при неком условии.
Как-то тупо получается мультипроцессинг сделан, если его нельзя оборвать. А если у меня миллион процессов?
А может быть... ТЫ?
>>1099933
>А если у меня миллион процессов?
Значит ты что-то не так делаешь.
>надо расспаралелить
Ограничение по производительности или io? А то сначала ты треды просил, а теперь вдруг распараллеллить надо.
Если таки cpu-bound, то вот с процессами так можно сделать:
https://stackoverflow.com/questions/26068819/how-to-kill-all-pool-workers-in-multiprocess
С тредами я писал же, что можно
>pool.imap(func, list)
>pool.terminate()
Просто делать это лучше-таки в основном треде, как и с процессами (там по-другому нельзя совсем): https://repl.it/repls/MediocreArcticEel (у тредов общая память, поэтому не нужны дополнительные сложности с менеджерами).
Честно говоря, я не знаю, почему при map() нельзя так же прервать. Возможно, список сразу целиком пулу отдаётся, в отличие от генератора, который ещё можно остановить.
Только учти, что порядок не особо гарантирован, но раз ты параллелишь, то все элементы должны бы быть независимыми.
Либо вот на документированные executor'ы (и по тредам, и по процессам) посмотри: https://docs.python.org/3.4/library/concurrent.futures.html
Насчёт решения с тредами: после вызова pool.terminate, уже запущенные задачи в тредах будут доделываться до конца, только новые не поступят. (Потому что внутри там, наверняка, всё через ту же стейт переменную сделано, которая перед каждым новым элементом проверяется). Так что не вздумай там запускать сотни тредов.
Не ставь глобально пакеты, обмажься virtualenv
А там уже устанавливай нужные версии питона
$ virtualenv -p python3.6 environment_file
Значит, что ты используешь 2ю версию питона (print не функция). Анон выше мягко намекал, что учить версию языка, которая будет лишена поддержки в 2019-20, не совсем продуктивно в 2к18 году.
Если нужно красивенько: https://repl.it/repls/WorriedRevolvingSablefish нагло спиздил из доков itertool'а
Но у тебя, по-моему, чего-то более фундаментального понимание неправильное. К элементам можно обращаться по индексам из списков/туплов и других последовательностей.
>l = ['a', 'b', 'c']
>l[1] # 'b'
>var = 'b'
l[1] можно использовать точно так же, как и var.
>>1100046
Join чтобы дождаться конца выполнения уже ещё активных тредов (добавил принтов по ссылке). А вот close и правда не нужен, join можно вызывать и после terminate'а (но хотя бы один из них обязателен).
Про индексы то понятно, а если мы рандомом заполняем кортеж? То приходится без индексов справляться
Спасибо тебе, доброанон, за помощь. На твоём симуляторе действительно всё хорошо работает, значит сервер написан правильно.
Но мне по прежнему приходит какая-то хуйня. Данные выплёвываются по очереди, пачками по несколько десятков штук, с диким кэшированием, а от половины трекеров и вовсе не приходит нихуя.
Вся загвоздка в том, что трекеры устанавливал и настраивал не я. Этим занималась какая-то говноконтора и настраивала отправку данных с трекеров на свой говносервер. Для меня же они просто делают ретрансляцию данных со своего говносервера. Видимо, что ретрансируются они как-то криво.
Каким ещё рандомом? Какая разница, чем ты его заполнил? Покажи код, ёпту.
Ты делаешь что-то вроде
>[random.random() for i in range(100)]
и хочешь сравнить подряд идущие элементы во время создания списка, что ли?
Конечно покажу:
>никак
Нет, конечно, дерьма можно всякого разного наделать (https://repl.it/repls/AchingScentedBlesbok), но не нужно. Лучше просто в несколько строк распиши свою процедуру заполнения, всё равно этого не избежать.
Хотя если уж вот совсем хочется, то http://code.activestate.com/recipes/204297-the-secret-name-of-list-comprehensions/
Допустим, у меня есть задача:
1) Есть ограничение по времени 50 сек
2) Есть список url
На каждый из url нужно отослать по запросу. Если запрос не удался - нужно попытаться еще раз. И так пока не получу ответ 200 или не кончится время на ретраи (1)
Нужно чтобы запросы начала рассылаться синхронно.
Я подумывал о celery, но
- не создавать же на каждый запрос по воркеру (чтобы они обрабатывались одновременно)
- если будет 2 воркера - каждый сможет обрабатывать только
1 url и не закончит, пока не получит 200 или не выйдет время. Допустим есть 10 url, 2 воркера взяли первые 2 и у них выдает постоянно ошибку - остальные 8 так и не обработаются, пока не выйдет время.
Как это можно вообще реализовать?
А чу, в пистоне уже реализовали многопоточность?
На божественном сярпе это делается элементарно с LINQ asParallel
Почему ты пишишь, что треды и мультипоточность/парралелизм отличаются? Это же одно и то же - запуск парралельных подпроцессов.
>>> data = tuple(range(10))
>>> for first, second in zip(data[:-1], data[1:]):
print(first,second)
(0, 1)
(1, 2)
(2, 3)
(3, 4)
(4, 5)
(5, 6)
(6, 7)
(7, 8)
(8, 9)
Кстати да, это же zip, а не zip_longest
Ну а без 5 селери как быть?
А вообще это нормальная практика: у меня 20 запросов и я их синхронно выполняю?
На странице есть скрипт, в котором есть определенный параметр hd_src его значение нужно спарсить, но я не понимаю как.
Если я пишу ищу через string, то он возвращает мне весь скрипт тэг, а мне нужна только ссылка в hd_src, как это сделать можно?
Ладно, ща попробую какой-то slimit, спасибо.
imap вообще не работает. У меня оно зависает и всё. Ничего не происходит, не выводит в консоль list_item.
https://repl.it/repls/PointlessRawWasp
А все, причина проблемы идентифицирована, нужно всегда вызывать event.set в последнем треде.
Сколько костылей надо добавить чтобы обычный выход из мультитрединга инициировать. Нужно считать длину итерируемого массива, или брать последний элемент массива, добавлять его в переменную перед распараллеливанием, потом сравнивать...
хз зачем кому то понадобился is-boolean, чекнуть тип можно вполне себе без него
>А зачем тебе питон, нода же гораздо лучше для веба?
админка искаропки
да и синтаксис кошерный
А что, разница прям такая огромная? Просто codeacademy удобен весьма
анаконда ж сама через свой "менеджер" окружения создает, не?
Потому что в питоне они сильнее отличаются, из-за GIL'а. Т.е. параллельности с тредами в питоне ты не получишь, в любой момент времени работает будет работать только один. Что на IO-bound задачи, типа скачивания кучи файлов из интернета одновременно, особо негативно не влияет.
>Нужно считать длину итерируемого массива, или брать последний элемент массива, добавлять его в переменную перед распараллеливанием, потом сравнивать...
Нахуя? Тебе же нужно было раннее прерывание вроде. Так-то да, done.wait() ждёт установки эвента.
Сделай так тогда и забей хуй: https://repl.it/repls/MonstrousCrushingHummingbird будет либо до конца ждать, либо оборвётся на нужном тебе. Может я вовсе неправ был и не так уж и плохо закрывтаь пул из дочернего.
>в любой момент времени работает будет работать только один. Что на IO-bound задачи, типа скачивания кучи файлов из интернета одновременно, особо негативно не влияет.
Да, но не по этой причине, а потому что io задачи отпускают GIL на время ожидания.
urllib.request.urlretrieve(url, 'my_video.mp4')
иногда (пока что только на одном видео из 10 появляется такая ошибка
urllib.error.ContentTooShortError: <urlopen error retrieval incomplete: got only 524288 out of 3451385 bytes>
Из-за чего это может происходить?
Пытаюсь переменную QuerySet "posts" конструкцией " 'posts':posts " передать в шаблон.
При обновлении страницы локальном серверевыдаёт NameError at /
name 'posts' is not defined
Я не понимаю почему...
есть немного. Но дело тут куда тоньше, если прописывать posts в переменной(в самом начале) и так же ставить posts:posts, выйдет уже тогда ошибка с тем же содержанием, но уже не "posts" а выдаст "post"...
Но если наименовать переменную post а конструкцию posts:posts всё заработает... Вот как так скажи мне... Я сам голову уже часа 2 ломаю
>>1100269
>Но если наименовать переменную post а конструкцию posts:posts
fix
post:post
Короче, вот как должна выглядеть конструкция https://ideone.com/S7P8uw но выдаёт ошибку "Post" NameError at /
name 'post' is not defined
Но вот так она начинает работать, но ведь тогда post уже обращается к совершенно другой переменной... Это костыль или что?
https://ideone.com/pdwVUg
парсится блять страница, вывожу
print(soup)
пишу кнтрл ф (_5pbx userContent) находит, пишу
soup.find_all("div", "_5pbx userContent")
нихуя не находит, вот как так-то?
ещё писал
soup.find_all("div", class_="_5pbx userContent")
но результат тот же, что я блять делаю не так?
User.objects.filter(name__icontains='имя')
640x360, 0:25
Охуенно! Все работает.
Код
a = 2
f = open('zalupa.txt', 'w')
f.write("1")
f.close
f = open(kiss, 'r+w')
line = f.read()
b = a + int(line)
f.write(str(payment2))
f.close()
должно ведь записаться в файл и получиться 3(2+1 же), Двач, какого хуя он выдает 13, как удалить единицу перед тем как записывать?
быстрофикс
код
a = 2
f = open('zalupa.txt', 'w')
f.write("1")
f.close
f = open(kiss, 'r+w')
line = f.read()
b = a + int(line)
f.write(str(b))
f.close()
file.seek
усё, разобрался
Но, я не понимаю как мне проассоциировать этот файл с полем в модели, при создании нового экземпляра.
То есть, сейчас я пишу
media = MediaDownloader()
media.file = 'media/my_video.mp4'
Но при этом в админке его почему-то нельзя посмотреть, как те, которые я заливал через админку. Или это нормально и так и должно быть ?
Тебе питон должен показывать файл и строку, на который выпадает ошибка. В показанном тобой коде никакой переменной "post" нет, значит и ошибка где-то в другом месте выпадает.
>совершенно другой переменной
С чего бы это другой? Пиши хоть
>kkkkkkkkk = Post.objects....
>render(..., {'post': kkkkkkkkk })
Всё будет работать.
Вангую во вью код вроде
>if 'post' in context:
> post = context['post']
>do_something(post)
Что то, что это у меня запускается на локалке, немного различается интерфейс, а так, те же яйца, только в профиль.
Есть ли способ запустить это без браузера?
Похуй.
путон.
пифон.
Multilrocess. Плохо тут с этим.
Фитон
> Дигитале океан.
Минимальное пополнение через палку - 5$. А я хочу хостинг вырубать когда не нужен.
> Или хероку
Что за зверь?
ТЕБЯ ЕБЕТ ШТОЛИ?
БЛЯДЬ ПИЗДЕЦ У НАС В КОМПУТОРНОЙ АККАДЕМИИ ШАГ ЗА ТАКИЕ ВОПРОСЫ УБИВАЮТ НАХУЙ!!!!!
Ну же, выручай анон, прочитал вчера про
from django.core.files import File
Пишу теперь как-то вот так
local_file = open('media/files/my_video.mp4')
djangofile = File(local_file)
media.file = djangofile
media.save()
Теперь выдает такое, вообще хуй знает куда смотреть
UnicodeDecodeError at /upload/
'utf-8' codec can't decode byte 0x8d in position 34: invalid start byte
консоль это интерактивчик больше
а жупитер juniper это для написал кусок кода - отрисовал график, там мельчить не имеет смысла.
Написал бы хоть, что в ipython е можно тупо взять запусть готовый файл со скриптом, обратившись к интерпретатору
В общем, к Питону ещё не прикасался. Ни разу. Сейчас хочу заняться только с практической целью: визуализация результатов экспериметов, красивые 3D-графики, диграммы. +расчёты.
На компах работодателя заметил "NumPy", соотвесна, буду работать только в связи с SciPy (я как понял, NumPy - подмножество SciPy).
Я как понял, мне нужна Anaconda как IDE+либы и УкусПитона как гайд?
Нужно минимум теории и максимум выхлопа, ибо по сути хлам, я лучше знания в C расширю.
внатуре пидор, написал бы хоть ну...
Как избавится от всего этого?
И по верстке один вопрос простой.
На странице есть картинки и видео, как разместить их слева и справа соответственно.
Добавлял див с class="col-md-6" на каждую, но тогда они друг на друга наезжают.
Для визуализации графиков, множеств точек и прочего тебе надо обратиться к библиотеке matplotlib. Наверняка она уже даже установлена по дефолту, туториолав - куча, визуализация возможна в т.ч. трёхмерных хреновин. Делается всё просто, что-то в стиле:
>from matplotlb import pyplot as plt
>xx = range(100)
>yy = [i*i for i in xx]
>plt.plot(xx, yy)
>plt.show()
>>1100593
Как я понимаю, нужно удалить все теги? Для решения такой проблемы я бы посоветовал обратиться к регулярным выражениям. В пистоне это библиотека re.
По поводу вёрстки - col-md-6 вроде бы имеет силу только при каких-то конкретных размерах экрана (из-за наличия "md", так прописаны метатеги по размеру). Может быть, размер окна такой, что этот тег не применяется?
бля, как же я ебал в рот эти регулярки
md -medium вроде 767 px, да и у меня 100% больше, к тому, же это значит, что при меньшем разрешении они просто начнут друг под другом стакаться (вроде бы)
По идее, тебе надо осуществить замену регулярного выражения <[^<>]+> на пустую строку. По идее, оно как раз соответствует тегам.
То, что именно наезжают - странно. Мне кажется, дело не в конкретно этом теге. Может, позиционирование у родителя не то стоит или что-то в таком роде.
>>1100606
Укус? Там вообще нихрена шарить не надо на самом деле. Если с питоном вообще дел не имел, то сначала надо разобраться с чтением из файла и работой с базовыми переменными/строками, но это тривиально. Если есть файл, содержащий, например, два столбца чисел, которые надо отобразить на графике, это это просто:
>xx, yy = [], []
>f = open('data.txt', 'r')
>for line in f:
> xx.append(float(line.split(' ')[0])
> yy.append(float(line.split(' ')[1])
>f.close()
Всё считали.
Ну вообще да, сейчас попробую, спасибо.
Да, правда, так и было, но всё равно говно получается, как же кумарит эта верстка
Нашел только кучу мертвых библиотек на второй питон.
Есть один вопрос, который меня мучает уже пару дней:
Если я ввожу в
ftp = FTP('не_работающий_айпи')
то время ожидания 21 секунда.
Как меня сделать так, что бы время ожидания было 8 секунд?
Я скрипт буду юзать не только на своем компе.
Как мне прописать таймлитимит для дока фтп, что бы лимит был у любого компа?
Есть два csv файла, допустим, A и B. В файле А есть две колонки соответствующих значений, в B - большая таблица, в которой заголовком идут значения первой колонки из A. Мне нужно заменить значения хедера B на соответствующие значения второй колонки из A. Тупо заменить всеми значениями не получится, потому что в хедере некоторые пропущены и они идут не по порядку. Как это в pandas каком-нибудь сделать?
Если файлы не охуеть какие огромные, то так должно сработать:
>caption_b = ... # Заголовок файла B, который надо поменять
>file_a = open('A', 'r') # Открываем файл А
>data_a = {}
>for line in file_a:
> a, b = line.split(' ')
> data_a[a] = b
>caption_b = caption_b.split(' ')
>caption_b = [data_a for i in caption_b]
>caption_b = ' '.join(caption_b)
Если дохуя огромные, то data_a не надо по-тупому заполнять всеми значениями, а более аккуратно искать в цикле значения только для нужных.
Как?
a = 'Fri, 01 Dec 2017 01:21:36 GMT'
date = time.strptime(a, "%a, %d %b %Y %H:%M:%S")
Всё понятно, кроме GMT. что для него подставлять?
>как через пифон ффмпегом пользоваться
os.system('ffmpeg -ss 01:23:45 -i input -vframes 1 -q:v 2 output.jpg')
>>1100837
>time.strptime
%Z же. https://docs.python.org/3/library/time.html#time.strptime
Только велика вероятность, что с наличием таймзон проблемы будут.
Pendulum попробуй
https://pastebin.com/C76EPaLn
двощ не позволяет запостить напрямую
Строка выглядит прибилизительно так
<img class="_46-i img" src="<тут всё что нужно спарсить> < style="left:-13px;>
Проблема в том, что дальше идёт дохуя этих style="left и оно парсит получается их все, можно как-то сделать чтобы парсило до первой встретившейся, или что-то такое? Или как такое вообще парсить?
Вот что я пишу, но это парсит не только мне нужную строку, а вообще всё что есть до последнего style="left.
pic2 = re.compile('(<img class="_46-i img" src=")(.*)(?=" style="left)')
>Как мне прописать таймлитимит для дока фтп, что бы лимит был у любого компа?
аллоу, доки = документация. Тебе посоветовали почитать документацию используемой тобой фтп-библиотеки, в которой будет сказано, как установить таймаут при вызове (если можно). На других компах, испольующих твой скрипт, очевидно, должна быть установлена эта же библиотека, чтобы оно работало.
Как через BeautifulSoup парсить вложенные теги, потому что у меня чот нихуя не парсится?
>Как через BeautifulSoup парсить вложенные теги,
Просто.
> у меня чот нихуя не парсится?
Хуева, чо.
Поставил кряк из шапки, ситуация не изменилась
Наркоман.
Или может вы видели на гитхабе живые распиздато написанные приложухи на джанго, такие, что бы полистать да чего хорошего набраться?
Да хоть туториалы на ютубе, один хуй, абы полезные
This.
cbv всегда
Есть шахматная доска. Надо определить, правильно ли ходит конь.
При отладке почему-то получается, что второй if , судя по всему, неверный и проверка следующего условия не выполняется.
https://ideone.com/D9f2lQ
Также реквестирую советы по оптимизации этого говнокода. Заранее спасибо
> почему-то получается
Вводишь строку, сравниваешь с числами.
> по оптимизации
Тут просто дохуя всего. Ты делаешь всё как говно.
Ну я вот на маке работаю и всем рекомендую.
Но вообще даже линукс будет по-удобнее, чем пороться в сраку с pip и всякими поделками для numpy под виндой
Хипсторов бояться - в интернеты не выходить!
А штука прикольная - там неплохо расписаны модули для взаимодействия с ios: все эти share button > run script / виджеты / даже простенькие UI - компоненты есть
Ну а внутри обычный питон питоном, третей версии, шелл и pip искаробки не доступны ввиду шизоидности подходов к безопасности appstore, но валом туториалов как запилить их самому и пользовать
К слову под иос так же есть бета Juno, который просмотровщик онлайновых Jupiter Notebooks. На сайте приложухи автор всем подряд раздает доступ к этой бете.
То что пип надо руками прописывать в path и конфликты разрешпть то еще ничего. Гораздо веселее когда нет бинарей под винду. Ipythpn последний, например.
Прыщеговно ебаное потомушта. А в юпитере дополнение работает?
Я ебут что ли? Если удобно - пользуйся.
> Ну хоть что-то?
> m1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] #задаём оси
ХУЁСИ! Просто xs, ys = "abcdefgh", "012345678"
Разбей всё на функции:
конвертация в декартовы координаты
проверка что точка на доске
* проверка что от одной точки до другой можно дойти буквой ГХЭ.
на ideone можно input заполнить чтобы все увидели как твоя поделка падает
во-первых добра тебе анончик и успехов в учебе
во-вторых
в функции печатать ничего не надо, поднимай исключения
там, где функцию вызваешь, их обрабатывай
во-третьих, преобразуй координаты в числа, так будет легче сравнивать их и валидировать
в-четвертых успехов и добра
хуйня уровня ПРЕВОЗМОГАЙ! ПИШИ ГОВНО ДАЖЕ ЕСЛИ НИХУЯ КРОМЕ ГОВНА НЕ МОЖЕШЬ! ОТОЖМИСЬ 100500 РАЗ!!!
на западе жрут потому что скряги и эта говнокнига беслпатная, в РФ жрать такое ваще не по масти, тем более что пятая часть книги это визг пейсателя дескать го смотреть мои видеокурсы платые где я распиздато гнусавым голосом пержа и попивая чай чет пизжу более конкретное чем эта пидорская книжная мотивация
наверни Think Python, короч
ага, почти целая книга туда-сюда применимых к жизни приложений "степ бай степ", что называется
Спасибо ещё раз, анон.
2:18: E225 missing whitespace around operator
10:37: E231 missing whitespace after ','
12:1: E302 expected 2 blank lines, found 1
12:27: E231 missing whitespace after ','
13:30: E225 missing whitespace around operator
14:38: E225 missing whitespace around operator
15:30: E225 missing whitespace around operator
16:38: E225 missing whitespace around operator
19:1: E302 expected 2 blank lines, found 1
22:30: E231 missing whitespace after ','
24:1: E305 expected 2 blank lines after class or function definition, found 1
Поставил пайлинтер в вскоде, так он в каждой строчке ссыт мне в лицо. Думаешь стоит прислушиваться к нему?
мимо другой анон
Глянул оглавление, там совсем для нюфань. Я же в синтаксисе питона шарю, да в программировании в целом. Похоже я не найду нужной книги. Придется просто свои прожекты мутить и гуглить документацию для доков.
Как это обычно решают?
Вообще где можно почитать/посмотреть бест практикс по импортам, видел в некоторых проектах целые файлы где только импорты а может это было на руби, я не помню.
>Как учить это говно?
Ты так пишешь будто это сильно дохуя.
numpy осваивается за 1-2 статьи в инете, pandas сейм шит, если тебе не нужен маняэксель на питоне, тогда еще пару статей придется читануть.
scipy и scikit-learn просто набор алгоритмов. Если ты читаешь про какую-нибудь регрессию или манядеревья, то потом не идешь писать свой велосипед, а просто вызываешь функцию "сделать заебись" из scikit.
До тензорфлоу руки еще не дошли, но вангую что там тоже самое трудное это import tensorflow as tf
Конечно, блядь, нестандартное говно читать-то противно, будто крестьянин до клавиатуры добрался.
Сам перекати, ёпту.
Хуй знает о чем ты, пишу на винде, хотя есть прыщи и мак в мультибуте. просто потому что оброс всяким говном на винде, которое лень ставить на другие системы
Ни одного бага еще не ловил, единственное ограничение это то что пути иногда нужно руками прописывать, например пишу в консольке python -m pip install вместо pip install т.к. лень было переменные среды пердолить.
Не скажу за веб, но всякая саентифик параша работает как часы. Разве что один раз caffe нужно было вручную собирать из другой ветки
Не с моим жестким на 120гб
Ну, я просто смотрю на подобные http://pandas.pydata.org/pandas-docs/version/0.20/pandas.pdf документы, и руки опускаются.
Не ссы, описание стандартной библиотеки питона тоже больше тыщи страниц, но это же не мешает тебе юзать его не зная и 5% того, что там есть.
Тем более там с 1000 страницы начинается api reference, а до 400 страницы вспомогательный стафф типа истории версий, как устанавливать и контрибьютить.
я имел в виду в scrapy как и в джанге, все включено
создал проект, накидал xpath выражений и вперед.
рейтлимит, редиректы, все автоматом
Если в джанго надо парсить, то или синхронно при помощи чего-нибудь простого (requests + lxml) или асинхронно через Celery и ту же Scrapy.
xpath выражения звучат заманчиво, но с другой стороны остальное нахуй не надо.
Ладно, почитаю что там у них в доках, спасибо.
Например, дана последовательность:
[(1,2), (2,4), (5,4), (7,4), (3,8), (8,10)]
Тогда вывод будет таким:
(1,2), (2,4), (5,4), (7,4)
(3,8), (8,10)
Но цепочки могут идти и не последовательно.
Анончик, молю, спаси, нужно для реализации скрипта
>Поясните за scrappy, когда надо его юзать, а когда чего попроще, в чём его преимущества перед BeutifullSoup, например?
Скрапи надо юзать когда у тебя вагон сайтенгов одинаковых и их надо регулярно парсить.
Написал парсер, а в скрапи все есть для запуска и хранения результатов.
Скрапи использует beautiful soup тоже. Но это не точно.
Если тебе надо какую-то простую хрень спарсить в джанге, юзай Requests и beautiful soup
да вот их и юзаю, просто с фейсбука что-то так хуево всё парсится, что захотелось чего-то другого попробовать.
https://repl.it/repls/StarchyFearlessLorikeet
Все, сделал сам.
Бумп
scrapy вонючие фекалии
Это копия, сохраненная 19 декабря 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.