Сохранен 514
https://2ch.hk/pr/res/1690482.html
Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Питон тред №88 /python/

 Аноним 16/05/20 Суб 18:05:12 #1 №1690482 
1a8064beddc2428ea3a95d8f32390d86.png
pylogo.jpeg
B3ZFCeaIgAI2jHd.jpg
Тред, посвящённый языку программирования Питон, #88

Предыдущий: >>1676587 (OP)
Литература:
Автоматизация рутинных задач ч.2 - https://anonymousfiles.io/3CBCoy1o/ <-- тут только одна книжка. Кто может, залейте её на ЯД к остальным.
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem

Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться

#######################################

ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года

Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.

— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х

— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html

— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0

— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4

— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.

— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)

— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется

— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.

— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.

ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.

текущая версия шапки: https://dumpz.org/aaNRDPe2xXh2
Аноним 16/05/20 Суб 18:17:36 #2 №1690518 
https://2ch.hk/pr/res/1676587.html#1690162
Аноним 16/05/20 Суб 18:18:16 #3 №1690520 
T.png
>>1690495 →

>в сообщении присутствует слово из спам листа




Аноним 16/05/20 Суб 18:20:25 #4 №1690523 
Image 556.png
Image 557.png
Так какого хуя не работает то?
Аноним 16/05/20 Суб 18:24:16 #5 №1690527 
>>1690520
Спасибо, анон.
Аноним 16/05/20 Суб 18:24:35 #6 №1690528 
spam list.png
>>1690471 →

Аноним 16/05/20 Суб 18:25:26 #7 №1690530 
>>1690523
Это метод класса, а не функция. Можно было сто раз разобраться, пока ты тут спамишь.
https://github.com/TwitchIO/TwitchIO/blob/master/twitchio/client.py#L41
Аноним 16/05/20 Суб 18:26:45 #8 №1690531 
>>1690528
Добра
Аноним 16/05/20 Суб 18:29:32 #9 №1690535 
изображение.png
Парни, кто в веб что-то шарит:
Пилил приложуху на Джанго, добавил для интерактивности js (ajax). В конце удачного post-запроса мой View возвращает фронту вот это:

return HttpResponse(
____json.dumps(response_data),
____content_type="application/json"
)

И я соответственно вижу на экране вот такую херню с пикрила. Вопрос: с хрена ли? Юзер не хочет смотреть на мой json-объект, он хочет чтобы его обработали и показали ему адекватный html. Как фиксить?
Аноним 16/05/20 Суб 18:32:27 #10 №1690541 
>>1690530
Я не могу разобраться как его использовать. К чему этот метод .get_chatters относится? В документации есть только упоминание get_chatters и все.

С .timeout я разобрался что он работает с ctx.channel как ctx.channel.timeout.
Аноним 16/05/20 Суб 18:36:24 #11 №1690553 
>>1690541
Там всё построено на ООП. Почитай про ООП в пиотне и не еби мозг.
Аноним 16/05/20 Суб 19:08:27 #12 №1690639 
>>1690535
Ничего не понял. Ты может просто по запрос оформляешь как post-отправку формы, а на фоновый процесс?

У тебя html должен отправлять в фоне запрос, получать ответ и запускать скрипт, который ответ будет интерпретировать.
Аноним 16/05/20 Суб 19:29:28 #13 №1690684 
подкиньте линк на ключики для PyCharm 2020
Аноним 16/05/20 Суб 19:35:21 #14 №1690694 
>>1690684
Зачем, если Community бесплатна?
Аноним 16/05/20 Суб 19:39:09 #15 №1690698 
>>1690553
Читал, все равно не понимаю как в этом проекте это работает.
Аноним 16/05/20 Суб 19:39:22 #16 №1690699 
>>1690694
Там джанга есть. Даже не разбирался как в community дебажить. Тут даж в темплейте точку остановки поставил и смотри что хочешь.
Аноним 16/05/20 Суб 19:57:10 #17 №1690742 
>>1690698
Читай ещё.
Аноним 16/05/20 Суб 20:03:56 #18 №1690764 
>>1690639
Неа, вот ajax-запрос:
https://ideone.com/ydNrMV
Страница не рефрешится и данные сохраняются в БД на беке как и надо. Проблемы видны на фронте
Аноним 16/05/20 Суб 21:01:49 #19 №1690946 
>>1690742
Можешь пример показать как это делается?
Аноним 16/05/20 Суб 21:39:14 #20 №1691013 
>>1690946
Смотрим дальше и видим что основной класс Bot наследуется от этого самого Client.
https://github.com/TwitchIO/TwitchIO/blob/master/twitchio/ext/commands/bot.py#L47
И тогда вспоминаем прочитанное.
Аноним 16/05/20 Суб 21:51:47 #21 №1691020 
Подскажите насчет джанго.

Создал модель A и B
переходя по ссылке в модель A на сайте выводится информация различная и ссылки на переход в модель B
127.0..../A/B - адрес
path(r"^(?P<slug:slug>/<slug:url>)/$", views.ChapterDetailView.as_view())
и при переходе по адресу 127.0..../A/B получаю ошибку 404. что не так?
Аноним 16/05/20 Суб 21:56:57 #22 №1691028 
>>1691020
Регулярка неправильная.
Судя по документации, надо (?P<first>\w+)
Т.е. ?P<name>pattern.
Не знаю, зачем там :, может и надо
Т.е. тебе надо примерно так
^(?P<slug:slug>.+?)/(?P<slug:url>.+?)/$
Аноним 16/05/20 Суб 22:01:50 #23 №1691033 
>>1691028
>^(?P<slug:slug>.+?)/(?P<slug:url>.+?)/$

тоже самое, "GET /2ch/1/ HTTP/1.1" 404 2621
Аноним 16/05/20 Суб 22:02:31 #24 №1691035 

>>1691033
А если открыть /2ch/, то все ок и выводятся дальше ссылки на переход в /2ch/1 итд
Аноним 16/05/20 Суб 22:03:02 #25 №1691036 
>>1691028
еще вот такое пишется WARNINGS:
?: (2_0.W001) Your URL pattern '^(?P<slug:slug>.+?)/(?P<slug:url>.+?)/$' has a route that contains '(?P<', begins with a '^', or ends with a '$'. This was likely an oversight when migrating to django.urls.path().
Аноним 16/05/20 Суб 22:03:33 #26 №1691037 
>>1691020
> 127.0..../A/B
> ^(?P<slug:slug>/<slug:url>)/$
/ в конце?
Аноним 16/05/20 Суб 22:04:05 #27 №1691038 
>>1691037
да
Аноним 16/05/20 Суб 22:06:33 #28 №1691041 
>>1691036
В сосноли ругается на эти :, читай как надо.
Аноним 16/05/20 Суб 22:08:22 #29 №1691043 
>>1691041
да, но ошибка 404 не из-за этого. Это предупреждение - рекомендация, чтобы исправить код, не быть обезьяной
Аноним 16/05/20 Суб 22:10:49 #30 №1691045 
>>1691043
https://ideone.com/Jlvhpn
Аноним 16/05/20 Суб 22:12:21 #31 №1691049 
>>1691045
чет херня какая-то. и что делать?
Аноним 16/05/20 Суб 22:13:02 #32 №1691050 
>>1691049
Надо документацию на эту функию, зачем там эти именованые группы.
Аноним 16/05/20 Суб 22:16:45 #33 №1691053 
>>1691050
чет хуйня какая-то, стак овер говорит, что так и должно быть. А я одни ошибки в ебало получаю. Весь день эту хуиту решаю, этот ебучий /2ch/1/
Аноним 16/05/20 Суб 22:22:14 #34 №1691058 
>>1691053
Я погуглил и там же всё ясно написано.
https://docs.djangoproject.com/en/3.0/topics/http/urls/#example
https://docs.djangoproject.com/en/3.0/topics/http/urls/#path-converters
https://docs.djangoproject.com/en/3.0/topics/http/urls/#using-regular-expressions
А ты понамешал хуйни с разных методов и ждешь что оно заработает.
Аноним 16/05/20 Суб 22:23:57 #35 №1691060 
>>1691058
то есть чтобы программировать на питоне надо что-то читать? нельзя просто брутфорсом перебирать исходники?
Аноним 16/05/20 Суб 22:26:10 #36 №1691063 
>>1691058
ТАК БЛЯДЬ В ЧЕМ ОШИБКА, Я НИХУЯ НЕ ВИЖУ
Аноним 16/05/20 Суб 22:30:55 #37 №1691067 
>>1691063
Приходи когда я буду осваивать джанго, просто так не интересно.
Аноним 16/05/20 Суб 22:34:45 #38 №1691071 
>>1691067
скину 50р
Аноним 16/05/20 Суб 22:36:19 #39 №1691073 
>>1691071
Ну может кто и захочет, лол.
Аноним 16/05/20 Суб 22:57:38 #40 №1691104 
>>1691036
если 3я джанга, то не надо регулярки в path() писать
Аноним 16/05/20 Суб 23:00:29 #41 №1691108 
>>1691104
re_path?
Аноним 16/05/20 Суб 23:13:01 #42 №1691117 
>>1691108
Документацию почитай, там регулярки уже со 2-й джанги не используеются
просто path('<slug:slug>/<slug:url>'/SomeShit.as_view())
Аноним 17/05/20 Вск 01:17:53 #43 №1691209 
>>1691117
Page not found (404)
Not Found: /2ch/1/
[17/May/2020 01:12:57] "GET /2ch/1/ HTTP/1.1" 404 1797
Аноним 17/05/20 Вск 02:09:55 #44 №1691225 
Здарова, постоянно слышу про какие-то скрипты на питоне, про автоматизацию. Вот у меня есть программка конвертации видео. Она должна предоставлять какое-то API или питон ее взломает и сам заберет себе все нужные методы? Не спал 24 часа поэтому пишу хуйню, но ответ нужен срочно
Аноним 17/05/20 Вск 02:11:42 #45 №1691226 
>>1691225
Нужно апи
Аноним 17/05/20 Вск 02:12:58 #46 №1691227 
>>1691225
Хотя можно с помощью библиотеки по иметации кликов все заебенить, но заебешься и программа должна быть всегда в координатах нужных, да мышкой не подвигаешь сам, когда она работает
Аноним 17/05/20 Вск 02:13:18 #47 №1691228 
>>1691226
А если нет такого, что делать?
Аноним 17/05/20 Вск 02:14:10 #48 №1691229 
>>1691227
Ну конечно, мышкой. Сервак будет сидеть и кликать
Аноним 17/05/20 Вск 03:35:29 #49 №1691249 
>>1691229
А потом петон взломает сервак
Аноним 17/05/20 Вск 03:46:15 #50 №1691251 
>>1691249
Ну и нахрен ваш петон тогда?
Аноним 17/05/20 Вск 08:07:35 #51 №1691284 
>>1691225
А что за программа? Если программа работает через консоль, каковых большинство (ffmpeg, mencoder), то можно сделать обвязку на питоне и спокойно работать. Если чисто графическая прога, то скорее никак, или очень сложно.

Для ffmpeg уже такие инструмены есть готовые.
Аноним 17/05/20 Вск 09:58:21 #52 №1691331 
Полоумный сука язык
<re.Match object; span=(0, 16), match='255.255.255.0/24'>
>AttributeError: 're.Match' object has no attribute 'match'
Аноним 17/05/20 Вск 10:01:13 #53 №1691335 
>>1691331
Уже час ебусь с рабочим регэкспом, то одно нахуй не работает, то другое
Аноним 17/05/20 Вск 10:11:54 #54 №1691341 
>>1691335
В notepad++ проще блядь фильтрануть, чем пистоном
Аноним 17/05/20 Вск 10:13:13 #55 №1691342 
finditer возвращает только один матч, findall нахуй вообще не работает. least surprise principle блядь
Аноним 17/05/20 Вск 10:17:17 #56 №1691343 
>>1691342
теперь работает, но матчи хуй достанешь
Аноним 17/05/20 Вск 10:17:34 #57 №1691344 
Ебана как (и зачем) работает строковый метод translate? Читал мануал, но нихера не ясно. Вот пример кода:

translation = {97: None, 98: None, 99: 105}
string = "abcdef"
print("Original string:", string)
# translate string
print("Translated string:", string.translate(translation))

Что он куда "перевел"? Логично было бы если б я давал ему словарь по типу {"a": "X", "b": "Y"} и он замещал бы ключи в оригинальной строке новыми значениями. Но эта срань работает максимально нелогично
Аноним 17/05/20 Вск 10:27:32 #58 №1691350 
>>1691344
Это никсовый tr, реализованный несколько через жопу. https://en.wikipedia.org/wiki/Tr_(Unix)
Список одних символов меняется на другие или удаляется.
Аноним 17/05/20 Вск 10:31:10 #59 №1691353 
>>1691350
Формировать словари можно, кстати.
a = 'hui'
b = a.maketrans('hui','abc')
print(a.translate(b))
Аноним 17/05/20 Вск 14:20:00 #60 №1691595 
Screenshot20200517141140.png
Это из-за ебучего умлаута, да? Почему так и что с этим делать, кроме как специально реплейсить его в названии?
Ubuntu 20.14, если что. Сурс кидать не буду, потому что в нём кроме этого всё нормально.
Аноним 17/05/20 Вск 14:21:28 #61 №1691596 
>>1691595
*20.04, лол.
Аноним 17/05/20 Вск 14:21:56 #62 №1691597 
>>1691595
Вряд ли. Ну попробуй без него для уверенности.
Аноним 17/05/20 Вск 14:33:05 #63 №1691615 
Image 558.png
>>1691013
Читаю про классы, разбираю пример. Поясните пару вопросов.

1. В чем смысл конструкции self.name = name? Почему нельзя сразу использовать name внутри класса?
2. В чем смысл данной строчки SchoolMember.__init__(self, name, age) в подклассе?
Аноним 17/05/20 Вск 14:45:00 #64 №1691641 
>>1691597
Да, проблема в точке в конце имени папки, судя по всему.
Аноним 17/05/20 Вск 15:28:38 #65 №1691688 
>>1691615
>Почему нельзя сразу использовать name внутри класса
Потому что ты используешь name не "внутри класса" а как локальную переменную внутри одного из методов класса

self это ссылка на сам объект, всегда передается как 1й аргумент в методе (если это не classmethod или staticmethod канешн - там другие плюшки). Поэтому написав del self внутри одного из методов ты просто удалишь эту ссылку, но не сам объект
Аноним 17/05/20 Вск 15:34:15 #66 №1691694 
>>1691688
А как гарантированно удалить объект?.. Вот есть у меня функция

def f(obj):
____del obj

Хочу чтобы она 100% удаляла этот переданный объект (все ссылки на него). Как такое сделать? чую что надо для этого написать свой класс и каким-то образом автоматически сохранять все ссылки на экземпляр внутри приватной переменной в этом экземпляре
Аноним 17/05/20 Вск 15:40:56 #67 №1691702 
image.png
Подсобите новичку. Вижу, что разгадка на ладони и я ее проекрасно знаю, но додуматься не могу.

https://ideone.com/ayCoOZ
Аноним 17/05/20 Вск 15:47:22 #68 №1691714 
>>1691688
А по поводу второго вопроса?
Аноним 17/05/20 Вск 15:49:27 #69 №1691717 
>>1691714
Вызов родительского класса. Но сделано не как у белых людей. Белые люди юзают super().__init__
Аноним 17/05/20 Вск 15:54:26 #70 №1691725 
>>1691717
>Вызов родительского класса
А для чего его вызывать?
Аноним 17/05/20 Вск 15:58:09 #71 №1691729 
>>1691702
Идея такая.
Создай вторую структуру, лучше через set, в которой ты будешь хранить имена в нижнем регистре.
Сначала её надо инициализировать
lowered_names = set(x.lower for x in current_names)

потом в цикле делаешь проверку:
if x.lower() in lowered_names:
____lowered_names.add(x.lower)
____current_names.append(x)
Аноним 17/05/20 Вск 16:03:36 #72 №1691741 
>>1691694
В таком варианте никак, это невозможно.

Вот представь, что где-то этот объект хранится в словаре
d['obj'] = obj

Что должно происходить со словарём? А если он хранится как элемент списка?

В объекте можно предусмотреть что-то вроде деструктора. Ты его вызываешь, и объект переходит в блокированное состояние, все его методы переписываются, например. Но это немного извращение.
Аноним 17/05/20 Вск 17:35:05 #73 №1691866 
Дайте инфу по CPython. Какой функционал он предоставляет и какова его сфера влияния. Насколько он урезанный, стоит ли прежде прочитать хотя бы 1 книгу по С чи не? Ну и наконец - стоит ли вкатывать в него в 2020?
Аноним 17/05/20 Вск 17:39:31 #74 №1691874 
Как сделать перевод транслита? Одиночные буквы переводить легко, но как переводить в букву, которая состоит из 2 букв? ( например ja > я или ch - ч).

