Сообщения

Сообщения за 2014

Fedora 21 минификация JavaScript

При разработке сайтов иногда удобно конечный результат сжать в размере. На компьютере web-разработчика с ОС Fedora 21 можно установить для этого специальный инструмент:
sudo dnf install closure-compiler.noarch jarjar.noarch Без установки пакета jarjar  выходит ошибка:
/usr/bin/build-classpath: Could not find jarjar Java extension for this JVM /usr/bin/build-classpath: error: Some specified jars were not found После установки можно из консоли сжимать .js файлы. Для текущего каталога команда у меня выглядит так (для файла calculation.js):
closure-compiler --compilation_level SIMPLE_OPTIMIZATIONS --js calculation.js --js_output_file calculation-compiled.js В результате мы получим непонятный для человека, но подготовленный для компьютера файл calculation-compiled.js, который по размеру будет почти вдвое легче исходного.
Если требуется только проверить файл на наличие ошибок, то можно запустить со следующими параметрами: closure-compiler --compilation_level WHITESPACE_ONLY --js main.js

Подключение к Arduino различных элементов

Изображение
RGB светодиод с общим катодом Самая длинная ножка - катод, его подключаем на GND (земля). Остальные ножки отвечают за конкретный свет; их подключаем через резистор на 1 КОм на ШИМ (PWM) выход. Слева от катода одна ножка; отвечает за красный свет; подключаем через резистор, например, на D11. Справа от катода ножка, отвечающая за зелёный свет; подключаем через резистор, например, на D10. Последня ножка отвечает за синий свет; подключаем через резистор, например, на D9.
Пример плавного зажигания (и гашение) красного света:
int ledRed = 11; int ledGreen = 10; int ledBlue = 9; int brightness = 0;    // how bright the LED is int fadeAmount = 5;    // how many points to fade the LED by // the setup routine runs once when you press reset: void setup()  {   pinMode(ledRed, OUTPUT);   pinMode(ledGreen, OUTPUT);   pinMode(ledBlue, OUTPUT); } // the loop routine runs over and over again forever: void loop() {   // set the brightness of pin 9:   analogWrite(ledRed, brightness);      analogWr…

Mint 16 + Arduino Pro Mini + переходник FT232RL

Изображение
Для большего удобства программирования Arduino Pro Mini приобрёл переходник "5V 3.3V FT232RL USB To Serial 232 Adapter Download Cable Module For Arduino" в замен "PL2303HX USB To RS232 TTL Auto Converter Adapter Module For arduino", соединение через который я описал ранее. Этот переходник позволяет заливать программу сразу без ручного нажимания кнопки Reset на Arduino Pro Mini.
Сначала переходник FT232RL подключал к компьютеру через провод USB-удлинитель. Программа прошилась разок-другой, но как-то не всегда сразу. Выходила ошибка "stk500_recv(): programmer is not responding". Посмотрел, как определяется переходник компьютером:
sudo mc а потом /var/log/syslog. Увидел, что при подключении к USB компьютера без USB-удлинителя устройство опознаётся правильно и подключается на /dev/ttyUSB0, а вот через удлинитель что-то не так.
Теперь про непосредственно подключение переходника FT232RL к плате Arduino Pro Mini. На снимке ниже: FT232RL - DTR -> серый провод…

Красивое оформление CSS

