Сергей Шашков @ShashkovS
Менеджер продукта, методист, разработчик
Information
- Rating
- 9,684-th
- Location
- Россия
- Date of birth
- Registered
- Activity
Specialization
Backend Developer, Product Manager
Lead
Python
Project management
Algorithms and data structures
asyncio
Ну, тут как раз легко ответить. Налоги детей сторонников размножения пойдут на будущую пенсию и прочую государственную инфраструктуру противников. Можно так же вопрошать: «Почему сторонники пару десятков лет напрягались, чтобы вырастить детей, а их налогами будут кормить противников, которые все эти годы расслаблялись».
А кто-нибудь сумел успешно собрать на CentOS?
Пока видел две ссылки с инструкциями:
https://github.com/elfmz/far2l/issues/336#issuecomment-459049056
https://github.com/pgagarinov/centos-config/blob/master/centos8/basic/install_far2l.sh
Но в том или ином виде у меня с обеими проблема. Сложность в том, что аккуратно перевести с убунтовского на центосовский:
Вот есть карта ветров на высоте 12км: https://www.ventusky.com/?p=1;7;1&l=wind-200hpa
250км/ч там ооочень мнгого где. 370км/ч конечно должно повезти.
Я для своих старшеклассников вот такое делал:
https://ejudge.179.ru/tasks/python/2022b/pgm50__VPS.html
Там достаточно подробно про покупку и стартовую настройку своего VPS. В целом для первого раза развлечение на несколько часов, зато на своём VPS можно развернуть сразу кучу всего.
Карты и все XXX-pay на kaspi-терминалах тоже отлично работают, так что никто QR-ом пользоваться не заставляет.
Но мотивирует: так как оплата через visa/master не бесплатна для банка (и, следовательно для магазинов), то за оплату через QR дают кешбек. А дальше каждый сам волен выбирать. Думаю, что это будет скоро во многих терминалах РФ...
Я сейчас в Казахстане, тут аналогичная система оплаты называется Kaspi.QR (Kaspi — это местный банк с самым глубоким проникновением и крутыми терминалами, но строго локальный). По началу действительно неудобно, дольше. Но в целом это вопрос привычки: готовить карту к оплате заранее мы уже привыкли, так вот и камеру для считывания QR тоже нужно готовить заранее. Обычно на кассе есть 20 секунд «свободного» времени, когда кассир что-то вбивает. В это время нужно открыть приложение банка, а в нём считыватель. И когда кассир всё сделал и даёт делать оплату, то можно сразу сканировать QR, работает примерно с 1 метра, близко подносить телефон не нужно. Дальше оплата мгновенная, но только в интерфейсе моб.приложения дополнительно отображается сумма оплаты (что удобно).
wholeInput
— это провал.Такие функции первые претендуют на то, чтобы выехать в какой-то общий для всех модуль.
И вот после этого, чтобы собрать регулярку в консоли, мне нужно искать по проекту, где живут эти функции, копировать их отдельно в консольку, после этого уже собирать регулярку.
Кроме того, хоть слова
wholeInput
довольно понятные, но регулярки очень формальный язык, в которых каждый символ может иметь большое значение. Если я такое увижу в коде, то мне придётся полезть посмотреть, что именно имел в виду автор. А то мало ли, может он исходил из того, что у регулярки ещё какие-то флаги не выставлены?Если я сделаю так:
то могу получить не тот результат, который ожидаю.
Я вот не могу согласиться с тем, что этот код менее мерзкий.
Я знаю синтаксис регулярок, мне не нужно объяснять, что
(regex)*
— это сколько угодно повторов, я это сразу вижу. Если уж что-то и нужно объяснять, то мотивацию того, почему или зачем вы делаете именно так.Зато регулярку текстом я могу скопировать и вставить в условный regex101, чтобы её потестировать (или поправить). А такой код мне нужно частично исполнить, чтобы получить регулярку, которую можно тестировать. И после того, как я её потестирую, мне придётся исправления назад мучительно накатывать в код (с возможными ошибками в процессе).
Вот пример того, как длинная и сложная регулярка оформена в модуле fractions.py:
Эту регулярку можно как есть вставить в regex101 (нужно не забывать ставить флаг extended).
Вот так это выглядит:
Там, если нужно, можно отладить все аспекты работы регулярки (группы и т.п.), а потом как есть скопировать назад в код.
Smart mode включён, один файл.
Run configurations неактивна, в питоне Add python SDK после выбора подходящего бинаря ничего не меняется.
Вместо всех сложностей в статье можно было просто тару подкрутить на 20 фунтов ровно с тем же успехом.
Есть две массы: гравитационная и инерционная.
Гравитационная — это грубо говоря m из формулы GmM/r².
Инерционная — это грубо говоря m из формулы mv²/2.
Пока похоже, что эти массы совпадают, но люди обычно хотят скинуть ту, что инерционная, хотя на весах замеряют ту, что гравитационная.
www.oilandfish.com/posts/openvpn-cloak.html
Мне бы зуб соседний долечить в той же четверти, но теперь стрёмно немного.
А в чём именно была проблема с Квадхеликсом? Чем хирургический метод лучше? (Не понял из текста)
Я не знаю C#, чтобы не разбираться и оценить алгоритм, хорошо было бы понять хоть что-то про время. Я много раз встречал ситуацию, когда «умный велосипед» работает в 100 раз медленнее обычного.
Пришлось разобраться с запуском C#.
Сделал везде 100000 вызовов без вывода в консоль.
На одну итерацию у меня получается:
C# — 0.1013ms
cPython — 0.6469ms
PyPy — 0.1005ms
Rust — 0.0269ms (клон python-решения)
Вот теперь понятен масштаб и уже интересно, до чего можно оптимизировать.
Только вот лучше на доске 12×12 или 14×14. Иначе получается сравнение 0-1ms и 0-1ms.
Более эффективный алгоритм на Python'е может быть в 100 раз быстрее неудачного алгоритма на C++ с intrinsic'ами и чем угодно.
ИМХО, ваша реализация неудачная, и даже версия на C++ не обгонит Python.
А на большие доски она вообще очень тяжело масштабируется. А pypy обсчитывает доску 14х14 за 2 секунды.
Запустил ваш код вот здесь, получается 30мс, что в 10 раз медленнее питона на том же onlinegdb.
Уж не знаю, что вы там оптимизировали, но получилось медленно.
Просто битовая «магия» (когда она не нужна сама по себе) хорошо работает, когда чисел много и они не лезут в кеш процессора. Тогда битовые маски, сжатие и т.п. отлично работают. Здесь же хоть и перебор большой, но чисел и bool'ов в любой момент очень мало.
Код на медленном cPython: доска 8×8 за 0.000655с, доска 12×12 за 0.302с, доска 14×14 за 10 секунд на cPython и за 2 секунды на PyPy.
У вас есть возможность запустить ваш код на досках 12×12? Какое время работы?