Получается надо из исходного сообщения надо брать по 2 символа за раз и если эти 2 буквы одна из комбинаций - переводить ее согласно комбинации, иначе переводить по 1 букве, так?

Для начала - как брать из строки по 2 символа за раз?
Аноним 17/05/20 Вск 17:45:06 #75 №1691891 
>>1691866
> Дайте инфу по CPython. Какой функционал он предоставляет и какова его сфера влияния.
когда говорят про пайтон имеют в виду cpython в 99% случаев, это дефолтная реализация языка. Или ты про Cython хотел спросить?
Аноним 17/05/20 Вск 17:50:50 #76 №1691904 
>>1691891
Да, в точку. Именно Cython я и имел в виду.
Аноним 17/05/20 Вск 17:56:38 #77 №1691922 
>>1691874
Делешь словари с заменами и в цикле прогоняешь. Сначала длинные, потом короткие.
Аноним 17/05/20 Вск 18:08:59 #78 №1691938 
>>1691922
Я тебя не понял. Как можно брать по 2 символа из строки?
Аноним 17/05/20 Вск 18:36:57 #79 №1691972 
>>1691938
Как вариант, можно пользоваться методом .startswith
"chto-to".startswith('ch')
но всё-таки как-то криво это немного.

Аноним 17/05/20 Вск 18:41:49 #80 №1691979 
>>1691904
Мне кажется, большого смысла осваивать нет, если у тебя задача только специфичная не стоит. Лучше инвестировать время во что-то ещё.
Аноним 17/05/20 Вск 18:42:32 #81 №1691982 
>>1691938
Их не нужно брать, их нужно заменять.
p ={'aa': 'bb', 'cc':'dd'}
for m,r in p.items():
__s.replace(m,r)
Аноним 17/05/20 Вск 18:45:24 #82 №1691987 
Image 647.png
Image 648.png
>>1691972
>>1691982
Пока вы отвечали я сделал вот так. Как вам такой вариант? Вроде работает.
Аноним 17/05/20 Вск 18:45:26 #83 №1691988 
>>1691866
И да, книгу по Си прочесть в любом случае придётся, иначе такой разговор вообще лишён смысла. Причём полноценно так на Си попрактиковаться.
Аноним 17/05/20 Вск 18:48:34 #84 №1691997 
1.png
>>1691702
Аноним 17/05/20 Вск 18:50:31 #85 №1692002 
>>1691987
Ты бы код расшарил.
Попробуй слово "podzhopnik", по-моему твоё решение свалится, если на нечётной позиции будет двойная буква находиться. И вообще, перегружено очень...

Сейчас сделаю быстренько
Аноним 17/05/20 Вск 18:53:39 #86 №1692005 
Image 649.png
>>1692002
Чет я туплю. Заменил вывод по 1 букве на создание строки. Но на выходе я получаю список из одиночных букв. Что я не так делаю?

>Попробуй слово
У меня пока не полный словарь, я его до буквы Х составил.
Аноним 17/05/20 Вск 18:57:17 #87 №1692015 
>>1692002
На словах с четным количеством букв фейлилось все. Поменял условие на while i < end: вместо while i <= end: b заработало. Твое слово перевело как:
podzhopnik = ['п', 'о', 'д', 'з', 'х', 'о', 'п', 'н', 'и', 'к']

Ну почти.
Аноним 17/05/20 Вск 19:11:51 #88 №1692043 
>>1692005
Сам додумался как складывать строки, можно не отвечать.
Аноним 17/05/20 Вск 19:22:25 #89 №1692070 
translate.png
>>1692015
Вот такой подход может быть. Тоже говнокод, на самом деле, чисто демонстрация идеи.

Задачка интересная, особенно если её проработь глубже. Например, идеально было бы, чтобы замены работали так:
"Chto eto ne zhopa, a bolshaja ZHOPA"
"Что ето не жопа, а болшая ЖОПА"

Вот как минимум эта история с корректной заменой по регистрам. Совсем класс, если дополнительно словари для слов с "э" прикрутить. В общем тут есть, где развернуться.

Аноним 17/05/20 Вск 19:42:33 #90 №1692104 
Доброго дня, аноны. Занимаюсь поиском лиц на фото, встал такой вопрос. Суть такова: имеем фото с искомым лицом и много неизвестных фото с лицами, где и нужно найти цель. Создаю базу хешей лиц. Собственно вопрос: так как одно и то же лицо может давать различный хеш некоторым допустимым расстоянием (допустим 5), то как быстро найти наиболее ближайший к искомому? По сути это уже не хеш таблица, а поиск какой-то.
Попрошу не нападать, я еще не волшебник, а только учусь.
Каким, в принципе, способом лучше хранить эти хеши и как находить нужный?
Аноним 17/05/20 Вск 19:56:44 #91 №1692122 
Мне нужно загружать картинки (около сотни штук на хард драйве) в Google Images или в Яндекс Картинки (поебать). Как это сделать?..

Нашел только способ устраивать обычный поиск изображений:
GET https://serpapi.com/search?q=Apple&tbm=isch&ijn=0

Но мне нужно не это. Надо загрузить саму картинку и собрать результаты поиска:
https://www.google.com/imghp?hl=ru
Аноним 17/05/20 Вск 19:57:51 #92 №1692123 
>>1692070
Скинь эти словарики текстом, чтобы не набирать.
Аноним 17/05/20 Вск 20:06:20 #93 №1692134 
>>1691874
>>1692070
Прикол в том, что это буквально недавно обсуждали: >>1691344
Аноним 17/05/20 Вск 20:12:53 #94 №1692148 
>>1692134
Это работает только для одиночных символов.
Аноним 17/05/20 Вск 20:17:32 #95 №1692159 
image.png
>>1690482 (OP)
Вот есть у меня список url, надо периодически к каждому из них отправить get-запрос а потом собрать полученные данные. Очевидно же, что стоит использовать асинхронки (так как "заспамить" запросами и получить бан не выйдет, все url обращаются к разным ресурсам)
Только вот я не шарю в asyncio, как это мутить?
Аноним 17/05/20 Вск 20:17:42 #96 №1692161 
Image 653.png
Image 661.png
Image 668.png
>>1692070
Я сделал вот так. Решил брать по 3 символа за раз. Работает нормально. Но если длина четная - выдает ошибку ( пик 3)

Как мне свой код пофиксить? Уже первый час ночи, плохо соображаю.
Аноним 17/05/20 Вск 20:54:23 #97 №1692223 
>>1692161
>Но если длина четная - выдает ошибку
Напиши следующий код в консоли а потом глянь, что он выведет:

string = '1234'
print(string[77:112])

неа, ошибки не будет
Аноним 17/05/20 Вск 21:49:07 #98 №1692271 
>>1692159
async get_data(url)

await def get_data(url):
____requests.get(url)
Понятно?
Аноним 17/05/20 Вск 21:51:11 #99 №1692272 
>>1692271
ты хотел подъебнуть чувака а сам все нахуй перепутал

await get_data(url)

async def get_data
Аноним 17/05/20 Вск 21:53:05 #100 №1692274 
yoda.jpg
>>1692272
Уже года два не писал асинхронных приложений, немного обосрался.
Аноним 17/05/20 Вск 21:54:07 #101 №1692277 
>>1692271
И как это сделать для множества url? Через цикл for? (сдается мне что эта хрень блокирующая)
Через треды можно было б делать через ThreadPoolExecutor, но мультитрединг - зашквар
Аноним 17/05/20 Вск 21:55:47 #102 №1692279 
>>1692277
С чего блокирующая?
Делай запрос так. yield from aiohttp.request
Пока идет запрос, идет переключение потока выполнения
Аноним 17/05/20 Вск 21:56:32 #103 №1692280 
>>1692279
Или даже просто await requests.get()
Аноним 17/05/20 Вск 22:08:34 #104 №1692297 
>>1690482 (OP)
Сап, как проверить какой radiobutton из группы нажат?
Аноним 17/05/20 Вск 22:47:47 #105 №1692347 
2 scoops of Django 3.x выпустили, где-то на енгельских торрентах можно скачать? пока не нашел
https://www.reddit.com/r/django/comments/ghm9jx/we_just_released_the_two_scoops_of_django_3x_alpha/
Аноним 17/05/20 Вск 23:14:04 #106 №1692368 
>>1692297
Отличный вопрос, а библиотеку мы телепатически уже знаем.
Аноним 17/05/20 Вск 23:52:54 #107 №1692401 
>>1692277
asyncio.ensure_task
Аноним 17/05/20 Вск 23:53:36 #108 №1692402 
>>1692401
быстрофикс
asyncio.create_task
Аноним 18/05/20 Пнд 00:59:05 #109 №1692459 
>>1692347
Ссылочку на покупку дай - прикуплю и закину на диск.
Аноним 18/05/20 Пнд 01:09:35 #110 №1692467 
>>1692104
Если твоя хеш-функция ведет себя как embedding, т. е. похожие лица выдают похожие хеши, то, например, бинарный поиск. Можно написать версию алгоритма, который при отсутствии искомого элемента приведет к ближайшему слева или справа. Модуль bisect может помочь.
Аноним 18/05/20 Пнд 01:25:15 #111 №1692473 
Сап, как мне проверить какой radiobutton из группы нажат? Ну или хотябы проверку нажат ли radiobutton PyQt5
Аноним 18/05/20 Пнд 01:33:09 #112 №1692475 
>>1692104
Если хеш это вектор чисел, то посмотри в сторону индексов вроде GiST и GIN
Аноним 18/05/20 Пнд 01:49:30 #113 №1692486 
>>1692459
$ 49.95? Да нахуй надо.
Аноним 18/05/20 Пнд 04:40:45 #114 №1692520 
>>1692223
К чему этот пример? Никакой ошибки не выдает твой пример.
Аноним 18/05/20 Пнд 05:36:57 #115 №1692539 
>>1692159
очевидно, надо перлолить скрапи, улиточка.
Аноним 18/05/20 Пнд 07:45:36 #116 №1692563 
>>1692520
А теперь подумай еще раз, что именно ты делаешь со своей строкой в том безумной цикле while
Аноним 18/05/20 Пнд 10:27:21 #117 №1692625 
Screenshot90.jpg
>>1690482 (OP)
>— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
ну опять это говно?

Удолите
https://habr.com/ru/post/337420/
Аноним 18/05/20 Пнд 10:41:31 #118 №1692637 
>>1692625
удали сам
Аноним 18/05/20 Пнд 10:47:22 #119 №1692643 
>>1692625
>ну опять это говно?
Это очень хороший ролик, он демонстрирует сами идеи, лежащие в основе, и сразу с набором кода налету, можно самому попробовать. Причём и треды, и идеи асинхронности одновременно.

Книжки не заменяют таких роликов. В книжках много магии, тебе описывают, как с чем-то работать, но не поясняют, как это работает внутри.

Но книжку может тоже стоит добавить, надо глянуть её.
Аноним 18/05/20 Пнд 10:48:20 #120 №1692645 
>>1692637
>удали сам
Не надо удалять ни в коем случае. Скорее все эти SICP надо выпилить.
Аноним 18/05/20 Пнд 10:51:11 #121 №1692652 
вообще вопрос к тристакасекам и к тем кто самостоятельно вкатывался и таки смог вкатиться: мб шапку как-то получше оформить? мб спиздим идеи в соседних тредах? где годные?
Аноним 18/05/20 Пнд 10:58:25 #122 №1692661 
>>1692652
>мб шапку как-то получше оформить? мб спиздим идеи в соседних тредах? где годные?
Например, где годные? У большинства почти пустые шапки, у некоторых, как PHP, какой-то лес ссылок без пояснения. Лес ссылок можно и самому нагуглить.

Надо какие-то пункты обновить. Про Джанго, уже третья джанга есть, а про это ни слова, никаких комментариев, для чего брать, для чего не брать. ХЗ, я сам третью версию не пробовал.
Аноним 18/05/20 Пнд 11:04:03 #123 №1692663 
>>1692643
Это полностью старперский ролик, в котором пояснятся как деды страдали все эти годы, пока не позаимствовали async из С#


Вот предисловие из приличной книги по дотнету:

>Однако если обратиться к сегодняшним книгам и другим ресурсам для
изучения конкурентности, почти все они начинаются с изложения большинства низкоуровневых концепций. Обычно приводится превосходное
описание потоков и примитивов синхронизации, а высокоуровневые
методы откладываются на потом, если вообще рассматриваются. Полагаю, это происходит по двум причинам. Во-первых, многие разработчики
конкурентных программ (включая меня) начинали с изучения низкоуровневых концепций и подолгу корпели над описаниями старых методов.
Во-вторых, многие книги были написаны давно и содержат устаревшие
сведения; с появлением более новых средств книги обновлялись, но, к сожалению, новая информация размещалась в конце.
Считаю, что такой подход неверен. В этой книге рассматриваются только
современные подходы к реализации конкурентности. Это вовсе не значит,
что понимание всех низкоуровневых концепций не принесет вам пользы.
Когда я изучал программирование в колледже, на одном из курсов мне
пришлось строить виртуальный процессор из набора элементарных логических вентилей, а на другом — изучать программирование на языке
ассемблера. За всю профессиональную карьеру я не спроектировал ни
одного процессора и написал всего пару десятков строк ассемблерного
кода, но понимание основ приносит пользу ежедневно. И все же лучше
начинать с высокоуровневых абстракций; на моем первом курсе программирования рассматривался вовсе не язык ассемблера.
Аноним 18/05/20 Пнд 11:07:47 #124 №1692665 
>>1692663
Аноним 18/05/20 Пнд 11:08:33 #125 №1692668 
>>1692643
Блин, мне кажется вы просто не писали программы с помощью этих всех этих state-machine и select, поэтому вам кажется что круто бы повысить свою значимость среди молодежи и запудрить им мозги.
НЕТ БЛЯДЬ.
Аноним 18/05/20 Пнд 11:11:51 #126 №1692670 
>>1692663
>но понимание основ приносит пользу ежедневно
Сам свою цитату читал?

В твоей книжке и многих подобных бахают кучу абстракций, про которые не понятно, как они работают и что за ними вообще стоит. Ты должен тупо как макака пилить код, копируя все эти await, event_loop, future, task и пр., не понимая, что это вообще такое.

Это не старпёрский ролик, это называется "системное обучение". Тебе показывают принципы. Зная их, ты будешь хорошо понимать высокоуровневый код. Причём там даже не про асинк, там про треды в том числе.

Аноним 18/05/20 Пнд 11:14:19 #127 №1692676 
>>1692668
Неосиляторы неспособны осилить ролик в 45 минут и разобраться с основами. Программисты, такие программисты.
Аноним 18/05/20 Пнд 11:20:38 #128 №1692685 
Screenshot20.jpg
>>1692676
дед ебаный. Весь прогресс в айти застопорился из-за тебя!
Аноним 18/05/20 Пнд 11:24:10 #129 №1692687 
>>1692670
>Ты должен тупо как макака пилить код, копируя все эти await, event_loop, future, task и пр., не понимая, что это вообще такое.
но ведь это есть хорошо!
Зато он никогда не смешает потоки и async-и.
Аноним 18/05/20 Пнд 11:26:55 #130 №1692691 
Screenshot111.jpg
Вообще охуенно. Дотнет рулит.
Аноним 18/05/20 Пнд 11:48:55 #131 №1692701 
>>1692691
Больше половины проблем в коде из-за того, что люди просто не понимают, как оно работает. Причём в питоне слабая асинхронность, прикрученная со стороны, всё усугубляется из-за этого.

Большинство багов и чудовищно неоптимального кода из-за этого. И освоение медленно идёт из-за этого.

