Pull to refresh
0
0

Ведущий разработчик

Send message

«А что если», Event Sourcing

Reading time4 min
Views70K
Наверное, про Event Sourcing слышал каждый, кто хоть раз пересекался с темой CQRS и DDD. Это подход хранения данных, при котором вместо конечного результата храниться череда записей о событиях происшедших с некоторой сущностью. На сайте Мартина Фаулера есть подробное описание, а мы же остановимся на фундаменте, основных «печенюшках», а также проблемах в его применении.
Читать дальше →
Total votes 37: ↑32 and ↓5+27
Comments106

Каким должно быть ТЗ на Корпоративную ИС?

Reading time5 min
Views26K
Представьте, что у вас есть корпоративная информационная система в развитие которой вкладывается 200+ млн. рублей ежегодно. С момента внедрения документация на систему превратилась из одного Технического задания на 600 страниц в 300 Технических заданий, у каждого из которых есть дополнение в количестве от 1 до 10 штук, и теперь она занимает объем 3 офисных шкафов и это ещё не конец… Фабрика по производству ПО исправно и ритмично (с периодичностью в месяц) выпускает обновление системы и документирует изменения.

image

Ребята, которые разрабатывали 34-й ГОСТ явно не рассчитывали на то, что дело может принять такой оборот. Да и книги по гибким методологиям разработки тоже не дают каких-то рекомендаций как с этим быть.

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

  • Как в этом объеме документов найти те, что описывают работу определенного функционала системы?
  • Как из 20 найденных документов, описывающих Как дорабатывали функционал за последние 5 лет, понять его устройство сейчас?
  • Как за списком требований «сделать, добавить…» рассмотреть заложенную бизнес-логику?
Total votes 20: ↑15 and ↓5+10
Comments27

Сравнение аналитических in-memory баз данных

Reading time19 min
Views41K
В последние два месяца лета в управлении хранилищ данных (Data Warehouse, DWH) Тинькофф Банка появилась новая тема для кухонных споров.

Всё это время мы проводили масштабное тестирование нескольких in-memory СУБД. Любой разговор с администраторами DWH в это время можно было начать с фразы «Ну как, кто лидирует?», и не прогадать. В ответ люди получали длинную и очень эмоциональную тираду о сложностях тестирования, премудростях общения с доселе неизвестными вендорами и недостатках отдельных испытуемых.

Подробности, результаты и некое подобие выводов из тестирования — под катом.
Читать дальше →
Total votes 47: ↑44 and ↓3+41
Comments56

LINQ: Динамическое построение фильтров запросов

Reading time2 min
Views9.2K

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


Само собой, расширять семантики методов API контроллеров до бесконечной простыни было бы абсолютно глупо непрактично, поэтому нам требовалось универсальное решение для всех наших таблиц. Найти его помогли рефлексия и деревья выражений.


Читать дальше →
Total votes 25: ↑21 and ↓4+17
Comments21

Такое не забывается — Oracle Database In-Memory

Reading time11 min
Views66K
Объемы баз данных и сложность запросов к ним всегда росли быстрее, чем скорость их обработки. Поэтому лучшие умы человечества много лет думали о том, что произойдет, когда оперативной памяти станет столько, что можно будет всю базу данных взять и поместить в кэш оперативной памяти.

В последние годы логический момент для этого, казалось бы, настал. Стоимость оперативной памяти падала, падала, и упала совсем. Еще в начале века казалось, что 256 МБ памяти для сервера — это нормально, и даже много. Сегодня нас не удивишь параметром 256 ГБ оперативной памяти на сервере начального уровня, а с промышленными серверами вообще настал полный коммунизм, любой благородный дон может набрать хоть терабайт оперативной памяти на сервере, если захочет.
Читать дальше →
Total votes 24: ↑22 and ↓2+20
Comments28

Oracle Database In-Memory

Reading time3 min
Views11K
Данная статья подготовлена Алексеем Струченко, начальником отдела оптимизации СУБД и приложений компании «Инфосистемы Джет»

Вышедшая в июле 2014 года опция Database In-Memory является самой ожидаемой и самой обсуждаемой инновацией Oracle в семействе продуктов Oracle Database. За последние несколько месяцев сотрудники компании Oracle регулярно знакомили российское оракловое сообщество с особенностями новой опции.

На Oracle Day 2014 в Москве мне выпала честь дополнить теоретическую презентацию Игоря Мельникова (Oracle) по Database In-Memory практической демонстрацией. Эту демонстрацию в полном объеме показать не удалось – оказалось не так-то просто подключить проектор к ноутбуку, соединенному с демонстрационной базой. Поэтому я решил воспользоваться трибуной Habrahabr и все-таки донести суть демонстрации Database In-Memory до сообщества.
Читать дальше →
Total votes 16: ↑11 and ↓5+6
Comments1

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

Reading time12 min
Views39K
Возможно, вам будет интересна история малого бизнеса на конкретном примере магазина во Владимире. Потому что это аккурат тот размер, когда процессы, модель и прочее важны менее, чем умение импровизировать в рамках здравого смысла. Как и всё в малом бизнесе. Ну и развеиваются многие иллюзии.



Наша «старая гвардия», владельцы франшиз во Владивостоке, Воронеже, Нижнем Новгороде, Новосибирске — они начинали почти с нуля, когда слово «Мосигра» ещё не было на слуху. Это люди, которые уже имели огромный опыт работы, и твёрдо знали, что и как надо делать с помещением, как реагировать на бесконечные звонки рекламщиков и как считать деньги. У них воровали в магазинах (в том числе сами сотрудники), они ссорились с конкурентами и задавливали их, они теряли деньги на неэффективной рекламе, сами подменяли заболевших аниматоров и продавцов, часто сами разбирались в отчётности и юридических вопросах. И иногда брали джек-пот на праздники.

Владимиру всё это только предстояло.
Читать дальше →
Total votes 141: ↑136 and ↓5+131
Comments66

.NET и CLR: Взгляд изнутри

Reading time12 min
Views20K


Что такое C#? Объектно-ориентированный эсперанто со сборщиком мусора, функциональными примочками и бесплатным массажем после обеда. Он позволяет писать Действительно Важные Вещи, скрывая от нас ненужные детали работы с памятью, процессором и прочее низкоуровневое программирование. Естественно, находятся люди с повышенным уровнем любопытства в крови, желающие знать как же .NET работает на самом деле (само собой, они изучают .NET исключительно ради повышения производительности разрабатываемого софта). Сегодня с нами разговаривают:
Читать дальше →
Total votes 37: ↑32 and ↓5+27
Comments18

10 лучших бесплатных приложений для SharePoint из Microsoft Store

Reading time3 min
Views9.2K

Приложения являются вашими помощниками в течение дня – они удобны и просты в использовании на ваших айфонах, смартфонах, работающих на ОС Android, и в SharePoint. Да, вы все верно прочитали – в SharePoint. В популярном инструменте для совместной работы представлен широкий спектр приложений или надстроек, которые могут помочь вам добавить новые функции или приложения в существующую страницу SharePoint. В то время как все больше и больше специалистов в области ИТ отдают предпочтение этой программе, в частности благодаря тому, что SharePoint можно легко настроить под индивидуальные потребности компаний, разработка новых функций все еще требует времени и навыков. Приложение может быть быстрым и проверенным решением. В магазине приложений Microsoft вы можете найти более 1 500 полезных функций и виджетов. Ценовой диапазон варьируется от бесплатных приложений до приложений стоимостью в несколько сотен евро.


Мы составили перечень приложений для SharePoint, которые, как нам кажется, наиболее полезны. И что еще важнее, эти приложения являются бесплатными.


Читать дальше →
Total votes 7: ↑5 and ↓2+3
Comments0

Format preserving encryption или как правильно шифровать номера кредиток

Reading time5 min
Views11K

Привет, %username%! Сегодня у нас немного пятничная криптотема. В марте 2016 года вышла интересная публикация от NIST под номером 800-38G (pdf) и с очень интересным называнием Recommendation for Block Cipher Modes of Operation:Methods for Format-Preserving Encryption, в которой отписываются два алгоритма, позволяющие не менять формат данных при шифровании. То есть, если это будет номер кредитки 1234-3456-4567-6678, то после шифрования он тоже останется номером, просто другим. Например 6243-1132-0738-9906. И это не простой xor, там AES и вообще всё серьезно. Давайте немного поговорим о FPE вообще, и об одной из реализаций в частности.
А так можно вообще?
Total votes 20: ↑19 and ↓1+18
Comments20

Искусственный Интеллект в Excel предсказывает обладателя золотой медали в мужском турнире на Рио 2016

