Как стать автором
Обновить
0
Vitaliy Popovych @vipterranread⁠-⁠only

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

Отправить сообщение

Книга «Создание микросервисов»

Время на прочтение6 мин
Количество просмотров35K
Привет, Хаброжители! У нас вышла новая книга Сэма Ньюмена.

image Книга посвящена программированию микросервисов — небольших автономных компонентов, позволяющих добиться модульности и отказоустойчивости любой программы. Теория микро-сервисов тесно связана с философией Unix, способствует улучшению архитектуры любых приложений, дает возможность избегать громоздкого и запутанного кода. Эта книга поможет читателю заново взглянуть на многие, казалось бы, трудноразрешимые проблемы, масшта-бировать любые проекты, ювелирно разрабатывать даже самые сложные системы.

Эта книга полна конкретных примеров использования микросервисов, собранных по всему миру, включая их применение в таких организациях, как Netflix, Amazon, Gilt и REA group, пришедших к мысли, что возросшая автономность этой архитектуры дает их командам огромные преимущества.

Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии38

Использование функций в PostgreSQL как параметризированных представлений

Время на прочтение6 мин
Количество просмотров42K

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

Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии1

Сколько котов на хабре?

Время на прочтение6 мин
Количество просмотров40K
Недавно я ехал на автобусе из Торонто в Нью-Йорк, снаружи автобуса было темно, внутри меня было немного портвейна, спать совершенно не хотелось, и я решил поразбираться с Deep Learning. Скачал Caffe, скормил ему пару картинкок, на которых правильно распознались мяч и банан. Захотелось распознать что-то более интересное, и я вспомнил, что где-то на жёстком диске у меня есть дамп хабрахабра, который я делал, когда проходил курс информационного поиска в ШАДе Яндекса.

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

Под хаброкатом можно прочитать чуть больше подробностей и посмотреть на всех котов.



Читать дальше →
Всего голосов 176: ↑164 и ↓12+152
Комментарии108

Lightweight Tables или практические советы при проектировании БД…

Время на прочтение9 мин
Количество просмотров22K
В данном топике хотелось бы поговорить о повышении производительности при работе с таблицами.

Тема не нова, но становится особенно актуальной, когда в базе наблюдается постоянный рост данных – таблицы становятся большими, а поиск и выборка по ним – медленной.

Как правило, это происходит из-за плохо спроектированной схемы – изначально не рассчитанной на оперирование большими объемами данных.

Чтобы рост данных в таблицах не приводил к падению производительности при работе с ними, рекомендуется взять на вооружение несколько правил при проектировании схемы.
Подробнее
Всего голосов 33: ↑29 и ↓4+25
Комментарии12

Конспекты лекций «Haskell как первый язык программирования». Часть1

Время на прочтение3 мин
Количество просмотров46K
image
Привет Habr! Сегодня я достал свои старые конспекты по курсу «Haskell как первый язык программирования» Сергея Михайловича Абрамова и попробую максимально доходчиво и с примерами рассказать об этом замечательном языке тем, кто с ним еще не знаком. Рассказ ориентирован на неподготовленного читателя. Так что, даже если вы впервые услышали слово Haskell…
добро пожаловать под кат.
Всего голосов 35: ↑30 и ↓5+25
Комментарии42

ARM-ы для самых маленьких

Время на прочтение8 мин
Количество просмотров205K


Пару дней назад я опубликовал и потом внезапно убрал в черновики статью о плане написать про создание своей ОС для архитектуры ARM. Я сделал это, потому что получил много интересных отзывов как на Хабре, так и в G+.

Сегодня я попробую подойти к вопросу с другой стороны, я буду рассказывать о том, как программировать микроконтроллеры ARM на нарастающих по сложности примерах, пока мы не напишем свою ОС или пока мне не надоест. А может, мы перепрыгнем на ковыряние в Contiki, TinyOS, ChibiOS или FreeRTOS, кто знает, их там столько много разных и интересных (а у TinyOS еще и свой язык программирования!).

Итак, почему ARM? Возиться с 8-битными микроконтроллерами хотя и интересно, но скоро надоедает. Кроме того, средства разработки под ARM обкатаны долгим опытом и намного приятнее в работе. При этом, начать мигать светодиодами на каком-то «evaluation board» так же просто, как и на Arduino.

Читать дальше →
Всего голосов 129: ↑124 и ↓5+119
Комментарии66

Инфраструктура и жизненный цикл разработки веб-проекта

Время на прочтение11 мин
Количество просмотров57K
Когда проект маленький, особых проблем с ним не возникает. Список задач можно вести в текстовом файле (TODO), систему контроля версий, по большому счёту, можно и не использовать, для раскладки файлов на живой сервер их можно просто скопировать (cp/scp/rsync) в нужную директорию, а ошибки всегда можно посмотреть в лог-файле. Глупо было бы, например, для простенького сервиса с двумя скриптами и тремя посетителями в день поднимать полноценную систему управления конфигурациями серверов.

С ростом проекта требования растут. Становится неудобно держать в TODO-файле несколько десятков задач и багов: хочется приоритетов, комментариев, ссылок. Появляется необходимость в системе контроля версий, специальных скриптах/систем для раскладки кода на сервер, системе мониторинга. Ситуация усугубляется, когда над проектом работает несколько человек, а уж когда проект разрастается до нескольких серверов, появляется полноценная инфраструктура («комплекс взаимосвязанных обслуживающих структур или объектов, составляющих и/или обеспечивающих основу функционирования системы», Wikipedia).

На примере нашего сервиса "Календарь Mail.ru" я хочу рассказать о типичной инфраструктуре и жизненном цикле разработки среднего по размерам веб-проекта в крупной интернет-компании.

Срыв покровов
Всего голосов 102: ↑93 и ↓9+84
Комментарии46

Методика формирования измерения с атрибутами типа 1 и 2

Время на прочтение7 мин
Количество просмотров5.5K
Мы работаем над DWH в телекоммуникациях, поэтому пример, который я рассматриваю, называется «Абонент». Принцип универсален и это мог быть «Клиент» или «Пациент» — в зависимости от отрасли. Я надеюсь методику найдут полезной разработчики DWH из разных отраслей.

Если Вы не понимаете, что такое DWH, измерения и факты, я рекомендую прочитать книгу Ральфа Кимбалла «Dimensional Modeling». Речь идёт о базе данных для аналитики и консолидированной отчетности предприятия, конкретно о формировании и актуализации измерений — таблиц, которые хранят атрибуты (поля) для отбора (WHERE) в будущих запросах.
Прочитать методику с примерами
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

Работа с данными из связанных таблиц в ASP.NET MVC или разработка Lookup компонента

Время на прочтение27 мин
Количество просмотров29K
Разработка любого бизнес приложения так или иначе связана с обработкой определенного количества данных, выстраиванием связей между этими данными, а так же их удобным представлением. В данной статье мы рассмотрим работу с межтабличным взаимодействием в ASP.net MVC, а так же возможности по визуализации этого взаимодействия, попробуем разработать свой компонент, с одной стороны позволяющий удобно выбирать нужные данные, с другой легко конфигурироваться. Будем использовать JqGrid, для реализации поиска, сортировки и выбора связанных данных. Коснемся формирования динамических предикатов, посмотрим как можно использовать метаданные в html helper и в заключении рассмотрим уже существующие компоненты этого класса.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии8

Руководство по разработке модулей расширений на C# для Visual Studio 2005-2012 и Atmel Studio

Время на прочтение86 мин
Количество просмотров42K
Плагины для C#

Аннотация


Около года назад мы опубликовали в блоге цикл статей о разработке плагинов для Visual Studio на языке C#. Сейчас мы переработали эти материалы, добавили новые разделы и предлагаем вашему вниманию новый вариант руководства.
Читать дальше →
Всего голосов 55: ↑50 и ↓5+45
Комментарии6

Python for Programmers

Время на прочтение1 мин
Количество просмотров31K
Alex Martelli Многие знакомы с выступлением Алекса Мартелли (Alex Martelli) на Google Tech Talk под названием Python for Programmers (слайды) — в нём он чётко и лаконично рассказывает основы Питона для тех, кто уже умеет программировать, например на C, С++ или Java. По его презентации я сам учил Питон четыре года назад, перед тем как начать использовать его в преподавании программирования на матмехе СПбГУ.

Сегодня хочу представить вам интерактивный вариант этой презентации — онлайн мини-курс Python for Programmers, созданный и опубликованный под лицензией Creative Commons с разрешения Алекса. Мы добавили к его презентации интерактивных упражнений, обновили материал с Python 2.5 до Python 3.3, добавили информацию по актуальным библиотекам и разнице между 2 и 3 версиями Питона.
Читать дальше →
Всего голосов 81: ↑75 и ↓6+69
Комментарии9

Разработка ПО: факты против мифов

Время на прочтение3 мин
Количество просмотров69K
Мифы – это попытки осмысления картины окружающего мира, присущие первобытной культуре.

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

То, что производят программисты, нематериально – это brainware, результат коллективного мыслительного процесса проектной команды, материализованный на одном из языков программирования. Программной инженерии чуть больше полувека. Если сравнивать с материальным производством, то необходимо констатировать, что разработка ПО пребывает еще в первобытном состоянии.

За короткую историю в отрасли сложилось большое количество мифов, суеверий и религиозных заблуждения. Эти мифы, суеверия и заблуждения, порой очень похожи на правду. Они получили широкое распространение и пагубно влияют на руководителей, которые никогда сами профессионально не разрабатывали ПО. Следствием этого является применение неадекватных методов и подходов в управлении программистами, что гарантированно приводит проект к провалу.

Вот наиболее распространенные мифы и факты, которые их опровергают.
Читать дальше →
Всего голосов 150: ↑135 и ↓15+120
Комментарии124

Темное программирование

Время на прочтение7 мин
Количество просмотров139K
imageПредлагаю перейти на сторону зла, на темную сторону программирования. Ситхи сильнее джедаев. И печенек хватит на всех. Предупреждаю, прежде чем начнете читать далее. Характер при переходе на темную сторону портится.
Прошу под кат
Читать дальше →
Всего голосов 257: ↑203 и ↓54+149
Комментарии212

Всё, что вы хотели знать о динамическом программировании, но боялись спросить

Время на прочтение12 мин
Количество просмотров241K
Я был крайне удивлён, найдя мало статей про динамическое программирование (далее просто динамика) на хабре. Мне всегда казалось, что эта парадигма довольно сильно распространена, в том числе и за пределами олимпиад по программированию. Поэтому я постараюсь закрыть этот пробел своей статьёй.

# Весь код в статье написан на языке Python

Основы


Пожалуй, лучшее описание динамики в одно предложение, которое я когда либо слышал:

Динамическое программирование — это когда у нас есть задача, которую непонятно как решать, и мы разбиваем ее на меньшие задачи, которые тоже непонятно как решать. (с) А. Кумок.
Читать дальше →
Всего голосов 110: ↑100 и ↓10+90
Комментарии33

Книга «Внедрение зависимостей в .NET» уже в продаже!

Время на прочтение1 мин
Количество просмотров12K
Всем привет!
У нас хорошая новость! Уже в продаже книга «Внедрение зависимостей в .NET».



Аннотация:


Внедрение зависимостей позволяет уменьшить сильное связывание между программными компонентами. Вместо жесткого кодирования зависимостей (например, драйвера какой-либо базы данных), внедряется список сервисов, в которых может нуждаться компонент. После этого сервисы подключаются третьей стороной. Такой подход обеспечивает лучшее управление будущими изменениями и решение проблем в разрабатываемом программном обеспечении. Данная книга рассказывает о внедрении зависимостей и является практическим руководством по их применению в приложениях .NET. Издание содержит основные шаблоны внедрения зависимостей, написанные на «чистом» C#. Кроме того, рассмотрены способы интеграции внедрений зависимостей со стандартными технологиями Microsoft, такими как ASP.NET MVC, а также примеры применения фреймворков StructureMap, Castle Windsor и Unity.
Читать дальше →
Всего голосов 25: ↑20 и ↓5+15
Комментарии24

.NET 4.5 — обновление на месте .NET 4.0

Время на прочтение5 мин
Количество просмотров33K
Вместе с бета версиями VS 2011 и Windows 8 многие люди будут устанавливать, и разбираться с .NET 4.5. В .NET 4.5 добавлено много новых усовершенствований, которые являются достаточно прозрачными, но важно понять, как с точки зрения CLR она работает на вашей машине.

Когда .NET 4.5 устанавливается она, фактически, заменяет .NET 4.0 на вашей машине. .NET 4.0 перезаписывается новой версией .NET 4.5, что в соответствии со словами Microsoft гарантирует 100%-ую совместимость. 100% совместимость звучит привлекательно, но все мы знаем, что добиться такого результата достаточно сложно. Но есть вещь гораздо более интересная, чем обратная совместимость, которая делает ситуацию с разворачиванием .NET 4.5 неудобной в лучшем и запутанной в худшем случае.
Читать дальше →
Всего голосов 18: ↑12 и ↓6+6
Комментарии10

.NET и паттерны проектирования

Время на прочтение8 мин
Количество просмотров159K
Шаблон проектирования или паттерн — повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.

Кажется, это определение мы слышали тысячу раз… Помимо знания терминов и паттернов интересно знать, как они применяются в реальных проектах.

В статье я рассмотрю несколько наиболее популярных паттернов используемых в .NET. Некоторые из них глубоко интегрированы в инфраструктуру .NET, в то время как другие просто применяются при проектировании базовых классов в BCL.

Паттернам проектирования посвящен не один десяток книг, но одна книга стоит особняком и это знаменитая книга «Банды четырех». Поэтому для большего понимания ситуации я буду приводить небольшое описание из этой книги.
Читать дальше →
Всего голосов 59: ↑40 и ↓19+21
Комментарии6

foreach or for that is the question

Время на прочтение5 мин
Количество просмотров55K
Вопрос о выборе цикла for/foreach стар, как мир. Все мы слышали, что foreach работает медленнее for-а. Но не все знаем почему… А вообще так ли оно?

Когда я начинал изучать .NET, один человек сказал мне, что foreach работает в 2 раза медленнее for-а, без каких-либо на то обоснований, и я принял это как должное. Теперь, когда чьих-то слов мне мало, я решил написать эту статью.

В этой статье я исследую производительность циклов, а так же уточню некоторые нюансы.

Итак, поехали!
Читать дальше →
Всего голосов 55: ↑45 и ↓10+35
Комментарии27

Наглядный жизненный урок

Время на прочтение6 мин
Количество просмотров103K

Когда я переучивал на программистов своих друзей, то заметил интересную вещь. Люди, которые уже где-то работали, переучивались очень охотно. И чем больше был их стаж вне ИТ, тем усерднее они занимались. Те же, кто был еще студентами, иногда откровенно халявили.

Поговорив и с теми и с другими, я заметил, что студенты до последнего верят в «волшебное трудоустройство», которое ждет их сразу после окончания вуза.

Далее, для тех, кто еще не снял розовые очки — гайд по реальному миру.
Добро пожаловать в реальный мир
Всего голосов 277: ↑242 и ↓35+207
Комментарии212

Build 2013 для XAML/C# разработчиков. Обновления в Windows 8.1 и обзор полезных докладов для XAML/C# разработчиков

Время на прочтение5 мин
Количество просмотров13K


В этом коротком обзоре я предполагаю рассмотреть ключевые нововведения и улучшения в Windows 8.1 для XAML/C# разработчика. В завершение я приведу подборку докладов с конференции Build 2013, полезных для XAML/C# разработчиков.
Читать дальше →
Всего голосов 40: ↑30 и ↓10+20
Комментарии15
1

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность