понедельник, 9 января 2017 г.

Поиск компромисса

Сейчас появилось свободное время, а значит есть возможность оглянуться назад и проанализировать выполненные проекты.
Одно я уяснил наверняка: есть две главные вещи, которые каждый менеджер программных разработок должен зарубить себе на носу.
Во-первых, он должен удерживать проект в начальных рамках. Если вы не в состоянии управлять объемом того, что программируется, вы обречены погибнуть в удушающих объятиях «ползучего фичеризма».
Во-вторых, это примат времени. Среди факторов, влияющих на окончательный исход, время оказывается тем, который управляет всеми остальными. В конце концов все остальное - это вопрос компромисса.
Кстати, это цитата, висела в черновиках целый год. Если кто-то подскажет откуда буду очень признателен, не удивлюсь если это из книги Мараско.

суббота, 7 января 2017 г.

Настройка Raspberry PI без монитора и клавиатруры

Всем привет!
Подарки, даже если они попадают в руки с опозданием все равно приятны, особенно если это малинка с экраном. Итак приступим!

  1. Скачать свежий дистрибутив, я взял RaspBian (https://www.raspberrypi.org/downloads/raspbian/)
  2. Развернуть дистрибутив на карточке, синхронизация скорее хорошая привычка, но лучше сделать.
    sudo dd if=./2016-11-25-raspbian-jessie.img of=/dev/mmcblk0 bs=4M sync
  3. "Передернуть" карточку (вытащить вставить, примонтировать), так как появились новые разделы.
  4. В разделе "boot" создать создать пустой файл "ssh", способов много, например: 
    echo 1>>/media/USERNAME/boot/ssh
  5. Настройка Wi-Fi 
    sudo nano /media/USERNAME/OS/etc/wpa_supplicant/wpa_supplicant.conf
    Добавляем строки
    network={
     ssid="MyWiFiNetwork"
     psk="MyWiFiPassword"
     key_mgmt=WPA-PSK
    }
  6. В принципе это все, вставляем карту в плату, вставляем WiFi адаптер, в 3-й версии он уже не нужен, подаем питание и наслаждаемся.
  7. Так как у меня еще и LCD монитор в комплекте, то помогла инструкция от waveshare и их драйвера.
    Подключаемся
    ssh pi@MyRaspberryPI
    Скачиваем и устанавливаем сразу
    wget http://www.waveshare.com/w/upload/4/4b/LCD-show-161112.tar.gz
    tar xvf LCD-show-161112.tar.gz 
    cd LCD-show/
    ./LCD35-show
    ВНИМАНИЕ, команды указаны для моего LCD 3,5. Внутри папки есть другие, варианты.
Имея SSH можно устанавливать все остальное.

среда, 27 апреля 2016 г.

Отключить спящий режим в Linux (Debian|Ubuntu)

Итак проблема: имеем старый ноутбук, который еще рано выбрасывать, с установленной серверной версией Linux. Закрываем крышку и... ноутбук засыпает... как все прекрасно понимают, необходимо отключить спящий режим.
Мне помог следующий рецепт:
sudo nano /etc/systemd/logind.conf
Находим строчку с параметром HandleLidSwitch.
При необходимости раскомментруем и ставим значение ignore.
HandleLidSwitch=ignore
после перезапускаем службу logind
sudo systemctl restart systemd-logind.service
Или перезагружаем систему
sudo reboot
Проверяем. Ура! У меня работает.

Источник:
http://askubuntu.com/questions/360615/ubuntu-server-13-10-now-goes-to-sleep-when-closing-laptop-lid

Еще более подробно об управлении питанием можно почитать тут: http://www.oldnix.org/systemd/
Вот выдержка из статьи

Управлением питанием ACPI
Для управления питанием, например действие при закрытой крышки ноутбука, нужно отредактировать файл /etc/systemd/logind.conf:
  • HandlePowerKey: действия при нажатии кнопки питания.
  • HandleSuspendKey: действия при нажатии кнопки спящего режима.
  • HandleHibernateKey: действия при нажатии кнопки ждущего режимаs.
  • HandleLidSwitch: действия при закрытии крышки ноутбука.
Эти переменные могут принимать следующие значения:
  • ignore (пропустить).
  • poweroff (выключить питание).
  • reboot (перезагрузка).
  • halt (завершить работу).
  • suspend (спящий режим).
  • hibernate (ждущий режим).
  • hybrid-sleep (гибридный сон).
  • lock (блокировка).
  • kexec (оперативное переключение между ядрами).
По умолчанию systemd использует следующие значения:
  • HandlePowerKey=poweroff
  • HandleSuspendKey=suspend
  • HandleHibernateKey=hibernate
  • HandleLidSwitch=suspend

Для вступления изменений в силу, выполним команду:
# systemctl restart systemd-logind

среда, 24 декабря 2014 г.

MySQL binary (blob) to integer

Жесть, еле нашел как можно преобразовать binary в integer

Алгоритм такой:

  1. Преобразовать в hex (16-тиричный формат)
  2. Сменить базу, т.е. преобразовать из 16-тиричного в 10-тиричное число
  3. Сконвертировать.

cast(conv(hex(BINARYDATA),16,10) as unsigned integer)

понедельник, 24 ноября 2014 г.

Except all от Itzik Ben-Gan

WITH EXCEPT_ALL
AS
(
SELECT
ROW_NUMBER()
OVER(PARTITION BY country, region, city
ORDER BY (SELECT 0)) AS rownum,
country, region, city
FROM HR.Employees

EXCEPT

SELECT
ROW_NUMBER()
OVER(PARTITION BY country, region, city
ORDER BY (SELECT 0)),
country, region, city
FROM Sales.Customers
)
SELECT country, region, city
FROM EXCEPT_ALL;

Intersect all от Itzik Ben-Gan

SELECT
ROW_NUMBER()
OVER(PARTITION BY country, region, city
ORDER BY (SELECT 0)) AS rownum,
country, region, city
FROM HR.Employees

INTERSECT

SELECT
ROW_NUMBER()
OVER(PARTITION BY country, region, city
ORDER BY (SELECT 0)),
country, region, city
FROM Sales.Customers;

WITH INTERSECT_ALL
AS
(
SELECT
ROW_NUMBER()
OVER(PARTITION BY country, region, city
ORDER BY (SELECT 0)) AS rownum,
country, region, city
FROM HR.Employees

INTERSECT

SELECT
ROW_NUMBER()
OVER(PARTITION BY country, region, city
ORDER BY (SELECT 0)),
country, region, city
FROM Sales.Customers
)
SELECT country, region, city
FROM INTERSECT_ALL;