Вот ты думаешь, что определил функцию как async, написал await и получил асинхронность. А хуй. Код как был синхронным, так и остался, это тебе не JS, где в этом случае уже будет асинхронность. В JS правда своя магия есть.
Аноним 18/05/20 Пнд 12:55:37 #132 №1692735 
>>1690482 (OP)
Добрый день, подскажите пожалуйста по связке жанга и вью. При разработке у меня 2 сервера 8000 и 8080 так ведь? А при деплое как это работает? Не понимаю как организовать авторизацию через allouth потому что оно на сервере жанги, а на фронте нужно токен держать.
Че то я запутался =(
Аноним 18/05/20 Пнд 13:05:02 #133 №1692738 
>>1692563
Как я понял выдает ошибку потому что идёт обращение к словарю по ключу, которого нет?

> в том безумной цикле while
Я на работе накидал на телефоне новый цикл, ещё более охуенный. Работает теперь как надо и жрет даже символы что не в словаре.

Вечером выложу, оценишь.
Аноним 18/05/20 Пнд 13:34:46 #134 №1692764 
>>1690482 (OP)
ОП Хуй, сразу ОЧЕНЬвидно что автор вообще не в теме пайтона.
язык называется пайтон, пайтон, сука! а не питон блять!
потому что назвали в честь цирка Монти Пайтона, а не в честь змеи дебил блять!
Аноним 18/05/20 Пнд 13:50:31 #135 №1692777 
1280px-Python-logo-notext..jpg
>>1692764
А почему тогда на официальном лого 2 змеи? Покормил долбоеба
Аноним 18/05/20 Пнд 13:57:22 #136 №1692784 
image.png
сап, двач, сори за тупой вопрос
суть в чем: браузер отправляет пост запрос, я нашел его во вкладке network и увидел раздел form data, так вот, как мне отправить этот form data через requests?
Аноним 18/05/20 Пнд 14:09:20 #137 №1692794 
>>1692784
охуеть, нужно было просто их в url добавить
спасибо, двач
Аноним 18/05/20 Пнд 14:12:00 #138 №1692799 
>>1692777
Почему почему пошел на хуй вот почему
Аноним 18/05/20 Пнд 14:15:27 #139 №1692803 
Подскажите аналог habr только анлоязычный
Аноним 18/05/20 Пнд 14:29:02 #140 №1692815 
>>1692803
> Подскажите аналог habr только анлоязычный

reddit
Аноним 18/05/20 Пнд 14:31:02 #141 №1692818 
>>1692764
извини но нам всем насрать на уебанский цирк, мы называем так как удобно. Ты со своими выебонами можешь сходить нахуй
Аноним 18/05/20 Пнд 14:31:38 #142 №1692821 
>>1692794
обращайся
Аноним 18/05/20 Пнд 14:47:44 #143 №1692834 
>>1692738
Меня всегда бесили питоновские срезы. Там должен Exception рейзиться для перехвата, а не эта хуйня
Аноним 18/05/20 Пнд 14:50:27 #144 №1692840 
>>1692701
Асинхронность в питоне тянет как надо (правда полагаться приходится на сторонние либы). Мультипотокое программирование да - сосет бибу
sageАноним 18/05/20 Пнд 15:10:35 #145 №1692870 
>>1692701
что там? надо еще запустить цикл перебора этих корутинок
Аноним 18/05/20 Пнд 15:23:00 #146 №1692887 
Как вообще дебажить в Джанге? print-ами (пока так и делаю)? Там дебаггером же в принципе не воспользоваться
Аноним 18/05/20 Пнд 15:38:36 #147 №1692911 
Может кто с C# на Python это перевести? https://pastebin.com/eYz8LxTY
Вроде все даже с коментами, но все равно сложно. Если интересно это отсюда https://www.quantalgos.ru/?p=544
Аноним 18/05/20 Пнд 15:43:43 #148 №1692916 
Почему у меня запускается не то приложение Джанги на тестовом сервере? Перехожу в папку с моим чат ботом, включаю венв, запускаю mamage.py runserver
При переходе на 127.0.0.1 он подсказывает урлы из другого проекта. Что я делаю не так?
Аноним 18/05/20 Пнд 15:45:11 #149 №1692918 
>>1692799
а может быть соснёшь змею?

>>1692625
выкладывай уже свою книжку сука. сто пудово это старое дерьмо для 3.4/3.5 с поеботой вроде yield from
Аноним 18/05/20 Пнд 15:49:06 #150 №1692921 
>>1692911
фигурные скобки убери и перед декларациями функций def напиши. с отступами ты уже справился вроде.
Аноним 18/05/20 Пнд 15:52:37 #151 №1692927 
image.png
image.png
image.png
>>1692916
Вот вывод консоли когда запускаю приложение с чат-ботом и скрин urls для этого проекта.
На 3м скрине Джанго предлагает мне урлы admin/ и polls/ вообще из другого проекта
Аноним 18/05/20 Пнд 16:01:53 #152 №1692940 
>>1692921
Не так все просто. Да еще декларацию переменных уровня double, int, complex убрать. Но там есть и выражения например for (int k = 0; k <= 31; k++), которые в питоне не так задаются. k++ я хз что такое. Если что я с C# не знаком от слова совсем.
Аноним 18/05/20 Пнд 16:03:38 #153 №1692944 
>>1692940
да, точно. всякую двойную хуйню перед декларацией убрать, а цикл чисто перебором рейнджа спистонить.
Аноним 18/05/20 Пнд 16:05:21 #154 №1692947 
>>1692918
По хабро ссылке тоже поделка какая-то:
> Корутины содержат операторы yield, с помощью которых мы определяем места, где можно переключиться на другие ожидающие выполнения задачи.
> За переключение контекста в asyncio отвечает yield, который передаёт управление обратно в event loop, а тот в свою очередь — к другой корутине.
Ну и зачем это нужно? Там дальше пример в синтаксисе 3.5, без yield, но вот нахуй нужен непонятный отсыл к yield, когда вообще не понятно, при чём он тут?

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

Лучше самим родить текст небольшой, но только в шапке места для него нет.
Аноним 18/05/20 Пнд 16:07:44 #155 №1692951 
>>1692947
может пидарасы с хабра надеются, что им заплатят построчно как в газете.
Аноним 18/05/20 Пнд 16:11:59 #156 №1692955 
>>1692927
какой же я долбоеб
я нихуя не понял как, но исправил
Аноним 18/05/20 Пнд 16:14:10 #157 №1692957 
>>1692927
Вангую потому что regex проверяет url-ы последовательно, там ты где-то и проебался
Аноним 18/05/20 Пнд 16:20:10 #158 №1692959 
>>1692918
А может быть желаю хорошего вечера
Аноним 18/05/20 Пнд 16:27:59 #159 №1692963 
>>1692918
Книжка с первого взгляда может и норм. Не знаю, как она годна чтобы идеи понять, но говном не смотрится, в отличии от хабра

https://sharefiles.app/download/9e1fa10ad8476c388491cc8c9195d33a7504b58f
Аноним 18/05/20 Пнд 16:28:37 #160 №1692964 
>>1692963
2019 года, в стиле 3.7 написана
Аноним 18/05/20 Пнд 16:33:37 #161 №1692968 
>>1692964
чем стиль 3.7 отличается от стиля 3.8?
Аноним 18/05/20 Пнд 16:39:05 #162 №1692974 
>>1692968
МОРЖАМЕ
Аноним 18/05/20 Пнд 16:45:25 #163 №1692979 
>>1692974
ну отличие ебать, переписываем книги нахуй
Аноним 18/05/20 Пнд 16:53:00 #164 №1692983 
image.png
image.png
двач, помоги пожалуйста с threading
есть код на пиках
основной поток не хочет разблокироваться, как исправить?
Аноним 18/05/20 Пнд 17:05:31 #165 №1692989 
>>1692983
хуй знает надо чекать смотреть, тут никто код из скрина набирать себе не будет чтобы тебе помочь

я бы проверил что sys.exit() норм работает в тредах, а лучше бы заменил на какой-нибудь self.exit() наверняка есть такой

и вообще в питоне довольно просто делается однопоточность нахуя вы эти классы ебашите
http://toly.github.io/blog/2014/02/13/parallelism-in-one-line/
Аноним 18/05/20 Пнд 17:21:42 #166 №1693002 
Как в BaseHTTPRequestHandler убрать логирование?
Аноним 18/05/20 Пнд 17:22:44 #167 №1693003 
>>1693002
https://stackoverflow.com/questions/3389305/how-to-silent-quiet-httpserver-and-basichttprequesthandlers-stderr-output
Аноним 18/05/20 Пнд 17:29:07 #168 №1693009 
аноны, очень нужна ваша помощь ибо гугл не помог...

Суть - надо в Windows автоматизировать взаимодействие с java swing/AWT на python 3.x
элементы этих окон через puwinauto не достать, примеров нет нигде
пытался через java access bridge - установил все, загрузил dll WindowsAccessBridge.dll, дергаю isjavawindow с нужным хендлером - и 0, нихуя, нет коннекта
кто то сталкивался? как получить доступ к работающей jwm и взаимодействовать с внутренними gui элементами?
Аноним 18/05/20 Пнд 17:34:56 #169 №1693015 
>>1693003
Премного благодарен.
Аноним 18/05/20 Пнд 17:38:20 #170 №1693018 
>>1692968
В 3.7 довольно много правок относительно 3.6, об этом речь. Большинство материалов по asyncio довольно старые, в стиле 3.5, где активно таскали loop всюду, не говоря уже об адовых yield from из 3.4.

Короче книжка современная, не legacy. На надо внимательнее глянуть, насколько она для обучения пригодна. В начале как-то воды очень много. Мне кажется, что для совсем новичков в конкурентном программировании она не очень.
Аноним 18/05/20 Пнд 17:40:52 #171 №1693023 
>>1693018
Как вообще в питоне с свежими версиями?
Нормально сказать вот я зделол под 3.8, устанавливайте ёпта.
Аноним 18/05/20 Пнд 17:43:27 #172 №1693028 
Image 679-vert.jpg
>>1692563
>>1692070
>>1691972
>>1691982

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

Оцените, заебись получилось? Работает идеально.

Аноним 18/05/20 Пнд 17:47:38 #173 №1693033 
>>1693023
Нет, не всегда нормально. В системе может не стоять 3.8, не всегда хорошо навязывать самую последнюю версию питона.

В ubuntu 18.04 базовая версия 3.6, чтобы поставить 3.8 нужно телодвижения делать, добавлять репозеторий специальный и т.п., и тогда будет два питона в системе. А это довольно частный дистрибутив. PyPy вроде только под 3.6, может частично можно библиотеки от 3.7 прикрутить.

В общем можно, но не очень хорошо. Зависит от того, что и для кого ты делаешь.
Аноним 18/05/20 Пнд 17:49:15 #174 №1693036 
>>1693028
Как-то очень громоздко и прямолинейно.
Скинь код текстом, я покурю.
Аноним 18/05/20 Пнд 17:52:49 #175 №1693040 
>>1693028
Ну вот ты сам подумай, насколько просто понять логику твоего кода и логику этого >>1692070 варианта. Реально ведь надо ломать мозг над всеми его сложными состояниями. И зачем?
Аноним 18/05/20 Пнд 17:54:48 #176 №1693045 
>>1693036
>Как-то очень громоздко и прямолинейно.
Нахуярил на одних условных операторах, хули. Зато понятно и работает как надо.

>Скинь код текстом, я покурю.
Куда, например?

Кстати, у меня проблема с транслитом. Буква y отвечает как за й, так и за ы. Точно также как и е отвечает за е и за э. Как с этим быть?

>>1693040
>Реально ведь надо ломать мозг над всеми его сложными состояниями. И зачем?
Я наоборот тот код нихуя не понял. Поэтому свой вариант и сделал.

Аноним 18/05/20 Пнд 17:56:49 #177 №1693049 
>>1693045
https://ideone.com/
Аноним 18/05/20 Пнд 18:02:40 #178 №1693054 
>>1693049
Закинул сюда https://pastebin.com/WSUv4H8G
Аноним 18/05/20 Пнд 18:02:44 #179 №1693055 
>>1693045
Почему ты не пользуешься срезами? Ты как-то побуквенно собираешь, это совсем не питон-стиль, среды очень мощная фича питона.

> Буква y отвечает как за й, так и за ы
Обычно поэтому j отвечает за й. Вот "ю" можно кодировать как "ju" и "yu", но с этим нет больших проблем, после ы редко гласные встречаются.

Делай просто замену по приоритетам. Сначала варианты "yu" проверяй, а потом уже 'y' как 'ы'

>Я наоборот тот код нихуя не понял.
могу пояснить, если интересно
Аноним 18/05/20 Пнд 18:09:38 #180 №1693062 
tumblrle3iimRqBr1qe91wdo1500.jpg
>>1693054
Попробовал podzhopnik - выдает жопник.
Аноним 18/05/20 Пнд 18:11:08 #181 №1693064 
>>1693062
Бля, забыл исправить, поменяй изначальное значение i в 0 вместо 3.
Аноним 18/05/20 Пнд 18:23:23 #182 №1693075 
>>1693045
>>1693055
https://ideone.com/QEIIOq
Вот простой вариант, который я предлагал раньше. Даже два.
Тупо сортируем по длине и риплейсим.
Аноним 18/05/20 Пнд 18:23:48 #183 №1693077 
Ну как вкатывается в питохун, новички?)) Работку уже пробовали искать? хихи хаха))) Скобачка)
Аноним 18/05/20 Пнд 18:37:59 #184 №1693093 
>>1693075
Алсо, интересно бы потестировать, насколько это проседает по скорости с вашими проверочками.
Аноним 18/05/20 Пнд 18:44:04 #185 №1693098 
>>1693093
Может и интересно, может проверю другой анон

