Как стать автором
Обновить
0
0
Михаил @gavrlans

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

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

Внедрение веб консолей в jvm процесс на примере SonarQube

Время на прочтение5 мин
Количество просмотров11K
По аналогии с примером из этой статьи, вы сможете внедрить консоль hawtio в свое jvm приложение без его пересборки и перекомпиляции. А также в случае с DEV/QA хостами внедрить в java процесс SQL веб консоль из проекта H2


Скринкасты, описание процесса и краткий обзор компонент...
Всего голосов 9: ↑8 и ↓1+7
Комментарии0

Твой код никого не интересует

Время на прочтение4 мин
Количество просмотров79K
Мой код никого не интересует. Я был повержен в шок, когда осознал это в процессе работы программистом. Я тратил много времени на оттачивание своего кода, пока не понял, что он никого не интересует, ведь в зачет идет не сам код, а продукт. Принятие программистом этого факта приведет к повышению продуктивности и ценности его работы.
Читать дальше →
Всего голосов 122: ↑87 и ↓35+52
Комментарии200

Информационные технологии кормят более 750 тысяч человек в Москве

Время на прочтение2 мин
Количество просмотров28K
Всем привет! Наши аналитики посчитали, сколько москвичей трудятся в ИТ, телекоме и онлайн-бизнесе. От высоких технологий, как выяснилось, зависят более 750 тысяч специалистов и членов их семей. Какая из этих отраслей создаёт больше всего рабочих мест и где ожидаются сокращения? Главные тренды под катом.


Читать дальше →
Всего голосов 41: ↑35 и ↓6+29
Комментарии12

10 самых распространённых ошибок, которые делают новички в Java

Время на прочтение14 мин
Количество просмотров106K
Здравствуйте, меня зовут Александр Акбашев, я Lead QA Engineer в проекте Skyforge. А также по совместительству ассистент tully в Технопарке на курсе «Углубленное программирование на Java». Наш курс идет во втором семестре Технопарка, и мы получаем студентов, прошедших курсы по C++ и Python. Поэтому я давно хотел подготовить материал, посвященный самым распространенным ошибкам новичков в Java. К сожалению, написать такую статью я так и не собрался. К счастью, такую статью написал наш соотечественник — Михаил Селиванов, правда, на английском. Ниже представлен перевод данной статьи с небольшими комментариями. По всем замечаниям, связанным с переводом, прошу писать в личные сообщения.



Изначально язык Java создавался для интерактивного телевидения, однако со временем стал использоваться везде, где только можно. Его разработчики руководствовались принципами объектно-ориентированного программирования, отказавшись от излишней сложности, свойственной тем же С и С++. Платформонезависимость виртуальной машины Java сформировала в своё время новый подход к программированию. Добавьте к этому плавную кривую обучения и лозунг «Напиши однажды, запускай везде», что почти всегда соответствует истине. Но всё-таки ошибки до сих пор встречаются, и здесь я хотел бы разобрать наиболее распространённые из них.
Читать дальше →
Всего голосов 73: ↑55 и ↓18+37
Комментарии85

Полноценный веб-сайт на C++ и немного диванной аналитики

Время на прочтение20 мин
Количество просмотров127K
Но зачем?
Тут должна быть картинка про троллейбус

Невежливо отвечать вопросом на вопрос, но: а почему бы и нет? Просто потому, что можно.
Ладно, я пошутил. Чтобы пояснить причину, хотелось бы кратко описать историю моего знакомства с веб-разработкой. Но, дабы не нарушать последовательность повествования, я решил поместить ее в конце. В общем, с причинами мы еще разберемся.

Думаю, многим знакома такая разновидность веб-форумов, как имиджборды. Да-да, вы правильно поняли — именно на примере имиджборды я расскажу об опыте создания сайта на C++. Что же сподвигло меня заняться столь сомнительной пользы проектом? Левая пятка. В этом случае действительно никаких особых причин не было. Просто проснулся однажды утром и понял — хочу. Но это все лирика.

На Хабре хватает статей о веб-сайтах на C++: например, с использованием FastCGI или CppCMS. Но все это — HelloWorld'ы и туториалы. Я же вам расскажу о полноценном (пусть и не идеальном с точки зрения архитектуры и чистоты кода) проекте, постараюсь осветить различные тонкости.
Перейдем же к делу
Всего голосов 51: ↑45 и ↓6+39
Комментарии85

Web-технологии глазами С++ программиста

Время на прочтение5 мин
Количество просмотров57K
Год назад знакомые попросили сделать меня сайт с динамическим контентом. Тогда о Web я знал чуть больше чем ничего, но попробовать было интересно.

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

Надеюсь будет интересно Web разработчикам посмотреть на потуги С++ника, ну а С++ разработчикам узнать для себя что-то новое.

Что там у тебя...
Всего голосов 84: ↑63 и ↓21+42
Комментарии91

Lock-free структуры данных. Concurrent map: разминка

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

Мне оказали честь — пригласили выступить на первой конференции C++ 2015 Russia 27-28 февраля. Я был насколько наглым, что запросил 2 часа на выступление вместо положенного одного и заявил тему, наиболее меня интересующую — конкурентные ассоциативные контейнеры. Это hash set/map и деревья. Организатор sermp пошел навстречу, за что ему большое спасибо.
Как подготовиться ко столь ответственному испытанию выступлению? Первое — нарисовать презентацию, то есть кучу картинок, желательно близко к теме. Но надо ещё и два часа озвучивать картинки, — как все это запомнить? Как избежать глубокомысленных «ээээмммм», «здесь мы видим», «на этом слайде показано», несвязных прыжков повествования и прочих вещей, характеризующих выступающего c не очень хорошей стороны в части владения родным языком (это я про русский, с C++ я разобрался быстро — никакого кода в презентации, только картинки)?
Конечно, надо записать свои мысли, глядя на слайды. А если что-то написано, то не худо бы и опубликовать. А если публиковать, — то на хабре.
Итак, по следам C++ 2015 Russia! Авторское изложение, надеюсь, без авторского косноязычия, без купюр и с отступлениями по теме, написанное до наступления события, в нескольких частях.
Читать дальше →
Всего голосов 55: ↑52 и ↓3+49
Комментарии24

Дискретные структуры: матан для айтишников

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


Посмотришь на любую программу обучения по IT-специальности, и тут же увидишь дисциплину «Дискретная математика» (возможно, под другим названием), обычно для перво- или второкурсников. И её наличие вполне разумно, поскольку дискретная математика и непрерывная математика (представленная на первом курсе институтов с незапамятных времён математическим анализом) — две грани единой Математики, — красивой, могучей науки.

Хотя раньше такого понятия, как «дискретная математика» вовсе не было, это не значит, что не возникало дискретных задач: Абель, Дирихле, Фибоначчи, Эйлер, чьи имена возникают по ходу изучения дискретной математики, — отнюдь не наши современники! Но просто в те времена для выделения самостоятельной ветви математики ещё не сложилось критической массы задач и приёмов, не было видно взаимосвязей между ними. А большое количество плодотворных взаимосвязей между, на первый взгляд, различными понятиями, — то, что математики в своей науке очень ценят.

Ну хорошо, математикам всё математическое интересно. А зачем дискретная математика программисту?
Читать дальше →
Всего голосов 63: ↑59 и ↓4+55
Комментарии43

Философия программирования 5 — Колибри и Реактос

Время на прочтение7 мин
Количество просмотров35K
Кто умеет копировать, тот умеет ДЕЛАТЬ. Это сказал Леонардо да Винчи. Видите ли, вы исходите из своих представлений, о том, что такое ХР, винда, операционка. Люди как рассуждают:

— Мне было ещё мало лет у меня стояла ХР, вот были золотые деньки, но тепереча не то, что давеча. Новые времена, современное ПО. Не понимаю, зачем копаться в старье? Вы бы хоть делали клон десятой винды, но куда с вашей то скоростью, вы его сделаете лет через 100.

Но если люди копируют старое ПО, это ещё не значит, что они ретрограды или некрофилы. Во-первых они это делают сейчас, находясь в современных условиях, зная все тенденции и направления. Во-вторых, устаревание софта вообще вещь крайне контр-интуитивная. Например, в самых современных приложениях есть куски кода написанные более двадцати лет назад, и, заметьте, — никто не собирается их переписывать. Это информация, она не изнашивается, как изнашиваются метал или дерево. Но людям свойственно своё бытовое восприятие переводить на вещи нематериальные и требующие совершенно иного взгляда. Понимаете? Информация. Это не вещь. Сравнивайте со стихами Пушкина.
Читать дальше →
Всего голосов 105: ↑85 и ↓20+65
Комментарии68

Наследие Якоба Бернулли в Wolfram Language (Mathematica)

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

Перевод поста Олександра Павлыка (Oleksandr Pavlyk), «Jacob Bernoulli’s Legacy in Mathematica».
Скачать перевод в виде документа Mathematica, который содержит весь код использованный в статье, а также дополнительные материалы, можно здесь.


16 января 2015 г. исполнилось 360 лет со дня рождения Якоба Бернулли.

In[1]:=

jacob-bernoulli-legacy_1.gif

Out[2]=

jacob-bernoulli-legacy_2.png

In[3]:=

jacob-bernoulli-legacy_3.png

Out[3]=

jacob-bernoulli-legacy_4.png

In[4]:=

jacob-bernoulli-legacy_5.png

Out[4]=

jacob-bernoulli-legacy_6.png

Якоб Бернулли стал первым математиком известнейшей семьи Бернулли, к которой принадлежат многие известные математики XVII и XVIII веков.

Математическое наследие Якоба Бернулли очень богато. Он ввел так называемые числа Бернулли (Wiki / MathWorld), нашел решение дифференциального уравнения Бернулли (Wiki / MathWorld), изучал процесс Бернулли (Wiki / MathWorld), доказал неравенство Бернулли (Wiki / MathWorld), вычислил число e (Wiki / MathWorld), а также выявил слабый закон больших чисел (теорема Бернулли) (Wiki / MathWorld).
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии0

Получение участников сообщества vk.com за считанные секунды

Время на прочтение2 мин
Количество просмотров114K
Ни для кого не секрет, что VK API возвращает за один запрос к методу groups.getMembers не более 1 000 участников. В одну секунду вы можете получить максимум 3 000 участников, так как установлено ограничение на количество запросов в секунду до 3. Эту проблему решает метод execute, с помощью которого вы можете получить более 100 000 участников за одну секунду и до 25 000 участников за один запрос. В этой статье я расскажу Вам, как я это реализовал.
Читать дальше →
Всего голосов 57: ↑43 и ↓14+29
Комментарии26

Категории, большие и малые

Время на прочтение8 мин
Количество просмотров35K
Это четвертая статья в цикле «Теория категорий для программистов».

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

Без объектов


Самая простая категория — без объектов и, как следствие, без морфизмов.
Читать дальше
Всего голосов 36: ↑33 и ↓3+30
Комментарии29

Ошибки новичка в сфере разработки игр

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

Оригинал изображения

Полгода назад я рассказывал про свой опыт работы фрилансером на oDesk. После этого я решил оставить разработку Android приложений на заказ и заняться своей давней мечтой — созданием игр. Мы с друзьями объединились, и работа закипела…

Для начала хочу рассказать о текущем состоянии проекта:
Время от разработки до публикации: 2 месяца
Время нахождения в магазинах приложений: 3 месяца
Загрузки iOS: > 15000 (93 % русскоязычные пользователи)
Загрузки Android: > 35000 (63 % русскоязычные пользователи)

Данный проект не является финансово успешным на данный момент, поэтому я хочу рассказать о наших ошибках.
Статья в первую очередь предназначена для новичков в сфере разработки игр.
Читать дальше →
Всего голосов 55: ↑50 и ↓5+45
Комментарии22

Проблема PID 1 zombie reaping в Докере

Время на прочтение8 мин
Количество просмотров21K
Привет, Хабр!
Мы в Хекслете активно используем Докер как для запуска самого приложения и сопутствующих серверов, так и для запуска пользовательского кода в практических упражнениях по программированию. Без этих легковесных контейнеров нам было бы в разы сложнее справиться с этими задачами. Докер –замечательная технология, но иногда возникают неожиданные проблемы. Одна из таких проблем (и ее решение) описана в блоге Phusion (это создатели Phusion Passenger), сегодня мы публикуем ее перевод.


Примерно год назад, когда Докер был в версии 0.6, мы первыми представили Baseimage-docker. Это минимальный образ Ubuntu, модифицированный специально для Докера. Люди могут пуллить этот базовый образ из Docker Registry и использовать его как основу для своих образов.

Мы были ранними пользователям Докера, используя его для CI и для создания рабочего окружения задолго до выхода версии 1.0. Базовый образ мы сделали чтобы решить проблемы, специфичные для принципов работы Докера. Например, Докер не запускает процессы под специальным процессом init, который бы правильно обрабатывал дочерние процессы, поэтому возможна такая ситуация, когда зомби-процессы вызывают кучу проблем. Докер также не делает ничего с syslog, поэтому важные сообщения могут быть утеряны. И так далее.

Однако, мы выяснили, что многие люди не понимают проблем, с которыми мы столкнулись. Да, это довольно низкоуровневые системные механизмы Unix, которые понятны далеко не всем. Поэтому в этом посте мы опишем самую главную проблему, которую мы решаем – PID 1 zombie reaping problem.


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

Must-read книги за 2014 год по ИБ и программированию

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

Безопасность


Тактика хакера: практическое руководство по тестированию на проникновение (The Hacker Playbook: Practical Guide To Penetration Testing)




Книга написана в стиле планирования футбольной игры. Здесь подробно и пошагово разобраны проблемы и трудности, с которыми сталкиваются специалисты по безопасности, тестируя системы защиты. В частности, рассматриваются атаки на различные типы сетей, обход антивирусов и взлом систем безопасности. Автор книги — Питер Ким, специалист по IT-безопасности с многолетним опытом, CEO компании Secure Planet.
Читать дальше →
Всего голосов 79: ↑60 и ↓19+41
Комментарии17

Xargs: многообразие вариантов использования

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

Об утилите xargs написано очень много — что можно написать еще? Но если, что называется, копнуть поглубже, то выясняется, что во многих публикациях излагаются лишь самые основы, но нет главного: не объясняется, как можно применять xargs в реальной практике. Статей с разбором сложных и нетривиальных вариантов применения этого весьма полезного для системного администратора инструмента, к сожалению, очень мало. Именно поэтому мы написали свою статью и постарались включить в нее как можно больше примеров использования xargs для решения различных проблем.

Сначала мы рассмотрим принцип работы xargs и разберем примеры попроще, а затем перейдем к разбору сложных и интересных кейсов.
Читать дальше →
Всего голосов 68: ↑65 и ↓3+62
Комментарии44

Неперсонализированные рекомендации: метод ассоциаций

Время на прочтение5 мин
Количество просмотров20K
Персональные рекомендации позволяют познакомить пользователя с объектами, о которых он, возможно, никогда не знал (и не узнал бы), но которые могут ему понравиться с учетом его интересов, предпочтений и поведенческих свойств. Однако, часто пользователь ищет не новый объект, а, к примеру, объект A похожий на объект B («Форсаж 2» похож на «Форсаж»), или объект A, который приобретается/потребляется с объектом B (сыр с вином, пиво с детским питанием, гречка с тушенкой и т.д.). Построить такие рекомендации позволяют неперсонализированные рекомендательные системы (НРС).


Рекомендовать похожие/сопутствующие объекты можно, ориентируясь на знания об объектах (свойства, теги, параметры) или на знания о действиях, связанных с объектами (покупки, просмотры, клики). Преимуществом первого способа является то, что он позволяет достаточно точно определить похожие по свойствам объекты («Форсаж 2» и «Форсаж» — похожие актеры, похожий жанр, похожие теги, ...). Однако данный способ не сможет порекомендовать сопутствующие объекты: сыр и вино. Еще одним недостатком этого способа является тот факт, что для разметки всех объектов, доступных на сервисе, требуется не мало усилий.

В то же время почти каждый сервис логирует информацию о том, какой пользователь просмотрел/купил/кликнул какой объект. Данной информации достаточно для построения НРС, которая позволит рекомендовать как похожие, так и сопутствующие объекты.

Под катом описан метод ассоциаций, позволяющий построить неперсонализированные рекомендации, основываясь лишь на данных о действиях над объектами. Там же код на Python, позволяющий применить метод для большого объема данных.
Читать дальше →
Всего голосов 47: ↑44 и ↓3+41
Комментарии16

Комбинаторные алгоритмы: индекс сочетания, индекс разбиения на подмножества

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

Короткое предисловие


Комбинаторные алгоритмы применяются достаточно часто. В интернете можно найти много информации касательно комбинаторных алгоритмов. Однако русскоязычный интернет, в основном, выдает простейшие задачи сплошного перебора (генерации) комбинаторных объектов в цикле. Например:
Пример
// Сочетания по 3 из 52
for (int i1 = 0; i1 < 50; ++i1)
  for (int i2 = i1+1; i2 < 51; ++i2)
    for (int i3 = i2+1; i3 < 52; ++i3)
      // ...


Индекс сочетания


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

Здесь мы рассмотрим более сложную задачу, решения которой в рунете я не нашел (впрочем, приведу одну ссылку, но та формула явно неверная) — исходя из самого сочетания (в данном случае набора трех чисел) найти его индекс.
Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии22

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 1 из 6

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

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Постановка задачи


Цель этого цикла статей — показать, как работает OpenGL, написав его (сильно упрощённый!) клон самостоятельно. На удивление часто сталкиваюсь с людьми, которые не могут преодолеть первоначальный барьер обучения OpenGL/DirectX. Таким образом, я подготовил краткий цикл из шести лекций, после которого мои студенты выдают неплохие рендеры.

Итак, задача ставится следующим образом: не используя никаких сторонних библиотек (особенно графических) получить примерно такие картинки:



Внимание, это обучающий материал, который в целом повторит структуру библиотеки OpenGL. Это будет софтверный рендер, я не ставлю целью показать, как писать приложения под OpenGL. Я ставлю целью показать, как сам OpenGL устроен. По моему глубокому убеждению, без понимания этого написание эффективных приложений с использованием 3D библиотек невозможно.
Читать дальше →
Всего голосов 198: ↑196 и ↓2+194
Комментарии120

Чем полезным заняться в праздники?

Время на прочтение5 мин
Количество просмотров20K
Или как сделать, чтобы не было мучительно больно за впустую пролетевшие новогодние каникулы?
Если в связи с обесцениванием рубля вы внезапно никуда не едете на новогодние праздники, или едете, но уверены, что будет куча времени, которое вы ещё не знаете, чем занять (например, в дороге), то предлагаю вам 7 способов приятно и полезно провести время.

1. Посмотреть видео с конференций
Многие сейчас в восторге от TED. Да, там есть интересные и полезные вещи, но если интересно развитие в отраслях менеджмента и IT, то я рекомендую сайт IT Talks. Там подборки с самых интересных тематических конференций за последние годы.
Ещё есть очень интересная подборка видео с семинаров на CodeFreeze
Чтобы смотреть видео в оффлайне (самолёте, поезде и т.д.) могу посоветовать пару расширений для FireFox:
addons.mozilla.org/ru/firefox/addon/download-flash-and-video — качает почти всё кроме Vimeo
addons.mozilla.org/ru/firefox/addon/video-downloadhelper — качает почти всё и Vimeo в том числе, но названия файлов генерит абы как.
Читать дальше →
Всего голосов 55: ↑42 и ↓13+29
Комментарии31

Информация

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