Search
Write a publication
Pull to refresh
-1
0
Юрий Лунев @bitterman

Embedded Linux

Send message

RFID-метка на простой логике

Reading time25 min
Views205K
Объявлено новое соревнование 7400, и нужно сделать что-то новое. Нельзя ударить в грязь лицом после победы в прошлом году ;)

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

Я устроил мозговой штурм с моими товарищами: Педерсеном (Pedersen), Асбьёрном (Asbjørn) и Флеммингом (Flemming), которые тут же придумали множество смешных идей. И вот Флемминг упомянул RFID (он разработчик системы управления доступом, которая основана на RFID). А вот это уже мысль. Конечно, первые мысли были об RFID-считывателе, но мы уже собрали их довольно много, и это было скучно. Однако, появилась идея сделать RFID-метку. Я не знаю, кто упомянул это первым, и, как обычно в мозговом штурме, идеи рождаются коллективным разумом. Итак, решено сделать RFID-метку, собранную исключительно на 7400-ой логике.
Много текста и картинок

Подводные камни shell скриптинга

Reading time3 min
Views24K
Несмотря на повсеместное использование графики, shell не теряет своей актуальности и по сей день. А порой позволяет выполнять операции значительно быстрее и проще, нежели в графическом окружении. Однако есть множество вещей, о которых большинство даже не подозревает.
Я бы не хотел привязываться к какому-то определённому шеллу, тем не менее не каждая из рассмотренных ниже возможностей может быть POSIX совместима, однако гарантировано будет работать в ksh/bash/zsh.
Читать дальше →

PetaBox или где живет Интернет-архив archive.org

Reading time2 min
Views42K
Не так давно, 25 октября 2012 года, Internet Archive (archive.org) объявил о том, что объем архивированных из Интернета сайтов превысил 10 петабайт (10 240 терабайт). Но как и где это все хранится?

Узнать некоторые подробности, а также увидеть само хранилище, Вы сможете благодаря нашему небольшому обзору. Так как Хабрасторедж временно не работает, мы были вынуждены загрузить изображения на сервер ua-hosting.com.ua. Надеюсь, что выдержим, если нет — не пинайте сильно, позже изображения загрузим как надо :)

image
Читать дальше →

Создаем NUnit тесты в BDD стиле

Reading time3 min
Views12K
Тихим пятничным вечером я заканчивал свой рабочий день покрывая тестами реализованную логику. Названия тестов я тщательно подбирал как и рекомендовал Рой. И вдруг я осознал, что понятное развернутое название теста превратилось в ужастного монстра и совсем перестало быть понятным. И более того перестало помещаться в 120 символов на экране.

И вот я вспомнил что мне где-то встечалось понятиe Behavior-Driven Development и тесты написанные в этом стиле намного читабельнее и понятнее. По запросу «nunit bdd» гугл выдает совсем немного результатов, но этот пост навел меня на интересную мысль. Методы Given и When не дают четкого описания условия и тем более описать больше чем одно условие наглядно не получится. Я решил слегка доработать решение.

Вот, кстати, то самое имя теста:
CreateMonthlyPaymentInvoice_WhenCustomerIsRegularCompany_ShouldCreateMonthlyUsageInvoiceWithoutBankFee.
Жутко, правда?
Читать дальше →

Реализация идеи беспроводного уровнемера

Reading time4 min
Views72K
В процессе работы с установкой появилась задача сделать уровнемер в баки, т.к. периодически происходили случаи перелива, а когда 8-10 тонн воды оказываются в подвале, который когда-то был бассейном для испытания торпед, то вытянуть это все ведрами на третий этаж является очень непростым делом. Казалось бы ничего особенного в задаче нет, но появилось несколько сложностей.

Условия:
  • Объем баков: 2 по 8000 литров
  • Геопозиция баков: -2й этаж (8 метров под землей)
  • Перекрытия этажей: дерево
  • Необходимая точность определения уровня: ± 10 литров
  • Предупреждение о критических уровнях
  • Индикация на рабочем месте


Нерабочее и рабочее решение предлагается далее

Настройка Asterisk 1.8 + FreePBX 2.10 с нуля

Reading time9 min
Views345K
Данная статья является продолжением статьи по установке системы.
Наконец тем или иным образом у нас появился установленный Asterisk и FreePBX.

Опишу ситуацию немного подробнее для сравнения подойдет ли Вам наша схема работы. Мы небольшой интернет провайдер, нам нужна запись разговоров, очереди звонков на городские и мобильные телефоны, голосовое меню рассказывающее про акции с выбором в какой отдел попасть, и возможность быстро поставить перед всем этим сообщение об авариях на определенных улицах города, чтобы люди не перенапрягали тех поддержку, причем желательно бесплатно. Чтобы не покупать дорогие шлюзы мы решили сменить городские телефонные номера и купить пару номеров + десяток каналов у провайдера ip-телефонии. Кто то скажет что это ненадёжно и т.д. Только скажите- какая разница интернет провайдеру на городские телефоны, если у него упал весь интернет? Зато это дешево. Подключение нам обошлось всего то в 38 $, каждый телефонный номер в 2$ и линия в 1,2$ в месяц. После чего мы получили настройки даже без авторизации и к нашему ip адресу привязали аккаунт. Сразу хотелось бы оговорить как будет построена эта статья, чтобы не перегружать её тоннами скринов я опишу создание каждого элемента по одному разу(что советую проделать т.к. они понадобятся для ваших же последующих экспериментов), а потом уже распишу схему что на что ссылается в нашей схеме работы. Наверняка схема у вас будет другая, но зато сможете понять смысл. Описывать буду только те элементы, которые непосредственно понадобились при настройке.
Читать дальше →

Консоль для маководов: Beyond the GUI

Reading time6 min
Views221K
Доброго дня, уважаемые хабравчане-маководы!

Сегодня я расскажу как увеличить эффективность работы в Mac OS X за счёт использования консоли.

Лирическое отступление


Думаю, ни для кого не секрет, что Mac OS является Unix-based системой, но переработанной почти до неузнаваемости. Даже консоль засунули куда подальше — не сразу и найдёшь. И вся система нацелена на использование GUI, при дефолтных настройках даже переключение между кнопками по Tab не работает — без мыши никуда. И тем не менее, Мак — это не только окошки, не только док и лаунчер. Мак это ещё и вся мощь shell скриптов и консоли!

Если Вы пришли из мира M$, то для начала неплохо бы поучить общие команды shell'а, например, по вот этому учебному пособию. Как минимум, нужно усвоить команды перехода по каталогам и способы запуска программ и скриптов.

Если Вы пришли в мир Mac OS из мира Linux'а и FreeBSD, то, скорее всего, знаете как минимум основы shell-скриптинга. Но и для вас в статье может оказаться кое-что интересное, ведь в маке есть уникальные консольные команды, которые так же полезно знать.

Вот о некоторых особенностях маковской консоли далее и пойдёт речь.
Поехали!

Как связать два asterisk-сервера (часть вторая. IAX2)

Reading time3 min
Views47K
image
Статья для начинающих астерисководов.
Итак, имеем два астериска.
Задача — организовать прямой дозвон через префикс туда и обратно по IAX2.
Исходные данные:
Астериск 1.4 на обеих концах
1. samara.asterisk.ru — внешнее DNS имя первого астериска.
2. kazan.asterisk.ru — внешнее DNS имя второго астериска. Пусть он имеет несколько провайдеров (например, kazan2.asterisk.ru, kazan3.asterisk.ru).

Обратимся к автомобильным кодам регионов.
Тогда дозвон из Самары будет 9-16-<номер>.
Из Казани 9-63-<номер>.
Читать дальше →

Будьте добры к программистам

Reading time2 min
Views110K
— Тебе так повезло, что ты программист. Хотел бы я быть программистом.
— А почему ты не научишься?
— Я пытался, заходил на codeacademy и другие сайты, но это не моё.
— Да, программирование, действительно, не для всех.
— Тебе хорошо платят и ты можешь создавать разные вещи. Почти каждый день к тебе поступают сумасшедшие предложения минимум на 100 тысяч долларов.
— Да, это очень лестно. Немножко сносит крышу, если честно.
— Ты получаешь свою долю в компании, все уважают инженеров. Ты можешь воплотить любую идею в приложение и стать богатым. И тебе не нужно для этого никого нанимать.
— Вообще-то программирование делает меня несчастным.
Читать дальше →

LibreOffice в корпоративном секторе — к старту готов

Reading time4 min
Views38K
В данной статье мы рассмотрим возможность снижения затрат на офисное программное обеспечение путем замены стандартного для многих российских организаций офисного пакета Microsoft Office 2003/2007/2010 на LibreOffice 3.6.1, опишем возникшие у нас проблемы и способы их решения.
Читать дальше →

Спутниковый спидометр на STM32F1 и FreeRTOS

Reading time8 min
Views68K
В статье речь пойдёт о самодельном спидометре, получающем сведения о текущей скорости автомобиля, его координатах и времени со спутников GPS. Статья также, надеюсь, поможет тем, что делает первые шаги в освоении 32х-разрядных микроконтроллеров с ядром Cortex M и хочет освоить одну из операционных систем реального времени (RTOS) для применения в своих наработках.
Читать дальше →

Backup Academy: онлайн курсы и сертификация по бэкапу виртуальных машин

Reading time3 min
Views8K
Сегодня мы хотим вам рассказать про Бэкап Академию, ресурс для начинающих в области виртуализации: бесплатные онлайн видео-курсы и сертификация по бэкапу виртуальных машин для VMware и Hyper-V. Курсы направлены на изучение базовых технологий, принципов и методов бэкапа виртуальных машин, а не на обзор конкретных продуктов или решений производителей в этой области.

На кого ориентируется Бэкап Академия?


При создании Бэкап Академии мы думали в первую очередь про тех ИТ-специалистов, которые хотят развивать свою карьеру именно в сфере виртуализации, но еще не обладают достаточным опытом и знаниями в этой области.
Курсы будут интересны как совсем новичкам, так и тем, кто уже работает с VMware и Hyper-V. Все видео и сам ресурс представлены на английском языке.

О чем курсы?


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

Что дает сертификация?


Бэкап Академия дает возможность бесплатно сдать сертификационный экзамен, при удачном прохождении которого, пользователь получает именной сертификат со статусом Backup Academy Certified Professional. Человек, обладающий таким статусом, вполне готов обучаться дальше и получать уже более узкие сертификации, которые предлагают VMware, Hyper-V и другие вендоры, направленные уже на получение более узких специальных знаний, advanced level. Удачная сдача экзамена Бэкап Академии не гарантирует, что вы больше никогда не “завалите” все свои бэкапы, но по крайней мере дает базовый набор знаний и умений новичкам, которые еще не знают, почему, например, дедупликация – это хорошо, и почему тестирование бэкапов можно и нужно делать.
Читать дальше →

Scala как расширенная Java или Java++

Reading time4 min
Views27K
Java существует достаточно долго, на ней написано огромное количество софта и она является лидером в своей области. Однако Java не лишена недостатков. При проектировании языка важным критерием была простота и легкость изучения языка, и эта простота заставляет писать огромное количество лишнего кода, что бы компенсировать недостаточную гибкость языка: паттерны проектирования, XML конфиги, AOP, гетеры-сеттеры, try catch finaly синтаксис и т.д. Так же очевидно что не для всех задач чистый ООП подход является оптимальным, некоторые задачи намного эффективнее выполнять в функциональном стиле.

Существует много разных языков — Groovy, Python, Ruby, JRuby и еще много других, которые потенциально могут заменить java. Так почему же именно Scala?
Читать дальше →

Создание минидампов в проектах на C# 4.0, разрабатываемых в VS 2010

Reading time4 min
Views11K
Для создания минидампов в управляемой среде используются возможности библиотеки DbgHelp.dll. Рассмотрим применение ее функционала на примере готового проекта на WinForms.

Читать дальше →

Как два программиста хлеб пекли

Reading time5 min
Views263K


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

Итак, представим себе, что есть два программиста. Один из них умный, прочёл кучу статей на Хабре, знает каталог GoF наизусть, а Фаулера — в лицо. Другой же делает всё просто. Первого будут звать, например, Борис Н., а второго — Маркус П. Само собой, имена вымышленные, и все совпадения с реальными людьми и программистами случайны.

Итак, к ним обоим приходит проектный менеджер (если в вашей вселенной PM не ходит сам к программистам, назовите его как-то иначе, например BA или lead, сути это не изменит) и говорит:
— Ребята, нам нужно, чтобы делался хлеб.

Именно так, «делался», без уточнения способа производства.

Как же поступят наши программисты?
Читать дальше →

Оборудование спутниковой системы АвтоТрекер. Бортовой блок – что под капотом. GPRS и другие способы передачи данных

Reading time3 min
Views5.1K
В предыдущих постах мы говорили о том, что телеметрические данные с бортового блока передаются на диспетчерский сервер посредством сетей GSM. Они имеют развитую структуру по всем регионам РФ, высокую надежность и невысокую стоимость передачи информации. Передача данных осуществляется в первую очередь по каналам GPRS. Но в экстренных ситуациях, в момент настройки, активации или удаленной прошивки блока данные могут передаваться посредством SMS.
Читать дальше →

Как правильно скопировать массив и при чем тут SFINAE

Reading time6 min
Views29K
Копировать элементы из одного контейнера в другой? Нет ничего проще, универсальный алгоритм помещается в 5 строк:
template<class InputIterator, class OutputIterator>
OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result) {
    while(first != last) *result++ = *first++;
    return result;
}
Возможно вы узнали реализацию std::copy с cplusplus.com. Почему же реализация std::copy из GNU STL занимает 139 строк? Давайте разберемся.
Читать дальше →

LilacServer – коробка для создания сайтов на Java

Reading time4 min
Views23K
LilacServer - всё необходимое в одной коробке

В данной статье мне хотелось бы рассказать о новом программном продукте, который на днях стал доступным конечным пользователям. Автором этого программного продукта являюсь я, и поэтому мне вдвойне приятно поделиться с читателями информацией, которая наверняка кому-нибудь покажется интересной и полезной. Я работал над этим проектом 4 года (а то и больше, смотря от какого момента считать).

Итак, что же такое LilacServer?
Это веб-сервер, написанный на Java с использованием технологии Java NIO. Главным отличием его от прочих веб-серверов, созданных на Java (например, Tomcat или Resin), состоит в том, что это не только веб-сервер…
Читать дальше →

Оборудование спутниковой системы АвтоТрекер — что под капотом? Приемники ГЛОНАСС/GPS

Reading time5 min
Views14K
В прошлом посте я рассказал, что такое спутниковые системы мониторинга транспорта в целом и как они появились. Теперь начнем постепенно знакомиться с составом и компонентами системы. И начнем знакомство с аппаратной основы любой системы мониторинга – бортового навигационного терминала (или абонентского терминала или бортового блока, у каждого производителя обычно собственное обозначение). Бортовой блок представляет собой электронное устройство, включающее спутниковый модуль (GPS или ГЛОНАСС/GPS), модуль передачи данных (GSM-модем), набор интерфейсов для связи с внешними устройствами и датчиками (чаще всего это RS-232/485, CAN, 1-Wire, USB) и микроконтроллер, который всем этим управляет. Так же на борту присутствует некоторое количество флеш-памяти, иногда GSM-антенна встроена в плату, но это уже конструктивные особенности, о которых поговорим позже. Сегодня же хотелось поговорить об одном из основных компонентах бортового блока – спутниковом приемнике GPS/ГЛОНАСС.
Читать дальше →

Самый ценный совет по программированию, который я получил

Reading time1 min
Views16K
«Год или два, с момента начала работы в Bell Labs, я работал в паре с Кеном Томпсоном над интерактивным графическим языком, разработанным Джерардом Хольцманом (Gerard Holzmann). Я печатал быстрее, поэтому я сидел за клавиатурой, а Кен стоял позади меня. Мы работали быстро, и когда компилятор выдавал ошибку, я рефлективно начинал закапываться в проблему, изучая стек вызовов, вывод программы, запускал отладчик и так далее. Но Кен просто стоял рядом и думал, игнорируя меня и код, который мы только что написали. Вскоре я заметил закономерность: Кен зачастую понимал, в чем проблема, раньше меня и произносил: „Я знаю, что не так“. Обычно он был прав. Я понял, что Кен выстраивал ментальную модель кода и, когда что-то ломалось, это была ошибка в модели. И думая о том, как эта проблема могла возникнуть, он выяснял, в каком месте модель была неверна или где наш код мог неправильно эту модель отразить.
Читать дальше →

Information

Rating
Does not participate
Location
Таганрог, Ростовская обл., Россия
Registered
Activity