Reading time6 min
Views14K
Каждый раз, когда мы используем сложные математические алгоритмы и современные методы машинного обучения, мы ставим задачу получить тренд, понять внутренние зависимости, и в конечном счете произвести предсказания. Более точные результаты можно получить, если алгоритм может быть адаптирован под имеющиеся знания, под имеющуюся модель процесса. Одним из направлений в машинном обучении, которое позволяет создавать и обучать модели для получения предсказаний, является «порождающее (или Байесовское) моделирование» (в отличие от «дискриминативного» моделирования, например, нейронных сетей). Для создания вероятностных моделей и работы с ними существуют платформы, которые в последнее время относятся к направлению «вероятностным программированием». Более подробно о вероятностном программировании можно почитать в других статьях на Хабрахабре: «Вероятностное программирование», «Вероятностное программирование – ключ к искусственному интеллекту?» и «Вероятностное программирование».

Совсем недавно появился стартап Invrea, который в качестве вероятностного языка программирования предлагает использовать Excel: вероятностная модель может быть создана в Экселе и предсказания могут быть получены там же. Ниже находится перевод одной из статьи с сайта стартапа (перевод выполнен исключительно в образовательных целях). В статье авторы рассматривают пример «бытовой» ситуации. Им интересно понять, кто победит в теннисном турнире на Олимпийских играх 2016. Они производят предсказания о том, кто наиболее вероятный кандидат на победу. Статья была написана 7 августа, во время игр, после завершения всех игр первого тура.

Total votes 19: ↑19 and ↓0+19
Comments1

Toyota: 81 514 нарушений в коде

Reading time5 min
Views101K


Люди: — Эй, Тойота, мы тут посчитали, у вас из-за корявой электроники и софта 89 человек погибло с 2000 по 2010.
Тойота: — Да они сами виноваты, путают педали.
Люди: — Хьюстон, у нас проблемы.
NASA: — Ща разберемся, нам надо 10 месяцев и 3 миллиона долларов.
Люди: — На.
Тойота: — 3 миллиона мало, вот вам еще сверху кэшем.
(прошло 10 месяцев)
NASA: — Эй, Тойота, мы у вас пару ошибок в коде нашли, а точнее 7134 нарушения стандартов MISRA, рекурсию, функцию на 740 строк и 9000 глобальных переменных.
Тойота: — А у нас свои стандарты. А вы ваще на Луну летали?
NASA (публично): — Тойота ни в чем не виновата.
(Акции Тойота подскочили на 4,6%)
Люди: — Ну ё-моё.
(спустя 3 года)
Два американских тестировщика (у которых дедушки погибли в Перл-Харбор): — Нет багов? А если найдем?
Total votes 131: ↑123 and ↓8+115
Comments268

10 правил, которые позволяют NASA писать миллионы строк кода с минимальными ошибками

Reading time3 min
Views159K

image
Маргарет Гамильтон стоит рядом с написанным ей исходным кодом бортового компьютера «Аполлона»


Лаборатория реактивного движения (Jet Propulsion Laboratory) — научно-исследовательский центр НАСА, ответственный за большинство беспилотных космических кораблей США. Там пишут много кода, и права на ошибку у них намного меньше, чем у обычных программистов.


В JPL пишут на Си, и на их сайте есть документ "JPL Institutional Coding Standard", описывающий жесткие стандарты кодирования внутри организации. Они напоминают правила программирования для встроенных (embedded) систем и систем реального времени, с ограниченными ресурсами. Но многие из правил эти просто принципы хорошего программирования. Ограничение сложности, максимальное упрощение для последующего чтения кода и отладки, отсутствие побочных эффектов. Мы в Хекслете постоянно говорим об этом в вебинарах и, конечно, в самих курсах. Мы считаем очень важным как можно раньше поднимать эти темы, поэтому про функции и побочные эффекты начинаем говорить в самом первом курсе «Основы программирования», который рассчитан на новичков. Это бесплатный курс, кстати, и в нем есть практика на языке JavaScript.


Спасибо хабраюзеру Boletus за важную поправку и дополнение:
В 2006 году Gerard Holzmann с коллективом сформулировал 10 основных правил для JPL в документе «The Power of 10: Rules for Developing Safety-Critical Code». Они вошли в основу нынешнего стандарта, наряду с MISRA C и другими дополнениями. Статья в Википедии.


