Минутка просвещения

Читать в телеге. Когда-то там были посты не только от меня.

Операционная система на Rust

Не очень новый (2018), но занятный доклад про то, стоит ли писать ОС на Rust.

Начинается с вопроса, а что такое ОС? (“если бы мы знали что это такое, мы не знаем что это такое”). Потом приводится краткая, но весьма познавательная историческая справка про историю развития ОС, в частности Mutics и Unix.

Затем обсуждаются C, другие языки, операционные системы на них (например, ОС на java, sic!). В частности, почему какой-нибудь Go не предназначен для написания ОС (кроме “idiosyncrasies” еще мешает сборщик мусора). Ну и что C++ — хороший язык, но можно нинада.

Наконец, обсуждение переходит к Rust, его преимуществам и проблемам подхода “давайте все перепишем на Rust” в контексте ОС. Одна из основных проблем — памятью все-таки надо управлять и в Rust это тяжело сделать. Альтернатива — использовать гибридный подход: писать модули и системное ПО на Rust. В итоге в Linux так и сделали в конце прошлого года.

Иногда докладчик отвлекается ради баек. Например, рассказал историю, почему в C нет логического XOR: потому что для его вычисления нужны оба операнда и нельзя остановить вычисление условия раньше, как это можно сделать с логическим И или ИЛИ. Или про то, что замена AVL на B-дерево дает преимущество Rust против С, но просто так на C упорешься его писать.

СсылкаКомментировать

Как запихнуть данные в Prometheus

Классический способ: приложение выставляет URL /metrics, prometheus забирает оттуда их в простом текстовом формате.

Однако не все сервисы — это HTTP-серверы, да и не все живут достаточно долго. Поэтому второй способ — сделать прокси, PushGateway. Приложение запихивает метрики в PushGateway, а он уже отдает классическим способом.

Но, увы, этот PushGateway надо разворачивать, и если Grafana облачная, то там его нет. Чтобы запихать метрики в ее Prometheus, необходимо зайти через Mimir — это распределенный Prometheus такой. И вот тут уже нельзя простой формат, а обязательно Protobuf, который использует устаревшие зависимости, да еще при этом завернутый в Snappy и с особым заголовком :harold:

СсылкаКомментировать

Основы безопасности API

Очень вводный доклад про то, что надо хоть немного думать о безопасности API. В основном состоит из показательных примеров, как не надо делать, но ничего космического, топ-10 OWASP.

Некоторые интересные идеи:

  • Делать все проверки не только на бэке (где они обязательны), но и на клиенте. Если какой-то запрос вызвал ошибку бэка, то это либо баг фронта, либо кто-то пытается ломать API.
  • Явно помечать публичные API, чтобы не гадать ничего (“явное лучше неявного”).
  • Вынести проверку авторизации в отдельный слой, чтобы не дублировать код и мониторить изменения политик.

В конце докладчик немного прошелся по токенам (упомянув убогость JWT) и гейтвеи.

СсылкаКомментировать

Веселые правила паролей

Если вы думаете, что на сайте %X% дурацкие правила паролей, то эта игра для вас.

Очень классно, что задания довольно разнообразны и заставят хоть немного подумать. Я сдался на 35 уровне. Самым напряжным заданием, наверно, было совмещение 24-го правила с 9-м и 18-м. И немного жаль, что поле ввода пароля не закрыто звездочками и не требует повторного ввода, так было бы еще веселее:)