Изображение
Мне часто приходится работать с CSS-файлами. Нашёлся удобный и быстрый способ приводить эти файлы в единообразный и удобный вид. По инструкции с сайта http://csscomb.com был установлен пакет csscomb:
sudo npm --proxy http://<myProxyIP>:<myProxyPort> install csscomb -g Потом сохранил себе созданный на мой вкус файл настроек /home/oleg/Documents/.csscomb.json:
{ "exclude": ["node_modules/**", "vendor/**"], "verbose": true, "remove-empty-rulesets": true, "always-semicolon": true, "color-case": "lower", "block-indent": " ", "color-shorthand": false, "element-case": "lower", "eof-newline": true, "leading-zero": false, "quotes": "double", "sort-order-fallback": "abc", "space-before-colon": "", "space-after-co…

Подсветка лестницы. Продолжение 1

Изображение
Собираем первую версию прототипа автоматической подсветки лестницы на макетной плате. Эта версия почти полностью соответствует схеме из статьи Автоматическая подсветка лестницы с помощью Arduino. Скетч так же подойдёт тот же за исключением своих показаний освещённости (измеряется в "попугаях").
Что может этот прототип Прототип позволяет зажигать и тушить светодиоды с заданной задержкой при определённом уровне освещённости (не загораются, если светло) и срабатывании одного из двух ультразвуковых дальномеров.
Что ещё предстоит добавить Необходимо доработать прототип, чтобы светодиоды загорались плавно (прикрутить ШИМ управление).
Нужно сделать режим дежурного света, когда первый и последний светодиоды загораются при снижении освещённости до определённого уровня.
Неплохо бы добавить кнопку для переключения режимов работы: всё выключено, полностью включено, автоматический режим, "весёлый" режим мигания (на случай праздника).
Самое главное, что выяснилось в процессе п…

Подсветка лестницы

Изображение
Вступление По мотивам проекта автоматической подсветки лестницы с помощью Arduino, который, в свою очередь, создан по мотивам другого проекта, я дополнил и модернизировал схему и код и получил свой вариант. Это мой первый проект на Arduino, поэтому буду описывать всё "для чайников", т.е. что бы мне же было понятно, если позже захочу к этому вернуться.

Цель проекта Сделать красивую и функциональную подсветку под ступеньками лестницы на второй этаж в частном доме. В тёмное время суток должна загораться "дежурная" подсветка на первой и последней ступеньке, чтобы их было видно. Во время начала подъёма или спуска кого-либо по лестнице должна загораться подсветка всей лестницы. Также захотелось "весёлый" режим работы подсветки на случай праздника.

Что требуется Я использовал китайский аналог Arduino PRO Mini ATMEGA328P 5V 16MHZ в качестве центрального мозга.
Датчики: фоторезистор для замера освещённости (у меня Photoresistor GL5516 LDR), два ультразвуковых даль…

Yii 1. Авторизация - пользователи и роли в базе данных

Изображение
Введение Процесс настройки аутентификации и авторизации расписан в нескольких официальных и полуофициальных источниках:
http://www.yiiframework.com/doc/guide/1.1/ru/topics.auth
http://yiiframework.ru/doc/guide/ru/topics.auth
http://yiiframework.ru/doc/cookbook/ru/access.rbac.file
Но ни в одном из этих источников нет исчерпывающих рекомендаций для построения авторизации для случая, когда пользователи, роли и прочие правила хранятся в базе данных. Хотя схема для базы данных MySQL входит в поставку Yii: framework/web/auth/schema-mysql.sql
Эта схема содержит описание трёх таблиц: AuthAssignment, AuthItem и AuthItemChild. Схема:
До этого я завёл таблицы для пользоватлей и ролей: user и user_role:
Базовая настройка прав доступа Модель User у меня такая:
<?php /**  * This is the model class for table "user".  *  * The followings are the available columns in table 'user':  * @property integer $id  * @property string $username  * @property string $password  * @property stri…

Ошибка в phonegap 3.5

Настраивал в Fedora 20 проект с использованием phonegap 3.5. Делал всё по интсрукции http://phonegap.com/install/. Но после команды
phonegap run androidВыходило сообщение об ошибке: [phonegap] adding the Android platform... /home/oleg/.cordova/lib/android/cordova/3.5.0/bin/node_modules/q/q.js:126 throw e; ^ Package name must look like: com.company.Name { [Error: /home/oleg/.cordova/lib/android/cordova/3.5.0/bin/create: Command failed with exit code 8] code: 8 } [error] /home/oleg/.cordova/lib/android/cordova/3.5.0/bin/create: Command failed with exit code 8  Ошибка упоминается в интернете, но нигде не удалось найти решение. Путём проб и ошибок было выяснено, что проект создался не совсем корректно. А именно, файл config.xml создался внутри директории www, а нужно в корневой директории проета. Так же было установлено, что требуется версия API Android именно 19 (по умолчанию менеджер устанавливает более новую). Перенёс файл и установил н…

Git за прокси сервером

Для того, чтобы git полноценно заработал за прокси сервером с удалёнными репоиториями, следует установить глобальное значение прокси для git и сделать переопределение протокола git:// на https://. Для этого выполнить две команды по типу таких:

git config --global http.proxy http://192.168.0.254:3128 git config --global url."https://".insteadOf git://

Передача файлов через ssh

Для безопасной передачи файлов по сети в Fedora можно, например, воспользоваться консольным файловым менеджером MC или графическим Nautilus.
Для подключения в MC: [Левая панель/Shell-соединение] и вводим адрес [<login>@<address>:<port><path - если требуется>]. Нажимаем кнопку Дальше. Появится консольное приглашение ввести пароль. Вводим, жмём Enter и попадаем в нужную директорию на удалённом компьютере. Чтобы добавить в закладки нажимаем [Ctrl + \] и затем "Добавить текущий". Позже можно будет подключаться туда же по нажатию [Ctrl + \] и выбору сохранюшки.
В Nautilus то же самое подключение можно организовать через меню "Подключиться к серверу..." и ввести адрес в формате [ssh://<login>@<address>:<port><path - если требуется>] или [sftp://<login>@<address>:<port><path - если требуется>]. После правильного ввода адреса станет доступной кнопка Подключиться. Также выйдет запрос пароля. После усп…

Программы windows 32-bit под wine 64-bit

Для работы программ windows, которые используют файлы Excell или Access под wine'ом нужно установить jet40. Проще всего это сделать через winetricks. Но пакет jet40 рассчитан только на 32-разрядные системы, а wine по-умолчанию в 64-разрядной ОС так же 64-разрядный. Поэтому нужно перевести wine в 32-разрядный режим. Если уже что-то было установлено и это что-то не жалко, то удаляем директорию ~/.wine. Затем выполняем команду в терминале от своего пользователя:
WINEARCH=win32 winecfg После этого запускаем winetricks и устанавливаем jet40. После этого можно приступать к запуску программ, которые используют в своей работе элементы пакета MS Office.

Записки по Yii 1

Изображение
Эту статью буду пополнять зарубками на память. Часто бывает так что на какие-то мелочи уходит много времени. Не всегда удаётся нужное отыскать в интернете. Это такой мини-сборник мини-рецептов по Yii.
Текстовое поле с маской и текстом по-умолчанию Если в форме требуется вывести подпись (label) и текстовое поле с маской ввода и предустановленной строкой, то тут поможет стандартный виджет Yii CMaskedTextField, определённый в framework/web/widgets/CMaskedTextField.php. Мне понадобилось в предустановленный текст написать цифры, включая "9". А эта цифра предопределена как маска на все числа. Поэтому нужно переодределить числа и "высвободить" для себя девятку. Полный код, готовый для вставки в view-файл выглядит так:
<?php      echo $form->labelEx($model,'isbn');      $this->widget('CMaskedTextField', array(          'model' => $model,          'attribute' => 'isbn',          'mask' => '978-5-4353-01i…

Пишем Extension для Gnome 3

Изображение
Вступление Откуда взялась идея. Однажды пришлось моим родителям пересесть с Windows XP на Linux Mint с KDE. В старой операционке они привыкли пользоваться интернет-телефонией от Sipnet.ru. У этого провайдера есть своя программа Sippoint mini (только под Windows), которая сразу отображает баланс на счёте. Естесственно, в других софтофонах этой фишки нет. API тоже никакого нет. Нужно только лезть на их сайт в свой личный кабинет и там смотреть свой баланс. Не быстро и не удобно (никому не нравится вбивать логины и пароли, - особенно старшему поколению). Нужно было организовать быструю проверку баланса в Sipnet.ru с отображением прямо на рабочем столе.

Парсим страницу на bash'е Идея проверки баланса состоит в следующем. Некая программа периодически или по запросу заходит в личный кабинет, находит там баланс и сохраняет его в файл. Потом этот файл можно прочитать либо лично открыв, либо направив на него другую программу, которая удобно покажет баланс. Приступаем к первой части и пише…

Архивирование на Яндекс.Диск автоматоматически

Исходные данные Есть локальный и удалённый компьютеры. Оба работают под управлением Fedora (может быть любые другие Linux). На удалённом компьютере есть папка, с которой часто производится работа на локальном компьютере и поэтому для её сохранности нужно периодически копировать (архивировать) в защищённом виде (копировать будем на Яндекс.Диск). На удалённом компьютере настроен NFS сервер на нужную папку. На локальном компьютере настроено автоматическое монтирование Яндекс.Диска (по инструкции из статьи с Хабра Автозапуск Яндекс.Диска как службы systemd в Fedora 19) и удалённого раздела: в файле /etc/fstab (здесь и ниже во вставках обратным слэшем обозначается отбивка строки - в реальном файле нужно писать в одну строку):
... 192.168.0.112:/home/gravis/work /mnt/storage/Документы nfs \ defaults 0 0 В оригинальной инструкции подключения Яндекс.Диска я только заменил в файле /usr/lib/systemd/system/yandex-disk.service Requires=network.target на After=network.target. Это даёт нормаль…

Backup с помощью systemd вместо cron

Исходные данные Есть локальный и удалённый компьютеры. Оба работают под управлением Fedora (может быть любые другие Linux). На удалённом компьютере есть папка, которую нужно периодически копировать (синхронизировать) на локальный компьютер. На удалённом компьютере настроен NFS сервер на нужную папку. Копировать нужно на раздел с NTFS (да, так исторически сложилось) на локальном компьютере. На локальном компьютере настроено автоматическое монтирование нужного раздела с NTFS и удалённого раздела: в файле /etc/fstab:

...
UUID=2CB4C090B4C05DC8 /mnt/backup ntfs-3g defaults 0 0
192.168.0.112:/home/gravis/work /mnt/storage/work nfs defaults 0 0

Тут UUID - номер интересующего меня раздела с NTFS; /mnt/backup - заранее созданная директория, куда будут делаться бэкапы; при монтировании NFS указан адрес сервера и путь к интересующей директории на нём, а так же заранее созданная директория, откуда будут браться данные для бэкапа.

SELinux Естесственно, SELinux не отключаем, но включаем разрешения на…