Вот перевод этого списка.

Читать дальше →
Total votes 92: ↑80 and ↓12+68
Comments118

Redux Action Creators. Без констант и головной боли

Reading time3 min
Views45K


Всем привет! Эта статья будет полезна тем, кто устал использовать constants в Redux (частично показано на превью выше). Под катом я покажу очередной возможный велосипед и как на нем кататься.


Читать дальше →
Total votes 32: ↑20 and ↓12+8
Comments66

Javascript-фреймворки: должен остаться только один

Reading time24 min
Views57K

Сергей Аверин ( XEK )


Сергей Аверин

Изначально я хотел сделать доклад про сравнение фреймворков, но потом подумал, что закидают помидорами, поэтому доклад — просто адский троллинг, как водится у меня. И он, скорее, не про HighLoad, а про менеджерскую задачу, которая стоит над всем этим делом, включая фронтенд.

Про что же, все-таки, получился доклад? Доклад про то, как выбирали новый фреймворк, почему выбирали, и какие задачи решали.
Читать дальше →
Total votes 103: ↑93 and ↓10+83
Comments184

Используем Entity Framework Core с приложением универсальной платформы Windows

Reading time5 min
Views11K

Вы знаете, что UWP имеет довольно особый принцип работы с данными. Это обусловлено тем, что основным способом распространения приложений является загрузка из Store. Кроме того, сама универсальность платформы подразумевает, что ОС может быть установлена на устройства различного типа. А, скажем, SQL Server на телефон пока что не устанавливают. Кроме REST сервисов единственным доступным форматом баз данных является SQLite. Радует то, что формат довольно популярный. Для работы с базами этого формата существует несколько библиотек-оберток. Ну и вот, с релизом .Net Core, под UWP становится доступной работа с Entity Framework Core. Не удержался и решил написать об этом.
Не удержаться и прочитать об этом
Total votes 15: ↑14 and ↓1+13
Comments2

Unit-тестирование в сложных приложениях

Reading time5 min
Views16K

Ни один разработчик в здравом уме и трезвой памяти при разработке сложных приложений (> 100K LOC, например) не станет отрицать необходимость использования тестирования вообще и модульного тестирования (unit tests) в частности. Это так же верно, как и то, что каждый разработчик постарается исключить бессмысленную работу из творческого процесса создания приложения. Где же та грань, которая отделяет необходимость от бессмысленности, если мы говорим о модульном тестировании в контексте сложных приложений? Пару своих соображений по этому поводу я изложил под катом.

Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments19

Что нового появилось в C# 7 и уже поддерживается в Visual Studio “15” Preview 4

Reading time11 min
Views69K
С релизом Visual Studio “15” Preview 4 многие новые фичи C# 7 можно попробовать самому. Основные новшества C# 7 призваны облегчить работу с данными, упростить код и улучшить производительность. От себя скажу, что C# движется в сторону функционального языка, добавляя такие вещи, как кортежи и сопоставления с шаблоном (pattern matching). Не все из новой функциональности работает так, как задумано, в Preview 4, в этих случаях будет указано, что именно вы можете пока использовать и как это будет работать в будущем. Что ж, приступим.
Читать дальше →
Total votes 42: ↑39 and ↓3+36
Comments69

[SC]Работаем со сканером

Reading time11 min
Views13K

Последние несколько лет мы с коллегами пытаемся сделать так, чтобы в офисе стало меньше бумаги. С цифровыми документами сотрудники работают быстрее и качественнее — да и пыли становится в разы меньше.

Чтобы полностью перейти на цифровые документы сначала надо отсканировать бумажные. Для разработки десктопных приложений сканировщиков мы используем .NET Framework. Из коробки он не предоставляет средств для работы со сканерами. Поскольку .NET дружит с COM, можно использовать компонент WIA (Windows Imaging Architecture).
Читать дальше →
Total votes 24: ↑21 and ↓3+18
Comments14

OSPF LSA в картинках

Reading time4 min
Views95K
Тема протокола динамической маршрутизации OSPF уже не раз поднималась на хабре. Однако вопрос о том что такое LSA и какие они бывают, как мне кажется, недостаточно прозрачен. И я хотел бы рассказать об этом без привязки к конкретному производителю и консольным командам.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments17

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Software Developer, Backend Developer
Java
Hibernate