Pull to refresh
28
0
Илья @w32blaster

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

Send message

Пара слов о числах с плавающей точкой в Java

Reading time8 min
Views154K

Несколько дней назад мне на глаза попался занимательный такой вопрос, касающийся того, каков будет результат выполнения данного кода:
double a = 2.0 - 1.1;

или такого:
double f = 0.0;
for (int i=1; i <= 10; i++) {
	f += 0.1;
}

Вопреки всем моим ожиданиям, ответ: 0.89999999999999991 в первом случае и 0.99999999999999989 во втором.
Для тех, кто хочет узнать почему, а так же еще несколько занимательных фактов про этот тип данных, милости просим.

Читать дальше →
Total votes 84: ↑50 and ↓34+16
Comments32

Алгоритм Энигмы

Reading time5 min
Views151K
        В данном сообществе я нашел много статей про известную шифровальную машинку «Enigma», но нигде из них не описывался подробный алгоритм ее работы. Наверняка многие скажут, что это не нуждается в афишировании, — я же надеюсь, что кому-нибудь да будет полезно об этом узнать.
Читать дальше →
Total votes 58: ↑51 and ↓7+44
Comments15

Часы на 30 светодиодах

Reading time2 min
Views18K
Есть такая пословица — как начинаю что-нибудь делать на Arduino, так обычно часы получаются. Не будем отходить от этого правила и сделаем часы. Отмечу, что работа с микроконтроллерами (МК)) — это мое хобби. Мне понравился малый уровень вхождения для знакомства и освоения МК. Кроме того, как программиста по образованию привлекла возможность освоения новых технологий создание систем на базе МК.

Дизайн

Решение по дизайну навеян часами с сайта Огни Токио.Отображение в данном виде понравилось тем что несмотря на ограниченность возможности высветки времени 30 диодами, есть узнаваемый часовой круг и можно понять сколько времени с одного взгляда (после предварительной тренировки). Сейчас на часах 5 часов 46 минут.

Описание

Часы используют внутренний таймер. Тестирование такого решения показало точность не хуже ±1мин в трое суток. Больший период не тестировался. Для подключения 30 светодиодов необходима схема, которая бы уменьшила количество управляющих сигналов. Это могут быть декодеры, регистры. Однако есть довольно хитрая схема подключения светодиодов, которая добавляет волшебства этим часам.

Читать дальше →
Total votes 78: ↑64 and ↓14+50
Comments44

Домашняя автоматизация

Reading time5 min
Views67K

Введение


В один прекрасный день я получил по почте извещение о долге за горячую воду, по причине несвоевременного оповещения коммунальных служб о показаниях водомеров. К этому моменту я, праздного любопытства ради, осваивал WiFi радиомодуль от “Roving Networks” с целью «обучить» его дистанционно включать/отключать электрический водонагреватель для экономии электроэнергии при долгом отсутствии пользователей. И так все сошлось, что решил я свести эти задачи и еще некоторые задумки «умного дома» к практической реализации. Ну и конечно, было бы не интересно, если бы я использовал знакомые мне технологии, поэтому я решил использовать как можно больше нового и интересного.
Читать дальше →
Total votes 60: ↑58 and ↓2+56
Comments32

DIY-диммер для современных умелых рук

Reading time4 min
Views132K


Хотите собрать DIY-диммер, но нет желания/возможности возиться с самостоятельным травлением печатных плат? Пожаловав под кат вы научитесь «делать» такие же красивые платы. Готовый ZIP-архив для заказа на Китайских производствах ждет вас внутри.
Читать дальше →
Total votes 65: ↑56 and ↓9+47
Comments67

Производство светодиодного дисплея пилотной партии LaMetric

Reading time4 min
Views16K

Эта статья заинтересует тех, кто работает над собственным “хардварным” проектом и столкнулся с проблемой изготовления пилотной партии для проверки идеи в реальных условиях. История основана на собственном опыте в стартапе Smart Atoms при разработке нашего продукта LaMetric – умный светодиодный дисплей с возможностью персонализированной настройки.

В данной статье я хочу уделить внимание производству и пайке плат для экрана, а также, как без особых затрат повысить качество пайки не теряя драгоценное время.
Читать дальше →
Total votes 45: ↑42 and ↓3+39
Comments26

Как делать качественные печатные платы в домашних условиях.

Reading time2 min
Views393K
Любой электронный девайс требует соединения воедино кучи деталей. Конечно, можно спаять девайс на монтажной плате, но при этом велик риск наделать кучу ошибок, да и сам девайс будет выглядеть весьма стремно. Торчащие во все стороны провода оценят только любители трешдизайна. Поэтому, будем делать печатную плату!

А чтобы тебе было проще, я сделал видео урок на тему изготовления печатных плат методом Лазерного Утюга ака ЛУТ.

Полный цикл, от подготовки платы с куска текстолита, до сверления и лужения.
Читать дальше →
Total votes 123: ↑117 and ↓6+111
Comments136

Пишем веб сервис на Go (часть вторая)

Reading time18 min
Views26K
Продолжение статьи о том, как написать небольшое полнофункциональное приложение на Go.

В первой части мы реализовали REST API и научились собирать приходящие HTTP запросы. В этой части, мы покроем наше приложение тестами, добавим красивый веб-интерфейс на основе AngularJS и Bootstrap, и внедрим ограничение доступа для разных пользователей.
Напишем капельку кода на Go
Total votes 38: ↑34 and ↓4+30
Comments12

Программирование PIC16F876A. Собираем схему с плавно мигающим светодиодом

Reading time5 min
Views49K
Эта статья направлена на новичков в программировании микроконтроллеров семейства PIC16 от Microchip. В нашем случае, я выбрал немного превосходящий микроконтроллер для таких задач, а именно — PIC16F876A. Программирование микроконтроллера будем производить в MPLAB IDE.

Цель работы: собрать схему, которая будет мигать светодиодом, внимание, с применением ШИМ.

И так, цель задачи обозначили. Теперь перейдем к реализации наших планов.
Читать дальше →
Total votes 65: ↑55 and ↓10+45
Comments65

Использование GPIO из Python на Raspberry Pi

Reading time2 min
Views118K
Делюсь своим опытом, полученным при изучении задачи вынесенной в заголовок. В статье рассматриваются два варианта работы, которые можно использовать в Python-программах, обращающихся к портами GPIO Raspberry Pi.

Порты GPIO Raspberry Pi выглядят следующим образом:

image

Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments4

Контроллер управления влажностью на Atmega328

Reading time8 min
Views78K
Недавно столкнулся с тривиальной задачей — управление вытяжным вентилятором дома в ванной комнате.

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

Вторым очевидным решением было просто посадить вентилятор на отдельный выключатель и предоставить управление человеку. Но человеческий фактор таков, что вентилятор постоянно забывали включать, а если включали, то выключать. Эффективность работы вентилятора быстро стремилась к нулю.

Пришлось подключить к делу свое увлечение Arduino и несложными микроконтроллерами.
Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments25

Прототип. От идеи до опытной партии

Reading time3 min
Views58K
В данной статье хочу рассказать о своем опыте создания опытной партии достаточного простого изделия — ручки для экшн-камеры.

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


Читать дальше →
Total votes 45: ↑42 and ↓3+39
Comments23

Программируем nRF24LE1 через Raspberry PI и USBasp

Reading time4 min
Views85K
image
Некоторое время назад на хабре упоминались недорогие (от $6 ) радиомодули nRF24LE1 со встроенным микроконтроллером.На этих радиомодулях ребята из COOLRF планировали осуществлять свой проект, но в итоге «переехали» на более дорогой чип Atmega128RFA1, а nRF24LE1 как я понял отодвинули на второй план.

В статье мы рассмотрим возможность прошивки радиомодуля через Raspberry PI и USBasp а так же пару примеров кода на Си.
Читать дальше →
Total votes 33: ↑31 and ↓2+29
Comments12

Шпаргалка по шаблонам проектирования

Reading time2 min
Views1.4M

Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.

Под катом — много картинок.

Читать дальше →
Total votes 192: ↑179 and ↓13+166
Comments66

Контейнеры — это будущее облаков

Reading time7 min
Views41K
Ола, Хабрасообщество!

Введение


Данный доклад изначально был подготовлен для выступления на конференции компании FastVPS ROCK IT 2013, прошедшей 24-25 августа 2013 года в Городе Tallinn, Estonia.

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

Публикация имеет целью провести краткий обзор имеющихся на рынке open source средств для развертывания нескольких виртуальных окружений на базе физического сервера с Linux на борту, а также рассказать о преимуществах использования контейнеров для создания облаков :)

Open source решения на базе Linux для создания виртуальных окружений


Встречайте героев сегодняшнего рассказа!



Читать дальше →
Total votes 52: ↑48 and ↓4+44
Comments125

Собираем проект на RAM-диск при помощи Maven

Reading time3 min
Views12K
За 10 лет разработки веб-приложений с использованием технологий Java я успел повидать огромное число коллег-программистов и познакомиться с их методами организации рабочего процесса. И, к моему удивлению, абсолютное меньшинство когда-либо задумывалось над использованием RAM-диска для сборки проектов. Я думаю, что такая элементарная оптимизация просто не приходит в голову, постоянно занятую текущими задачами, дедлайнами и просто жизненными проблемами.

А между тем, сборка в память обладает двумя очень значительными преимуществами:
  • Значительное увеличение скорости сборки за счет отсутствия операций ввода-вывода на жесткий диск (в большей степени это касается классических жестких дисков, особенно со скоростью вращения 5400 оборотов в минуту)
  • Увеличение времени жизни вашего SSD за счет перемещения интенсивных операций записи в память

Если учесть, что в последние годы сильно вырос объем оперативной памяти на компьютере среднестатистического разработчика и повсеместно начинают применяться SSD, то аргументов «против» практически не остается.

Главная цель этой небольшой статьи — вызвать мысль: «А ведь действительно! И как я раньше об этом не подумал?».

Я опишу пример реализации такого подхода в Linux. Действия в других операционных системах будут практически идентичными, за исключением методов создания самого RAM-диска.

Читать дальше →
Total votes 16: ↑12 and ↓4+8
Comments22

Первые шаги со Stellaris LM4F120 launchpad evaluation board

Reading time9 min
Views28K
Завалялась у меня в столе плата Stellaris LM4F120, с которой я решил, наконец, разобраться. Писать будем программу, которая включает-выключает светодиоды, установленные на плату в ответ на нажатия имеющихся на плате кнопок.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments18

Ruby: cheatsheet для изучения

Reading time14 min
Views60K
Это — статья-roadmap-cheatsheet для изучающих Ruby. Вместо того, чтобы рассказывать очередной how-to я постараюсь расписать все те вещи, которые, на мой взгляд, можно изложить кратко и емко, с упором на то, что программисту пришедшему с других языков и платформ может показаться не очевидным, антипоисковым и просто затратным по времени на изучение без подсказок — на остальное просто дам ссылки. Не смотря на то, что в природе существует множество туториалов/кастов/книг/чего угодно по чему угодно — именно такого формата мне самому всегда не хватает. И по сути, это те вещи, которые чаще всего рассказываю при вопросах «а как оно вообще?», «с чего начать?», «а как делается такая вот штука?», «а какой gem лучше?». Кстати, пока работал над этой статьей на Хабре появилась похожая про Python — видимо, идея витает в воздухе.
Читать дальше →
Total votes 49: ↑49 and ↓0+49
Comments20

Самодельный билд-светофор в офис

Reading time4 min
Views39K

Предыстория


В связи в планируемым переходом на continious integration и прочтением пары статей о светофорах в офисе захотелось и себе заиметь такой теплый ламповый прибор. В результате он получился совсем не теплым и не ламповым, но об этом потом.

Кто интересовался этой темой, уже знает что цена нового светофора колеблется в районе $500. Попытки найти бывший в употреблении списанный прибор так и не увенчались успехом. Оба варианта никак не могли радовать бюджет и душу двух энтузиастов из офиса, поэтому было принято решение сделать светофор самому.
Читать дальше →
Total votes 26: ↑21 and ↓5+16
Comments30

Тестирование в Java. Spock Framework

Reading time15 min
Views69K

В предыдущих статьях на примерах JUnit и TestNG я упоминал о test-driven development(TDD) и data-driven testing(DDT). Но есть еще один активно набирающий популярность подход, behaviour-driven development(BDD). Это такое развитие TDD техники, при котором на тест смотрят не как на тестирование каких-то компонентов системы, а как на требования к функционалу. Если TDD оперирует такими понятиями, как тест или метод, то для BDD это спецификация и требования. Про эту технику уже говорили на хабре ранее:

Этот подход применим используя и JUnit, и TestNG. Но есть и другие инструменты заточенные именно под BDD. В этой статье я расскажу про такой фреймворк. Называется он Spock Framework и сочетает в себе не только принципы BDD, но и достоинства Groovy. Да-да, именно Groovy. И хотя используется Groovy, используется он и для тестирования Java кода. Примерами использования могут служить Spring, Grails, Tapestry5. Интересно? Тогда читаем дальше.
Читать дальше →
Total votes 42: ↑36 and ↓6+30
Comments9

Information

Rating
Does not participate
Location
Таллин, Эстония, Эстония
Date of birth
Registered
Activity