Я, как и многие программисты, довольно много слышал и читал о практиках TDD и BDD. О пользе хорошего покрытия кода юнит-тестами — и о вреде его отсутствия — я знаю по собственному опыту в коммерческих проектах, но применять TDD в чистом виде не получалось по разным причинам. Начав на днях писать свой игровой проект, я решил, что это хорошая возможность попробовать. Как оказалось, разницу по сравнению с обычным подходом можно почувствовать даже при реализации простейшего класса. Я распишу этот пример по шагам и в конце опишу результаты, которые для себя увидел. Думаю топик будет полезен тем, кто интересуется BDD. От более опытных коллег хотелось бы услышать комментарии и критику.
Читать полностью »
Рубрика «Программирование» - 1049
Простой, но показательный пример использования BDD
2012-09-17 в 15:43, admin, рубрики: bdd, tdd, Песочница, Программирование, метки: bdd, tdd, ПрограммированиеПростой, но показательный пример использования TDD
2012-09-17 в 15:43, admin, рубрики: tdd, Песочница, Программирование, метки: tdd, Программирование Я, как и многие программисты, довольно много слышал и читал о практиках TDD. О пользе хорошего покрытия кода юнит-тестами — и о вреде его отсутствия — я знаю по собственному опыту в коммерческих проектах, но применять TDD в чистом виде не получалось по разным причинам. Начав на днях писать свой игровой проект, я решил, что это хорошая возможность попробовать. Как оказалось, разницу по сравнению с обычным подходом можно почувствовать даже при реализации простейшего класса. Я распишу этот пример по шагам и в конце опишу результаты, которые для себя увидел. Думаю топик будет полезен тем, кто интересуется TDD. От более опытных коллег хотелось бы услышать комментарии и критику.
Читать полностью »
Стипендия Erasmus Mundus для высшего образования в Европе
2012-09-17 в 14:28, admin, рубрики: бизнес-процессы, обучение за рубежом, Программирование, стипендия, Учебный процесс в IT, метки: бизнес-процессы, обучение за рубежом, СОА, стипендия Тема образования за границей на Хабре освещалась уже не раз, однако именно по этой стипендии упоминаний почти нет. Ее уникальная фишка состоит в том, что учеба не ограничивается одним университетом, а можно будет поучиться в 2 – 3 университетах в разных странах ЕС, получить полноценный диплом, и сумма стипендии покрывает все нужды. Кто заинтересован в учебе на магистра или PhD, найдет под катом мой личный опыт и рекомендации.
Читать полностью »
О том как я Java в дотнет портировал
2012-09-17 в 14:09, admin, рубрики: .net, java, Программирование 
Давным давно… ну как давно? вчера! (С), то есть пару лет назад, портировал я одну скромную библиотечку с Java на .NET. И не просто на .NET, а на версию 1.1.
Подход известен — берем в зубы Sharpen (или конвертер из вижуалстудии 2003 года, кому что нравится), и далее — лобзиком.
Про очевидности с итераторами, структурами ("System.Drawing.Size это не объект") и потоками рассказывать не буду — банальщина. А вот про некоторые сюрпризы — добро пожаловать.
Как я прошивку видеорегистратора F500 ковырял
2012-09-17 в 12:28, admin, рубрики: .net, Гаджеты. Устройства для гиков, Программирование Видеорегистратор в машине штука нужная и крайне полезная, особенно, если водитель склонен ездить по правилам. Одной из оптимальных по соотношению цена/качество является линейка F500 и их старший брат Каркам Q2. Вот тут есть большая и длинная тема обсуждения этих регистраторов.
Примерно полгода назад я стал обладателем такого устройства и очень доволен. Но захотелось его немного доработать — придать индивидуальности. Возникла эта идея в контексте регистратора как подарка. Задачей минимума была замена стартовой и финальной заставок на что-то свое. Эта задача была успешно решена, но обнаружился ещё простор для творческих поисков.
Для тех кому неинтересно читать технические подробности — на GitHub выложены исходники и бинарники (нужен .Net 4.0)
Читать полностью »
Надёжность кода и NullReferenceException
2012-09-17 в 12:05, admin, рубрики: .net, надежность, Песочница, Программирование, метки: .net, c++, надежность, Программирование Во-первых, что понимать под надежностью применительно к программам? Понятие надежности изначально было исключительно инженерным. Согласно определению из Wiki, надежность – это свойство объекта сохранять работоспособное состояние в течение некоторого времени. Под «объектом» здесь понимается некая физическая система. И, как правило, чем сложнее эта система, те есть, чем большее количество элементов в нее входит, тем менее она надежна, поскольку вероятность отказа системы равна произведению вероятностей отказа ее частей (грубое приближение, если не учитывать дублирования и разной степени критичности компонентов). То же самое вполне применимо и к программным системам – чем сложнее программа, тем больше количество ошибок в ней. Однако между физическими системами и программными есть одно принципиальное различие.
Читать полностью »
Ничего не работает и всем пофиг
2012-09-17 в 10:28, admin, рубрики: apple, microsoft, все сломалось никто не чинит, качество, Программирование 
Программы не работают. Удивительно, как часто нам приходится мириться с этим. Вот всего лишь несколько, буквально, первых попавшихся проблем, с которыми я столкнулся на прошлой неделе.
- На моем iPhone 4s 3 гигабайта пространства занимает что-то, что iTunes определяет как “Other”. Никто не знает, что это за “другое” и предлагается либо стереть полностью настройки, либо “удалить и добавить еще раз почтовые аккаунты”. Вообще-то это проблема для меня, потому что на устройстве всего 16 гигабайт!
- Читать полностью »
Красивый Notification View своими руками
2012-09-15 в 19:27, admin, рубрики: cocoa touch, ios development, uikit, Программирование, разработка под iOS, метки: cocoa touch, ios development, uikitИногда случается так, что нужно втиснуть в уже готовое приложение одиночный UITableView или какую-нибудь часто используемую форму. Выделять для этого целый View Controller не всегда оправдано, и поэтому однажды мне пришлось сделать вот такой вот элемент интерфейса:

Ничего сложного в нём нет: пара UIView и UIPanGestureRecognizer. Хотите узнать, как сделать что-нибудь подобное?
Читать полностью »
XMPP для самых маленьких
2012-09-14 в 3:54, admin, рубрики: irc, jabber, XML, xmpp, Программирование, метки: irc, jabber, xmppДорогой дневник,
IRC отмирает, — кто-то уходит в социальные сети с концами, кто-то сменяет IRC на Jabber. На протяжении 6 лет моим хобби было написание mIRC бота (это как Emacs, только чат, но с таким же потенциалом для обвешивания его разным функционалом), но каналы опустели и теперь стало писать не для кого.
А писал я, позвольте похвастаться, многое — реализации HTTP, FTP, IRC серверов, Feed агрегатор, игры для IRC, и просто различные утилиты, которые выполняли рутинную задачу и делали жизнь легче. Все это — на чистом mIRC Scripting Language.
С потерей популярности IRC я не хочу отказываться от чатов и тоже перешел на Jabber, но в конференциях без своего бота, который предоставляет кучу полезных фич и развлекает посетителей — совсем не то. Поэтому я решил написать реализацию XMPP клиента, и для тех, кому это тоже может быть полезно — сделал шпаргалку, с описанием основных команд. По ней вы, используя любой любимый ЯП, в котором нет библиотек для XMPP, — да даже просто используя telnet, сможете сидеть в Jabber'е. Сравнивать я буду с IRC.Читать полностью »
Подключение статических ресурсов из шаблонов
2012-09-13 в 20:55, admin, рубрики: yaml, Веб-разработка, Программирование, разработка, фреймворки, шаблоны, метки: yaml, Веб-разработка, фреймворки, шаблоныПоработав на некотором количестве веб-проектов в роли frontend/backend-разработчика/верстальщика в разных компаниях, я постоянно сталкивался с неэффективным и некрасивым подходом к задаче подключения необходимых статических ресурсов (будем пока считать это .css и .js файлы) для отображения на странице.
Основная проблема всех повстречавшихся мне подходов — это тесная связь между структурой frontend кода, логикой деплоя и backend кода (в основном шаблонов), а также отсутствие семантики. Далее под термином frontend-код будет подразумеваться вся совокупность .js, .css и каких-либо других файлов или ресурсов, которые отдаются браузеру. Как правило этими файлами занимаются frontend-разработчики (sick!).
Сначала я приведу пару реальных примеров (на псевдокоде, так как везде использовались разные фреймворки и языки, и реальный код будет только сбивать нас с толку), рассмотрю недостатки и проблемы, связанные с используемыми подходами, а в конце опишу своё видение данной проблемы.
Читать полностью »