Но не факт, что просядет, re довольно быстро работают. Если строка большая и у тебя много посимвольной магии, это плохо работает. И посимвольное добавление к строке тоже плохо работает, строка ведь каждый раз заново создаётся.
Аноним 18/05/20 Пнд 18:45:11 #186 №1693101 
>>1693098
С ре вариант поинтересней, да, там движок отпимизирован как раз под это.
Аноним 18/05/20 Пнд 19:03:03 #187 №1693121 
Анананасы, прочитал "Программирование" и "Изучение" Лутца но писать код так и не научился. Что делать? И как после этого вкатиться на РАБотку?
Аноним 18/05/20 Пнд 20:14:49 #188 №1693192 
Ищу кодера питонщика для разработки стартового билда моей визуальной новеллы на ренпае >>665838
Нужен тот, кому эта параша будет интересна...ну хотя бы как хоби
Аноним 18/05/20 Пнд 20:16:49 #189 №1693193 
>>1693192
Ой, что-то я проебался с гиперссылкой. Тред тута https://2ch.hk/gd/res/665838.html Да, хоби -с два б. Быстрофикс
Аноним 18/05/20 Пнд 20:21:05 #190 №1693196 
>>1693055
>Почему ты не пользуешься срезами?
не знаю что такое, учу с неделю
>Ты как-то побуквенно собираешь, это совсем не питон-стиль
>я до этого в чистом C немного для себя программировал, там также строки собирал из файла.
>среды очень мощная фича питона.
Что за среды?
>Делай просто замену по приоритетам. Сначала варианты "yu" проверяй, а потом уже 'y' как 'ы'
а как например быть когда e означает и е и э сразу? В словаре нельзя же 2 одинаковых ключа сделать.
>могу пояснить, если интересно
поясни, интересно что за что отвечает.
>>1693075
тут какие-то ванлайнеры, даже не интересно. Что делает .items и .replace конкретно?
Аноним 18/05/20 Пнд 20:26:38 #191 №1693202 
Можно ли с помощью регэкспа за одну операцию из строки вида
`1,0-1,2 10,20 30,40.2-50,60-70.9,-80.1 90,-100 -110, -120`
получить строку
`1 0 -1 2 10 20 30 40.2 -50 60 -70.9 -80.1 90 -100 -110 -120`
В конечном итоге нужно из начальной строки получить массив чисел за наименьшее кол-во проходов строки.
Пока что делаю так (3 прохода):
`re.sub(r'(\d)(?=-\d)', r'\1 ', s).replace(',', ' ').split()`
Аноним 18/05/20 Пнд 20:47:55 #192 №1693228 
>>1693202
re.findall(r'-?[\d\.]+', s)
Аноним 18/05/20 Пнд 20:53:49 #193 №1693233 
>>1693196
items выдает тупли key-value, replace repace`ит.
sageАноним 18/05/20 Пнд 21:02:35 #194 №1693239 
>тут какие-то ванлайнеры, даже не интересно.
пиздец, съеби
Аноним 18/05/20 Пнд 21:03:57 #195 №1693241 
>>1693121
Бамп годному вопросу
Аноним 18/05/20 Пнд 21:04:25 #196 №1693242 
>>1693239
Хули тебе не нравится?долбоеб
Аноним 18/05/20 Пнд 21:52:06 #197 №1693289 
>>1693242
То что ты пидор ёпта
Аноним 18/05/20 Пнд 22:47:33 #198 №1693331 
>>1693196
Ещё раз скрин с кодом >>1692070

Магия-1. Создание словаря, это вполне обычный паттерн. Можно и может даже лучше именно явно создать, без этих хаков, так проще просто.
Идея, создаём строки "a b c d e f" и "1 2 3 4 5 6"
с помощью split() разбиваем их в списки
['a', 'b', .. 'f'], ['1', ...'6']
assert просто для проверки, что у нас одинаковое число элементов в массиве, что лажи нет, легко при таком подходе промазать
zip() сшивает два списка в словарь, это стандартная функция питона, полезно знать, глянь в доках.

К началу цикла имеем словарь translation,
translation['sh'] --> 'ш'

Его можно было описать явно.

Дальше уже совсем просто.
s3, s2, s1 - это подстроки длины 3, 2, 1 соответственно. Или меньшей длины, если мы в конце строки.

Сравниваем подряд, если эти строки, начиная с длинной, в словаре замен, делаем замену и увеличиваем счётчик на длину подстроки.

Здесь не очень хорошо сделано, в случае s3 явно прибавляется 3, а ведь длина её может быть меньше. Некрасиво, но ничего не ломает, поскольку такая история только в конце строки происходит. Корректно увеличивать на len(s3), но душа байтоёба-оптимизатора возмущается.

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

Аноним 18/05/20 Пнд 23:38:22 #199 №1693370 
Анон, поясни пожалуйста ньюфагу про толстые модели и токние вьюхи в Джанго.
Сейчас пытаюсь учиться по одному курсу, увидел там комментарий, мол автор допускает плохую практику.

В курсе автор обучает на практике создания сайта новостей:
Приложение у него одно news.
Вот файл models.py: https://pastebin.com/HAtg2c0s
Вот файл views.py: https://pastebin.com/DvEVejtU

Подскажи пожалуйста, анон, что из вьюхи в данном случае должно бы быть в моделях, чтобы был гуд практис.
Аноним 18/05/20 Пнд 23:39:09 #200 №1693372 
image.png
Где css-файлы для Джанговских форм?.. Вот например у меня после удаления из CharField текста форма подсвечивается красным (а это смотрится так себе). Как мне поменять?
П.С. Я подгрузил Bootstrap в <link rel="stylesheet">, может там что найдется, чтобы перекрыть эту ебень?

в css "шарю" на уровне 7классника
Аноним 18/05/20 Пнд 23:47:37 #201 №1693375 
>>1690535
Обновление: все работает. Проблема была в неработающем жс-скрипте на фронте (id-шник у поля был не тот и скрипт его не видел)
Аноним 18/05/20 Пнд 23:51:27 #202 №1693377 
>>1693370
"Толстые модели" это просто вынесение бизнес-логики в сами модели, чтобы не засирать вьюхи и не дублировать код

Большая часть бизнес-логики тут в кастомном миксине MyMixin лежит. В принципе можно забить хуй и так и оставить
Аноним 19/05/20 Втр 00:26:49 #203 №1693388 
Screenshot124.jpg
>>1693121
уж не пиздишь ли ты? Как можно прочитать большие книги и ничего не написать?
неужели совсем нечего автоматизировать?

Гляди, я сегодня слепил десктопный обработчик фото.
На неделе попытаюсь "продать" руководству на ЗАВОД в качестве рацпредложения.
Неужели у кого-то возникают эти вопросы? Вагон же несделанных дел должен быть!
Аноним 19/05/20 Втр 01:20:49 #204 №1693404 
photo2020-04-17 12.42.39.jpeg
Аноны, чем
import urllib3
urllib3.disable_warnings()

отличается от
requests.packages.urllib3.disable_warnings()
и что лучше?
Аноним 19/05/20 Втр 01:58:22 #205 №1693410 
>>1693404
requests - обертка над urllib и не более того.
Когда был urllib первой версии, то сделать запрос было очень трудно пистонисту больше 3 строчек писать уже трудно, появилась удобная обертка. В urllib3 уже не так все хуево и можно вполне брать на замену.
Аноним 19/05/20 Втр 02:13:08 #206 №1693412 
>>1692944
Операторы "new" как я понял тоже не несут смысловой нагрузки. А вот тут [] int1 = new [32] что квадратные скобки значат?
Аноним 19/05/20 Втр 05:11:42 #207 №1693442 
>>1693388
Классно, антош, давно погромируешь на пистоне?
Аноним 19/05/20 Втр 07:14:29 #208 №1693464 
>>1693442
два месяца. Я, конечно, не показатель и у меня есть опыт программирования на различных языках. Но с другой стороны, в этих долгих годах мало самого программирования было. Я просто Админ.
И реально не понимаю, как можно прочитать толстенные книжки и не придумать как эти знания применять.
Ну с друзьями-кабанчиками поговори! Узнай какие сайты им нужны.
Они, возможно, больше мечтают о гуй-программах, но сайт тоже пойдет.

В данной ситуации я вынужден писать гуй на питоне, потому что из гуевых программистов у нас только пара 1с-ников и они вряд ли справятся с обработкой изображений.

При этом у нас есть еще и php-программисты . Поскольку они дешевы, вся автоматизация сделана в виде веб-интерфейса. Десктоп они тоже не умеют.
Аноним 19/05/20 Втр 08:10:02 #209 №1693468 
>>1693331
По поводу создания словаря из списка понял. А что будет если количество элементов в списке не совпадает?

А основная программа дальше похожа на мою, только у меня проверки на трёх символьные элементы нет .

Но вот что будет с твоей программой если в тексте попадется символ не из словаря? Она же выдаст ошибку, не? У меня же это предусмотрено.

Аноним 19/05/20 Втр 08:56:27 #210 №1693471 
https://habr.com/ru/post/502438/
Тут какой-то хрен разошелся и херачит статейки по Киви
Аноним 19/05/20 Втр 09:23:18 #211 №1693484 
>>1693471
>Тут какой-то хрен разошелся и херачит статейки по Киви
Вангую, ты - Юрий Лугадонский.

Но спасибо, глянем.
Аноним 19/05/20 Втр 09:36:01 #212 №1693489 
>>1693471
Питониты хуже жабаскирптеров. Повторяют за ними и везде пытаются свою херню пропихнуть.
Аноним 19/05/20 Втр 09:48:13 #213 №1693492 
>>1693471
это все тот же. видимо, заказы фрилансерские хуже идут.
Ну спасибо что живой.
Аноним 19/05/20 Втр 09:54:13 #214 №1693493 
>>1693202
Я может неправильно понял, у тебя заменяется , на пробел же? зачем тебе вообще регулярки?
Аноним 19/05/20 Втр 09:56:29 #215 №1693494 
>>1692735
Ну ребят ну чего вы, ну подскажите
Аноним 19/05/20 Втр 10:21:16 #216 №1693505 
Хотет автоматизировать некоторые повторяющиеся операции, когда лезу в шелл джанги на удаленной машине. Команда ниже работает, но ipython запускается без подсветки синтаксиса и автокомплита. Как зделоть, чтобы был цветной и интерактивный?

ssh -C -i ~/.ssh/some.pem ubuntu@host 'cd ~/projectname && . activatevenv && ./manage.py shell_plus'
Аноним 19/05/20 Втр 11:20:27 #217 №1693557 
>>1693404
У меня вроде и там и там urllib3
Аноним 19/05/20 Втр 11:27:10 #218 №1693562 
>>1693505
Запускай в pycharm.
Кто, я???
Аноним 19/05/20 Втр 11:29:01 #219 №1693567 
>>1693410
>>1693557
промах
Аноним 19/05/20 Втр 12:34:39 #220 №1693642 
zZWIp-DI6MI.jpg
>>1690482 (OP)
Привет!
Посоветуйте популярный IDE для Python. Я совсем новичок, установил PyCharm, но мне оказалось сложно в нём разобраться. Например, я не могу сменить дефолтную директорию Scratch-файлов, в которой у меня кириллица, и из-за этого есть проблемы при запуске батников. Я не прошу совсем примитивного инструмента - просто более дружелюбного.
Аноним 19/05/20 Втр 12:37:52 #221 №1693644 
Привет, Антон!
Подскажи за структуру проектов/приложений в джанго.
Порядком подзаебался разбирать каждый отдельный "ДАВАЙТЕ РАССМОТРИМ НА ПРИМЕРЕ" пример. Можно как то формальное описание получить?
Аноним 19/05/20 Втр 12:42:54 #222 №1693650 
>>1693642
анаконда
Аноним 19/05/20 Втр 13:08:00 #223 №1693668 
>>1693557
Тогда оставь одно что-то. По-идее - неважно что заюзаешь, все равно это у urllib3 юзается.
Аноним 19/05/20 Втр 13:09:31 #224 №1693669 
>>1693642
Зачем тебе иде? Отупеешь ведь. Юзай vs code. Не сильно сложно, не пишет код за тебя. Как освоишься и не будешь совсем новичком, то тогда решай: pycharm или vim.
Аноним 19/05/20 Втр 13:15:47 #225 №1693675 
>>1693669
> иде пишет код за тебя
ВАТ?
Аноним 19/05/20 Втр 13:25:43 #226 №1693683 
>>1693668
Ну я подумал может есть какое-нибудь правило хорошего тона делать через импорт или через реквест. Спасибо
Аноним 19/05/20 Втр 13:32:24 #227 №1693693 
>>1693650
Спасибо, но не совсем то, что нужно.
>>1693669
Идеально. Спасибо.
Аноним 19/05/20 Втр 13:45:21 #228 №1693708 
>>1693683
Но ведь это всё равно будут разные инстансы, лол.
Если ты хуяришь напрямую через урллиб, то делай урллиб, если через реквестс, то через реквестс.
Аноним 19/05/20 Втр 15:33:04 #229 №1693820 
аноны, я правильно понимаю, что переменные, объявленные внутри цикла, являются локальными?
Аноним 19/05/20 Втр 16:00:41 #230 №1693855 
>>1693708
>Но ведь это всё равно будут разные инстансы, лол.
В каком смысле, антоща?
Аноним 19/05/20 Втр 16:06:58 #231 №1693871 
image.png
что это за херня?
Аноним 19/05/20 Втр 16:11:24 #232 №1693889 
>>1693820
Нет. Это не жс
Аноним 19/05/20 Втр 16:14:05 #233 №1693896 
Аноны, есть идея реализовать решателя капч посредством машоба. Какие подводные? Как реализовать? Доставьте контента.
Аноним 19/05/20 Втр 16:14:36 #234 №1693899 
>>1693871
-- coding: utf-8 --
кодировка
/thread
Аноним 19/05/20 Втр 16:19:21 #235 №1693906 
>>1693489
Жопаскриптеры хуже. Но только лишь потому что многочисленнее
Аноним 19/05/20 Втр 16:47:41 #236 №1693945 
>>1693896
Какую капчу решать собрался? От этого зависит часть подводных камней.
Для себя решил делать или сервис какой?
Для автоматического решения капчи-зображения есть сервис, качество не очень.
Аноним 19/05/20 Втр 17:01:02 #237 №1693955 
>>1693945
Да в целом где я сижу только рекапча и заёбывает. Для начала конечно для себя потом если всё пахать будет продавать начну для спамеров хех. Юзал и сервисы и расширения в браузерах, но они действительно не очень.
Аноним 19/05/20 Втр 17:07:27 #238 №1693960 
Аноны, как написать декоратор, который будет работать с произвольными входными данными функции?

Пока что придумал так:

def decorator(func):
....def f(args, kwargs):
........return func(
args, kwargs) # здесь что-то осмысленное
....return f

@decorator
def g(some, arguments): ...

Но выглядит гадко. Лучше нельзя?
Аноним 19/05/20 Втр 17:10:36 #239 №1693963 
>>1693960
Можно.
Аноним 19/05/20 Втр 17:15:54 #240 №1693967 
>>1693899
Я имею в виду, кто это должен читать. Человек? Интерпретатор?
Да и кто придумал это говно -*-
Аноним 19/05/20 Втр 17:18:19 #241 №1693972 
>>1693871
Это Legacy из второй версии питона. Забудь, зумер, а то кошмары по ночам сниться будут. За тебя деды воевали, живи счастливо без этого ужаса.
Аноним 19/05/20 Втр 17:18:48 #242 №1693974 
>>1693967
Читает это вм через которую ты запускаешь свой код. Нужно это для того, чтобы текст который ты выводишь выводился правильно на любой локали.
Аноним 19/05/20 Втр 17:24:55 #243 №1693982 
>>1693955
Для рекапчи есть либа на гите, для распознавания при помощи аудио.
Хз как она работать будет с рекапчей3.
Аноним 19/05/20 Втр 17:27:40 #244 №1693983 
Третья рекапча весьма злоебуча, там и действия пользователя на странице проверяются, и айпи и т.д.
А тут нуб взялся её забороть, ага. Самый верный метод это решение обезьянками за копейки.
Аноним 19/05/20 Втр 17:28:33 #245 №1693984 
>>1693982
Через эту либу работает аддон для браузера о котором я говорил. И последние месяцы работает он архихуёво, где-то 1 раз из 10. Потому и хочу запилить что-то надёжное.
Аноним 19/05/20 Втр 17:29:28 #246 №1693986 
>>1693983
Ага, готовь свои шекели, сучёнок. Скоро будешь постить в /b 300к постов/наносекунду.
Аноним 19/05/20 Втр 17:30:11 #247 №1693987 
>>1693983
Все так, не он первый, не он последний, просто так ее не взять и она того не стоит.
>>1693984
Зря только время потратишь, бери сервисы, их апи и либы для них, и юзай.
Для быстрого решения есть разогрев капчи.
Аноним 19/05/20 Втр 17:32:03 #248 №1693991 
>>1693987
>разогрев капчи
Пока что самая полезная идея, которую я услышал.
Аноним 19/05/20 Втр 17:32:40 #249 №1693993 
>>1693991
Правда она работает только если юзаешь один и тот же сайт.
Аноним 19/05/20 Втр 17:33:54 #250 №1693995 
>>1693468
Бамп посту
Аноним 19/05/20 Втр 17:34:31 #251 №1693997 
>>1693993
Посмотрим.
Аноним 19/05/20 Втр 17:41:58 #252 №1694001 
Мне надо где-то хранить список между запусками программы. Программа может и будет просто выключаться без всякого завершения.

Так вот - как в таких условиях лучше хранить список? Использовать pickle или просто хранить содержимое списка в файле и дописывать в него по необходимости?
Аноним 19/05/20 Втр 17:43:48 #253 №1694003 
>>1694001
Если данные не критически важные и работа с файлом ограничена только записью/чтением то можно и базовыми средствами обойтись.
Аноним 19/05/20 Втр 17:44:31 #254 №1694004 
>>1693963
А как?
Аноним 19/05/20 Втр 17:46:13 #255 №1694006 
Родные мои, есть список словарей
[{'Value': 'test0'}, {'Value': 'test1'}, {'Value': 'test2'}, {'Value': 'test3'}, {'Value': 'test4'}, {'Value': 'test5'}]

Мне его надо привести к списку значений, при этом исключив из него заранее заведенный список исключений

Список исключений:
['test4', 'test5']

Что я хочу получить в итоге:
['test0', 'test1', 'test2', 'test3']

Как мне это сделать?
Аноним 19/05/20 Втр 17:47:53 #256 №1694008 
>>1694006
Кури isinstance()
Аноним 19/05/20 Втр 17:51:02 #257 №1694014 
>>1694006
res = [val for d in start for key, val in d.items() if key not in excl]
Аноним 19/05/20 Втр 17:51:19 #258 №1694015 
>>1694006
[d['Value'] for d in dict_list if d['Value'] not in set(exception_list)]
Аноним 19/05/20 Втр 17:53:03 #259 №1694016 
>>1694006
z=твой список словарей
for x in z:
y = x['Value']
дальше вычитаем словарь исключений из словаря z

>>1694008
>>1694014
>>1694015
этих не слушай, они джуны
Аноним 19/05/20 Втр 17:53:33 #260 №1694018 
>>1694016
>из словаря y
пофиксил
Аноним 19/05/20 Втр 17:56:40 #261 №1694021 
>>1694016
Проиграл с этого синьора.
>>1694014
>>1694015
Конечно, лучше в пятисотый раз облизать лист компрехеншн чем узнать о новой полезной функции.
Аноним 19/05/20 Втр 17:56:47 #262 №1694022 
>>1694016
Чё несёт. Какой словарь y? А если у него [{'Value': 'test0'}, {'Value': 'test1'}, {'Value': 'test0'}]? А порядок как сохранить?
Аноним 19/05/20 Втр 17:57:53 #263 №1694023 
>>1694021
>новой полезной функции
И какой же?
Аноним 19/05/20 Втр 17:58:05 #264 №1694024 
>>1694022
>А порядок как сохранить?
А он не просил.

>>1694022
>А если у него
А у него нет этого в ТЗ.

Вот что отличает джуна (вас) от синьора (от меня). Синьор никогда не будет делать лишней работы, не предусмотренной ТЗ.
Аноним 19/05/20 Втр 17:58:45 #265 №1694025 
>>1694003
Надо будет часто обращаться к списку и редко добавлять/удалять элементы.

Базовыми - это какими?
Аноним 19/05/20 Втр 17:58:53 #266 №1694026 
>>1694024
МЫ ВАМ ПЕРЕЗВОНИМ
Аноним 19/05/20 Втр 18:00:57 #267 №1694030 
>>1694023
Глаза разуй, там написано.
Аноним 19/05/20 Втр 18:01:06 #268 №1694031 
>>1694001
Это примерно эквивалентные вещи. В одном случае риск не успеть записать файл, в другом риск не успеть записать обновления.

Чтобы избежать риска, когда ты удалил старый файл, а новые данные записать не успел, можно простой паттерн использовать:
старый файл имеет имя, условно, dump.pickle.123
сохраняешь новый файл в dump.pickle.124
если успешно, старый удаляешь.
Причём так можно хранить, очевидно, несколько последних версий.

Аноним 19/05/20 Втр 18:01:10 #269 №1694032 
>>1692963
я хуй его знаю, не могу скачать с твоего рапидшера
Аноним 19/05/20 Втр 18:03:29 #270 №1694038 
>>1694030
isisnstance же для проверки типа данных, зачем он тут?
Аноним 19/05/20 Втр 18:06:47 #271 №1694040 
>>1694001
И да, посмотри ещё на такую фишку, как сигналы. Это актуально для линукса, в винде может быть хитрее, там что-то работает, что-то нет.

Ты большинство сигналов о закрытии программы можешь перехватить, сохранить в этом момент данные, и после этого уже закрыть программу полноценно.
Аноним 19/05/20 Втр 18:07:23 #272 №1694043 
>>1693388
мне всегда нужен был десктопный обработчик фото с драг&дроп. давай на гитхаб, ёба не жмись.
Аноним 19/05/20 Втр 18:08:51 #273 №1694044 
>>1693412
ну это такая ёбнутая манера обьявлять массивы целых чисел
Аноним 19/05/20 Втр 18:11:50 #274 №1694047 
>>1693494
Итак, день прошел зря, но я пытался узнать как это все делается.
Получается мне нужно реализовывать аутентификацию в социалочку непосредственно на vue, потом получив токен от социалочки, отдать этот токен в жангу, чтобы она там работала с логикой и че ей там еще надо, потом отправить на фронт собственный токен самой жанги, которую сохранить во фронт сторже.
На сколько я понял. Жаль что под мою социалочку незапилен модуль на vue вот под всякие инстаграммы есть и под вк есть.... Но встает другой вопрос. Если я делаю на фронте авторизацию, то мне надо указать свои id и secret key от апи авторизации в социалочке, разве это безопасно?
Аноним 19/05/20 Втр 18:37:06 #275 №1694072 
>>1693388

Двачну >>1694044
Аноним 19/05/20 Втр 18:47:56 #276 №1694075 
>>1694047
ты просто хуяришь баззворды и мы не понимаем о чем речь
что такое токен в социалочку? какая разница вью/невью? ты оауф делаешь и хочешь авторизацию прогнать без бека?
Аноним 19/05/20 Втр 18:53:52 #277 №1694078 
Сап питонач, есть один файл, который представляет собой таблицу в два столбца, левый - заголовок к тексту, правый - сам текст. Планирую вытаскивать из файла определённый текст по номеру строки, по заголовку из левого столбца этой строки или по ключевым словам из самого текста. В какой формат его будет лучше всего сконвертировать для лёгкого доступа из кода? Csv, xml?
Аноним 19/05/20 Втр 18:54:49 #278 №1694079 
>>1694078
json
Аноним 19/05/20 Втр 18:58:07 #279 №1694081 
>>1694078
sqlite
Аноним 19/05/20 Втр 19:03:18 #280 №1694087 
>>1694081
у sqlite косяки с LIKE + юникод

https://stackoverflow.com/questions/40896214/sqlite3-cannot-correctly-query-a-utf-8-string
https://ru.stackoverflow.com/questions/610133/Поиск-в-бд-sqlite-кириллицы-c
Аноним 19/05/20 Втр 19:08:31 #281 №1694093 
>>1694079
>>1694081
>>1694087
Спасибо, аноны. Я правда довен и вообще никогда не имел дела с форматами кроме стандартных пдф/докх/хлсх, буду пытаться разобраться, что к чему с жсоном
Аноним 19/05/20 Втр 19:09:32 #282 №1694094 
>>1694072
>>1694043
Ну окей, вкатывальщики-квакивальщики.
Релизю приложение для обработки фото и прочих хренотеней !

https://github.com/pavlozt/kivyphotoenhancer/

Возможно, кого-то вдохновит на большие свершения. А то пишете все какую-то поебень, ей богу.
Аноним 19/05/20 Втр 19:20:23 #283 №1694103 
забыл один момент:
Если русские буквы интерфейсе уплыли, надо ставить python 3.7+ и настраивать переменную среды PYTHONUTF8=1 . Так вот в этой винде.
Когда-нибудь эта хуйня закончится...
Аноним 19/05/20 Втр 19:42:05 #284 №1694130 
Здравствуйте, господа!
Хочу научиться работать с библиотекой vk_api, вернее у меня есть идея, которую хочу реализовать для бота в сообществе.
Но, начинать надо с чего-то простого, что у меня не получилось.
Объясните плз, как можно элементарно с помощью бота отправить, например сообщение самому себе? А то просмотрел несколько источников, на одном источнике была подобная информация, но данную функцию тупо выпилили с какой-то там версией vk_api.
Будьте добры, напишите код, (я знаю, что там строчки 3-4 должно быть, пролема в знании методов), ии подкиньте доков читабельных
Аноним 19/05/20 Втр 19:58:22 #285 №1694151 
>>1694130
Делается так же как и отправка обычного сообщения, просто жестко задай ИД человека которому писать хочешь.
+ На сколько я знаю, у вк_апи есть чат в телеге с активными юзерами, можешь залететь туда.
Аноним 19/05/20 Втр 22:15:57 #286 №1694279 
>>1694078
стратегически,тебе выгоднее изучить pandas и оставить файл в csv.
загружай и там манипулируй данными.

Эта библиотека все равно на Си написана и к скорости не должно быть претензий.
Аноним 19/05/20 Втр 22:18:22 #287 №1694282 
Есть ли способ ограничить в django rest частоту обращений к апи? Что конкретный юзер или конкретный айпишник не мог делать эт очаще чем N раз в минуту?
Аноним 19/05/20 Втр 22:20:37 #288 №1694287 
>>1694282
такой паттерн называется rate limit, по нему гуглится. конкретно в drf это называют тротлингом https://www.django-rest-framework.org/api-guide/throttling/
Аноним 19/05/20 Втр 22:24:54 #289 №1694290 
>>1694287
Ебать ПАТТЕРН.
Аноним 19/05/20 Втр 22:31:06 #290 №1694296 
>>1694006
from itertools import chain


data = [{'Value': 'test0'}, {'Value': 'test1'}, {'Value': 'test2'}, {'Value': 'test3'}, {'Value': 'test4'}, {'Value': 'test5'}]
exceptions = ['test4', 'test5']
items = chain(*map(dict.values, data))
result = [item for item in items if item not in exceptions]
Аноним 19/05/20 Втр 22:31:40 #291 №1694297 
>>1694282
если это реальный кейс, делай сразу на nginx.
Выебут ведь юзеры твой vps-ик.
Аноним 19/05/20 Втр 23:14:38 #292 №1694330 
>>1694296
ехал item через item.
видит item в item item.
сунул item item item.
item за item item - цап!
Аноним 19/05/20 Втр 23:38:02 #293 №1694350 
Могу запилить django-templates внутри js-файлов?
Внутри html - как нехер, в том числе и внутри js-кода, вот так например:

<script type="text/javascript">
var a = "{{someDjangoVariable}}";
</script>

А внутри js-файла есть возможность это сделать? Потому что они у меня длинные и я прикрепляю их как белый человек в <script src="static/main.js"></script> ?
Аноним 19/05/20 Втр 23:39:07 #294 №1694352 
>>1694350
Зачем?
Аноним 19/05/20 Втр 23:41:42 #295 №1694357 
>>1694352
Не хардкодить url path-ы и просто потому что я ебанутый
Аноним 19/05/20 Втр 23:41:52 #296 №1694358 
>>1694282
Другой анон дельное советует, может на самом деле стоит использовать nginx, там есть всё для этого.

Смотри сюда:
https://nginx.org/ru/docs/http/ngx_http_limit_req_module.html

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

Я этим не пользовался правда, лепил когда-то свои велосипедные решения, правда не на питоне.

В nginx, судя по описанию, для разного типа url можно задать разные настройки, гибкость есть.

При желании ты можешь сам что-нибудь накрутить на уровне джанго, но думаю, этим стоит заниматься только если у тебя логика сложная.
Аноним 19/05/20 Втр 23:45:33 #297 №1694365 
>>1694357
Ну эмбедь все настройки в script или там делай xhr за ними после загрузки.
А статика она и есть статика.
Аноним 19/05/20 Втр 23:45:50 #298 №1694366 
>>1694350
По api отдавай переменные, или json портянку в index.html
Аноним 20/05/20 Срд 00:04:51 #299 №1694376 
>>1694001
Еще один вариант - sqlite. Есть в стандартной библиотеке, все хранится в одном файле, встроенная защита от выключения программы или вылетевших пробок. Из неудобств - понадобится отдельный слой с SQL.
Аноним 20/05/20 Срд 00:18:06 #300 №1694389 
Аноны, сталкивался мб кто? С какого хуя django-cors-headers просто наебнулось без причины? Работало нормально, а потом хуяк - ваши корс-хедеры не корс-хедеры, идите нахуй.
Аноним 20/05/20 Срд 00:26:06 #301 №1694391 
>>1694047
Слишком сложно. У фронта не будет оставаться никакой важной информации, доступной скриптам, работающим с твоего домена. Никаких хранений в local storage и т. д. - это слишком легко украсть. У твоей социалочки есть документация, как к ней подключаться?
Аноним 20/05/20 Срд 00:26:20 #302 №1694392 
>>1694389
объясни нормально бля не телепаты
Аноним 20/05/20 Срд 00:30:46 #303 №1694393 
>>1694392
Вроде и так нормально, есть либа django-cors-headers, настроена как указано у них в репе (приложение, миддвер, origin_allow_all = True). В какой-то момент она просто сама наебнулась
Аноним 20/05/20 Срд 00:34:50 #304 №1694396 
>>1694393
Ты небось пытался использовать аутентификацию, с такими настройками не будет работать.
Аноним 20/05/20 Срд 00:35:00 #305 №1694397 
>>1692735
>А при деплое как это работает?
Можешь держать 2 сервера при деплое, можешь сбилдить проект на вью, а джанго будет раздавать его как статику
Аноним 20/05/20 Срд 00:36:42 #306 №1694400 
>>1694396
При чем аутентификация? У меня сами запросы просто ебнулись. Работала регистрация, а теперь просто нахуй шлет
Аноним 20/05/20 Срд 00:43:15 #307 №1694405 
>>1694400
Ты понимаешь как cors работает?
Аноним 20/05/20 Срд 00:48:05 #308 №1694406 
>>1694405
Идет запрос, сервер отвечает списком сайтов, которым разрешен доступ, но у меня блядь всем разрешен доступ с помощью CORS_ORIGIN_ALLOW_ALL = True
Аноним 20/05/20 Срд 00:49:22 #309 №1694408 
>>1694406
А теперь открой консоль в браузере и посмотри что там написано.
Аноним 20/05/20 Срд 01:01:09 #310 №1694412 
>>1694408
Идет запрос options к серверу, а в ответ я получаю нихуя, а в браузера висит "Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://192.168.1.14:8000/api/users/. (Reason: CORS request did not succeed)." Но проблема в том, что эта хуйня работала какое-то время назад
Аноним 20/05/20 Срд 01:08:48 #311 №1694418 
>>1694412
Укажи свой хост явно, разреши пересылку кредлов. Возможно поможет, так как причин может быть много.
Аноним 20/05/20 Срд 01:10:55 #312 №1694422 
>>1694418
CORS_ORIGIN_ALLOW_ALL это выключи, CORS_ORIGIN_WHITELIST = ['адрес сайта'], CORS_ALLOW_CREDENTIALS = True
Аноним 20/05/20 Срд 01:12:48 #313 №1694424 
>>1694422
Хотя насколько помню, там сообщение об ошибке другое, скорее всего не в этом проблема.
Аноним 20/05/20 Срд 01:16:35 #314 №1694426 
>>1694418
>>1694422
Поменял, та же самая хуйня. Вот если что сами настройки джанги, касающиеся корсхедеров. Последнее уже выдрал с стаковерфлоу https://pastebin.com/XNz9JsjW
Аноним 20/05/20 Срд 01:18:30 #315 №1694427 
>>1694426
У тебя приложение на js дев сервере?
Аноним 20/05/20 Срд 01:20:05 #316 №1694430 
>>1694427
Да. Приложение на Вью, запросы делаю через axios
Аноним 20/05/20 Срд 01:22:15 #317 №1694432 
>>1694430
Надо прокси в конфиге настроить.
Аноним 20/05/20 Срд 01:25:29 #318 №1694434 
>>1694426
Регекс кривой
CORS_URLS_REGEX = r'^/$'
Попробуй
r'^/.
$'

Аноним 20/05/20 Срд 01:25:59 #319 №1694435 
>>1694434
Бля, побилось. Точка перед звездочкой кароч.
Аноним 20/05/20 Срд 01:34:44 #320 №1694436 
>>1694432
>>1694434
спасибо, аноны. В итоге я просто сделал хуйню на фронте из-за чего оно не работало, а именно вместо локалхоста обращался к локальной сети, хотя джанго в отличие от вью разворачивается только на локалхосте, а я как даун про это забыл
Аноним 20/05/20 Срд 02:53:49 #321 №1694476 
петон полная хуйня учите ноду
Аноним 20/05/20 Срд 02:55:25 #322 №1694477 
>>1694476
учи кобол
Аноним 20/05/20 Срд 05:42:48 #323 №1694508 
>>1693228
Спасибо.
Надо было сразу доку читать.

>>1693493
>зачем тебе вообще регулярки?
Ну там же могут встречаться последовательности вида
60-70.9
Т. е. два числа, разделённые минусом без пробела.
Аноним 20/05/20 Срд 07:41:02 #324 №1694526 
>>1694476
Лучше хтмл
Аноним 20/05/20 Срд 07:49:52 #325 №1694528 
>>1694358

> Смотри сюда:
> https://nginx.org/ru/docs/http/ngx_http_limit_req_module.html

> В nginx, судя по описанию, для разного типа url можно задать разные настройки, гибкость есть.

А вот и нельзя, лол. Там же только ip, а не произвольный элемент.

Тот самый анон.

Но есть Великий Китайский Nginx Openresty, где это делается довольно элегантно на lua с применением этих же механизмов зон.

Зависит от серьезности лавочки, короче.
Аноним 20/05/20 Срд 07:54:46 #326 №1694529 
>>1694528
А, не, можно, но непонятно как выудить переменные из post или элементы json. Вот зачем тут нужен lua.
Так что во многих случаях порезать скорость в nginx - отличная идея
Аноним 20/05/20 Срд 09:18:40 #327 №1694606 
>>1694528
Ну так ты можешь поставить лимит на количество запросов какого-то url для разных ip. И получаешь дешёвую защиту о ботов, которые высасывают информацию с твоего сайта в много потоков.

Если какую-то сложную логику реализовывать, то проще уже сразу на уровне джанги. Может ты там хочешь, чтобы разные виды запросов на один url имели разный вес, и у разных групп пользователей были разные лимиты? И ещё попутно статистика какая собиралась?
Аноним 20/05/20 Срд 09:21:01 #328 №1694613 
>>1694529
В nginx прикрутили javascript, и вроде можно как раз подобные задачи через него делать. Не пробовал. Глянь на это.
https://nginx.org/ru/docs/njs/index.html
Аноним 20/05/20 Срд 09:41:11 #329 №1694648 
>>1694613
блядь, как бесит эта пизданина.
lua то много лет,а они ради говноедов js тащат.
в Самом Большом в Мире Китайском Интернете вообще только на lua и пишут.
Аноним 20/05/20 Срд 10:01:38 #330 №1694679 
>>1694648
Пишут, что lua паскалеподобное говно, а nginx за js.

https://habr.com/ru/company/oleg-bunin/blog/420465/

Надо бы добраться когда-нибудь до этого и заботать.
Аноним 20/05/20 Срд 10:07:44 #331 №1694685 
Как быстро освоить пихон если освоена Java?
Аноним 20/05/20 Срд 10:21:58 #332 №1694702 
>>1694508
Да, точно! Прости мне мою невнимательность
Аноним 20/05/20 Срд 10:26:43 #333 №1694710 
>>1693960
def func(args, *kwargs):
Аноним 20/05/20 Срд 10:27:18 #334 №1694711 
>>1694710
Парсер съел по одной звездочке перед args и kwargs.
Аноним 20/05/20 Срд 11:04:56 #335 №1694774 
Где почитать подробности языка более углубленно, чем укус питона?
Аноним 20/05/20 Срд 11:24:44 #336 №1694820 
>>1694774
Лучано Ромальо. Fluent Python
Злата Обуховская. Что внутри у питона (youtube)
Документация
Аноним 20/05/20 Срд 11:55:13 #337 №1694858 
>>1690482 (OP)
Прочитал от корки до корки Dive into Python 3, всё написанное полностью понял. Что делать дальше - не пойму. Цель - фриланс на США. Или хотя бы работа самая простая, тоже в США. Понимаю, что хоть и разбираюсь в многом уже и в принципе смогу нужные библиотеки быстро выучить, всё равно в данном состоянии нигде работать не смогу. Куда копать чтобы хотя бы какую-то копеечку получилось поднять? Нужен хоть какой-то самый простой проект, по типу парсинга блять фанфиков. Хочу развиваться не в вакууме, а на реальных заданиях которые будут востребованы, с которых я смогу получать деньги. Есть идеи куда смотреть и что делать? Большое спасибо, анон. Английский нейтив. Могу и ирл, но предпочтительнее конечно же хоть за сильно меньше, но фриланс. Плюс с рынком работы США не знаком нихуя.
Аноним 20/05/20 Срд 11:59:51 #338 №1694865 
>>1694858
Смотри вакансии и то, какие там технологии используются. Чистый питон никому не нужен вообще. Нужны технологии. Нужно уметь работать со сторонними сервисами вроде DB, MQ и др.

Ты в самом питоне хорошо умеешь тестирование, модуль logging, asyncio? И не только это.

Веб фреймворки? БД? MQ?

Представть проект, который мог бы быть полезен и попробуй сам сделать.
Аноним 20/05/20 Срд 12:04:12 #339 №1694873 
>>1694679
>Олег Бунин
> не создал ни одного Продукта
>10 лет делает вид, что дохуя умный и стрижет бабло с менеджеров топов
Аноним 20/05/20 Срд 12:07:22 #340 №1694876 
>>1694679

> — Уже существует готовый сторонний проект OpenResty. Если не вдаваться в подробности, то это, по сути, nginx + Lua, но он имеет архитектуру, которая идет вразрез с nginx. Мы хотели избежать пересечений с этой экосистемой.


Они хотели продолжать стричь бабос с nginx plus и дать возможность нанимать яваскриптомакак.

Но в lua нет ничего сложного и он фантастически быстр.
Аноним 20/05/20 Срд 12:09:28 #341 №1694881 
>>1694865
>Представть проект, который мог бы быть полезен и попробуй сам сделать.
Займусь
В самом питоне почти ничего не знаю, так как кроме книги и попыток что-то годное написать не делал с ним ничего. Опять же, трудно писать что-то, когда понимаешь, что оно не пригодится в работе.

От требований на сайтах становится не очень. Даже не беру в расчёт опыт работы, просто дохуя там. То в веб уклон сильный с Джанго, то в дата аналитику. Но там по 5 лет опыт просят, поэтому и ищу чтобы начать где проще порог входа. Мне бы начать с чего-то. Вот как в тестинг мануальный можно вообще вкатиться за неделю, дальше переходить на автоматический и т.д. Вот мне бы что-то похожее в питоне, а не тестинге. С чего-то начать, что уже сейчас было бы хоть кому-то нужно, и дальше улучшаться.
Аноним 20/05/20 Срд 12:26:21 #342 №1694922 
>>1694881
Скажи как в тестинг вкатиться за неделю? там такие же хрюши сидят "алло 500 лет опыта нет? вы нам перезвоним"
Аноним 20/05/20 Срд 12:28:11 #343 №1694927 
>>1694922
Я про ручной говорю, тыкать в браузере блять баги искать. Не про физически пойти работу найти, онлайн же.
Аноним 20/05/20 Срд 12:40:16 #344 №1694949 
>>1694685
А с чего это ты взял, что она тобой освоена, лол?
Аноним 20/05/20 Срд 12:48:41 #345 №1694962 
Хм, есть у меня несколько моделей Джанги. В одной из них есть поле ref=URLField, прикол в том, что в зависимости от значения этого поля (ссылки) надо по-разному обрабатывать данные. Как это блин реализовать?
Аноним 20/05/20 Срд 12:54:22 #346 №1694969 
>>1694685
Вызубрить основы https://www.w3schools.com/python/python_getstarted.asp
Аноним 20/05/20 Срд 13:03:49 #347 №1694983 
>>1694962
Так в чем трудность? Подробнее расскажи, а то не угадать, ты там не знаешь как if написать или тебе свой йоба диспетчер нужен под это дело.
Аноним 20/05/20 Срд 13:41:16 #348 №1695028 
>>1694983
Для каждой комбинации (ref+description) требуется свой обработчик. Всего их на данный момент 8 (скоро могут появятся новые или наоборот что-то будет удалено). На первый взгляд стоит в отдельном модуле типо utils их написать, но как быть дальше? Как "привязать" каждого обработчика к своему instance из модели? Сидеть и вручную в shell это делать? Просто вопрос времени, когда я таки совершу ошибку и буду не понимать, хрен ли оно не работает как надо
Аноним 20/05/20 Срд 14:08:30 #349 №1695061 
>>1695028
Первое что пришло в голову: при сохранении экземпляра переопределять метод в котором обрабатываются данные, как-то так
https://pastebin.com/T5DkSnpq

Аноним 20/05/20 Срд 14:18:44 #350 №1695077 
>>1695028
Если твоя обработка состоит в различиях при выборе - ебни по менеджеру для каждого из типов
Аноним 20/05/20 Срд 14:33:13 #351 №1695092 
Как записать список в файл? Когда делаю f.write(list) он ругается что надо str записывать, а не список.
Аноним 20/05/20 Срд 14:36:16 #352 №1695094 
>>1694927
в твоем понимании "вкатиться" = делать что -то для себя?
Я просто думал что вкатиться это выполнить "работу" для кого то
Аноним 20/05/20 Срд 14:41:39 #353 №1695097 
>>1695077
>>1695061
Что мне также недавно пришло в голову: назвать обработчики определенным образом. Затем внутри модели определить метод handle, который на основании значений self.ref и self.descr найдет нужный мне обработчик (бизнес-логику намучу, это не проблема)

Вопрос на данный момент лишь таков: как блэт этот обработчик мне импортировать в мой метод handle? Есть 2 варианта: использовать
import module_name
vars(module_name)
и перебрать ключи, либо использовать что-то типа:
mod = importlib.import_module(module_string_name)
handler = getattr(mod, name)

Какой из методов будет рациональнее и быстрее?
Аноним 20/05/20 Срд 14:43:57 #354 №1695103 
>>1695092
write("\n".join(lines))
есть ещё writelines, но там тоже надо ебаться с ньюлайнами.
Аноним 20/05/20 Срд 14:54:57 #355 №1695124 
>>1695092
Сериализуй чем-нибудь вроде pickle или json, а потом записывай
Аноним 20/05/20 Срд 14:58:44 #356 №1695126 
>>1695124
Я видел где-то уже упоминание сериализации. ЧТо это?
Аноним 20/05/20 Срд 15:02:27 #357 №1695132 
>>1695126
Вот здесь есть:
https://www.google.com/search?source=&q=%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F&q=python
Аноним 20/05/20 Срд 15:19:37 #358 №1695153 
>>1695097
Не помню как точно, но просто переопределяешь метод на выборку, внутри можешь вызвать каждый из менеджеров, а потом склеить все полученные данные в 1 список и вернуть
Аноним 20/05/20 Срд 16:27:31 #359 №1695231 
>>1695132
>TypeError: can't pickle _asyncio.Task objects
Это что выходит, при использование asyncio нельзя пользоваться pickle?
Аноним 20/05/20 Срд 19:07:55 #360 №1695439 
Нихуя не понимаю, объясните пожалуйста

Вот у меня есть бесплатный pycharm, который сразу создаёт виртуальную среду для проекта и я могу через настройки проекта найти необходимые библиотеки и скачать в проект, а затем использовать

А могу вводить всю эту поеботу черед командую строку вручную.

Есть какая-то принципиальная разница между двумя способами? И почему везде в офф документации или туториалах (например Джанго) пишут через командую строку?
Аноним 20/05/20 Срд 19:12:22 #361 №1695444 
Кто тут писал телеграм ботов, как проще организовать напоминалку чтобы она отправлялась два раза в день в разное время? Делаю бота через aiogram
Аноним 20/05/20 Срд 19:13:23 #362 №1695447 
>>1695439
> И почему везде в офф документации или туториалах (например Джанго) пишут через командую строку?
Потому что это стандартный способ. Пичарм просто автоматизирует его.
Аноним 20/05/20 Срд 19:41:22 #363 №1695465 

>>1695447
Добра тебе анон
Аноним 20/05/20 Срд 20:16:13 #364 №1695484 
Как проще всего сделать таймер? Чтобы раз в N секунд выполнялось действие?
Аноним 20/05/20 Срд 20:44:40 #365 №1695508 
>>1695484
while True:
____do_something()
____time.sleep(1)

или
while True:
____do_something()
____await asyncio.sleep(1)

или модуль sched, но фактически это как в пункт 1
Или сигнал alarm в линуксе, но это неправильный подход.

Ты задачу опиши для начала
Аноним 20/05/20 Срд 20:57:55 #366 №1695515 
>>1695484
Просто не получится.
Все таймеры работают в контексте ивент лупа, т.е. асинхронно.
Аноним 20/05/20 Срд 21:07:39 #367 №1695525 
>>1695508
через определенное время записывать информацию в файл.
>>1695515
А чем вариант выше с

while True:
____do_something()
____time.sleep(1)

не подходит?
Аноним 20/05/20 Срд 21:10:59 #368 №1695526 
>>1695097
vars?
А есть кстати другой метод получить переменные модуля/класса? А то в модулях много builtins говна, мешается
Аноним 20/05/20 Срд 21:15:06 #369 №1695534 
>>1695525
sleep не начнется раньше завершения do_something, потому что они работают линейно. Если он занимает минуту, то о чем говорить?
Аноним 20/05/20 Срд 21:16:33 #370 №1695536 
>>1695534
Хотя если у тебя задача на три копейки типа пару раз в минуту качать что-то с сайта, то и такое сойдет.
Аноним 20/05/20 Срд 21:24:19 #371 №1695547 
>>1695484
Запуск в отдельном процессе
Запуск посредством Celery (overkill)

Либо

while True:
____do_shit(shit()
____await asyncio.sleep(60)
Аноним 20/05/20 Срд 21:28:02 #372 №1695552 
>>1695534
Так говорю же, у меня do_something это сохранение в файл.

>>1695547
Зачем асинк для этого?
Аноним 20/05/20 Срд 21:30:36 #373 №1695554 
>>1695552
aiofile
Аноним 20/05/20 Срд 21:31:09 #374 №1695556 
>>1695552
>Зачем асинк для этого?
Если у тебя только 1 задача в скрипте - незачем, если есть что-то еще - то обычный слип будет блочить выполнение всего кода
Аноним 20/05/20 Срд 21:50:22 #375 №1695577 
>>1695552
Всё зависит от того, что делает твоя программа в перерывах между тайм-эвентами.

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

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

Ещё зависит от того, насколько точно тебе надо интервалы выверять.

Всё это стандартные задачи и для каждого типа есть стандартные решения. Но разные.
Аноним 20/05/20 Срд 22:27:57 #376 №1695623 
Кто-нибудь реализовывал напоминалки в телеграмм ботах?
Аноним 21/05/20 Чтв 06:39:47 #377 №1695916 
>>1695623
Nothing difficult.
Аноним 21/05/20 Чтв 07:23:00 #378 №1695928 
>>1695484
Проще всего, внезапно, с модулем threading.
Но это перестанет быть проще, когда ты добавишь туда что-то еще
Аноним 21/05/20 Чтв 07:34:20 #379 №1695929 
Кто нибудь использует апи переводчиков? Какой есть бесплатный без анальных лимитов вроде 1000 слов в день?
Аноним 21/05/20 Чтв 09:13:57 #380 №1695974 
Слышал, что реальные пацаны в django хранят бизнес-логику не в моделях (как пишут в оф. документации), а в отдельном файле services или utils. Есть примеры как это правильно делать и вообще зачем?
Аноним 21/05/20 Чтв 09:20:16 #381 №1695983 
>>1695929
Это, ведать, для лентяев.
Автор API предоставляет услугу, которую бесплатно ты должен был предоставить себе сам.
Так же как ремонт автомобиля - бесплатно могут дать совет ремонтироваться в их мастерской.
На этом перечень бесплатных услуг исчерпывается.

Но почему бы не сделать переводчика, НЕ использующего интерфейс API, а чистый HTTP ?
Аноним 21/05/20 Чтв 10:31:18 #382 №1696039 
>>1695983
Потому что я не знаю хттп, как тебе такой вариант? Ну так что насчёт апи то? Есть чего?
Аноним 21/05/20 Чтв 10:39:31 #383 №1696045 
Блядь, запустил один туториал по питону - какой-то индус на ломаном английском вещает, запустил ещё один - опять индус. Какого хуя?
Аноним 21/05/20 Чтв 11:09:47 #384 №1696054 
>>1696045
Ну так не запускай.
В Степике хорошие цисгендерные айтишники.
Аноним 21/05/20 Чтв 11:27:16 #385 №1696071 
>>1696045
> запустил нонейм хуйню какая-то хуйня
держи в курсе
Аноним 21/05/20 Чтв 13:12:27 #386 №1696164 
>>1696039
Ты знаешь, я сейчас проверил, а мой клиент Гугл-переводчик не работает. Я бросился смотреть на страницу переводчика - она уже совершенно другая.
Открыл в IE, а Гугл требует войти в аккаунт - чё за хрень, через Хром захожу на переводчик без никакого акаунта ?
Так что у меня теперь нет переводчика и значит программы, которые его использовали, накрылись тоже.
Аноним 21/05/20 Чтв 13:17:59 #387 №1696167 
>>1696164
Насколько я сегодня нагуглил - Гугл сделал свой апи платным недавно и все сосут хуй кто бесплатно переводил.
Аноним 21/05/20 Чтв 14:19:28 #388 №1696230 
>>1696167
Это палка двух концов: Если платный сервис - его функциональность будет гарантироваться.
Если, как бы украл (мой клиент не использовал никаких АПей), то это бесплатно, но... в любой момент они могут изменить что-то и программа накрылась.

Покупать, если тебе клиент-переводчик нужен раз в год - смысла нету.
Поэтому, стоит внести изменения, согласно всем ихним новшествам и прежним курсом пока опять не поменяют.
У меня клиент работал на технологиях COM и DOM, но для этого необходим IE. С ним последнее время проблемы - то старая версия облаком не поддерживается, клиент облака делал, пуд говна съел, прежде чем победить. То в кабинет телефонного провайдера не могу войти - новый сертификат сайта не поддерживается.

На свою старую систему новый IE не ставится, поэтому перенёс клиент кабинета провайдера на планшет с 10 системою - сертиыикаты https есть, клиент работает. Теперь переводчик накрылся, надо переносить тоже на планшет, а на 10 системе IE не установлен.
И вообще 10 система - сволочная штука. Целая эпопея борьбы. И она только началась - её предстоит обкарнать по самые яйца. И от предателя-системы безопасности, и от изменника родины планировщика заданий. Надо будет выявить где эти файлы, пользующиеся преступной неприкосновенностью и зайдя с внешнего диска - ампутировать их в пизду.
Аноним 21/05/20 Чтв 14:36:21 #389 №1696256 
Запомните товарищи наизусть - как бы хорошо ни было приложение, но если оно насильственно навязано - это обрекает его нести метку говна.
И всяк его будет стрематься и поносить.
Ибо насильно мил никто, пока что не стал и НИ - КО - ГДА НЕ СТА - НЕТ !
Аноним 21/05/20 Чтв 15:59:01 #390 №1696366 
Как во Flask сохранить кэш на стороне пользователя?
Аноним 21/05/20 Чтв 16:00:37 #391 №1696370 
>>1693388
Советую вместо принтов юзать logging. А так код нормальный. У новичков неосиляторов основная проблема, то что они не знают с чего начать и как построить архитектуру проекта. По твоему коду же видно, что опыт есть.
Аноним 21/05/20 Чтв 16:07:47 #392 №1696381 
>>1696370
Ты где там архитектуру разглядел в этих 100 строчках, среди которых полезных около 50?
Аноним 21/05/20 Чтв 16:41:51 #393 №1696418 
>>1696381
АРХИТЕКТУРА ПАТТЕРНЫ РЕФАКТОРИНГ
Аноним 21/05/20 Чтв 19:18:31 #394 №1696653 
Я не могу просто взять и вставить элемент словаря в ф-стринг?

slovar = {
'kluch': 'znachenie',
}

print(slovar['kluch']) - вот так все норм

print(f'bla bla {slovar['kluch']}') - а вот так уже ошибка.

Мне обязательно нужно сперва упаковать элемент в переменную, а в стринге обращаться уже к ней? Это ж очень нудно, нах мне тогда вообще писать этот словарь, если все равно для каждого ключа нужно отдельно писать переменную, я это могу и без словаря сделать. Может еще какой способ есть?
Аноним 21/05/20 Чтв 19:25:09 #395 №1696663 
>>1696653
Из-за скобок ошибка. Используй другие или эскейпь.
Аноним 21/05/20 Чтв 19:28:45 #396 №1696665 
15882642647221.jpg
>>1690482 (OP)
Програмач ай нид хелп.
Укус питона прочёл, Hello World написал.
Написал говнопрогу, которая приветствует тебя, просит ввода имени и возраста и в зависимости от этого оскорбляет тебя.
Какую книгу читать дальше? желательно с примерами т.к. хочется практики.
Аноним 21/05/20 Чтв 19:30:22 #397 №1696666 
>>1696663
Можно подробней? Не понимаю в каких именно скобках ошибка и как я могу их изменить, я думал для каждого элемента вполне конкретные скобки используются.
Аноним 21/05/20 Чтв 19:36:01 #398 №1696669 
>>1696666
Есть дохуя видов скобок, все они взаимозаменяемы.
Одинарные 'str' и "str" и тройные '''str''' и """str""".
Если какие-то используются у тебя в строке, то оформить можно другими.
В твоем случае можно сделать
print(f'bla bla {slovar["kluch"]}') или наоборот.
Аноним 21/05/20 Чтв 19:38:09 #399 №1696671 
>>1696669
А, ты про кавычки! Точно, работает, спасибо!
Аноним 21/05/20 Чтв 19:39:15 #400 №1696672 
>>1696671
Ох лол, да.
Аноним 21/05/20 Чтв 19:46:00 #401 №1696676 
Как установить MySQL? Нихуя не понятно что-то. Коды из консоли, клиенты, архивы с сайта, инсталляторы. Конкретно что ставить нужно?
Аноним 21/05/20 Чтв 19:51:14 #402 №1696679 
>>1696676
Нужен сервер, клиенты уже к нему подключаются.
На шиндовсе инсталятор, на шинуксах из реп.
Аноним 21/05/20 Чтв 19:51:54 #403 №1696680 
>>1696676
sudo apt install postgresql postgresql-contrib
Аноним 21/05/20 Чтв 20:10:14 #404 №1696716 
Парни, тут кто-то писал насчет таймеров, на чем-то годном по итогу сошлись?

Я подумал на досуге и нахуярил вот такую реализацию "сигнальной" функции, которая раз в n секунд вызывается и совершает некую небольшую операцию. А основная функция, которая потребляет много ресурсов CPU, идет фоном, пока не выполнится: https://ideone.com/tpaOTQ

Реализовано на тредах. Какой-то ощутимой просадки по производительности не заметил. Но уверен, что есть способы и лучше. На асинхронках можно что-то подобное намутить? А с помощью какой-нибудь левой либы?..
Аноним 21/05/20 Чтв 21:31:49 #405 №1696800 
Решил попробовать этот хваленый jupyter lab.
Ну и нихуя!
Не открывает мои экселевские файлы.
File Load Error for testme.xlsx
testme.xlsx is not UTF-8 encoded
И так все файлы. Что я их экселем создаю, что через pandas.to_excel.

Хорошо что хоть csv открывает.

Нагуглить ничего толкового не смог.
Неужели придется anaconda ставить чтобы совсем уж по-ихнему было?
Аноним 21/05/20 Чтв 21:41:01 #406 №1696805 
>>1696716
>Какой-то ощутимой просадки по производительности не заметил. Но уверен, что есть способы и лучше.

так ее и не будет, лол. Оверхед на потоки слишком низкий. Многие программы на тредах и всем норм.

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

Вот, допустим, мой пример : >>1694094
Он работает потому что там "волшебная" синхронизация от kivy через декоратор @mainthread
В серьезных случаях были бы проблемы.
(кстати, на самом деле киви работает из без этого. не понятно почему, но я на всякий случай пишу. как у них в документации это написано лет 5)
Аноним 21/05/20 Чтв 21:44:49 #407 №1696808 
>>1696370
да харош. смысл этой программы был показать, что kivy - довольно просто и пора бы новичкам переходить от заманавших всех телеграм-ботов к полезным программам.
Аноним 21/05/20 Чтв 21:47:34 #408 №1696811 
>>1693388
Что эта штука вообще делает?
Аноним 21/05/20 Чтв 21:59:15 #409 №1696828 
>>1696811
это чтобы в фотошопе не мучаться. Фото часто надо обрабатывать, но сами манипуляции шаблонные . Посмотри как это выглядит в фотшопе:
https://pskurs.ru/photoeffects/avtomaticheskaya-korrekciya-urovnei-v-photoshop.html

У меня на производстве продукцию фоткают перед тем как отправить клиентам зеркальным фотиком и получается плохо.
Я как буду рабочих-дуболомов обучать в консоли что-ли работать?
Поэтому сделал гуй.

На самом деле там еще (будет) сжатие фото до веб-разрешения и загрузка на сайт к конкретному заказу.
Аноним 21/05/20 Чтв 22:24:01 #410 №1696878 
>>1696828
То есть это автоматизатор кнопки "авто" в фотошопе средствами сторонней проги? Ну заебись, хуле, и гуй красивенький.
Аноним 22/05/20 Птн 00:14:55 #411 №1697051 
Есть один список (list). Структура такова: A= [array([100, 200, многа чисел]), array([300, 400, многа чисел])]. array это numpy.ndarray. Как мне получить вывод последних чисел из каждого array. Просто A[:][-1] выводит array([100, 200, многа чисел]). По сути индексация не идет внутрь списка. Я предполагаю это из-за того что внутри numpy.ndarray, а не простой список. Не могу догадаться как вводить индексы.
Аноним 22/05/20 Птн 00:22:14 #412 №1697065 
>>1697051
Можно конечно циклом перебирать
B=[]
C=[]
for i in range (len (A)):
A = A
C.append(A[-1])

Но хочется сразу индекс.
Аноним 22/05/20 Птн 00:38:09 #413 №1697089 
>>1697065
Попробуй так [a[-1] for a in A]
Аноним 22/05/20 Птн 00:39:04 #414 №1697091 
Объясните понятным языком, что представляют из себя атрибуты co_lnotab и co_flags у code object в Python?
Аноним 22/05/20 Птн 00:42:40 #415 №1697095 
>>1693388
> неужели совсем нечего автоматизировать?

Если только написать программу, которая наримана током от компа коротнет, лол.

В конце концов, не все же такие кабанчики занятые. Мне вот обработчик фото нахуй не нужно, тебе наоборот. Время такое, для моих потребностей например уже все написано.
Аноним 22/05/20 Птн 00:45:19 #416 №1697098 
>>1697089
Получилось, спасибо. Ни разу с таким индексированием не сталкивался.
Аноним 22/05/20 Птн 01:52:50 #417 №1697152 
>>1697051
A[:, -1]
A[строка, столбец]
Аноним 22/05/20 Птн 01:57:54 #418 №1697155 
>>1697152
Не работает list indices must be integers or slices, not tuple. Я так пробовал. Пока либо цикл, либо это >>1697089
Аноним 22/05/20 Птн 02:02:52 #419 №1697164 
>>1697155
Тебе обязательно использовать ndarray ? Если вместо обычного списка в начале и в списках внутри использовать numpy.array() то все работает.

np.array([np.array([1,2,3]),
np.array([1,2,3]),
np.array([1,2,3])])
Аноним 22/05/20 Птн 03:17:13 #420 №1697187 
>>1697164
> Тебе обязательно использовать ndarray ?
Не то чтобы очень, но формат задает чужая функция. Перебирать её во много раз сложнее чем пердолиться с индексами.
Аноним 22/05/20 Птн 07:00:54 #421 №1697215 
3.png
>>1697051
Аноним 22/05/20 Птн 08:29:42 #422 №1697250 
>>1695094
Нет, я и имел в виду работу для кого-то. Мануальное тестирование - для вката достаточно полной недели и можно зарабатывать деньги - я тому пример. Только деньги всё же не такие огромные, и заниматься этим постоянно не импонирует. Развития там так же не много, да и куда развиваться. А питон, это другое. Но здесь порог входа на любую работу мне кажется намного ввше, поэтому и растерян.
Аноним 22/05/20 Птн 09:28:38 #423 №1697282 
numpy.png
>>1697051
>>1697155

Вот так еще можно, без циклов
Аноним 22/05/20 Птн 09:40:31 #424 №1697293 
Такой вопрос. Пробую переводить чат для твича. Так проблема со смайлами возникла. Гугл апи за каким-то хуем переводит некоторые смайлы вроде Kappa, смайлы из нескольких слов вроде NotLikeThis и другие.

Как исключить все смайлы из перевода, если они в контексте чата состоят из простых слов?

Самый очевидный и тупой способ - добавить все смайлы в исключение не проканает. Их не фиксированный набор, у каждого стримера есть свой уникальный пак.

Часть смайлов я отсек проверяя слово на количество заглавных букв - если их больше 2 в слове - оно игнорируется. Но это отсекает только смайлы, состоящие из двух слов. Та же Kappa будет проходить

Ещё часть отсек проверкой на наличие цифры в слове.


Есть идеи как отсечь остальные смайлы?
Аноним 22/05/20 Птн 09:53:31 #425 №1697298 
>>1697293
Ты его копипастом переводишь что ли, как сообщения получаешь? Получаются сообщения через вебсокет, в каждом сообщении отражается не только его содержание, но и доп. информация в т. ч. и используемые смайлы.
Проблема только в том, что есть еще и расширение bttv которое добавляет свои смайлы, поэтому тебе их отдельно парсить нужно будет в зависимости от канала. Может у них api есть.
Аноним 22/05/20 Птн 10:07:48 #426 №1697310 
>>1697298
> Ты его копипастом переводишь что ли, как сообщения получаешь?
За основу своего бота я взял twitchio. Он сообщения получает в виде простого текста вида "какой-то текст Kappa" и смайлы никакими служебными знаками не отображаются.
> Проблема только в том, что есть еще и расширение bttv
Эта хуйня только новые смайлы добавляет в твич?
Аноним 22/05/20 Птн 10:39:46 #427 №1697342 
>>1697310
И зачем? Для практики как рах полезным будет не использовать сторонние библиотеки, которые напрямую решают задачу. Это тоже самое, что написать калькулятор в виде вызова системного калькулятора. Ну а хули, "у меня обертка".
Ничего сложного в твоей задаче нет. Подключаешься к нужному вебсокет каналу, парсишь оттуда сообщения, переводишь и выводишь результат. Bttv эмоуты установленные для конкретного канала можно посмотреть на сайте, т. е. перед обработкой сообщений канала тебе нужно будеи спарсить названия смайдов с этой страницы.
Аноним 22/05/20 Птн 10:51:49 #428 №1697364 
>>1697250
Где ты такую вакуху нащел что без опыта взяли... а как же тестовое с "ой ну вы не все баги нашли идите нахуй"
Аноним 22/05/20 Птн 11:14:03 #429 №1697388 
>>1696716
Будет задача, будут решения.

Первый вопрос в том, ради чего ты прерываешь исполнение.

Вот в твоём примере, у тебя есть содержательный и важный код:
def do_shit() -> None:
____'''Эту функцию будет вызывать другая - "сигнальная" функция'''
____print(f'Shit called at {time.perf_counter()-START}')
____print(f'Shit got: {random.randint(1,1000)}') # имитируем какую-то херню

Насколько пользователям программы важно, чтобы эти строчки напечалались друг за другом? Ты ведь понимаешь, что у тебя переключение потоков может произойти в любой момент, эта функция не атомарна, и в момент МЕЖДУ принтами может что-то произойти? Исполнение переключится куда-то ещё, другая функция что-нибудь напечатает. Оно точно устраивает?

Как говорится, добро пожаловать в мир многопоточного программирования.

В случае async-await такой проблемы нет. Переключение в предсказуемый момент. Правда если у тебя тяжёлая фукнция, то тебе надо явно разрешать переключение в какие-то моменты.

Вариант: ты просто раз в сколько-то итераций тяжёлого цикла запускаешь
await asyncio.sleep(0)
что разрешает переключение задачи на другую.
Аноним 22/05/20 Птн 11:21:40 #430 №1697399 
>>1697342
Ну не скажи, элементарного бота сделать думаю не сложно. Но один хуй будешь по гайдам делать и мало чему научишься. А так я по тихоньку ковыряю твичио, дописываю и обучаюсь питону.
Аноним 22/05/20 Птн 11:35:51 #431 №1697421 
>>1697342
>ну и чего, используешь свои фреймверки, так ничему не научишься, надо самому писать всю обработку, и орм самому пилить. Атак лютая копипакста получается просто
Аноним 22/05/20 Птн 11:59:53 #432 №1697467 
4ced22a63c8181920972d0a5b9ee7f67715e5aed.png
>>1697388
есть тупой и стандартный паттерн: в лог добавляется ИД задачи-треда и перемешивание вывода никого больше не ебет.

И можно еще нескучных эмодзи добавить.
Аноним 22/05/20 Птн 12:03:12 #433 №1697474 
Screenshot125.jpg
Не, вы заценити эти паравозики!
Аноним 22/05/20 Птн 13:03:08 #434 №1697559 
>>1697421
Речь идёт именно о практике и обучении, да для практики и обучения полезно писать всё самому. И глубина начала зависит от того уровня знаний который ты хочешь получить.
>>1697399
В том то и дело, что гайдов никаких не нужно. Достаточно проанализировать запросы и повторить их из своей программы. Ковыряя чужой софт ты обучаешься не питону, а работе с API этого софта.
Аноним 22/05/20 Птн 13:06:37 #435 №1697561 
Антоши, как в VS code убрать один отступ перед кучей выделенных строк?
Ну короче как выделяешь строки, жмешь таб, они улетают на уровень глубже. А как наоборот?
Аноним 22/05/20 Птн 13:09:25 #436 №1697567 
>>1697388
Если кстати реализовать тот пример через async и делать await asyncio.sleep(0) после каждого числа num в цикле for, то время выполнения увеличивается в 3 раза... решение которое помогло: сделать в том месте строчку

if num % 10000 == 0:
____await asyncio.sleep(0)

но вопрос, фиг ли переключение контекста настолько сильно ебет остается открытым
Аноним 22/05/20 Птн 13:10:10 #437 №1697568 
>>1697561
shift + tab
Аноним 22/05/20 Птн 13:18:49 #438 №1697575 
Помогите. При таком раскладе переменная par будет определена в p?

for x in result:
par = dict['u']
p = {
"Parent": par
}
Аноним 22/05/20 Птн 13:46:26 #439 №1697609 
>>1697567
Ты просто сам подумай, сколько работы должно совершиться для переключения контекста. Там надо идти в event loop, ставить задачу в планировщик и т.п.

Естественно думать надо. В конкурентном программировании в любом случае думать надо. А как ты хотел?

Для моего ноутбучного проца переключение требует на уровне 10 микросекунд. Если uvloop подключить, раза в 2 ускорение, pypy ещё сильнее, но даже pypy 2 микросекунды на простых примерах.

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

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

В полноценных приложениях вычислительные задачи должны в отдельный процесс, не поток, а процесс выноситься.
Аноним 22/05/20 Птн 13:58:27 #440 №1697618 
>>1697575
Ты что сделать-то хочешь?
Аноним 22/05/20 Птн 14:18:17 #441 №1697631 
>>1697559
Ты пишешь хуйню которая с легкостью отпугнет любого изучать. Если ты это делаешь намерено то пошел ты нахуй токсичная хуйня, если ты делаешь это для защиты своей самооценки, поищи другие способы сохранить свое чсв не через унижение попыток других.
Применяя инструмент, попутно можно понять как он работает, ты же понимаешь что в шариковой ручке крутится шарик?, а вот твои "это все не то, надо писать все с нуля" уничижают стремления юнцов и вгоняют их в "я тупой юзаю готовое" состояние.
Аноним 22/05/20 Птн 15:04:56 #442 №1697675 
Screenshot126.jpg
Screenshot127.jpg
>>1697609
>Ты просто сам подумай, сколько работы должно совершиться для переключения контекста. Там надо идти в event loop, ставить задачу в планировщик и т.п

Блядь, надоели уже.
Вы откуда лезете? Из Яндекса или Амазона?

Ребятки, достаем ручки и листочки, открываем Методичку:

>Preallocated virtual memory is a staggering ~80 GB (due to 8 MB stack space per
thread!), but resident memory is only ~130 MB.

это реально имеет смысл если ты пишешь какой-то суперплотный сервер, но в действительности ты своим кривым sql положишь сервак намного раньше.
Аноним 22/05/20 Птн 15:20:33 #443 №1697690 
>>1697467

О посоветуйте архитектуру вот какой штуки:

я хочу забабахать некую Аналитическую Платформу :
на сервере крутить подготовленные мной jupyter notebooks чтобы конечные юзеры не могли их менять, не могли скачать реквизиты доступа к данным в sql или других api, не могли скачать элементы нотебуков распиханные в py-файлы.
Но могли конструировать самостоятельно графики, что-то отфильтровывать, скачивать готовые отчеты себе в эксель и тд.
То есть, как бы веб-интерфейс без джанги.

По сути это будет замена metabase, который себя не оправдывает.
Это типичный корпоративный ебенейших размеров софт на яве, который, в общем, не делает главного. Непонятная хуйня какая-то. Создал там кое-как пару таблиц, поебался с mysql tengine=federated, но все равно неудобно. А с графиками вообще пиздец.
Аноним 22/05/20 Птн 15:20:48 #444 №1697691 
>>1697631
Ну да, вариант "сам был новичком и научился на своих ошибках" почему то даже и не рассматривается. Одни попытки унижения и детекты токсичности. Узнаю забитого омежку с двача.
В любом случае, я просто высказал своё мнение, он может его послушать и сделать свои выводы. Какие - мне абсолютно похуй, для меня ничего не изменится всё равно.
Аноним 22/05/20 Птн 15:46:04 #445 №1697726 
>>1697215
У меня A= [array([100, 200, многа чисел]), array([300, 400, многа чисел])]. Твой код выдает array([300, 400, многа чисел]), то есть последний array из списка, но весь. У тебя работает, т.к. у тебя a = array([300, 400, многа чисел]). У меня же поверх этого обычный список.
>>1697282
Вот тут работает. Как я понял за счет конвертации моего списка в np.array A= np.array(A).
Аноним 22/05/20 Птн 15:47:17 #446 №1697727 
>>1697618
Стать программистом за 300к час
Аноним 22/05/20 Птн 15:55:46 #447 №1697738 
image.png
Лол, аноны, почему-то VSC думает, что \a это управляющий символ (и я потом получаю ошибку при аутентификации). Как это вырубить?
С "local\pidor" например нормально.
Аноним 22/05/20 Птн 15:58:20 #448 №1697743 
>>1697738
Правильно думает. Эскейпи через \\
Также можно raw strings с префиксом r"\a huli"
Аноним 22/05/20 Птн 15:58:53 #449 №1697744 
>>1697738
Выход очевиден Переименовать пользователя alexey в pidor
Аноним 22/05/20 Птн 16:07:44 #450 №1697749 
Утечка памяти в тестах -- как бороться?
Аноним 22/05/20 Птн 16:08:16 #451 №1697750 
>>1697749
и как выявить?
Аноним 22/05/20 Птн 16:12:33 #452 №1697752 
>>1697743
Он так же будет думать, когда я буду перебирать пару тысяч имен вида domain\name в списке?
Аноним 22/05/20 Птн 16:14:46 #453 №1697754 
>>1697691
За базаром следи.
Аноним 22/05/20 Птн 16:15:59 #454 №1697756 
>>1697752
Это работает для значений, которые ты определяешь коде.
Если оно получено другим путем, то похуй.
Аноним 22/05/20 Птн 16:47:38 #455 №1697779 
image.png
>>1690482 (OP)
всем привет, хочу встроить один свой код на питоне в бота в телеге, поставил telebot, но у меня тут проблема в том, что в библиотеке Telebot, как в принципе и в api телеграма нет ни input, ни его нормальных аналогов, поэтому я просто ебанул нахуй вот так вот как на пикриле, присваивая переменной текст сообщения. И вот проблема в том, что после того как бот выводит сообщение, то сразу начинает выполнять код дальше, в итоге на практике это выглядит так:
я пишу ему сообщение чтобы запустить, следом он пишет мне текст с вопросом на который нужно ответить цифрой, и тут же начинает прогонять код, не дожидаясь ответа. Берёт суёт в переменную моё сообщение которое я ему написал в начале, затем суёт его в integer и жидко пукнув выдаёт ошибку что не может преобразовать строку в целое число, по понятным причинам

Так вот вопрос: как мне сделать паузу в telebot чтобы как в стандартном инпут код продолжал работу после того как я напишу следующее сообщение?
Аноним 22/05/20 Птн 17:03:01 #456 №1697786 
Есть в питоне какое-нибудь обозначение для 0+? То есть число близко к 0, но чуть больше. В написанной формуле это выглядит y → 0+. Вручную задавать 0.000многанулей0001 некрасиво.
Аноним 22/05/20 Птн 17:14:15 #457 №1697795 
>>1697786
1e-10 == 0.0000000001
Аноним 22/05/20 Птн 17:19:47 #458 №1697798 
>>1697795
Я имел в виду что аналогичное numpy.inf. Какой-нибудь numpy.zero+. Модуль не важен, просто как аналогия.
Аноним 22/05/20 Птн 17:23:52 #459 №1697802 
>>1697798
Нет. Ты сам подумай. inf имеет конкретное представление в процессорах, особое значение, "бесконечно малое" не имеет. Всегда у тебя конкретное число.
Аноним 22/05/20 Птн 17:24:57 #460 №1697803 
>>1697798
Я с таким не особо сталкиваюсь.
Глянь ещё math.isclose
Аноним 22/05/20 Птн 17:32:34 #461 №1697806 
Есть такого вида код:

string ="some random text"
new_string = string.split()

for word in new_string:
____for letter in word:
________if ...
________elif ...
________else ...

Как сделать чтобы цикл for word in new_string прекращался если в цикле for letter in word выполнялось бы хотя бы одно из условий? Т.е. если letter в любом слове равна r то выходило бы из цикла целиком и не проверяло остальные слова.
Аноним 22/05/20 Птн 17:36:30 #462 №1697809 
>>1697806
Если достаточно да или нет, то можно через any.
Если нужно будет достать конкретное значение, то придется как-то выкручиваться, нет брейков для внешних циклов.
Аноним 22/05/20 Птн 17:38:42 #463 №1697811 
>>1697809
>нет брейков для внешних циклов.
Я уже догадался. Брейк прерывает проверку буквы в слове, но не проверку остальных слов.
>Если достаточно да или нет, то можно через any.
не очень понял. Мне надо сделать так что если в слове одна из букв соответствует условию, то выходило бы из цикла целиком.
Аноним 22/05/20 Птн 17:45:14 #464 №1697820 
>>1697811
Ну вообще для этого можно обойтись одной итерацией, а не смотреть каждую букву.
if letter in word:
___break

Способ с any:
res = any(letter for word in new_string if letter in word)
Аноним 22/05/20 Птн 17:51:56 #465 №1697825 
>>1697811
а если примерно так:

string ="some random text"
new_string = string.split()

for word in new_string:
____for letter in word:
________if ...:
___________if найдена нужная буква:
__________________break
________elif ...
________else ...
___break

прервётся внутренний цикл и после его окончания прервётся и внешний
Аноним 22/05/20 Птн 17:52:54 #466 №1697827 
цикл.png
>>1697806
ищет букву 'i' если находит, то цикл прирывается
Аноним 22/05/20 Птн 17:59:53 #467 №1697840 
>>1697803
math.isclose проверяет на близко ли мое вручную заданное число к 0, при этом точность тоже сам задаю.
>>1697802
> inf имеет конкретное представление в процессорах, особое значение, "бесконечно малое" не имеет.
Звучит убедительно. Придется просто задавать число самому.
Аноним 22/05/20 Птн 18:00:11 #468 №1697842 
>>1697825
Внешний в любом случае прервется, норкоман.
Аноним 22/05/20 Птн 18:01:13 #469 №1697843 
>>1697827
а если вместо i надо сверится со списком символов? Если написать if list in word пишет что левый операнд не может быть списком.
Аноним 22/05/20 Птн 18:11:43 #470 №1697852 
>>1697843
Сравнивай сеты.
Аноним 22/05/20 Птн 18:19:26 #471 №1697853 
>>1697852
Это как? Впервые слышу это слово
Аноним 22/05/20 Птн 18:23:28 #472 №1697859 
if op is hui.png
>>1697843
Аноним 22/05/20 Птн 18:27:03 #473 №1697864 
Django или Flask?
Интересует соотношение зп, времени затраченного на вкатывание и необходимые начальные+дополнительные навыки.
Аноним 22/05/20 Птн 18:27:04 #474 №1697865 
image.png
>>1697853
Аноним 22/05/20 Птн 18:28:26 #475 №1697869 
>>1697859
Ищет подстроки, а не символы.
Аноним 22/05/20 Птн 18:49:54 #476 №1697892 
hui.png
>>1697869
Аноним 22/05/20 Птн 19:04:23 #477 №1697913 
>>1697892
Ебать ты нахуевертил.
https://ideone.com/difp2v
Аноним 22/05/20 Птн 20:34:41 #478 №1698071 
Screen Shot 2020-05-22 at 8.31.31 PM.png
Надеюсь здесь не кроют хуями начинающих, как на php борде.
Начинаю только работать на питоне, хочу заебашить силениум.
Вылезает вот такой шматок говна (пикрил)

Я понимаю что силениум находится не в деректории питона, но дальше наши полномочия все.

Аноны, объясните в чем проблема, очень хочу вкатиться
Аноним 22/05/20 Птн 20:44:54 #479 №1698095 
>>1698071
Судя по ошибке, в переменной file нихуя нет.
Аноним 22/05/20 Птн 23:35:01 #480 №1698414 
>>1697474
Что здесь? queue.Queue в которую кладутся задачи, а логгер их вытягивает раз в N мс?
Аноним 23/05/20 Суб 00:18:50 #481 №1698448 
>>1698095
переменной вообще нет
import selenium - все что написано
run и я обосрался
на macOS High Sierra пишу, в сублиме
Аноним 23/05/20 Суб 00:23:44 #482 №1698461 
>>1698071
У тебя питон 2.7? Как ставил селениум? Возможно последняя версия не совместима с питоном 2.7
Аноним 23/05/20 Суб 00:32:47 #483 №1698481 
>>1698448
У тебя какая-то хуйня с питоном. Поставь отдельно третий и пользуйся им.
Аноним 23/05/20 Суб 00:37:49 #484 №1698487 
>>1698461
3.7
>>1698481
c IDLE то же говно
Аноним 23/05/20 Суб 00:38:41 #485 №1698489 
>>1698461
ставил слениум через pip/терминал
Аноним 23/05/20 Суб 00:50:35 #486 №1698498 
>>1698487
Ну ошибка с вторым, разбирайся.
Аноним 23/05/20 Суб 01:29:54 #487 №1698540 
>>1698487
А в PATH походу ссылка на 2й, раз оно у тебя через 2.7 пытается открыть
Аноним 23/05/20 Суб 01:35:23 #488 №1698542 
>>1698540
разобрался, cпасибо огромное
Аноним 23/05/20 Суб 03:05:56 #489 №1698594 
Где найти чела шарящего за sympy и matplotlib? Нужно решить пару тройку заданий по лабе, а самому в этой параше разбираться не хочется.
Аноним 23/05/20 Суб 09:13:25 #490 №1698675 
>>1698594
Че за лабы
Аноним 23/05/20 Суб 09:40:41 #491 №1698679 
>>1698594
Молодой человек, вы охуели. Вам бесплатно препод разжевывает материалы платных курсов и дает актуальные знания.
Аноним 23/05/20 Суб 10:40:58 #492 №1698702 
>>1697864
Django, на фласке нет работы
Аноним 23/05/20 Суб 11:08:32 #493 №1698721 
>>1698679
Ничего, сейчас заплатит за то, чтобы за него лабу сделали, через N лет будет платить за курсы, чтобы в ИТ вкатиться.
Аноним 23/05/20 Суб 11:22:33 #494 №1698726 
>>1697864
Странный вопрос, начать мог бы сам с поиска по вакансиям ХХ.

Такой альтернативы сейчас нет, сейчас альтернатива Django vs Aiohttp.

Aiohttp примерно как flask, только асинхронный.

Django большой тяжёлый энтерпрайз-фреймворк, с официальной документацией на 2000 страниц. Имеет самостоятельную ценность.

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

Ниша Джанго - большие сайты CRUD-направленности, ниша aiohttp - сетевые сервисы, где в том числе используется веб-взаимодействие, но лишь как часть.
Аноним 23/05/20 Суб 11:31:36 #495 №1698730 
>>1698726
Посмотрел ХХ, ни на aiohttp, ни на flask практически нет чистых вакансий, в основном их только через запятую перечисляют, что неплохо бы. Пара штук только, где aiohttp основное, но не единственное, что надо.

Для Django/Django Rest есть и чистые вакансии.

Аноним 23/05/20 Суб 12:21:37 #496 №1698748 
>>1698730
Как aiohttp кстати соотносится с django (который де-факто синхронный даже в 3.0)? Есть примеры проектов, написанных на плотной связке этих двух?
Аноним 23/05/20 Суб 12:30:35 #497 №1698754 
>>1697820
>>1697825
Я сделал вот так:

for word in new_string:
____if any(letter in russian_letters for letter in word):
____print(f"-----> russian_letters detected!")
____break

russian_letters это список из русских букв. Оно работает, но иногда пропускает строки в которых есть русские буквы. Почему так? Я хуй знает как при таком условии можно пропустить строку хоть с 1 русской буквой.
Аноним 23/05/20 Суб 12:31:29 #498 №1698756 
>>1698754
>for word in new_string:
>____if any(letter in russian_letters for letter in word):
>________print(f"-----> russian_letters detected!")
>________break
Быстрофикс
Аноним 23/05/20 Суб 12:47:46 #499 №1698770 
>>1698748
Примерно никак, кусок асинхронщины добавили в 3 версии, но основные операции все еще синхронны, хотя можно на свой страх и риск убрать некоторые ограничители. А так жди 4 версии еще года полтора, в ней уже допилят асинхронность на базовом уровне.
Аноним 23/05/20 Суб 12:54:32 #500 №1698773 
>>1698675
Лабы по матану и линалу. Графики там строить, матрицы, производные, дифференциалы, поверхности второго порядка
>>1698679
У этого препода в его каловых материалах код зачастую даже не запускается, дохуя ошибок. Да и я перепутал, нужно онлайн кр решить за час, а не лабу.
Аноним 23/05/20 Суб 13:08:13 #501 №1698782 
image.png
Аноны, можете, пожалуйста, поделиться Python Crash Course 2nd Edition? Уже спрашивал, но переехал на новый пк и забыл скинуть её себе.
Аноним 23/05/20 Суб 14:25:54 #502 №1698840 
>>1698770
Просто я видел связки вакансий aiohttp + django. Это как понимать вообще?
Аноним 23/05/20 Суб 14:47:19 #503 №1698860 
>>1698840
епта позвони и спроси, мы откуда ебем что за вакансия?
может у них часть сервисов круды+админка и они на джанге, а часть хитрые запросы в базу
может была джанга, а сейчас ебашат на аиохттп
Аноним 23/05/20 Суб 15:24:23 #504 №1698887 
>>1698860
>>1698770
То есть если я хочу периодически отсылать асинхронные запросы на сторонние ресурс, то с Джангой этого не сделать? В общем ситуация обстоит так: есть набор url (объявленный в settings либо в utils), каждые 5-10 минут необходимо совершать на них запрос, идеальным будет асинхронный вариант чтобы не ждать их последовательно, но... выходит что запихать asyncio + aiohttp внутрь Джанги не выйдет? Слыхал про Celery, вроде он так может (скоро собираюсь читать мануал) - это поможет?
Аноним 23/05/20 Суб 16:18:52 #505 №1698952 
Как проверить что все элементы в списке равны?
Аноним 23/05/20 Суб 18:10:21 #506 №1699099 
>>1698952
list.count(list[0]) == len(list)
Аноним 23/05/20 Суб 18:39:50 #507 №1699152 
>>1698887
"Запихать внутрь" не выйдет - поток, в котором исполняется код Django, не займется другими вещами, если ты создашь в нем цикл asyncio - он будет крутить этот цикл, пока в нем не закончатся задачи. То есть в идеале можно сократить время ожидания с 5-10 последовательных вызовов до одного самого медленного.

Проверь - может этого будет достаточно. В ином случае, Celery поможет.

А еще это может не быть частью приложения. Запросы может передавать и просто скрипт по расписанию, а результат складыать в ту же БД, которой пользуется твой сайт.

Хотя... Celery фактически сделает то же самое.
Аноним 23/05/20 Суб 19:58:37 #508 №1699248 
>>1699099
Это разве проверяет не длину элементов?
Аноним 23/05/20 Суб 20:27:44 #509 №1699277 
>>1698952
for item in my_list:
if item != my_list[0]:
print('Loh')
break
Аноним 23/05/20 Суб 22:32:08 #510 №1699508 
В таблице/модели может быть несколько primary key? Как это?
Аноним 23/05/20 Суб 22:43:57 #511 №1699526 
>>1699248
Нет. Изучай ещё.
Аноним 23/05/20 Суб 23:33:11 #512 №1699564 
Перекат
>>1699561 (OP)
>>1699561 (OP)
>>1699561 (OP)
>>1699561 (OP)
>>1699561 (OP)
Аноним 29/05/20 Птн 09:27:09 #513 №1706449 
>>1690482 (OP)
Сап, в каких программах или при помощи каких библиотек можно создать красивый, ну или хотя бы не всратый дизайн?
Аноним 04/09/20 Птн 22:09:32 #514 №1797603 
>>1692148
comments powered by Disqus