24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации https://dumpz.org/ - можно постить листинги, не требует регистрации https://pastebin.com/ - для листингов, регистрация не обязательна https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться ####################################### Вопросы-ответы: А стоит ли читать Лутца, том номер N? Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем - решать тебе, книга вредна не будет, то ты можешь её просто не дочитать и забросить.
Стоит ли читать %книга_нейм%, если там питон версии 2.х? - Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
А что ещё можно читать? - Питон сам по себе очень хорошо задокументирован, и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом? - очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
А как учить джангу? Нахожу только книги по джанге 1.х - У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой, из официальной документации.
В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать - Вот, пожалуйста, та же самая программа, но переработанная под язык Python http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём - брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
>>1521391 (OP) Сколько сейчас пайтон джун со знаниями и парой петпроектов на джанго, но без коммерческого опыта может получать в мск? Хотя бы 50-55 реально выбить?
Там где я живу 0 вакансий, думаю переехать ради опыта
>>1521394 Двачую вопрос и призываю джуна ответившего мне в прошлом треде. Мой вопрос, что спрашивали на собесе и что он конкретно на работе делает. Нужно ли джуну дрочить синтаксис углубленно и окончательно ломать себе мозги ИЛИ лучше задрочить конкретные конструкции/идиомы тех задач что джун будет непосредственно решать.
Как вообще принято покрывать юнит-тестами функции?
Вот, например,
если у меня есть функция, которая разбивает строку по запятым на спиок слов, я точно знаю, что этих слов должно быть 3
какие тесты я должен для неё прописать ? Допустим: Проверка на правильный тип данных возвращаемого значения Проверка на правильную работу функции (забить выходной список вручную для небольшого примера) Проверка на правильное количество возвращаемых элементов в списке
Я немного упростил свою реальную функцию, у меня еще добавятся тесты для разных специфичных случаев, но есть ли еще какие-то основные тесты, которые я упустил?
>>1521512 И еще, если,допустим, делаешь собственный парсер и оформляешь его , как питоновский пакет, нужно ли там прописывать собственные исключения, например для случая, когда на вход подана строка неправильного формата? Или достаточно выбрасывать в коде уже существующий тип исключения, например ValueError, написав лишь там своё сообщение ?
>>1521547 def walk(top, topdown=True, onerror=None, followlinks=False): """Directory tree generator.
For each directory in the directory tree rooted at top (including top itself, but excluding '.' and '..'), yields a 3-tuple
dirpath, dirnames, filenames
dirpath is a string, the path to the directory. dirnames is a list of the names of the subdirectories in dirpath (excluding '.' and '..'). filenames is a list of the names of the non-directory files in dirpath. Note that the names in the lists are just names, with no path components. To get a full path (which begins with top) to a file or directory in dirpath, do os.path.join(dirpath, name).
If optional arg 'topdown' is true or not specified, the triple for a directory is generated before the triples for any of its subdirectories (directories are generated top down). If topdown is false, the triple for a directory is generated after the triples for all of its subdirectories (directories are generated bottom up).
When topdown is true, the caller can modify the dirnames list in-place (e.g., via del or slice assignment), and walk will only recurse into the subdirectories whose names remain in dirnames; this can be used to prune the search, or to impose a specific order of visiting. Modifying dirnames when topdown is false is ineffective, since the directories in dirnames have already been generated by the time dirnames itself is generated. No matter the value of topdown, the list of subdirectories is retrieved before the tuples for the directory and its subdirectories are generated.
By default errors from the os.listdir() call are ignored. If optional arg 'onerror' is specified, it should be a function; it will be called with one argument, an os.error instance. It can report the error to continue with the walk, or raise the exception to abort the walk. Note that the filename is available as the filename attribute of the exception object.
By default, os.walk does not follow symbolic links to subdirectories on systems that support them. In order to get this functionality, set the optional argument 'followlinks' to true.
Caution: if you pass a relative pathname for top, don't change the current working directory between resumptions of walk. walk never changes the current directory, and assumes that the client doesn't either.
Example:
import os from os.path import join, getsize for root, dirs, files in os.walk('python/Lib/email'): print root, "consumes", print sum([getsize(join(root, name)) for name in files]), print "bytes in", len(files), "non-directory files" if 'CVS' in dirs: dirs.remove('CVS') # don't visit CVS directories
# We may not have read permission for top, in which case we can't # get a list of the files the directory contains. os.path.walk # always suppressed the exception then, rather than blow up for a # minor reason when (say) a thousand readable directories are still # left to visit. That logic is copied here. try: # Note that listdir and error are globals in this module due # to earlier import-*. names = listdir(top) except error, err: if onerror is not None: onerror(err) return
dirs, nondirs = [], [] for name in names: if isdir(join(top, name)): dirs.append(name) else: nondirs.append(name)
if topdown: yield top, dirs, nondirs for name in dirs: new_path = join(top, name) if followlinks or not islink(new_path): for x in walk(new_path, topdown, onerror, followlinks): yield x if not topdown: yield top, dirs, nondirs
Для работы с данными одной программы очень удобно реализован вывод в дата фреймы pandas. В книжке Numerical python познакомился с рядами и массивами numpy. Есть хорошая книга или другая обучающая литература по pandas? Документация разработчика просто пугает объемом свыше 1000 страниц.
В какой области лучше начать делать пет проджект, что бы подтянуть базу знаний на практике? Желательно с минимальным использованием библиотек. Т.е. что бы область к этому располагала.
>>1522328 короче если мои навыки ангельского мне не пиздят то ты должен написать функцию def count которая считает количество вхождений некоторого заданного значения в (nested ?) списке и в следующий раз воспользоваться гугл переводчиком который такие предложения переводить уже умеет
>>1522328 Напишите функцию count, которая возвращает количество совпадений (вхождений) в целевом вложенном списке. Вложенный список, это когда внутри списка есть еще списки. a = [['a', 'b', 'c'], [3, 4, 5], ['ji','ri','do'] По сути задача на for/ while и if, elif, else, in.
>>1522417 что такое вхождения? что такое целевой вложенный список? вернее вложенный знаю, а целевой это как? какой-то определённый. дайте, пожалуйста подробный пример этого всего я не понимаю
>>1522671 L это список A это искомое число c считает кол-во сколько прза случилось число в списке. могу сделать и чисто чтобы во вложеном искал на определённой глубине рекурсии. блять ну почему эти условия заданий непонятные всё время загнут какую-то хуйню типа "сколько вхождений в целевом вложенном списке?" что блядь?
Так в том то и проблема блядь в этой книге авторы любят загнуть что-то такое сложное на словах и не предоставить примеры. Там нет примеров, одна строчка текста как задача и всё. Регулярно сюда за помощью обращаюсь. Заебала эта книжка с её охуительными формулировками уже.
Так, котаны. Начал использовать R но проблевался от неконсистентности. Уже было начал учить julia, но эти ваши индексы с 1, ух. Сдался и решил пойти мейнстримным путем. Кодить умеют, монады не пугают. Подскажите какую книжку (на английском) лучше взять? Смотрю в сторону Python for data analysis
>>1522856 Это считает количество всех элементов во всем листе со вложенными листами, если тебе нужно только в одном из вложенных и там гарантированно нет второго уровня вложения, то просто по индексу делай.
Вообще нихуя не понятно из этого условия, что делать, либо ты сам его сам так сформулировал (считай себя составителем задачи и смотри дальше), либо тот, кто составлял задачу - даун.
>>1522671 тип надо проверять так - isinstance(instance, type) вместо второго if должно быть elif
Ну и по условию не понятно, что вообще надо делать, да и по твоему коду тоже не понятно ничего. Приведи пример вводного листа и результат функции, наверняка в твоей книжке это дается.
Типа так: counter_dict = dict() for elem in flatten_list: ....counter_dict[elem]+=1 if counter_dict.get(elem) is not None else counter_dict[elem]=1 count = len([v for v in counter_dict.values() if v > 1])
>>1521394 >>1521441 Отвечаю вам обоим аноны. Вкатился летом в бекенд джуниор питон разработчиком. Работаю уже 5 месяц.
Был всего на двух собесах. Надо знать основы языка ну и основы фреймворка который будешь юзать, например Django или Flask. Чтобы меньше было вопросов на собеседовании, лучше иметь какой нибудь проект на гите, ну или хотя бы с собой принести на ноутбуке, но лучше на гите, так как на первом собесе ноутбук не пропустила охрана и тимлид ебал меня вопросами про слои БД и всякую ебалу, на втором собесе показал код и вопросы были по моему коду.
ЗП сейчас 50к, не ДС или ДС2, то есть для моего города вполне нормально.
Работать в целом не сложно, так как любая задача уже решена на SOF. Сложно когда блять тупой менеджер называет сроки не посоветовавшись с тобой, а потом пытается нагнуть работать в выходные. Со временем научился слать нахуй менеджера, ну или говорю что постараюсь, а сам нихуя не делаю на выходных, напишу пару строк и рассказываю сказки как спал всего 3 часа и спасал мир, в итоге менеджеру приходится сроки подгонять под мои. Проект старый и большой, документации нету, я в нём немного разобрался и поэтому могу диктовать свои условия, несмотря на то что, я нету даже полгода стажа, уже поступают предложения на собес, летом буду искать удаленку, хочу пару лет пожить на море.
>>1523064 Спасибо за развернутый ответ. Скажи, можешь ли ты с нуля написать что то сложное, на чистом питоне? Насколько спрашивают основы языка? Можно быть макакой работающей только с готовыми решениями из библиотек?
>>1523092 у вскода иногда не работает автокомплит,он как будто не загрузил еще модуль,то ли что то там внутри ломается, потому что он иногда хорошо автокомплитит
Я тут работаю над небольшим проектом. По сути это скрейпер, который работает 24/7 и каждые пару минут обновляет базу данных, когда пользовательно открывает главную страничку сайта, информация с бд отоборажается в виде таблицы. Пишу на Python+Flask+PostgreSQL. Возник вопрос. Стоит ли переместить парсер в отдельную программу (пакет)? Хорошая ли это практика? Хуй знает, как такое гуглить.
>>1522877 Работа со словарями это какой-то мрак, прочитал в нескольких разных курсах про них так ничего и не понял как это всё синтаксически оформлять, перебирать, юзать в циклах.
>>1523271 По идее словари нужны были не для перебора изначально, но когда начал гарантироваться порядок все немного изменилось. Там вроде все элементарно же, чего не понял то?
test_dict = {1:10, 2:2.0, 3:'N'}
for element in test_dict: ....print(element) # 1 2 3
for element in test_dict.keys(): ....print(element) # 1 2 3
for element in test_dict.values(): ....print(element) # 10 2.0 N
for key, value in test_dict.items(): ....print(key, value) # (1, 10) (2, 2.0) (3, N)
print(list(test_dict.keys())) # [1, 2, 3] print({v:k for (k,v) in test_dict.items()}) # {10:1, 2.0:2, "N":3}
Анонасы, не подскажите, как завести python3.x на notepad++? Чтобы с автодополнением и по красоте было, перепробовал много вариантов, но так и не смог привинтить хоть сколько-то нормальное дополнение.
>>1523091 Сложное на чистом питоне? Думаю можно, но зачем? Сейчас куча библиотек, которые облегчают жизнь, не знаю как в крутых компаниях типа Гугл, но по рынку 90% это создание веб приложении, а значит Django/Flask, кое где нужны знания докера или celery + rabbit MQ/reddis, но это уже на мидла, советую потратить время на изучение Django + DRF, толку больше будет, ну и создай себе бложик на Джанго, почти туда чему научился, в итоге и тебя польза и от работодателя плюс
аноны, как распечатать список в таком виде? что бы он был и списком и чтобы каждый элемент столбиком был. заебала эта книга со своими охуительными условиями каждая задача мне мозг пол дня выносит
>>1523447 хотя впрочем не нужно. авторы просто мудазвоны. я сделал обычный принт построчный, один хрен в списке слеши адресов удавиваются. не знаю каким местом авторы думали когда подобный высер в условия толкали
Поясните как работают ограничения рекурсии? Почему при значении 1, происходит ашь 12 рекурсий. В то время как при значении 100 доходить только до 87. Я уже весь мозг сломал.
Сап, анон, помоги построить структуру пикрил. Я смог сделать только Бренд и Товар. Категорию я сделал ручками, то есть при создании нового бренда приходится в url ручками прописывать filter(brand__contains=Apple, например). Как сделать так, чтобы можно было прописать все через слаг и у меня через слаг фильтровались модели конкретной категории? причем чтобы можно было добавить бренд через админ панель и ничего в код не дописывать? получается я могу делать связку ModelListView-ModelDetailView, а как делать связку BrandListView-ModelListView-ModelDetailView.
Предположим мне на сервер надо послать несколько json'ов, один из которых содержит флаг, который должен быть установлен на сервере, а остальные собственно обрабатываемую информацию. Как это смоделировать во фласке? Надо ли под первый тип (установка флага) и второй тип (передача данных) заводить отдельные процессы? Или всё делается в одном?
Тупо послать несколько жсонов подряд, сервер последовательно их обработает. Наткнувшись в первом жсоне на флаг, он у себя это запомнит. Всё в одном процессе.
>>1523538 Делаешь два типа данных, один с флагом, другой без, делаешь один общий интерфейс который они имплементируют, делаешь апи эндпойнт который принимает список с типом этого интерфейса, делаешь одну функцию которая обрабатывает тип без флага, вторую - как композицию первого + обработчик флага.
>>1523414 Везде примерно тоже самое, описан базовый функционал, но всё равно не понятно как с помощью него решать задачи. В итоге решаю их без словарей, но в этом нету смысла.
>>1523702 Ну может быть в твоих задачах словари и не нужны. Либо нужны, но тебе не хватает алгоритмической базы, базы по структурам данным.
Словари - это базисная структура данных, позволяющая хранить данные в виде ключ-значение. Вот если тебе нужно хранить данные с возможностью обращения к ним по ключу, значит тебе нужны словари. Всё остальное - дополнительный функционал, чтобы работать было удобнее и чтобы не городить свои велосипеды.
Если обращение по ключу не актуально, то и словари тебе не нужны.
>>1523525 У тебя же вроде линейная структура. Как товар ссылается на бренд, так бренд на категорию. Другое дело, что это какая-то оторванная от жизни модель. Бренд же явно может не в одной категории встречаться. Или это какой-то особенный каталог?
Прошу помощи, программа ищет все простые числа до n-го числа, с помощью Решета Эратосфена. https://pastebin.com/PxXW8Si4, думаю на stackoverflow все объяснено , но я не знаю английского, конкретно непонятна вот эта строка. sieve[ii::2i]=[False]((n-ii-1)//(2i)+1) Непонятно, как вообще работает эта строка,разве ясно как вырезка делается , как я понял, сколько вырезка выдает значений , на такое же число мы должны домножить [False], ни больше ни меньше, иначе выдаёт ошибку , механика мне непонятна. Дальше не ясно откуда взялась эта мудреная формула ((n-ii-1)//(2*i)+1), которая угадывает количество чисел, которым надо присвоить False значения, так как они составные.
def primes(n): """ Returns a list of primes < n """ # (c) Robert William Hanks - https://stackoverflow.com/a/3035188/5741205 sieve = [True] n print("все чётные числа игнорируются и будут пропущены при возврате...\n") for i in range(3,int(n0.5)+1,2): if sieve: print('содержимое решета:\t{}'.format([x for x in range(3,n,2) if sieve[x]])) print(f'i:{i} вычёркиваем все числа кратные "{i}", начиная с "{i}^2": {list(range(ii, n, 2i))}') sieve[ii::2i]=[False]((n-ii-1)//(2i)+1) print(f'sieve[{i}{i}::2{i}]=[False](({n-i}{i-1})//(2{i})+1)') print('содержимое решета:\t{}'.format([x for x in range(3,n,2) if sieve[x]])) print('' * 60) return [2] + [i for i in range(3,n,2) if sieve]
>>1523822 sieve[ii::2i] выбирает все числа кратные "{i}", начиная с "{i}^2. ((n-ii-1)//(2i)+1) = находит сколько таких чисел в твоем листе. Умножая на [Flase] получаем равенство len(sieve[ii::2i]) == len( [False]((n-ii-1)//(2i)+1) ) Дальше на все места sieve[ii::2i] подставляется False
>>1523913 Спасибо, но не совсем понятна откуда взялась эта формула ((n-ii-1)//(2i)+1) , как ее вообще выдумали , я даже подумал проще было бы записать эту строку как sieve[ii::2i]=[False]*len(sieve[ii::2i]) Смотрел , результат получается тот же правильный , но может, так я значительно теряю в скорости ?
>>1524052 Ну ты глупенький? Никто ждуна брать на удаленку не будет. Лучше пройди собес по скайпу и вкатывайся в ДС. Там джунам платят хорошо, на съем хватит и сверху останется.
>>1524154 Я в отличии от диванных пиздаболов бывал в мск и знаю что это такое пытаться куда-то там устроится без московской прописки. А потом очередное дерьмо умничающее статейку прочитало от психолуха и давай покровы срывать хочется ему в рожу плюнуть.
сап, програмач. такой вопрос от нюфага вам возник: ищу работу в вебе (по классике вкатывальщик) и в моем зажопье нет никаких галер на питонщиков джунов в вебе. а если и есть это мидлы и сеньоры куда я уже там все отсылал и меня просто продинамили. но при этом дохуя вакансий на пхп джунов и стажеров. так вот вопрос - стоит ли им слать в надежде что придется быстро переучиваться, или же я там даже тестовое не пройду если мне его вообще вышлют?
Есть примитивная кроссплатформенная софтина, которая должна определенным образом обрабатывать указанные каталоги. Накидал на Ткинтере форму, сделал кнопку добавления каталога в Listbox и удаление выбранного, плюс кнопка старта.
А хочется не простой листбокс, а список с колонками (например, путь к каталогу и статус его обработки), плюс (самое главное!) возможность перетащить в него нужные каталоги мышкой из проводника, а не добавлять каждый раз вручную из диалогового окна. Вот как бы этот драг-н-дроп реализовать правильнее? Ткинтер для таких вещей не особо приспособлен, насколько я понял. Стоит смотреть в сторону PyQt? И если да, то куда копать, а то гуглится не очень пока успешно?
Есть некоторая библиотека, но для моей задачи там может понадобиться всего лишь малая часть тех файлов и функций, которые там присутствуют. Как я могу узнать, какие конкретно файлы и функции используются, кроме как добавлять принт имени файла и функции в каждом файле библиотеки?
>>1524296 Пожалуй, что совсем лаконичного решения нет. Задача нештатная пожалуй.
Варианты решения: 1) описать свою функцию def upd(dict_obj, key, value)
2) унаследовать класс от dict и добавить к нему метод upd(key, value)
>if 'benis' in d: d['benis'] = 'long' >d['benis']='long' if 'benis' in d.keys() else pass по сути одно и тоже , первый вариант даже получше Но мне в них не нравится то, что дублирование ключа идёт, это тут самое некрасивое.
>>1524314 Проще всего написать функцию или писать две строки, а не устраивать синтаксические выебоны. Простое лучше, чем сложное. $d{benis} = "long" if exists $d{benis};
>>1524241 КуТэ точно будет приятней и лучше, хотя бы благодаря КуТэДезигнеру, кол-ву юзеров и докам. Драгндроп делается довольно просто на кутэ. >>1524289 Открыть исходиники и глянуть?
>>1524314 Поехавший что ли совсем, по твоей логике там должно быть None, но это не только противоречит здравому смыслу, но и условию, которое тут за каким-то чертом обсасывается.
Пацаны. Вопрос по Джанго. Есть ли какие то рекомендации или случаи когда надо использовать class-based views или def-based views? В проде используются оба варианта?
>>1524920 s поступает "снаружи" и может быть пустой. Если тупо к потенциально пустой s лепить пробел то эффект будет такой же как с принтом, лишний пробел в начале.
Пипец я только что сгорел нахер. Почему, блэть, в питоне никто не реализовал нормально Friedman ANOVA с post-hoc тестами? В SciPy и в statsmodels его не завезли... Да, в SciPy есть Friedmanchisquare, но он для k>6. А мне надо для k>=2. Нашёл STAC, импортировал, решил потестить, запускаю обычную anova, а он вылетает с ошибкой синтаксиса, да еще и ограничение зачем-то прикручено на равный объём выборок. Пользоваться не вариант.
В общем вопрос... Подскажите, пожалуйста, какие-нибудь хорошие библиотеки со статистическими тестами, на которые можно ссылаться желательно на статьи, опубликованные в научных рецензируемых журналах.
Или тут только костыли и придётся вкатываться в R?
Дают ли сертификаты за прохождение бесплатных курсов какие то бонусы при трудоустройстве? Может платных курсов? Как хуйлу без вышки и корочек доказать профпригодность для работы на галере?
>>1525253 >Дают ли сертификаты за прохождение бесплатных курсов какие то бонусы при трудоустройстве? Нет >Может платных курсов? Нет >Как хуйлу без вышки и корочек доказать профпригодность для работы на галере? Тебе тестовое дадут
Аноны, что-то я разбирался с Python и приуныл. Есть какие-то интересные проекты, которые делают на нем, или до конца жизни придется клепать типовые бэкенды или, в лучшем случае, чистить данные и играться с коэффициентами, изображая из себя ML-спеца?
Сап питонисты, есть директория vagina, в ней папки с разными именами, в них ещё папки с названием huy а в них уже лежат текстовики с дохуя строк текста в которых надо найти строки zalupa и вывести их в отдельный текстовой файл. Помогите это все реализовать.
>>1525487 Посмотрел сам - самое крупное изменение это переход на ASGI и Дафну. У меня сервис еще с 1.11 версии на ASGI и Дафне крутится. Все остальные изменения - мелочь.
>>1521296 Навскидку, мне кажется, свой собственных класс исключений особенно необходим, когда исключение может нести с собой какие-то параметры. А в случае с парсером таковыми могут являться позиция ошибки в тексте, то есть номер строки и позиция в строке, в которой присутствует ошибка. Ошибки я бы лично поделил на синтаксические и "грамматические", не знаю, может быть неправильно пишу. Но в общем ошибки в структуре отдельных лексем это одно, а ошибки в структуре документа это другой вид ошибок. Плюс уже после обработки текста, во время, так сказать, его интерпретации, могут возникнуть уже ошибки иного порядка. Ну, например, в строке не закрыта кавычка. Лексема (литерал) неправильная. Или кириллица в идентификаторе. Следующий класс ошибок - точку с запятой пропустили, скобку не закрыли, операнд без оператора, оператор без операнда. В общем, текст не соответствует грамматике. И тут хорошо бы не просто вывести позицию ошибки, но ещё и написать, что конкретно ожидается. Ну, например, пишу я: x=5+ Парсер знает, что здесь дальше может быть написано число, имя переменной, может быть выражение в скобках... Вот три варианта можно вывести по запросу. Или кратко: «ожидается выражение». Или «ожидается закрывающая скобка». Это так просто (если парсер не вручную костылишь, конечно), но это в стопицот тысяч раз лучше, чем реализовано во многих парсерах, которые просто пишут какие-то нечленораздельные отписки вместо вменяемых сообщений об ошибках. Ну и следующий класс ошибок, который уже парсер определить не может - переменная, например, используется, но не объявлена. Или объявлена, но не определена. То есть она, допустим, должна была появиться в тексте, но не появилась. И здесь опять-таки хорошо бы выдавать вменяемые сообщения с указанием на конкретное место в тексте, на конкретное объявление переменной, а не куда-то в никуда. >>1521295 Ну я лично когда тесты писал, они подбирались на основе реальных глюков. То есть, допустим, вижу ошибку. Выявляю минимальный кусок входных данных, которые приводят к ошибке. Исправляю. Получаю правильный результат. И потом пишу тест, который требует из этих входных данных получить этот результат. Потом уже когда код шатаю в другом месте, в этом месте не сыпется, а если сыпется, то я сразу вижу, что поломал, и не надо потом продираться снова к узкому месту. Особенно помогает, когда правильное решение является как бы синтезом двух неправильных. Тогда ты с одной стороны делаешь костыль, а с другой стороны другой костыль отваливается. Потом подбираешься с другой стороны и тоже подпираешь костылём, после чего отваливается первый. А понять, что и то, и другое конфликтует, но должно работать одновременно, у тебя не хватает охвата взгляда. А вот когда ты второй костыль ставишь, а у тебя первый отваливается и ты сразу это видишь - то вот в этот момент ты прямо как будто прозреваешь. Видишь то, чего иным способом ещё долго не увидел бы. Ну вот я так это использую. А каждую мелочь проверять вроде типов данных - ну не знаю... Я как-то привык, что этим компилятор занимается (не в питоне). А если компилятор (интерпретатор) этого не умеет, то на мой взгляд должен быть ещё специальный софт, анализирующий правильность программ. Вручную этим заниматься — какое-то неблагодарное занятие.
>>1525393 >Что для тебя "интересный" проект? Что-то инновационное, вроде такого, что >>1525417 анон написал.
Везде пишут, что Python очень популярен в научной среде и я купился на это, но при этом он супер-медленный при моделировании по сравнению с тем же Матлабом. Да, иногда можно заюзать numpy, но чтобы получить нормальную производительность даже для задачи n-тел, нужно так хитровыебнуться, что проще уже на C написать.
>>1525596 Ну да, переход на ASGI. Но его еще с 1.11 юзать можно было, просто он в отдельном проекте находился. Алсо, эталонная реализация, Дафна, пиздец какая тупая и медленная. А uvicorn сыроват.
Что вы можете сказать про вот эту https://novosibirsk.hh.ru/vacancy/34152007 вакансию? Я просто не очень понимаю, чего они хотят, эту вакансию они на хх обновляют уже месяца 4, нахуя им там столько джунов? Если это пистон, но не веб, то какие-то нейронки@машоб, почему они тогда напрямую не пишут, что ждут знаний из той сферы?
Посоветуйте материалов что б норм въехать в такие продвинутые темы как: multiprocessing, multithreading, асинхронность
Я так понимаю, что принципы всего этого одинаковы во всех языках, есть лишь ньюансы реализации на определенных технологиях и норм разработчик, который держит руку на пульсе технологий, должен все это знать
>>1525721 Для обхода GIL'a используешь мультипроцессинг, для IO трединг или асинк. В 3.9 для обхода GIL'a еще subinterpreters будут, оверхед от них меньше чем от мультипроцессинга.
>>1523419 А где ты сервер под питонохостинг взял? (Халява есть?) >>1524749 Что-то типа: import re re.findall(r'\d+|[a-z]+|=|-','12qw3vk4=-gjk') # ['12', 'qw', '3', 'vk', '4', '=', '-', 'gjk']
Хочу запарсить css с сайтов. Через asyncio + aiohttp получаю контент сайтов и ищу ссылки на css, но что делать потом? Если запустить сразу так: for future in asyncio.as_completed(urls): _css_links = await future ... _for css_future in asyncio.as_completed(css_links): ___info = await css_future
такое ощущение, что второй as_completed блочит первый
Кстати о серверах Оракл сейчас все ещё раздает свои продукты бесплатно "на попробовать", а некоторые затем остаются бесплатными навсегда. Среди вкусного для веб-макаки: 2 впс с 1гиг рама и 2 ядрами, вроде 40 или 50гигов диска Из менее интересного: БД оракловая и хранилище данных
Вопрос касательно pytest и xdist. Есть куча тестов типа: сначала селениум тычет по вебформам, закрывает браузер, потом 10 минут пинает вебапи, получает ответ или отваливается по таймауту.
Можно ли xdist как-то сообщить, что, мол, с этого момента можно запускать следующий тест из очереди?
Очень не нравится отделение блоков пробелами и табуляцией вместо фигурных скобок. Есть ли какое-то расширение или форк где можно писать с другим синтаксисом? мимо люблю фигурные скобки и ;
>>1526063 с этими отступами не так удобно гонять блоки по степени "вложенности". вместо перестановки скобок приходится гонять каждую строчку. да, можно функцией это ограничить, но не всегда. причем тут перл и спецсимволы? только { } нужны. ; он понимает, остальное и так не сильно отличается от других языков.
>>1526059 Наверняка есть специальные препроцессоры для этого, которые конвертируют фигурные скобки (ну или begin/end) в двоеточия и отступы. Но я о таких знаю мало, да и проблем от них много: иде такой синтаксис не парсят + препроцессор нужно тащить везде вместе с системой сборки..
>>1526117 И поэтому вместо того, чтобы бороться с жсом и сделать для него хоть какую-то альтернативу, ты предлагаешь передавать байт-код на клиент? Охуенное решение.
>>1526070 Переменные в питоне хранят адреса на какие-то объекты.
Когда ты пишешь l = xxx ты записываешь в переменную l адрес объекта xxx, после присвоения там будет уже новый объект с новым адресом.
А вот когда ты пишешь l[:] то происходит операция изменения списка, элементы списка при этом перезаписываются. Может диапазон указать, в данном случае по-умолчанию значения, от самого первого элемента до последнего. При этом сам объект-список остаётся прежним.
Какие знания нужны чтобы вкатиться на джуниора? Мимо сейчас говнокодю на с#(в основном aspnet mvc) в говноконторе, по случайности начав срочно править баги в проектах, когда предыдщий девелопер оттуда нахуй съебался. В шарпе и 10% возможностей языка не использую, кодревью нет, поэтому всем похуй что там в коде, лишь бы быстрее в продакшн и как-то работало. На питоне писал скрипты какие-то для себя, чтобы автоматизировать рутинные вещи, и планирую в скором времени написать pet project на flask vue.
Помогите решить, все остальные вопросы теста сдал правильно, один этот не дается. То что 4ый вариант надо выбрать это понятно, но какие остальные - хз. Сколько гуглил и читал, не помогло
Выделить истинные выражения:
1) GIL замедляет выполнение главного потока управления в Python3, даже если нет других потоков
2) GIL никак не влияет на выполнение отдельных процессов на Python3
3) GIL запрещает одновременное выполнение инструкций байткода в разных потоках
4) GIL нужен для защиты памяти интерпретатора от разрушений
>>1526813 >Для успешной регистрации вам потребуется номер телефона и действующая банковская карта, с которой будет списан и сразу возвращен 1$ или 1€, если нужной суммы на карте не окажется, то регистрация будет невозможна. Виртуальные карты не принимаются, во всяком случае у нас не получилось зарегистрироваться, используя виртуальные карты ЯндексДеньги и Киви. А нахуя они это делают? Надеются, что я за этот прогиб с нагибанием у них когда-нибудь что-нибудь куплю? Наивные.
>>1526838 Только конченные уроды будут ограничивать пользователей в количествах символов в названиях. Это всё равно как если бы ты захотел зарегистрировать ИП, а тебе в налоговой сказали бы, что твоё имя, скажем, Иван, слишком короткое, и в чём проблема сменить его на имя хотя бы из семи букв. К счастью, даже налоговая до такого маразма не додумалась, до которого додумываются некоторые кодовысиратели.
>>1526440 Ты просто тупой. Там нет никаких ограничений. Подсказка: НАСТРОЙКИ СУКА ОТКРОЙ. А с того как ты начал аналогии приводить, вместо поиска решения проблемы - я вообще в осадок выпал. Учись гуглить.
>>1526903 Да я прекрасно понимаю твоё негодование. Надо ж было ответить хоть что-то. Мне только пару раз за весь практикум надо было создать скрипт с коротким именем <=2 символа.
>>1526900 Это тебя верифицируют, защита против злонамеренного использования их сервисов, что ты там какие-нибудь узлы ТОР, какие-то промежуточные прокси или что-нибудь подобное открывать не будешь.
>>1526937 Проблема редкая, но решение напрашивается следующее: Копируешь одну или обе сторонние либы в папку /libs/, одну из них переименовываешь из zalupa в zalupa2, готово! В кода пишешь from zalupa import Zalupa from zalupa2 import Zalupa as Zalupa2 (Предполагая что в PYTHONPATH у тебя прописан путь до папке libs + либы имеют классы с одинаковыми названиями)
>>1526361 окей, а что делать мне если есть знания на джуна чекнул щас вакансии в дс, но в моем зажопье одни мидлы и сеньоры нужны? за 4 месяца поисков так и не встретил ни разу вакансии тупо на джуна про различные специализации я вообще молчу
>>1521391 (OP) Если не могу написать спираль при помощи черепашки, знания в геометрии нулевые, дальше нет смысла учить питон? Сконцентрироваться на школьной математике?
>>1527100 Это не ', а ` (та, которая на букве ё). Иногда этот символ ставят вокруг идентификаторов, чтобы MySQL воспринимал идентификаторы именно как идентификаторы, а не совпавшие с ними ключевые слова, несколько слов через пробел и т. д.. Обычно это излишне. В других СУБД может быть двойная кавычка (") или ещё что-то.
>>1527133 А вот с n угольной звездой нужна школьная геометрия и тригонометрия, ну если будешь реально для всех n делать. Если не можешь пропускай, задания интересные, но для вкатывающейся макаки не важные.
>>1526043 Я хотел слезть с богомерзкого Матлаба и Пиструн смотрелся хорошей альтернативой. В общем то, он ей и является, если тебе ничего кроме работы с матрицами и не надо. Но вот в остальном - как-то он проигрывает. Из-за этого мотивации что-то на нем делать нет. Вот я и попросил накидать чего-нибудь интересного, чтоб воспрянуть духом.
>>1527229 >В чем бля?.. Напиши на нем какую-нибудь нестандартную реализацию конечно-разностного метода, например. А как у него с интегрированием уравнений движения? Ну и что синьор Пиструн может предложить для многопоточный вычислений?
>>1527241 >нестандартную реализацию конечно-разностного метода Задротское мурло меня не колышит. Вероятно есть способы, но я не вникал, ибо не было нужды
>интегрированием уравнений движения scipy и sympy тебе в помощь
> для многопоточный вычислений 1. Интерпретатор PyPy 2. Внезапно numpy и tensorflow пиздато справляются с матричным счетом и без многопоточности 3. если в лоб - multiprocessing
Добрые люди, помогите пожалуйста. Пытаюсь начать программировать и вот даже эта простая программа нихуя не хочет работать в vscode. Пишет какую-то ошибку, при этом если открыть файл в консоли, то всё норм будет. Почему так?
>>1527392 Да ваще пиздец. Ещё хуйня, когда несколько часов ищешь ошибку в функции, которую забыл вызвать. В такие моменты чувствуешь, будто IQ равен возрасту.
Чем обусловлены такие вещи как две рекомендованных пустых строки после импорта или пустая строка в конце файла? (по крайней мере пишарп вечно предлагает это исправить). Принятые нормы читабельности кода?
Питонисты, почему я не могу просто взять и стереть с операционной системы ЛЮБОЙ файл посредством Питона? Неужели Питон не всемогущий? Почему он оглядывается на какие-то там permissions файла. Я приказываю - УДАЛИ, и он удаляет! Что может быть проще. Неужели это невозможно?
>>1527096 Либо перекатывайся, либо бери другой язык/другое направление/другую специальность. Либо ничего не делай. Авось работа и появится (но это прямо очень не точно) я так в тестирование ушёл кстати. Питон для своих задач юзаю и для проектов в универе, но в работе вообще нахуй не нужен.
>>1527702 > две рекомендованных пустых строки после импорта Просто часть стиля, якобы лучше читается.
> пустая строка в конце файла А это издревле принято в unix-like, где считается, что в текстовых файлах каждая строка должна заканчиваться переводом строки, и последняя тоже, если непустая.
>>1527711 Ты сейчас про линукс? Ну мне с дивана думается что по сути удаление мышкой в корзину или удаление через терминал есть один и тот же процесс в коде, просто в одном случае визуализированный а в другом нет. И там и там нужны sudo привелегии. Python просто инструмент который сделает тот же самый код и естественно нужно будет передать sudo пароль. Python сам ниче не удаляет а лишь обращается к написанной функции удаления черещ код.
>>1527711 Ты что-то не так делаешь. Сейчас создал скриптом файлы со всеми возможными разрешениями, затем попробовал удалить через os.unlink(), питон молча удалил всё.
>>1528003 Да флаг в руки собственно. Но джуна на удалёнку не возьмут, а в фрилансе большая конкуренция. Просто никто не даст тебе проект. Но попробовать всегда можно, было бы желание.
>>1528003 Идея насчёт своего сайта/сервиса очень годная, осталось найти тему. Фейкопочту оставь. На фрилансе работу так же реально найти, но тут придется постараться и гарантий нет.
>>1528145 >Идея насчёт своего сайта/сервиса очень годная, осталось найти тему. Пишешь свою имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников и сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
>>1528266 Я думаю многие не знают, другое дело, что он не разобравшись в вопросе нормально лезет сюда и вопрошает, а хули не работает то, должно же, я сказал.
>>1528251 Добавлю что если такая конструкция будет в лупе то производительности настанет пиздос. Создание словаря надо выносить. А то я уже видел такой кусок кода, словарь пересоздается сто тыщ раз ради нихуя, просто заменили им портянку ифов и не подумали.
Добрый день. Есть вопрос: для изучения принципов многопоточного программирования достаточно будет примеров на питоне, или же мне стоит изучить с/c++ и рассматривать это все там?
>>1528489 Собрался учить другой язык, просто чтобы потыкать потоки?
Достаточно ли, зависит от целей. Если разобраться в теории, то хватит. Но имей в виду, что в CPython прироста в скорости от распараллеливания потоков не будет.
Может кто занимался, но нужна весьма не сложная помощь. Пытаюсь залогинится в вк, но он мне обратно кучу хуйни отправляет с ошибками. Порылся в доках апи вк, но там обратно отправляется юрл капчи и идентификатор https://vk.com/dev/captcha_error Помогите ньюфагу
>>1528523 >но в го потоки (горутины) очень специфичные, такое больше нигде не увидишь Вронг. Субинтерпретатры питона делаются именно с оглядкой на горутины.
>>1528597 >CONSTANTS это ж вроде прост названия файликов, я головой по клавиатуре провел. >Pycharm Разглядел у них на сайте либо фри версии, либо триал ПРО. Но поймите меня правильно я из россии, денег нет, а обрезанным продуктом пользоваться не хочется. хотя я может чего-то не знаю
>>1528589 Я уже пытался гуглить, но конкретно здесь чуваки пишут об обходе появлении капчи, но я полагаю что бы произвести авторизацию она так или иначе нужна
>>1528671 >поподробнее В гугле расскажут, я уже не помню конкретно, давно на VSCode перешел. На лине там два файлика в хоумдиректории удалить надо было.
Аноны, решил вкатиться в одноглазую змею с крестов, подскажите чо лучше из сред разработки: VSCode (рекомендуют в thecode.media от Яндекса) или PyCharm (рекомендуют в гайде из шапки)?
>>1528812 sublime text можно интегрировать IDE. Ахеренно удобно всякие там IDE для слабаков. Пишешь по харду код и запускаешь. Учишься анализировать код сам и не допускать ошибок
>>1528835 >всякие там IDE для слабаков Для маленьких проектов соглашусь. А на больших ты можешь заебаться с рефакторингом, в то время как пичарм позволяет вынести класс в отдельный файл и переименовать метод в один клик и выстрелить тебе в ногу из дробовика, если ты в моделях джанго определял внешние ключи строками, а не ссылками на объекты.
У меня есть 2 словаря. Мне надо выполнить операцию вроде d1[key] - d2[key], проблема в том что определенного ключа key может не быть в одном или в другом словаре (а может и в обоих), тогда это значение равно 0. Как это реализовать без быдлокодинга?
>>1527711 Ни хрена он не должен удалять, если твоя программа не имеет на это прав. >>1527721 Ну и что? Табулировать намного проще, чем отсчитывать пачки пробелов.
>>1521391 (OP) Няши, подскажите мне вот чего про регекспы. Есть входной поток. Есть регекспы, описывающие лексемы во входном потоке. Мы можем выделить лексему из строки с помощью re.search, ну, например, так: re.search(s,'word1|word2|word3|word4|word5') А нет ли способа попутно определить, какая именно из ветвей регулярного выражения найдена во входном потоке?
>>1529320 >А нет ли способа попутно определить, какая именно из ветвей регулярного выражения найдена во входном потоке? Попутно это прямо в самом регэкспе? Хз, сложновато. Лучше сделать поиск а потом проверить if match.groups("named_gr") == None
>>1529505 Да не, этот в принципе норм, единственное, красивее было бы разбить дикт компрэхэншэн на несколько строк физических, а не логических. Логически это всё равно останется однострочник
Питоны, помогите разобраться дереву. Есть гуйд в котором вытаскивают данные из форскера и чота сними даелают. Нужно: вытащить их мне, дереву. Профиль, мягко говоря, не мой, понять бы куда их вводить.
Помогите плз с джангой. Пытался создать в приложухе модуль для импорта в views, но при попытке импорта джанга выдает ошибку (модуль использует модели). Пытался фиксить разными способами, но каждый раз просто получал другую ошибку. Может проще забить и засунуть всё в views?
Ананасы, помогите с джангой. Платина, наверное, не бейте больно, я ее сегодня впервые увидел. Я хочу передать в метод во вьюхе джанги какой-то параметр, например так
dictionary хочу передавать любым образом через urlpatterns, который генерирую из некоторого конфига. Дальше уже внутри метода разбираться, чего куда надо класть. Как блин это сделать?
>>1529587 да блеа, где эту хуйню всю вводить-то? первый раз вкатился в этот ваш питон и нихуя не ебу, ну рили где это делать шоб было более-менее удобно? через что вводить команды по гуйду шоб все работало?
>>1529618 Да блин. Что в запросе передать, в данном случае вторично. То есть я хочу, чтобы у меня за разными урлами стояла одна единая функция, def dummymethod(request, param) которая определяла бы, что ей делать, не из того, что в неё юзер засылает, а из некоего конфигурационного файла. То есть: - где-то есть конфиг, в котором определены урлы. например, определено два урла: - в другом месте есть dummymethod, поведение которого определяется из этого конфига и только из него. в идеале, аргументом этого dummymethod выступает нужный кусок этого конфига (скажем, в конфиге прописано: по урлу huinya-malafya отдавать статический файл, а по урлу mokrie_pisechki отдавать вообще текстовую строку из этого конфига) и все хорошо, кроме одного - я не понимаю, как этот конфиг затолкать в dummymethod
Суть в том, что я хочу написать хуйню для мокапов, поэтому нужно максимум всего засунуть в этот конфиг, а количество методов во views свести к минимуму, желательно вообще к одному. Производительность, количество перечитываний конфига и прочее, соответственно, строго идут лесом.
>>1529627 1. Делаешь один юрл под эту функцию и второй просто для шаблона, в шаблон суешь Ajax запрос на юрл функции. 2. Делаешь конфиг с кортежем из <юрл>: <функция>. 3. Проверяешь есть ли юрл в кортеже.
>>1529661 Чел, открой самый базовый тутор по питону. Вот прямо 0-ой урок какой-нибудь, в котором обычно рассказывают, что нужно сначала установить. Вот его посмотри, а потом уже пытайся что-то запускать и спрашивать тут помощи. Без капли негатива говорю, только искренний совет.
>>1529663 Зачем ты с ним разговариваешь? Ты чо ебобо? У него нету цели понимать, разбираться или осиливать, он пришел чтобы ему сделали ПРОСТО РАБОТАЕТ, чтобы он решил свою финансовую хуергу, взял бабла и забыл ваш пиздон навсегда. Нахуй его.
>>1529409 Это понятно. Но я имел в виду получение номера ветви, а не содержимого лексемы. >>1529445 >пик О, я вот чего нашёл: >>> re.search(r'(abc)|(xyz)','abc').lastindex 1 >>> re.search(r'(abc)|(xyz)','xyz').lastindex 2 >pyparsing Жутковатая вещь. Нет, ну правда, это же ужас. Бэкус вместе с Науэром наверное в гробах переворачиваются. Глянул ещё ply - он покрасивее. А вот в ply.py я заглянул... Вообще то, что надо. >>1529382 Внезапно, в ply.py так и сделано. Видимо, это и правда лучший способ.
>>1529668 диплом по социологии пишу и подумалось, что это может быть интересно, учитывая что тут нынче только опросные методы. и да, мне нужно чтобы работало, ибо это небольшой, но важный кусок работы.
>>1529663 ладн, спасибо. хотелось обойтись малой кровью
>>1529668 От тебя убудет, что ли, если кто-то ему подскажет? Вот когда-то, помню, на любой вопрос в сети можно было получить пачку исходников в uue почтой, вытягивать их модемом 2400, разбираться в них, и делать вещи. А потом сеть заполонило псевдоинтеллектуальное быдло и на любой рандомный вопрос всё чаще стали сыпаться ответы «я не собираюсь твою работу делать иди на хуй», даже если ты пилишь какой-то некоммерческий опенсурс или вообще по 14 часов в день работаешь водителем самосвала и просто не можешь по три дня залипать над мануалами, чтобы просто поправить какой-то костыль в чужом коде. Знаешь, вот, в Китае если ты к какому-то мастеру, к любому, подойдёшь и спросишь, как он это делает, он тебе всё расскажет и покажет. Не будет такого, что тебе ответят «ты дурак, а умный и так знает» или «не скажу, коммерческая тайна». Поэтому Китай развивается такими темпами, а ты... ну в общем надеюсь ты понял, что я хотел сказать.
>>1529681 Все хорошо, но вот с Китаем ты явно проебался. Всем известен азиатский принцип обучения. Пять лет спишь на циновки возле лачуги Гуру, еще пять лет повторяешь все свои действия за Гуру, а уж потом, если повезёт, Гуру начнет с тобой разговаривать.
>>1529939 В Индии не нужно дожидаться Гуру, там Гуру тренирует сразу целые деревни, без задней мысли и без очередей. Студенты после одного урока идут писать энтерпрайз за 300кк рупий/сек.
Анон, есть что-то подобное, но на ангельском? Ультимативный гайд, так сказать, или перечень всех тем, что нужно знать. вы посмотрите, там даже UML есть, охуеть
>>1530062 Зачем тебе ультимативные гайды? Беги гайды для ньюфага, вкатишься, сами поймёшь что тебе нужно. А от этих гайдов со списком всех знаний человечества толку нет.
>>1530070 Я уже несколько лет лениво бегал по этим гайдам для новичков. Уже пару проектов написал, разной сложности. Все гайды, как правило, кончаются написанием банальной игры на pygame. Тут же список тем, большинство я знаю. А те, что не знаю, могу с лёгкостью прочитать. Но ебаться каждый раз с гуглопереводчиком не круто.
>>1521391 (OP) Tkinter эксперты здесь? Как замутить "дорисовку", а не полноценную анимацию с очищением дисплея? Конкретная задача: построение графика функции, зависящей от времени. Собственно через time.sleep() делаю эти паузы, потом рисую кусок графика, но оно так не работает. Прога тупо виснет, пока не пройдет весь цикл и только потом - рисует. Что для 1, что для 50 "фпс" какие-то внутренние еба-оптимизациии ждут весь цикл. while t <= T_FINAL: t += PERIOD sleep(PERIOD)
>>1530144 После двух часов ебли с доками понял, что у ткинтера свой менеджмент задержек и последовательности действий: тупо застопить скрипт - бесполезно, нужно использовать метод "after".
Аноны. В общем задача - нужно узнать температуру ГПУ от нвидия для последующего управления корпусными вентиляторами, но это уже совсем друая история. Самый простой способ, который для этого нашёл - утилита от нвидии, которая поставляется вместе с драйвером: nvsmi. Утилита консольная, запускается с нужными аргументами, ей задаётся loop и она раз в n-времени выдаёт заправшиваемые параметры. Вот тут начались проблемы: Программа предполагается с гуи PyQt5, и открытых консольных окон быть не должно. Раньше для запуска консольных команд без открытия окна я использовал os.spawnv с аргументом os.P_NOWAIT или os.P_DETACH, но тут надо как то перехватывать результаты выполнения команды. И как я понял, в данном случае os.spawnv не подходит. Немного погуглив обнаружил другой способ: subprocess.popen запускающий консольную команду с аргументами в отдельном процессе, с возможностью переназначить для процесса stdout, чем я и воспользовался, получая в последствии из stdout данные выводимые запущеной утилиткой кстати предлагаемая в документации попена команда comunicate работает как то жопно, я так нихуя и не понял как. Проблема в том, что subprocess.popen открвает отдельный процесс в окне командной строки, которого основная гуёвая программа не имеет. И единственным решением, которое я нагуглил, оказалось пикрилейтед - узнать PID открываемого CMD окна и как то хитро его убить (я толком не разобрался - потому как эта задача сильно уходит в дебри от моей основной - знаю только что это частично работает). Так вот почему это работает частично - теперь при запуске моей программы на секунду появляется окно CMD, потом закрывается и уже начинается ГУИ. В целом, по-моему я понаделал жутких костылей, раздел импорт для казалось бы простенькой программы занимает "пол страницы". Есть ли какие-то более правильные решения, чтобы сделать всё по-людски? Или возможно есть какой-то более изящный способ получить температуру ГПУ?
>>1530240 Сам в прошлом месяце ебался с этими окнами, пол дня убил на это говно. Если я правильно помню, то в sp.Popen указываешь shell=True, указываешь какой-нибудь stdout в sp.PIPE и все остальное обязательно в sp.DEVNULL. Я делал в Tkinter и упаковывал с помощью pyinstaller с флагом --windowed. После таких выебонов у меня окон не появлялось.
>>1530262 К примеру, ты хочешь что-то вытянуть из stdout, значит ты должен писать sp.Popen(stdin=sp.DEVNULL, stdout=sp.Pipe, stderr=sp.DEVNULL) И какие-то там свистопляски с communicate, если не получится - могу завтра глянуть на работе.
>>1530266 Анон, спасибо. Сегодня я уже умучился с этим, продолжу разбираться завтра с утра. Но если конечно не сложно будет - попробуй глянуть код - там его в целом не очень много
>>1530266 communicate я так и не осилил, почему то так как указанно в примерах он не работает, потому я назначил stdout в переменную и в цикле с sleep начал считывать данные уже из этой переменной
>>1529778 >Всем известен азиатский принцип обучения. Пять лет спишь на циновки возле лачуги Гуру, еще пять лет повторяешь все свои действия за Гуру, а уж потом, если повезёт, Гуру начнет с тобой разговаривать. Ты разницу между Японией и Китаем понимаешь? Или по-твоему в Азии всё едино, и в Казахстане надо тоже пять лет на циновке спать, чтобы только вопрос задать? Да и в Японии уже давно паровой двигатель изобрели и уже телеграф наверное кое-где появляться начинает. Двадцать первый век всё-таки, а не восемнадцатый.
>>1529778 А, я понял. Так ты у нас себя типа гуру возомнил и предполагаешь, что это тебе даёт право относиться к кому-то как к грязи из под ногтей, пока они пять лет не проведут на циновке, ковыряясь в носу в точности так же, как это делает "гуру", и только потом ты перестанешь хамить в ответ на вопросы, которые даже не с тобой обсуждаются?
Интересует считыватель qr-кодов. Инициализируем с помощью qrDecoder = cv2.QRCodeDetector(), потом вызываем метод detectAndDecode. У меня в коде последовательно обрабатываются несколько картинок. Для первой работает, для остальных -- нет (т. е. я создал объект декодера и несколько раз вызываю один метод, передавая разные qr-коды). В чём я вру?
Хочу сделать ебалу для телеги, которая сохраняет копии сообщений, которые мне прислали и уведомляет меня когда какое-нибудь сообщение удалили. Как правильно такое сделать? Обсудите со мной идею реализации, а то сам только хуйню сложную придумываю
Пацаны, так всё-таки, почему requests повсеместно используются, а об httplib2 мало кто слышал?
Читаю сейчас одного хуймана (Марк Пилигрим с его Дайв Инту Питон). Там он довольно убедительно описывает почему не надо юзать requests. Типа они не умеют в кэш, и не умеют еще многое. Так почему же их используют?
>>1530648 >но зачем It was written because httplib2’s better support for caching is often mitigated by its lack of thread-safety. The same is true of requests in terms of caching.
>>1530317 >>1530266 >>1530254 Анон, спасибо тебе большое. С лёту сделал пикрелейтед: перенаправил ввод/вывод ошибок в DEVNULL, включил SHELL. Выпилил нахуй часть, которая должна закрывать окно. Запилил через пинсталлер с флагом -виндовед. Теперь работает как следует.
С лёту такой вопрос для всех - возможно кто имеет представление, в какую сторону копать, чтобы реализовать управление корпусными вентиляторами софтово?
>>1530411 Может, так и должно быть? А если ты передаёшь картинку, на которой qr не опознаётся, что происходит? Следующая правильная картинка декодируется или нет?
>>1530925 >скатился >2020 год Братюнь, а где ты был когда ее наглухо сломали между 2 и 3, и пришлось потратить десять лет на переписывание тонн легаси говна?
Сайт сервера МИНЕКРАФТ норм делать на джанге? Пездюк племянник хочет свой сервер, думаю помочь ему и запилить проектик, чтобы стричь донат со школоты. Если приложу в портфолию для галеры, меня не засмеют хрюшки?
>>1530996 На сайте джанги есть гайды по апгрейду. Но прям крупные изменения всего и сразу там очень редки. Мне с 1.11 на 2.2 только изменения в роутинге запомнились, остальное мелочь.
Ещё раз для танкистов, гуру фласка. Клиент посылает на сервер поток json'ов. Но перед этим потоком надо передать на сервер тот или иной флаг. Как это сделать?
Этот ваш Лутц с его учебниками какой то графоман поехавший. Сперва "изучаем Python" на 1280 страниц, потом еще 2 тома по >900 страниц "программируем на Python".
Просто легкий бомбеж пока тянутся книжки с яндекса.
>>1531313 >>1531331 Так, если клиент и сервер идут параллельно в потоках, то для отсылки флага нужен отдельный поток? А для приёма флага? if __name__ == "__main__: ... __server.start(target=get_json) __client.start(target=send_json)
>>1531345 Это только твое решение может быть. Только ты знаешь что там за флаг у тебя такой особенный. Послать его можно и отдельно и внутри первого json и даже в заголовках. В зависимости от этого сам реши, нужна тебе функция отправки отдельно или нет. Принять же его можно той же функцией что и json обрабатывает.
>>1531355 Если послать отдельно, как это будет выглядеть? В target процесса надо его добавить через запятую? Типа __server.start(target=get_flag, get_json) __client.start(target=send_flag, send_json)
С функциями ничего сложного нет. На клиенте у тебя будет единственный процесс, в котором будет код вида: отправить флаг отправить запрос отправить другой запрос
Это всё по очереди придёт на сервер, и там обрабатывать.
Чёт посмотрел вакансии джунов-стажёров django/flask, не так уж и много их в ДС. Вкатываться или нет?
Знаком на посредственном уровне с питоном (но не веб, а pandas/numpy/scikit-learn) и c .net (wpf). Хуй знает, куда дальше вкатываться только не во фронт-енд...
Хэлп, аноны! Делаю маленький сервис заметок для самообучения. И столкнулся с проблемой хранения форматированного html в модели. Дело в том, что текст заметки у меня в редактируемом div:
Форматирование текста легко реализовал с помощью Document.execCommand(). В итоге в теле div я получаю разметку с тэгами <b>, <i> и тд.
Вопрос: как это всё сохранять в бд с помощью джанго? С учетом того, что в текстовом поле я могу набрать разметку с клавиатуры и она не должна учитываться, а работать должна только та, которая задается через Document.execCommand()? Не знаю с какой стороны подступиться к этому.
Единственное у меня вопрос есть Изучив содержимое треда на хабре, и попутно информацию в сети так и не пришел к единому мнению, с чего же собственно стоит вкатываться в Пайтон, если навыков, и знаний о программировании нет от слова совсем.
Стоит ли начинать с Лутца, или я запутаюсь в терминологии и аобилии информации? Спасибо Есть ли в треде господа, которые вкатились с 0 знаниями о языке программирования в общем
>>1531356 Надо знать точно что тебе надо реализовать, зачем тебе этот флаг, но в общем случае будет следующее.
У тебя будет одна функция senddata. Если ты знаешь точно когда надо послать флаг, то перед первым json посылаешь флажок. Если нет, то его посылаешь с каждым. Можно и просто с каждым посылать, разницы нет.
Принимающая функция принимает флаг и переключает его, если его текущее значение другое. Таким образом сработает только первая посылка.
>>1531364 Продолжим. Значит флаг можно ввести в функцию отправляющую поток json'ов? Вот только это модель, а деле будет реальный сервер с json'ами, так что флаг лучше слать отдельно.
>>1531895 Так я не знал, что тебе веб надо с фреймворками. Я тебе просто скинул картинку с полезными проектами. повнимательнее посмотри на варианты с пикчи той. Там много чего из веб есть. Например, стриминговый муз.сервис, где транслируется музон, который загружают пользователи на серв
>>1531919 В проекте "реального" сервера нет смысла плодить тысячи однострочных тривиальных функций, там и без того проблем хватает. Вот если бы этот флаг как-то хитро вычислялся и передавался бы на сервер с кучей других данных, то да, смысл был бы. Но это не настолько важно. О субпроцессах можно думать как о точках входа в программу, из каждой такой точки происходит запуск всех остальных функций, напрямую или через другие функции. Поэтому клиенту достаточно одного процесса, из которого он запускает всю остальную логику, вызывая другие функции: одна для "отправки флага", другая для отправки каких-нибудь данных, третья ещё для чего-нибудь. Да и на сервере аналогично, только там уже будет не отправка, а обработка полученного и возврат ответа.
>>1531961 Спасибо. >а обработка полученного и возврат ответа. Для обработки флага нужна будет отдельная функция? Или просто сделать условие на является или нет флагом?
>>1521391 (OP) Сап, что нужно знать, что бы пайтон программистом зарабатывать хотя бы 400-500$ в месяц?
Учу месяца 3, знаю сам пайтон, sql (на уровне создания/удаления таблиц и разных селектов), гит, основные библиотеки, bs4, регулярки и немного джанго, только учу. Что нужно сюда добавить?
>>1531950 Спс в любом случае за картинку, что нибудь я и на чистом питоне запилю. Задач я уже много решил, потихоньку начал врубаться как разбивать проект на подзадачи.
>>1532103 Незабываем алгоритмы и структуры данных, шаблоны проектирования, модель mvc, теорию игр, мат анализ, паттерны, Общий курс Computer Science (введение) , обязательно ORM и миграции.
>>1532107 >>1532105 >>1532103 После изучения всего этого и выполнения тестового задания из 50 подзаданий мы готовы рассмотреть вашу кандидатуру на место трейни стажера с зарплатой 300$
>>1530536 Такой бот не подойдёт. Надо же сохранять сообщения в чате 1 на 1. Нужно не телеграмовский бот, а какой-нибудь консольный клиент запустить на aws создав для него ещё одну сессию в мой аккаунт и пусть он все сообщения читает и сохраняет. Но тогда прочитанными будут все сообщения помечаться и я онлайн буду 24 на 7. Какой есть способ лучше?
>>1527244 Трабл в том, что твои кейсы нахуй никому не упали, поэтому оставайся на матлабе, который кроме переумнодения матриц с уебищным синтаксисом паскаля-дельфи больше вообще ничего не может. Если у тебя специфический пул задач о которых 99% вообще никогда не слышали и не задумывались и есть язык который только на них и заточен, то нахрена вообще что-то менять. Правда стоит учесть, что датасаиниисты работают в питоне, а не в матлабе, мне кажется о чём-то это да говорит, возможно ты свернул где-то не там.
Практически любой редактор табы заменяет на 4 пробела, если включить в настройках, иде и редакторы для питона вообще всегда это делают, так что нет никакой проблемы в табах
Вим на линуске может в табы Нотпад ++ тоже может
Не вижу ни одной причины вообще вручную ставить пробелы.
>>1530062 Ну самом деде там пиздос, я себе в проект скопирнул пару функций в виде тулз, типа рекурсивного сглаживания листа, потом пришлось править этот говнокод, хз почему они так хуево написали.
Предыдущий
ЧАВО: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat актуальность примерно 2015 года
Книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Очень много книжек: https://drive.google.com/drive/folders/13YaFijvuH4dtv-PjUKVWLQ7ZIqXIfCLK
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
Вопросы-ответы:
А стоит ли читать Лутца, том номер 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/ (нужно знать ангельский или уметь пользоваться переводчиком)
Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём - брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.