Самый простой способ распознать пустословие про какую-либо технологию:
Берем заменяем все упоминание этой новой технологии на какую-нибуть уже известную и достаточно давно появившуюся. Например BPM на J2EE. И хотя это разные вещи, многие тексты об одной, таким образом, легко адаптируются для другой.
Проще способа продемонстрировать buisness-people что тут им лапшу на уши вешают я не знаю.
Берем заменяем все упоминание этой новой технологии на какую-нибуть уже известную и достаточно давно появившуюся. Например BPM на J2EE. И хотя это разные вещи, многие тексты об одной, таким образом, легко адаптируются для другой.
Проще способа продемонстрировать buisness-people что тут им лапшу на уши вешают я не знаю.
Купил вот сегодня (4го апреля), в хлебозаводе что на Маркса булочку:

Либо я чего-то не понимаю, и по закону действительно можно писать даты изготовления будущим, либо наглая на*бка налицо.
Либо я чего-то не понимаю, и по закону действительно можно писать даты изготовления будущим, либо наглая на*бка налицо.
На этой неделе освоил пару полезных инструментов:
ddkbuild.bat - замечательный батник который "просто работает". Для скрипта надо всего лишь указать в нужной переменной окружения путь к установленному ddk. Пример makefile для драйвера можно подсмотреть на CodeProject.
CFix - тестовый фреймворк, с которым можно тестировать даже код драйвера под Windows. До тестирования драйверов я правда не добрался, но обычный код я с CFix достаточно успешно потестировал.
В отличии от CPPUnit, в CFix обычные тесты собираются ввиде dll и запускаются отдельным Test-Runner'ом. Я вначале понадеялся что в сей волшебной схеме реализована расширенная обработка исключений. Чтобы не возникало дурацких окошек вида "Программа выполнила недопустимую операцию.. найдите программиста и скажите что ему надо нажать на кнопку ОК". Но до до этого у автора CFix руки еще не дошли. Ладно, пока нажимаю на кнопки руками. Вопрос, как вообще организовывать автоматическое Continuos Integration на C++/Windows платформе остался открытым.
Но все равно, тесты настолько сократили время на разработку, что я, делая все с нуля, за один день умудрился наступить на все грабли, о которых говорили мне два моих предшественника, потратившие без толку два выходных. А через полчаса после 18-00 у меня все заработало как часы :)
ddkbuild.bat - замечательный батник который "просто работает". Для скрипта надо всего лишь указать в нужной переменной окружения путь к установленному ddk. Пример makefile для драйвера можно подсмотреть на CodeProject.
CFix - тестовый фреймворк, с которым можно тестировать даже код драйвера под Windows. До тестирования драйверов я правда не добрался, но обычный код я с CFix достаточно успешно потестировал.
В отличии от CPPUnit, в CFix обычные тесты собираются ввиде dll и запускаются отдельным Test-Runner'ом. Я вначале понадеялся что в сей волшебной схеме реализована расширенная обработка исключений. Чтобы не возникало дурацких окошек вида "Программа выполнила недопустимую операцию.. найдите программиста и скажите что ему надо нажать на кнопку ОК". Но до до этого у автора CFix руки еще не дошли. Ладно, пока нажимаю на кнопки руками. Вопрос, как вообще организовывать автоматическое Continuos Integration на C++/Windows платформе остался открытым.
Но все равно, тесты настолько сократили время на разработку, что я, делая все с нуля, за один день умудрился наступить на все грабли, о которых говорили мне два моих предшественника, потратившие без толку два выходных. А через полчаса после 18-00 у меня все заработало как часы :)
Вот сюрприз, в одном проекте следующий код прекрасно компилируется:
В другом же компилятор, ругаясь "error C2059: синтаксическая ошибка: )" (кстати как в русской VisualStudio включить нормальный язык?), хочет сообщить нам что, мы тут опечатались.
И действительно, на самом деле мы хотим проверить правильность указателя на функцию:
Где-то в mfc/atl хедерах видимо происходит какой-то magic.
#include "stdafx.h"
#include <assert.h>
typedef DWORD (WINAPI * PFwpmFilterDeleteById0)(
IN HANDLE,
IN UINT64
);
PFwpmFilterDeleteById0 FwpmFilterDeleteById0
= (PFwpmFilterDeleteById0) GetProcAddress(hFirewall, "FwpmFilterDeleteById0");
assert(PFwpmFilterDeleteById0);
В другом же компилятор, ругаясь "error C2059: синтаксическая ошибка: )" (кстати как в русской VisualStudio включить нормальный язык?), хочет сообщить нам что, мы тут опечатались.
И действительно, на самом деле мы хотим проверить правильность указателя на функцию:
assert(FwpmFilterDeleteById0);
Где-то в mfc/atl хедерах видимо происходит какой-то magic.
Если вам повезло и у вас есть( ... )
Опять занялся обустройством emacs'a
Настроил простую навигацию по вкладкам:
И повесил на горячую клавишу скрипт вытаскивающий окно емакса на самый верх:
В dot.emacs потребовалось определить функцию:
Update 10.05.2009: А для того чтобы переключение буферов работало под Windows пришлось дописать:
Настроил простую навигацию по вкладкам:
(global-set-key (kbd "<s-right>") `tabbar-forward-tab) (global-set-key (kbd "<s-left>") `tabbar-backward-tab) (global-set-key (kbd "<s-up>") `tabbar-forward-group) (global-set-key (kbd "<s-down>") `tabbar-backward-group)
И повесил на горячую клавишу скрипт вытаскивающий окно емакса на самый верх:
#!/bin/sh
emacsclient.emacs-snapshot -e "(emacsclient-bring-to-front)"
if [ $? -eq 1 ]; then
emacs-snapshot &
fi;В dot.emacs потребовалось определить функцию:
(defun emacsclient-bring-to-front () (select-frame-set-input-focus (selected-frame)))
Update 10.05.2009: А для того чтобы переключение буферов работало под Windows пришлось дописать:
(setq w32-pass-lwindow-to-system nil
w32-pass-rwindow-to-system nil
w32-pass-apps-to-system nil
w32-lwindow-modifier 'super
w32-rwindow-modifier 'super
w32-apps-modifier 'hyper)Ха, оказывается суровые люди используют стикеры и простую доску в качестве таск-трекера.
Но я кстати даже рад, что не знал об этом в прошлом году, тоже ведь мог бы все так замутно расчертить.
Мы то делали проще, в две колонки: "Надо" и "Сделано", шибко долгие активные задачи, которые все никак не кончались, потихоньку двигали руками на середину. А приоритетность какой-нибуть конкретной, но опять же небыстрой, подчеркивала волшебная желтая стрелочка.
И у нас большая часть надписей распечатаны. Мне б было бы грустно смотреть на уродскую стену испорченную моим дурацким почерком, да и печаю я на самом деле быстрее чем пишу.
Update 15.04.2009: Глядя на то как сейчас люди мучаются рисуя sequence диаграммы в confluence, кусаю локти. Это ж как клево можно было в банке use cases на стене рисовать. С фотками реальных людей, участвующих в автоматизируемых процессах :)
Но я кстати даже рад, что не знал об этом в прошлом году, тоже ведь мог бы все так замутно расчертить.
Мы то делали проще, в две колонки: "Надо" и "Сделано", шибко долгие активные задачи, которые все никак не кончались, потихоньку двигали руками на середину. А приоритетность какой-нибуть конкретной, но опять же небыстрой, подчеркивала волшебная желтая стрелочка.
И у нас большая часть надписей распечатаны. Мне б было бы грустно смотреть на уродскую стену испорченную моим дурацким почерком, да и печаю я на самом деле быстрее чем пишу.
![]() |
Update 15.04.2009: Глядя на то как сейчас люди мучаются рисуя sequence диаграммы в confluence, кусаю локти. Это ж как клево можно было в банке use cases на стене рисовать. С фотками реальных людей, участвующих в автоматизируемых процессах :)
