Читать в телеге. Когда-то там были посты не только от меня.
Не всё то disruptive technology, что AI
Так получилось, что на прошлой неделе удалось попробовать несколько инструментов на базе AI.
- Вежливое письмо. Был кризис социальной энергии, попросил ChatGPT написать вежливое письмо главному HR. Хотелось, чтобы оно звучало не как “слыш, мне надо это”, а как вежливая просьба, письменный этикет же, все-такое, best regards. Первые 2 результата были очень многословными, и я не смог нормально подобрать промпт так, чтобы письмо мне самому нравилось. В итоге забил и написал сам.
- Для тупой шутейки захотелось изменить фото человека, чтобы он был похож на Волдеморта. Попробовал топ-2 сервиса из выдачи гугла. Результаты получились так себе: похоже на Носферату, но оригинальные черты лица были потеряны, да и нос был совсем не тот, хотя я явно его указал в промпте. Фон нейронки совсем отказали генерировать. Справедливости ради, попробовал древние инструменты морфинга, в одном из коробки шел Волдеморт, в другом размечал все точки лица вручную (sic!), но получилась тоже фигня. В итоге забил.
- Хотел улучшить разрешение фотки, чтобы было прям HD. В одной онлайн-шляпе получилось 1-в-1 как делает любой графический редактор (т.е. никакого улучшения, хотя заявлен AI). В другой получилось тоже не очень, но хоть какой-то намек на улучшение был, в итоге взял его.
- Делал тупой мем, искал надпись diversity в радужном цвете, на стоках был либо поганый jpg, который было лень редактировать, либо то, что мне не подходило. Ладно, попробуем AI! Попробовал топ-5 инструментов из выдачи гугла. На один и тот же запрос они мне выдали абстрактную радужную хрень, очень diversity чернокожую женщину, просто радугу и, наконец, буквы “dLмersLТu” на радужном фоне одним цветом. Meh. В итоге воспользовался… WordArt, получилось еще более всрато.
- ChatPDF — сервис позволяет загрузить статью и задавать по ней вопросы с помощью ChatGPT, причем даже указывает параграфы, на основе которых ответ был сгенерирован. Sounds good, doesn’t work. Просил бота написать основные тезисы. Конечно, клево, что можно получить ответ даже в формате LaTeX, чтобы его сразу вкорячить в презентацию, но есть мааааленькая проблема: половина данных тезисов не соответствовала действительности, а параграфы-источники не содержали искомой информации. Попробовал на трех статьях, в итоге быстрее оказалось прочитать статьи самостоятельно, чем проверять ту фигню, что нагенерил бот.
- Нейромузыка от Яндекса. Тут скорее позитивные ощущения. “Бодрость” бодрит, “вдохновение” и “спокойствие” — сойдет для фона. Иногда генерируется что-то противное (увы, нет кнопки переключения, только обновление страницы помогает) и повторения бывают длинноваты, но если это фон для работы и не вслушиваться, то в целом норм.
В целом понятно, что очень много хайпа вокруг новых технологий и если разобраться (стать промпт-инженером, кек), то можно получить адекватные результаты. Интеллектуальная деятельность пока в безопасности, но страшно другое — бездумное использование результатов.
Наборы инъекций
Буфер обмена в скриптах
Чтобы получить что-то из буфера обмена, или запихнуть в него, можно воспользоваться командой xclip
:
$ echo "i am the buffer" | xclip -se c
$ xclip -se clipboard -o | tee
i am the buffer
Для мака есть встроенные команды pbcopy
и pbpaste
.
Взаимодействие с буфером обменом может пригодиться для какой-нибудь убогой автоматизации (вроде этой), чтобы не создавать промежуточный файл. Особенно хорошо работает в комбинации с алиасами (чтобы скопировать что-то в буфер, а саму команду напечатать).
"Стандарт" UTF-8
Помню в далекие времена бомбило от CP1251, вот зачем эти однобайтные кодировки, есть же нормальный UTF-8, который совместим с ASCII, используй его везде и не парься, ну! Сегодня в интернете трудно найти сайт не в UTF-8 кодировке, Firefox даже запрятал смену кодировки куда-то далеко в глубины меню. Да и получить проблемы с кодировкой на сайте — моветон, предание старины глубокой…
И вообще это все от лукавого винды, вон на линуксе и на маке почти везде UTF-8… Но он там, оказывается, разный. В UTF-8 есть несколько нормальных форм. Если коротко, то символ â можно представить как один сложный символ (это NFC), а можно как комбинацию обычной a и крышки (это NFD).
Сам стандарт рекомендует использовать везде NFC. Linux и почти весь web используют его. У Apple другой путь — они используют NFD.
Теоретически в этом нет никакой проблемы, если везде при обработке данных используется UTF-8, т.к. эти две формы считаются эквивалентными. Однако, если где-то случайно передавать данные в сыром виде или с ANSI кодировкой, то можно получить веселый прикол, когда две совершенно идентичные с точки зрения всех нормальных инструментов строки на самом деле не одинаковые с точки зрения представления в байтах.
Убьет ли project Loom корутины Kotlin?
Неплохой доклад. Ответ, разумеется, “нет”.
В начале — стандартная теория про то, что потоки != корутины, немного истории и про то как работает Loom и корутины. Если сильно упростить, то Loom переносит манипуляции с объектами Thread
с операционной системы на саму JVM: идея в том, чтобы с минимальными изменениями превратить приложение с кучей потоков в приложение с кучей корутин, например, заменяя Executors.newCachedThreadPool()
на Executors.newVirtualThreadPerTaskExecutor()
. Соответственно, у Loom нет разделение функций на обычные и suspend
. В корутинах больше фокус на всякие плюшки от структурированной асинхронности.
Далее сравниваются цели двух проектов (они, разумеется разные) и компромиссы по производительности и другим аспектам. В будущем возможно использование Loom внутри реализации корутин — сейчас тяжелые IO-операции используют настоящие потоки, которые можно будет заменить на виртуальные.
Тренажер промптов для обхода ограничений
Классная шутка, чтобы почувствовать себя кул-хакером. Иногда вылетает из-за лимитов ChatGPT, но полезная зарядка для ума. Советую записывать свои успешные промпты, чтобы использовать их повторно.
Как работают аллокаторы памяти
Очень доступная статья, которая объясняет работу простейшего аллокатора памяти “для чайников”.
Типичные ошибки при построении микросервисной архитектуры
Посмотрел неплохой доклад на эту тему. Ожидал от него большей глубины, но у него неплохая подача и он описывает многие базовые вещи.
Вначале идет немного теории про разные виды “монолитов”, а потом разбираются собственно ошибки:
- Предполагать, что микросервисы всегда лучше монолита.
- Общие модели и/или общая база.
- Слишком большие микросервисы.
- Слишком маленькие микросервисы.
- Начинать построение нового продукта с микросервисной архитектуры.
- Связывание через инфраструктурный код (логгирование/авторизацию и т.п.).
- Использование синхронных вызовов между микросервисами.
- Обратно-несовместимые изменения в событиях.
- Отсутствие автоматизации релизов.
- Отсутствие инкапсуляции (когда микросервис слишком много знает о деталях реализации другого микросервиса).
- Несоответствие организационной структуры архитектуре продукта.
Cyber Chef
Классный проект, содержащий большой набор утилит для всякой конвертации форматов данных, криптографии, работы с изображениями и т.п. UI немного сомнительный и требует привыкания, но большой плюс, что тут собрано много всего в одном месте. И все это работает чисто на JS, так что можно еще использовать в познавательных целях.
Розеттские камни
Наверняка многие случайно попадали на Rosetta Code, когда пробовали что-то делать простое на не очень знакомом языке. Недавно наткнулся на аналог для JS-фреймворков, хотя там везде выглядит все почти одинаково…