Это копия, сохраненная 7 августа 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Ещё книжек? https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек Богу книжек! https://yadi.sk/d/H-00n-UG3RSQem
Коммуна: https://sites.google.com/view/pypry/
https://pythonprogramming.net/
Вполне неплохие туториалы для ознакомления с той или иной либой.
Но только для ознакомления, т.к. материал устаревает и изначально подаётся поверхностно.
Обязательно к прослушиванию и просмотру:
https://www.youtube.com/results?search_query=Raymond+Hettinger
Аноны, добавляйте свои ссылки на годные онлайн-курсы и т.п. по различным направлениям, если таковые имеются.
Будьте добры, ответьте, пжлста, на парочку вопросов :3
1. Много ли среди вас людей без математического/прогерского высшего образования? Есть ли вкатывальщики с непрофильным ВО, но прошедшие кучу курсиков?
2. Как выглядит сейчас рынок датасаенсеров? В основном народ работает в крупных компаниях, решая практические задачи, или есть независимые аутсорсовые аналитические центры, работающие сразу на несколько контор? Понимаю, что есть и то, и то, вопрос просто в том, чего больше и куда лучше соваться.
3. Как вы своё портфолио составляете и составляете ли? Просто перечисляете, какие модели вы построили и насколько они повысили таргетные показатели?
4. Сколько человек обычно работает над анализом одного датасета?
5. Существует ли потребность в дата-саенсерах, неплохо шарящих в медицине?
Заранее спс за ответ.
Не датасаентист, но работаю непосредственно с ними.
1. Не много, в команде из 12 лишь трое было без профильного ВО, но они были после колледжа и в процессе получения ВО. Они там чисто от армии косили, да. Но тут есть одно но, огромное, ибо они поехавшие на этой тематике и у каждого по куче сертификатов было с онлайн платформ, по прохождению курсов разных, связанных с их работой. Поэтому фору дали бы любому товарищу с ВО.
2. Держать отдел датасаентистов - дело дорогое. Успех никогда не гарантирован, на обучение одной модели, могут уйти недели, на охуенном оборудовании, а результат может оказаться говном. Поэтому чаще всего это либо отдел в крупной фирме, либо же сама фирма состоит на 90% из ресерча и продает свои услуги.
3. Ничего не могу сказать.
4. Просто над анализом? Один. Над аналитикой - один. Над построением модели обучения - один. Над использованием модели - один/два(зависит от объема зада решаемых, т.к. обычно юзается куча моделей и каждая отвечает за свое, к примеру распознавание лиц, распознавание номеров автомобилей, распознавание возгораний и т.п.). А ещё есть те кто оптимизируют, тестируют. А ещё обычно идёт разработка в нескольких направлениях.
5. Узконаправленно, но почему бы и нет? Ищи и найдешь.
Спасибо!
Есть проект, сейчас в нём используется flask-bootstrap. Формы wtforms получают визуальное отображение опять же с помощью flask-bootstrap.
Но оный плагин использует бутстрап третьей версии.
Не могу выбрать, на какой хуй сесть - использовать просто фласк, импортировать бутстрап как все обычные люди с его cdn прямо в шаблон и прописывать формы самому ИЛИ использовать flask-bootstrap и сидеть на старой версии собственно бутстрапа.
Какие подводные у этих методов?
https://repl.it/repls/OrchidMulticoloredProgramminglanguages
>1, Что для тебя читаемый вид?
Число с плавающей точкой с точностью до трех знаков без нулей в конце и без указания экспоненты
>2, Что насчёт getcontext().prec = n ?
Производятся и другие расчеты с Decimal, которые нельзя просто так обрезать, а менять значение prec каждый раз не очень хорошая идея
сейчас загуглил "округление" Python, и оказалось что всё ещё проще, не надо форматом и конвертацией ебаться. Для округления есть функция round, которой надо сообщить количество тебуемых знаков после запятой
а, лол. Вижу, ты уже пользовался round. И не понимаю что случилось после десятки.
мимо-нюфаня.
хотя я только что вспомнил, что это делает ссайнтифик нотейшн для больших чисел
1000 уже в экспоненциальной записи будет
да. верни g на его пыльное место
попробуй сей костыль:
> f'{value:>.3f}'.rstrip('0').rstrip('.')
Да, это работает, спасибо. Странно, что это никто не добавил в стандартную библиотеку, мне казалось, что потребность в такой вещи, как показывание пользователю данных в нормальном виде должна быть вшита по дефолту
А сколько должно быть?
>>22485
поясни плиз, не понимаю. Применил этот специфаер, но он рубит на общее количество знаков - тоесть есл ставишь ему параметр 4 - то он считает 12.01 - 4 знака, и 2.016- 4 знака, тоесть он учитывает и до и после запятой. А как его отформатить, чтоб он только после запятой работал??
В том то и дело что 4 в данном коде вопспринимается как общее - до запятой и после. Почему? Посмотри на скрин, на число 12.хххх и 2.хххххх
а, точняк. ну тогда не знаки после запятой а significant digits. это даже более дефолтно
Блин, ткни пожалуйста как применить это в моём коде. И где вабще про такое почитать
# the correct conversion (no more SQL injections!)
>>> cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)",
resultlist = [f'{value:>.4f}'.rstrip('0').rstrip('.') for value in list]
про что именно почитать?
Как получить инфо сообщения по его id
Блин, товарищи питонисты, поведайте Жаба-разраберу, заглянувшему к вам на огонек, с хрена ли вы каличные особенности вашего языка пытаетесь выставить как достоинства и преподносите еще как некую "философию языка"?.. Вы там совсем ебанулись что ли?
Недавно видал как адепт Питона до последнего защищал отсутствие public/private методов и аттрибутов, утверждая что наличие лезвий бритвы на питьевой кружке - заебись идея, и надо всего-то держать кружку определенным образом, тогда ты уж точно не порежешься
Либо я тупой, либо в этом python-telegram-bot этого нет. Вообще я не уверен, что это в самом телеграмме есть.
Ты и из жабы сможешь вызвать приватный метод через костыли, если понадобится, я лично пользовался этим во время тестирования.
Глубокое закапывание ни к чему не приведет, если тебе это действительно захочется сделать
Извините, если это тупой вопрос.
тухлая паста
Можешь на pythonanywhere выложить, только там скорее всего какие-нибудь дополнительные тулзы нужно будет использовать (типа flask-sslify). Можешь ngrok использовать.
Вообще можешь видос посмотреть, здесь всё подробно показывается.
https://www.youtube.com/watch?v=ZggfQnmQhwY&list=PLlWXhlUMyooaTZA4vxU9ZRZQPCFxUq9VA
А действительно питонист по большей части ебётся со строками?
нет
Технические особенности языка. При большом желании можно сделать защиту от переопределения метода или вызова из объекта-наследника. Только не нужно.
Приватные методы не защита от хакеров, а указание, что этими методами пользоваться не надо. Плюс, это методы для служебных нужд. Для последнего полезно, чтобы не было случайного переопределения методов, и жалко, что этого нет. При желании, можно обойти, если явно вызывать метод класса
MyClass.myMethod(self, args)
он уже не будет переопределён, если в детях сделают аналогичный метод myMethod
Вопрос ультраолдам и профи.
Нужен совет, я вроде достаточно владею VIMом и он мне очень нравится, но один знакомый сказал, что все профи в командах пишут в Pycharmе т.к. в нем есть все приспособы контроля версий, дебагинга, управления проектом, etc и я его понимаю, ведь пайчарм строго специализированный инструмент и должен быть лучшим в своем деле.
Но, он мне почему-то в своей блоатности отвратителен, а вим я люблю. И вот теперь главный вопрос, могу я просто юзать вим и по мере продвижения и возникновения потребностей просто обвешивать плагинами таким образом, чтобы ничего не потерять, но и кодить на высшем уровне?
А еще недавно запустил и увидел какую-то спай лицензию JetBrains Privacy Policy в интернетах пишут, что можно весь спай отключить, но тот факт, что мне его суют под видом пользовательского соглашения, напрягает.
Я в принципе готов осваивать пайчарм, но очень не хочу.
Ответьте адекватно пожалуйста, кто владеет обоими инструментами, почему выбрали тот или иной. Спасибо.
мимо_нюфаня
Алсо, залил пикчу и подумал, что возможно стоит упомянуть, что я правый чад с пикрилейтед.
Тесты это одно. Работа на крупном расширяемом проекте, завязанном на бабках - совершенно иное. Защита от дурака это фундаментальный принцип существования любого производственного процесса, и не только в прогинге
И в телеграме есть, и в этой либе.
https://core.telegram.org/bots/api#message
https://python-telegram-bot.readthedocs.io/en/stable/telegram.message.html
пожирателя тянок
змейку можно создать. каждый день создаю змейку на питоне. бывает даже по две за день успеваю.
для работодателя норм експиреенс думаю
https://repl.it/repls/FaroffDisgustingOutliers
Как переделать регулярку так, чтоб она нашла не только первое вхождение паттерна в скобках, но и все остальные? Учитывая, что эти паттерны мы ищем после того, как нашли кусок 'hi:{'
Сейчас получается: ['"pro":{fgfgfdfg}']
Должно быть: [('"pro":{fgfgfdfg}', "ls":{fgfgffd})]
Весьма просто, оказывается! А я б пытался хер знает сколько времени все в одну регулярку впихнуть.
Спасибо, выручил.
Дано: спискок из 5 слов.
принтом рандомно выводим одно слово
далее нужно из списка его убрать и вывести рандомно слово из 4ех оставшихся.
И так далее.
да я б тоже, но с этим желанием нужно бороться, товарищ
Хочешь поработать в команде(ну, я один, почти, но вместе уже команда) - пиши.
Или тебя заинтересует тематика проектика:
> Программа для детекта дубликатов мемасов и вебмов(пока что нет, но в будущих версиях точно добавим, чэсна).
Пиши.
Принять участие в разработке не готов, но есть идеи или же хочешь потестить - пиши.
Почта для связи -
Как-то так.
Последний раз, честно
import random
m = ["one", "two", "three", "four", "five"]
word = random.choice(m)
m.remove(word)
это идея, в цикл сам завернёшь
print(datetime.utcnow().strftime('%H:%M:%S')) нормалёк
import random
import time
a = ['twoi', 'lubimii', 'spisok', 'anon']
def takeAndDel(a):
el = random.choice(a)
print(el)
a.remove(el)
time.sleep(1)
while len(a):
takeAndDel(a)
Run
twoi
spisok
lubimii
anon
Process finished with exit code 0
Зачем вы так со мной, я же с вами по-хорошему?
Ну окей, гляди.
Юзаю nvim для мелкой правки кода и написания небольших приложений, на парочку файликов. Это ок. Правлю конфиги и т.п. через него, на голых серверах юзаю нано.
Пайчарм збс подходит под крупные проекты. За счёт своих плагинов. Хочешь к бд подключиться и сразу селекты писать? Го. Готовый темплейт для джанги/фласка? Хорошо. Не желаешь ли немного профилирования? Давай. Как насчёт рассмотреть как работают твои потоки/процессы риалтайм? Смотри. И т.д. За это приходиться платить выжраной оперативой и долгой переиндексацией, но оно того стоит.
Я не представляю себе, как бы я разрабатывал свой проект, состоящий из 7 модулей, различного объема в виде.
Ну и глядя на коллег постарше, у которых прошел давно максимализм и гикство, понимаю, что пайчарм не зря так популярен ибо они юзают только его и делают это на все 100.
Но выбор все же за тобой, антош. Будет в виме некомфортно - пробуй пучарм, не понравится - потыкай вскод.
это апдейт, т.е то что мы только что получили, в историю сообщений бот не может. Спросил в чати либы ответили что можно только реплайнуть нужную месагу, а получить ее инфо, мне нужно было содержание сообщения, нельзя потому что у бота такого функционала нет
Задачу можном решить костылём, при чём не самым плохим: берешь какой-нибудь Redis с персистенс-файлом и заводишь туда базу сообщений, после чего по необходимости селектишь нужные message_id
У тебя какой опыт пограмирования? я пришел к такому же выводу, но решил изменить концепцию общения с ботом, не прибегая к БД. В общем я в пограмировании месяц, и спрашиваю потому что мне интересно я нормально думаю или я думаю как нюфак
Спасибо, чувак. А скажи вскод может все, что ты перечислил и вообще в принципе заменить пайчарм?
Пользуясь твоим советом буду херачить на виме как привык, а если где-то понадобится - буду уже перекатываться на пайчарм, собственно буду надеяться, что обстоятельства будут продуктивным мотиватором и поперед батьки можно не прыгать. Все правильно делаю?
Я толком просто раньше пайчармом не пользовался, пару раз палкой тыкал, потом долго сидел в вске, а потом и до сих пори сижу в виме. Если окажется, что пайчармом можно не заморачиваться, а на крайняк можно обратно прыгнуть на вску - буду пиздец как рад.
К тому же я как скачал пучарм то больше с ним борюсь чем учусь кодить.
тебе и не надо ничего понимать - запустил проект, создал в папочке проекта .py файл, и ебашиш. ctrl_shift+f10 - первый запуск конкретного py файла, shift+f10 - последующие. Всё, он тебя не искусает! Но в процессе работы будешь замечать особенности и возможности.
> А скажи вскод может все, что ты перечислил и вообще в принципе заменить пайчарм?
В теории может, но для этого попердолиться надо будет, В то время как в пайчарме всё сразу есть.
> Все правильно делаю
Да.
Всё ещё зависит от целей, ибо если ты сидишь дома и для себя там бота для ТГ пишешь, то это одной, а если на работе что-то делать крупное и в команде, то это другое. Вот и всё.
у меня встал вопрос.
короче, беру я через апи грейлога респонс.
выглядит он примерно вот так
Есть ответ от сервера, который выглядит так
{"query":"траляля бла1бла"decoration_stats":null}
Дальше присваиваю респонс переменной и ищу по ней регуляркой вот так
нашелбла = re.search('(?<="траляля :).*?(?=1бла")', переменная)
то есть в результате должно остаться бла
Если я создаю переменную и прямо в IDE придаю ей значение как строку из ответа (x = текст_из_ответа), то поиск срабатывает.
Если я выношу его в переменную и ищу по нему регуляркой как re.search, то получаю None. Пробовал форматировать содержимое переменной, обрамляя его в кавычки - все еще None.
ЧЯДНТ?
"Каличный" питон дал пососать тебе и твоей жабе.
https://www.reddit.com/r/Python/comments/c6rzfp/python_now_beating_java_on_google_trends_worldwide/?utm_medium=android_app&utm_source=share
Как мне найти все слова длины 5? Именно полноценные слова, без цифр и любых других левых символов (хотя бы без цифр)
https://regex101.com/r/q1iSZl/1
Написал это. Но цифры не убираются
вон тебе подсказка полезная, изучи
>[^\W\d_]{5}
т.е. нельзя сказать, что я хочу набор \w без символов из [0-9]? Если можно, то почему не работало?
В регексе работает, спасибо. Но почему-то на ПК чёт не работает. Вроде юникод по стандарту как флаг включен, не могу понять
вкатывальщик-аутист
Л - любой, sqlite - SQLiteStudio, mysql - MySQL Community Edition и тд, зависит от базы данных, которую выбрал... Проще всего тренироваться можно в SQLiteStudio
Прочел "Изучаем" два с половиной года назад, после читал статьи и писал пет проекты пару месяцев.
"Программируем" читал уже совсем немного, т.к. по большей части трогал руками почти все что там было. Имхо книжка такая себе, максимум главу про IPC можно прочитать.
Работаю уже год питон девом.
Фишки вроде ассинхронности, последних аддоны стандартной библиотеки (pathlib etc) прийдется читать в статьях.
+ В книгах не затрагиваются фраемворки, самые популярные тоже придется прочитать отдельно.
>Фишки вроде ассинхронности, последниe аддоны стандартной библиотеки (pathlib etc) прийдется читать в статьях.
Hotfix
сделай сервер в дискорде, ёпта. юзеры спасибо скажут
Два бота для телеграмма будет достаточно? Все на гит лить? Но там же моего бота украдут
Проще всего поставить sqlite там ставить опыты в штатной консоли. В sqlite вся база хранится в одном файле, настраивать сервер не надо, штатная консоль вполне функциональна, подключается легко ко всему угодно, не надо тратить время на то, чтобы админские вопросы решать. Для опытов с sql с головой хватит.
Зайти на yandex.ru и набери фразу "как пользоваться гуглом". Освой эту тему, потом с чатом будет проще.
Дохрена инструкций есть по тому, как писать чат, на любой вкус.
Ну или еще то, что нужно вызывать GetUserName 2 раза чтобы он вернул имя (в питоне), или то что GetLastError() всегда возвращает 6.
Кто-нибудь тут способен объяснить такое блевотное поведение питона ?
Чем тебе не нравятся функции вродe os.getpid() и os.uname() ?
То, что ты описываешь, не питон, а подключение внешних либ, да ещё в винде. Не скажу, почему так происходит.
Каких внешних либ ?
os.uname() и os.getpid() из себя представляет такое же точно обращение к API виндовс, следовательно, я ожидаю определенный результат, пытаясь самостоятельно вызвать эти функции, причем не через win32api из pywin32, а через ctypes.windll.
Ну в общем, несмотря на разные результаты одной и той же (по идее) функции все получилось.
Потому что тогда надо разбираться с корректностью механизма подключения. Я ничего не могу посоветовать, давно не подключался, и не под виндой.
За то, что ты получаешь с помощью базовых модулей языка отвечают производители языка. Если глюки идут при попытке подключить dll/so, то тут что угодно может быть и может питон в этом ни разу не виноват.
А зачем ты отвечаешь то тогда если посоветовать ничего не можешь ?
А что не так? В одном случае у тебя HANDLE (беззнаковый инт), в другом ты забыл restype, и у тебя int со знаком. Фактически тебе в обоих случаях возвращают 0xffffffff. Про GetUserName() показывай пример. Для GetLastError() есть use_last_error в конструкторе длл и ctypes.get_last_error() соответственно - ты не один, питон тоже может дергать Windows API, и к моменту вызова GetLastError() напрямую, его могло уже распидорасить (тем же ctypes, например).
Ридми красиво и адекватно оформлен?
За сколько комитов сделал каждого бота?
Комиты адекватные пишешь?
Боты можно прямо из репы запустить?
Какой функционал у ботов?
ПЕП8?
Автотесты написал?
Это вопросы на вскидку.
Анон, а книги из шапки реально мастхев? Которые intermediate python и python cookbook? В каком-то прошлом треде видел пост, что шапка устарела или что-то вроде того
Лично я учился по книге Byte of Python (Укус питона) + курсы на udemy, 3 месяца ушло чтобы вкатится в бекенд разработчики
Блин, как-то пиздец быстро, я тоже хочу в бэкэнд, прочитал пока половину укуса питона, но я читаю на английском, и там половина времени уходит на то, чтобы изучать, как это всё на английском называется. До этого только на крестах байтоебил в вузе один семестр(нас учили на системных).
Ну 3 месяца это реально как в мечтах вечных вкатывальщиков
Блядь, ты меня затроллил толстотой, да? Пиздец, до меня дошло только сейчас...
Ну так то я не с нуля вкатывался, у меня за плечами 13 лет в ИТ админом, при чем умею и на джаве немного и на си шарпе, девопсил на паре проектов, предлагали перейти в отдел разработки на C#, но си шарп не нравится, поэтому уволился, и пошел на бекенд разраба (Django),
А че с гитом обязательно нада работуть УУУСУКА. Я понял, спасибо за рекомендации.
Бтв я все равно не понимаю мне обязательно то что я сделал нужно вываливать в паблик чтобы оценили работу? Боты написаны на паблик апи, для меня они исполняют только очевидные общедоступные функцции.
> нужно вываливать в паблик чтобы оценили работу?
Ну вот прикрепил ты ссылку на гит к твоему резюме, а как тех.спецы, которые будут тебя собесить глянут на твой проект и профиль?
> А че с гитом обязательно нада работуть УУУСУКА
Ну да, в 90% вакансий идёт требование работы гитом. В оставшихся 10% это подразумевается по дефолту.
> они исполняют только очевидные общедоступные функцции
Ну мне это ни о чём не говорит)
Ты главное распиши в ридми какие именно проблемы решают данные боты, и именно для тебя. Или может какие-то крупные сообщества их юзают и т.д., что б было понтно что ты не скопипастил их просто от нехуй делать.
я вот эту тонкую грань скопипастил / осилил сам не понимаю.
Я использую 2 API для телеги и инсты, взаимодействия этих штук исполнение нужных мне задач выполняют они. Программирование не сложное и доковыривание и выполнение задач для меня видится задачей тривиальной. Разработка же самого АПИ видится для меня сложнее, отсюда моя работа для меня обесценена и ничтожна, потому что основную работу сделали за меня я взял лишь готовый инструмент. Но с другой стороны, готового решения под мои задачи я не нашел и написал это с нуля, хоть и использую готовые инструменты, вроде бы этим и занимаются в пограмировании, используют готовое нечно для реализации чего то другого. Если идти по пути первого размышления, то изобретение нового языка будет лишь объективно хорошей работой, языка который будет общаться сразу с машиной на бинаре.
Я так понимаю для портфолио делай то что тебе не жалко выложить в паблик, если ты делаешь что то коммерческое не думай о том чтобы это можно было использовать у себя в портфолио как код, как реализованный продукт упомянуть можно,.
Хорошо пасиб, пойду дрочить гит
>поэтому уволился, и пошел на бекенд разраба (Django),
Какой стек на фронт наиболее актуален и какой у вас используют?
Во фрилансе на джанге жизнь есть?
На фрилансе важно знание питона и его библиотек, таких как scrapy и beautiful soup, очень много заказов связано именно с парсингом или скрапингом инфы в инете.
Стек везде разный, там где раньше работал использовали angular (который второй сейчас уже 7 или 8) так как там все на C# пишут и typescript им удобнее. А вообще много проектов с React, я бы его советовал учить, Vue хорош, но его сейчас переделывают и говорят что он с будет сильно отличаться от старого, поэтому я бы пока не стал Vue учить.
Можно ли вкатиться с нуля в Биг Дату?
В данный момент работаю инженером СВЧ (заебало). В универе было достаточно матана, линала и ОТС, так что с ними проблем нет. Но вот реально ли туда влезать с нуля или нужен опыт разработки на Питоне?
Чувак твоя жизнь твои правила, тебе никто не запрещает, пробуй пытайся, не попробуешь не узнаешь. Не слушай никого, есть желание иди и вкатывайся, я 10 лет назад уезжал в ДС, мне друзья и родственники близкие говорили, что я вернусь через месяц, что не смогу и не выдержу, в рот я их всех ебал, я смог, уже 10 лет тут живу. С родными и друзьями до сих пор общаюсь, но смотрю на них и радуюсь что сьебался, а они так и живут в верхних залупках от зарплаты до зарплаты, так нечего и не достигли. По data science на sharewood видел курсы на русском от skillbox. В общем не ссы, дорогу осилит идущий.
Да забыл добавить, для твоих целей хватит основ, главное освоить библиотеки вроде как numpy
Ты тредом ошибся и пример забыл.
И как там устроился? В смысле, не приходится ли пол зарплаты за съемную квартиру отдавать, добираться на работу по два часа с утра и два часа вечером обратно, и все такое прочее, или реально пришел к успеху, ну, не знаю, там, долларовый миллионер с квартирой в центре и загородным поместьем в поселке для миллионеров?
вместо первой пикчи
pyautogui.click(10, 5)
Перестает работать в эмуляторах и играх? Мышь наводится на нужные координаты, но клика не происходит.
Нужно как-то по-хитрому туда клики передавать? Если да то как?
В целом считаю что не плохо, конечно не миллионер, но есть квартира двухкомнатная, семья, дети, ипотеку правда ещё 7 лет платить. Есть небольшие накопления, раз в год Турция или Тайланд, в целом жить можно. Не люблю хвастаться. В планах прокачаться до синьора и завести трактор в европку ну или в США в идеале, так как понятно, что лет через 20 тут будет СССР 2.0
крч все игры в стиме запускаются в неком пространстве, где программно клик не обрабатывается, вот и все.
Его можно обучать? Т.е. у меня есть текст на английском но шрифт мудреный, библиотека его считывает плохо, можно ее как-то обучить? Вручную присвоив значения образ буквы=буква?
>Tesseract-OCR.
> лучше всего
Ха-ха-ха. Лучше всего с обработкой текста справляется файнридер. А тессеракт это бесплатная хуитка от безысходности.
Ну и чем это так разительно отличается от жития твоих родичей, только локацией, и все?
Все это оффтоп конечно. Но во первых качество жизни, во вторых медицина, образование в ДС лучше, нежели в мухосранске где ближайший универ в в соседнем городе. В третьих в плане культуры, ни одного театра там нету, два кинотеатра, да и в целом кругозор и мировоззрение у них сужено, мне на второй день становится скучно с ними, поговорить не о чем, люди всю жизнь живут в одном месте, многие на море не были никогда. При этом есть зависть типа "вот тебе хорошо живёшь в Москве, деньги гребешь лопатой, миллионер уже поди", но как только предлагаю им тоже перебраться в ДС, то слышу кучу отговорок, "типа ну это самое там дорого, пол ЗП будет на съем уходить", "у вас там куплено все работу не найдешь", " вот щас деньжат накоплю и на следующий год, приеду покорять Москву и лучше тебя буду жить", только все это отмазки. Как-то так.
Есть боевой опыт джанги/django rest framework/тесты-питесты моки, немного asyncio, пишу убористый красивый код, могу и какой-нибудь functools-itertools ввернуть вместо того чтобы костылить индусятину, могу написать базовый докерфайл-композфайл (но обычно этим девопс занимается). Фронтенд не знаю и не планирую, всегда работал только по бекенду.
Не знаю, самому интересно.
На чистую джангу мало вакансий, особенно чтобы 130+. Для бэка хотят кучу сопутствующего, Redis, Rabbit, Celery, Mongo, Postgres, GraphQL, ещё всякое, смотри сам, сама Джанга даже главное.
Если бы я набирал, то спрашивал бы про возможности, вроде как написать свой middleware, как профилировать ORM -обращения к базе, как модели внутри устроены и т.п., это если надо разобраться, действительно ли ты Джанго понимаешь.
Я это чисто для бампа, не обращай внимания.
хз если я вдруг найду удаленку я лучше буду жить в своём городке на крайний случай крайцентре. тут уютно в отличие от дс, алсо уезжать за 9000 км от всех кого знаешь и всех родственников как-то не очень
Показываю пример
И свой скриншот
В конструкторе dll может и есть, но если мы имеем дело с WinAPI, без мониторинга ошибок, не обойтись, нахуя кому-то понадобилось бы писать без use_last_error и почему нельзя включить это по-умолчанию ?
...
cell1 = pos[1]+5,pos[0]+5
Как передать значения cell1 в screen
вот как-нибудь попроще, вроде того:
screen(cell1)
А не вот так
screen(cell1[0],cell1[1])
> Показываю пример
> nSize = DWORD(0)
Вот твоя ошибка. nSize - [in, out], т.е., ты туда пишешь размер lpBuffer своего, а GetUserName туда пишет, сколько она в lpBuffer записала (или, если буфер слишком маленький - какой минимально нужен был буфер). Ты вызываешь функцию с нулевым nSize, она фэйлится и пишет, что тебе нужен буфер на 6 байт (len(b'xorke\x00')), и поэтому на второй раз срабатывает. Можешь сделать сразу nSize = DWORD(len(lpBuffer)), тогда одного вызова будет достаточно.
> без мониторинга ошибок, не обойтись
Оно достаточно редко нужно. Я навскидку могу только один пример вспомнить, когда без GetLastError никак - CreateMutex и ERROR_ALREADY_EXISTS. Во всех остальных случаях достаточно проверять возвращаемое значение, и похуй, по какой причине оно там сфэйлилось, поделать с этим ты все равно ничего не можешь. Например, что будет, если я на белом скриншоте подгадаю и сменю юзернейм как раз между первым и вторым вызовами GetUserName? Правильно, хуйня будет. И что, теперь в while ее вызывать?
Спасибо большое!
А как по человечески лучше передать значения этих переменных в цикле?
Не перебором
screen(cell1)
screen(cell2)
screen(*cell3)
А в несколько строк. Проститу за супер нубские вопросы.
Сделал:
>pip install PyQt5 pyside2
Так же установил PyQt5 и pyside2 для проекта в PyCharm.
Накатил простую форму в QTDesigner, сконвертировал результат в .py, вышло так:
https://pastebin.com/GsyHvTMk
Но у меня QT нихуя работать не хочет. При запуске через командную строку выдаёт:
qt.qpa.plugin: Could not find the Qt platform plugin "windows" in ""
При запуске через PyCharm выдаёт:
Process finished with exit code -1073740791 (0xC0000409)
Решений в гугл нихуя не нахожу толковых, советуют вроде проверить PATH но он у меня чист.
ууу, блять, добавил вот такую хуйню:
import PyQt5
import os
dirname = os.path.dirname(PyQt5.__file__)
plugin_path = os.path.join(dirname, 'qt', 'plugins', 'platforms')
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = plugin_path
и всё заработало... не пойму где эта переменная должна храниться по дефолту, почему она у меня пуста, если не задать вручную. Не подскаете?
Ключевое слово здесь "если", поверь найти удалёнку не так то просто, есть два варианта, допустим если ты уже очень опытный специалист с большим багажом знаний то да можно работать удаленно, ну и второй вариант поработать в офисе, показать себя ответственным и самостоятельным спецом и договориться на удалёнку. А так искать удалёнку из мухосранска и без серьезного опыта практически безнадежно. Сам так хочу, планирую дорасти до крепкого мидла или синьора и тогда уходить на удалёнку, чтобы зимовать в теплых странах. Кстати работать удаленно не так то просто, попробуй не отвлечься на родных или сериал или ютубчик, тут уже размазать ответственность на отдел не получится, у каждого свои таски и по ним будет видно, кто пашет, а кто хуи пинает, опять же часто юзают таймтрекеры и следящий софт за тобой, чтобы видеть твою работу. В общем не все так просто как ты представляешь.
Ну смотри, когда я жил в верхних залупках, я толком ни чем не интересовался, какие то игрушки, иногда сериалы, не изучал языки, так как не с кем было общаться, не следил за собой, так как мое окружение это были чмони с жирными волосами, лишним весом и гнилыми зубами, я курил, весил 120 кило, выпивал каждый вечер по 2 литра пива. Как переехал, стал видеть как живут люди, познакомился с кучей людей, окружил себя умными и стремящимеся быть успешными людьми, начал следить за собой, скинул 30 кило, не курю уже 7 лет, на алкоголь тоже забил, могу в пару раз в год на корпоративе пару бокалов виски с колой выпить, прочёл много книг, изучаю иностранные языки, был в Европе, в Турции ( не только в туристической), Израиле, в общем посмотрел мир, познакомился за границей со многими людьми, есть друзья везде и не просто друзья попиздеть или побухать, а реальные, кто может приютить или помочь чем нибудь. Интересы и взгляд на жизнь совсем другой.
> тут уютно в отличие от дс
Ну, конечно, в мухосрани с гопниками, в которой в 11 вечера на улицу выйти страшно - уютно.
>алсо уезжать за 9000 км от всех кого знаешь и всех родственников как-то не очень
Когда ты молодой и здоровый самое то. Иначе зачем жить.
>>25580
Ребят, ну подскажите. Создал вручную в переменных средах системную переменную QT_QPA_PLATFORM_PLUGIN_PATH со значением пути к папке platforms. Теперь вроде работает само, но почему так вышло что у меня этой переменной небыло, раз она должна там быть? Или всё должно работать как то иначе?
Как насчёт ещё поработать над изображением и разделить его рили на цифры, а то тут число 10.
Может вообще стоит собрать свою базу элементов, если у тебя всё однотипно. Давай больше входных данных, а то нихуя не ясно.
>Ну, конечно, в мухосрани с гопниками, в которой в 11 вечера на улицу выйти страшно - уютно.
ты в прошлом остался чтоле
сейчас за внешку скорее в москве убьют вон вчера постили очередную новость каак в мск кого-то зарезали за внешку
>Может вообще стоит собрать свою базу элементов, если у тебя всё однотипно
Как с этим работать? Да, там шрифт один и тот же, я бы хоть в ручную прописал, если бы знал как.
join, group by, count
Смотря какой SQL и какие виды JOIN он поддерживает.
Главный нюанс в том, что могут быть роли, у которых нет пользователей. Тогда надо вывести 0, но обычные join ничего не выведут, по идее right join нужен для этого. Но можно и без right join, но запрос будет сложнее.
Обычный классификатор можно запилить, на том же керасе/скитлерне/пайторче.
Но для начала нужно нарезать все буквы-символы по одному и сложить в соответствующие папочки.
То есть все буквы "в" в одну папку, в соседнюю папку все буквы "к", и т.п. так для всего.
Затем будешь пробегаться по строке с символами, нарезать её на элементы и отдавать их в нейронку для классификации.
Какой курс выбрать ? Онлайн или офлайн?
Какие школы посоветуете ?
Dive into python
Если выбор стоит только между онлайн или офлайн курсами, я бы выбрал офлайн, в прошлом году ходил 3 месяца на JavaScript и Nodejs, отдал 18к, но многое понял, много задавал вопросов прямо на занятии, вместе с преподом сидели разбирали код, в общем считаю офлайн курсы намного лучше онлайн курсов. Если платит фирма, я бы пошел на индивидуальные офлайн курсы или же ментора взял, чтобы он подтянул. Как то так.
#смотрим PATH
dir = sys.path
#Проверяем записи в PATH если есть запись с \lib, которая скорее всего относится к пайтон, останавливаемся на этой директории
for i in dir:
if "\lib" in i:
path = i
break
path = path.replace('\lib', '\scripts')
convertor = path+'\pyuic5.exe'
Или есть какие-то более изящные способы узнать корневую директорию пайтон?
Что гуглить по этому поводу?
Еще вопрос если у меня два бота один на вк другой на телегу, и они оба должны работать сообща, то как мне импортировать один в другой? Будет ли хендл телеграмма ждать обновления, пока вкашный будет лайкать/спамить/ делать бочку? Что это за вопрос, тоже параллельные потоки?
Поищи Moscow Python, у них есть Learn Python курсы, вроде годные и офлайн в то же время. Преподы все крутые, у них и подкасты годные на Ютубчике.
Ты про asyncio или про что?
Параллельно ничего не выполняется, если в разных процессах не запускать.
Сразу, если про asyncio и некоторые аналоги, то в каждый момент выполняется только одна задача. Вторая задача ждёт, пока ты разрешишь ей запуститься.
Если ты в коде первой задачи делаешь асинхронный вызов, как
await asyncio.sleep(0), то в этот момент планировщик останавливает первую задачу и переключает на следующую, если она есть в очереди. Пока ты не сделаешь какой-нибудь await явно или не явно, переключения не будет. Ты можешь час считать, у тебя будет висеть 100 задач других, но на них не переключится исполнение.
Как видишь, всё просто.
Если я правильно тебя понял, в цикле будет так:
for cell in cells:
screen(⚹cell)
Если screen что-то возвращает, конечно, тоже можно ив цикле, но удобнее записать это одной строчкой:
results = (screen(⚹cell) for cell in cells)
Я подразумеваю, что у тебя есть некая коллекция, которую я назвал cells.
os.path.join(sys.prefix, 'Scripts', 'pyuic5.exe'), но на линуксе ты соснешь. Скорее всего, Scripts/ уже есть у тебя в path, поэтому просто запускай exe-шник по имени без полного пути.
Спасибо. Да на самом деле мне не запустить надо было, а проверить его наличие. Вся эта конструкция с вызовам os и sys не конвертилась в .exe через Nuitka. сделал проще: при отсутствии самого экзешника и попытке его запуска из командной строки, не обнаруживая такой софтины командная строка возвращает 1. При запуске софтины с ошибкой (неверный аргумент) так же возвращается 1. А при запуске с верным аргументом - возвращается 0.
Тупо сделал:
>check = os.system('pyuic5 --version')
>if check == 1:
> пишем ошибку что пайтон или PyQt5 не установлены
>>26675
Ну так ты не выёбывайся, написано же - я ньюфаг. Поправил бы. Впрочем, это было накидано с горевшей жопой за пару секунд как придумалось, и ошибок синтаксиса не показало, ещё и работало.
>>25943
>>25944
С этим разобрался кстати, правда сам не понял как. Накатил по-новой пайтон, ПиКт5, установил вижуалстудио и по-новой накатил mingw. Теперь другая проблема имеется, но поскольку никто на предыдущие толком не ответил, наверное описывать не буду.
>>25580
С этим тоже вроде разобрался - добавил это:
'QT_QPA_PLATFORM_PLUGIN_PATH = plugin_path
в PATH вручную.
разрешаю
Пасиб, с асинхронностью я вроде понял, послушал Олега на ютубе, но вот с примером моим нифига мне не ясно, покурю доки к телеграму может че то там написано.
Значит все инструкции выполняются последовательно, а зачем асинхронность вообще если и так все происходит в строгой последовательности по дефолту, чтобы расставлять условия переключения к следующим задачам?
Параллельное исполнение не реализовать в одном процессе? Хотя довольно интересное описание по первой ссылке в гугле, почитаю пойду)
Чтобы врубиться и мыслить асинхронно нужно время.
Асинхронностью в первую очередь события обрабатывают. Например, графические оболочки асинхронные. У тебя игрушка, там действие какое-то. Если бы оно шло само по себе, оно было бы синхронным. Но на действие влияет куча сторонних факторов, что ты на клавиатуре нажал или что по сети пришло, это асинхронные события.
Для бэка актуально становится, когда ты с сетью работаешь. У тебя много подключений, ты ждёшь подключений и данных. Это события. Можно параллельно с этим работать, это один подход. Но это плодить треды и процессы и как-то сложно их синхронизировать, это сложно. Можно асинхронно. В синхронном коде ты в основном не считаешь, а ждёшь, пока какое-нибудь событие произойдёт, и ничего не делаешь в это время. Смысл в том, что в это время можно переключиться на другую задачу и поделать её. Как-то так.
С параллельностью в одном процессе у питона туго из-за GIL. В каких-то случаях и треды работают, но не всегда.
Короче, и асинхронное программирование, и многопоточное-многопроцессное, это всё довольно серьёзные и содержательные темы. В них надо долго и упорно разбираться, просто так прочитать и сразу понять не получится, это я тебе гарантирую. Но если захочешь, разберёшься.
Про бота надо смотреть, как там интерфейсы библиотек сделаны. Можно делать асинхронно, можно через треды или процессы. Везде свои плюсы и минусы, везде свои подводные камни.
Короче, мне на столько стыдно осознавать в чем был затуп бота и куда я нахер лез в праллелизм асинхронность, лол. В общем я иэс импорта и не разобрался и не правильно указывал функцию... Но все равно хорошо что покопался и узнал про треды, в одном из ботов они
К слову я вообще не до конца понимаю как работает for...in
Личное мое мнение что for ПеременнаяN in Послеодвательность
Следовательно вся последовательность переходит в переменнуN?
Сука блядь, у тебя трясутся руки или ты слепой от рождения и ты не можешь отсчитать 4 пробела на отступ?
Индентацию пофикси, мудила. Ссука, прямо вижу этого тупорылого школьника, который увидел незнакомое длинное слово и решил забить, ведь хули, все равно же работает
Я нихуя не использую, использует анон выше. Я просто тихо охуеваю от таких отступов.
О господи, я только сейчас понял какую хуйню ты делаешь >>27033
Тебе короче не нужен for.
>Я всего лишь хочу проверить есть ли в переменной country массив denmark
Тебе не переменная country нужна, а твой список countries.
И ты делаешь так:
if "denmark" in counries:
print("Yes")
На случай если табуляция удалится - перед принтом конечно таб
Вообще, в дальнейшем необходимо будет создавать и развивать систему back-end <-> rest-api <-> front-end, с учётом того, что на фронте не просто сайт/шаблоны, а веб-приложение. То есть на беке отрисовывать ничего особо нахуй не нужно будет, с этим будет ебаться макака на фронте, моя задача реализовать логику/бизнес-логику и рест апи.
Можно глянуть на какой-нибудь aiohttp, более современный фреймворк, очень быстрый, с поддержкой современных технологий, от разработчиков питона.
В джанго ничего накрученного нет, только самое нужное, осваивается легко, есть штатные модули, но они легко заменяются.
Джанго это ОРМ и ещё админка в комплекте. Если тебе не нужна развитая система моделей и админка, то наверно и джанго не нужен. Джанго синхронный, там сложно поддержать вебсокеты и т.п., это фреймворк больше для классических сложных сайтов, а не приложений.
Спасибо за информацию, учту.
[print("%s\n%s" % (country, 'yes' if country == 'Denmark' else 'no')) for country in countries]
Хуита нечитабельная
Есть, в джанге/фласке в дебаг режиме искаропки такой функционал есть. Если ты что-то своё делаешь - надо вручную пердолить это.
Сделай бантик, что в консоле будет тебе перезапускать код, когда ты сохраняешь файл с кодом
>>25269
Прямо как у Пелевина:
— Главная мысль, которую человек пытается донести до других, заключается в том, что он имеет доступ к гораздо более престижному потреблению, чем про него могли подумать. Одновременно с этим он старается объяснить окружающим, что их тип потребления гораздо менее престижен, чем они имели наивность думать. Этому подчинены все социальные манёвры. Больше того, только эти вопросы вызывают у людей стойкие эмоции.
— Вообще-то мне в жизни попадались и другие люди, — сказал я с лёгкой иронией.
Иегова кротко посмотрел на меня.
— Рама, — сказал он, — вот прямо сейчас ты пытаешься донести до меня мысль о том, что ты имеешь доступ к более престижному потреблению, чем я, а мой тип потребления, как сейчас говорят, сосёт и причмокивает. Только речь идёт о потреблении в сфере общения. Именно об этом движении человеческой души я и говорю. Ничего другого в людях ты не встретишь, как не ищи. Меняться будет только конкретный тип потребления, о котором пойдёт речь. Это может быть потребление вещей, впечатлений, культурных объектов, книг, концепций, состояний ума и так далее.
— Отвратительно, — сказал я искренне.
Прошёл стажировку по DS, понял, что моё, но в моем мухосранске вакансий 2.5, везде нужен полный день и опыт. А мне нужно закончить последний курс бакалавриата. Что бы такого за остаток лета задрочить? Чем коллеги-датасейнтисты занимаются/занимались помимо DS? Можно и без привязки к питону, с радостью выучу другой язык.
И это у джунов. Правда до налогов. После налогов считай 80 т.р. Так себе.
Если на питон идёшь, я бы какую-нибудь сопутствующую технологию освоил.
Или специализированное, как openCV
Или веб, как джанго или аналоги
Или устроил бы практику по мультитредам-мультипроцессам-асинкио
Или технологии вроде брокеров сообщений, раббит, зероэмку и т.п.
Или работу с базами, SQL-NoSQL
Или можно научиться писать модули на C/C++ к питону.
Одного питона мало, сопутствующие технологии важны и нужны.
В идеале хочу вкатиться в веб на джанге. Начать с фронта (а именно HTML и CSS) или же потом это все догнать, а сейчас сделать весь упор на Питон?
> PySide2.QtWidgets.QTableWidget.itemDoubleClicked(item)
> Parameters
> item – QTableWidgetItem
Надо узнать что по рандомной ячейке в QTableWidgets даблкликнули.
Мимо-2-день пытаюсь в PyQt
сам скрипт с параметрами, который мне нужно вызывать из другого скрипта-враппера, выглядит вот так:
vol.py --plugins="/ololo" -f alala --profile=elele pluginname
Такой импортировать скорее всего не получится. Там будут и всякие argparse, и "if __name__ == '__main__'", и ещё что-нибудь.
Скорее всего при импорте какие-то действия дополнительные потребуются для того, чтобы нужный результат получить, какие-то кривые хаки. Надо смотреть на код.
ИМХО в такой ситуации лучше вызвать как внешний процесс.
Волен, но моя сексуальная жизнь тебя волновать тоже не должна, но если она тебя волнует, то я не осуждаю, имеешь на это право, пока не сталкеришь
Это потому что питон ставишь на винду. Гетеросексуалы на линуксе в таких вещах кодят. Но на линуксе тоже есть гомосеки
учу питон, но застрял
>for i in range( 1, 5 ):
> print ( i )
>else:
> print ( 'Цикл for закончен' )
Вывод:
>1
>2
>3
>4
>Цикл for закончен
Окей, здесь всё понятно, но дальше
>Мы задаём два числа, и range возвращает последовательность чисел от пер-вого числа до второго. Например,range(1,5)даёт последовательность[1, 2,3, 4]. По умолчанию range принимает значение шага, равное 1. Если мы зададим также и третье число range, оно будет служить шагом. Например,range(1,5,2)даст[1,3]. Помните, интервал простирается только до второго числа, т.е. не включает его в себя.
Почему будет [1,3]?
Пототому, что ранж от 1 до (НЕ ВКЛЮЧИТЕЛЬНО) 5. Надо чтоб было 1, 3, 5 - задай до 6.
У тебя начинается перебор i с шагом 2. Первое значение - 1. Второе значение 1+2 =3. Третье значение 3+2=5, но 5 уже выходит за предел.
Почему? Как фиксить?
Игродебилам нужно программировать на крестах и вообще больше интересоваться вычислениями на GPU. А питон для этого не подходит.
Ну здрасти. Всегда так было, ты с чем-то путаешь.
Любые объекты можно в качестве ключей использовать.
"Хешируемые" можно. Но таким можно любой объект сделать при желании, то есть вот классы и экземпляры классов можно использовать. Словари нельзя, впрочем, хотя казалось бы тоже объект.
Ребята, хелп
Вкатываюсь в петон попутно решая задачки
https://www.codepile.net/pile/1jP8xyjb
результат почти, но не совсем.
где я проебался?
например есть у нас строка "abc"
генерируем все возможные варианты из этих букв т.е
abc, bac, cba и тд
лол
нагуглить эту типовую задачку и скопировать код дело нескольких секунд
но нахуа?
лучше скажи где ошибка в коде выше
Потому что такие типовые задачи решаются встроенными средствами, на практике.
Тебе добрый анон указал на либу, которая делает то что тебе нужно. Только он видимо ошибся, т.к. тебе нужна itertools
В чём проблема?
Так же стоит научиться правильно гуглить свою проблему на англицком.
К примеру, запрос python combinations даёт поразительно годные ответы для решения твоей задачи.
https://www.youtube.com/watch?v=nG9nObVSQ6k
Сделал клавиатуру, но она не работает. Что я делаю не так?
полный код:
https://pastebin.com/0cYTcEkS
обезьяна не пропускает пост с фрагментом кода
> чем она лучше циклов for?
Скоростью.
Читабельностью.
Стандартностью.
Правильностью.
> нагуглить эту типовую задачку и скопировать код дело нескольких секунд но нахуа?
Ты в порядке? Я тебе уже сказал, что подобного плана задачи правильно решать именно стандартными средствами, и всё.
>Скоростью.
Your proofs, manya?
>подобного плана задачи правильно решать именно стандартными средствами
Ты про итерейшнс? Надеюсь, рофлишь, иначе даже не смешно.
> Your proofs, manya?
Запусти и узнаешь.
> Ты про итерейшнс?
Я про итертулс.
Вместо того что бы здесь пиздеть, пошёл бы да начал читать доки к стандартным либам - полезная вещь.
>Запусти и узнаешь.
yasno ponyano.
>Я про итертулс.
Спасибо, интересная библиотека, но вопрос был не о том.
Ты пришел повыебываться, в итоге обкакался и обтекаешь. Смысл был самому реализовать алгоритм, а не использовать готовое решение.
Количество перестановок - факториал от числа. 3! = 1x2x3 = 6
Количество вариантов кода типа aaa, aab, aac, aba abb - это количество букв в степени длины слова, 3^3=27
В твоем цикле же 3x3=9 операций. Вообще не бьется, не находишь?
толковый ответ, спс
по моей логике, первый цикл для прохождения по буквам, второй чтобы вставлять букву в разные места
Объясню, предельно упрощенно:
Синхронное выполнение (в одном потоке) - код работает по порядку следования (обычно сверху вниз, лол) в твоем исходнике и соответствует порядку во времени, и может даже выполняться довольно шустро, но внезапно оказывается, что все честно стоят на строке 146 и ждут, когда допишется файлик file.write(MEGA_STRING). После чего выполняются строки 147,148, 149,.. 271 - хуяк! И опять все ждут, когда прочтем из базы хуиту: data = db1.execute("SELECT name
FROM table1 WHERE wtfield = ULTRA_STRING"), а потом идут строки 272, 273, 274... с остальными командами в духе a = b + c и программа успешно завершается.
Асинхронное выполнение (в одном потоке) - это когда ты выполняешь код и, не ожидая готовности к использованию данных из сети, диска, ГУИ и т.д., части кода (например, функции или еще что) могут выполнятся без четкого порядка во времени, но при этом ОДНА ЗА ДРУГОЙ, иногда переключаясь. Происходит следующее: сначала выполняем строки 1,2,3, ... 144, 145, 146 - опаньки, пошло-поехало писать file.write(MEGA_STRING), но мы никого не ждем и выполняем строки 147, 148, 149 ... 271 - опа! выполняем чтение data = async db1.execute(...) и не дожидаясь окончания выполняем строки 272,273 ..., там по пути где-то заканчиваем ввод-вывод в произвольные моменты времени, собираем данные и после этого программа завершается. Мы получили ускорение за счет того, что строки 1-145, 147-270, 272... выполнились без существенных задержек.
Мультипоточное/мультипроцессное выполнение: в данном примере все будет похоже, только перед строкой c вводом-выводом мы заведем новый процесс/поток и пойдем делать это там. Выигрыш такой же примерно. В чем же разница?
А в том, что теперь мы можем исполнять некоторые куски кода ОДНОВРЕМЕННО, если ядра/процессоры/узлы кластера есть. И здесь мы не ограниченны только улучшением работы с операциями ввода-вывода.
То есть, если мы имеем задачу вычислительную: числа от 100 до 500 возвести в 5 степень и вывести полученный результат, то создав 4 потока (при 4 ядрах) , мы сможем вызвать нашу функцию вместо exp5([100,101,102, ..., 500]), как-то в духе:
pool.map(exp5, [[100, ...],[200, ...],[300, ...],[400,...]])
В результате мы получим кратный выигрыш по времени, который не смогли бы никак сделать с одним потоком.
Объясню, предельно упрощенно:
Синхронное выполнение (в одном потоке) - код работает по порядку следования (обычно сверху вниз, лол) в твоем исходнике и соответствует порядку во времени, и может даже выполняться довольно шустро, но внезапно оказывается, что все честно стоят на строке 146 и ждут, когда допишется файлик file.write(MEGA_STRING). После чего выполняются строки 147,148, 149,.. 271 - хуяк! И опять все ждут, когда прочтем из базы хуиту: data = db1.execute("SELECT name
FROM table1 WHERE wtfield = ULTRA_STRING"), а потом идут строки 272, 273, 274... с остальными командами в духе a = b + c и программа успешно завершается.
Асинхронное выполнение (в одном потоке) - это когда ты выполняешь код и, не ожидая готовности к использованию данных из сети, диска, ГУИ и т.д., части кода (например, функции или еще что) могут выполнятся без четкого порядка во времени, но при этом ОДНА ЗА ДРУГОЙ, иногда переключаясь. Происходит следующее: сначала выполняем строки 1,2,3, ... 144, 145, 146 - опаньки, пошло-поехало писать file.write(MEGA_STRING), но мы никого не ждем и выполняем строки 147, 148, 149 ... 271 - опа! выполняем чтение data = async db1.execute(...) и не дожидаясь окончания выполняем строки 272,273 ..., там по пути где-то заканчиваем ввод-вывод в произвольные моменты времени, собираем данные и после этого программа завершается. Мы получили ускорение за счет того, что строки 1-145, 147-270, 272... выполнились без существенных задержек.
Мультипоточное/мультипроцессное выполнение: в данном примере все будет похоже, только перед строкой c вводом-выводом мы заведем новый процесс/поток и пойдем делать это там. Выигрыш такой же примерно. В чем же разница?
А в том, что теперь мы можем исполнять некоторые куски кода ОДНОВРЕМЕННО, если ядра/процессоры/узлы кластера есть. И здесь мы не ограниченны только улучшением работы с операциями ввода-вывода.
То есть, если мы имеем задачу вычислительную: числа от 100 до 500 возвести в 5 степень и вывести полученный результат, то создав 4 потока (при 4 ядрах) , мы сможем вызвать нашу функцию вместо exp5([100,101,102, ..., 500]), как-то в духе:
pool.map(exp5, [[100, ...],[200, ...],[300, ...],[400,...]])
В результате мы получим кратный выигрыш по времени, который не смогли бы никак сделать с одним потоком.
Эту задачу проще решать или рекурсивно, или имитируя рекурсивность через стек, это один подход. Есть другой алгоритм, стека в явном виде нет, смысл в то, что если была исходная последовательность условно стартующая с 1234567, то глядя на какой-то элемент, например
4563172
можно всегда быстро сказать, какой элемент должен быть следующим.
4563217
4563271
4563712
4563721
4567123
...
в принципе, это почти тот же стек, но без стека. В общем подумай. Интересная задачка, чтобы реализовать, просто для практики.
Сюда надо добавить, что треды переключаются в случайные моменты времени, да и само переключение накладно бывает, надо поднимать контекст, кеши могут сбрасываться и т.п. Есть серьёзная проблемы синхронизации, необходимо блочить "критические секции".
В питоне многотредовость вообще будет плохо работать, из-за GIL, это известная проблема. Параллельно код питона работать не будет, ускорение будет только при работе со внешними библиотеками, написанными не на питоне и не привязанных к GIL.
> yasno ponyano.
Рук нет? Я должен за тебя гуглить?
> Ты пришел повыебываться
Было бы перед кем.
Я пришёл подсказать верный путь решения данной задачи и всё.
> Смысл был самому реализовать алгоритм, а не использовать готовое решение.
Реализовывай что-то поинтересней, не надо заниматься тем, что уже готово и отлично работает.
Ты макака что-ли?
Интересует вкупе с pool.map. Как это, блджад, работает???
Если бы создавать треды было бесплатно, эта хуйня была бы не нужна. Захотел выполнить map допустим, создал треды по числу ядер в системе, выполнил часть работы на каждом ядре, убил треды.
Но создавать треды довольно дорого поэтому создается пул воркеров, которым и скармливается работа.
Заранее благодарен
Мне нужна конструкция,которая будет предупреждать пользователя в случаи если он введет не знак,а хуй знает что
Наглядный пример что программа пропускает этот пункт
operand=['=','-','*','/']
while what not in operand:
print('ты хуй')
what=input("вводи внимательно блядина")
вот-вот и я в ахуе. я не понимаю принцип работы. пиздец уже всех заебал этим вопросом и никто конкретно не ответил!
при том если убрать скобки то будет работать так как это работает. ну как-то же высчиытвается это множественное нот в множественных скобках ёбана врот
какой весь код? там нет никакого кода, я в оболочке просто балуюсь различными командами. всё на скрине
суть в том БЛЯДЬ что почему в выражении
not (not (not 2) ) == 5 он даёт ТРУ при любых числах и вне зависимости от количества нотов. и только при двух нулях в выражении
not (not (not 0) ) == 0 он даст фолс
Он сначала делает "==" а потом инвертирует самым первым(левым) нотом результат.
а почему "=="? он же скобки первым деложен делать. извини, пожалуйста, а ты можешь мне раписать всё на схеме. ну записать это выражение и там по пунктам со стрелочками всё разложить, молю
анончик, смотри какой прикол. вот я вообще уже не понимаю как это работает.
пожалуйста, распиши за эти выражения максимально подробно, каждое действите отметь цифоркой и распиши что оно делает. молю. я пол дня мозг себе ебу наверное и спать не лягу пока не разберусь.
Он и делает сначала скобки, но самый левый нот не в скобках, поэтому он делается последним, уже после проверки на равенство.
АААА ДОШЛО
СПАСИБО АНОН, ТЫ САМЫЙ САМЫЙ ЛУЧШИЙ НА ЗЕМЛЕ. АНОН, ТЫ ЛУЧШИЙ ПРОСТО ОХУЕННЫЙ. СПАСИБО ТЕБЕ НАКОНЕЦ-ТО Я ПОНЯЛ.
возьми то выражение, пронумеруй как в школе на уроке алгебры каждое действие и под каждой цифрой подпиши что он делает. вот тогда я пойму.
я пол дня уже заебался гуглить и всё такое делать. нихуя не знаю и ты кстати тоже, ты здесь только кукарекаешь. если бы ты знал ты бы расписал там от силы 6 действий.
хорошо, а как ты это обхяснишь тогда. почему ему похуй на цифры? кроме случаев когда там 0 0
открой для себя конструкции else if (elif в питоне) и else в языках программирования
если те люди так охуенно знают питон то почему они зарабатывают тем что обучают людей ему а не пишут на нём получая 300кк в наносек?
это как всякие уебаны которые учат зарабатывать миллионы, но при этом единственных их доход это обучение на заработке этих самых миллионов
Потому что ты булево значение сравниваешь с числом. А ноль сам по себе булево false.
Для начала перестань писать выражения с неочевидным приоритетом. not (not (not 2) ) == 5 это (not (not (not 2) )) == 5 или not ((not (not 2) ) == 5)?
Затем перестань сравнивать числа с булевыми выражниями.
После этого можешь перестать заморачиваться такой хуйней, которая интересна только разработчикам интерпретатора питона.
Сравнение числа с числом у тебя должно быть под первыми скобками.
Спасибо,я уже решил(конечно не без твоей помощи)
>>> def id(x):
... print(x)
... return x
...
>>> id(not id(not id(not 2) )) == 5
False
True
False
False
А вообще это делается так.
да мне интересно, занимался и буду такой хуетой заниматься. если он вычисляет интеджеры, с булеанами значит он их вычисляет и я хочу понять как.
а блять вот я долбаёб. до меня дошло сейчас что вынося not За скобки я сравнивал не число а not с числом
ёбаный врот, какая я ебанаха-пидораха
pix1 = [8,7,6]
pix2 = [8,8,8]
pix3 = [8,9,8]
pix4 = [8,8,6]
pix5 = [8,10,8]
pix6 = [9,8,8]
Как правильно создать лист из этих параметров и поместить в функцию, для проверки соответствует ли цвет присылаемого в функцию пикселя одному из этих?
def get_pix(x,y):
monitor = {'top': x, 'left': y, 'width': 5, 'height': 5}
im = numpy.array(sct.grab(monitor), dtype=numpy.uint8)
im = numpy.flip(im[:, :, :3], 2) # BGRA -> RGB conversion
pixel= im[1, 1]
if pixel in ??
else:
Заранее спасибо!
pixels = [[8,7,6], [8,8,8], ...и так далее ...]
Это самый простой способ, хотя не самый эффективный. Более эффективно было бы использовать функцию where наверное
Что ты имеешь ввиду?
list = [1,2,3
4,5,6
7,8,9]
Такой, где значения в нем простые и однозначные, я знаю как работает и если pix=1, то if pixel in list. работает.
Но тут в каждом значении pix еще набор значений, т.е. вроде как нужно создать список со списками.
А такое я пока не изучилл, вот обратился за помощью.
алсо, дополню свой пост вычислениями с питона.
Если тебе нужно рисовать картинки для анализа простейшего выражения, ты делаешь что-то не то. Вечер убил на хуйню полную.
не совсем вечер. я с 4-х дня ебусь.
да представь, нужны, люблю когда всё по полочкам разобрано нахуй прямо в разрезе как оно вычисляется.
поясни, пожалуйста почему
not 2 любое другое число это False.
но в тоже время 2 и любое другое число не == True? А только 1, а почему?
Почему такие поделки всегда юзают питон?
>да представь, нужны, люблю когда всё по полочкам разобрано нахуй прямо в разрезе как оно вычисляется.
В уме такие вещи надо делать.
>поясни, пожалуйста почему
Тут нужен вопрос не почему, а зачем.
>>> type(True)
<class 'bool'>
>>> type(1)
<class 'int'>
Как видно, у True тип bool, у 1 - int. Значит где-то (либо перед ==, либо внутри ==, либо после ==, аналогично и not) должно происходить неявное преобразование типа.
То есть сравнение будет либо bool(1) == True, либо 1 == int(True), а напрямую сравнить ежа с ужом нельзя. Смотрим результаты преобразований
>>> int(True)
1
>>> bool(1)
True
>>> bool(2)
True
Так как 2 == True - это ложь, значит имеет место неявное преобразование True к 1, а не 2 к True. Почему я не знаю и знать не хочу.
Почему? Потому что так захотел создатель питона. Неявные преобразования устроены так, что они неочевидны и нелогичны в каких-то случаях, и должны использоваться с осторожностью. not 2 - это говнокод.
Другой вопрос, зачем. Потому что если не писать говнокод, они неплохо сокращают код от кучи явных преобразований. Когда у тебя yoba возвращает число, но ты можешь написать if yoba(), не if bool(yoba()).
Язык, в котором неявные преобразования запрещены, называется языком со строгой типизацией. Разрешены - с нестрогой. Питон более строг, чем жс, но, как видишь, не на 100% строг.
>да представь, нужны, люблю когда всё по полочкам разобрано нахуй прямо в разрезе как оно вычисляется.
В уме такие вещи надо делать.
>поясни, пожалуйста почему
Тут нужен вопрос не почему, а зачем.
>>> type(True)
<class 'bool'>
>>> type(1)
<class 'int'>
Как видно, у True тип bool, у 1 - int. Значит где-то (либо перед ==, либо внутри ==, либо после ==, аналогично и not) должно происходить неявное преобразование типа.
То есть сравнение будет либо bool(1) == True, либо 1 == int(True), а напрямую сравнить ежа с ужом нельзя. Смотрим результаты преобразований
>>> int(True)
1
>>> bool(1)
True
>>> bool(2)
True
Так как 2 == True - это ложь, значит имеет место неявное преобразование True к 1, а не 2 к True. Почему я не знаю и знать не хочу.
Почему? Потому что так захотел создатель питона. Неявные преобразования устроены так, что они неочевидны и нелогичны в каких-то случаях, и должны использоваться с осторожностью. not 2 - это говнокод.
Другой вопрос, зачем. Потому что если не писать говнокод, они неплохо сокращают код от кучи явных преобразований. Когда у тебя yoba возвращает число, но ты можешь написать if yoba(), не if bool(yoba()).
Язык, в котором неявные преобразования запрещены, называется языком со строгой типизацией. Разрешены - с нестрогой. Питон более строг, чем жс, но, как видишь, не на 100% строг.
Потому что питон является лучшим языком для написания тензорных CAS.
import sys from cx_Freeze import setup, Executable
^
SyntaxError: invalid syntax
Ругается, сука. Что не так?
Чяднт?
Но я это копипастнул из книги, лол. Что с ним не так?
>не, я не тупой, раз не могу понять почему 2*3 = 6, прост люблю, когда все по полочкам разобрано
У тебя айсикью хлебушка. Извини, попробуй устроиться на завод.
ты наверное при импорте файл в котором кодишь назвал именем модуля вот он и ругается. попробуй скрипт переиминовать в хуй например
хз, не ебу тогда. я сам ньюфаня
pip install cx_Freeze
спасибо за развёрнутый ответ
примерно верно. Если хочешь точнее - бери decimal.
хуй знает, честно. может быть какое-нибудь очередное скрытое преобразование by pythone
ну надо decimal Юзать. а здесь типа из-за флоат какая-то хуйня там с памятью. не ебу точно. загугли "питон неправильно считает" там может выйдет что-нибудь полезное
спасибо что решение залил. да питон та ещё хуета багованая-лагованая с кучей неясностей. хотя я видел и по хуже.
Там довольно таки популярный бот для инсты на питоне многозадачность которого организована на тредах и расписании https://github.com/instagrambot/instabot/blob/master/examples/ultimate_schedule/ultimate.py
html с css чтобы норм работать ему 3 месяца потребуется
пошёл нахуй, пиздюк ёбаный. съеби из треда, пока я на твою стрижечку из барбержопа не нассал.
распиши тогда ему как он считает и он будет знать.
В общем в 16 году, один чел писал симулятор частиц. вот его проект
https://github.com/grogno/Proto/blob/master/Proto.py
и тред https://2ch.hk/sci/arch/2016-09-25/res/364630.html (М)
Пытаюсь скомпилировать, а питон ругается на
File "proto.py", line 168, in <module>
rungeKutta(particles, dt) #Делает шаг симуляции
File "proto.py", line 115, in rungeKutta
next_positions, next_velocities = Bounce(next_positions, next_velocities)
NameError: name 'Bounce' is not defined
Откатись на коммит назад, заработает
Джанга это все таки бекэнд?
Чё за хуйню ты несёшь? Прочитай хоть один гайд о том, как работает веб.
Почему в питоне до сих пор нет нормальных инструментов типа гредла или карго?
Хуже ведь только в c/c++
Посоветуй почитать что то с тредами и с паралельностью.
Походу они задачи наложились друг на друга, и эта сука пропустила постинг. злюсь на программу которую коряво написал сам типа у неё был вариант сделать все иначе...ну не дебил? Дебил. в целом работает статистика по другим задачам растёт, а запостить не запостил. Он 9апущен на orange pi zero.
еб*ать
Да, по вопросу не ясно?
Гайдов, хуяйдов, пиздец вы блять все обленились, суки. С таким настроем - пиздуй макакой во фронт, или на завод.
Гайды - параша, но на drf ты их в гугле найдёшь ёбаную кучу, все плюс-минус одинаковой парашности. На любом языке. Но это drf, он сравнительно популярен. На тот же flask - уже меньше, на aiohttp - только даташит.
Учи английский, кури даташит, смотри чужие решения на гите, или дрочи паттерны и алгоритмы и делай свои, учитывая ньюансы оформления кода, и выбранной парадигмы.
>5~6k
Код для боинга писали прогеры за 9 баксов в час. Это 1.5к в месяц. А в /b как и здесь рекламируют курсы для лохов.
И даже эти ебучие индусы прогеры изучали программирование, а не какой-то там ЯП.
Почему мне тут не сидеть? Я на бордах уже больше 10 лет, последние лет 5 катаюсь в тематике.
/pr попахивает конечно, но тем не менее. Когда-то я тут сам советы просил.
>>29681
Когда я программирование осваивал никаких курсов не было, только книги Страуструпа, Кормана и Кнута. А сейчас уже бестолку. Ну разве что интересно было проскролить недавно Grokking the System Design Interview
Я тебе сказал, что гайдов, хуева гора, и все одинаковой степени паршивости, если тебя в гугле забанили, это исключительно твои проблемы. Все эти гайды уровня "Пишем свой блог и делаем доступ к статьям/комментам по апи). Их куча на хабре, есть блоги погромиздов и т.д. и т.п.
Если ты не можешь в гугл, или анализ написанного - выкатывайся.
Но опять же, я тут токсичу сегодня, потому что не с той ноги встал.
Как эпилог, несколько перефразирую сказанное:
Анонче, если хочешь овладеть drf, то подойдёт для начала, любой из найденных в гугле гайдов, по нему запилишь первый проект, уровня laba1, а после уже поняв, как примерно на базовом уровне устроен фреймворк, либо сидишь и гуглишь решения на гите, стаке, либо куришь даташит и вникаешь. После реализуешь это сам. Опять же, как писали несколькими постами выше - начинать нужно изучать не яп, и тем более, не фреймворк, а программирование. Без этого увы никуда. И если формошлёпить можно научиться за 2-3 месяца, то вот реализовывать функционал не предусмотренный изкоробки фреймворком - может уйти и 2 года, если до этого не сталкивался с паттернами, алгоритмами, структурами и т.д.
силь ву пле
#include <iostream>
#include <vector>
using namespace std;
int main()
{
long long n, k; cin >> k >> n;
vector <long long> step (n + 1);
step[1] = 1;
for (long long i = 2; i <= k; i++)
step = step [i - 1] * 2;
for (long long i = k + 1; i <= n; i++)
for (long long j = 1; j <= k; j++)
step += step [i - j];
cout << step [n];
}
Положим, есть генератор названий фентезийных городов, с суфиксами, там, двойными корнями и прочим. Этот генератор засовывается в бота для телеги.
Как хранить списки суффиксов, окончаний и прочего? В файле и каждый раз читать? Или прям отдельно забить их в питоносписок явным образом? Что быстрее? Что правильнее, с точки зрения идеологии? MySQL не предлагать, не те масштабы (или те и я чего-то не понимаю?)
кортеж, разумеется
>MySQL не предлагать, не те масштабы
Тогда вообще похуй.
>Что правильнее, с точки зрения идеологии?
Для говноскриптов как-то про идеологию странно говорить. Скорее всего у тебя твоя поделка будет на VPSке работать, поэтому сделай лучше
>прям отдельно забить их в питоносписок
Тем, что сраных десять килобайт данных не надо хранить ни в какой БД. Тем, что там нет сложных запросов. Тем, что каждый селект из твоего злоебучего говна будет насиловать диск на обосраной виртуалке.
И каждый раз код редачить и деплоить при добавлении нового значения вместо того, что бы к базе один раз подключиться
>Тем, что каждый селект из твоего злоебучего говна будет насиловать диск на обосраной виртуалке.
Указал кеширование и никто к диску обращаться не будет
че то гавно какое то
Чет припекло и решил в свободное время подвести под свои консольные подделки гуи, но с пользовательскими интерфейсами мало знаком
У питона есть официальный туториал можешь попробовать его
https://docs.python.org/3/tutorial/index.html
Добавить одну строку и запустить один скрипт для деплоя. Вместо ебучего макакинга вида зайти на виртуалку, запустить пейсон, import sqlite, <тут 5 минут тужения и вспоминания синтаксиса>, хуйпизда.commit()
Даже не знаю.
>Указал кеширование и никто к диску обращаться не будет
Боже, это пиздец. Нести копробазу ради того, чтобы в итоге все равно все в память загрузить.
благодарю
Ну а сколько этих самых имен и суффиксов, сто, тысяча или миллион? Как часто их надо менять-изменять, если вообще надо? Нужны подробности. Если их не так много, то, действительно, можешь просто сделать отдельный текстовый файл и забить туда города. Можно и питоновский файл со списком сделать, но, думаю, что данные надо хранить без привязки к конкретному языку
> tkinter актуален для чего то большего, чем учебное пособие по гуи?
Особо рьяные на нём делают что-то сложное, но ну нахуй.
Можешь попробовать поюзать PyQT, вполне себе ок.
Какой же ты тупой, пиздец просто. Там вся задача на три строчки, а тупорылая макака типа тебя с синдромом утки пытается впихнуть вчера выученную библиотеку в каждый угол, хотя она там нахуй никому не нужна.
>Если он захочет изменять список налету?
>Указал кеширование и никто к диску обращаться не будет
Обезумевший еблан, что ты несешь? Кто кеш инвалидировать внутри процесса будет?
>Если он захочет изменять список налету?
>Если захочет расширить функционал и добавить ещё пару таблиц в БД или полей в уже имеющуюся?
>Если ебучий телеграм бот захватит вселенную
Из-за того долбоебизма вы тут и сидите все, лол. Самый простой вариант всегда лучше преждевременной оптимизации.
>Эти интерфейсы вообще неактуальны как класс,
> все уже давно в веб укатилось.
Предлагаешь мне получать дамп ядра через веб?
Конструктор булко-тролейбуса, ты?
>Предлагаешь мне получать дамп ядра через веб?
Предлагаю тебе вопросы писать с подробностями, а не “ыыыы я тут заибался чо лучше для гуев взять”.
Корки прекрасно в GDB читаются, зачем для них огород из интерфейсов - загадка.
нашел как отключить подсветку повторяющихся фрагментов (дубликатов). охуенно ебет глаза и отвлекает.
А в чем проблема? Нарисовал интерфейс в браузере, кинул туда файл с дампом, сидишь и смотришь. В клиентском JS выбор для формошлепства неизмеримо больше.
Вспомнил. upper() и lower() не работали у меня.
A bug: SQLite only understands upper/lower case for ASCII characters by default. The LIKE operator is case sensitive by default for unicode characters that are beyond the ASCII range
1) Что использовать вместо исключений? Конструкция как понимаю, заметно тормозит выполнение программы.
Просто прописывать жестко детерминированную логику получения конкретных данных от пользователя не заморачиваясь над конструкцией try/except ?
2) Стоит ли выносить авторизацию пользователя в отдельный модуль, или писать прямо в основном коде проекта? Имхо по ощущениям это самый тормозящий процесс. И в обще насколько оправдано использование микроархитектуры в p2p приложениях? Насколько такой подход тормозит выполнение программы, из за обмена данными и импорта модулей?
> данных от пользователя
Данные от пользователя (если это не поток с какой-то мышки или типа того) можно спокойно обрабатывать исключениями. Исключения тормозят выполнение программы когда ты их выбрасываешь по паре сотен в секунду. Ивентов по вводу от пользователя должно быть немного - их спокойно с исключениями можно обрабатывать.
Вопрос был в том, насколько тормозит прогу конструкция try/except а не сами выброшенные исключения
>PyQT
А если попытаться сделать портативный вариант приложения с помощью, например, Pyinstaller, результат не получится ли тяжеловатым, сотни мегабайт даже для самых простых приложений?
А ты не смотрел в сторону готовых приложений для эмуляции, где можно накидать элементы соединить их линиями и запустить, какой-нибудь там NI Multisim, или Matlab Simulink, или похожая программа? Тебе же электронику надо эмулировать, да? Хотя, и для чисто механических систем тоже должны быть симуляторы.
>готовые решения
Не подойдут. Мне на выходе нужен exe-шник с минималистичным гуем, который запустится на любом компе и веб-приложение.
Да вроде нет, по крайней мере не встречал за всё время работы.
> Самый простой вариант всегда лучше преждевременной оптимизации.
Да ты что? Из-за таких как ты потом пол приложения переписывать надо, ибо они выбрали "самый простой вариант" и не подумали о будущем масштабировании и гибкости приложения.
> Из-за того долбоебизма вы тут и сидите все
Но ведь ты тоже тут сидишь? Да и как сидение тут влияет на что-то ещё?
Напомню, это не "мы вам перезвоним тред".
Успокойся, болезненный.
Возможно ли как-нибудь перенести виртуальное окружение с одной машины на другую машину, при чем, эта другая машина не подключенна к интернету? Пусть, для определенности, на обеих машинах стоит убунта.
Docker
>Да ты что? Из-за таких как ты потом пол приложения переписывать надо, ибо они выбрали "самый простой вариант" и не подумали о будущем масштабировании и гибкости приложения.
Невменяемый уебок, остановись. Масштабируемость и гибкость приложения, генерирующего список фентейзиных городов? Ты больной долбоеб, попытайся хотя бы примерно оценивать продуктовую суть задания и траекторию его развития, а не лепить свою ебучую говнотехнологию куда ни попадя.
Когда говно из описания автора вырастет до таких масштабов, что не будет держать нагрузку, то у него уже будет столько денег, чтобы нанять штат переписыльщиков. И вероятность развития телеграмного бота до такого состояния равна примерно нулю.
внезапно двачую этого агрессора. устроили цирк, базы-хуязы, хотя задача уровня лаба1
> хотя задача уровня лаба1
Даже если так, но ведь это же не повод городить структуру, которую потом будет сложно дополнить на ходу или изменить немного(флаги какие добавить или ещё что, к примеру).
Тот анон сделает так, как посчитает нужным, офк, но про вариант с небольшой БД будет знать, почему бы и нет?
P.s. Да и логика, как у того поехавшего, уровня "хули тут думать, ебош так" - не самый лучший вариант, как по мне.
>>30087
> Невменяемый уебок
> Ты больной долбоеб
Прими таблетки, неадекват.
Прошу прощения за задержку - как сделать так, чтобы дочерние окна закрывались вместе с основным?
PyGTK
wxPython
PyGUI
Pyforms
Насчет веса конечного пакета не уверен, но должен быть поменьше pyqt. Отпишись сюда, как найдешь что то компактное, а то все руки не доходят с гуями поиграться.
Я так делал:
res = subprocess.Popen(['ping', '-c', '3', ip], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
output = res.stdout.read()
a = output.decode("utf-8")
Вроде да, а вроде и нет. При запуске скрипта передаю ему параметры таким же образом (['something.py', '-p1', 'val1', '-p2', 'val2']) и тд, но почему то при subprocess.POpen он как то неправильно параметры парсит, потому что если я те же параметры один за одним вобью в терминал, то нормально отработает.
Никому не нужен твой код. Устареет за год
Такие решения как, например, LabVIEW или Matlab Simulink или OpenModelica, могут не только создавать программу на основе графической схемы, но и создавать графический интерфейс, и создавать отдельные исполняемые приложения, и взаимодействовать с другими программами, что позволит в случае необходимости работать и по сети.
Да уж, как то бля непривычен питон. С shell=True заработало, когда команду и процесс запихал вместе в одну строку. без Shell=True сам скрипт запускается, но как то неправильно пережёвывает аргументы и говорит типа "файл не найден". Т.е. именно логика скрипта это выдаёт, сам скрипт точно запускается. Но на stackoverflow питонмейстеры чёт не рекомендуют Shell=True использовать, типа не секьюрно. Хотя если всё запускается без sudo и на моей тачке и я знаю, что запускаю, то может и нет никакой проблемы с этим?
obj.pid = data[0]
obj.ppid = data[1]
и т.д.?
Чому? Очень удобно же. Как вообще в питоне обстоят дела с классами/структурами? Знаю, что в классах можно дефать методы, но про поля когда то давно читал, и там какая то ебатория, что они не как в си-подобных языках работают.
В питоновском for x in y: как то можно из под коробки скипнуть первый объект? В C# я бы например через какой нибудь LINQ сделал бы foreach (var x in y.Skip(1)), а в питоне как с таким дела обстоят?
Ну можешь изъебаться и проверку сделать на то, что enumerate i =10 и скипнуть или опять же сделать срезы типа
for x in y[:10] + y[11:]:
Не совсем понял что хочешь.
a = [1,2,3,4,5]
Фильтрация
filter(lambda x: x>3, a)
Перемножение списка через reduce
from functools import reduce
reduce((lambda x, y: x*y), a)
Ничё конкретно не хочу. Мне просто нужно одну задачу решить на питоне, а я как бе в нём не бе ни ме, но есть опыт на других языках, вот и спрашиваю местных питонистов какие есть аналоги инструментов, которые я использовал раньше в других языках. За filter lambda x: x <3 спасибо, чичяс попробую.
Ты лучше напиши, что именно хочешь. filter вернет объект класса filter, тебе нужно конструкцию обернуть в list, чтоб получить список, с которым можно дальше работать.
list(filter(lambda x: x>3, a))
Раз в каждые N мс я получаю вывод из от работы 3rd party скрипта, который представляет из себя массив строк, каждую из которых я split'чу по \t. Этот разделенный сплитом массив список по сути - некая структура, поэтому я и спрашивал, можно ли как в js без определения структуры произвольному объекту навешивать поля. Мне нужно проанализировать, какие объекты добавились, какие удалились, поэтому после каждой итерации запуска 3rd party скрипта я хочу записывать, какие объекты есть, а потом после i+1 итерации с помощью фильтра any/where логгировать, что такие то объекты добавились, а такие пропали. Вот как в питоне наиболее элегантно создать объект из массива и пофильтровать пару списков?
Ну как же False == True будет False, а False in [False] будет True. Неувязочка. Ну с другой стороны зайдем True in [False] будет False, a False == False будет True. Опять не то, ебучий питон выдает False. Это на знания языка задача была на собеседовании.
Ленивое выполнение c and и порядок слева направо. Выражение эквивалентно
True in False and False == False
После вычисления первой части получаем False и вторая часть не вычисляется.
Потому что в питоне есть нормальная система типов. Если тебе нужно хранилище пар ключ-значение есть замечательная структура данных - словарь. Если тебе нужен класс, создавай нормальный класс. Такой код легче читать, легче расширять и поддерживать.
Если тип данных позволяет, делаешь срез y[1:], можешь сделать так y1 = iter(y) потом next(y1) , после этого цикл for x in y1 пройдет все элементы кроме первого, можешь использовать функцию enumerate, типа for i, x in enumerate(y): if i !=0: <do somthing>, еще есть в стандартной библиотеке модуль itertools для работы с любыми итераторами, классная штука
Т.е. я так понимаю, создаем пул воркеров на Х процессов, через очередь задач внутри пула им подается сериализованная функция и аргументы к ней (если у нас pool.map(...)), и так гоняем воркеры до тех пор, пока все задачи не выполним. А уже пул убивает вручную. Это так работает?
Есть встроенный тип set - множество уникальных элементов, пусть у нас есть некая функция get_data(), которая выдает новые элементы, тогда можно обрисовать примерный алгоритм:
current_items = set(get_data())
log = {}
for i in range(iteration_count):
new_items = set(get_data())
added = new_items - current_items #получаем элементы, которые есть среди новых, но нет среди старых
lost = current_items - new_items #получаем элементы, которые есть среди старых, но нет среди новых
log = (added, lost) #сохраняем кортеж состоящий из множества новых элементов и множества потерянных элементов в словарь log, ключ - номер итерации
current_items = new_items
Не знаю, насколько это элегантно, и правильно ли я вообще тебя понял, просто первое, что пришло на ум.
Может у них внутри теста validate_pin("-123"). Это не самая большая проблема твоего кода
> Может у них внутри теста validate_pin("-123").
Похоже
> Это не самая большая проблема твоего кода
Настолько плохо?
Я вообще не понимаю что делает int(pin) > 0 по твоей задумке. Бросает исключение? Ну или например
>>> len(123)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()
Этот код работает чудом и работать не должен.
> len(123)
с чего ты взял, что у него пин должен быть интом, а не строкой? ну ладно, можно добавить в самое начало пин=стр(пин)
а инт(пин)>0 нужно засунуть в кондишнал ифа к двум остальным условиям, а сам иф убрать нахуй и сделать вместо него ретерн этого кодишнала.
>с чего ты взял, что у него пин должен быть интом, а не строкой
Потому что в посте >>30609 он пишет так в правом скриншоте.
>а инт(пин)>0 нужно засунуть в кондишнал ифа к двум остальным условиям, а сам иф убрать нахуй и сделать вместо него ретерн этого кодишнала.
Человек учится, и тут приходишь ты и такой йоба поясняешь как все сделать от начала до конца, ну молодец, четкий пацан, всем тут пояснил как что нужно делать.
> как все сделать от начала до конца, ну молодец, четкий пацан, всем тут пояснил как что нужно делать.
ну всё, теперь он не сможет этому научиться, я у него такой-то шанс отобрал. метод сократа для тривиальных вещей это трата времени на капчи. лучше обосри моё решение и предложи еще лучше.
алсо
>Этот код работает чудом и работать не должен.
хелпфул пиздец. бтв код этот не должен работать и не работает, он тесты не проходит.
> метод сократа для тривиальных вещей это трата времени на капчи.
Это для тебя тривиальные вещи.
>лучше обосри моё решение
Ты сделал пин=стр(пин), а потом преобразуешь назад в инт. Так себе.
>и предложи еще лучше.
Да регулярку надо писать, хули тут думать. Как-то так, если не проебался (я MLщик и регулярки мне не нужны по жизни)
re.match("^(\d{4}|\d{6})$", str(pin)) != None
>>PyQT
>А если попытаться сделать портативный вариант приложения с помощью, например, Pyinstaller, результат не получится ли тяжеловатым, сотни мегабайт даже для самых простых приложений?
в 20 метров изи влезть, ниже не пробовал. главное из-под чистого пайтона / энвайронмента собирать где только нужные модули, т.к. система несовершенна
Разумеется, нужно еще знать как сам язык работает, лютый дроч на микросервисы(нахуй не нужны, имхо), кафку. Это в дополнение к тобой сказанному на 150к. На 200 хз что еще потребуют.
>нужно еще знать как сам язык работает
Что под этим подразумеваешь ? Знать синтаксис, возможности языка и лучшие практики или глубокое понимание работы интерпретатора, чтобы писать максимально оптимизированный код ?
Все это + как работает список на низком уровне, что он из себя представляет. Как работает множество и что из себя представляет. Метаклассы, их особенности. Что такое type, особенности работы и т.д. Всякие явные и неявные вызовы магических методов. Довольно часто спрашивают такое на собесах.
Хотя я проглядел, что ты написал про понимание работы интерпретатора. И довольно мало книжек, где про это хоть как-то рассказывается. Немного встречается в официальной доке.
Можешь посоветовать книжку, где особенности языка, которые ты перечислил, будут нормально описаны ? Ну или вообще книжку для не совсем начинающих.
python к вершинам мастерства. Местами очень нудная и слишком подробная, я половину книги скипнул. Но в целом довольно годная. Может меня кто из местных поправит или дополнит.
Как устроен python. Только фрагменты брал, там очевидные вещи с интересными связаны, половину глав пропускал.
Чистый python. Сам не читал, но коллеги одобряют.
По джанге могу посоветовать lightweight django. Там она с нуля(т.е. не стого как ствится, а как запускается внутри) по кусочками расписана.
А как же "вглубь"?
Спасибо за список и советы. Буду читать.
Пробел перед "guess".
Вместо "n" и "r" используешь "number" и "running", которые не определены.
inb4 понимаю что доки и гугление
С поддерживаемой lts(1.11 лучше не стоит, 2.2 самая актуальная) или готовиться к 3.0 - тут конечно и баги будут и сырая сама, но будешь на острие, так сказать. Вообще 2.2 лучше всего.
>что из себя подразумевает изучение пайтона по книгам
Тоже что и изучение любого другого языка в любом другом формате.
Изучение подразумевает написание программ.
Это копия, сохраненная 7 августа 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.