Pull to refresh
53
0
Алексей Алексеевич Осипенко @aratak

CTO at Cimon.io

Это не выявление на ранних стадиях, а на поздних. Вас сначала начнёт колбасить и поднимется температура, которая своей стабильной высотой напугает до усрачки день эдак на второй-третий. После чего вы начнёте обзванивать всех докторов, сначала бесплатных, потом платных в надежде на лечение. Никто из них вам помогать не будет, просто потому, что помощь ещё не придумали.


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


В идеале, когда вы заболеете тем самым вирусом, даже когда не собирались, вам нужно звонить доктору приблизительно вот так:


— Алло, доктор. У меня температура 39 уже третий день, уровень сатурации крови стабильно 97.
— Держитесь там, голубчик. Ехать к вам не будем.


...few days later


— Алло доктор, температура всё ещё 39, но уровень сатурации крови упал до 94 и последние пару часов не подымается.
— Срочно высылаем наряд скорой. Держитесь, мы едем.

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


Для этого вовсе не обязательно тратить четыреста баксов, достаточно за десять долларов купить обычный пульсоксиметр и положить его рядом с термометром и тонометром в аптечку.

Кажется, я расшифровал.


«Пщщпду» это как бы «Google», тут просто.
«Пщщпду Серега» — это, по всей видимости, Сергей Брин.
«android backdoor all inclusive» — это сарказм на тему того, что в самой системе Андроид тоже есть возможность доступа спецслужбам США.
«ддосвидос» — это просто игра слов. Типа, обыгрывается тот факт, что DDoS читается как начало жаргонного слова «досвидос».


Получается что-то следующее:


Сергей Брин убеждает Донадьда Трампа, что только у США должна быть возможность получить доступ к устройствам пользователей с помощью бэкдора в Андроиде. По всей видимости, власти США не хотят стимулировать на рынке неподконтрольного конкурента, вынуждая Хуавей делать свою версию Андроид.

Спасибо за отзыв. В следующих выпусках мы постараемся не бубнеть хотя бы первую минуту, чтобы вам было возможно разобрать хотя бы 80% слов, сделаем субтитры на всех возможных языках и позовём Анджелину Джоли в выпуск. Чтобы показать что-то кроме себя.

Что, не получилось пройти собеседование на фулстек-позицию?

Отдельного понятия «верстальщик» в англоязычном вебе нет и у нас это звучит, как нонсенс. Человек, который картинки превращает в разметку. Как написано в статье, дизайнер самостоятельно должен заботиться о разметке, а технолог не должен заниматься psd-to-html конвертированием.


Даже больше, верстать верстку адекватно должны уметь все. Та профессия, которая должна заменить верстальщика — «веб-технолог». Это человек, разбирающийся в тонкостях рендеринга браузеров, различных форматов и протоколов передачи данных. В общем-то технолог в общем смысле этого слова есть практически в каждой отрасли и в веб-разработке он тоже смотрится отлично.

Вы абсолютно правы. И, если честно, не понимаю почему вы считаете это "обратным". Это ведь тоже самое! К слову, у обычных разработчиков (серверных, если хотите), а не у "фронтенд-разработчиков" с этим все более-менее аккуратно и очевидно. Фраза "я разработчик и я знаю питон, скалу, руби и эрланг" никого не удивляет и вполне естественна. А вот "я фронтенд-девелопер и умею все, что в браузере работает" звучит раздуто.


Разработчик должен многое уметь и многое знать, постоянно развиваться. Посыл основной статьи был в том, что фронтенд-девелопера стоит переименовать в простого джаваскрипт-разработчика, и не в коем случае не в react/angular-разработчика. Стоит отличать javascript-разработчика от typescript-разработчика, а от elm-разработчика не требовать знать coffeescript. Конечно же, разработчик может знать несколько языков, тогда он будет гордо носить титулы, например, typescript-разработчика и elm-разработчика одновременно.


А вот инструментарных разработчиков вроде django-разработчиков, rails-разработчиками и angular-разработчиками нужно отправлять куда-нибудь учиться, а не программировать. Вместе с операторами фотошопа и верстальщиками.


Кроме того, тенденции серверной разработки говорят нам, что существуют и вполне успешно scala-разработчики, который вообще не умеют писать на java или elixir-разработчики, который ни в зуб ногой в erlang. Это нормально. А возражение «везде есть свои особенности и костыли, которые надо знать» говорит в подкрепление к вашему комментарию и к моей статье одновременно, что действительно везде свои особенности и все надо, мать его, знать.


