В статье показано, как быстро можно сделать свою полноценную инспекцию для IDEA для языка Java. В инспекции будем проверять, что переопределены методы equals, hashСode для классов, используемых в качестве ключа в HashMap. Писать будем на Kotlin.
User
Достучаться до небес, или FSM на шаблонах
Здравствуйте! Меня зовут Александр, я работаю инженером-программистом микроконтроллеров.
Пишу на С/С++, причем предпочитаю плюсы, ибо верую в их эволюционную неизбежность в embedded.
Мир встроенного ПО, язык С++ динамично развиваются, поэтому разработчикам важно не отставать и поддерживать свои скиллы и наработки актуальными моменту.
Я стараюсь следовать этому очевидному посылу, благо небожители ведущие С++ программисты и консультанты щедро делятся своим опытом и идеями на разных площадках (например здесь, или здесь).
Некоторое время назад я посмотрел мощный доклад Сергея Федорова про построение конечного автомата с таблицей переходов на шаблонах.
Сложение двух чисел с плавающей запятой без потери точности
s = a+b;
z = s-a;
t = b-z;
то не кажется ли вам, что в результате его выполнения получится, что t=0? С точки зрения привычной математики действительных чисел это и правда так, а вот с точки зрения двоичной арифметики с плавающей запятой в переменной t будет кое-что другое. Там будет то, что спасает нас от потери точности при сложении чисел и . Кого интересует данная тема, прошу под кат.
Constraint Programming или как решить задачу коммивояжёра, просто описав её
Пожалуй, наиболее популярной парадигмой программирования является императивное программирование, но это не единственный вид программирования, широки известны функциональное и логическое программирование. Constraint Programming (Программирование в ограничениях/Ограниченное программирование) не так популярно. Но это очень мощный инструмент для решения комбинаторных задач. Вместо реализации алгоритма, который решает задачу, с последующей тратой кучи времени на его отладку, рефакторинг и оптимизацию, программирование с ограничениями позволяет вам просто описать модель в специальном синтаксисе, а особая программа (решатель) найдет решение для вас (или скажет, если их нет). Впечатляет не правда ли? Мне кажется, каждый программист должен знать о такой возможности.
Поддержание обратной совместимости: о ватерлинии айсберга
Прежде, чем начинать разговор о принципах проектирования расширяемого API, следует обсудить гигиенический минимум. Огромное количество проблем не случилось бы, если бы разработчики API чуть ответственнее подходили к обозначению зоны своей ответственности.
1. Предоставляйте минимальный объём функциональности
В любой момент времени ваше API подобно айсбергу: у него есть видимая (документированная) часть и невидимая — недокументированная. В хорошем API эти две части соотносятся друг с другом примерно как надводная и подводная часть настоящего айсберга, 1 к 10. Почему так? Из двух очевидных соображений.
Как говорить с сотрудниками. 7 аспектов, о которых забывают
И тогда пришло время остановиться и задуматься — какие ошибки люди допускают чаще всего. © Unsplash
Прошёл путь от тестировщика через архитектора и менеджера до руководителя, пусть небольшого, но горячо любимого и созданного с нуля, подразделения, в котором работает порядка 100 человек.
Слишком люблю обмениваться знаниями, потому, после организации различных обучающих активностей внутри Компании, захотелось пойти дальше и обсудить свои взгляды и идеи с более широкой аудиторией (если позволят модераторы).
Это моя первая статья — потому буду крайне рад комментариям и рекомендациям. Спасибо!
Zettelkasten: как один немецкий учёный стал невероятно продуктивным
Это перевод статьи Дэвида Клира о методе ведения заметок Zettelkasten, благодаря которому немецкий социолог Никлас Луман написал более 70 книг и 400 научных статей. Стоит читать, если вы хотите создать собственную базу знаний, систематизировать идеи и перестать забывать важные мысли.
Статья бережно перенесена из блога бегущего редактора. Кстати, следить за анонсами новых статей можно в моём телеграм-канале. Подписывайтесь, чтобы ничего не пропустить!
Как отсутствие вычислительных мощностей влияло на морские сражения в мировых войнах
Достичь достаточной осведомлённости о ситуации, когда GPS и компьютеров ещё не существовало, было трудной задачей
Подобная перспектива идеальна – но она была недоступной для адмиралов Первой и Второй мировых войн
"Сетецентрические боевые действия" – популярнейшая на данный момент военная концепция. В её рамках солдаты сражаются не только при помощи оружия, но и при помощи паутины датчиков и вычислительных мощностей, дающих им и их командирам превосходство в оценке ситуации на поле боя. Однако проблема, которую призван решить данный подход, существовала всегда. Я – здесь, противник где-то там. Как его найти? Как отслеживать? Как узнать, куда двигаться, после начала битвы? Как мне хотя бы свои войска отслеживать?
Задолго до того, как концепции интернета вещей заполонили всю планету, эскадры XX века первыми начали использовать систематический подход в ответе на эти вопросы. Паруса уступили место паровым двигателям, и европейские колонии расползлись по всему миру. Военные корабли начали передвигаться ещё быстрее и потребовали координации действий на ещё больших участках морей, чем ранее. Тем временем телеграфы и радио позволяли мгновенно обмениваться сообщениями на немыслимых до этого расстояниях. Всё это вместе совершило революцию в использовании военными флотами информации.
Представляем shell-operator: создавать операторы для Kubernetes стало ещё проще
Зачем?
Идея shell-operator довольно проста: подписаться на события от объектов Kubernetes, а при получении этих событий запустить внешнюю программу, предоставив ей информацию о событии:
Новая техника атак на основе Meltdown. Использование спекулятивных инструкций для детектирования виртуализации
Знакомство с ConcourseCI
Всем привет! Я заметил, что на Хабре очень мало информации про такой сервер сборки, как ConcourseCI. Я решил восполнить этот пробел и написать небольшое введение. Под катом описание этого инструмента и небольшой туториал.
Подборка ресурсов для соискателя на вакансию программист
Занимаясь с 2013 г. обучением Java и трудоустройством выпускников, я накопил достаточно большую коллекцию ссылок на темы составления резюме, онлайн тестов, подготовки к собеседованию и прохождения интервью, поиска работы и советов новичкам. Часть подходит всем кандидатам, часть (по подготовке) специфична для Java. Предлагаю Вашему вниманию эту подборку:
Фантастические инди-игры: Odyssey, Kerbal Space Program, ChromaGun и другие
Инди-игры — это прибежище для программистов, которые мечтают делать игры, но не хотят быть мелким винтиком в большой игровой корпорации. Конечно, в инди-сфере бюджеты просто смешные по меркам крупных издателей и разработчиков, но зато признания — и окупаемости с прибылью — добиваются по-настоящему талантливые игры, а не те, в раскрутку которых вбуханы мегабаксы. Не поймите неправильно: большой бюджет вовсе не компенсирует бездарность. Но всё же талант и с небольшими вложениями может сделать игру, которая западёт в душу, а бездушной корпоративной машине и щедрые инвестиции не гарантируют всенародной геймерской любви. В общем, мы же тут на Гиктаймсе за прогрессивное светлое будущее, поэтому собрали горстку фантастических инди-игр, которые многим из нас пришлись по душе.
Как я сделал тестер-оптимизатор для нахождения прибыльных стратегий на бирже
Введение
В алгоритмическом трейдинге при создании механических торговых систем (МТС) очень важен вопрос времени жизни торговых алгоритмов. Да, и найти их в принципе достаточно сложно. В условиях постоянно меняющегося рынка рано или поздно наступает момент, когда даже самый совершенный и прибыльный алгоритм начинает приносить убытки. И его нужно, что называется, «подкручивать» или оптимизировать под текущие условия рынка. Одними из самых распространенных являются торговые системы (ТС), работающие со свечными графиками с их многообразием индикаторов для технического анализа.
Push уведомления в Android. Грабли, костыли и велосипеды
Секта свидетелей 144 Гц и ультрашироких форматов
Своё «Вау, круто!» я регулярно обновляю то одним, то другим способом. Больше пяти лет назад мой старый 27-дюймовый Samsung с разрешением 2560х1440 казался мне чем-то невероятным, затем я познакомился с 144-Гц мониторами и G-sync, успел пообщаться с суперширокоформатниками 21 к 9, изогнутыми дисплеями и прочими радостями жизни. Сегодня у меня на столе монитор, который сочетает в себе целый ряд таких плюшек. 35", 21:9, фантастические 160 Гц скорости обновления матрицы и изогнутый дисплей. И пусть его разрешение не заставляет пустить скупую слезу и сказать «да, ты — моя мечта», он все ещё чертовски хорош, и вот почему.
Qt / QML REST Client
В общем, некоторое время я работал техлидом с программистами iOS/Android, которые много использовали в своем коде API на Django/Yii2/проприетарщине. И посмотрев со стороны на инструменты, имеющиеся у них для работы с REST API, я решил нечто подобное добавить и в Qt, т.к. нормальных средств по работе с REST с использованием Qt моделей не существовало.
Сказано — сделано. На картинке ниже получившаяся в итоге схема, а под ней, собственно описание идеи, архитектуры и краткая инструкция по использованию.
Введение в понятие энтропии и ее многоликость
Как может показаться, анализ сигналов и данных — тема достаточно хорошо изученная и уже сотни раз проговоренная. Но есть в ней и некоторые провалы. В последние годы словом «энтропия» бросаются все кому не лень, толком и не понимая, о чем говорят. Хаос — да, беспорядок — да, в термодинамике используется — вроде тоже да, применительно к сигналам — и тут да. Хочется хотя бы немного прояснить этот момент и дать направление тем, кто захочет узнать чуть больше об энтропии. Поговорим об энтропийном анализе данных.
Байесовская нейронная сеть — потому что а почему бы и нет, черт возьми (часть 1)
Если вы что-то знали о нейронных сетях до этого — забудьте это и не вспоминайте, как страшный сон.
Если вы не знали ничего — вам же легче, полпути уже пройдено.
Если вы на «ты» с байесовской статистикой, читали вот эту и вот эту статьи из Deepmind — не обращайте внимания на предыдущие две строчки
Итак, магия:
Слева — обычная и всем знакомая нейронная сеть, у которой каждая связь между парой нейронов задана каким-то числом (весом). Справа — нейронная сеть, веса которой представлены не числами, а демоническими облаками вероятности, колеблющимися всякий раз, когда дьявол играет в кости со вселенной. Именно ее мы в итоге и хотим получить. И если вы, как и я, озадаченно трясете головой и спрашиваете «а нафига все это нужно» — добро пожаловать под кат.
Information
- Rating
- 2,363-rd
- Registered
- Activity