Как стать автором
Обновить
17
0
Сивков Сергей @DevilAngel

Ruby developer

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

Я не знаю ООП

Время на прочтение12 мин
Количество просмотров550K
Я не умею программировать на объектно-ориентированных языках. Не научился. После 5 лет промышленного программирования на Java я всё ещё не знаю, как создать хорошую систему в объектно-ориентированном стиле. Просто не понимаю.

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

И вот несколько вещей, которые вызывают у меня непонимание.
Читать дальше →
Всего голосов 412: ↑309 и ↓103+206
Комментарии870

ООП с примерами (часть 2)

Время на прочтение5 мин
Количество просмотров683K
Волею судьбы мне приходится читать спецкурс по паттернам проектирования в вузе. Спецкурс обязательный, поэтому, студенты попадают ко мне самые разные. Конечно, есть среди них и практикующие программисты. Но, к сожалению, большинство испытывают затруднения даже с пониманием основных терминов ООП.

Для этого я постарался на более-менее живых примерах объяснить базовые понятия ООП (класс, объект, интерфейс, абстракция, инкапсуляция, наследование и полиморфизм).

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

Читать дальше →
Всего голосов 50: ↑37 и ↓13+24
Комментарии37

ООП с примерами (часть 1)

Время на прочтение4 мин
Количество просмотров610K
Волею судьбы мне приходится читать спецкурс по паттернам проектирования в вузе. Спецкурс обязательный, поэтому, студенты попадают ко мне самые разные. Конечно, есть среди них и практикующие программисты. Но, к сожалению, большинство испытывают затруднения даже с пониманием основных терминов ООП.

Для этого я постарался на более-менее живых примерах объяснить базовые понятия ООП (класс, объект, интерфейс, абстракция, инкапсуляция, наследование и полиморфизм).

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

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

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

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


Введение и подготовка



Привет хаброжители. Данный пост является «рерайтом» моего поста для песочницы. На этот раз я постараюсь охватить больше тем, чем тогда.

Почему Java?

Ничего объективного я тут не скажу, а скажу лишь то, что я люблю этот язык, и мне нравиться писать на нем. Да, на Java нет игр AAA-класса, но Java предоставляет огромные возможности, больше кол-во встроенных средств и быстроту написания кода.

IDE

Начнем с выбора IDE. Я являюсь фанатом Eclipse и посоветую вам его.
Если же почему-то вам он не понравился, вы можете использовать NetBeans, Intellij IDEA или командную строку и ваш любимый редактор.

JDK

И скачаем JDK последней версии: JDK 7u4

Скорее всего проблем с установкой IDE у вас не возникнет, а если у вас 64-битная система, все же посоветую устанавливать 32-битный Eclipse, так как иногда бывают ошибки и Eclipse у вас просто не запустится.

Под катом мы приступим к созданию игры.
Читать дальше →
Всего голосов 72: ↑51 и ↓21+30
Комментарии51

Что нужно знать про арифметику с плавающей запятой

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


В далекие времена, для IT-индустрии это 70-е годы прошлого века, ученые-математики (так раньше назывались программисты) сражались как Дон-Кихоты в неравном бою с компьютерами, которые тогда были размером с маленькие ветряные мельницы. Задачи ставились серьезные: поиск вражеских подлодок в океане по снимкам с орбиты, расчет баллистики ракет дальнего действия, и прочее. Для их решения компьютер должен оперировать действительными числами, которых, как известно, континуум, тогда как память конечна. Поэтому приходится отображать этот континуум на конечное множество нулей и единиц. В поисках компромисса между скоростью, размером и точностью представления ученые предложили числа с плавающей запятой (или плавающей точкой, если по-буржуйски).

Арифметика с плавающей запятой почему-то считается экзотической областью компьютерных наук, учитывая, что соответствующие типы данных присутствуют в каждом языке программирования. Я сам, если честно, никогда не придавал особого значения компьютерной арифметике, пока решая одну и ту же задачу на CPU и GPU получил разный результат. Оказалось, что в потайных углах этой области скрываются очень любопытные и странные явления: некоммутативность и неассоциативность арифметических операций, ноль со знаком, разность неравных чисел дает ноль, и прочее. Корни этого айсберга уходят глубоко в математику, а я под катом постараюсь обрисовать лишь то, что лежит на поверхности.
Читать дальше →
Всего голосов 245: ↑242 и ↓3+239
Комментарии75

Кейс Group-IB: Как Илья Сачков за 10 лет построил лидера в области информационной безопасности

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

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

Начав на втором курсе вместе с друзьями, к сегодняшнему дню Group-IB выросла до трёх офисов (штаб-квартира в Москве, технологический кампус в Лондоне и открывающийся в «Иннополисе») и 117 человек в штате.

Мы попросили Илью поделиться собственным опытом, навыками и знаниями с читателями «Мегамозга» – получилось много и родился очередной «кейс».
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии1

Выбор Шрифтов для Презентаций, Печати и Веба

Время на прочтение5 мин
Количество просмотров73K
Любовь к шрифтам – это болезнь. Скорее всего большинству людей этого не понять – ведь мы живем в стране где вывески и витрины оформлены с такой безграмотностью что порой хочется достать фотоаппарат и сфотографировать это «счастье» да выложить в интернет дабы показать до чего может довести человеческое безразличие. Поэтому человек у которого на столе лежит каталог FontFont и который иногда бурчит что де «неплохо еще вот этот шрифт купить» воспринимается порой как немного «не в себе». Тем не менее, изрядная доля моего времени уходит на то чтобы потеоритизировать на тему того, какие шрифты где уместны, и как выработать свой уникальный стиль для презентаций, веб-типографики и печатной типографики. В этом посте – несколько мыслей насчет того что работает/не работает, и что бы хотелось попробовать.
Читать дальше →
Всего голосов 61: ↑43 и ↓18+25
Комментарии46

«Как это работает»: знакомство с SSL/TLS

Время на прочтение6 мин
Количество просмотров160K
Мы достаточно часто рассказываем о разных технологиях: от систем хранения до резервного копирования. Помимо этого мы делимся собственным опытом оптимизации работы нашего IaaS-провайдера — говорим об управленческих аспектах и возможностях для улучшения usability сервиса.

Сегодня мы решили затронуть тему безопасности и поговорить об SSL. Всем известно, что сертификаты обеспечивают надежное соединение, а мы разберёмся в том, как именно это происходит, и взглянем на используемые протоколы.

Читать дальше →
Всего голосов 23: ↑18 и ↓5+13
Комментарии18

Лучшие дистрибутивы для проведения тестирования на проникновение

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


Существует несколько популярных securty дистрибутивов, содержащих большинство популярных утилит и приложений для проведения тестирования на проникновение. Обычно они основаны на существующих Linux-дистрибутивах и представляют из себя их переработанные версии. В этой статье будут представлены наиболее известные из них.
Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии17

Сети для самых маленьких. Часть седьмая. VPN

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


Покупка заводов в Сибири была стратегически правильным решением для компании “Лифт ми Ам”. После того, как лифты стали ездить не только вверх, но и вниз, дела компании пошли… нет полетели, вверх. Лифты начали разбирать, как горячие пирожки со стола. Название уже не соответствовало действительности и было принято решение о ребрендинге. (На самом деле их замучила судебная тяжба с Моби).
Итак, под крыло ЛинкМиАп планируется взять заводы в Новосибирске, Томске и Брно. Самое время подумать о том, как это хозяйство подключить к имеющейся сети.

Итак, сегодня рассматриваем
1) Возможные варианты подключения, их плюсы и минусы
2) Site-to-Site VPN на основе GRE и IPSec
3) Большая тема: динамическая многоточечная виртуальная сеть (DMVPN) в теории и на практике.

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

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

VPN-дайджест: Ознакомительные и практические материалы на Хабре и не только

Время на прочтение4 мин
Количество просмотров22K
Мы разрабатываем свой сервис по предоставлению виртуальной инфраструктуры и предлагаем к использованию готовую реализацию виртуальных сетей (VLAN) для арендуемых у нас серверов. Наша задача относительно работы с подобными технологиями — предоставить возможность и помочь настроить все самостоятельно, например VPN на физическом или виртуальном сервере (VPS/VDS).

Помимо подготовки собственных тематических руководств и развития службы тех. поддержки мы решили задействовать и свой блог на Хабре. Для этого мы отобрали наиболее заметные и интересные материалы, которые выходили на этой площадке. Этот список мы дополнили англоязычными источниками.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии3

Анализ SSL/TLS трафика в Wireshark

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


Как скрыть от посторонних конфиденциальную информацию?
Самое простое – зашифровать.
В Интернет и Интранет-сетях шифрацией данных управляет протокол SSL/TLS.
Солдат спит, служба идет.
Однако иногда возникает необходимость выполнить обратное – расшифровать перехваченный трафик.
Это может потребоваться как для отладки работы приложений, так и для проверки подозрительной сетевой активности.
Или в целях изучения работы SSL/TLS (очевидные, вредоносные цели не обсуждаются).

Как и при каких условиях можно расшифровать дамп SSL/TLS трафика в Wireshark?
Попробуем разобраться.

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

Развитие облачных технологий в России. Новая реальность: векторы развития и основные проблемы

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


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

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



Участники:


Модератор дискуссии, Никита Цаплин, управляющий партнер RUVDS
Тони Янь, руководителя департамента по работе с корпоративными клиентами HUAWEI
Андрей Листопад, руководитель отдела развития облачных проектов компании «Караван»
Алексей Хорошилов, генеральный директор, UltraVDS
Илья Шкатулов, учредитель,«Трансстромсервис»
Роман Федоров, генеральный директор, Коворкинг, 14
Дмитрий Краснов, начальник управления информационных технологий АКИБ «Образование» АО
Лада Кобкина, руководитель проектов брокерского бизнеса, «Компания БКС»
Читать дальше →
Всего голосов 10: ↑7 и ↓3+4
Комментарии5

[Перевод] VMware CloudFoundry: PaaS на Ruby

Время на прочтение3 мин
Количество просмотров2.3K
image Platform as a Service (PaaS) — это не самая тривиальная вещь для создания, развертывания и поддержки: для начала, приходится проделать немалую работу для управления всеми сервисами изнутри, затем предстоит продумать и реализовать хороший интерфейс, и, в конце-концов, сервис нужно продать и умело его поддерживать. Не удивительно, что инвестиции для создания таких сервисов, могут позволить себе только несколько зажиточных игроков на IT-рынке.

Поэтому было вдвойне интересно наблюдать, как VMware разворачивают сервис CloudFoundry, да еще и с открытым кодом (честно, вот github аккаунт)! Полноценная PaaS, которую они так же предлагают использовать как хостинг, доступна так же каждому, для запуска в собственной компании или датацентре — теперь вы можете запустить «мини Heroku», или «облако EngineYard» на собственных серверах! Но в сторону маркетинг, гораздо интереснее взглянуть под капот этого проекта, ведь он полностью организован на Ruby.

Читать дальше →
Всего голосов 39: ↑37 и ↓2+35
Комментарии16

Как работает Google Поиск?

Время на прочтение9 мин
Количество просмотров60K
Как работает Google Поиск, основные алгоритмы обновлений



В наше время поисковые системы, в частности Google, напоминают «витрину» Интернета и являются наиболее важным каналом распространения информации в цифровом маркетинге. С помощью глобальной рыночной доли, которая составляет более 65% по данным за январь 2016 года, Google явно доминирует в поисковой индустрии. Хотя компания официально не раскрывает степень своего роста, к 2012 году было подтверждено, что их инфраструктура обслуживает около 3 миллиардов поисковых запросов в день.
Читать дальше →
Всего голосов 24: ↑13 и ↓11+2
Комментарии9

Рекурсия. Занимательные задачки

Время на прочтение14 мин
Количество просмотров398K
Здравствуй Хабрахабр!

В этой статье речь пойдет о задачах на рекурсию и о том как их решать.
image

Кратко о рекурсии


Рекурсия достаточно распространённое явление, которое встречается не только в областях науки, но и в повседневной жизни. Например, эффект Дросте, треугольник Серпинского и т. д. Один из вариантов увидеть рекурсию – это навести Web-камеру на экран монитора компьютера, естественно, предварительно её включив. Таким образом, камера будет записывать изображение экрана компьютера, и выводить его же на этот экран, получится что-то вроде замкнутого цикла. В итоге мы будем наблюдать нечто похожее на тоннель.

В программировании рекурсия тесно связана с функциями, точнее именно благодаря функциям в программировании существует такое понятие как рекурсия или рекурсивная функция. Простыми словами, рекурсия – определение части функции (метода) через саму себя, то есть это функция, которая вызывает саму себя, непосредственно (в своём теле) или косвенно (через другую функцию).

О рекурсии сказано много. Вот несколько хороших ресурсов:
Читать дальше →
Всего голосов 19: ↑14 и ↓5+9
Комментарии28

Oracle, типичные задачи SQL. Гарантированный выбор

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


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

Что такое гарантированный выбор в SQL? Допустим, что в условии запроса к таблице выполняется сравнение какого-либо поля с какой-нибудь переменной. В зависимости от значения этой переменной запрос может вернуть строки из таблицы, а может и не вернуть их вовсе. Если выпадает такое значение переменной, что строки из таблицы не возвращаются, то для этого случая надо специально сгенерировать заранее определенный левый результат. То есть в любом случае общий запрос должен гарантированно что-нибудь да вернуть. Сам термин взят отсюда. Однако задача усложняется тем (а может и наоборот, упрощается), что вместо одной простой ячейки со значением, нам нужно гарантировано вернуть полноценную строку.

Привожу данные центризбиркома. Первый тур голосования закончился с такими результатами
Читать дальше →
Всего голосов 22: ↑10 и ↓12-2
Комментарии21

Модель ветвления и управления модулями git для большого проекта

Время на прочтение9 мин
Количество просмотров36K
Без малого два года назад мы начали использовать в разработке нашего флагманского проекта СУБД ЛИНТЕР новую модель ветвления и управления подмодулями git-а. Десятки тысяч коммитов, сделанные за это время группой разработчиков, позволяют с определенной долей уверенности считать нововведения успешными. Эта статья — краткий обзор принципов организации хранилища исходных кодов в большом проекте на базе альтернативной реализации модулей git, сложившейся стратегии ветвления и инструментария linflow.


Читать дальше →
Всего голосов 29: ↑26 и ↓3+23
Комментарии8

Простое суффиксное дерево

Время на прочтение12 мин
Количество просмотров75K
ДеревоСуффиксное дерево – мощная структура, позволяющая неожиданно эффективно решать мириады сложных поисковых задач на неструктурированных массивах данных. К сожалению, известные алгоритмы построения суффиксного дерева (главным образом алгоритм, предложенный Эско Укконеном (Esko Ukkonen)) достаточно сложны для понимания и трудоёмки в реализации. Лишь относительно недавно, в 2011 году, стараниями Дэни Бреслауэра (Dany Breslauer) и Джузеппе Италиано (Giuseppe Italiano) был придуман сравнительно несложный метод построения, который фактически является упрощённым вариантом алгоритма Питера Вейнера (Peter Weiner) – человека, придумавшего суффиксные деревья в 1973 году. Если вы не знаете, что такое суффиксное дерево или всегда его боялись, то это ваш шанс изучить его и заодно овладеть относительно простым способом построения.
Читать дальше →
Всего голосов 41: ↑40 и ↓1+39
Комментарии20

Несколько интересностей и полезностей для веб-разработчика #43

Время на прочтение5 мин
Количество просмотров40K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Ramjet


image
Нереально крутой скрипт, который производит морфинг DOM элементов. Выглядит потрясающе! Работает с HTML и SVG элементами, а также с изображениями. Ramjet содержит в себе базовую коллекцию функций анимации и максимально прост в использовании:
<div id='a' style='background-color: red; font-size: 4em; padding: 1em;'>a</div>
<div id='b' style='background-color: blue; font-size: 4em; padding: 1em;'>b</div>

<script src='ramjet.js'></script>
<script>
    // to repeat, run this from the console!
    ramjet.transform( a, b );
</script>

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

Информация

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