Как стать автором
Обновить

«Свободу командам! или Как мы пришли к гибкой архитектуре». Митап 28 июля

Блог компании Ak Bars Digital Программирование *Анализ и проектирование систем *Конференции

В четверг 28 июля в 19:00 проводим митап в Казани. Для тех, кто не сможет присутствовать готовим трансляцию.

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

Такой подход позволяет эффективно реагировать компаниям на последние и актуальные изменения в конкурентной среде высокодинамичных отраслей промышленности (ритейл, финансы и т. д.). Но как к такому подходу прийти?

Читать далее
Рейтинг 0
Просмотры 326
Комментарии 0

Обзор паттернов интеграции микросервисов

Блог компании Southbridge

14 июля в 19:00 по Москве пройдет вебинар «Обзор паттернов интеграции микросервисов». Вы узнаете, зачем IT-специалистам нужны шаблоны интеграции, для каких задач они подходят, а для каких – нет и чем они могут быть полезны именно вам.

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 1.3K
Комментарии 0

Паттерны проектирования для человеков.

Чулан
Была задача в максимально короткие сроки (зачет нужно было сдавать) человеку далекому от программирования объяснить паттерны на самом простом уровне.
В результате баланса простоты изъяснения и адекватности, образовалась эта шпаргалка.
Просьба оценить эту самую адекватность и простоту.
Читать дальше →
Всего голосов 36: ↑28 и ↓8 +20
Просмотры 14K
Комментарии 23

Программирование — отстой! Или что-то вроде того

Разработка веб-сайтов *
Перевод
Предлагаю вниманию читателей перевод статьи "Programming Sucks! Or At Least, It Ought To", опубликованной в «The Daily WTF». Публикация рассказывает о том, как избыток профессионализма на практике мешает эффективности и предназначена скорее для опытных разработчиков, нежели для новичков.
Читать дальше →
Всего голосов 196: ↑180 и ↓16 +164
Просмотры 13K
Комментарии 113

PHP: Параметры в контексте

Чулан
Проблема:

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

Например: каждый из объектов имеет метод Data(), который возвращает данные, необходимые для отображения объекта на странице (данные для шаблонизатора). Например объект $news класса News должен возвратить 5 последних новостей в приемлемом для шаблонизатора виде, например в виде массива. В свою очередь News::Data() обращается поочередно к объектам $newsPost->Data() (к вложенным объектам) для получения данных, касающихся отдельной новости (заголовок, дата и т.д.). Однако в некоторых случаях требуется, чтобы NewsPosе::Data() возвращал не полные данные, а лишь заголовок (например на главной странице сайта), а в другом случае требуется, чтобы вернулись все данные, включая ссылки на «новости по теме».
Читать дальше →
Всего голосов 8: ↑3 и ↓5 -2
Просмотры 353
Комментарии 11

Что такое анти-паттерны?

Проектирование и рефакторинг *
Анти-паттерны — полная противоположность паттернам. Если паттерны проектирования —
это примеры практик хорошего программирования, то есть шаблоны решения определённых задач. То анти-паттерны — их полная противоположность, это — шаблоны ошибок, которые совершаются при решении различных задач. Частью практик хорошего программирования является именно избежание анти-паттернов. Не надо думать, что это такая непонятная теоретическая фигня — это конкретные проблемы, с которыми сталкивался практически каждый разработчик. Кто осведомлен, тот и вооружён! Рассмотрим же несколько расрпотранённых анти-паттернов в программировании.
Да, рассмотрим!
Всего голосов 157: ↑147 и ↓10 +137
Просмотры 113K
Комментарии 103

Быстрое создание CRUD-основы приложения на Entity Framework/ASP.Net MVC

ASP *
Большинство прикладных приложений, которые приходится разрабатывать на практике, сводятся к примитивному шаблону: есть некая предметная область, в которой выделены объекты и связи между ними. Все это легко представляется в виде таблиц в базе данных, а базовый функционал приложения состоит в том, чтобы выполнять над этими таблицами четыре основных действия: создание, модификацию, просмотр и удаление объектов. Далее, обычно, на эту основу прикручивают дополнительную бизнес-логику, модуль отчетов и остальной необходимый функционал.
Естественной реакцией организма разработчика на присутствие определенного шаблона является желание автоматизировать его применение, например, используя кодогенерацию. Шутка. Кодогенерация – это тот же метод copy-paste, только за программиста его делает специально написанный инструмент. Иногда это оправдано, но перед тем, как решится на генерацию кода, лучше хорошо подумать, а нельзя ли здесь обойтись средствами ООП, к примеру?
Читать дальше →
Всего голосов 34: ↑24 и ↓10 +14
Просмотры 12K
Комментарии 7

Шпаргалка по паттернам проектирования из книги Gang of Four Design Patterns for .NET 2.0

.NET *
Просто список примеров реализации паттернов на C#, более-менее хорошо сформатированных.
Делал для себя, но может быть кому-нибудь пригодится.

image

depositfiles.com/files/gl3ux6p07
2u.ifolder.ru/16126054
fileland.ru/file_id-248997
foldo.ru/38053i807d/Pattierny_kratko.doc.html
Всего голосов 61: ↑40 и ↓21 +19
Просмотры 17K
Комментарии 22

Использование паттерна Builder в случае, когда мы сталкиваемся с конструктором с многими параметрами

Java *
Статья представляет вольный перевод главы из книги Effective Java, Second Edition by Joshua Bloch

В статье рассматриваются 3 альтернативных подхода к упрощению использования класса, с конструктором с многими параметрами.

Читать далее
Всего голосов 47: ↑42 и ↓5 +37
Просмотры 36K
Комментарии 52

Способы передачи управления между программными объектами

Разработка веб-сайтов *
Из песочницы
Программные объекты — это обыкновенные классы из ООП. Под взаимодействием программных объектов я буду подразумевать передачу управления из одного класса в другой.
Это можно сделать двумя способами. Далее я буду называть их: объектный и событийный. Названия взяты из объектно-событийной парадигмы, подразумевающей наличие объектов, запускающих и обрабатывающих какие-то события. Но в моем случае, смысл другой. Так же, чтобы не путаться, назовем первый класс, из которого управления передается управляющим, второй класс, принимающий управление, соответственно, исполнителем.
Читать дальше →
Всего голосов 26: ↑22 и ↓4 +18
Просмотры 6.7K
Комментарии 8

Текстовый анализатор: распознавание авторства (начало)

Разработка веб-сайтов *

Добрый день, уважаемые хабражители. Я давно хотел опубликовать под GPL-лицензией свой «Текстовый анализатор» ([1]). Наконец, дошли руки. «Текстовый анализатор» — это исследовательский проект, который я разрабатывал три года на 3, 4 и 5-м курсах университета. Главная цель была: создать алгоритм распознавания авторства текста, используя нейросети Хэмминга или Хопфилда. Идея была такова: эти нейросистемы распознают образы, а к задаче распознавания образов можно свести задачу выявления авторства. Для этого необходимо по каждому тексту собрать статистику, и чем больше разных критериев, тем лучше: частотный анализ букв, анализ длин слов/предложений/абзацев, частотный анализ двухбуквенных сочетаний, и так далее. Нейросистема могла бы выявить, характеристики каких текстов наиболее сходны. Работы было — вал. Много кода, хитрые алгоритмы, ООП, паттерны проектирования. Помимо основной задачи я так же реализовал ещё одно ноу-хау: «Карту благозвучия». По задумке, такая карта должна показывать все плохо и хорошо звучащие места, выделяя их цветом. Критерии оценки благозвучия должны задаваться каким-то универсальным образом, например, правилами. Для этой цели я даже разработал специальный графический язык, RRL (Resounding Rules Language). Работы было — вал. Много кода, хитрые алгоритмы, ООП, паттерны проектирования. В итоге получилась большая и сложная программа, правда, с неприглядным интерфейсом. С этим проектом я даже выиграл в конкурсе дипломных работ, получил 1 и 3 места на университетских конференциях, а так же 2 место на международной научно-практической.

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

(У статьи есть продолжение и окончание.)

Структура статьи:
  1. Анализ авторства
  2. Знакомство с кодом
  3. Внутренности TAuthoringAnalyser и хранение текстов
  4. Разбиение на уровни конечным автоматом на стратегиях
  5. Сбор частотных характеристик
  6. Нейросеть Хэмминга и анализ авторства

Дополнительные материалы:
  • Исходники проекта «Текстовый анализатор» (Borland C++ Builder 6.0)
  • Тестирование нейросистемы Хэмминга в Excel'е ([xls])
  • Таблица переходов для КА, разбивающего текст на уровни ([xls])
  • Расчет благозвучия отдельных букв ([xls])
  • Презентация дипломного проекта «Текстовый анализатор» ([ppt])
  • Презентация проекта «Карта благозвучия» ([ppt])
  • Все эти материалы в сжатом виде ([zip], [7z], [rar])

Читать дальше →
Всего голосов 54: ↑49 и ↓5 +44
Просмотры 8.4K
Комментарии 5

Текстовый анализатор: распознавание авторства (продолжение)

Разработка веб-сайтов *
Эта статья об алгоритме распознавания авторства, реализованном в проекте «Текстовый анализатор». В продолжении статьи мы рассмотрим конечный автомат для разбиения текста на уровни. (Начало и окончание).

Структура статьи:
  1. Анализ авторства
  2. Знакомство с кодом
  3. Внутренности TAuthoringAnalyser и хранение текстов
  4. Разбиение на уровни конечным автоматом на стратегиях
  5. Сбор частотных характеристик
  6. Нейросеть Хэмминга и анализ авторства

Дополнительные материалы:
  • Исходники проекта «Текстовый анализатор» (Borland C++ Builder 6.0)
  • Тестирование нейросистемы Хэмминга в Excel'е ([xls])
  • Таблица переходов для КА, разбивающего текст на уровни ([xls])
  • Расчет благозвучия отдельных букв ([xls])
  • Презентация дипломного проекта «Текстовый анализатор» ([ppt])
  • Презентация проекта «Карта благозвучия» ([ppt])
  • Все эти материалы в сжатом виде ([zip], [7z], [rar])


Читать дальше →
Всего голосов 45: ↑41 и ↓4 +37
Просмотры 2K
Комментарии 2

Текстовый анализатор: распознавание авторства (окончание)

Разработка веб-сайтов *
Эта статья об алгоритме распознавания авторства, реализованном в проекте «Текстовый анализатор». В окончании статьи мы рассмотрим, как собираются частотные характеристики, и в общих чертах познакомимся с нейросистемой Хэмминга. (Начало и продолжение).

Структура статьи:
  1. Анализ авторства
  2. Знакомство с кодом
  3. Внутренности TAuthoringAnalyser и хранение текстов
  4. Разбиение на уровни конечным автоматом на стратегиях
  5. Сбор частотных характеристик
  6. Нейросеть Хэмминга и анализ авторства

Дополнительные материалы:
  • Исходники проекта «Текстовый анализатор» (Borland C++ Builder 6.0)
  • Тестирование нейросистемы Хэмминга в Excel'е ([xls])
  • Таблица переходов для КА, разбивающего текст на уровни ([xls])
  • Расчет благозвучия отдельных букв ([xls])
  • Презентация дипломного проекта «Текстовый анализатор» ([ppt])
  • Презентация проекта «Карта благозвучия» ([ppt])
  • Все эти материалы в сжатом виде ([zip], [7z], [rar])


Читать дальше →
Всего голосов 44: ↑37 и ↓7 +30
Просмотры 2.3K
Комментарии 18

Антипаттерн settings.py

Python *


Хабрапитонерам привет!

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

Сейчас я хочу понегодовать на паттерн «все настройки — в settings.py». Понятно, что популярность он набрал благодаря Django. Я то и дело встречаю в проектах, никак не завязанных на этот фреймворк ту же самую историю: большая кодовая база, маленькие, хорошенькие никак не связанные друг с другом компоненты, и нате вам: все дружно из произвольных мест лезут в волшебный недомодуль settings за своими константами.

Итак, почему же такой подход на мой взгляд отвратителен.

Читать дальше →
Всего голосов 102: ↑86 и ↓16 +70
Просмотры 15K
Комментарии 111

Паттерны Command и Strategy с точки зрения функционального программирования

Программирование *F# *
Из песочницы
В результате изучения функционального программирования в моей голове появились некоторые мысли, которыми я хочу с вами поделиться.
Читать дальше →
Всего голосов 54: ↑48 и ↓6 +42
Просмотры 11K
Комментарии 94

Паттерны проектирования для iOS разработчиков. Observer, часть I

Разработка под iOS *
Из песочницы

Вместо предисловия


Прошло уже 17 лет с тех пор, как вышла легендарная книга Банды Четырех, посвященная Паттернам проектирования (Design patterns). Несмотря на столь солидный срок, тяжело оспорить актуальность описанных в ней методик. Паттерны проектирования живут и развиваются. Их применяют, обсуждают, ругают и хвалят. К сожалению, для многих они до сих пор остаются излишней абстракцией.

Обсуждая разные вопросы программирования с коллегами как в жизни, так и на различных ресурсах, довольно часто приходится объяснять важность того или иного паттерна. Так и родилась идея на конкретных примерах показать, насколько их использование может облегчить жизнь программиста. Даже если речь идет о такой платформе, как iOS.
О том, как Света вышла замуж и чем девушки похожи на футболистов
Всего голосов 38: ↑34 и ↓4 +30
Просмотры 22K
Комментарии 18

Зачем нужны паттерны проектирования или «Что такое MVC?»

Adobe Flash
Из песочницы
Самое главное во всех фреймворках это то, что все они диктуют правила создания приложения. Если ты никогда не использовал никакого фреймворка в своих приложениях, то либо
Читать дальше →
Всего голосов 25: ↑8 и ↓17 -9
Просмотры 12K
Комментарии 27

Паттерн Наблюдатель: списки и матрёшки из слушателей

Программирование *
В этой хабрастатье на примере паттернов Наблюдатель и Компоновщик рассмотрено, как применять принципы объектно-ориентированного программирования, когда стоит использовать композицию, а когда наследование. А так же рассмотрено, какие существуют способы повторного использования кода, кроме copy-paste.

Статья достаточно простая, в ней рассматриваются очевидные вещи, но надеюсь, что она будет интересна начинающим программистам, которые пока встречались со словами из первого абзаца только на лекциях по программированию. (На самом деле эта статья и есть кусочек практического занятия по программированию.)
Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Просмотры 21K
Комментарии 16

Заметки про паттерны проектирования

Чулан
Из песочницы
Вашему вниманию, я хотел бы предложить заметки, которые я для себя оставлял при изучении шаблонов проектирования.
Хочу сразу оговорить тот момент, что вы в данной статье не встретите всех паттернов, и если эта статья вам покажется интересной, то я буду продолжать.
Ну, поехали!
Читать дальше →
Всего голосов 35: ↑6 и ↓29 -23
Просмотры 2.6K
Комментарии 9

Паттерн Visitor. Продвинутое использование

Программирование *
Из песочницы
Здравствуйте, дорогие хабравчане!

Я хочу поделиться с вами своим опытом использования паттерна проектирования visitor и его интересной модификацией, которую я назвал upcast visitor. К сожалению, непросто придумать простой короткий пример и описать как все работает, также эта статья может показаться сложной для начинающих, тем не менее я постараюсь максимально упростить задачу. Примеры кода приведены на языке С++ и обязательны к прочтению. Без понимания кода вникнуть в суть статьи будет затруднительно.

Предыстория


Представьте, что мы проектируем 2D игру, в которой фрукты падают с дерева, по пути ударяясь о ветки. Цель игры — поймать все фрукты, двигая корзину под деревом.
Строим следующую диаграмму классов:
Читать дальше →
Всего голосов 62: ↑57 и ↓5 +52
Просмотры 44K
Комментарии 45