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

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

Песочницы OAuth

Очень простенькая песочница OAuth, где можно прокликать сценарии OAuth и в общих чертах понять их логику и какие данные в каком формате передаются между участниками.

И еще одна, где интерфейс немного перегружен, но чуть больше степеней свободы.

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

База про оптимизации компилятора

Отличная серия коротких постов про базовые оптимизации компилятора от создателя Godbolt (он же Compiler Explorer). Рассмотрены арифметические операции, циклы, ABI, инлайнинг, рекурсия и векторизация.

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

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

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

Написание кода занимает малую долю времени разработчика

По разным оценкам, от 11 до 32%.

И это подтверждается несколькими исследованиями, вот относительно свежие:

  1. 2019, выборка почти 6 тыс. респондентов из Microsoft, опрос — 15%-18% (29-32%, если учесть отладку и багфиксы).
  2. 2021, выборка 250 тыс, телеметрия через IDE-плагин — 11% (52 минуты в день в среднем).
  3. 2024, 484 разработчика из Microsoft, опрос — 14% (11% на кодинг и 3% на рефакторинг).

Даже у работяг, прошедших в фаанг только полдня было занято кодингом:)

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

.new домены

На сессии группового программирования коллега создал новый Google Sheet с помощью sheet.new (не спрашивайте, как таблички связаны с программированием).

Это тупо редирект, но все равно прикольно и явно удобнее, чем заходить через Drive.

.new — это один из TLD-доменов Google, и там есть аналогичные “ярлыки” для прочих сервисов гугла. Но и другие компании имеют сайты на этом домене. Полный список ведет сам гугл. Все это появилось в основном в районе 2019 года, но я как-то пропустил. Набор довольно сомнительный, о большей части компаний у нас и не слышали, а достаточно заметное количество доменов уже не работают.

Что потенциально интересно/бросилось в глаза (кроме гугловских ссылок):

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

Новый движок для регулярок

Очень интересная статья про новый движок для регулярок.

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

Одним из открытий для меня стало, что в PCRE-регулярках (т.е. почти везде) (a|ab)+ и (ab|a)+ — не одно и то же, и варианты рассматриваются жадно слева направо. Из-за этого для aababaabab первая регулярка выдаст aa, а вторая — всю строку.

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

Пишите в поддержку

У меня как-то сложился стереотип, что писать куда-то с обращениями — это обычно спортлото. Но мне тяжело объяснить почему. При этом у меня есть успешные истории, расскажу о трех из них.

Первая — из 2016 года: попросил Мосгортранс перенести остановку трамвая — перенесли через пару недель! Через год-полтора вернули обратно, а сейчас ее уже вообще нет, но все равно результат был достигнут.

Вторая — прошлогодняя. Полугосушная программа выдавала ошибку, к счастью довольно подробную (0x3b56abcd != 0x3B56ABCD). Я искал варианты решения в интернете, пробовал ставить версии под другие ОС и т.п., в общем, пытался сам решить. Нашел что как-то через жопу можно сделать, что мне надо. Даже думал о том, чтобы отредактировать бинарник, чтобы эту проверку отключить. Чисто по приколу написал на почту. Причем не каким-то разрабам, а в контактный центр — т.е. в максимальную помойку. Во-первых, мне ответили! Отвечали мне с пингом в пару недель, и из серии “переустанови, перезапусти”. Но на третий раз, когда я им выслал логи, скриншоты и какую-то лабуду, они… сделали новую версию! И она РАБОТАЕТ.

Наконец, самая свежая. Пару лет назад выяснилось, что stale бот на GitHub реализован очень тупо: делает полный перебор всех тикетов вместо фильтрации. Ну, открыл им тикет, написал свой action (все равно сценарий отличался) и забыл. В октябре мой action стал регулярно падать с “Something went wrong”. Написал в поддержку, долго с ними бодался, потому что они меня газлайтили, что это мои запросы кривые, а не их инфра, которая, судя по всему, тоже делает полный перебор вместо фильтрации. Выдавил из них обещание “передать разработчикам”. А феврале все внезапно “починилось” и поддержка вскоре отписалась, что теперь все ок.

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

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

Сложность: что посеешь, то и пожнешь

В каждом утюге уже было это видео про то, как все сложно, пусть будет и в моем. Слишком уж жизненно.

Мем смешной, а ситуация страшная. На той же неделе вышла еще годная статья про то, что никто особо и не поощряет простые решения: за “простоту” не повысят, да и на собесе надо второй гугл/убер/букинг/твиттер спроектировать за час. Кучу историй про проекты и дебильные решения, которые затевались чисто ради повышения в бигтехах, можете найти сами. Все по классике: награждаем тушителей пожаров и “усилия”, а на полировку и упрощение — забиваем.

Проблема, разумеется, далеко не нова: тут, например, можно вспомнить и старую классику про “добавить кнопочку” (чтобы еще на выходе и не было понятно, это PHP или React). Вот еще докладик из прековидной эпохи в тему: все привыкли к багам, технологии деградируют (приведен пример с боингом, пророчески получилось), абстракции погоняют абстракциями, и все это — ценой железа. Жаль, что докладчик не предложил, что делать со всем этим.

Некоторые надеются, что высокие цены на комплектующие поспособствуют более вдумчивому использованию ресурсов. Удачи им с этим в мире, где текущий тренд — это не читать код, который написал ИИ :)

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