Search
Write a publication
Pull to refresh
3
0

Пользователь

Send message

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

Иногда помогает нажать End. Если футер все-таки подгрузился, а подгрузка триггерится колесиком, то должно переместить ровно в конец, но без загрузки следующей порции.

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

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


Если хотите разобраться с многопоточностью — попробуйте заставить вашу программу сколько-нибудь прилично реагировать на Ctrl-C, узнаете много нового.

Все-таки у оригинального кода есть одно преимущество: его легче понять и доработать. Обратите внимание, как много вашего кода было переиспользовано в предложенном варианте (одно название функции, если я не ошибаюсь?). Часто попытки разобраться как исправить/доработать такой вот продакшн-код занимают больше времени и сил, чем используя типовые паттерны добавить простую обработку ошибок к ничем незамутненному happy path.

Попробую сэкономить кому-нибудь десять минут жизни, которые у меня ушли на видео по ссылке: https://github.com/python-poetry/poetry/issues/6314
Установочный скрипт get-poetry.py был объявлен deprecated. В код добавили проверку на версию, и для версий ниже 1.2.0 он выдавал предупреждение, а для версий выше — завершался с ошибкой. Добавили этот код в версии 1.2.0a1.
Через год 1.2.0 вышла в релиз. Когда пользователи пришли в issues на github, разработчики пересмотрели свою позицию и оперативно выкатили исправление. Теперь установщик падал не при версии 1.2.0 и выше, а всегда, если запускать в пайплайне, и с вероятностью 1/20 (буквально, вызывая random.randrange) при запуске из командной строки.

Works with Windows and Linux (requires sudo), with experimental OS X support

Под Linux она просто читает /dev/input, под Windows, внезапно, использует WinAPI.
А почему вас это смущает?

через какое-то время макаронную фабрику станет проще снести и заново построить, чем расширять. Спидраннеры, как ни странно, почему-то строят довольно красивые фабрики.

На определенном этапе развития стартовый билд станет проще снести или бросить, чем использовать, независимо от того, насколько хорошо он спроектирован. Когда стартовая база произвела достаточно материалов для новой базы на более совершенных технологиях — абсолютно неважно, превратилась ли она в нерасширяемое спагетти полностью или только наполовину.
Нет никакой необходимости держать сложность максимально возможно низкой все время игры. Если вы в состоянии справляться с высоким уровнем сложности и балансировать ресурсы в уме — вы построите эффективное на данном этапе спагетти, если нет — придется уменьшать сложность и делать красиво, жертвуя скоростью. И уж спидраннеры умеют справляться со сложностью просто замечательно.
В типичном спидране после запуска ракеты база вполне вероятно будет просто нефункциональной, и ни о какой легкости расширения речь, разумеется, уже не идет.

Вообще то я приглашал в конкретный проект

Это не совсем очевидно в такой форме. При виде фразы "добро пожаловать в OpenSource" у меня сработал детектор сарказма и по ссылке я ожидал, например, неадекватного майнтейнера, который отклоняет толковый PR по надуманным причинам.


Касательно самого приглашения — я испугался уже просто увидев название. У меня есть представление о LibreOffice как о большом и страшном проекте, который даже просто компилируется дольше, чем ядро Linux. И страница по ссылке, говорящая "The source is written in many different languages and formats — C, C++, Java, Bash, JavaScript, Python, Perl, SQL, XML — and consists of roughly 102,000 files (excluding all localizations) ", это представление только укрепляет.


Чтобы начать что-то делать с кодом, нужно разобраться со структурой проекта (те самые сто тысяч файлов), с системой сборки, как запускать тесты, для отправки патча придется заводить аккаунт во внутреннем трекере. Не факт, что впечатление, которое произведет на интервьюера, не поленившегося открыть гитхаб, коммит с заголовком "removed unused imports in UI tests", стоит потраченных вечеров и горы информации о конкретном проекте, которую сложно применить в других местах.

return await main()

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

Ничто из предложенного не является панацеей. Этот горе-вирус рассчитан на Windows, другой, например, будет рассчитан на Linux.


Без рута/админа но под основным рабочим пользователем у вируса, скорее всего, будет возможность стащить печеньки с паролями/сессиями из браузера, ключи из ~/.ssh, зашифровать вашу коллекцию котиков и пет-проекты, поучаствовать в ддосе или майнинге.


Вызов pip install сам по себе равнозначен выполнению произвольного кода от автора пакета, и был ли этот pip системным или из virtualenv после запуска уже не будет иметь значения. Если под изолированным окружением вы имеете в виду изолированную от файловой системы и сети виртуалку или контейнер — то это отлично организуется и на Windows.

Уязвимости в программах, позволяющие выполнять код посредством специально созданных пользовательских файлов для этой программы, — не такая уж и редкость. Вот уязвимость в ImageMagick, код встраивается в сразу несколько форматов, включая png, вот ffmpeg и видеофайлы, вот vim и, соответственно, любой плайнтекст.
Можно, впрочем, возразить, что скрипты в pdf или svg, как и макросы в Word, — это не уязвимость, а сознательно добавленный функционал.

Вот статья про то, что получается, когда сбор пожеланий идет массово.
Если софт является продуктом, на котором компания делает деньги, то мнение разработчиков о том, какие фичи добавлять, едва ли будет определяющим. А в небольшом опенсорсном проекте напротив, программисты определенно пользуются тем, что пишут, но само по себе желания собирать пожелания это им едва ли добавляет.

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

КДПВ немножко пугающая если приглядеться. Скорость показывает 137 км/ч, при этом рядом знак ограничения на 120, дистанция до машины впереди слишком маленькая для такой скорости, и сама машина, кажется, прямо сейчас начинает тормозить. А название трека в плеере намекает, что я упускаю что-то еще (вероятно, связанное с всплывающем уведомлением на немецком в левой части экрана).

Вероятно, речь идет про код Грея. Просто еще один вопрос чисто на кругозор.

Для десятигигобайтного файла:


$ cat import.sql
CREATE TABLE test(prefix NUMBER, line TEXT);
.separator "."
.import files/out10Gb.txt test

$ cat export.sql
.separator '.'
.once files/sorted10Gb.txt
SELECT * FROM test ORDER BY line, prefix;

$ time sqlite3 files/test.db < import.sql
real    2m30.515s
user    1m55.529s
sys     0m11.604s

$ time sqlite3 files/test.db < export.sql
real    3m51.936s
user    2m32.629s
sys     0m32.780s

Я позволил себе небольшую вольность в интерпретации условий и считаю, что в самих строках нет точек, и соответственно точку можно использовать как разделитель. Этого нет в тексте задачи, но так написан код генерации тестового файла.


ЦПУ и диск использует активно, RAM в пике меньше двух гигабайт, с диска читает (и пишет) порядка двадцати. Работает в один поток, так что с процессором помощнее возможно есть какие-то шансы на час для 100 Гб, но только с хорошим SSD.

Prometheus тоже позволяет хранить только значения за каждые 60 секунд, ровно как и любой другой интервал. Если 15 секунд не требуется вообще никогда — просто поменять scrape_interval: 15s на нужный. Если требуется одновременно хранить разреженные метрики для истории и подробные для оперативного анализа — можно запустить два инстанса прометеуса (если экспортеров много) или просто в prometheus.yml указать две цели с разным интервалом.

Information

Rating
8,078-th
Registered
Activity