Прошлой осенью в Бостоне на конференции познакомился с очень интересным чувачком... История у него просто огонь (если не врет конечно).
Давным-давно он админил в какой-то конторе и от безысходности написал драйвер для древнего сканера, который перестал работать с новой виндой. Просто чтобы не покупать новый.
Потом знакомый админ из соседней конторы попросил написать что-то похожее (у них тоже стоял без дела огромный автосканер). Потом еще один.
Потом какая-то компания попросила драйвер для сканера фотопленок. Потом еще одна. И еще одна.
В конце концов его этими просьбами задолбали (он-то хотел гамать в CS и Diablo 2, а не рассылать людям драйвера), и чувак выложил все свои поделки на сайт - просто чтобы отстали. Сайт показал отцу - тоже программеру - и отец ради интереса прикрутил туда Paypal...
Короче, через 5 лет они обнаружили себя в центре бизнеса с оборотом пару миллионов год, под названием VueScan. Про ребят написали все - от "Washington Post" до "New York Times" и PC/Mac журналов.
Сейчас папа с сыном ревёрсят и пилят дрова для 6000 (шести тысяч) сканеров, факсов, копиров и всего прочего говна, которое давно снято с производства и не поддерживается современными ОС.
Обожаю такие истории. Accidental business, да еще и win-win со всех сторон - и людям помогают, и продлевают жизнь старым устройствам, и сокращают кол-во техномусора, и деньги зарабатывают.
Давным-давно он админил в какой-то конторе и от безысходности написал драйвер для древнего сканера, который перестал работать с новой виндой. Просто чтобы не покупать новый.
Потом знакомый админ из соседней конторы попросил написать что-то похожее (у них тоже стоял без дела огромный автосканер). Потом еще один.
Потом какая-то компания попросила драйвер для сканера фотопленок. Потом еще одна. И еще одна.
В конце концов его этими просьбами задолбали (он-то хотел гамать в CS и Diablo 2, а не рассылать людям драйвера), и чувак выложил все свои поделки на сайт - просто чтобы отстали. Сайт показал отцу - тоже программеру - и отец ради интереса прикрутил туда Paypal...
Короче, через 5 лет они обнаружили себя в центре бизнеса с оборотом пару миллионов год, под названием VueScan. Про ребят написали все - от "Washington Post" до "New York Times" и PC/Mac журналов.
Сейчас папа с сыном ревёрсят и пилят дрова для 6000 (шести тысяч) сканеров, факсов, копиров и всего прочего говна, которое давно снято с производства и не поддерживается современными ОС.
Обожаю такие истории. Accidental business, да еще и win-win со всех сторон - и людям помогают, и продлевают жизнь старым устройствам, и сокращают кол-во техномусора, и деньги зарабатывают.
👍3
Извините, не про стартапы.
Заметил за собой, что все чаще юзаю конструкцию
Это хак из мира C-шников, у них так давно принято.
Меня, идиота, научили совсем недавно.
Работает так
Потому что "громоздкое вычисление".
Я не хочу вычислять следующую переменную (
Вы опять спросите "НАХЕРА? почему бы тогда не вынести вычисление
Собственно,
"Громоздкое вычисление" не обязательно именно вычисление, это может быть, например, чтение из медленной базы данных - самый частый боттлнек на бекенде.
Такая вот оптимизация. Спасибо вам, Сишники.
P.S. подход ни к коем случае не предлагается в качестве паттерна.
Заметил за собой, что все чаще юзаю конструкцию
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