У автора есть и [другие]((https://neal.fun/) игры/интерактивы, например, про проблему вагонетки.

СсылкаКомментировать

ChatGPT не смог сгенерить нормальный пост

В продолжение попыток использовать AI. Я попросил написать пост для канала, описал формат и дал теги.

ChatGPT сгенерировал воду про метрики разработки. Попросил писать более емко и более технично — получил еще воды про git, а потом воды про AI vs Deep Learning. Попросил написать разницу между связностью и зацеплением — опять вода. 3 раза просил короче, в итоге все равно чушь.

Попросил рассказать про какую-нибудь интересную консольную команду Linux. Опять вода про find, dd, lsof (“Просто запустите ‘lsof’ в терминале и впечатлитесь информацией, которую она раскроет о системе.”). Но последний пост был хотя бы нормальной длины (после 7 просьб! И это я еще явно в первом сообщении указал, что это микроблог). Попросил в таком же объеме рассказать про другую команду. Получил опять воду про rename, но это хотя бы можно было читать. Бот предлагал chattr и mtr, но текст мне не нравился.

  • Ладно, с командами что-то не клеится, давай на другую тему что-нибудь
  • %Вода про МКС%.
  • Это не соответствует тематике моего микроблога. И укладывайся в 50 слов, пожалуйста
  • %Печать на 3D-принтере органов человека%

Попросил подвести итоги нашего разговора, чтобы получить текст выше, и акцентировать внимание на моих реакциях. Лучшая попытка:

В нашем разговоре вы просили меня создать посты для вашего микроблога. В первом задании вы предоставили список тегов и попросили написать пост. Я предложил вам пост о разнице между связностью и зацеплением, но он оказался слишком длинным для ваших требований. Затем вы попросили сократить его до 100 слов, и я представил более краткую версию. Однако, вы просили еще более краткий пост в 50 слов, и я предложил новую тему про команды Linux. В дальнейшем вы запросили более интересную и редкую команду, а также пост не длиннее 50 слов. Я предложил команду ‘rename’, но она оказалась известной вам и не подходила. В следующем задании вы просили описать интересную и редкую команду, но не более чем в 50 слов. Я предложил команду ‘mtr’, но она также не соответствовала вашим ожиданиям. В конечном итоге, вы просили подвести краткие итоги нашего разговора, описав ваши предпочтения и ошибки, которые я допустил. Вы также просили более подробное описание нашего разговора, где я предлагал варианты и вы оценивали их соответствие вашим требованиям.

Поражаюсь терпению студентов, которые с помощь этой хрени дипломы сдают:)

СсылкаКомментировать

Не всё то disruptive technology, что AI

Так получилось, что на прошлой неделе удалось попробовать несколько инструментов на базе AI.

  1. Вежливое письмо. Был кризис социальной энергии, попросил ChatGPT написать вежливое письмо главному HR. Хотелось, чтобы оно звучало не как “слыш, мне надо это”, а как вежливая просьба, письменный этикет же, все-такое, best regards. Первые 2 результата были очень многословными, и я не смог нормально подобрать промпт так, чтобы письмо мне самому нравилось. В итоге забил и написал сам.
  2. Для тупой шутейки захотелось изменить фото человека, чтобы он был похож на Волдеморта. Попробовал топ-2 сервиса из выдачи гугла. Результаты получились так себе: похоже на Носферату, но оригинальные черты лица были потеряны, да и нос был совсем не тот, хотя я явно его указал в промпте. Фон нейронки совсем отказали генерировать. Справедливости ради, попробовал древние инструменты морфинга, в одном из коробки шел Волдеморт, в другом размечал все точки лица вручную (sic!), но получилась тоже фигня. В итоге забил.
  3. Хотел улучшить разрешение фотки, чтобы было прям HD. В одной онлайн-шляпе получилось 1-в-1 как делает любой графический редактор (т.е. никакого улучшения, хотя заявлен AI). В другой получилось тоже не очень, но хоть какой-то намек на улучшение был, в итоге взял его.
  4. Делал тупой мем, искал надпись diversity в радужном цвете, на стоках был либо поганый jpg, который было лень редактировать, либо то, что мне не подходило. Ладно, попробуем AI! Попробовал топ-5 инструментов из выдачи гугла. На один и тот же запрос они мне выдали абстрактную радужную хрень, очень diversity чернокожую женщину, просто радугу и, наконец, буквы “dLмersLТu” на радужном фоне одним цветом. Meh. В итоге воспользовался… WordArt, получилось еще более всрато.
  5. ChatPDF — сервис позволяет загрузить статью и задавать по ней вопросы с помощью ChatGPT, причем даже указывает параграфы, на основе которых ответ был сгенерирован. Sounds good, doesn’t work. Просил бота написать основные тезисы. Конечно, клево, что можно получить ответ даже в формате LaTeX, чтобы его сразу вкорячить в презентацию, но есть мааааленькая проблема: половина данных тезисов не соответствовала действительности, а параграфы-источники не содержали искомой информации. Попробовал на трех статьях, в итоге быстрее оказалось прочитать статьи самостоятельно, чем проверять ту фигню, что нагенерил бот.
  6. Нейромузыка от Яндекса. Тут скорее позитивные ощущения. “Бодрость” бодрит, “вдохновение” и “спокойствие” — сойдет для фона. Иногда генерируется что-то противное (увы, нет кнопки переключения, только обновление страницы помогает) и повторения бывают длинноваты, но если это фон для работы и не вслушиваться, то в целом норм.

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

СсылкаКомментировать

Буфер обмена в скриптах

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

$ echo "i am the buffer" | xclip -se c 
$ xclip -se clipboard -o | tee
i am the buffer

Для мака есть встроенные команды pbcopy и pbpaste.

Взаимодействие с буфером обменом может пригодиться для какой-нибудь убогой автоматизации (вроде этой), чтобы не создавать промежуточный файл. Особенно хорошо работает в комбинации с алиасами (чтобы скопировать что-то в буфер, а саму команду напечатать).

СсылкаКомментировать