В статье оспаривалось существование мифических профессий, вроде "фронтенд-девелопера", который о навыках программиста говорит не больше, чем просто "разработчик". Или вроде "UX/UI дизайнера", который как бы и не художник и верстать не умеет и с фотошопом плохо работает. Если проводить параллель "UX/UI дизайнера" с кем-нибудь из вышеперечисленных, то получится такой себе "монго-разработчик"

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

Стратегией нахождения бага в супер-пупер-микросервисном проекте с тестами и с одним разработчиком без доверия к тому, что совместимость идеальна:


  1. Предполагаем, что виноват сервис "А"
  2. Видим точку выхода в сервис "Б"
  3. Читаем документацию сервиса "Б", убеждаемся, что ответ от "Б" не совпадает с документацией
  4. Пишем тест на код, показывающий, что сервис "А" работает корректно
  5. Закрываем папку с сервисом "А", открываем "Б"
  6. Переходим к первому пункту

Такой подход решит все проблемы из спойлера-комента, которые не зависят от деплоя. А остальное решается правильным и автоматическим развертыванием.


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

А вторая половина проблем в цитате из спойлера — из-за отсутствия или недостатка тестов и документации.

Выключение ретрая и убиение процесса сайдкика переводит эту джобу в состояние "fail", а хотелось бы считать это успешным завершением.


Кроме того, при обилии такого рода задач, запуск нового сайдкик-процесса с поднятием всего окружения делает это неоправданно дорогой манипуляцией.

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

И вы совершенно правы. В случае, описанным в статье пришлось вовсе отказаться от сайдкика.

Очень рад, что вы согласны выводами статьи. К большому сожалению лучшего способа, чем килять рядом запущенный тред, который знает, что его могут в любое время кильнуть, найдено не было. Может быть есть какие-нибудь идеи?

Я немного сбил вас с толку, называя запущенный воркер "сайдкик-процессом". Воркер работает внутри настоящего сайдкик-процесса и всю статью я пытаюсь остановить запущенный воркер, а процесс не трогать, так как ему еще предстоит обработать новые воркеры. API показывает как работать с запущенными процессами сайдкика, и команда #stop! останавливает весь сайдкик процесс, а не отдельно запущенный воркер.


Вот разница при работе с процессами и в моем случае.


Сначала запустим процесс и вызовем метод stop!, как это предлагают сайдкикеры.


INFO: Starting processing, hit Ctrl-C to stop
TestProcessWorker JID-e0d48711e21cd37c90e98186 INFO: start

# в этом месте я вызвал метод `stop!` на процессе из соседней вкладки

INFO: Shutting down
INFO: Terminating 49 quiet workers
INFO: Pausing up to 30 seconds to allow workers to finish...
WARN: Terminating 1 busy worker threads
WARN: Work still in progress [#<struct Sidekiq::BasicFetch::UnitOfWork queue="queue:default", message="{\"class\":\"TestProcessWorker\",\"args\":[1],\"retry\":false,\"queue\":\"default\",\"jid\":\"e0d48711e21cd37c90e98186\",\"created_at\":1469519195.722636,\"enqueued_at\":1469519195.722796}">]
INFO: Pushed 1 messages back to Redis
TestProcessWorker JID-e0d48711e21cd37c90e98186 INFO: fail: 121.278 sec

Повторный запуск сайдкика приводит к тому, что он пытается перезапустить процессы, которые были помечены статусом "fail".


Теперь давайте используем воркера из статьи и килять будем воркер, а не процесс:


INFO: Starting processing, hit Ctrl-C to stop
TestKillerWorker JID-e0d48711e21cd37c90e98186 INFO: start

# в этом месте кладем в редис соответствующий киллер-ключ

TestKillerWorker JID-e0d48711e21cd37c90e98186 INFO: done: 0.396 sec

Во втором случае процесс готов обрабатывать следующую задачу, в отличие от первого, где он вообще выключается со всеми работающими процессами.

Юрий Лоза, залогиньтесь
Смартвотч, скорее. Если это не Смарт-Биг-Бен.
Грег Иган «Карантин».
Это будет уже совсем другой юнит. С апгрейдами.

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity