Сен 072014
 

В давние времена, мониторинг температуры в серверной был делом не дешевым, а главное не тривиальным.

Мне приходилось иметь дело с устройством NetPing, которое по сети, по протоколу SNMP, позволяло считывать данные о температуре и в зависимости от ее значение выполнять заданные действия. Устройство периодически зависало само, потому нужно было мониторить и его, по необходимости дергая питание вручную. Но иного выхода не было – даже эта простая железка в те времена стоила не малых денег, которых в бюджетном учреждении не было.

Сейчас ситуация изменилась и стало доступное огромное количество устройств с различными датчиками, шинами, “не скучными корпусами” по вполне доступной цене.

Но я расскажу, каким образом была решена задача по мониторингу температуры мною.

Были приобретены Arduino Nano, датчик температуры и влажности DHT22 и резистор на 4-6 кОм. Общая стоимость деталей составила 280 рублей.
Continue reading »

 Опубликовано в 14:49
Сен 072014
 

Скрипт arduino-serial.sh:

#!/bin/sh
#Последовательный порт, через который работаем с ардуиной
usbPort="/dev/ttyUSB0"
#Устанавливаем параметры последовательного порта
stty -F $usbPort 9600 raw 9600 -echo -cstopb
#Через две секунды, если порт существует, посылаем данные в порт. А сами продолжаем выполнение скрипта
sleep 2 && test -e $usbPort && echo "$1" | dd of=$usbPort 1>/dev/null 2>/dev/null &
#Читаем одну строку из порта
head -n 1 $usbPort

При запуске скрипта, в параметре передаем строку, которую оправим ардуине:

./arduino-serial.sh test

Через две секунды скрипт выведет в консоль то, что ответила ардуина.

Основное отличие от того что советуют на многих форумах – мы пишем и читаем из порта одним скриптом. Для этого сначала открываем порт на чтение программой head и ждем строку данных, а уж только после этого отправляем в порт запрос.

Строка которую отправит ардуина в последовательны порт обязательно должна оканчиваться символом переноса (метод Serial.println как раз то что нужно ;) )!

 Опубликовано в 01:47
Июл 222014
 

Столкнулся с необходимостью реализовать многопоточное приложении на языке lua.

Встроенный механизм coroutine (кооперативной многозадачности) “естественно” не подошел.

После долгого гугления был найден кандидат – библиотека  lualanes.

Основными доводами для ее использования стали:

  • реальная многопточность
  • простота использования
  • кроссплатформенность.

Пример многопоточного приложения:

--Подключаем библиотеку LuaLanes
local lanes = require "lanes".configure()
--Подключаем библиотеку LuaSocket (для реализации паузы)
lanes.require("socket")

--Тело первого потока
function firstThread()
    require("socket")
    while true do
		print("First thread")
		socket.sleep(0.5)
    end
end

--Тело второго потока
function secondThread()
    require("socket")
    while true do
		print("Second thread")
		socket.sleep(0.9)
    end
end

--Запускаем первый поток
genFirstThread = lanes.gen( "*",firstThread )()
--Запускаем второй поток
genSecondThread = lanes.gen( "*",secondThread )()

--Уходим в бесконечный цикл
while true do
    socket.sleep(1)
end

Больше примеров можно найти среди исходников библиотеки.

Для себя были собраны deb пакеты (проверены в debian и ubuntu).

И самое главное – библиотека собирается под OpenWRT. Тут можно взять Makefile (позже надеюсь войдет в upstream). А тут лежат собранные для OpenWRT пакеты (в том числе для CyberWRT).

UPD: На 1.08.2014 пакет включен в репозиторий CyberWRT и добавлен в trunk OpenWRT.

 Опубликовано в 23:36
Авг 132013
 

Возникло желание внедрить во вражескую сущность немного православных генов! использовать Unix утилиты в Windows.
С учетом не широкого выбора остановился на cygwin.
По ходу дела был найден отличный скрипт apt-cyg – хорошая такая замена дебиановскому APT-у.
Вот только со времен последнего коммита прошло 3 года и репозиторий cygwin похоже сменил свою структуру.
Если раньше (судя по коду утилиты) была только ветка x86, то теперь присутствует еще и x86_64.
А потому корректно работать скрипт отказался.

Письмо автору написал, но для нуждающихся выкладываю diff (для ревизии r18):

--- apt-cyg	2013-08-13 00:14:33.474995644 +0700
+++ apt-cyg2	2013-08-13 00:40:08.292016974 +0700
@@ -95,7 +95,13 @@
   then
     touch setup.ini
     mv setup.ini setup.ini-save
-    wget -N $mirror/setup.bz2
+    if [ `uname -m` = "x86_64" ]
+    then
+      arch="x86_64"
+    else
+      arch="x86"
+    fi
+    wget -N $mirror/$arch/setup.bz2
     if test -e setup.bz2 && test $? -eq 0
     then
       bunzip2 setup.bz2

Для совсем нуждающихся весь скрипт с исправлением под катом.

UPD: Тут форк. Обновляется.
Continue reading »

 Опубликовано в 00:53
Июл 192013
 

Настройка OpenVPN сервера в Debian/Ubuntu Linux/Windows.
Набросал небольшой мануал.
Для единичной настройки объединения удаленных офисов едва ли подойдет в связи с чрезмерной избыточностью.
Но если вы часто пользуетесь VPN-ом – то что нужно.
Единожды накидав скрипт – можно в течении пары минут сгенерировать необходимое количество ключей, сформировать конфигурационные файлы для Windows и Linux клиентов и серверов.

 Опубликовано в 21:01
Май 242012
 

Было принято решение отказаться от ведения списка контактов и календаря у гугла в пользу своего сервера. После долгих поисков нарисовалась такая связка ПО:

  1. Owncloud
  2. Thunderbird
  3. SoGo Connector
  4. CalDAV-Sync beta
  5. CardDAV-Sync beta
  6. Lightning

Варианта работы с OwnCloud  два: использовать один из публичных серверов или установить на свой хостинг. Кто предпочитает первый вариант – следующий абзац могут пропустить.

Установка OwnCloud трудностей не вызовет:

  • Скачиваем архив последней стабильной версии (на данный момент это 4.0.0)
  • Распаковываем его в нужный каталог
  • Создаем Virtual Host в Apache
  • Устанавливаем MySql
  • Переходим на страницу OwnCloud и следуем инструкциям для дальнейшей установки

это кратко, а подробноее про установку OwnCloud можно почитать на официальном сайте.

Начнем с переноса контактов. Для этого требуется выгрузить контакты из Android-а в .vcf файл:

Continue reading »

 Опубликовано в 11:37
Май 042012
 

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

  1. Сквозная авторизация
  2. Автоматическое создание тем обсуждений для статей в блоге
  3. Управление сообщениями форума из панели управления WP
  4. Человекочитаемые URL (названия веток форума в строке адреса, вроде того как это реализовано в WP и Mediawiki)

Continue reading »

 Опубликовано в 16:54
Ноя 272011
 

Дело Дениски Попова процветает и с регионального ТВ доросло до федерального :)

Как утверждают авторы техноблога, в случае Buffy интеграция с соцсетью будет более тесная. Ключевым моментом станет поддержка HTML5 – вернее, мобильной платформы самого Facebook, построенной с использованием этого языка программирования.


.
Кстати! На запрос этого видео, на оф. сайте, ошибочка выдается. Такой уж он, этот дот нэт.

 Опубликовано в 18:14
Июн 082011
 

Изменения:

  1. Немного перепотрошен исходный код. С увеличением функционала – количество строк уменьшено.
  2. Добавлен раздел “Литература”. В данном разделе будут описаны книги с открытыми лицензиями. К каждой программе можно привязать заданные книги
  3. Чуток подправлен интерфейс
  4. Исправлена часть найденных мелких багов
  5. Количество описанных программ перевалило за 500. К большинству программ указаны лицензии, добавлены скриншоты

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

 Опубликовано в 14:39
Мар 012011
 

Настройка почтового сервера… Этим можно заниматься вечно и всегда будет куда стремится.
Вот, что требовалось до установки:

  1. Требования
  2. Хранение почты на сервере
  3. Фильтрация спама
  4. Проверка вложений на вирусы
  5. Возможность использовать дополнительные домены
  6. Средние нагрузки (250+ пользователей)
  7. Списки рассылок
  8. WEB клиент

Что использовалось:

  1. Postfix
  2. Courier
  3. Amavis
  4. Spamassassin
  5. Razor
  6. ClamAV
  7. Roundcube
  8. Mailman
  9. Mailgraph
  10. AwStats
  11. MySQL
  12. Saslauth
  13. phpMyAdmin

Вот тут очень подробно описал как это делал.

На данный момент почтовик работает в продакшене две недели.

 Опубликовано в 13:22