.и в продакшен
2.47K subscribers
9 photos
3 videos
107 links
Фаундер-технарь - канал основателя www.jitbit.com, Alexander Yumashev @jitbit

Как быть CTO/CEO одновременно, как растить bootstrapped-стартапы и прочая айтишечка.
Download Telegram
Прошлой осенью в Бостоне на конференции познакомился с очень интересным чувачком... История у него просто огонь (если не врет конечно).

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

Потом знакомый админ из соседней конторы попросил написать что-то похожее (у них тоже стоял без дела огромный автосканер). Потом еще один.

Потом какая-то компания попросила драйвер для сканера фотопленок. Потом еще одна. И еще одна.

В конце концов его этими просьбами задолбали (он-то хотел гамать в CS и Diablo 2, а не рассылать людям драйвера), и чувак выложил все свои поделки на сайт - просто чтобы отстали. Сайт показал отцу - тоже программеру - и отец ради интереса прикрутил туда Paypal...

Короче, через 5 лет они обнаружили себя в центре бизнеса с оборотом пару миллионов год, под названием VueScan. Про ребят написали все - от "Washington Post" до "New York Times" и PC/Mac журналов.

Сейчас папа с сыном ревёрсят и пилят дрова для 6000 (шести тысяч) сканеров, факсов, копиров и всего прочего говна, которое давно снято с производства и не поддерживается современными ОС.

Обожаю такие истории. Accidental business, да еще и win-win со всех сторон - и людям помогают, и продлевают жизнь старым устройствам, и сокращают кол-во техномусора, и деньги зарабатывают.
👍3
Извините, не про стартапы.

Заметил за собой, что все чаще юзаю конструкцию do-while(false) - никогда не догадаетесь для чего - для "быстро выйти из нескольких вложенных if сразу"

Это хак из мира C-шников, у них так давно принято.

Меня, идиота, научили совсем недавно.

Работает так

do
{
if (xxx)
{
//громоздкое вычисление yyy
if (yyy)
{
//громоздкое вычисление zz
if (zzz)
//чтото делаем
else
break; //выходим нахуй
}
}
}
while (false)

Вы спросите "НАХЕРА? почему не просто if (xxx && yyy && zzz) ?? Ведь сработает "short circuiting" в операторе &&"

Потому что "громоздкое вычисление".

Я не хочу вычислять следующую переменную (yyy и zzz) анлесс мне реально это надо. А внутрь if()-выражения вычисление может и не поместиться.

Вы опять спросите "НАХЕРА? почему бы тогда не вынести вычисление yyy во внешний метод?" А потому что значение yyy я юзаю много раз и не хочу вычислять его повторно. Ну и вообще - читаемо же? красиво же? не?

Собственно, while (false) опеспечивает, что код выполнится ровно один раз.

"Громоздкое вычисление" не обязательно именно вычисление, это может быть, например, чтение из медленной базы данных - самый частый боттлнек на бекенде.

Такая вот оптимизация. Спасибо вам, Сишники.

P.S. подход ни к коем случае не предлагается в качестве паттерна. while(true) { ранний выход } более читаем, например. Но это отличный костыль к уже написанному коду, решающий задачу "быстро выйти из кучи if"
👍1