Не скрою, беру я за свою работу суммы ощутимые, если сравнивать с услугами по установке Windows. Хотя тут вопрос спорный: один мой товарищ-админ имеет статус сертифицированного тренера Microsoft, так он тоже берёт за свои услуги кругленькие суммы. Ещё два товарища-программиста пишут ПО для специфического оборудования. Пишут так, что «родное» ПО рядом не валялось ни по функционалу, ни по надёжности. Один из них вообще имеет бизнес по переводу магазинов, кафе и прочего на линукс. Берёт деньги один раз, раза в два больше, чем хотят товарищи, делающие на Windows, но после завершения пусконаладочных работ больше не приходит: нет потребности. Да и самому мне приходится в силу должностной инструкции поддерживать локальную сеть с полусотней машин под Windows плюс домен Active Directory. Знаете ли, на «здоровом» железе у меня проблем нет ни с одной ОС. Разве что Mac OS X не хочет дружить полноценно с Windows Server 2008 — всё обновлений ждём.
К чему это всё? Да к тому, что настоящему спецу плевать на названия. Он выберет наилучший инструмент для данной задачи и применит его. А ещё настоящий спец не может стоить дёшево — разве что вы лично ему чем-то дороги.
#4475: Ускорено серым веществом
16:45 20.10.2010, IT happens
Во времена моего программерского расцвета, в первой половине девяностых, из всех вменяемых междумордных библиотек (для DOS/Windows) существовало всего две: трубо-вижн-борландюшатник и Цинк. Были и ещё какие-то: либо со строго закрытым коммерческим API, доступным только за очень отдельные деньги, либо откровенно лажающие на самых примитивных контролах. В общем, всего две. И ни одна из них не прикручивалась к Clipper 5.x напрямую — всё равно надо было кодить пакет-посредник, что вдвое снижало время отклика.
В общем, мы с коллегой решили: нужен набор интерфейсных примитивов, написанный на самoм Клиппере (и примкнувшем к нему ассемблере). Благо 5.2+ уже в полной мере был вменяемым объектным языком, и всего лишь нужно было заэксплуатировать недокументированное. Сели, обдумали концепт, за пару недель создали ТЗ, ещё через пару месяцев на свет появилась библиотека (статическая, само собой: дело-то под «доской» происходило), которая из текстового описания динамически порождала экранные формы с полнофункциональными контролами. Это вам не из бинарных .FRM вынимать поток — это реальный конструктор форм. Вплоть до того, что сами описания форм можно было хранить в таблице БД и при необходимости править при помощи банального memoedit'а... Да-да, и мета-язык тоже был! Это оно сейчас, когда визуальноe программирование стало нормой, кажется смешным. У нас на тот момент выбор был небогатый.
В середине девяностых на моём домашнем компе умер винч. Умер зонами, в одну из которых попали исходники этой самой библиотеки. Причём и сама бибилиотека, и .OBJ для неё выжили. Пока ещё был некий коммерческий спрос на DOS-программы, эта либа честно поучаствовала в нескольких вполне продаваемых проектах. При этом переписать её не было никакой физической возможности: исходники вымерли вместе с винчестером, а Клиппер-декомпилятор смог возродить менее трети текстов. Остальное не воспроизводилось, так как опиралось на вскрытые, но таки недокументированные особенности языка.
Так к чему я это всё? Ах, да... Среди модальных диалогов был и прогресс-бар. Который, само собой, нельзя было перерисовывать при каждой итерации: обрабатываемые таблицы вполне могли содержать миллионы записей, а рантайм Клиппера — это интерпретатор прекомпилированных байт-кодов (Явы тогда ещё и в проекте не существовало). То есть, это сразу стало ясно, нужен вменяемый пересчёт отношения «current/total» в размер окна с прогресс-баром, то есть нормализация на единице квантования бара. Было немножко арифметики вне цикла, после чего внутри цикла отрабатывались только пороговые значения, которые продвигали бар на полоску вперёд. Правда, именно на Клиппере это решалось чуть проще: часть арифметики делал рантайм, подсаженный на коллбек (и это под ДОСом).
Короче говоря, я до сих пор встречаю два вида прогресс-баров: первый, жутко тормозной, и второй, чётко и шустро отщёлкивающий прогресс — сделанный по тем же принципам, что и у меня, с учётом размера кванта. Второе решение более затратно по серому веществу (ровно на знание арифметики), первое — наповерхностно-очевидно и, следовательно, неверно. Привет коллегам-программерам из девяностых!
#4476: Как у них, но втрое круче
16:45 20.10.2010, IT happens