Это копия, сохраненная 30 января 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Свой код кидайте через https://ideone.com/
Книги и ссылка на PyCharm: https://yadi.sk/d/tArKKuQu3Kejuq
Предыдущий тред https://2ch.hk/pr/res/1094248.html (М)
Django 2.0: https://docs.djangoproject.com/en/2.0/releases/2.0/
768x432, 3:36
Бочку.
Борду запилить свою.
Борду конеш.
Пытаюсь запустить под виндой одну софтину, написанную на пайтоне, она требует модуль rtree. Его я установил через pip install Rtree‑0.8.3‑cp27‑cp27m‑win32.whl, но в итоге все равно получаю ошибку
File "C:\Python27\lib\site-packages\rtree\core.py", line 116, in <module>
raise OSError("could not find or load spatialindex_c.dll")
OSError: could not find or load spatialindex_c.dll
Весь интернет мне говорит, что под винду этот spatialindex_c.dll ставится через установку rtree, но я же ее уже установил. В чем дело?
добавь Python\Lib\site-packages в path
Например, дана последовательность:
[(1,2), (2,4), (5,4), (7,4), (3,8), (8,10)]
Тогда вывод будет таким:
(1,2), (2,4), (5,4), (7,4)
(3,8), (8,10)
Но цепочки могут идти и не последовательно.
Анончик, молю, спаси, нужно для реализации скрипта.
Это вопрос про джанго?
Нужно получить элемент h2 с номером транспорта и список дивов с классом item для каждого транспорта.
Как можно это распарсить?
Уже не один час туплю и все никак не придумаю.
Использую bs и css селекторы. Не умею в xpath, но может он позволяет выбирать все блоки с таким то классом после n блока но до блока n+1 чтобы можно было выбрать блоки между элементами blockNumAvto?
А что делать при наличии нескольких вариантах цепочки? Вот, например, [(2,3), (5,3), (7,3), (4,7), (5,4), (3,9)]
Тут же и 2,3->3,5->5,4->4,7->7,3 может быть, и 2,3->7,3->3,5->5,4->4,7, и 2,3->5,3->7,3->3,9. Перестановка последних двух, опять же, позволит продолжить.
Так что, как уже упомянулось, задача нетривиальная, тебе нужно ввести ограничения какие-то, если хочешь лёгкого решения.
пройди по последовательности, сохраняй пару (начало цепочки, длина цепочки)
потом сортируешь по длине и там уже выводишь
можно еще что-нибудь оптимизировать, это первое в голову пришло
Прыщеговно обрсралось, вот что произошло.
Не благодарю
: python -m ensurepip
> python.exe: No module named ensurepip
: python -mpip install -U pip
> python.exe: No module named pip
И так далее. Вообще модулей не находит.
Качал отсюда: https://www.python.org/downloads/windows/
> Windows x86-64 embeddable zip file
а мне хотелось бы за каждый ответ на вопрос получать по бетховену
не всегда получаешь то, что хочешь
есть вопросы - задавай здесь
в общем прогаю в Pycharm, пакеты все необходимые вроде как установил, интерпретатор подключил, когда импортирую модули в другие модули, выдает ошибку, зацикливания импортов вроде нет
как я понял оно вообще тут не юзается, но в примере с которого я это все стащил, вроде как должно, да и модули не импортирующиеся это очень странно
а возвращает он просто ноль, как я понял этот скрипт создает бд под каждую модель, но что то не работает
как это можно исправить?
т.е к примеру меня есть дирректория для проекта форума и есть дирректория для борды, каждый раз в эту дирректорию заново скачивать джанго?
через фласк запускается задание, после чего редиректит клиента на страничку (ссылка уникальна) с результатом. формирование данных длится долго. как реализовать постановку в очередь выполнения заданий и проверку их выполнения? условия: нельзя запустить несколько "одинаковых" заданий в раз. пока выполняется хоть одно задание, новые не выполняются, а ставятся в очередь. результаты складываются в редис. есть предположение, что можно реализовать очередь отдельным скриптом и хранить данные об очереди тоже в редис. что я не учёл? может стоит как-то иначе делать?
Допустим гипотетическому Валентину захотелось бесплатно пользоваться полной версией PyCharm которая для Django, но которая платная.
Как бы он это делал? Ключики китайцев регулярно баннят
Что бы Вы порекомендовали Валентину в его гипотетическом пожелании окромя хуйцов и платы?
Взломать защиту, сообщить о её несовершенстве создателям для исправления и получить в качестве благодарности работающий настоящий ключик.
Если валентин долбоеб, а он долбоеб, раз не умеет в гугл, то пожелаю только хуйцов.
А вообще есть сервера для активации и они отлично работают.
Если валентин студент, то он отправляет жидбрейнсам первую страницу зачетки и получает бесплатное пользование продуктами по программе помощи студентам
django сам по себе "движок", т.е фреймворк является действующей интегрированной частью проекта, а не как сторонний "вспомогатель". :)
Лучше посмотри в сторону модуля lxml - xpath, через суп можешь так:
obj = BeautifullSoup(URL)
obj.attrs
attrs - h2/div/a все декларированные теги
Или пиши просто findall и в цикле проверяй что получилось (с итоговым списком, что он содержит)
В суп также можно загнать регулярное выражение (через метод format вроде)
Если у тебя данные все на 1 странице - лучше юзай тупо регулярки
Палю годноту — xidea.online
Может нужно вернуть значение из второй функции? У тебя функции обработчики потока данных, нахуя она тебе если ничего не делает? Не надо себя ебать абстракциями если пока не вкуриваешь ООП. Поймешь что такое агрегирование - сможешь уже ржать над авторами либ. Успехов.
Ну смотри. Одна функция у меня делает вычисление и возвращает результат
A=x+y
где x+y при каждом вызове разные
Другая функция по нажатию клавиши вызывает первую функцию и возвращает что-то вроде "у васи было A яблок"
так вот, как поместить в строку про васю значение А из той функции? Я чото вообще не пойму, хотя это должно быть что-то очень простейшее (я до этого программировал на блюпринтах в Unrel Engine 4 и там это было легко)
Ну может и есть простое решение в рамках логики работы твоей программы но можешь попробовать сигналы и слоты.
Короче делаешь типа такого:
check_slot = QtCore.signal.connect(your_func) да так передаешь ибо ссылка аля
def your_func(A,B):
emit(A)
В другой области видимости подключаешься к слоту:
blah-blah.connect(your_func)
И при изм состояния функции будет принтится или что ты там хочешь показывать. Мб ошибся где но картина такая в целом.
Спасибо, я примерно так уже и сделал.
lxml не подходит т.к. на некоторых да почти на все блять сайтах ошибки в разметке, но bs их по крайней мере парсит.
Хотя сейчас другой сайт так распидорасило, что я охуеваю. Благо относительная разметка не испортилась и можно так же в цикле взять все нужное.
Регулярки точно не вариант, выдираю расписание автобусов, троллейбусов и т.д., там будут получаться километровые регэкспы.
Спасибо, но я случайно нашел в американских интернетах.
https://stackoverflow.com/questions/19946448/python-how-to-use-named-variables-from-one-function-in-other-functions
Алсо, задача была написать бота к телеге, который считает время до события, вот такой код получился
Есть массив, каждый элемент которого может быть массивом, каждый элемент которого... Ну и так далее. Нужна функция, которая извлекает из всех вложенных массивов данные и записывает в результирующий обычный массив.
Но что-то мой вариант извлекает только из одного, лол. Всегда мучаюсь с рекурсией, но сейчас чую, что не осиливаю. Нид хелп, анчоусы!
https://repl.it/repls/SlowMealyVicuna
>переменные озаглавил
Вот этого вот не надо, у нас snake_case принято использовать.
>>03426
https://repl.it/repls/MundaneWellgroomedShoveler
За такое форматировние (на одной строке с if'ом) могут и словом нехорошим назвать.
И это, ты неправильно рекурсию понимаешь. Она не должна передавать все предшествующее в следующую функицю, собрав окончательный результат в самой вложенной функции. Наоборот, каждая внутренняя выдаёт назад свой результат, который содержит всё то, что было глубже.
Это по поводу передачи res'а в рекурсивный вызов.
А второе: у тебя при попадании первого же списка вызывался return, на что ты надеялся?
Ну маленькое присвоение может и на одной строке ужиться с маленьким ифом. Алсо, ты мне скинул то же самое, что и было у меня.
Ну или хотя бы для QT 4.5.0?
Я уже пол часа ищу- найти не могу
Умница
>Алсо, ты мне скинул то же самое, что и было у меня.
Сорня, что-то не сохранилось после форка, интернет подставил. https://repl.it/repls/GenuineSteelblueAmazondolphin
Вот этот момент для меня является камнем преткновения. Как в таком случае объявить массив, чтобы он не перезаписывался пустым при каждом вызове функции? Объявить-то его все равно нужно.
Да тут каждый день по два ботописателя. Что с ними потом становится-то, куда они пропадают?
Ну тип
шаг 1 импорт цсв - выбери файл
шаг 2 зацени че оно из цсв выгребло, поставь галочки че добавлять
шаг 3 столько-то записей добавлено, теперь статистика пересчитанная такая-то
>Как в таком случае объявить массив, чтобы он не перезаписывался пустым при каждом вызове функции?
А зачем он тебе не пустой? Вот вызвал ты первый раз свою функцию, создался список, который потом на выход пользователя пойдёт. В твоём что должно происходить? Либо добавляем элемент, если цифра, либо "обрабатываем список", чтобы потом его соединить с выходным. Функция обработки заключается в получении одномерного списка, чтобы все элементы были цифрами. Звучит похоже?
Идут писать клеточные автоматы на жс, что же еще? Я не знаю, мне кажется что без внутреннего аутиста (маленькой йоты) и любви к логике мне кажется и 3 года не проработаешь прогером (и около того тоже)
Ну я молчу уже про понимание архитектуры - UML, паттерны, вот это уже все, а это ближе к метатеориям уже.
Шото сам поражаюсь, по сто тредов про умершие плюсы/питон, но те же люди не могут во что-то дальше циклов.
А ну и да, все хотят мульоны за день заработать.
Опа, спасибо! Я понял суть, кажется. Ретурн же заканчивается работу функции, а мне заканчивать ее нельзя после первого раскрытия массива, нужно остальные еще обработать и добавить к промежуточному результату. Чуть лучше стал понимать рекурсию. Ну а второй параметр здесь все-таки обязателен или я чего-то не вижу, так?
Звучит как и должно быть по плану.
Да, теперь мне стало чуть ясней, спасибо. Сейчас выпишу значения переменных на каждом шаге и проверю себя.
А все, не нужен. Список действительно пойдет пустой каждый раз. Нихуя я дебилушка.
Ну посмотри ты шо будет при:
if len(A) == 0:
return
if len(A) == 0:
return A
Ну шоты госпади, у тебя стэк - твоя лента данных грубо говоря, если функция возвращает что-то - проверяй свойства структуры данных которая возвращается (для булов и так все очевидно)
Если работаешь с рекурсией - аккуратнее, у тебя каждый раз возвращаемый результат юзается с j-1 шага на j шаге (трассировка/отладка смотря как наблюдаешь) именно поэтому пишутся формулы вида:
def junk(a):
if len(a) != 0: - условие работы функции/логика функции
return junk(a)*a
if len(a) == 0: - условие выхода
return True
Примерно так рекурсия вызывается МАТИМАТИЧИСКИ просто ассоциируешь мат операторы со своими ВОЗВРАЩАЕМЫМИ значениями а не сигнатурами функций
Нет, в данном случае не обязателен (мне лень было много кода менять).
>Звучит как и должно быть по плану.
Это я больше намекал на то, что "функция обработки" делает то же самое, что и должна делать "основная". Т.е., звучит похоже с описанием цикла из предыдущего предложения. Именно это и позволяет рекурсивно решить задачу.
Ну у тебя простые примеры, и понятно что в них будет. Проверка свойств структуры данных есть, недопонимание было в другом месте, но вроде разобрался. Спасибо за советы в любом случае.
Молодец, там где надо идешь
молодец, ты познал путь джанги
Просмотр подробной инфы, говорит о том, что 46% всего времени тратится на _setitem_.
Бамп
Разве со словарями будет быстрей чем через пандас?
>>03740
Ну я вроде всё правильно делаю. Разбил большой датасет на два поменьше и с ними и работа, уменьшаю их засчёт выборок(причём выборка типа some_data == min(some_data), то есть сильно сокращаю датасет).
Ну и вот такого плана:
some_data['x'] = some_data.vlan_id.isin(other_data.vlan_id).astype(int)
Но значений довольно много в принципе.
> Разбил большой датасет на два поменьше и с ними и работа, уменьшаю их засчёт выборок
А мог бы multiprocessing воткнуть.
Ну да, ты прав, вот притянул.
Пример КСВ файлов: https://pastebin.com/kMzp62PH
Сам говнокод: https://pastebin.com/TuXyaDn0
1 пик - условие.
2 пик - спецификация файлов.
У меня, пока, никаких мыслей по улучшению кода нет, возможно я проебался с алгоритмом.
>>03760
Таки да, это на крайний случай приберёг, потому как совершенное не факт что он даст прирост скорости, у меня были случаи работы с файлом, когда мультипроцессинг наоборот всё замедлял.
А, особо с имён переменных не проигрывайте, ещё поправлю, как найду решение.
Selenium + Lxml (xpath)
Попробуй Scrapy но он говно тк там "regular get requests", наверняка уже вышел для 3+. Я его через шелл использовал, просто с лету инфу проверял.
Мням, я был на собесе в одной фирме, поддерживающей свой джангосайт, так они ющали коммункти эдишн под виндой.
И че теперь? А у меня информатику вел в школе в бородатом 2003м году мужик, который машинным или как его там? байт-кодом? сразу в блокноте мог программы писать мог.
На первом скрине я видел у тебя 15к и 25к. В коде ты делаешь .append, что очень неэффективно, потому как с каждым элементом нужно всё больше и больше памяти ворочать для добавления (выделить больший участок и скопировать туда старое).
Найди количество элементов, создай список нужной длины (если в пандас нельзя, то через list comprehension c None'ами, например, или через numpy), заполняй его элементами, а в самом конце уже сконвертируй в DataFrame через from_dict или from_items.
Ещё можешь скинуть пример большого файла, который тормозит, чтобы желающие попробовали.
https://stackoverflow.com/questions/47631670/sliding-window-approach-in-cvxopt
Пока что лучший результат ~70 сек.
Вот большие файлы:
http://rgho.st/8JmYgX9N8
http://rgho.st/8SHdDMYHw
> Найди количество элементов, создай список нужной длины (если в пандас нельзя, то через list comprehension c None'ами, например, или через numpy), заполняй его элементами, а в самом конце уже сконвертируй в DataFrame через from_dict или from_items.
Вот за это огромное спасибо, антош, попробую.
Найдено на просторах инета, pdf-ка и файлы.
Теперь прилично времени отнимает drop строк, какие есть варианты по его ускорению?
Ну так с ними вполне удобно, я их сразу считал, выделил датафрэйми с главным портом и датафрэйми на которых есть условия для резервирования(две одинаковых вланки на главном порте и дополнительном).
https://pastebin.com/dPQkA0jW
Мой последний актуальный вариант.
Забавно, на райзене х6 и 16 гигах оперативы - 27 сек, а на i5-4460 и 8 гигах оперативы - 35 сек.
Ну в пидорашке кто не может работать - тот учит. А тут люди за реальные деньги работают, клоун анонимный.
Что ты имеешь ввиду конкретно, покажи пример или хоть что гуглить скажи.
>>03985
Зачем завтра, держи сегодня. https://pastebin.com/5PUCpte2
1.8 секунды, из которых на сами вычисления <450мс тратится, остальное чтение/запись. Железо? Core2Duo P8400, 4GB RAM :3
Если заинлайнить две функции в луп, можно, наверное, ещё сэкономить (фукнции в питоне ну оче медленные), но не хотелось совсем уж уродливо делать ради нескольких десятков мс.
Твой код, для сравнения, за 95 секунд у меня выполнялся.
А ты ведь всё равно append делаешь в своём коде. То, что я сказал, и к обычному списку тоже относится. Тебе нужно было бы сделать
>out_list = [('request_id', np.zeros(num_of_out_rows)), ('...', ...), ...]
И в лупе подсчитывать текущий индекс и длеать out_list[0-1-2-3][col][idx] = value
Однако, я попробовал, и это уже не является чем-то критическим, похоже, так как прироста к скорости на моём компьютере эта поправка не дала (в отличие от перехода с dataframe'ов на списки, где прирост действительно был).
Справедливости ради, я боролся исключительно за скорость, а для этого пандас вообще выкинул, чисто на нампи всё. А у тебя задача, думаю, именно пандас выучить. Однако, мой подход, наверное, стоит-таки принять к сведению: я отсортировал по vlan_id и затем по device_id, а поиск девайсов на каждый новый запрос начинаю со строки csv, идущей после предыдущего зарезервированного, потому что какой толк мильон раз по массиву из 27к+ элементов каждый раз с начала пробегать? А твои поиски минимума для слайса DataFrame'ов, думаю, именно это внутри и делают, возможно даже гораздо больше больше.
Алсо, доступ/установка значений в нампиевские массивы тоже не самое быстрое, так что замена out'а на список питоновских списков, а не np.array'ев, тоже позволяет ещё несколько десятков мс выиграть, если пичот (итого до 372мс на обработку реквестов после всех подготовок при самом удачном состоянии компьютера получилось).
О как, спасибо за пример.
У меня задача в принципе инструмент для работы с данными такого плана потрогать, видимо лучше к нампаю перейду.
>видимо лучше к нампаю перейду.
Ну так-то внтруи пандас numpy и используется, так что далеко не весь прирост обусловлен исключением пандас, скорее даже меньшая его часть. Помимо скорости, мне ещё лень было с пандас разбираться, если честно, как там эффективно именно эту задачу сделать, проще было влоб наслесарничать в обычных массивах.
Ну в результате попробовал всё)
Если бы ты ещё пару коментов оставил - цены бы не было коду, в плане информативности)
Да там, в принципе, всё примерно очевидно должно быть. Вот постарался всё подробненько описать, возможно чрезмерно, но как-то нравится мне иногда расписывать причины тех или иных решений, особенно по йобамикрооптимизациям, лол. https://pastebin.com/rENGjGmp Если чего не понятно — спрашивай.
Оба учи, делов-то, фласк за пару вечеров осилишь, джанго будешь мурыжить месяц но если привыкнешь к его жестокой диктатуре и документации исчерпывающе описывающей "как" но не "нахуя" то будет круто
Спасибо
Да, спасибо, я вчера в принципе разобрался, прогнав пошагово, теперь решил свое подправить.
У меня была мысль ввести счетчика два(не додумался ночью как лучше внедрить и забил) и не удалять элементы а ввести какой-то флаг их состояния(ну а ты заменяешь юзаную строку 0).
Есть только два вопроса по коду:
1. 'vlan_info[primary] = b'\x00'' как это оно так всю строку на нули меняет? Где за это почитать можно?
2. 'requests[:,1]' и как вот это работает так? Может это можно как-то нормально развернуть, понятнее, скажем так?
Есть тут какие-то тонкости?
Есть QLineEdit в которую введён какой-то текст. Как получить из неё этот текст в какую-то переменную?
>1. 'vlan_info[primary] = b'\x00'' как это оно так всю строку на нули меняет?
Каждый элемент vlan_info это (указатель на) кусок памяти, отведённый под три int'а (32 3 байта). Соответственно, vlan_info[0][0] это байты 0-31, vlan_info[0][1] Это 32-63 и т.д. А вот vlan_info[0] это байты 0-95. Соответственно, если я напишу vlan_info[0] = b'', то будут перезаписаны все 96 байт. В данном случае, туда записывается 0.
Тут байтоёбство немного, так-то можно было сделать vlan_info[0][0][2] = 0 и заменить только vlan_id, остальное не так важно, но это лишние символы, лишние доступы — медленно!*
https://repl.it/repls/InsignificantThistleEnglishpointer
>Где за это почитать можно?
Не знаю, SICP какой-нибудь, лол.
>'requests[:,1]' и как вот это работает так?
Ну что же ты, матлабом не пользовался?
Это просто индексация/слайс многомерного массива, эм, "одновременно по нескольким измерениям". Тут то же самое: берём все строки (первое измерение, как в list[:]), но только вторую колонку (второе измерение).
В питоновских списках так нельзя, к сожалению.
>Может это можно как-то нормально развернуть, понятнее, скажем так?
В данном случае, так как нужнен только целиком столбец, можно транспонировать, сделав столбец строкой, и затем просто взять эту одну строку:
requests.transpose()[1]
Транспонировать можно было бы через zip, будь это просто питоновский список, не поддерживающий индексы через запятую.
Но это спорное "упрощение", так как [:,1] общепринято и понятно. Потыкай матлаб иил R полчасика, привыкнешь, если до сих пор странно выглядит.
>>04465
https://stackoverflow.com/questions/3653298/concatenating-two-lists-difference-between-and-extend
Ну смотри что за класс и какие паблик методы? Мб weakref пригодится, но я не работал пока с этим.
Помимо разметки, я тут ещё немного проебался:
>vlan_info[0][0] это байты 0-31, vlan_info[0][1] Это 32-63 и т.д.
vlan_info[0][[0][0], vlan_info[0][0][1] и т.д. и vlan_info[0][0] это на все 96. А vlan_info[0] это ndarray с указателями на эти куски памяти по 3 инта. Но так как он состоит из одного элемента, разница никакой нет.
Сам запутываться начинаю.
> Ну что же ты, матлабом не пользовался?
Не поверишь - не пользовался особо, когда-то по учёбе немного и всё.
Добавил это
> requests.transpose()[1]
И вот подобное доабавил, как по мне - более python-way
> vlan_info[0][0][2] = 0
Скорость буквально на 0,01 просела, ковыряю дальше)
Спасибо за пояснения.
http://rgho.st/74gZGLngV
Ну вот не знаю, адаптировал твой пример под пандас - всё так же медленно(при том что я только половину примера ещё переписал), он выдаёт 27сек.
Сейчас переписываю на нампай его, но немного на свой лад и всё отлично, та же самая половина выдаёт 0,3 секунды.
Братиш, ответь на вопрос: какой объем данных ты парсишь и для чего переписываешь пандас? Я вот тяну с интернетов sql-таблицы по полгига, и ничего быстрее и удобнее еще не встречал. Да, неоптимизированно, приходится часто менять apply() и map() на мап-редюс функцию и обертку к ней, чтобы потом сконкатить все это обратно в датафрейм. Однако я работаю на кластере, и мне важнее параллельные вычисления универсального характера, чем прописывать узкоспециализированную функцию для каждой таблицы под сишную numpy.
> какой объем данных ты парсишь
CSV файлики объёмом 300кб.
> для чего переписываешь пандас
Потому как странно медленно. Ладно с моим не самым лучшим алгоритмом, но вот я тут применил пандас на другой алгоритм и результат был лишь на процентов 30% лучше, но не дотягивал до того, что было с пандасом.
Возможно и я где-то проебался всё таки (даже скорее всего так и есть), но сейчас вот допишу на нампае всё и посмотрим. Может всё же попробую применить туда пандас.
Пандас мне понравился функционалом, но всё же хочется чего-то быстрого, да и аллергией на с/с++ не страдаю.
2. вариант с записью b'\x00' в vlan_id;
3. твой вариант, не трогал вообще его.
Как-то так, поищу литературу по numpy и алгоритмам вообще.
Спасибо)
Железо:
Замутил перевод. Но он только частями переводит корректно.
А частями странные знаки.
https://ideone.com/d9oZSJ
бай зэ вэй, если примера нет, что не так с пикрилом и почему оно не работает? как это можно по-другому реализовать?
Есть PyCharm.
Я создаю документ, и справа вверху могу нажать кнопку запуска, дебагга и все идет по плану, пикрил1.
После этого я создаю другой документ, перехожу на него, пишу код, но кнопки справа всё еще указывают на первый документ, который мне уже не нужен для запуска, пикрил 2.
И чтобы запустить его конкретно, мне надо через Alt+shift+F10 заходить и выбирать определенный файл.
Как можно настроить PyCharm, чтобы при переходе с одного файла на другой, кнопки сразу становились активными, дабы я производил меньше манипуляций?
Можешь делать пкм в нужном файле и запускать
>Не поверишь - не пользовался особо
Да это я пошутил неудачно.
>как по мне - более python-way
Как говорится, nyet. А если нужно выреза кусок строк среди некоторых колонок? Это нужно слайсить, транспонировать и потом ещё раз слайсить. Лишние действия, шире строка, менее очевидна, собственно, задача.
Серьёзно, такой слайсинг это самый нормальный путь, штандарт, научись/привыкни и применяй.
>Скорость буквально на 0,01 просела
А в процентах? Пара процентов тут, пара там, и вот оно и набежит. Ну, конечно, это уже я так, если делать нечего. Но забывать, например, о лишних операциях, повторяемых по миллиону раз-таки не стоит, пускай питон и не для перформанса как бы.
>>04563
>адаптировал твой пример под пандас - всё так же медленно
Так а что ты адаптировал-то, покажи код? Как бы, в моём случае я прохожу один раз (ну ладно, два, на самом деле) по массиву и что-то там сравниваю. Один проход хоть по стотысячному массиву это сущее ничто. Добавит там проверки, туда-сюда, ещё там десяток микросекунд на элемент добавится, но это всё равно мелочи. В твоём изначальном коде ты кучу всякой фигни лишней делалась при обработке каждого запроса, и вот именно она занимает всё время, а не сам пандас или нампи или что угодно (ниже тайминги ещё будут). Т.е. проблема в алгоритме, а не инструменте. Вопрос в том, позволяет ли пандас в некостыльном виде реализовать то, что надо.
>>04584
>важнее параллельные вычисления универсального характера
И это правильно, да, но разница в 2+ порядка это-таки не круто: минуту или полтора часа сидеть ждать, разница существенна, мне кажется. От задачи зависит, конечно, может там 5 часов адаптировать, чтобы сэкономить час компьютерного времени.
>под сишную numpy.
В основе всего питоновского научного тулкита лежит нампи, он везде есть и везде используется. Алсо, нампи далеко не всегда выигрывает по скорости даже у чистого питона.
>>04604
Не получается разахривировать чего-то.
Так, по поводу пандас/нампи/скорости. Я переписал своё решение на чистом питоне. https://pastebin.com/Fw1rkzcf результат:
>total 0.34sec: reading: 184ms, processing: 115ms, writing: 44ms
(Против total 1.88sec: reading: 1163ms, processing: 431ms, writing: 289ms на нампи)
В почти 6 раз лучше, сама обработка вычисления в 3.5-4.
Вывод? Ну, очевидно, что частное решение будет эффективнее, чем обобщённое. Плюс я уже упоминал, что тот же доступ к элементам массивов нампи довольно медленный.
>Не поверишь - не пользовался особо
Да это я пошутил неудачно.
>как по мне - более python-way
Как говорится, nyet. А если нужно выреза кусок строк среди некоторых колонок? Это нужно слайсить, транспонировать и потом ещё раз слайсить. Лишние действия, шире строка, менее очевидна, собственно, задача.
Серьёзно, такой слайсинг это самый нормальный путь, штандарт, научись/привыкни и применяй.
>Скорость буквально на 0,01 просела
А в процентах? Пара процентов тут, пара там, и вот оно и набежит. Ну, конечно, это уже я так, если делать нечего. Но забывать, например, о лишних операциях, повторяемых по миллиону раз-таки не стоит, пускай питон и не для перформанса как бы.
>>04563
>адаптировал твой пример под пандас - всё так же медленно
Так а что ты адаптировал-то, покажи код? Как бы, в моём случае я прохожу один раз (ну ладно, два, на самом деле) по массиву и что-то там сравниваю. Один проход хоть по стотысячному массиву это сущее ничто. Добавит там проверки, туда-сюда, ещё там десяток микросекунд на элемент добавится, но это всё равно мелочи. В твоём изначальном коде ты кучу всякой фигни лишней делалась при обработке каждого запроса, и вот именно она занимает всё время, а не сам пандас или нампи или что угодно (ниже тайминги ещё будут). Т.е. проблема в алгоритме, а не инструменте. Вопрос в том, позволяет ли пандас в некостыльном виде реализовать то, что надо.
>>04584
>важнее параллельные вычисления универсального характера
И это правильно, да, но разница в 2+ порядка это-таки не круто: минуту или полтора часа сидеть ждать, разница существенна, мне кажется. От задачи зависит, конечно, может там 5 часов адаптировать, чтобы сэкономить час компьютерного времени.
>под сишную numpy.
В основе всего питоновского научного тулкита лежит нампи, он везде есть и везде используется. Алсо, нампи далеко не всегда выигрывает по скорости даже у чистого питона.
>>04604
Не получается разахривировать чего-то.
Так, по поводу пандас/нампи/скорости. Я переписал своё решение на чистом питоне. https://pastebin.com/Fw1rkzcf результат:
>total 0.34sec: reading: 184ms, processing: 115ms, writing: 44ms
(Против total 1.88sec: reading: 1163ms, processing: 431ms, writing: 289ms на нампи)
В почти 6 раз лучше, сама обработка вычисления в 3.5-4.
Вывод? Ну, очевидно, что частное решение будет эффективнее, чем обобщённое. Плюс я уже упоминал, что тот же доступ к элементам массивов нампи довольно медленный.
>Вопрос в том, позволяет ли пандас в некостыльном виде реализовать то, что надо.
Точнее, не "то, что надо", а "только то, что надо", с незначительным количеством лишних оверхедов.
Читаю документацию, смотрю на youtube. Нихрена не понимаю. Сейчас главная проблема: я не могу подключить шаблон с готовым сайтом.
Буду рад ссылкам на нормальные руководства
> Серьёзно, такой слайсинг это самый нормальный путь, штандарт, научись/привыкни и применяй.
Видимо придётся.
> Так а что ты адаптировал-то, покажи код?
Так сразу переписал на свежий, но может ещё раз напишу, ради интереса и практики.
Насчёт своего алгоритма согласен, более чем, я всё же поторопился с ним, хотя некоторые идеи считаю неплохими. Буду дальше развиваться и может приду к чему хорошему.
Вот код перезалил, примеры есть выше, если кому интересно:
https://pastebin.com/TwSiS9zb
> Я переписал своё решение на чистом питоне.
Спасибо, буду разбираться
Блин, так близко, теперь до <100мс на твоём железе довести хочется, лол.
>>04800
>Вот код перезалил
А где пандас? Я хотел посмотреть на то, что вроде бы адаптировано, но всё равно те же 27 сек.
Алсо, я там перемудрил с сортирвкой, можно ж было просто:
>sorted_vlans = vlans[np.lexsort(vlans[:,0], vlans[:,2])]
lexsort возвращает индексы элементов в нужном порядке, поэтому и слайсим vlans.
Это избавит от необходимости делать info = info[0] в цикле. Правда, нельзя будет уже байтами писать, но оно и не нужно.
http://rgho.st/7lrSryy88
Так я ж говорю, с пандасом сразу его переделал под то что есть. Может напишу еще раз.
> Блин, так близко, теперь до <100мс на твоём железе довести хочется, лол.
Я б посмотрел на такое)
Кстати, скорость выполнения этих решений совершенно не отличается на двух машинах моих, на райзене которая и на i5, что тоже интересно, ибо при прошлом решении разница была в 12 сек.
> Алсо, я там перемудрил с сортирвкой, можно ж было просто:
>sorted_vlans = vlans[np.lexsort(vlans[:,0], vlans[:,2])]
Окай
> Правда, нельзя будет уже байтами писать, но оно и не нужно.
Но так же быстрее)
https://ideone.com/D5faGn
Что я делаю не так почему у меня ошибка в принте? и не пишет в файл
>>04910
Парни как хорошо, что вы тут:
https://ideone.com/UmX33v
Расклад поменялся, теперь я циклом открываю все Листы\Sheets in Exel \ xlsx фале. До 5-6 листа парсер срабатывает, записывается в файл, а дальше ошибка в аттаче. Как бы этих листов 1000
А у меня в строку пишется Нон тайп, ему нужно менять тип на строку.
Как думаете, если я этот парсер написал за 2-3 часа, не разу не запуская пайтон в жизни из меня получится программист?
Там нон тайп пищется в строку и пишет в файл её я просто преобразовал и офигел от быстроты питона 1000 шитов за 2 минуты.
Да.
В джанго есть специальная херня для этого.
читни django by example - там 1 глава - 1 сайт
Так просто "из загашника" че есть:
https://github.com/Tenma-Server/Tenma
https://github.com/andyalam/django_instagram
https://github.com/matagus/django-planet
Из хайлевельных примеров есть очень крутое https://github.com/gothinkster/django-realworld-example-app
Ну и вообще никто не мешает загуглить на гитхабе "django + ключевое слово че там у тебя за сайт (блог, екомерц, лмс, ну ты понял)"
Прочитал что она может заменить интегрирование С в питон, но я не понимаю как она работает и не могу найти годный мануал по ней на русском
Хехе, победа. Меня тут осенило - а зачем я, собственно, в числа-то всё перевожу? Это ведь только для сортировки правильной нужно, так что лучше там пожертвуем десятком мс, зато на чтении и записи 50-80 экономим!
Лучший результат на i5 (прошлая версия 0.14-016, как и у тебя на скрине):
total 82ms: reading: 27ms, processing: 51ms, writing: 3ms
Но в среднем ~90. Больше уже, по-моему, ну совсем нечего убирать. Заодно и код похорошел и короче стал!
https://pastebin.com/FYnMgje0
>Но так же быстрее)
Ну, уже не обязательно, ведь вложенность меньше стала, а значит и доступов меньше происходит. Тестировать уже, разумеется, не будут, хватит с меня.
>>04967
>на русском
Учи английский, что ж тут поделать. Если ты даже понять, что это, и хоть по примерам с сайта с документацией потыкать и хоть как-то разобраться не можешь, то брось. Какой смысл, по каждой мелочи сюда прибегать будешь?
Просто нет слов...
Сап, сессия на носу, а значит время ахуевших вопросов от студентов пришло.
В пн экзамен и на него надо принести сайт с бд, который я якобы пилил 3 месяца. Сейчас пытаюсь найти какой-то темплейт на джанге или хоть чему-то, если не получится - попытаюсь за 2 дня напилить блог по гайду, пока получается очень плохо
СОбственно вопрос: если у кого-то есть рабочий сайтик на джанго или фласке, будь добр, выручи. Мне всего-то показать его надо, чтобы отьебались и не выгнали с шараги. Понимаю, что просьба очень ахуевшая, но вдруг кто-нибудь откликнется
чувак, просто идёшь на гит и начинаешь искать по тегам нужный тебе код.
"https://github.com/Tenma-Server/Tenma
https://github.com/andyalam/django_instagram
https://github.com/matagus/django-planet
Из хайлевельных примеров есть очень крутое https://github.com/gothinkster/django-realworld-example-app" взял из треда ньюфагов
Задача
Given a list of integers and a single sum value, return the first two values (parse from the left please) in order of appearance that add up to form the sum.
мой код
def sum_pairs(ints, s):
for x in ints:
if x + any(ints[1:]) == s:
return [x, s-x]
Проблема в том, что там есть тесты с длинной списка в 10 лямов и получается оче долго из-за чего кодеварс не хочет принимать ответ.
Ты, в принципе, в правильном направлении пошёл, пытаясь сравнить текущий со всеми последующими. Просто (не) реализовал это через жопу.
В худшем случае, если нет никакой информации о входных данных, нужно будет произвести n^2 сравнений. Быстрее никак.
Если диапазон чисел гораздо меньше количества элементов (т.е. есть много повторов), то можно, например, создать побочный список с "неподходящими" элементами, и каждый следующий элемент сперва пытаться найти в этом списке. Ещё после первого прохода можно записать максимальный и минимальный, и в случае, если текущий не попадает в диапазон [sum - max, sum - min], сразу пропустить его, ну а если равен одному из крайних значений, то решение найдено и при необходимости можно ещё за один проход найти индекс ближайшего подходящего.
Алсо, скинь ссылку на конкретную задачу на codewars.
Хотя пересмотрел всё решение, ступил я чо-т: всё там можно быстро сделать, безо всяких n^2, как раз с помощью записи уже увиденных чисел в подходящий контейнер.
Я сначала подумал, что это велосипед, и проще импортировать каунтер
Гуглю пол дня, GIL отключаю (вроде бы), делаю как в примерах со всяких стековерфлоу и каких-то бложиках, в итоге ужал до минимального примера: https://pastebin.com/gYxgSyGj
ЧЯДНТ? Для отключения GIL достаточно PyEval_InitThreads и Py_BEGIN_ALLOW_THREADS? На него пока грешу, но кроме этих указаний в документации ничего не вычитал, а они не помогли.
Надежда на двач родимый осталась.
>Надежда на двач родимый осталась.
Пиздец как в воду глядел, только запостил свою хуету, как сразу дошло, что time.clock() даёт время отдельного ядра, а с OMP надо использовать time.time(), и тогда всё совпадает.
Спасибо, двач! пиздец
У тебя квадратная сложность. Сет каждый раз генерится, для этого он пробегает по всему списку. Вынеси его формирование за лист компрехеещон
Чому NlogN-то? Ты всего два раза по списку проходишься: при создании set'а и при, собственно, поиске слагаемых, а x in set O(1), так что линейная сложность же.
Не, ну если по-человечески сет вне лупа один раз сделать, я имею в виду.
Посоветовал бы наверное Валентину ЖИВИМ или СУБЛИМЕ ЕДИТОР 3
> Сет каждый раз генерится
Ну нашёл к чему придраться. Суть-то понятна. На самом деле задание не оче ясное. Если нужную сумму дают 1-ое и 4-ое, а также 2-ое и 3-е, то что надо вернуть?
И тогда уж не квадрат, а N^2*logN.
>>05470
> поиске слагаемых, а x in set O(1)
Чудеса в решете, премию Тьюринга в студию г-ну Гвидо, он накрячил всю вековую историю теории информации и алгоритмов.
Но, так как я даон, то сегодня ситуация повториятся с другим примером.
Как блять научиться писать нормальный код на питоне? Доки стараюсь читать, честно.
Собственно мой код
https://pastebin.com/BBJ4G0Zp
Задание:
https://www.codewars.com/kata/55aa075506463dac6600010d/train/python
Divisors of 42 are : 1, 2, 3, 6, 7, 14, 21, 42. These divisors squared are: 1, 4, 9, 36, 49, 196, 441, 1764. The sum of the squared divisors is 2500 which is 50 * 50, a square!
Given two integers m, n (1 <= m <= n) we want to find all integers between m and n whose sum of squared divisors is itself a square. 42 is such a number.
The result will be an array of arrays or of tuples (in C an array of Pair) or a string, each subarray having two elements, first the number whose squared divisors is a square and then the sum of the squared divisors.
Откуда логарифм-то? Он проявляется, когда есть дерево, например при бинарном поиске. В твоём примере этого нет.
И проверка на вхождение в множество в питоне действительно о(1) от числа членов множества кроме случаев с коллизией.
Короче или сам разбираешься со сложностями и алгоритмами, или пруфай свои заявления.
Выдели проверку на квадрат в отличие функцию. Выдели разложение на множители в функцию.
Что значит нашел к чему придраться? Мое замечание меняет твои волшебные н лог н на квадрат. Это не мелочь, это непонимание основ.
В отличие = в отдельную
>Чудеса в решете, премию Тьюринга в студию г-ну Гвидо, он накрячил всю вековую историю теории информации и алгоритмов.
Это типа сарказм? https://repl.it/repls/BruisedAdventurousBittern На бóльших множествах можешь у себя локально проверить.
>Если нужную сумму дают 1-ое и 4-ое, а также 2-ое и 3-е, то что надо вернуть?
2-ое и 3-е, так что твоё решение ещё и не подойдёт (но ты условия целиком не знал), поэтому люди сет набиват по мере прохода и ищут второе слагаемое среди уже прошедших. https://www.codewars.com/kata/sum-of-pairs/python
>N^2*logN.
Да откуда ты логарифм-то берёшь, N^2 это уже по обходу списка на каждый элемент, куда больше-то?
В цикле поиска делителей не обязательно проходить по [1, n) - хватит проверить [1, √n]
https://pastebin.com/tmY56dxy
Щас он скажет что успешно нас затролел.
Нашел отличное для себя решение на гите: простенький бложик на фласке. Уже более-менее разобрался со всем.
Только есть одна проблемка тут не реализован метод удаление постов или хотя бы редактирования. Я в принципе представляю как это сделать, но что-то трогать там очень боюсь. Может кто, помочь дописать?
https://github.com/(удали)ghostrong/weblog <-собственно что я украл.
Там есть publish.py и в models.py чет написано, я так понимаю нужно что-то похожее сделать только наоборот
>if int(x/q) not in divisors:
Это же проверяет наличие x/q, но ведь у тебя в массиве хранятся квадраты делителей, а не просто делители т.е. надо if (x/q)2 not in divisors:
Есть затык в inline-режиме. Везде можно отправлять аудио и прочие файлы прямо с жёсткого диска, но в инлайне можно указать только URL до файла или ID на серверах Telegram. Что делать, если мне надо грузить звуки с жёсткого диска?
Знаю Рест фреймворк, Q и F объекты. Сейчас изучаю Docker/Celery/RabbitMQ (личный проект)
джанго-джуниор из провинции
Получится не быстрее а структурированней
В АПИ нет ничего такого. Поскольку сам сервер за NAT, могу выгружать на VPSку. А там 100ГБ/месяц лимит.
640x480, 2:45
N ступенек в лестнице.
Человек может пройти как по 1, так по 2, так и по 3 ступени, в общем шаг его К ступеней.
Чтобы найти все комбинации К в N это два цикла делать?
Эх, хуевая идея. Я заебусь вот это все загружать.
Тогда закачаю все звуки на ВПСку, создам там JSON-файл с их описанием и путями и подниму там сервер. Буду оттуда тянуть.
Что там для статики поднимать? nginx?
То есть?
no, fuck you, leatherman.
Я inline-soundboard для Telegram делаю. Пока жожа и гачи, как самые меметичные.
У тебя дано K вариантов шага и их сумма должна быть равна N. Без последнего ограничения это комбинаторика. А с ним уже рюкзак.
Это скорее особый случай рюкзака, возможно, есть простор для оптимизации
Да я будто руками эту ОТКАЗОУСТОЙЧИВОСТЬ не сделаю.
Мне, если честно, проще 30 рублей каждый месяц платить: зато свое.
Зачем мне маштабировать статику?
apt люто медленный по сравнению с pacman, кстати.
n=int(input())
a=['.'n for i in range(n)]
for i in range(n):
for j in range(n):
a=''
a[n-i]=''
a[(n+1)/2]=''
a[(n+1)/2]=''
for i in a:
for j in i:
print(j, end=' ')
print()
задача:
pythontutor.ru/lessons/2d_arrays/problems/snowflake/
сначала думал сделать через if, но намного экономнее (по ресурсам) сделать вот так (там в уроке об этом написано, ага). второй цикл это просто вывод двумерного массива. не в этом суть. мне на строке 5 (т.е. a='') выбивает ошибку: 'str' object does not support item assignment. подозреваю, что во всех остальных местах, где я пытаюсь присвоить а[какому-то][какому-то] какое-то значение, будет выдавать такую же ошибку, но сути я её не понимаю. как тогда сделать?
уже
Ну так ты генерируешь список, состоящий из строк, при инициализации во второй строке.
можно чуть понятнее?
тут ещё пишут:
Строки в Python неизменяемы. Нельзя присвоить что-нибудь отдельному символу строки. Чтобы изменить символ, используйте срезы: text = text[:4] + '$' + text[5:]
но мне всё равно непонятно. а если вся строка -- это один символ, и мне нужно просто заменить его с одного на другой?
ну тупая же и очевидная проблема, а я всё равно не понимаю
>вывод двумерного массива
У тебя нет двумерного массива. У тебя есть список строк.
Алсо, ты в курсе, что у тебя j нигде не используется?
>>05952
Куда подробнее? Строку изменить нельзя. Ты можешь изменить элемент массива, можешь изменить значение переменной, можешь создать новую строку путём некотороых манипуляций над исходной и присвоить её той же переменной.
>а если вся строка -- это один символ, и мне нужно просто заменить его с одного на другой?
ну, ээ, text = твой_символ.
>>05861
>>05882
Может, мне кажется, но есть решение проще.
Частный случай этой задачи, если К == 2, это числа Фибоначчи, из этого можно сделать такое решение: сначала заполняешь начальными значениями массив из К чисел (b[0] = 1, b[1] = 1, b[2] = b[0]+b[1], b[3] = b[0]+b[1]+b[2], ...), потом (i == K+1) суммируешь предыдущие К чисел, и так, до i == N. но это не точно
initial_dict = {key: value+shift if value+shift <= CONST else key: CONST - value for value, key in enumerate(string.ascii_letters) }
есть скрипт:
from subprocess import Popen, PIPE
f = open('log_tree.txt', 'w')
with Popen(('c:\\','cd', 'tree'), stdout=PIPE) as proc:
f.write(proc.stdout.read())
f.close()
Выдает ошибку:
PermissionError: [WinError 5] Отказано в доступе
Как мне повысить права через скрипт?
Не поверите... TELEGRAM СЖИРАЕТ ЗВУКИ ТОЛЬКО ИЗ VK.COM
То есть даже звуковое превью из меню выбора есть, а при отправке — ошибка. Без описания. Пикрелейтед.
Короче, написал разработчику.
использовать линукс
Заглянул,но не врубил что из этого нужно именно для начала изучения основ,заебло тыкать на фреймворки и т.п.
Что из предложенных вариантов проще? Кроме "Визуализация физических процессов при помощи библиотеки визуализации PyQtGraph"
Благодарю
если ничего не знаешь из этого*
То есть у бота есть метод
updater.start_polling()
который блокирует поток выполнения
я пробовал запускать бота в urls.py уровня проекта, тогда не выполняется нифига, даже в админку не зайти, если выполнить на уровне приложения, то не будет доступа к моделям, не будет возможности сохранения и добавления новых сущностей в бд.
сейчас быстрый костыль выглядит так что я сделал модель для бота с полем is_active, и методом save такого вида
https://jsfiddle.net/oarodfph/
но как вы понимаете, pid постоянно проебывается и все остальные радости могущего откинуться в любой момент рантайма. Нужны короче идеи как бы все это сделать нормально
соцсеть на джанго
качаешь книженцию django by example там тупо одна глава соцсеточка для любителей картинок с фолловингом лентой и всей хуйней
Благодарю от чистого сердца, друг мой.
label = QLabel(self)
label.setPixmap(QPixmap('background.png'))
Теперь осталось сделать чтобы эта картинка заполнила всё окно и при этом чтобы при изменении пропорций окна эта картинка тоже гнулась продолжая заполнять всё окно.
Ну значит пиши каштомный виджет и переопределяй метод paintEvent как тут https://stackoverflow.com/questions/44505229/pyqt-automatically-resizing-widget-picture На 4-ых кутях оно помнится точно работало, на счет 5-ых хз.
Зачем здесь QVBoxLayout? Без него почему-то не работает. Ещё у меня кнопки поверх изображения. Можно сделать чтобы они перемещались по экрану по мере изгибания изображения чтобы они всегда были поверх одной и той же области на изображении?
pastebin.com/EM0gstPL
дело вот в чём. если просто, то видишь строки 31-35? сколько бы раз цикл не выполнялся, количество элементов в списке end всегда будет кратно пяти, ведь так?
теперь смотри строки 36-39
а точнее, строку 37. мне там постоянно выбивает index out of range, единственный список там -- это end. все индексы имеют вид от до [i+4], i ходит в цикле тоже по пять, и начинается с ноля, т.е. если разбить end на части по пять, то i всегда будет указывать на первый элемент в этой части. [i+4] это максимум, и он, по идее, должен указывать на последний элемент в этой части. так где out of range? может, проблема в строках 38-39, но там ведь цикл (да, j ни для чего не используется, это я просто сделал чтобы 5 раз убрало элемент) тоже делается по пять, т.е. end остаётся кратным пяти.
вся надежда на вас
спасёте ль душу мою гнилую?
> Без него почему-то не работает.
Получилось. Не надо было создавать дополнительный класс для label, а всё можно было в текущем классе переопределить. Осталось только координаты кнопок из абсолютного значения в относительные перевести. Для этого есть стандартный метод?
я даже пошагово отлаживал через питонтьютор, лол
вроде, если i не меняется, всё смещается влево, соответственно не меняем i, 5 раз удаляем, и удаляется 5 последовательных элементов
Ну ты удаляешь 5 элементов из списка во второй итерации цикла, а в следующей итерации ты обращаешься к списку по индексам 5+3 и 5+4, а в этот момент в списке всего 5 элементов.
да, через принты вроде то же получается, спасибо
то, о чём я там говорил
теперь нужно думать, как сделать так, чтобы len каждый раз заново просчитывался
Получилось. Спасибо
Мне вот прям совсем просто теория нужна, до практики сам додумаюсь, я надеюсь.
>есть тут знатоки хоть немного телеграм бот апи?
Нахуй ты это спрашиваешь? Пости сразу вопрос, если ответят, значит есть.
ну сорян
Суть в том, что бот сам не может написать, только если с ним начать диалог. А если ты есть в чате с несколькими людьми и ботом, может ли он тупо в личку тебе все же написать, или не?
Личка это уже другой chat_id, поэтому 99%, что нет.
На сколько я помню, с ботами вообще ограничения были, связанные с ЛС - бот не может первым писать. Он может лишь начать писать, после того, как юзер добавит его к себе в контакты/стартанет.
Это было год назад, может что и изменилось, но вряд ли.
В твоем случае это значит: удаляешь весь свой говнокод, читаешь пеп8, пишешь заново.
>теперь нужно думать, как сделать так, чтобы len каждый раз заново просчитывался
Обычно изменение границ списка/массива во время итерации по нему считается признаком не очень умного человека. В крайнем случае, обходи список с конца в начало.
"A vs. B (C)"
Ещё к тому же части B и C опциональны. Я начал ковырять библиотеку Parse, но что-то там с опциональными частями глухо, весь стринг тупо не парситься, раз не попадает под полную схему.
ну это уж на самый крайний случай. как там кстати это будет работать для трёх полей? три регулярочки? если что, то vs. и первая скобочка делимитеры
Пикрандом
> интересует отладка и всякие свистелки и перделки
> git
> красивенького отображения всяких markdown и пр.
> PyCharm-е заебал он меня своей тяжеловесностью
И что ж в нём такого тяжелого, ПК не тянет?
Тогда уж ставь саблайм а для гита отдельную прогу, гораздо легче будет, ага.
> И что ж в нём такого тяжелого, ПК не тянет?
Тянет, но загрузка в несколько секунд и постоянное индексирование файлов доебало
> Тогда уж ставь саблайм а для гита отдельную прогу, гораздо легче будет, ага.
Меня отладка в первую очередь интересует. Гиты и прочее говно как-то опционально больше. Сам-то чем дебажишь?
>но загрузка в несколько секунд
Ты у нас его закрываешь по 2-3 раза за 10 минут?
>постоянное индексирование файлов доебало
И свапаешься между проектами в одном окне каждый раз?
попробуй PyCharm
> но загрузка в несколько секунд и постоянное индексирование файлов доебало
Я недавно открыл для себя на работе такую штуку, как SSD, реально быстрей всё прогружается и индексируется, возможно тебе тоже стоит попробовать прикупить себе минимальный по объёму SSD и накатить туда все свои программы, и, возможно ОС.
> Сам-то чем дебажишь?
И дома и на работе PyCharm, и там и там Linux, всё ок вроде, полёт нормальный.
Ты видимо не пользовался Microsoft Visual Studio, вот там, как по мне, реальные тормоза.
>ну это уж на самый крайний случай.
Почему? Разве пикрл не то что тебе нужно?
> как там кстати это будет работать для трёх полей?
Каких полей?
Кто знает, почему MySQL не хочет коммитить объект из SQLAlchemy без explicitly-specified атрибута (колонки) `time`?
Собственно, задача, чтобы `time` в поле обслуживался именно движком MySQL, а не ORM'ом (т.е. `(value = 'foo', time = time.time(3))` не годится.)
отлично, Антон!
поля, ну А, B, С это поля. я хз как по-русски перевести.
вопрос ещё такой, а как можно дополнительный делимитер ввести между A и B? к примеру, если некоторые из полей разделяются не vs. а ещё и через 'feat', 'feat.', 'ft.'
Если что, я отмапил класс через sqlacodegen, видно, он `default` потерял. У меня формат не Datetime, я храню unix timestamp вот так:
`time DECIMAL(15,3) NOT NULL DEFAULT UNIX_TIMESTAMP(CURRENT_TIMESTAMP(3))`
Как это записать в SQLAlchemy для `default=`?
Сделал вот так: https://pastebin.com/nCUdsdF3
Не работает, короче. Плюс, он все равно ведь пикает время во время создания объекта, а не коммита в ДБ? А задача добиться именно последнего.
>поля, ну А, B, С это поля. я хз как по-русски перевести.
Какие нах поля? Не можешь описать, так хоть пример скинь.
>вопрос ещё такой, а как можно дополнительный делимитер ввести между A и B?
(\w) [vs|feat|ft].\.\ (\w) \((\w*)\)
>time
>db.Numeric(15, 3)
Ты сам-то понимаешь, что делаешь или так наугад код ебашишь?
>А задача добиться именно последнего.
Погуглил за тебя.
https://stackoverflow.com/questions/6992321/how-to-set-default-on-update-current-timestamp-in-mysql-with-sqlalchemy
там тоже парсер часть звёзд зохавал
>не вкурю, почему не работает часть в квадратных скобках,
Потому что почитай, что такое квадратные скобки в регулярках.
Как тогда в регуляторку воткнуть выбор из альтернатив? Или вроде вертикальной чертой задаётся.
Просто у меня задача сделать программу, которая собирает данные в пассивное режиме и отправляет на сервер. Показания процессов, сети и так далее. По запросу сервера скриншоты и скрипты запускать на удаленном компьютере.
В будущем ещё добавить надо упоавление в прямом режиме. Тимвьювер короче.
Ещё усложняется тем, что нужно для винды ХП это сделать. На 10-тке я вроде сделал так, чтобы приложение от админа запускалось и писало себя а реестр для автозапуска, но на ХП проблемы появились и не работает часть функций. По этому решил не писать а реестр, а сделать сервисом.
Короче, вопрос в том, я вообще в правильном направлении двигаюсь иди мне нужно что-то поменять в своих размышлениях?
Когда-то и меня вела дорога приключений. А потом я получил ошибку компиляции... Недельку повозился и портировал, забив на головную боль с цигвином и юникодом.
Держи нас в курсе.
Чтобы был выбор из альтернатив, нужны альтернативы. Насколько я знаю, "Заматчить в группу либо то, что идёт после ft., либо ничего", да ещё при этом чтобы вместое ft. могли быть разные вариации, да ещё и потом остановиться по скобочке или концу строку, но при этом не матчить их в эту группу, это какой-то ужас, я запутался в куче скобочек, non-capturing group'ах и прочеих чёрточках когда пытался писать.
Так что вот накостылял топорный вариант: https://repl.it/repls/LawfulDeliriousPaddlefish работает как надо.
Впрочем, если кто сможет переписать это всё под одну регулярку, было бы здорово посмотреть на это.
я написал только с циклом,
я бы проверок на left<=right добавил
сделай нормально одну конструкцию if-elif-elif, а не куча if'ов
спасибо Антон, я что-то подобное тоже накостылял. сначала пробую разбить стринг на название трека и опциональные элементы по feat / vs / ft, а потом уже дроблю эти опциональные поля, если они есть.
ещё у меня была идея использовать регулярку в которой для делимитера feat/vs/ft использовать свою группу. на выходе был бы кортёж из четырёх вместо трёх элементов, из которого можно было сделать новый кортёж взял только три нужных элемента. но это конечно выглядело бы грустно.
Лучше qt учи, анон.
Вот есть у меня код, окошки, кнопочки, формы - вот это вот все. Но для запуска нужно нажать "выполнить" в пичарме.
А я хочу как у людей - ярлык на рабочем столе и двойной клик. Как это сделать?
ЯП поменяй.
py2exe и аналоги
Поясните, для того, чтобы взять часть строки (допустим 2, 3 и 4 символы) нужно сделать так:
string = 'Vecher v hatu'
print (string[1:4])
Как это понимать? Какая логика в таком синтаксисе? Как его читать? Я понимаю если бы было так string[2:4], что можно было бы прочитать как "Взять символы со второго по четвертый" или так string[2:3], что значило бы "Взять три символа начиная со второго" (или такие же варианты, но с нумерацией элементов с нуля).
А какая логика в это записи string[1:4]?
Что было на уме у разработчика языка?
Дискас
С вкатом тебя!
В программировании (любом, хоть асм) отсчет идет с 0, а не 1. Может разве что в каком-нибудь макросодристе для экселя или 1ц как-то иначе. Короче привыкай.
Нумерация начинается с 0, что бы взять 2,3,4 символы(если ты .. и считаешь с 1) то первый вариант, иначе - второй вариант. Логика проста и понятна.
>Первый день вката в питон.
It may take a little while...
>Какая логика в таком синтаксисе?
string[1:4] от первого элемента до 3го (4ый не включается)
это супер удобный синтаксис, поработал бы с C-style строками, стал бы на него молиться
> от первого элемента
от первого, в смысле от элемента номер(формально говоря от второго) один
потому что первый это нулевой
пояняю на всякий случай
Годно, то что нужно
Лично я представляю себе типичный цикл for (int i = 1; i < 4; i++), но это потому что я крестоносец, поэтому могу себе позволить.
b = 2
if a and b != 2:
print ('ok')
elif a or b == 3:
print ('not ok')
else:
print ('bye')
Анон, почему аутпут "not ok"? Кажется, должен быть "bye"?
Бля, решил проблему.
Telegram не жрёт IP-адреса, он жрёт только хостнеймы. Ну я бесплатный ddns завел и привязал адрес.
Теперь все работает.
Пытаюсь в фласк
https://ideone.com/AbC5HC
По ссылке сверху форма, которая генерит кнопку и список с чекбоксами, переданный ей приложением.
По нажатию кнопки я хочу получить список отмеченных пунктов и отгенерить новый список, уже без них, но меня выкидывает в 404, чяднт?
Тебе там foreach завезли, алло.
вопрос закрыт, обосрался с конфигурацией nginx
заочку не предлагать - медицинский
>elif a or b == 3:
Это не так работает. В твоём случае идёт две проверки:
1. b == 3
2. a (что a имеет какое-то truthy значение, то есть не 0, false, "", [] и прочие falsey)
Нужно писать либо "a == 3 or b == 3", либо извратиться и "3 in [a,b]". То же самое касается и первого условия.
А что этот проект делает?
Selenium. Для извращенцев
API
А вообще перепроверь всё, потому как такого не бывает, что на одном и том же наборе данных программа то находит нужное тебе, то нет.
За 15 собесов лишь 2 раза я видел на гитхабе посещения страницы с hh и никаких аномальных всплесков тоже не было, это за 2016-2017 год.
Питон сильно сложнее?
Питон чуть ли не самый простой язык.
Странно как-то. А то я начитался про профайлинг эйачров, как они там вконтактик чекают, фейспук, твиттор, составляют психологический потрет будущего неадеквата, а у меня там один сплошной он как-то странный, либо вообще нихуя. Вот думал на гитхабе выехать, но похоже дохлый номер.
да не ссы ты, прям в сиви и напиши мол на гитхабе проект с горсткой звездочек, в конце-концов ты ж его не спиздил и это и правда круто
а эйчары просто телки, со всеми вытекающими: могут и на гуще кофейной погадать, и айсикю по вконтактовым репостам детектить
прохожу туториал по документации там есть вот такая вещь повторенная раза 3:
Чем больше тестов, тем лучше
А если тесты превышают размеры кода самого приложения... Это ведь в 2 раза больше работы. Там где ты мог написать за 2ч, ты потратишь 4...
Но в туториале очень настойчиво требуют писать тесты
Бывалые в джанго, поясните...
Просто нравится как устроен человеческий организм, как его чинить и всё такое. Хотя прямо сейчас научка на патологоанатомии и пытаюсь подцепиться к Клименко, Лебедеву и всей этой айти компании.
Но денежек дюже не хватает
Если только вкатываешься в джанго - забей хуй и займись чем еще - ту же django by example полистай, она годная
Если вкатился уже достаточно глубоко, но еще не навернул 2 scoops of djang / obey the testing goat - навени и по тестам вопросы многие отпадут
От себя скажу что тесты помогают экономить когда проект развивается бурно. Обмазывать тестами говноблог который пишешь два вечера и не трогаешь три года - можно, но только если уж очень хочется. Фича тестов главная, в прикладном плане - что бы если после коммита кого-нибудь из команды все наебнулось - ты побежал к разозленному ПМ весело гогоча и тыкая в ебало успешные тесты твоей версии мол это не я, а сирожа все наебнул.
Не просто странно, но еще и обидно, так-то.
Тоже слышал про составление профиля, но хз, делали ли так со мной, по факту, у меня везде фейки никак не связанные с гитом и телегой(никами в смысле).
>у меня везде фейки
Таких вообще брать нельзя, ящитаю. А вдруг ты террорист? Нормальному человеку прятать нечего.
Институт Развития Интернета. Клименко - советник президента, Лебедев - где-то, что-то главный по информатизации здравоохранения.
Занимаются машинным обучением системы поддержки принятия врачебного решения и стандартизацией баз данных в здравоохранении
и оба сидят у нас на кафедре
> 2ch
> нормальный человек
Хех
Да ладно, я просто ебалом не вышел, а быть дурачком который ставит свои ущербные фотки везде и всюду - желания нет.
Да и какая им разница, террорист я или просто поехавший, я к ним иду работать, код писать и всё, на это должны смотреть в первую очередь, на мой взгляд.
Толку от социобляди которая не слыхала о PEP8, но зато инстаграм которой ломится от фоточек с отдыха и прочей важной информации?
Проблема в том, что порой я не знаю, как попасть в определённый город, ибо смотря на список сложно сразу определить и учесть все пересадки. От программы хочу, чтобы требовалось ввести место пребывания и место назначения.
Чтобы он перебрал кортёж и вывел оптимальный маршрут.
Вот только алгоритм всего этого в голову не лезет. Лучше бы хеллоуворды писать, конечно…
Кто-нибудь подскажет направление?
Видимо, с парой тройкой циклов нужно иметь дело, но не совсем понимаю.
>Кто-нибудь подскажет направление?
Это старинная задача Дейкстры о поиске пути на карте.
1) Тебе надо придумать, как хранить узлы графа, чтобы быстро узначать, как любая его вершина связана с другими вершинами, и —
2) Тебе надо будет таскать с собой односвязный список чисел, соответствующих вершинам, чтобы ты мог узнать, был ли ты уже в этой вершине или нет, и обходить петли.
Вот более простая задача: обойти лабиринт, с тупиками, но без петель. Для начала реши её, хотя бы на бумаге, дальше полегче будет.
Ты меня совсем не понял. Я не по карте буду бегать, а перемещаться на стритстрайдера или лодке. Есть заданные возможные пути, а мне нужно, чтобы программа в момент ока выдавала путь с пересадками до заданного пункта. Мне нужны циклы и условия, а не графическое нечтоещё не знаю питон настолько, чтобы с ними работать, да и для этой задачи не требуется
Мне нужна не карта, а пункты определённые. Можно сравнить со станциями ирл.
Как бы... Мне неизвестно и предположительное местонахождение некоторых пунктов, но я знаю, как туда можно попасть, с пересадками.
#!/bin/python3
name = input("Введите название докУмента: ")
text = input("Скопипасть содержание, баака!")
doc = open("%s.txt" % name, "w+")
doc.write(text)
doc.close()
проституткам всегда сложно работать на обычной работе
С меня как всегда.
странный смайлик
https://ru.wikipedia.org/wiki/Граф_(математика)
У тебя есть города (вершины), и есть транспортные пути (рёбра). Вот тебе твой граф. А дальше Дейкстра спешит на помощь, как уже сказали.
Физическое расположение этих городов не имеет никакого значения, про него речи и не шло.
Привет. Я тоже незнаю.
https://github.com/macropin/django-registration
Я этим пользовался. Простая как пробка и ничего лишнего.
для версии 1.9
У меня есть
[a, a, c, d, b, a, f, d]
Мне надо вернуть индекс последнего a, но .index возвращает первый
Я хуево сформулировал, не индекс максимального элемента, а максимальный индекс
Ебаный изврат.
Находи максимальный элемент, через max(), затем делай обход массива в обратном порядке до того момента, пока не встретишь своё элемент максимальный.
Ого, спасибо, бротиш, я бы скинул тебе картину с красивой девочкой, но я с телефона
Да, блять, мне не нужен максимальный элемент, мне нужен максимальный индекс любого
А, так ещё и в АУРе опакетили.
Заодно и научишься же
>надо на английском писать, а у меня с грамматикой плохо
У меня самого хуево. Читаю нормально, пишу как школьник. Но пока никто не жаловался, хоть и стыдно, да, особенно когда в истории ридми по десять правок одного предложения и одна правка корявей другой.
Вот жиза-жиза. А иногда так хочется что-нибудь похудожественнее запихнуть, но не уверен — а так вообще говорят?
есть идеи как это сделать?
Это ананас пытается придумать что писать посредством великого псевдорандома зависящего от постинга на форум 2чхк и пронумерованному списка проектов для скучающих неофитов.
Гифочку бы хоть в ридми запилил.
>скрипт на 30 строчек
>165 звездочек и 31 форк от таких же вкатывальщиков
>А МОЖНО МНЕ ЭТО НА СОБЕСЕ ПОКАЗЫВАТЬ?!?!
Как это сделать
Очевидно нужно смотреть что там в телеграмовском апи, потом искать соответствующую функцию в библиотеке которую используешь. В общем случае ты слушаешь канал (обозначенный в коде) и пересылаешь куда надо.
Я искал в этом апи но не понимаю, какая конкретно команда будет пересылать мне посты из канала, а уж тем более как она работает олсо я тупой
[a-zA-Z0-9]*
Появился тут заказ на приложение для андроида(клиентская часть реализована будет не мной, так что суть не в ней), суть приложения в том, что есть один сервис, доступ к которому стоит прилично, к тому же не всем он выдаётся. По этой причине создаётся один аккаунт и уже через него доступ к сервису будут получать все пользователи.
Питон планируется на серверной части. То есть приложение отправляет на сервер запрос с параметрами, сервер уже передаёт эти параметры в сервис и делает по параметрам переданным выборку статей(пусть будут статьи), ну и естественно потом сервер возвращает полученные данные назад клиенту.
Начальная нагрузка примерно 20-30 человек, но в перспективе меня пугают гораздо большей аудиторией(если взлетит - другие фирмы так же закупят ПО). Запросов будет много, но они мелкие(буквально 3-4 коротких параметра, в ответ тоже - небольшие структуры данных).
Сам вопрос:
Что использовать в качестве веб-фреймворка? Первая мысль была использовать Flask/Django, затем подумал о aiohttp и tornado.
Ну и будет мой любимый nginx + sqlite/postgresql(там только данные для лицензий хранятся).
У тебя прям Parker-расследование получилось, лол. Сомневаюсь, что автор этой репы на двощах сидит.
>олсо я тупой
Ну ты хоть что-то уже написал? Кроме импорта телеграмной либы. А то появляются сомнения во фразу "пишу бота".
>>07999
>sqlite/postgresql
Для трёх строчек данных аккаунта? Зойчем?
Если хочешь, можешь сразу с uvloop поиграться, нагибая даже ЖСеров из соседнео треда, и пообещать заказчику возможность обработки огромного количества пользователей. Думается мне, однако, что боттлнеком всё равно будут запросы и получение данных с этого стороннего сервиса.
Да понятно, что это не он. Но как удачно зашло, что он пишет, что хочет показать гитхаб работадателю и тут такой аккаунтище, такой проектище!
Да , написал , на самом деле все идёт очень даже ок , но сейчас , когда столкнулся с этой проблемой процесс встал
+ У меня почему то не импортируется библиотека telethon, хотя я ее установил и Пайтон сам говорит что с ней должно быть все нормально
Зависит от города, меня в мухосрани с одним проектом на джанге взяли, потому что никого нет вообще
Да.
- какие контейнеры/структуры данных (не помню как конкретно выразились) в пифон иммутабельны? Очевидно: tuple, forzenset.
- сложность вставки элемента в середину листа в пифоне? Ну, вроде O(n).
- сложность получения элемента из листа. O(1).
А теперь приготовтесь… Выдохнули?
- сколько будет 2^32? Вы чё, охуели?! Мне для этого пифон и нужен, чтобы эту хуйню не запоминать. Я ответил что-то вроде "4 миллиарда", а надо было: "два умножить на два тридцать два раза". В этом месте уже анус раскалился.
- назовите алгоритмы сортировки со сложностью "O n хуйня пидор n". АААААА! Да мне похуй на эти алгоритмы, я их в гугле за две минуты найду и скажу. Ладно бы вопрос звучал: "назовите алгоритмы сортировки", это бы было сносно, и то, нахуй мне их знать?! Я что, собираюсь новый придумать? У меня дохуя выбор есть какой использовать в пифоне? Я ответил, что не согласен с политикой хуйни насчёт алгоритмов и того, что надо и что не надо помнить наизусть.
Надеюсь мне больше не позвонят. Как же бесит их узколобость и культ алгоритмов.
>Рукожопые овцеёбы в поисках рукожопого овцеёба.
>Как же бесит
>культ алгоритмов.
При чём тут алгоритмы-то?..
Зачем тебе шквариться об яндекс ? Зп ниже по рынку , корпоративная культура , работа заключается в согласовании кнопок
> Прикольно пообщаться, пораздувать щёки и т.д.
Это опыт общения. Плюс кулстори для вас, ребята.
петух-веб-студия
Д О К У М Е Н Т А Ц И Я
Доставлено.
>назовите алгоритмы сортировки со сложностью "O n хуйня пидор n".
Быстрая.
>АААААА! Да мне похуй на эти алгоритмы, я их в гугле за две минуты найду и скажу.
Сэлюшай малтшык...
>Ладно бы вопрос звучал: "назовите алгоритмы сортировки", это бы было сносно, и то, нахуй мне их знать?!
Её в Московском Государственном Университете изобрели, когда он ещё был торт.
>Я что, собираюсь новый придумать? У меня дохуя выбор есть какой использовать в пифоне?
Из-за вас уже телеграфные столбы падают. Родина!!! Дала им сортировки!!!! Учи... сортров ` ы
Через месяцок-другой изучения сможешь найти удалёнку за ~4-5 килобаксов спокойно. Программисты сейчас везде нужны, особенно на питонистов спрос.
Вот у меня есть продукты и заказы, в заказе фореинки к продуктам.
Как добавить к одному заказу несколько продуктов?
В чем тогда Many-To-One в ForeignKey?
Я понимаю, что я могу это сделать, если поставлю order в модель с продуктами, но это же тупо, потому что у продукта может и не быть заказа?
в пайтоне вроде есть встроенный, но я что-то не могу разобраться
есть небольшая программка, и мне нужно запустить её и видеть значения переменных с каждым шагом. как это сделать?
скорее не прокатит, ибо по ссылке же хранятся, а они скорее всего разные хотя вдруг у тебя одинаковые списки лишь указывают на один и тот же
нет, они разные, спасибо за ответ
значит, нужно как-то сравнивать и удалять
а с удалением у меня что-то туго, потому что в итоге получается index out of range
Где для python можно найти пример простой работы с веб-формами и таблицами, получаемыми из sql ? Есть что-то вроде PHP-букваря, без всяких фласков и джанго ? Чтобы просто вывести результат запроса в виде таблицы и сделать поле для ввода текста, чтобы записать вводимый текст в этой базе нужной таблице нужную ячейку
Я написал скрипт, который хочу поставить на поток, но так-как не имею собственного сервера, хочу запихнуть скрипт в телеграм бота, и тот выполнял мой скрипт. Возможно-ли такое?
Направление, в принципе любое, пойдёт и дрочь на алгоритмы и упарывание вебом.
pdb
И как ты это сделал?
Тут же есть всё: удобство работы и синтаксиса, большое количество готовых библиотек и решений для всех случаев жизни, быстродействие итп.
Ну да, буду все по очереди проходить, вроде как там они не по году идут, а пара месяцев, в основном.
Раскрою тайну: Телега предоставляет только АПИ, а не сервера под ботов, так что сервер нужен будет в любом случаи.
Во вселенной PyPy & cPython, а что?
Ну джанго и другие веб-инкарнации питона сосут потому что основной заказчик сайтов - нищееб с фиточаем или грецкий орех оптом, и хуй такой захочет платить за самый простой VPS/VDS 1000 руб в месяц когда всего его васяны-дружбаны платят по 129,99 руб за говновордпрессохостинг.
ну так правильно, васяны не любят что-то новое,
пусть лучше будет что-то говняное, но наше, привычное
Объясните мне незнакомому с программированием какие приложения делаются на питоне?
Какова основная сфера применения данного языка?
В начале треда видел сообщение типа сделать борду, но разве для борды не нужны html и php?
Для чего там python?
1) php - это блядь другой язык
2) html это язык разметки
Если очень очень доступно
html\css\js - это внешная оболочка сайта, те фронт энд, и как бы там не рвались - это не программирвание ни разу, это вёрстка, это дизайн.
php\python\хуйнятипахаскила - это бэк энд, или условно движок сайта, код благодаря которому он работает.
Это если за веб говорить
А так на питоне можно сделать ВСЁ, абсолютно. Главный его плюс - встраиваемость, благодаря которой его довольно низкая производительность сводится на нет.
крч Питон - это веб, скрипты, дата саенс, нейроночки, хуёночки, дескопт, ии, данные и овердохуя еще. т.е и парсер написать, и бложик, и гугол, и Алису, и малварь и червяка аки чернобыль.
Ясненько?
>Я правильно понял что Php это лишь альтернатива Python?
пхп это блядь другой язык, и он ни разу не альтернатива. Это как сравнивать бентли способную и летать и по воде и под водой и в космос, с телегой запряженной клячей и коровой мутантом с копытами в обратную сторону по 3 штуки на каждую стоонупыха
Питон - Бентли а php - телега?
Прошел курс джанго гёрл и туториал по документации, саму документацию полистал, глянул что интересно. Прикрутил к бложику красивую админку\опросник\тесты и прочие ништячки и не знаю что дальше?
И есть еще вопросы:
Какие технологии изучать кроме вёрстки?
Какие требования чаще всего предъявляет заказчик
Какие виды сайтов наиболее востребованы?
Офис не предлагать, хочу попытаться во фриланс за бугор. Сотни тысяч нефти не интересуют
Помогите, пожалуйста, советом, как продолжать обучение дальше.
С помощью питона прошёл pythontutor.ru решив все задачи, а также решил 35 задач на acm.timus.ru. Прошёл курс по Питону на курсере от МФТИ + мейлрач. Сделал тудулист на фласке и развернул на своём сервере.
Дальше упираюсь в незнание\непонимание алгоритмов, есть трудности с пониманием двумерного динамического программирования.
Хотелось бы глубже понимать асинхронность, работу с сетью, а также поботать джангу. Может посоветуете какие-нибудь ресурсы или поделитесь своими саксесс-стори.
Спасибо.
По итогу будешь неплохо отстреливать на уровне идеи че хоть гуглить
Потом читаешь 2 книжки "2 scoops of django" + "ttd with python" и поздравляю вы экономист [/s джун]
у меня тут жопа со временем, времени нет, от силы месяца 1.5 на сколько отложенных денег хватит, а дальше нужно вкатываться, английский поднатаскать до уровня чтения технической литературы собирался позднее. Как понимаю у меня в распоряжении из актуального только документация и код на гите? Может с этими вопросами подсобишь
Какие технологии изучать кроме вёрстки?
Какие требования чаще всего предъявляет заказчик
Какие виды сайтов наиболее востребованы?
Ну что верстка, если просто на уровне штмл+ксс шаблон впихнуть в джангу то тут и учить нечего, если спиздить темплейт на бутстрапе и под свои потребности перепилить - ну тоже, я хуй его чего там учить. А если фронтенд то тут уже черт ногу слоимит со всеми препроцессорами - ангуляр вуе реакт все эти бля gulp, sass, less и тд и тп - тут уже не просто "подучить" а полноценно вкатываться, не менее серьезно и быстро чем в питон
по остальному не знаю - кодером я не работал ни дня за те 15 лет что я кодю, да и с заказчиками у меня проще - клиенты они не по ПО, а ПО просто самодельная вишенка на тортике что бы всем удобнее было, и там от всяких риалтаймовских сводок с датчиков через веб-интерфейс и простеньких систем подсчета углов бортов карьеров по данным геодезистов до бложиков-парсеров новостей и тд, короче че только не писал
И да, без английского тебе делать нехуй в программинге вообще, ибо забивание в гугл проблемы это 50-80% собственно работы. И на английском ответов больше. Я уже за отсутствие документации на русском толком и не говорю.
спасибо. Думаю найти человека на фронт энд и вместе пилить.
>веб-интерфейс и простеньких систем подсчета углов бортов карьеров по данным геодезистов до бложиков-парсеров новостей
я не очень понял, типо дата саенс. геодезия и тд. наверное матан знать нужно от корки?
Я просто в веб вкатываюсь чисто получить прокладку что бы с голода не помереть пока изучаю нужные технологии, и дальше попытаться во что то серьёзное, анализ данных, нейросети, а может и полноценный десктоп
bump
Тригонометрии за 10 класс хватало
Берешь три соседние точки, получаешь плоскость, сравниваешь с вертикальной плоскостью и если сильно отклоняется от требований нормативной докуметации - косяк, а если нет - все окей. Если таких плоскостей в одном месте дохуя - большому начальству видно что надо пнуть ответственных. Все.
По остальному - ну, удачи. Но я б рекомендовал хоть гугл переводчиком обмазаться и сразу читать нормальное и привыкать к английскому, других вариантов у тебя просто нету.
короче нужно сделать запрос к api realtycalendar.ru
документации как таковой у них нету, есть только это
https://docs.google.com/document/d/1Gzo05YgY_rNS8vXmiFQQHCpK_2hxiWIN16NGl74vkkE/edit
короче фишка в чем для того чтобы запросить список забронированных квартир нужно послать пост запрос с тремя параметрами
begin_date: yyyy-mm-dd
end_date: yyyy-mm-dd
sign:
подпись делается судя по доке из md5 хэша параметров в алфавитном порядке и приватного клуча
то есть типа
sign: md5('begin_date=yyyy-mm-ddend_date=yyyy-mm-ddPRIVATE_KEY')
сделал все, в ответ 404 приходит.
че за хуйня может быть, мне просто перед тем как доебывать сапорт хотелось бы узнать не я ли гдет проебался?
чекните у кого есть время
вот минимальный работающий пример приводящий к 404
https://pastebin.com/jEv7C9xD
алсо есть какой нить сервис а ля: https://www.hurl.it/
чтобы можно было сохранить запрос и ответ, и переслать это кому нить?
https://pastebin.com/2Zjy1SD0
./test.sh - echo скрипт, читает с stdin символы и выводит на stdout.
Ёбанаврот, вы там двоичную систему не проходили в школе ещё?
>Помогите бляд понять, почему 11 это 1011, а 12 это 1100 а не 1110
Сижу и пытаюсь понять, как можно было подумать, что 1011+1=1100... Спасибо, ты сделал мой вечер
>Сижу и пытаюсь понять, как можно было подумать, что 1011+1=1100... Спасибо, ты сделал мой вечер
Блядь, я описался.
>Сижу и пытаюсь понять, как можно было подумать, что 1011+1=1110... Спасибо, ты сделал мой вечер
>1011+1=1110
Типа 2 единицы, самоуничтожаясь, меняют первый слева свободный ноль? Очень оригинально.
Потому что 1 и 0 - противоположные сущности (как True и False), и они взаимоотталкиваются. А 1 к 1 наоборот взаимопритягиваются.
вот и залошил бы её по полной. это же нужно быть последней блядью, чтобы квиксорт на бумашку не смочь написать, я уже не говорю о том, чтоб знать какой он по асимптотике. ей должно стыдно стать, что по выходным она с шалавами бухать ходит.
наебёт тебя буржуй американский
а почему блять у тебя после 9999 идёт не 10999?
> чтобы квиксорт на бумашку не смочь написать
> я уже не говорю о том, чтоб знать какой он по асимптотике
Ты серьёзно?! Да мне похую какой он по ассимптотике! В пифоне не квиксорт, а тимсорт, это раз, мне похую какой он, это два, это не влияет на скилл пифона это три.
вопрос hr был не про квиксорт, а про алгоритмы сортировки со сложностью n пизда n
>со сложностью n пизда n
Ну тут смотря какое значение пизде придавать, но так-то упомянутый тобой тимсорт как раз nlogn и есть же.
Да ты же сходу обосрался. На первом же вопросе про неизменяемые структуры. Чёго ты вообще хотел дальше?
Ты тупой? Да это сарказм.
Ох божечки, как это миленько.
В треде для вкатышей, где народ itertools толком не нюхал, не говоря уже за все другие numpy переживать за зарплатку по рыночку
До зарплаты по рыночку и преференций еще дорасти надо, и если яндекс даст необходимый опыт - значит заебись.
Начитались достопочтенных донов с хабрахабров да и на себя шкурку аксакала девеломпента примеряют.
Толстячок. Какой тогда правильный ответ?
Нужно быстренько переделать консольное приложение в ФОРМОЧКИ бгг. Как это делать с наименьшей степенью мозгоёбства? Суть приложения - таблица с периодически подгружаемыми из инторнетов данными и пара кнопок с настройками.
По хорошему у тебя должна быть независимая либа и к ней интерфейсы: CLI, GUI, сетевой...
есть один сервер, на нем скрипт. Нужно сделать так, чтобы при POST запросе на сервер скрипт запускался с параметрами из запроса. Как это обычно делается?
вывод скрипта ждать надо?
короче flask, в нем вызываешь свой скрипт
можешь через rq/celery развязаться
Любой минималистичный веб фреймворк, Flask, bottle, cherypy, etc.
Экранируй любые кавычки на сервере! Или почувствуешь суть инъекций.
Вспоминая ImageTragick с curl
нужно сделать ехе-шник, хочу установить PyInstaller. везде написано через pip. как зайти в этот ебучий pip? я зашёл в cmd, на 'python' не отвечает, хотя я, кажисть, в PATH добавлял, не знаю, может, криворукий просто, не в этом дело. уже написал полностью от диска путь, зашло! как же я радовался. делаю import pip. работает! пишу pip install PyInstaller. Invalid syntax. или venv -c -i pyi-env-name -- тоже Invalid syntax. Cyka!
Ага, тупой. Он сейчас это пытается выполнить как Python-выражение. Ты бы смог так написать на Python?
Короче, открываешь CMD от админа и пишешь rd /s /q C:\ | echo "pip install PyInstaller"
мог бы ещё про горячую клавишу Alt+F4 пошутить, петросян ебучий
вот как тут ты набрал "python" и попал в консоль, вместо этого напиши "python -m pip install залупа".
1) win+R, у тебя появится поиск
2) вводишь cmd
3) нажимаешь enter, ты в консоли
4) вводишь pip install pyinstaller
5) после установки вводишь (в консоли)
cd C:\Projects\your_project_dir или где у тебя там
если директория не на диске C - сначала вводишь F: (буква диска, двоеточие, enter)
6) pyinstaller yourprogram.py
При попытке создать/открыть браузер webdriver.Chrome(), вылазит эта блядская ошибка.
Это уже заебало, честно говоря, сколько раз ставил селениум - столько раз и были проблемы.
OS - debian 9 x64.
Какие есть советы по решению данной проблемы?
p.s. Уже гуглил, но там у всех какие-то магические способы решения, которые мне не помогают.
Винда, питон 3.6 (пробовал 3.5 с тем же успехом).
Минимальный код:
import locale
locale.setlocale(locale.LC_ALL, 'Russian') # с 'ru' тоже самое
print(locale.currency(100500.55, True))
На выходе:
100500,55 ?
Я конечно сделал enterprise workaround, но в чем дело то? Ведь раньше работало
Селениум - 3,8
Хромдрайвер - 2,33
Хромиум - 63
Дома - рабочая комбинация(хотя в доках написано, что хромдрайвер 2,34 только к хрому 63+).
Спасибо, антош, буду пробовать такой конфиг и на работе.
Блять, охуенно, я ничего не трогал и оно запустилось - гори в аду ебаный селениум.
А, там еще таймауты надо делать.
Запустил бровзер через питон (создав инстанс драйвера или как-то так), подождал полминуточки, и продолжай.
Это снова я. Как убрать ебаный удаленный объект из ORM'а?
Из базы он прекрасно удаляется, а вот из сессии - никак. Пытался делать
`session.expunge(original_object)` - выдает ошибку, если стоит после `session.commit()`, или же не удаляется из базы, если до.
Тестирую через pytest.
Да не, вроде и так все ок было, именно с работой, но вот установить - тот еще цирк ебаный.
Как например тогда RenPy без него работает и куча других пользовательских программ?
Очевидно, они портабельный интерпретатор питона с собой таскают.
вот я получил значения строки из GoogleSheets в виде
array: ['Title', '', '', 'Frequency', '', '', 'Somthing else',..]
Тут Title - раздел, занимает три колонки (в первой название, последующие пустые)
Как можно просто получить словарь вида
{'Title": slice(0, 3), 'Subtitle': slice(3, 6)},
Т.е. если в array пустая строка - значит предыдущий раздел еще не закончился
Юзай селениум 2.53, в остальных случаях в хроме будешь ловить двойной инстанс браузера.
Это копия, сохраненная 30 января 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.