Тема DI/IoC достаточно простая, но в сети очень сложно найти хорошее описание того, как это работает и зачем это нужно. Вот моя попытка, с использованием Unity. Хорошо ли объяснена тема – судить вам.
Акжан @akzhan
CTO, Release manager, Teamlead
Grammar Gravity
1 мин
789Довольно часто на Хабрахабре можно увидеть комментарии, которые содержат сообщения о том, что в статью закралась та или иная ошибка. Такие комментарии не относятся непосредственно к теме, которую выносит статья на обсуждение общественности, и отвлекает участников дискуссии от плодотворного её проведения.
Такую информацию нужно отправлять персонально автору, но порой пользователям бывает просто лень открывать свою Хабрапочту и набирать там необходимую информацию для того, чтобы оповестить автора об ошибке. Что же может нам помочь?
Пользовательский скрипт Grammar Gravity поможет вам, не отходя от статьи и её обсуждения, отправить автору сообщение об ошибке в два клика. Вы, как будто бы, пишете обычный комментарий, но, на самом деле, вы отправляете персональное сообщение автору статьи! Красота, не правда ли?
Если же вам недостаточно просто сообщать пользователю об ошибках, вы хотите написать ему полноценное сообщение, то вам следует установить Grammar Gravity Parallel.
Расширение было оттестированно на Firefox 2 и 3, Opera 10, Google Chrome и Safari. Не исключено, что оно будет работать и на других браузерах, которые не попали в вышеперечисленную выборку. Для установки скрипта в Firefox вам понадобится Greasemonkey, в Opera — включить пользовательские скрипты в настройках, в Google Chrome — добавить к опциям ярлыка --enable-user-scripts --user-scripts-dir=\путь\до\директории и положить в ту самую директорию скрипт.
Присылая автору сообщение об ошибке персональным сообщением, вы делаете доброе дело! Мир запомнит вас! Удачи вам!
Такую информацию нужно отправлять персонально автору, но порой пользователям бывает просто лень открывать свою Хабрапочту и набирать там необходимую информацию для того, чтобы оповестить автора об ошибке. Что же может нам помочь?
Пользовательский скрипт Grammar Gravity поможет вам, не отходя от статьи и её обсуждения, отправить автору сообщение об ошибке в два клика. Вы, как будто бы, пишете обычный комментарий, но, на самом деле, вы отправляете персональное сообщение автору статьи! Красота, не правда ли?
Если же вам недостаточно просто сообщать пользователю об ошибках, вы хотите написать ему полноценное сообщение, то вам следует установить Grammar Gravity Parallel.
Расширение было оттестированно на Firefox 2 и 3, Opera 10, Google Chrome и Safari. Не исключено, что оно будет работать и на других браузерах, которые не попали в вышеперечисленную выборку. Для установки скрипта в Firefox вам понадобится Greasemonkey, в Opera — включить пользовательские скрипты в настройках, в Google Chrome — добавить к опциям ярлыка --enable-user-scripts --user-scripts-dir=\путь\до\директории и положить в ту самую директорию скрипт.
Присылая автору сообщение об ошибке персональным сообщением, вы делаете доброе дело! Мир запомнит вас! Удачи вам!
+119
3 in 1: Desktop, Mobile, Web. Кроссплатформенная разработка
5 мин
9.5KРазработка в рамках одного проекта несет в себе ряд преимуществ. Во-первых, это позволяет использовать одну реализацию бизнес-логики программы. Во-вторых, это возможность иметь единый набор юнит-тестов. В-третьих, это использование привычного языка(С++) и среды разработки.
Статья описывает некоторые методы программирования и несколько библиотек помогающие создавать кроссплатформенные приложения.
За основу взят опыт создания небольшого приложения типа «калькулятор»
+27
Порядок разрешения методов в Python
15 мин
182KВ этой заметке рассматривается алгоритм MRO С3 и некоторые специфические проблемы множественного наследования. Хотя и алгоритм и проблемы не ограничиваются рамками одного языка, я акцентировал своё внимание на Питоне. В конце приведён список полезных ссылок по данной теме.
+61
Расширение Jeditable плагина на примере Wymeditor и JqueryUI.datepicker
4 мин
2.5KСтолкнулся с задачей когда надо было сделать на сайте возможность редактировать контент в паблик части по клику на блок. И решил что это неплохой повод освоить jQuery. Скачал jquery, jQuery UI (плагин datepicker), wymeditor и Jeditable плагин.
С интеграцией jeditable все было просто. Плагин очень порадовал, оказался гораздо удобней плагина Editable. А вот с интеграцией с jQueryUI.datepicker и wymeditor’ом пришлось немного повозиться.
Проблема с которой я столкнулся заключалась в том что по поводу расширения плагина jeditable было написано очень мало, точнее только страница с примерами, я до этого с jQuery дел не имел и поэтому пришлось помучаться. Результаты с объяснением ниже, авось кому поможет.
p.s. оказалось что документация есть но я ее плохо искал.
С интеграцией jeditable все было просто. Плагин очень порадовал, оказался гораздо удобней плагина Editable. А вот с интеграцией с jQueryUI.datepicker и wymeditor’ом пришлось немного повозиться.
Проблема с которой я столкнулся заключалась в том что по поводу расширения плагина jeditable было написано очень мало, точнее только страница с примерами, я до этого с jQuery дел не имел и поэтому пришлось помучаться. Результаты с объяснением ниже, авось кому поможет.
p.s. оказалось что документация есть но я ее плохо искал.
+5
jQuery Tools v1.0.1
1 мин
3.9KjQuery Tools v1.0.1 — это инструмент/библиотека представляет собой файл весом в 5,8 кб включающий в себя наиболее важные компоненты для вебдванольных сайтов, а именно: табы, всплывающие подсказки, плавные переходы, прокрутки, всплывающие окна и т.д.
Не буду тянуть резину, лучше, как говориться, один раз увидеть, чем сто раз услышать!
Переходим по ссылке и смотрим более 50 (!) демок:
Несколько понравившихся мне демонстраций. Очень рекомендую!
Маскируем фоновое изображение;
AJAX-табы с поддержкой истории переходов;
Неколько всплывающих окошек на одной странице.
+146
jQuery Ui.datetimepicker
1 мин
32KПривет! Сегодня решил сойти с ума! Конечно родной datepicker в ui это хорошо, но когда нужно и параметр «время» – данного виджета не хватает.
Внимание! Писал все быстро, инструкцию не пишу т.к. хватает этой.
Думаю разберетесь.
Демо тут.
Внимание! Писал все быстро, инструкцию не пишу т.к. хватает этой.
Думаю разберетесь.
Демо тут.
+40
PHPUnit и его Database Extension. Беглый взгляд
7 мин
7.3KПространное и многословное вступление
Уже чуть более года в проекте где я работаю ходят разговоры о модульном тестировании. Помимо разговоров неоднократно делались попытки превратить эти разговоры в жизнь. Все попытки на данный момент закончились тем, что ни один ранее написанный модульный тест не прогоняется в процессе разработки. Все они лежат мертвым кодом в недрах нашей системы. Представили такой себе постсоветский индастриэл? Торчащие колонны из земли, ржавая арматура на фоне хмурого неба:)
Некоторые тесты не используются ввиду того что тестируемый функционал так и не вышел в продакшн и на годы осел в файлах и директориях, а некоторые просто всех утомили тем хаосом который там был сотворен. Вся та произведенная нами на свет энтропия стала результатом нашей некомпетентности в модульном тестировании и не системного подхода к их внедрению. В наших тестах нарушены практически все принципы модульного тестирования. Начиная с того что они зависят один от другого заканчивая тем что в них можно увидеть разбухшие от подготовительной работы тестовые методы пестрящие sql-синтаксисом и многое другое… Плюс ко всему выше названному, почти все предыдущие попытки внедрения модульного тестирования были в большей мере самодеятельностью не особо санкционированной заказчиком, потому как только происходил затык тесты бросались и функционал начинал писаться в отрыве от тестов, и стоит ли говорить о том что к дописыванию тестов возвращаться не собирался никто.
+20
Перевод: 30 дней Windows Mobile — день второй (Winforms/С# vs WinAPI/C)
6 мин
1.6KПеревод
Итак, продолжаем перевод цикла статей 30 дней .NET [Windows Mobile]. Напоминаю, что для большего интереса переводятся сразу две статьи — из блога Криса Крафта (Windows Forms — C#) и Кристофера Фэрбейрна (WinAPI — C). На очереди день второй — управление bluetooth. Предыдущая статья из цикла —
http://habrahabr.ru/blogs/mobiledev/61248/.
http://habrahabr.ru/blogs/mobiledev/61248/.
+14
Пишем свой плагин для nagios
1 мин
9.7KВ своей повседневной работы я очень активно использую nagios. Как мне кажется, это очень мощная система для мониторинга серверов. Можно мониторить загрузку сервера, доступность разных серверов и тд и тп.
Для нагиоса есть очень много плагинов. Большое собрание плагинов находится по адресу nagiosplugins.org. Можно найти подходящий для себя, поставить и наслаждаться жизнью. Но что же делать если ни один плагин не устраивает вас по функционалу? Да ничего. Напишем свой. Это очень просто.
Итак начнем.
Первое что нам нужно знать для написания простейшего плагина это как работает нагиос на базовом уровне.
Он парсит свой конфиг, находит там команду запуска какого-либо плагина и запускает. Например, php -f checkServer.php. checkServer.php выполняет какую-то свою работу по проверке сервера и отдаёт в ответ статусное сообщение и код завершения работы.
Нагиос понимает 4 кода завершения работы
Статусное сообщение это любая информация которая выводится скриптом на стандартный вывод.
И так сам скрипт простейшего плагина под nagios(на php).
вот и все — подключаем в нагиос и он будет проверять существует ли файл или нет. Конечно же Вы можете организовать любую проверку бизнес логики своего проекта, вплоть до автоматического тестирования через phpunit.
Для нагиоса есть очень много плагинов. Большое собрание плагинов находится по адресу nagiosplugins.org. Можно найти подходящий для себя, поставить и наслаждаться жизнью. Но что же делать если ни один плагин не устраивает вас по функционалу? Да ничего. Напишем свой. Это очень просто.
Итак начнем.
Первое что нам нужно знать для написания простейшего плагина это как работает нагиос на базовом уровне.
Он парсит свой конфиг, находит там команду запуска какого-либо плагина и запускает. Например, php -f checkServer.php. checkServer.php выполняет какую-то свою работу по проверке сервера и отдаёт в ответ статусное сообщение и код завершения работы.
Нагиос понимает 4 кода завершения работы
- 0 — Все ок.
- 1 — Предупреждение
- 2 — Критическая ошибка
- 3 — Что-то неизвестное случилось
Статусное сообщение это любая информация которая выводится скриптом на стандартный вывод.
И так сам скрипт простейшего плагина под nagios(на php).
define( "STATUS_OK", 0 );
define( "STATUS_WARNING", 1 );
define( "STATUS_CRITICAL", 2 );
define( "STATUS_UNKNOWN", 3 );
$checkFilePath = 'file';
if(file_exists($checkFilePath))
{
echo 'File exists. Everything is ok';
exit(STATUS_OK);
}
echo 'File does not exists';
exit(STATUS_CRITICAL);
вот и все — подключаем в нагиос и он будет проверять существует ли файл или нет. Конечно же Вы можете организовать любую проверку бизнес логики своего проекта, вплоть до автоматического тестирования через phpunit.
+13
Что скрывает class Empty {}
3 мин
9KЭто заметка о методах, которые C++ создаёт автоматически, даже если вы их не создавали.
Для кого эта заметка? Надеюсь, что она будет интересна начинающим программистам на С++. А опытным программистам позволит лишний раз освежить и систематизировать свои знания.
Для кого эта заметка? Надеюсь, что она будет интересна начинающим программистам на С++. А опытным программистам позволит лишний раз освежить и систематизировать свои знания.
+51
Микропаттерны оптимизации в Javascript: декораторы функций debouncing и throttling
2 мин
58KДекораторы функций позволяют добавить дополнительное поведение функции, не изменяя ее. Сигнатура оригинальной и декорированной функции полностью совпадают.
+70
Конкурс от ASUS & Intel «Что ты думаешь о будущем?»
1 мин
4.7KПочти каждый день в Интернете появляются новые профессии, которых не существовало раньше. И для них требуются нестандартные, талантливые, современные люди. Сегодня нам нужны профессиональные блоггеры для ведения уникального и пока секретного социального проекта, который вот-вот перестанет быть секретным.
Как найти людей на должность, которой еще не было? С помощью конкурса «Что ты думаешь о будущем?».
Это первый конкурс из целой серии, организуемой Asus и Intel для того, чтобы найти лучших творческих людей Рунета, и дать им возможность получать ценные призы за быстрое и интересное освещение всех самых горячих новостей из мира hi-tech, за свежий взгляд на будущее.
Вас ждут три нетбука Asus Eee PC! Победители будут рассматриваться в качестве сотрудников редколлегии проекта.
Это новые возможности в новом мире. И даже если вы не пробовали ничего подобного, может стоит попробовать?
Просто напишите статью о технологиях, которые меняют нашу жизнь, так чтобы читатели вдохновились, удивились или даже разозлились, но не остались равнодушными.
Возможно, эта новая профессия возникла специально для Вас
Как найти людей на должность, которой еще не было? С помощью конкурса «Что ты думаешь о будущем?».
Это первый конкурс из целой серии, организуемой Asus и Intel для того, чтобы найти лучших творческих людей Рунета, и дать им возможность получать ценные призы за быстрое и интересное освещение всех самых горячих новостей из мира hi-tech, за свежий взгляд на будущее.
Вас ждут три нетбука Asus Eee PC! Победители будут рассматриваться в качестве сотрудников редколлегии проекта.
Это новые возможности в новом мире. И даже если вы не пробовали ничего подобного, может стоит попробовать?
Просто напишите статью о технологиях, которые меняют нашу жизнь, так чтобы читатели вдохновились, удивились или даже разозлились, но не остались равнодушными.
Возможно, эта новая профессия возникла специально для Вас
+7
Data URI [CSS] Sprites 1.1 — Автоматизация процесса сборки css спрайтов
2 мин
2.7KМногим профессиональным веб-разработчикам известны приемы оптимизации сайтов. Одним из способов оптимизации является использование CSS спрайтов. Этим же разработчикам известно, какие существуют трудности с формированием, сборкой и пересборкой стандартных спрайтов. В инете можно найти инструменты для автоматизации этого процесса.
+23
jQuery Timers
3 мин
64KПри проектировании интерфейсов пользователя когда-нибудь обязательно встанет задача использования таймеров, и в этой статье я хочу рассказать о замечательном плагине jQuery Timers, который значительно облегчит работу по созданию и применению таймеров в Ваших приложениях.
jQuery Timers — это высокоуровневая абстракция методов setTimeout и setInterval. Используя jQuery Timers, Вы сможете «прикреплять» таймеры к элементам непосредственно в Вашем коде и использовать еще некоторые возможности.
Как обычно, сначала посмотрим пример, а потом разберем исходный код.
Пример и исходный код скачать можно здесь
jQuery Timers — это высокоуровневая абстракция методов setTimeout и setInterval. Используя jQuery Timers, Вы сможете «прикреплять» таймеры к элементам непосредственно в Вашем коде и использовать еще некоторые возможности.
Как обычно, сначала посмотрим пример, а потом разберем исходный код.
Пример и исходный код скачать можно здесь
+53
jQuery ColorPicker — выбираем цвет.
3 мин
21KС удивлением обнаружил, что до сих пор не коснулся темы выбора цвета. Спешу исправить это недоразумение и расскажу о еще одном плагине к библиотеке jQuery — ColorPicker. Сразу хочу предупредить, плагин использует png-файлы, и в нашем любимом IE6 это аукается небольшими проблемами.
Как обычно, сначала демонстрация примеров, а уже потом будем разбираться, как это использовать.
Пример: x3k.name/habrahabr/jquery.colorpicker.html
Как обычно, сначала демонстрация примеров, а уже потом будем разбираться, как это использовать.
Пример: x3k.name/habrahabr/jquery.colorpicker.html
+14
Ribbon
1 мин
1.6KCodePlex радует новыми решениям. На этот раз Ribbon интерфейс на jQuery в стиле 2010 версии Microsoft Office.
+52
Реализация интерфейса ElementTraversal
8 мин
2.2KДостаточно много браузеров (Opera 9.6, Google Chrome 2, Safari 4, Firefox 3.5) обзавелись поддержкой весьма удобного интерфейса ElementTraversal, который позволяет перемещаться по DOM-дереву, игнорируя текстовые узлы. В этих браузерах для каждого элемента стал доступен следующий набор новых getter'ов:
- firstElementChild — первый дочерний элемент;
- lastElementChild — последний дочерний элемент;
- nextElementSibling — следующий соседний элемент;
- previousElementSibling — предыдущий соседний элемент;
- childElementCount — количество дочерних элементов.
+22
Шейдеры и немного магии
1 мин
1.1KПривет!
В последнее время я «проникся» идеей создания custom-эффектов в Silverlight 3 beta/WPF. В качестве упражнения решил сделать эффект Джинна на Silverlight. Эффект Джинна — это эффект сворачивающегося окошка в Mac OS:
Для правильной работы демки вам понадобится… Silverlight 3 beta — справа ссылка на установку необходимого рантайма. Итак, вот что из этого получилось: демо (потягайте зеленый квадратик-лампу, нажмите Help).
Для тех, кому интересно узнать, как создавать свои собственные эффекты, и что именно стоит за Genie, я написал этот пост.
Авось, кому-нибудь когда-нибудь да пригодится :).
Отличного программирования, друзья!
В последнее время я «проникся» идеей создания custom-эффектов в Silverlight 3 beta/WPF. В качестве упражнения решил сделать эффект Джинна на Silverlight. Эффект Джинна — это эффект сворачивающегося окошка в Mac OS:
Для правильной работы демки вам понадобится… Silverlight 3 beta — справа ссылка на установку необходимого рантайма. Итак, вот что из этого получилось: демо (потягайте зеленый квадратик-лампу, нажмите Help).
Для тех, кому интересно узнать, как создавать свои собственные эффекты, и что именно стоит за Genie, я написал этот пост.
Авось, кому-нибудь когда-нибудь да пригодится :).
Отличного программирования, друзья!
+15
phpThread: нити в PHP? Запросто
2 мин
2.2KЕсли вы хотите научиться писать многопоточные приложения на PHP или здорово упростить себе жизнь — статья для вас.
Раньше для этих целей я пользовался либо запуском несколько копий скрипта, либо же использовал pcntl на более низком уровне, чем хотелось бы. Это, а от части и Java-идеология работы с потоками, побудили меня к написанию пакета phpThread.
Раньше для этих целей я пользовался либо запуском несколько копий скрипта, либо же использовал pcntl на более низком уровне, чем хотелось бы. Это, а от части и Java-идеология работы с потоками, побудили меня к написанию пакета phpThread.
+47
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность