Search
Write a publication
Pull to refresh
0
0
Юрий @Gilga

Пользователь

Send message

IoC, DI, IoC-контейнер — Просто о простом

Reading time4 min
Views477K
Думаю сейчас слова IoC, DI, IoC-контейнер, как минимум у многих на слуху. Одни этим активно пользуются, другие пытаются понять, что же это за модные веяния.

На данный момент, на эту тему уже довольно сказано, написано, в том числе и на хабре, но как раз из-за обилия информации сложно найти действительно полезный контент. Кроме того, данные понятия часто смешивают и/или путают. Проанализировав множества материалов я решил изложить вам свое видение предмета.
Читать дальше →

Миграция версий БД MSSQL

Reading time6 min
Views13K


Приветствую!

В данном посте я хочу поделить мыслями на тему поддержки и миграции изменений в базах данных и MSSQL в частности, а также своим решением.

Проблема

Как правило, в более-менее серьезных проектах, есть несколько независимых окружений (environment).
Разработчик использует для написания и отлаживания кода системы свою базу, потом изменения кода и схемы базы данных перемещаются на окружение тестировщика, после чего переносятся на staging и production.
Опять же, в более-менее серьезных проектах, разработчиков и тестировщиков больше чем один, также и с их окружением.
Соответственно должен быть организован процесс миграции изменений не только кода, но и базы данных, причем желательно чтобы этот процесс был удобен и надежен.
Подробности под катом.
Читать дальше →

Экстремальное программирование, знакомство с Behavior Driven Development и RSpec

Reading time4 min
Views40K

Теория


Для начала, давайте разберемся, что же такое Behavior Driven Development(в дальнейшем BDD) и чем данная техника отличается от Test-Driven Development(в дальнейшем TDD)

Разрабо́тка че́рез тести́рование (англ. test-driven development) — техника программирования, при которой модульные тесты для программы или её фрагмента пишутся до самой программы (англ. test-first development) и, по существу, управляют её разработкой. Является одной из основных практик экстремального программирования.
Читать дальше →

Счет на оплату. Рабочее приложение на sails.js, ractive.js, Backbone.js

Reading time20 min
Views35K


Доброго дня, на выходных от скуки и отсутствия работы решил себя развлечь написанием небольшого приложения, которое сгодится в качестве учебного метариала для изучения возможностей двух замечательных библиотек — ractive.js и sails.js

Постановка задачи

По работе часто приходится после выполенения очередного задания (я — фрилансер) выставлять заказчику счет на оплату услуг. Тем более если имеешь дело с юридическими лицами. Для этого я использовал простой html-шаблон, в который данные заносил руками, исправляя очередные …

Выглядит примерно так
Читать дальше →

Так ли прост строковый оператор +

Reading time6 min
Views24K

Введение


Строковый тип данных является одним из фундаментальных типов, наряду с числовыми (int, long, double) и логическим (bool). Тяжело себе представить хоть, сколько либо полезную программу, не использующую данный тип.

На платформе .NET строковый тип представлен в виде неизменяемого класса String. Кроме того, он является сильно интегрированным в общеязыковую среду CLR, а так же имеет поддержку со стороны компилятора языка C#.

В этой статье я бы хотел поговорить о конкатенации, операции, которая выполняется над строками так же часто, как операция сложения над числами. Казалось бы, о чем тут можно говорить, ведь все мы знаем о строковом операторе +, но как оказалось, есть у него свои тонкости.
Читать дальше →

Обновленный облачный сервис Azure Web Sites для размещения сайтов PHP, Java, .NET, Node.js и Python

Reading time10 min
Views17K
Это статья является дополнением и продолжением статьи Единая облачная PaaS-платформа для ASP.NET, PHP, Node.js и Python. С момента написания предыдущего материала сервис Azure Web Sites значительно обновился и его возможности расширились сразу во многих направлениях. Об этих изменениях и пойдет речь в данной статье.



Далее рассматриваются следующие функциональные возможности:

  • поддержка проектов на Java;
  • интеграция с онлайн-редактором Visual Studio Online “Monaco”;
  • функция создания резервных копий сайта;
  • дополнительные развертывания сайтов, стейджинг и другие окружения;   
  • выполнение фоновых задач на базе скриптов, кода python, .net, php или node.js;
  • удаленная отладка размещенных сайтов;
  • поддержка wildcard доменов и бесплатные SSL;
  • функция AlwaysOn и поддержка web-сокетов;
  • администрирование, Kudu, доступ по IP, управление с помощью Azure Management Libraries;   
  • новое ценообразование Azure Web Sites.

Рассмотрим каждую из новых функций более подробно.
Читать дальше →

Fody и его плагины

Reading time8 min
Views30K
image
С выходом Roslyn разговоры о том, что скоро кода можно писать будет меньше вспыхнули с новой силой. Сегодня я расскажу немного о другом подходе как писать меньше кода и соответственно делать меньше ошибок — расскажу о Fody. На хабре упоминание нашёл только вскользь в рамках решения како-то проблемы. Для того, чтобы заинтересовать читателя, ещё не решившего стоит ли тратить своё время на данный текст отмечу, что популярный NotifyPropertyWeaver переехал на Fody и с помощью Fody можно делать всякие там классные AOP.
Читать дальше →

Enterprise Library 5

Reading time1 min
Views8.2K
imageЗамечательный набор инструментов от команды patterns & practices – Enterprise Library выпущен в пятой версии. Для тех, что не знает, Enterprise Library — это архитектурные блоки, которые реализуют наиболее частые задачи при разработке программного обеспечения. Примеры таких задач: кеширование, логирование, валидация данных. Наверное, самой популярной частью библиотеки является IoC-контейнер Unity.

Из названия Enterprise Library понятно, что библиотека построена самым серьезным образом и может использоваться для самых ответственных задач. Для каждого блока могут быть установлены системные счетчики производительности.

Enterprise Library — это open source проект под свободной лицензией MSPL. Исходные коды поставляются вместе с библиотекой либо их можно скачать отдельно.

Для удобного конфигурирования всех параметров каждого блока, с библиотекой поставляется удобный инструмент Enterprise Library Configuration.

Enterprise Library 5 содержит следующие блоки: Caching Block, Cryptography Block, Data Access Block, Exception Handling Block, Logging Block, Policy Injection Block, Security Block, Validation Block, Unity.

Кроме того, коммюнити-проект EntLinb Contrib содержит еще ряд дополнительных блоков и расширений.

Ссылки:
загрузить Enterprise Library 5;
страница проекта на codeplex.com;
документация к пятому релизу;
release notes к пятому релизу.

Реализация слоя доступа к данным на Entity Framework Code First

Reading time11 min
Views30K


Приветствую!

В данном топике я хочу поговорить о слое доступа к данным (Data Access Level) по отношению к Entity Framework-у, далее EF, о том какие задачи стояли и как я их решил. Весь представленный код из поста, а также прикрепленный демо проект публикуется под либеральной лицензией MIT, то есть вы можете использовать код как вам угодно.
Сразу хочу подчеркнуть, что весь представленный код представляет собой законченное решение и используется более 2-х лет в проекте для достаточно крупной российский компании, но тем не менее не подходит для высоконагруженных систем.

Подробности под катом.
Читать дальше →

Джон Резиг: Пишите код каждый день

Reading time5 min
Views130K
Прошлой осенью работа над моими побочными проектами зашла в тупик: я практически не продвигался вперёд и у меня никак не получалось делать больше, не принося в жертву свою основную работу в Khan Academy.

В моей организации работы обнаружилось несколько серьёзных проблем. В основном я работал по выходным и иногда по вечерам. Как оказалось, это не самая лучшая для меня стратегия. Необходимость сделать за выходные как можно больше и лучше сильно давила на меня, а если мне не удавалось доделать задуманное, это ощущалось как провал. Проблему усугубляло и то, что не было никакой гарантии, что очередные выходные будут свободны, и даже если так — не факт, что я захочу кодить с утра до вечера все эти два дня — надо ведь иногда как-то развлечься или просто расслабиться.

Кроме того, недельный перерыв — это слишком много, очень легко забыть, над чем ты работал и на чём остановился, даже если делать заметки. А уж если в выходные поработать не удавалось — то перерыв растягивался на две недели. Такие многонедельные переключения контекста могут быть смертельными — многие мои проекты погибли, не родившись, от такого недостатка внимания.

Услышав о невероятном эксперименте Дженнифер Девальт, которая решила изучить программирование, создав 180 сайтов за 180 дней, я отважился испробовать сходную тактику: работать над побочными проектами каждый день.

image
Иллюстрация Стивена Резига
Читать дальше →

Настрой свой Google

Reading time2 min
Views25K
После написания этого поста, меня заинтересовали параметры поиска которые можно использовать, для удобной работы.
Задавшись этим вопросом, в рунете я более менее полной информации не нашел.
Но! Оказывается Google уже давно и для всех, все показал.

Читать дальше →

Музыка для бабушки от внука-программиста

Reading time8 min
Views33K
Моя бабушка с юности привыкла слушать радио, но, к сожалению, сейчас по радио можно услышать далеко не лучшие композиции и передачи. Радио можно заменить любимой музыкой, но, увы, у моей бабушки сложности в привыкании к технике.
Лучший подарок – подарок, сделанный своими руками, поэтому я, как любящий внук и программист под мобильные платформы, принялся думать, как обеспечить бабушке простой доступ к её любимой музыке.

Сразу скажу, что успеха я достиг, а вот тем, кому интересен процесс – прошу под кат.

main
Читать дальше →

Fitbit One — трекер физической активности

Reading time4 min
Views62K
image
На Хабре уже были опубликованы обзоры некоторых трекеров физической активности: Nike Fuelband SE и Shine. Пришел черед немного рассказать про Fitbit One.

Трекер Fitbit One фиксирует, собирает и передает в облачный сервис:
  • количество сожженых калорий,
  • сделанных шагов,
  • пройденных этажей,
  • пройденные расстояния,
  • продолжительность и качество сна.
  • Функция беззвучный будильник в заданное время.


Я пользуюсь Fitbit One с декабря 2013 года. За это время он:
  • был около двух десятков раз уронен на пол с высоты в в полтора метра,
  • трижды потерян и найдет в гостиницах и кафе,
  • постиран в кармане брюк (в чехле-прищепке) один раз.
  • Не менее трех раз я умудрился наступить на него ногой в ботинке.
  • Один раз я уронил трекер в лифтовую шахту, и он пролетел 13 этажей в свободном падении.
  • После этого он пролежал двое суток в луже машинной смазки.


Не смотря на то, что мой Fitbit One прошел огонь, воду и Олимпийские игры, все это, трекер продолжает работать как ни в чем не бывало, и на нем практически ни царапинки.

Интересно? Добро пожаловать под кат.


UPD Утерянные трекеры фирмы Fitbit заменяют бесплатно!
трафик 10 мб

Исследование рынка труда веб-разработчиков

Reading time5 min
Views50K
Привет, Хабр! Мы анонсируем результаты исследования, проведенного бизнес-школой РИК при экспертной поддержке Ruward по ситуации на кадровом рынке веб-разработчиков в России.

В рамках исследования был проведен анализ почти 400 анкет представителей компаний из сегмента веб-разработок, а также проведен мониторинг популярности вакансий на крупных порталах по трудоустройству.

Мы уже не первый год регулярно слышим от менеджеров и директоров вопрос: «где взять программистов?». Поэтому мы решили взяться за дело и приступить к решению этого вопроса. Для начала нам пришлось разобраться, какие вообще программисты нужны — и в каких количествах — именно для этого мы запустили открытый опрос в ноябре 2013 года.

Методика проведения исследования: онлайн-анкетирование представителей компаний из сегмента веб-разработок, собственный анализ профильных открытых вакансий на крупных порталах по трудоустройству.

По итогам четырех месяцев исследования, разбавленных месяцем новогодних каникул и месяцем олимпиады, мы, наконец-то, публикуем результаты.

Тысячи их


image
Читать дальше →

Простой сайт с возможностью авторизации на node.js

Reading time3 min
Views93K
В этой статье я попробую рассказать о том, как с помощью node.js и connect сделать простой сайт с авторизацией. Т.е. такой, где часть контента доступна всем, а часть — только зарегистрированным пользователям. Поскольку express.js основан на connect, практически все, что здесь написано, относится и к нему тоже.
Допустим, что вы уже знаете, что такое node.js и как с ним работать. Также допустим, что у вас уже есть простенький сайт с основной страницей и парой дополнительных. Вот здесь — исходники такого сайта, пример для этой статьи.
Читать дальше →

Новая функциональность Impress Application Server для Node.js

Reading time3 min
Views7.7K
Предоставляю вам краткий отчет об изменениях в Impress AS за последние несколько месяцев. Во-первых мы не пошли путем фреймворков, а ринулись в сферу серверов приложений, обеспечивая масштабирование в двух направлениях: (1) много приложений на одном сервере и (2) много серверов для одного приложения. Первое направление требовало развивать сендбоксинг (экранирования приложений друг от друга и от среды запуска), а второе направление предусматривало переход от кластера к многосерверному клауду. Тут нужно уточнить терминологию, в ноде кластером (cluster) принято называть способ многопоточного запуска приложений в режиме master/worker, поэтому, многосерверную инфраструктуру (с кластером на каждом сервере) мы будем называть клаудом (или прикладным облаком). Это облако ни как не связано с виртуализацией операционной системы, как это обычно ложно связывается в понимании широких масс. Облачные технологии совсем не обязаны быть организованы на базе технологий виртуализации, но другого простого способа масштабирования сейчас для массового потребления нет. Облачная виртуализация не гарантирует бесконечной виртуализации прикладных приложений, и всем разработчикам крупных высоконагруженных систем известно, что для сотен тысяч и десятков миллионов пользователей нужно создавать специальные прикладные решения, обеспечивающие прикладную виртуализацию, размазывающую задачи по серверам и объединяю их в одну, распределенно функционирующую, но централизовано управляемую систему. Именно эту задачу мы и взялись решать в Impress, надеюсь я отстоял терминологию и могу переходить к подробностям.
Читать дальше →

Unit тесты на практике

Reading time12 min
Views147K
В последнее время появилось и продолжает появляться достаточно много публикаций на тему разработки через тестирование. Тема достаточно интересная и стоит того, чтобы посвятить её исследованию какую-то часть своего времени. В нашей команде мы используем модульное тестирование уже на протяжении года. В этой статье я хочу рассказать о том, что получилось и какой опыт в итоге мы приобрели.

Сразу оговорюсь, что примеры приводятся применительно к языку C# и платформе .NET. Соответственно, в других языках/платформах подходы и реализации могут отличаться.

Итак…
Читать дальше →

Три правила проектирования интерфейсов с высокоскоростным пользовательским взаимодействием

Reading time9 min
Views40K
Эта запись о том, как увеличить скорость навигации и взаимодействия пользователя с интерфейсом, не прибегая к оптимизациям вычислений и рендеринга. Рекомендации касаются приложений, где сервер используется только для получения данных, а вся логика интерфейса находится в самом приложении. Эта запись о преимуществе клиентских приложений над приложениями с плохо разделённой логикой, представлением и данными.

Особенно ценными рекомендации могут оказаться для тех, кому приходиться вести разработку или проектировать интерфейс, когда данные от сервера приходят не слишком быстро, а обращаться к нему чересчур часто нельзя.

Правила организации высокоскоростного взаимодействия пользователя с приложением можно сформулировать следующим образом:

  1. Вычисления не должны блокировать взаимодействие с интерфейсом и его рендеринг — пользователь всегда должен иметь возможность указать на фокус своих интересов.
  2. Страница объекта, к которому обратился пользователь, должна отображаться мгновенно, не дожидаясь загрузки данных, в которых нуждается объект.
  3. Запросы в сеть не должны уходить одной большой группой, не должны отправляться сразу; должны откладываться на небольшое время, складываться и приоритезироваться в случае необходимости.


Изложенная в этой заметке информация — это мой практический опыт проектирования и разработки интерфейса моего приложения для поиска и прослушивания музыки seesu.me. Приложения, в котором гармонично комбинируются огромные пласты данных из разрозненных сервисов, таких как last.fm, вконтакте, ex.fm, hypem.com, soundcloud.com, discogs.com, youtube.com


Читать дальше →

Управление устройством USB HID на Windows 7

Reading time9 min
Views93K
В статье сделана попытка предоставить пошаговую инструкцию — как соединить самодельное устройство USB HID на микроконтроллере AVR и компьютер с операционной системой Windows 7 x64, чтобы обмениваться данными и управлять портами микроконтроллера. Пример приложения управляет через USB ножкой порта микроконтроллера (к ней подключен индикационный светодиод). Есть возможность также прочитать состояние состояние светодиода — потушен он или горит. Топик предназначен для новичков, поэтому большая просьба к знатокам программирования — приберегите тухлые яйца и гнилые помидоры иронические комментарии для более удобного случая.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity