Pull to refresh
0
Karma
0
Rating
Dimusik @Dimusik

User

  • Posts
  • Comments

Принцип открытости-закрытости

TINKOFFProgrammingSystem Analysis and DesignPerfect codeООP
Sandbox

Привет, Хабр! Перед вами перевод статьи Роберта Мартина Open-Closed Principle, которую он опубликовал в январе 1996 года. Статья, мягко говоря, не самая свежая. Но в рунете статьи дяди Боба про SOLID пересказывают только в урезанном виде, поэтому я подумал, что полный перевод лишним не будет.



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


  • Ни одну программу нельзя «закрыть» на 100%.
  • Объектно-ориентированное программирование (ООП) оперирует не физическими объектами реального мира, а понятиями — например, понятием «упорядочивание».
Читать дальше →
Total votes 58: ↑56 and ↓2 +54
Views26.2K
Comments 19

News

Show more

Марвин Мински «The Emotion Machine»: Глава 5 «Воображение»

Philtech InitiativeProfessional literatureResearch and forecasts in ITReading room
Translation
Как привнести «человеческое» в технологии и как технологии помогают понять и улучшить и масштабировать «человеческое»?

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

image


§5-7. Воображение


«Мы не видим вещи, как они есть. Мы видим вещи как мы их видим.»
— Анаис Нин

Когда Кэрол подбирает один из блоков, это действие кажется невероятно простым для неё: она попросту тянется к блоку, берёт его и поднимает. Она видит блок и просто начинает действовать. Кажется, что никакого «мышления» тут нет.

Однако, кажущаяся «простота» окружающего мира – это иллюзия, которая проистекает из нашей неспособности ощутить его сложность. Ибо, большая часть того, что мы видим проистекает из наших знаний и воображения. Таким образом, рассмотрим портрет Авраама Линкольна, сделанный моим старым другом Леон Хармоном – пионером в области компьютерной графики. (Слева находится портрет который я сделал из Леона)

image


Как же вы определяете настолько невыраженные черты, например нос или глаза, которые представляют собой лишь три или четыре точки светлого и тёмного цветов, на показанной фотографии? Очевидно, вы делаете это благодаря вашим дополнительным знаниям. Например, когда вы сидите за столом перед своими друзьями, вы не видите ни их ног, ни их спины, однако ваша внутренняя система мозга основанная на знаниях предполагает по умолчанию наличие этих невидных деталей. Таким образом, мы воспринимаем наши перцептивные таланты как нечто само собой разумеющееся, и наше «видение мира» кажется нам простым только потому что остальная часть ума находится в неведении о процессах, которые мы используем для восприятия зрительных образов.
Читать дальше →
Total votes 11: ↑9 and ↓2 +7
Views2.3K
Comments 0

Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

Network technologies
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

Существует два распространенных типа подключения DPI: пассивный и активный.

Пассивный DPI

Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
Читать дальше →
Total votes 212: ↑212 and ↓0 +212
Views464.9K
Comments 325

Считаем до трёх: три

Abnormal programmingEntertaining tasksAlgorithmsMathematicsProgramming microcontrollers

Троичный счётчик


Итак, продолжаем разговор. В этой статье я расскажу, как можно сделать троичный счётчик. Напоминаю, что я хочу сделать простейшую, но программируемую железку, работающую на троичной логике. Ответ на вопрос «зачем?» смотреть тут.

Это уже третья статья, по мере готовности будет продолжение. Оглавление:


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


Читать дальше →
Total votes 35: ↑33 and ↓2 +31
Views14.3K
Comments 31

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

SurfingbirdData MiningMathematicsMachine learning



Мы собрали интересные лекции, которые помогут понять, как работает машинное обучение, какие задачи решает и что нам в ближайшем будущем ждать от машин, умеющих учиться. Первая лекция рассчитана скорее на тех, кто вообще не понимает, как работает machine learning, в остальных много интересных кейсов.
Читать дальше →
Total votes 47: ↑45 and ↓2 +43
Views81.6K
Comments 5

Shazam: алгоритмы распознавания музыки, сигнатуры, обработка данных

Wunder FundProgrammingJavaAlgorithms
Translation
В ресторане заиграла почти забытая песня. Вы слушали её в далёком прошлом. Сколько трогательных воспоминаний способны вызвать аккорды и слова… Вы отчаянно хотите послушать эту песню снова, но вот её название напрочь вылетело из головы! Как быть? К счастью, в нашем фантастическом высокотехнологичном мире есть ответ на этот вопрос.

У вас в кармане лежит смартфон, на котором установлена программа для распознавания музыкальных произведений. Эта программа – ваш спаситель. Для того чтобы узнать название песни, не придётся ходить из угла в угол в попытках выудить из собственной памяти заветную строчку. И ведь не факт, что это получится. Программа, если дать ей «послушать» музыку, тут же сообщит название композиции. После этого можно будет слушать милые сердцу звуки снова и снова. До тех пор, пока они не станут с вами единым целым, или – до тех пор, пока вам всё это не надоест.


Мобильные технологии и невероятный прогресс в области обработки звука дают разработчикам алгоритмов возможность создавать приложения для распознавания музыкальных произведений. Одно из самых популярных решений такого рода называется Shazam. Если дать ему 20 секунд звучания, неважно, будет ли это кусок вступления, припева или часть основного мотива, Shazam создаст сигнатурный код, сверится с базой данных и воспользуется собственным алгоритмом распознавания музыки для того, чтобы выдать название произведения.

Как же всё это работает?
Читать дальше →
Total votes 64: ↑58 and ↓6 +52
Views129.9K
Comments 22

Первые 10 минут на сервере

RootweltInformation Security
Translation
Tutorial

Азбука безопасности Ubuntu


«Мои первые 5 минут на сервере» Брайана Кеннеди — отличное введение, как быстро обезопасить сервер от большинства атак. У нас есть несколько исправлений для этой инструкции, чтобы дополнить ею наше полное руководство. Также хочется подробнее объяснить некоторые вещи для более юных инженеров.

Каждое утро я проверяю почтовые уведомления logwatch и получаю основательное удовольствие, наблюдая несколько сотен (иногда тысяч) безуспешных попыток получить доступ. (Многие довольно прозаичны — попытки авторизоваться как root с паролем 1234 снова и снова). Приведённая здесь общая методика подходит для серверов Debian/Ubuntu, которые лично мы предпочитаем всем остальным. Они обычно служат только хостами для контейнеров Docker, но принципы те же.

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

Примечание: Эта справка создана как базовая азбука. Её следует расширить и дополнить в соответствие с вашими потребностями.
Читать дальше →
Total votes 54: ↑40 and ↓14 +26
Views55.7K
Comments 55

400 потрясающих бесплатных сервисов

Web designTypographyInterfaces
Translation

Рад представить дополнение оригинального списка из 300 потрясающих бесплатных сервисов. Автор оригинальной статьи Ali Mese добавил ещё +100 новых сервисов, которые помогут найти все — от источников вдохновения и редакторов фотографий до создания опросов и бесплатных иконок.

И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные веб-сайты

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly: Конструктор веб-сайтов.
  • Layers: Создание сайтов на WordPress (new).
  • Bootstrap Zero: Самая большая коллекция бесплатных шаблонов Bootstrap (new).
  • Landing Harbor:  Продвижение мобильного приложения c помощью бесплатного лендинга (new).
Читать дальше →
Total votes 108: ↑89 and ↓19 +70
Views675.9K
Comments 38

Как научиться делать игры: полезные ресурсы

Website developmentDevelopment of mobile applicationsGame development
Когда я начинал строить свою карьеру в игровой индустрии шесть лет назад, то часто задавался вопросами по геймдеву. Начиная от поиска общего понимания того, как разрабатываются и оперируются онлайн-игры, до частных вопросов типа того, как лучше рекламировать конкретную игру. Тогда было мало структурированной информации по созданию и продвижению игр, новичку разобраться и найти ответы было исключительно сложно. Практически единственным источником информации был собственный опыт и консультации более опытных коллег. Сейчас ситуация кардинально изменилась. Информации по игровой индустрии настолько много, что рискуешь в ней просто утонуть. Для того, чтобы упростить процесс получения нужных мне знаний, я структурировал и делал себе пометки по всем источникам информации о геймдеве. Далее в статье предлагаю всю эту информацию в удобной форме для общего пользования.

image
Читать дальше →
Total votes 52: ↑49 and ↓3 +46
Views88.4K
Comments 49

Распознавание кириллической Яндекс капчи

Information SecurityMachine learning
Эта статья продолжает цикл об особенностях, слабых сторонах и непосредственно о распознавании популярных капчей.
В предыдущей публикации мы затронули готовое решение KCAPTCHA, которое несмотря на неплохую защищенность было распознано без сколько-нибудь серьезной предварительной обработки и сегментации, обычным многослойным персептроном.

Теперь на очереди кириллическая Яндекс капча, с которой, уверен, многие из нас отлично знакомы.

Итак, мы имеем такую капчу:

imageimageimage
Читать дальше →
Total votes 51: ↑47 and ↓4 +43
Views43.9K
Comments 17

IBM запускает 50 проектов для сообщества разработчиков Open Source

IBMWebsite developmentOpen source
image

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

developerWorks Open – облачная площадка, где разработчикам открыт доступ к последним решениям IBM, техническим знаниям и опыту компании. Кроме того, платформа позволяет взаимодействовать с глобальной сетью программистов для ускорения создания и реализации проектов. Разработчики смогут не только загрузить код, но и посетить блоги, посмотреть видеоматериалы, получить доступ к инструментам и методике, которые помогут им в работе. Благодаря платформе программисты смогут более оперативно создавать и внедрять приложения с открытым исходным кодом, которые отвечали бы различным бизнес-требованиям клиентов.
Читать дальше →
Total votes 19: ↑16 and ↓3 +13
Views14.9K
Comments 0

API интерфейс для бесплатной АТС и телефонии

ZadarmaPHPAPIDevelopment of communication systems
imageНесколько недель назад проект Zadarma опубликовал собственный API. Он позволяет интегрировать основные функции IP-телефонии и бесплатной облачной АТС.
Каждый может за считанные минуты создать бесплатную облачную АТС и подключить к ней интерфейс API, а через него уже интегрировать АТС со своими приложениями.
В статье публикуем список и описание методов, ссылки на классы и примеры, которые уже есть для работы (опубликованы PHP-классы). Нам крайне интересны ваши отзывы: для дальнейшего развития интерфейса API, интеграции с CRM и другими системами.

Читать дальше →
Total votes 29: ↑27 and ↓2 +25
Views28.7K
Comments 21

Детальный анализ Хабрахабра с помощью языка Wolfram Language (Mathematica)

Wolfram ResearchProgrammingAlgorithmsData visualization

Скачать пост в виде документа Mathematica, который содержит весь код использованный в статье, вместе с дополнительными файлами, можно здесь.

Анализ социальных сетей и всевозможных медиа-ресурсов является сейчас довольно популярным направлением и тем удивительнее для меня было обнаружить, что на Хабрахабре, по сути, нет статей, которые содержали бы анализ большого количества информации (постов, ключевых слов, комментариев и пр.), накопленного на нем за довольно большой период работы.

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

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

Ввиду того, что база данных, построенная в посте, формировалась за некоторое время до публикации, а именно 26 апреля 2015 г., посты, опубликованные на Хабрахабре после этой даты (а также, возможно, новые хабы) в данном посте не рассматривались.
Читать дальше →
Total votes 158: ↑150 and ↓8 +142
Views52.4K
Comments 61

Смотрим MKV на Apple TV из Plex

Working with videoMonitors and TVIT-companies
Всем привет!

Продолжая цикл Apple-related статей, сегодня хочу поделиться удивительным способом, как можно заставить приставку Apple TV полюбить распространённую ныне матрёшку (MKV) и предоставить ей возможность комфортабельного воспроизведения на большом экране.
Читать дальше →
Total votes 32: ↑29 and ↓3 +26
Views120K
Comments 38

Взгляд изнутри: мир вокруг нас – 2

Popular scienceBiotechnologiesNanotechnologies

Неожиданно в закромах Родины обнаружилась хорошая подборка ещё неопубликованного на Хабре материала. К сожалению, всё в один пост не уместилось – надо же рамки приличия соблюдать?! Поэтому предлагаю вниманию уважаемых Хабра-пользователей заключительную пару статей из цикла «Взгляд изнутри».

Микромир обыденных вещей под катом
Total votes 148: ↑140 and ↓8 +132
Views74.7K
Comments 25

Эксперимент ATLAS — упрощенное описание задачи и немного о детекторе

Popular science
В прошлой статье я вкратце рассказал о том, чем же занимается ЦЕРН. Теперь же я хочу немного рассказать об эксперименте ATLAS.



По традиции, замечание для физиков: я попытаюсь объяснить все так, чтобы было понятно человеку, далекому от физики. Я как можно меньше буду говорить терминами теоретической физики и упрощу Стандартную модель до безобразия, да простит меня Хокинг за это.

И чтобы заинтересовать читателя, я задам один вопрос: почему у вас есть масса?
Читать дальше →
Total votes 52: ↑51 and ↓1 +50
Views2.2K
Comments 44

ООП. Неспешная беседа возле кулера

Lumber room


Юрий Моисеевич (ЮМ) — невысокий, гладко выбритый молодой человек лет сорока пяти, всё ещё подающий надежды. Имеет горделивый изгиб спины и маслянистый взгляд. Говорит тихо, почти шепчет.
Михаил Валерьевич (МВ) — широкоплеч и пузат, с окладистой кучерявой бородой. Говорит зычным, густым басом. Являясь признанным профессионалом, невольно вызывает уважение сам у себя.

Офисная кухня: небольшая каморка без окон, в центре стоит пластмассовый стол, в углу — кулер с водой, вдоль стен — табуретки. Около кулера затаился Юрий Моисеевич. На кухню заходит Михаил Валерьевич, чтобы попить воды. В правой руке он несёт чашку.

ЮМ (преграждая дорогу к кулеру, заискивающе): — Позвольте поинтересоваться!
МВ (учтиво кланяясь): — Прошу вас, Юрий Моисеевич, я всецело к вашим услугам.
ЮМ: — Не поведаете ли вы мне, любезный друг, о тонкостях своей столь нелёгкой работы?
МВ: — С превеликим удовольствием. Но моя работа столь многогранна, и, как вы сейчас верно заметили, столь нелегка, что я, право же, не знаю, с чего начать.
ЮМ: — А начните, пожалуй, с самых, так сказать, основ. Поведайте, какие технологии вы используете?
Читать дальше →
Total votes 167: ↑103 and ↓64 +39
Views7.9K
Comments 36

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

Lumber room
Здравствуй хаброчеловек!

Так уж случилось, что с этого семестра в своем вузе я записался на спецкурс по паттернам проектирования. Курс проходит в виде семинаров, на которых ты (студент) должен рассказать чему научился за неделю (имеется ввиду, какие паттерны изучил и применил на практике).
Читать дальше →
Total votes 47: ↑37 and ↓10 +27
Views26.7K
Comments 29

Как накормить мозг программиста… или feed your brain

Programming
Sandbox

Введение


Из всех наслаждений, отпущенных человеку в жизни,
самое изысканное — шевелить мозгами.
(Борис Акунин)


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

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

В данной публикации мы рассмотрим, как правильно питаться для жизнеобеспечения мозга и как его разогнать ноотропами (в случае аврала необходимости).
Читать дальше →
Total votes 213: ↑163 and ↓50 +113
Views338.1K
Comments 145

Создание игры на ваших глазах — часть 7: 2D-анимации в Unity («как во флэше»)

Game developmentUnity3D
Tutorial
В этой статье поговорим о 2D анимациях в Unity. Я расскажу о своем опыте работы с родными анимациями в юнити, о том, насколько тайм-лайны похожи на флэшевские, об управлении анимациями, event'ах, вложенности, и о том, как художник справляется с анимированием.

Для начала, немного теории.

В Unity есть две сущности:

1. Анимация (то, что отображается в окно «Animation»)
2. Mechanim дерево анимаций (то, что отображается в окне «Animator»).



Ниже я немного расскажу, что это такое и как нам может приходиться (или не пригодиться).
Читать дальше →
Total votes 29: ↑26 and ↓3 +23
Views84.9K
Comments 15

Information

Rating
5,812-th
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity