Pull to refresh
2
0.3
Send message

Создаем свою инспекцию для IDEA

Reading time5 min
Views3.9K

В статье показано, как быстро можно сделать свою полноценную инспекцию для IDEA для языка Java. В инспекции будем проверять, что переопределены методы equals, hashСode для классов, используемых в качестве ключа в HashMap. Писать будем на Kotlin.

Читать далее
Total votes 14: ↑14 and ↓0+14
Comments0

Достучаться до небес, или FSM на шаблонах

Reading time13 min
Views15K

Здравствуйте! Меня зовут Александр, я работаю инженером-программистом микроконтроллеров.

Пишу на С/С++, причем предпочитаю плюсы, ибо верую в их эволюционную неизбежность в embedded.

Мир встроенного ПО, язык С++ динамично развиваются, поэтому разработчикам важно не отставать и поддерживать свои скиллы и наработки актуальными моменту.

Я стараюсь следовать этому очевидному посылу, благо небожители ведущие С++ программисты и консультанты щедро делятся своим опытом и идеями на разных площадках (например здесь, или здесь).

Некоторое время назад я посмотрел мощный доклад Сергея Федорова про построение конечного автомата с таблицей переходов на шаблонах.

Читать далее
Total votes 14: ↑11 and ↓3+14
Comments24

Сложение двух чисел с плавающей запятой без потери точности

Reading time9 min
Views80K
Здравствуйте, друзья, как вы думаете, если мы напишем такой код:

s = a+b;
z = s-a;
t = b-z;

то не кажется ли вам, что в результате его выполнения получится, что t=0? С точки зрения привычной математики действительных чисел это и правда так, а вот с точки зрения двоичной арифметики с плавающей запятой в переменной t будет кое-что другое. Там будет то, что спасает нас от потери точности при сложении чисел $a$ и $b$. Кого интересует данная тема, прошу под кат.

Total votes 99: ↑97 and ↓2+135
Comments172

Constraint Programming или как решить задачу коммивояжёра, просто описав её

Reading time7 min
Views12K

Пожалуй, наиболее популярной парадигмой программирования является императивное программирование, но это не единственный вид программирования, широки известны функциональное и логическое программирование. Constraint Programming (Программирование в ограничениях/Ограниченное программирование) не так популярно. Но это очень мощный инструмент для решения комбинаторных задач. Вместо реализации алгоритма, который решает задачу, с последующей тратой кучи времени на его отладку, рефакторинг и оптимизацию, программирование с ограничениями позволяет вам просто описать модель в специальном синтаксисе, а особая программа (решатель) найдет решение для вас (или скажет, если их нет). Впечатляет не правда ли? Мне кажется, каждый программист должен знать о такой возможности.

Read more
Total votes 14: ↑14 and ↓0+14
Comments7

Поддержание обратной совместимости: о ватерлинии айсберга

Reading time7 min
Views1.6K

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

1. Предоставляйте минимальный объём функциональности

В любой момент времени ваше API подобно айсбергу: у него есть видимая (документированная) часть и невидимая — недокументированная. В хорошем API эти две части соотносятся друг с другом примерно как надводная и подводная часть настоящего айсберга, 1 к 10. Почему так? Из двух очевидных соображений.

Читать далее
Total votes 15: ↑15 and ↓0+15
Comments0

Как говорить с сотрудниками. 7 аспектов, о которых забывают

Reading time7 min
Views33K
Говорить с сотрудниками — это, на самом деле, не о «говорить». И не о методе «активного слушания». Я вообще не люблю все эти искусственные «техники». И речь здесь будет идти не о техниках привлечения внимания, махания руками и положенной длительности зрительного контакта. Разговор с сотрудником — это намного шире, чем просто поговорить. И если на заре своей карьеры менеджера я это понимал слабо, то после более чем 10 лет управления осознал, что некоторые банальности совсем таковыми не являются.

image
И тогда пришло время остановиться и задуматься — какие ошибки люди допускают чаще всего. © Unsplash

Немного обо мне
Меня зовут Александр, и я руковожу уже больше 10 лет Департаментом Исследований, Разработки и Инноваций компании Qulix Systems.

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

Слишком люблю обмениваться знаниями, потому, после организации различных обучающих активностей внутри Компании, захотелось пойти дальше и обсудить свои взгляды и идеи с более широкой аудиторией (если позволят модераторы).

Это моя первая статья — потому буду крайне рад комментариям и рекомендациям. Спасибо!
Читать дальше →
Total votes 61: ↑55 and ↓6+72
Comments62

Zettelkasten: как один немецкий учёный стал невероятно продуктивным

Reading time18 min
Views412K
Изображение предоставлено автором. Основано на фотографии Патрика Томаса с Ансплэша

Это перевод статьи Дэвида Клира о методе ведения заметок Zettelkasten, благодаря которому немецкий социолог Никлас Луман написал более 70 книг и 400 научных статей. Стоит читать, если вы хотите создать собственную базу знаний, систематизировать идеи и перестать забывать важные мысли.

Статья бережно перенесена из блога бегущего редактора. Кстати, следить за анонсами новых статей можно в моём телеграм-канале. Подписывайтесь, чтобы ничего не пропустить!
Читать дальше →
Total votes 40: ↑36 and ↓4+44
Comments82

Как отсутствие вычислительных мощностей влияло на морские сражения в мировых войнах

Reading time17 min
Views14K

Достичь достаточной осведомлённости о ситуации, когда GPS и компьютеров ещё не существовало, было трудной задачей



Подобная перспектива идеальна – но она была недоступной для адмиралов Первой и Второй мировых войн

"Сетецентрические боевые действия" – популярнейшая на данный момент военная концепция. В её рамках солдаты сражаются не только при помощи оружия, но и при помощи паутины датчиков и вычислительных мощностей, дающих им и их командирам превосходство в оценке ситуации на поле боя. Однако проблема, которую призван решить данный подход, существовала всегда. Я – здесь, противник где-то там. Как его найти? Как отслеживать? Как узнать, куда двигаться, после начала битвы? Как мне хотя бы свои войска отслеживать?

Задолго до того, как концепции интернета вещей заполонили всю планету, эскадры XX века первыми начали использовать систематический подход в ответе на эти вопросы. Паруса уступили место паровым двигателям, и европейские колонии расползлись по всему миру. Военные корабли начали передвигаться ещё быстрее и потребовали координации действий на ещё больших участках морей, чем ранее. Тем временем телеграфы и радио позволяли мгновенно обмениваться сообщениями на немыслимых до этого расстояниях. Всё это вместе совершило революцию в использовании военными флотами информации.
Читать дальше →
Total votes 41: ↑41 and ↓0+41
Comments22

Представляем shell-operator: создавать операторы для Kubernetes стало ещё проще

Reading time7 min
Views11K
В нашем блоге уже были статьи, рассказывающие про возможности операторов в Kubernetes и о том, как написать простой оператор самому. На этот раз хотим представить вашему вниманию наше Open Source-решение, которое выводит создание операторов на суперлёгкий уровень, — познакомьтесь с shell-operator!

Зачем?


Идея shell-operator довольно проста: подписаться на события от объектов Kubernetes, а при получении этих событий запустить внешнюю программу, предоставив ей информацию о событии:

Читать дальше →
Total votes 37: ↑36 and ↓1+35
Comments6

Новая техника атак на основе Meltdown. Использование спекулятивных инструкций для детектирования виртуализации

Reading time4 min
Views10K
Атака Meltdown открыла новый класс атак на процессоры, использующий архитектурные состояния для передачи информации. Но спекулятивное исполнение, которое было впервые применено для атаки в Meltdown, позволяет не только выполнить код со снятием ограничений, но и узнать определенные детали работы процессора. Мы нашли новый способ реализации атаки с использованием архитектурных состояний. Он позволяет детектировать виртуализацию, опираясь на то, как процессор выбирает, отправлять инструкции на спекулятивное исполнение или нет. Мы сообщили о данном способе в Intel, и 21 мая 2018 года было выпущено оповещение об уязвимостях «Q2 2018 Speculative Execution Side Channel Update», в котором присутствует наша уязвимость CVE-2018-3640 или Spectre Variant 3a.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments12

Знакомство с ConcourseCI

Reading time18 min
Views15K

ConcourseCI logo


Всем привет! Я заметил, что на Хабре очень мало информации про такой сервер сборки, как ConcourseCI. Я решил восполнить этот пробел и написать небольшое введение. Под катом описание этого инструмента и небольшой туториал.

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

Подборка ресурсов для соискателя на вакансию программист

Reading time2 min
Views18K



Занимаясь с 2013 г. обучением Java и трудоустройством выпускников, я накопил достаточно большую коллекцию ссылок на темы составления резюме, онлайн тестов, подготовки к собеседованию и прохождения интервью, поиска работы и советов новичкам. Часть подходит всем кандидатам, часть (по подготовке) специфична для Java. Предлагаю Вашему вниманию эту подборку:

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

Фантастические инди-игры: Odyssey, Kerbal Space Program, ChromaGun и другие

Reading time4 min
Views28K


Инди-игры — это прибежище для программистов, которые мечтают делать игры, но не хотят быть мелким винтиком в большой игровой корпорации. Конечно, в инди-сфере бюджеты просто смешные по меркам крупных издателей и разработчиков, но зато признания — и окупаемости с прибылью — добиваются по-настоящему талантливые игры, а не те, в раскрутку которых вбуханы мегабаксы. Не поймите неправильно: большой бюджет вовсе не компенсирует бездарность. Но всё же талант и с небольшими вложениями может сделать игру, которая западёт в душу, а бездушной корпоративной машине и щедрые инвестиции не гарантируют всенародной геймерской любви. В общем, мы же тут на Гиктаймсе за прогрессивное светлое будущее, поэтому собрали горстку фантастических инди-игр, которые многим из нас пришлись по душе.

Total votes 29: ↑27 and ↓2+25
Comments41

Как я сделал тестер-оптимизатор для нахождения прибыльных стратегий на бирже

Reading time10 min
Views94K

Введение


image

В алгоритмическом трейдинге при создании механических торговых систем (МТС) очень важен вопрос времени жизни торговых алгоритмов. Да, и найти их в принципе достаточно сложно. В условиях постоянно меняющегося рынка рано или поздно наступает момент, когда даже самый совершенный и прибыльный алгоритм начинает приносить убытки. И его нужно, что называется, «подкручивать» или оптимизировать под текущие условия рынка. Одними из самых распространенных являются торговые системы (ТС), работающие со свечными графиками с их многообразием индикаторов для технического анализа.
Читать дальше →
Total votes 130: ↑105 and ↓25+80
Comments61

Push уведомления в Android. Грабли, костыли и велосипеды

Reading time6 min
Views148K
На написание данной статьи меня подтолкнула задача, которая была поставлена передо мной в одном из рабочих проектов: реализовать Push-уведомления в приложении. Казалось, все просто: штудируешь документацию, примеры и вперед. К тому же, опыт работы с уведомлениями уже был. Но не тут то было…
А что же все таки было?
Total votes 20: ↑16 and ↓4+12
Comments21

Секта свидетелей 144 Гц и ультрашироких форматов

Reading time8 min
Views41K
В жизни ПК-пользователя есть такие ключевые точки, которые меняют отношение к тому, что находится у него «под капотом» или перед глазами. Кто-то открывает для себя Windows 10 или Linux, кто-то осознаёт, что удалось собрать крутейшую игровую машинку в Mini-ITX корпусе, которую ещё и не слышно по ночам. Сюда же можно отнести и 4k-монитор (особенно с небольшой диагональю и адской плотностью пикселей) SSD, какие-нибудь SLI или Crossfire, 32-64 гига оперативки… Что-то безумно радует и оставляет жить с улыбкой во все 32 гигабайта зуба, что-то приводит к разочарованию.



Своё «Вау, круто!» я регулярно обновляю то одним, то другим способом. Больше пяти лет назад мой старый 27-дюймовый Samsung с разрешением 2560х1440 казался мне чем-то невероятным, затем я познакомился с 144-Гц мониторами и G-sync, успел пообщаться с суперширокоформатниками 21 к 9, изогнутыми дисплеями и прочими радостями жизни. Сегодня у меня на столе монитор, который сочетает в себе целый ряд таких плюшек. 35", 21:9, фантастические 160 Гц скорости обновления матрицы и изогнутый дисплей. И пусть его разрешение не заставляет пустить скупую слезу и сказать «да, ты — моя мечта», он все ещё чертовски хорош, и вот почему.
Читать дальше →
Total votes 27: ↑20 and ↓7+13
Comments115

Qt / QML REST Client

Reading time29 min
Views16K
Увидел сегодня в ленте статью и вспомнил, что хотел ведь про свой проект пару строк на Хабр написать.

В общем, некоторое время я работал техлидом с программистами iOS/Android, которые много использовали в своем коде API на Django/Yii2/проприетарщине. И посмотрев со стороны на инструменты, имеющиеся у них для работы с REST API, я решил нечто подобное добавить и в Qt, т.к. нормальных средств по работе с REST с использованием Qt моделей не существовало.

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

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

Введение в понятие энтропии и ее многоликость

Reading time5 min
Views64K
image
Как может показаться, анализ сигналов и данных — тема достаточно хорошо изученная и уже сотни раз проговоренная. Но есть в ней и некоторые провалы. В последние годы словом «энтропия» бросаются все кому не лень, толком и не понимая, о чем говорят. Хаос — да, беспорядок — да, в термодинамике используется — вроде тоже да, применительно к сигналам — и тут да. Хочется хотя бы немного прояснить этот момент и дать направление тем, кто захочет узнать чуть больше об энтропии. Поговорим об энтропийном анализе данных.
Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments58

Байесовская нейронная сеть — потому что а почему бы и нет, черт возьми (часть 1)

Reading time16 min
Views92K
То, о чем я попытаюсь сейчас рассказать, выглядит как настоящая магия.

Если вы что-то знали о нейронных сетях до этого — забудьте это и не вспоминайте, как страшный сон.
Если вы не знали ничего — вам же легче, полпути уже пройдено.
Если вы на «ты» с байесовской статистикой, читали вот эту и вот эту статьи из Deepmind — не обращайте внимания на предыдущие две строчки и разрешите потом записаться к вам на консультацию по одному богословскому вопросу.

Итак, магия:


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

Читать дальше →
Total votes 83: ↑82 and ↓1+81
Comments64

Information

Rating
2,363-rd
Registered
Activity