Захожу я утром на свой сервер, а мне добрая система сообщает
Last failed login: Sat Jan 23 10:23:49 MSK 2016 from 183.3.202.106 on ssh:notty
There were 5278 failed login attempts since the last successful login.
Китайцы и прочий народ ломится, пытается пароль к руту пободрать. Не то, что бы это напрягало, но тем не менее, некрасиво.
-A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 20 -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set -j ACCEPT
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
Как это работает, можно почитать на хабре в комментах.
Поглядел в логи – ляпота и чистота.
Теперь (лично мне) надо поставить 6ю центось. Надо по двум причинам: попробовать графическую консоль (ибо в полном тексте как 7я оно не ставится), и надо для OpenVZ, у которой опять же с 7й еще есть проблемы.
Поначалу я попробовал SPICE, предлагаемый по умолчанию. Тормозит дико. Даже на толстых каналах. Плюс клиентов нет под всякие разные операционки. Попробовал vnc – вот это другое дело. Не скажу, что прямо как “на настоящем”, но работать вполне можно.
Теперь ssh -L 5900:10.100.0.254:5900 root@host и любым VNC клиентом на 127.0.0.1:5900. Пароль, как видно из команды – test. Просто, удобно и понятно.
Но мне понравилось, что можно в машину забраться и через virsh console. В винтуальной машине делаем
cat /etc/init/ttyS0.conf
stop on runlevel[016]
start on runlevel[345]
respawn
instance /dev/ttyS0
exec /sbin/mingetty /dev/ttyS0
В самый конец /etc/securetty добавляем ttyS0
И запускаем
initctl start ttyS0
И в общем, должны попасть через virsh console. Для логов загрузки, для kernel в /etc/grub.conf добавляем
console=ttyS0
У меня все получилось. Дальше иду как написано в вики OpenVZ. Ставлю, мигрирую и так далее.
Прошлый раз я закончил на том что мне удалось завести сертификат для vsemoe.com. Вручную, но тем не менее. Но доменчиков у меня целая куча и руками для них запрашивать сертификаты каждые три месяца … я слишком ленивый для этого. Да и интернет предлагает разные варианты решения этой проблемы.
Первым делом конфигурирую домены vsemoe.org и kaloshina.com аналогично vsemoe.com
bash-3.2$ host vsemoe.com
vsemoe.com has address 136.243.151.196
vsemoe.com has IPv6 address 2a01:4f8:171:1a43:5054:ff:fee4:b6d1
vsemoe.com mail is handled by 10 mail.multik.org.
bash-3.2$ host kaloshina.com
kaloshina.com has address 136.243.151.196
kaloshina.com has IPv6 address 2a01:4f8:171:1a43:5054:ff:fee4:b6d1
kaloshina.com mail is handled by 10 mail.multik.org.
bash-3.2$ host vsemoe.org
vsemoe.org has address 136.243.151.196
vsemoe.org has IPv6 address 2a01:4f8:171:1a43:5054:ff:fee4:b6d1
vsemoe.org mail is handled by 10 mail.multik.org.
Плюнул и создал каталог /opt/letsencrypt и переместил все туда
./letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --agree-tos --webroot-path=/opt/letsencrypt/ -d vsemoe.org
Updating letsencrypt and virtual environment dependencies......
Requesting root privileges to run with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --agree-tos --webroot-path=/opt/letsencrypt/ -d vsemoe.org
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/vsemoe.org/fullchain.pem. Your cert will
expire on 2016-04-18. To obtain a new version of the certificate in
the future, simply run Let's Encrypt again.
- If you like Let's Encrypt, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Сразу же скриптуем это 🙂
# cat /opt/ssl_get
#!/bin/bash
cd /root/letsencrypt
./letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --agree-tos --webroot-path=/opt/letsencrypt/ -d $1
и для обновления
# cat ssl_renew
#!/bin/bash
cd /root/letsencrypt
./letsencrypt-auto --renew certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --agree-tos --webroot-path=/opt/letsencrypt/ -d $1
service nginx restart
Проверяем. У меня работает. При этом автоматом включился SNI и прекрасно раздает с одного ип-адреса много https сайтов.
TL;DR; Статья грустная, в которой ничего почти не получилось, зато узнано много нового.
Почти вся полезная нагрузка сервера – это веб-сервера. Маленькие и не очень, требующие много места и просто пустышки. Так как я хочу сделать так, что бы все сервера были видны из интернета по SSL, то придется сделать ход конем.
Все запросы на http/https будут приходить на nginx. А тот будет работать SSL-декриптором и общаться с серверами уже по чистому http. Делать двойное шифрование-расшифрование я смысла не вижу – только трата процессорного времени. А те, кто знает про ipv6 – получат прямой доступ.
Из особенностей: машинам присваиваю имена сразу в полном формате: nginx.local.multik.org. При этом домен не пересекается с реальным, но является субдоменом. Потом, когда я буду поднимать единую систему авторизации, это сильно облегчит жизнь.
И ничего не работает. Вернее, все попытки возвращаются как connection refused. Однако если на хосте поднять nc -l 80, то все получается. Вывод – не работает порт-форвардинг.
Перезагружаю и вижу в браузере уже заставку apache. Значит, сработало. Сходил с ipv6 машинки – опять показало. Ура, значит еще один шаг сделан. Теперь надо зашифроваться.
Покупать сертификаты я пробовал – чертовски невыгодная штука. Но благодаря разным людям появился проект Let’s Encrypt, который позволяет получить сертификат бесплатно.
Что бы не мучаться с заставками, на vsemoe.com создал маленькую страничку
cat > index.html
this is vsemoe.com site
[root@outpost ~]# curl -4 vsemoe.com
this is vsemoe.com site
[root@outpost ~]# curl -6 vsemoe.com
this is vsemoe.com site
И все работает. Добавляю – падает. Читаю вывод iptables -S и понимаю, что там тупо все пакеты пытаются завернуться на nginx. Ни слова про интерфейс или адрес. Читаю маны и понимаю, что оно должно, но не работает. Пробую создать спец-правила
Но правила все равно продолжают добавляться. Нашел еще один баг 433484. Там предлагают на хуки повешать все.
Лень. Проще в /etc/rc.d/rc.local добавить строчки
echo "Waiting for libvirt start"
sleep 5
service iptables restart
service ip6tables restart
Теперь вроде работает. Все и везде.
git clone https://github.com/letsencrypt/letsencrypt letsencrypt
cd letsencrypt/
./letsencrypt-auto
Поставит дикую кучу всего, после чего завершится со словами
Creating virtual environment...
Updating letsencrypt and virtual environment dependencies......
Requesting root privileges to run with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt
No installers are available on your OS yet; try running "letsencrypt-auto certonly" to get a cert you can install manually
Ну хорошо, торможу nginx
service nginx stop
И пускаю скриптик
./letsencrypt-auto certonly
Он у меня спрашивает разные вещи (типа емайла или домена) и завершается с
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/vsemoe.com/fullchain.pem. Your cert will
expire on 2016-04-16. To obtain a new version of the certificate in
the future, simply run Let's Encrypt again.
- If you like Let's Encrypt, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Итак, надо виртуализироваться. Виртуализироваться будем через KVM потому что опять же продвигается редхатом, всеми поддерживается и так далее и тому подобное.
Для начала ставим кучку жутко “необходимого” софта: yum install qemu-kvm libvirt python-virtinst bridge-utils
Опять же, ничего такого вроде не появилось, за исключением пары интерфейсов с названиями virbr и адресом 192.168.122.1/24.
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
link/ether 52:54:00:ba:d8:82 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 500
link/ether 52:54:00:ba:d8:82 brd ff:ff:ff:ff:ff:ff
Первым делом мне надо добавить ipv6 адрес. Только не вздумайте искать по совпадениям и править руками. Есть гораздо более приятные средства.
virsh net-destroy default
virsh net-edit default
И добавим еще одно определение сети.
virsh net-start default
а в логах должно быть что-то похожее на
Jan 16 13:28:36 tower dnsmasq-dhcp[3544]: DHCP, IP range 10.100.0.100 -- 10.100.0.200, lease time 1h
Jan 16 13:28:36 tower dnsmasq-dhcp[3544]: DHCPv6, IP range 2a01:4f8:171:1a43:8000::1000 -- 2a01:4f8:171:1a43:8000::2000, lease time 1h
Jan 16 13:28:36 tower dnsmasq-dhcp[3544]: router advertisement on 2a01:4f8:171:1a43::
Jan 16 13:28:36 tower dnsmasq-dhcp[3544]: IPv6 router advertisement enabled
Откуда появился 2a01:4f8:171:1a43:8000::2/96 ?
Дело в том, что hetzner выдал мне ipv6 адрес 2a01:4f8:171:1a43::2/64. Типа подсеть на хост и все такое. Я взял с серединки (:8000) кусочек в 32 бита (128-96) или 4 миллиарда адресов. Ну или столько, сколько сейчас адресов в интернете 🙂 Из этого диапазона я выделил малюсенький кусочек в тысячу адресов для виртуалок. Думаю, что мне этого хватит 🙂 Ну и заодно поменял адрес для ipv4 на более подходящий мне.
Теперь самое время проверить доступность с другого хоста.
[root@outpost ~]# ping6 2a01:4f8:171:1a43:8000::2 -c 2
PING 2a01:4f8:171:1a43:8000::2(2a01:4f8:171:1a43:8000::2) 56 data bytes
64 bytes from 2a01:4f8:171:1a43:8000::2: icmp_seq=1 ttl=59 time=0.864 ms
64 bytes from 2a01:4f8:171:1a43:8000::2: icmp_seq=2 ttl=59 time=0.490 ms
--- 2a01:4f8:171:1a43:8000::2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.490/0.677/0.864/0.187 ms
[root@outpost ~]# ping6 2a01:4f8:171:1a43::2 -c 2
PING 2a01:4f8:171:1a43::2(2a01:4f8:171:1a43::2) 56 data bytes
64 bytes from 2a01:4f8:171:1a43::2: icmp_seq=1 ttl=59 time=0.341 ms
64 bytes from 2a01:4f8:171:1a43::2: icmp_seq=2 ttl=59 time=0.452 ms
--- 2a01:4f8:171:1a43::2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.341/0.396/0.452/0.058 ms
В общем, все как в ipv4, только маски дикие по размерам и не привычные.
Теперь надо поднять какую-нибудь виртуалку, что бы протестировать роутинг и прочие штуки.
Добавляем полезную утилиту для лентяев yum install virt-install virt-viewer
И останавливаемся. Потому что нам надо выделить немножко места для виртуалок.
lvcreate -L 100G -n vm vg0
mkfs.xfs /dev/vg0/vm
mkdir /vm
mcedit /etc/fstab
mount /vm
100Гб для начала хватит, а потом по необходимости растяну.
Так как я хардкорничаю, то добавляю необходимое для selinux
И выкачиваю дистрибутив CentOS (Тут немного бальзама: качается по ipv6. Мелочь, а приятно)
mkdir /vm/iso
cd /vm/iso
wget http://ftp.funet.fi/pub/mirrors/centos.org/7/isos/x86_64/CentOS-7-x86_64-DVD-1511.iso
Ну и теперь пора поставить тестовую машину. Пока без всяких ускорений, акселераций и прочего. Мне надо просто проверить сеть и все, что с ней связано.
virt-install --name test --ram 1024 --disk path=/vm/test.qcow2,size=8 --vcpus 1 --os-type linux --network bridge=virbr0 --location /vm/iso/CentOS-7-x86_64-DVD-1511.iso --extra-args='console=tty0 console=ttyS0,115200n8 serial' --nographics
Значение каждого параметра либо понятны сразу, либо описаны в документации или интернете. Если все сделали правильно (я каюсь, не сразу все сделал правильно, но это оставим за скобками), то вы должны увидеть текстовый интерфейс, очень похожий расположением элементов на графический. Инсталлятор понятен любому, кто хоть раз ставил центось. В общем, после указания всех шагов получим наглядную иллюстрацию процесса инсталляции.
После установки мы увидим консоль сервера и может туда залогиниться и даже попинговать ipv4 адреса. ipv6 не пингуется, потому что на интерфейсе сидит только локальный адрес.
Более того, можно даже немного поэстетствовать и использовать графический virt-manager. Правда, придется добавить немного пакетов, что бы графическая часть морды не ругалась.
Если virt-manager ругается на то, что консоль занята, значит вы не отцепились (Ctrl-]) от текстовой в другом терминале
Ну и затем с любого линукса ssh -X на машину и я получаю вот это.
В принципе, полный контроль над машинами. Иногда очень удобно, иногда нет.
Но я отвлекся. В виртуальной машине ipv4 есть, получен и даже работает, а ipv6 нет. И еще тормозит по диску уж больно жутко.
Диск лечится просто: тормозим машину, virsh edit test и где driver добавляем cache=’unsafe’ (для рабочих не надо так делать). После запускаем и видим вполне себе шустро бегающую машинку.
Теперь с сетью. Заходим на тестовую машину, запускаем dhclient -6 ens3 (ens3 это у меня сетевой интерфейс). И видим в логах
Jan 16 16:30:58 tower dnsmasq-dhcp[3544]: no address range available for DHCPv6 request via virbr0
Оппа! А почему? Вроде же определили все и выдали тоже все …
Прибиваем в тестовой машине адрес 2a01:4f8:171:1a43:8000::99 и пингуем – пингуется, но только с хоста. Это нормально.
Как прибить? В /etc/sysconfig/network-scripts/ifcfg-ens3
Так, раз пингуется, значит проблема не в адресе, а в настройках. Судя по аналогичным сообщениям, у меня проблемы с маской. Почитав еще немного интернетов, я дошел до такой конфигурации.
Как видите, разница только в маске. Как ни странно, но в этом отношении ipv6 (вернее, его роутинг в линуксе) ведет себя немного “странней”, чем для ipv4. Но в любом случае, прочитанное оказалось верным и машина получила свой адрес.
Jan 16 18:03:01 tower dnsmasq-dhcp[5491]: DHCPREQUEST(virbr0) 10.100.0.141 52:54:00:81:5b:8f
Jan 16 18:03:01 tower dnsmasq-dhcp[5491]: DHCPACK(virbr0) 10.100.0.141 52:54:00:81:5b:8f test
Jan 16 18:03:03 tower dnsmasq-dhcp[5491]: RTR-SOLICIT(virbr0)
Jan 16 18:03:03 tower dnsmasq-dhcp[5491]: RTR-ADVERT(virbr0) 2a01:4f8:171:1a43::
Jan 16 18:03:03 tower dnsmasq-dhcp[5491]: DHCPCONFIRM(virbr0) 00:01:00:01:1e:2d:1e:b1:52:54:00:81:5b:8f
Jan 16 18:03:04 tower dnsmasq-dhcp[5491]: DHCPSOLICIT(virbr0) 00:01:00:01:1e:2d:1e:b1:52:54:00:81:5b:8f
Jan 16 18:03:04 tower dnsmasq-dhcp[5491]: DHCPADVERTISE(virbr0) 2a01:4f8:171:1a43:8000::13c 00:01:00:01:1e:2d:1e:b1:52:54:00:81:5b:8f
Jan 16 18:03:05 tower dnsmasq-dhcp[5491]: DHCPREQUEST(virbr0) 00:01:00:01:1e:2d:1e:b1:52:54:00:81:5b:8f
Jan 16 18:03:05 tower dnsmasq-dhcp[5491]: DHCPREPLY(virbr0) 2a01:4f8:171:1a43:8000::13c 00:01:00:01:1e:2d:1e:b1:52:54:00:81:5b:8f
Вывод ip addr
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:81:5b:8f brd ff:ff:ff:ff:ff:ff
inet 10.100.0.141/24 brd 10.100.0.255 scope global dynamic ens3
valid_lft 3590sec preferred_lft 3590sec
inet6 2a01:4f8:171:1a43:8000::13c/128 scope global dynamic
valid_lft 3595sec preferred_lft 3595sec
inet6 fe80::5054:ff:fe81:5b8f/64 scope link
valid_lft forever preferred_lft forever
Как видно, сервер получил свой персональный ipv6 адрес, но ничего, кроме хоста пинговать не может. Причина простая как грабли – ipv6 не имеет NAT в принципе. Только роутинг.
Косвенным подтверждением является попытка попинговать адрес тестовой машины снаружи
[root@outpost ~]# ping6 2a01:4f8:171:1a43:8000::13c
PING 2a01:4f8:171:1a43:8000::13c(2a01:4f8:171:1a43:8000::13c) 56 data bytes
From 2a01:4f8:171:1a43::2 icmp_seq=1 Destination unreachable: Address unreachable
From 2a01:4f8:171:1a43::2 icmp_seq=2 Destination unreachable: Address unreachable
То есть пинг доходит до хоста, а тот отвечает, что не знает, куда роутить этот адрес. Аналогичное получим, если попытаемся напрямую с хоста попинговать. Ну нету этого адреса в таблице роутинга и все тут. Меняем маску на основном интерфейсе (64->128), что бы таблицу роутинга в порядок привести. Без перезагрузки
ip addr del 2a01:4f8:171:1a43::2/64 dev eth0
ip addr add 2a01:4f8:171:1a43::2/128 dev eth0
А с перезагрузкой в /etc/sysconfig/network-scripts/ifcfg-eth0
Что изменилось? С хоста началась пинговаться виртуалка и все. В общем, лично мне стало понятно, что ipv6 – это нифига не ipv4, только с бОльшими масками.
(чтение мануалов опущено)
В общем, с одной стороны все проще, а с другой – все сложнее. В ipv6 есть такая штука, как SLAAC, которая работает как некий навороченный DHCP сервер. Подробнее в маны.
Поэтому выкидываю нафиг все из настроек dnsmasq (virsh net-edit default) и оставляю только описание интерфейса.
И сеть в ней сразу заработала без каких-либо дополнительных команд. То, что и требовалось получить. Теперь можно и виртуалки клепать.
Как выдаются адреса? А очень просто: простым маппингом мак-адреса сетевой. Опять же за подробностями в документацию.
link/ether 52:54:00:e4:63:05 brd ff:ff:ff:ff:ff:ff
inet6 2a01:4f8:171:1a43:5054:ff:fee4:6305/64 scope global noprefixroute dynamic
Главное изменение теперь в “политике безопасности”.
Раньше: вся сетевая безопасность лежала на хосте. Гости получали уже отфильтрованный трафик, только на те порты, которые разрешены. Можно было спокойно открывать порты, не опасаясь ничего.
Теперь: каждый гость выставлен наружу “напрямую” и требует соответствующей защиты. И не важно, что ipv4 адреса из “приватной” сети. Фаирволл, обновление и выключение ненужного – наше все.
Не страшно и не сложно, но помнить надо.
Итак, считаю, что очередной шаг закрыт. Теперь надо переносить существующее (разумеется, с одновременным апгрейдом)
Пришла ко мне рассылка от hetzner. Дескать, дорогой валуабный клиент, сделали мы новую линейку серверов. Памяти больше, проц быстрее, диски толще а денег надо меньше. Приходи и заказывай. Походил я кругами и заказал. А то на старом уже диски сыпаться начали и своп образовываться.
Но просто так переносить сервисы абсолютно не интересно: на старом сервере у меня стоит OpenVZ и весь перенос будет заключаться в паре команд, да смене имен в DNS. Где же развитие и толчок вперед? В общем, потыкался я и решил:
– Сменить основную OS с CentOS 6 на CentOS 7. systemd, firewalld и прочие d в полном изобилии. Некий опыт есть, но чего-то в голову лезут пошлые мысли про RHCE.
– Привести в порядок DNS. Сейчас у меня часть серверов тут, часть там, часть вообще через одно место. Пусть все будет одинаковым и у меня.
– ipv6. Не очень-то и надо, но смотреть выше про развитие.
– SNI. Хватит тратить ipv4 адреса на каждый SSL сервер (да и дешевле будет).
– Да и вообще, надо все закриптовать. А то стыдоба – личный SVN голым ходит.
– Ну и KVM надо. Иногда жутко как требуется винда “в прекрасном и далеком”, а городить туннели не охота. Заодно получится бесплатный терминальный сервер для меня любимого.
– OwnCloud тоже не помешал бы, как и OpenVPN сервер для разностей нехороших.
– Ну и остальное по вкусу.
Практика прошлых лет показала, что принцип “ставим один сервер, выкидываем с него лишнее, а все сервисы в виртуалки” оправдал себя на все 100%. Да, при настройке чуть-чуть подумать надо, но зато потом абсолютно никаких проблем и заморочек. Ни с хакерами, ни с распределением нагрузки, ни с резервным копированием … да вообще ни с чем. Так буду и тут делать.
Идем в админку и заказываем новый сервер. Ждем получения письма, в котором пишут радостное:
Заходим, нас пускают …
Для приличия делаем passwd root и начинаем осматриваться. Сразу замечаю, что немцы стойко держат флаг “мы делаем нах ордунг” и сделали два больших рейда по 2Тб. Один отдали под /, другой под /home. Интересно, какой у них был сценарий использования? Но в любом случае, мне такое не надо.
Идем опять в консоль и перегружаемся в rescue
Выглядит именно тем, что я и заказывал (каюсь, да, не посмотрел раньше). Поэтому сразу набираем installimage
Там нам дают в mcedit поправить конфиг. Там я меняю имя сервера на tower.multik.org и ниже я показал, как указываю 16 гигов свопа, 512 мегабайт для /boot и все остальное отдать в LVM. В LVM прошу создать раздел / размером в 16 гигов. Остальное оставить нетронутым. Почему так мало? Так потому что все остальное – в виртуалки! В корне сервера делать лишнему абсолютно нечего, тут будут только штуки, связанные с внешним миром типа фаирволла.
Сохраняю (F2 или ESC-2), выхожу (ESC-0 или F10) и жду перезаливки сервера
Потом reboot, снова захожу (про ключи и их смену не говорю) и вуаля! Я в новом сервере.
Опять меняю пароль root.
Итак, на этом этапе я получил пустой и голый сервер. Что он умеет? Да ничего. Добрые немцы выкусили из образа вообще все (вот тут реально молодцы!) и на сервере есть только ssh и настроенная ipv4/ipv6 сеть.
Первым (опять первым, но тут все такое) делом обновляемся. yum update
Добавляем полезные программки yum install mc screen bind-utils iotop iftop
Включаем синхронизацию времени systemctl start ntpd && systemctl enable ntpd
и переходим к фаирволлу. yum install firewalld ; systemctl enable firewalld ; systemctl start firewalld (Почему firewalld? Потому что мне лень править правила для ipv4 и ipv6 одновременно. Ну и редхатом проталкивается)
Внешне ничего не изменилось, но теперь снаружи на машину можно зайти только по 22му порту. Проверить можно посмотрев правила iptables. Но я-то двигаюсь вперед, поэтому все должно быть по фен-шую.
systemctl status firewalld
и побалуемся с командой firewall-cmd
Если я правильно понял, то никаких активных правил нет, просто стоит public по умолчанию, в которой разрешен только dhcp-клиент и ssh. Все остальное запрещено. Вполне логичные правила, но опять же, мне не сильно подходят. Будем менять.
И вижу фигу. Ничего не изменилось. Оказывается, это фича. Скрипт видит, что зона public и так применена (ну и что, что по умолчанию, поэтому ничего не делает).
Меняю зону на home и обратно. Вот теперь показывает
Но лично мне не нужно, что бы было правило для dhcp клиента
Ну вот теперь хорошо. Ничего лишнего, все закрыто и замуровано. Остался последний шаг – применить все, что я тут натворил, в реальность
firewall-cmd --reload
Все, теперь и iptables показывает именно то, что полагается.
Как говорится, первый шаг сделан. Следующим – виртуализироваться. Но виртуализироваться хардкорно, поэтому ставим SELINUX=permissive для начала и перезагружаемся, проверяя правильность всего преднастроенного.
У меня выползла одна единственная проблема – предустановленный немцами chrony мешался ntpd. Удаляем его (yum remove chrony) и все.
В принципе, после пары месяцев владения уже можно описать свои впечатления от агрегата. Всякие “что внутри” легко можно найти в сети, поэтому повторяться не буду, только личные впечатления.
Итак, для начала о плохом. Внутри android 4.4.4. У самого андроида только одна проблема – кривой часовой пояс. Поэтому время звонков и смсок сдвинуто на час вперед. К сожалению, нормально лечится только рутованием аппарата, поэтому забил.
К самой оболочке есть только одна претензия – на всякие выпенждрежные штуки типа включения-выключения по расписанию разработчики забили. То есть оно может сработать, а может и не сработать. Но так как это именно выпендрежная штука, то никаких проблем она не доставляет.
В остальном вроде проблем нет. Все ставится, все работает … Кстати, работает очень долго. Как и предидущая модель, позволяет заряжаться не тогда, когда надо, а тогда, когда есть время. А если зарядиться забыл, то до вечера он дотянет без каких-либо проблем.
Этот график я снял в первые дни владения телефоном. Никаких заморочек типа “замораживания” или выключения беспроводных сетей не делалось. Владельцы модных самсунгов и айфонов нервно завидуют.
Как понятно из предыдущего поста, я отказался от SGS4A. Повторюсь: основной причиной стала крайне непродолжительная работа от аккумулятора. Для смартфона было подвигом продержаться сутки в режиме бережного использования (а в обычном у меня повсюду были зарядки). В остальном – шикарный агрегат.
Но надо было что-то выбрать на замену. Так как с недавнего времени я стал больше обращать внимания на личное удобство и удовольствие, чем на внешние понты, то передо мной открылся довольно-таки широкий выбор.
Сначала я ударился в крайности: хотел взять texet tm-511R. Неубиваемый телефон с диким временем автономной работы. Остановило только то, что он не умеет никак синхронизировать контакты. Вообще. А потом я попросту не смог его найти в магазинах поблизости. Хотя судя по интернет-сайтам этих магазинов, этот телефон у них был.
Потом решил вспомнить, для чего же я использую смартфон. В результате получилось следующее:
– Часы и будильник.
– Погодопоказыватель. В духе “брать ли зонтик” и “не замерзну ли я”.
– Музыкоигралка через проводную или bluetooth гарнитуру. Где-то по 3-4 часа минимум и каждый день.
– Навигация с пробками и без онных. Час в день примерно. Обычно вечером, когда мне надо выбрать, по какой нычке до дома доехать.
– Кофетуалеточиталка фейсбучиков, одноглазников и вконтактиков. Минут 15-20 в день.
– Книгочиталка. От 15-20 минут до 2-3 часов.
– Изредка по инету прошвырнуться или видео посмотреть. Совсем изредка какая-нибудь игрушка класса “tower defence”
И в принципе все. То есть мне не нужно 100500 гигов пямяти, много ядер процессора и прочих NFC с системой отслеживания взгляда и подсчета калорий.
На платформу мне пофиг. Хоть iOS, хоть Android, хоть WinRT. Все что мне надо, есть под все платформы.
Начал смотреть на то, что предлагается рынком. Благодаря активным действиям Марины Рожковой, из списка претендентов сразу был исключен Highscreen Boost. Пусть дальше маркетоидит и пиарит. Хотя может телефон и неплохой.
Потом был составлен список смартфонов с большой батарейкой. В этом мне очень сильно помог http://helpix.ru/articles/battery-test.html Правда там есть не все телефоны, но по разным обзорам можно достаточно точно установить корреляцию.
Следующим шагом стало отсеивание тех смартфонов, про которые ничего не известно таким ресурсам как 4pda.ru и xda-developers.com. Критерий простой: чем больше тем или страниц, тем больше вероятность, что все возможные глюки или фичи найдены, разжеваны и обрисованы.
И как-то кандидатов не осталось. Lenovo P780. Всякие характеристики и прочее можно прочитать в куче обзоров, поэтому повторяться не буду.
И сразу же первые впечатления по сравнению с S4A
– Да, он кое-где подтормаживает. На кофетуалетных приложениях и иногда. Для меня некритично.
– Да, у него разрешение экрана меньше. Но я не вижу разницы. Для меня и там и там гладко.
– У него чудесно настроенная вибра. Это просто надо щупать. Словами … ну она мягче и приятней.
– Карточку на 64Гб сожрал.
– У него прямо из коробки есть режим “как usb флешка”. Да, я в курсе, почему этот режим выкидывают. Но начхать, мне он нужнее, чем всякие рассуждения об удобстве мифических пользователей и программистов.
– В телефоне нету горы предустановленного и нестираемого дерьма на все случаи жизни. Одна игрушка (на первый взгляд город надо строить и развивать), загрузчик антивируса (на кой он на смартфоне?), какой-то навигатор и клиент твиттера. Может, потом удалю. А может и забью.
– Да, он не работает из коробки с WiFi каналами выше 11. Но пара команд из консоли и больше нет проблем.
– Да, у него нет 5GHz WiFi. Мне пофиг.
– Да, у него в комплекте OTG шнурок (бум считать, что бесплатно) и через него можно флешки читать и другие телефоны заряжать. Попробовал. Прикольно.
А теперь совершенно невозможное для 99% современных смартфонов. Включено все, что включается: от синхронизаций до интерфейсов, никаких заморочек с заморозками, остановками и прочим. Включил, понаставил всего, чего надо, дождался конца зарядки и пошел использовать в обычном режиме (только постоянно убирал подальше зарядки. рефлекс уже …). Еще раз: все настройки по умолчанию, как было из коробки.
Маленький горбик посредине – это я к компьютеру подключал для синхронизации музыки.
Посидел, поперечитывал свои записи и понял, что мало так сказать практики. В смысле все читали, что это круто, но почему-то никто не показывает, как это круто. Или почему это круто и за это надо платить денег. В общем, решил я написать малюсенький пост про практику. И закрыть вопрос про то, как отличить облака от кластеров.
На всякий случай у меня под боком есть два компьютера. Ну как компьютеры … по нынешним меркам они скорее обзываются калькуляторами. Но тем не менее все необходимое у них есть. Пару-тройку виртуалок они потянут, а больше для меня и не надо.
Упражнение первое или “мама, у нас все сломалось”. Везде пишут (ну и я тоже), что системы виртуализации позволяют осуществлять онлайн-миграцию. А как это поисходит вживую?
Вот вам пример. В одном окошке я запустил миграцию виртуальной машины с одной ноды “калькуляторного кластера” на другую, а во втором – просто посылал в сторону мигрируемой машины по пакету в секунду. Как видно на скриншоте, время недоступности машины составило 9 секунд. Общее время миграции было около 30 секунд. На настоящих кластерах время недоступности обычно не превышает и половины секунды. Много ли сервисов требуют для себя такого уровня доступности?
Или вот еще один пример, опять же многократно описываемый. Есть сервис, которому не хватает ресурсов.
Если посмотрите на правое окошко (там консоль одной из виртуалок), то там openssl показывает, что он может подсчитать только 11 тысяч хешей md2 за 0.15с. А потом команда free докладывает, что памяти всего 256 мегабайт. Одна команда в левом окошке (на ноде) и openssl уже подсчитывает 540 тысяч за 3 секунды (или 27 тыщ за то же время), а памяти стало уже гигабайт. И все это без остановки или перезагрузки сервиса.
И так можно крутить любой параметр у виртуалки: начиная от числа и скорости процессоров и заканчивая количеством дискового пространства у машины.
Для интереса предлагаю прикинуть, сколько потребуется времени и сил, что бы проделать подобное в обычной инфраструктуре. Удобно? Не то слово!
Надо развернуть новый сервер? Легко!
17 секунд (калькулятор, да) и у вас есть готовая машина, которой надо только выделить ресурсы.
А когда нужда в ней отпадет … секунда и ненужной машины больше нет.
Точно таким же образом машины можно клонировать или тиражировать, снапшотить для бекапа и выполнять кучу других полезных действий.
Повторюсь, все это сейчас позволяет делать любая система виртуализации.
Но все-таки, чем отличаются облака от кластеров? Ведь они построены на одних и тех же принципах, позволяют делать одно и то же с одним и тем же результатом.
Отличаются они одним. Системой управления всем этим великолепием.
Во-первых, считается что облака дают возможность обычному (в смысле не имеющему доступа до нод) пользователю самому управлять своими машинами. Критерий спорный, но вполне имеет право на жизнь, ибо я еще ни разу к примеру не встречал на кластерах биллинг. А вот для облаков это неприменный атрибут.
Во-вторых, системы управления заточены на разделение ресурсов. В кластере редко возникает необходимость отделить одну группу серверов от другой. В результате все сидят в нескольких VLAN’ах, разрулить которые легко руками. А в облаках тысячи (десятки, сотни – подставьте по вкусу) пользователей, которых надо развести по своим сетям и не давать серверам одного пользователя прямого доступа к серверам другого. Без системы управления, заточенной на облака, подобная затея попросту обречена на провал.
И наконец, облака тащат в себе всю … скажем так, специфику виртуализации. Скажем, для одного сервиса необходимы ноды, которые используют локальное хранилище, да и еще на SSD. А для другого хватит кусочка общего стораджа. Для каждого сервиса есть свои ограничения, требования, правила. И системы управления следят за тем (скажем, при миграциях), что бы каждый сервис работал на ресурсах того класса, который ему выделен, что бы не происходило overselling (или он был с заранее определенными параметрами) и так далее и тому подобное.
Поверьте, все это удержать в голове и рулить этим через консоль или какую-нибудь утилитку – абсолютно нереальная задача.
И вот за вот это вот снятие “головной боли админа” и просят производители денег. А так-то все можно сделать руками и из консоли …
Итак, несмотря на мои страшилки в предыдущих постах, вы все-таки решили использовать “облака” в своей деятельности. Хоть чуть-чуть, но использовать. Как выбрать то, что стоит нести в облака, а что не стоит?
Для этого есть несколько методик, ниже я попробую объяснить наиболее … подходящие, что ли.
Методика первая, пусть будет “секрет полишинеля”. В соответствии с ней в облако может отправиться любой сервис, который использует данные из внешнего мира или отдает их туда. Под это определение прекрасно подходят такие сервисы, как электронная почта, телефония и веб-сайт.
“Ну ладно, веб-сайт понятно, а как же с почтой и телефоном? Их смогут читать/слушать чужие люди?”. Да, при наличии соответствующих навыков или всяких судебных решений их и так будут читать и слушать чужие люди. Если говорить про телефон, то на операторе (тот, который выдал вам телефонный номер) уже стоит система, позволяющая прослушивать все телефонные разговоры, проходящие через него. А что касается внутренних переговоров, то они в большинстве случаев абсолютно никому не интересны и способны забить любой сервер. То же самое касается и почты. Буквально пара команд у провайдера, который предоставляет вам доступ в интернет, как весь ваш трафик оказывается у него как на ладони. И не обольщайтесь насчет страшных слов SSL/TLS – в подавляющем большинстве случаев все вскрывается так же легко, особенно при наличии административного ресурса. Правда, вынужден добавить ложку меда: по разговорам со знакомыми, такое используют очень редко, ибо во-первых, принцип “неуловимого джо” никто не отменял, а во-вторых, через налоговую сделать все необходимое гораздо проще.
Следующая методика “берите все, что нам негоже”. Тут в облака отправляются данные, которые вам не нужны прямо сейчас или которые нужны всем. Тут главное установить принцип, насколько эти данные вам не нужны. Скажем, данные от систем резервного копирования вам именно сейчас не нужны, занимают много места и хранение их рядом с резервируемыми системами прямо противоречит всем нормам. Так зашифруйте их посильнее и пусть лежат где-нибудь в Америке. Что касается данных которые нужны всем: зачем устраивать на своем сервере каталог “для скачки”? Ролики, дистрибутивы программ и прочие подобные штуки с удовольствием примут к себе системы CDN. Будут довольные и пользователи, которые будут скачивать необходимое им быстро и Вы, так как канал до вас (или вашего сервера) не будет загружаться.
И наконец, в облака удобно/выгодно отправлять то, что относится ИТшному понятию R&D. Говоря кратко, то, что запускается “на посмотреть”, меняется по двадцать раз на дню и наполняется тестовыми или сильно устаревшими данными.
Теперь про данные, которые нельзя отправлять в облака. Понятное дело, Вы сами сможете определить список того, что позволить прочитать другим нельзя. У кого-то это будет бухгалтерия, у кого-то данные о техпроцессе, в общем, у каждого свое. Тут надо просто садиться и разбираться.
Но (по крайней мере для России) есть одна категория, которую нельзя отправить в “облако”: персональные данные. Говоря простыми словами туда попадает все от паспортных данных и места проживания и до всяких медицинских анализов и выписок. Нельзя не потому что не получится, а потому что “атата, если обнаружат”: ни одно известное мне “облако” не использует сертифицированных средств защиты информации. Вроде в России потихоньку начали появляться провайдеры, которые обеспечивают обработку персональных данных, но там от облаков только название, да и ресурсы, которые они могут предоставить, вызывают лишь недоумение.
А теперь абзац неприкрытой рекламы меня любимого: мне нравятся “облака” и я готов совершенно бесплатно (конечно, не откажусь и от оплаты, если предложите 🙂 ) поконсультировать/помочь/рассказать как сделать по поводу “облаков”. Просто из любви к теме. Я не связан с каким-либо провайдером или сервисом “облаков” или производителем систем виртуализции, поэтому мне абсолютно начхать на маркетинговые заморочки. Пишите письма на multik@multik.org, в skype пользователю kiltum или оставляйте комменты.
В прошлый раз я обещал на пальцах показать, что облака дороже, но они дешевле. В принципе я уже писал про это, но это было давно и не правда.
Наверняка вы уже задумывались о использовании “облаков” в своем бизнесе, но простые расчеты на калькуляторе и консультации с ИТшниками неизменно приводили к обескураживающим результатам: стоимость аналогичного, но “облачного” сервиса неизменно оказывалась в 1,5-2 раза выше. Как же так? Ведь вон сколько компаний использует облака в своей работе и рапортуют о снижении расходов … А тут ИТшники опять начинают свою вечную волынку про недостаток серверов … Что делать?
Что бы не быть голословным, возьмем для примера небольшую компанию, чья инфраструктура построена на классических принципах. Давайте посчитаем, сколько серверов надо. Ну и заодно прикинем на пальцах стоимость каждой железки.
1. Фаирволл. Он же брэндмауэр. Штука, которая выпускает вас в интернет, фильтрует лишнее и иногда служит HR-инструментом под названием “на какие сайты ходят сотрудники”. Хватит 50 тыщ.
2. Почтовый сервер. Без почты нынче никуда. Тут лучше заложить где-то в районе 100 тыщ.
3. Веб-сервер. Сайтик обычно много нагрузки не требует, поэтому тоже 50.
4. Сервер телефонии. Положим те же 50 тыщ.
5. Сервер бухгалтерии. Бухгалтера люди нервные, поэтому 100 тыщ и не надо экономить.
6. Файлопомойка. Сотрудникам надо файликами обмениваться. Возлагать это на почту – моветон. Тыщ 80 надо.
7. Резервное копирование. Есть компании, где уже теряли данные, а есть, где еще только будут. Тыщ 100.
Для начала хватит. Конечно, в реальности часть функций обычно объединяется на одном сервере, но у нас админ печется о безопасности, поэтому старается разнести все. Ну и в разных компаниях добавляются другие сервера: для разработки, тестирования и прочих штук. Но я их учитывать не буду.
Итого получается в районе 550 тысяч рублей. Эти 7 коробок жрут электричество, требуют охлаждения, запасных частей и квалифицированного присмотра. Через некоторое время их мощности начинает не хватать и начинаются узаконенные репресии пользователй в духе “более 500 мегабайт в почтовом ящике не хранить” и “бухгалтерия тормозит, потому что в сервере винт сдох” (хорошо, что тормозит. у некоторых просто падает). Знакомо?
Что делать? Бизнес растет, но на одних серверах разориться же можно … И тут в дело вступает хороший, качественный ИТшник. Срываю так сказать, покровы. Для начала: одиночные сервера никогда не загружены на 100%. Из-за разных там особенностей больше 60-70% нагрузку поднимать попросту нельзя: будет все ломаться.
Сначала составляют список серверов (у нас он выше) и характер их загрузки. Например, сервер бухгалтерии и файлопомойка ночью не используется. А вот сервер резервного копирования наоборот, ночью загружен по самое выше некуда. А вот почта и телефония ночью тоже не загружены, но работать должны всегда.
Отсюда вытекает вполне логичное предложение: почему бы серверу резервного копирования не поделиться днем своими ресурсами? А серверу бухгалтерии и файлопомойки ночью? С использованием современных технологий – легко.
Сам процесс объединения стайки серверов в “облако” я пропущу. Вам это во-первых попросту неинтересно, а во-вторых, там слишком много нюансов, описанию которых пришлось бы посвятить много места.
В общем, сразу перескочу к моменту, когда из уголка админа раздаются невнятные, но несомненно радостные возгласы. Пропущу так же сложный процесс ломки мышления того же админа, пока он осознает, какие возможности он получил в свои руки.
Вам же главное знать то, что у вас теперь есть свое “облако”. Персональное, частное – называйте как хотите.
Что вы получаете?
– Возможность продать один-другой сервер. Подчеркиваю – возможность (ИТшники просто так не выпустят из своих рук 🙂 ). Ибо если одиночные сервера нельзя грузить на 100%, то в “облаке” вполне.
– Более высокую доступность серверов. Теперь в случае поломки одного из “железных” серверов есть возможность попросить “пододвинуться” другие, пусть и за счет уменьшения скорости работы.
– Возможность отдавать более мощный сервер (у нас же сервера не одинаковые изначально) на более необходимую сейчас работу. Скажем, днем самый мощный сервер будет помогать процессу сдачи бухгалтерского отчета, а ночью обрабатывать данные для системы резервного копирования.
– Более разумно распределять нагрузку. Скажем, отобрать ночью у почтового сервера ресурсы процессора в пользу других. Пусть письмо ходит не 1-2 секунды, как днем, а 10-20. Кому какая разница?
А теперь о более приятном. Если делать подобное с “нуля”, то более высокую производительность и бОльший запас по мощности всего комплекса можно получить с помощью пары серверов, каждый из которых стоит по 200тр. И эти серверы будут жрать меньше электричества, меньше греть окружающую среду и требовать меньший уход. 150 тысяч экономии прямо “в лоб”!
Но это “частное облако”. Как же можно заработать или сократить расходы с помощью публичных облаков?
Для начала можно легко увеличить безопасность вашего бизнеса. Не знаю как в других странах, но в России до сих пор не изжили “изъятие вещественных доказательств”. С одной стороны, счет не заблокирован и на нем есть деньги, а с другой – все данные остались на тех самых “вещественных доказательствах”. Вот для примера бухгалтерия. Объемы базы данных очень редко превышают еденицы гигабайт. Вот возьмите и дайте задачу, что бы система резервного копирования попутно заливала данные еще и туда. Для безопасности – хорошо зашифрованными. Сейчас стоимость хранения одного гигабайта на S3 – $0.03 в месяц. Да, я не ошибся – три цента за гигабайт в месяц. Добраться до архивов можно будет с любого компьютера, подключенного к интернету, а уж что с ними делать – дело ваше. Сравните со стоимостью хранения подобного где-нибудь на стороне “обычным” способом.
Затем рассмотрите свои бизнес-процессы и выделите те, которые требуют непродолжительных, но больших компьютерных ресурсов. Скажем, в каком-нибудь рекламном агенстве это может быть процесс рендеринга роликов. Покупать для этого отдельный мощный сервер, который будет 90% времени пинать балду – не выгодно. А без него никак. Куда лучше за $3 в час арендовать гораздо более мощный сервер в облаке и использовать его только тогда, когда надо. И кто мешает арендовать не один сервер, если роликов много?
Надо изредка рассылать большие объемы писем (и которые ни разу не спам)? Вон, SES берется доставить со всеми заморочками тысячу писем за 10 центов. Стоимость обычного почтового сервера, способного переварить хотя бы 20-30 тысяч писем за час, предлагаю узнать самостоятельно.
И так далее и тому подобное. Везде, где требуются большие объемы, гораздо дешевле воспользоваться мощностями гигантов, чем пытаться сделать свое и на коленке.
И наконец, можно заранее подготовиться к приятным, но внезапным неожиданностями. Для примера можно подготовить все необходимое, что бы ваш веб-сайт смог выдержать любой поток посетителей. В обычные времена ваш веб-сайт крутится у вас за стенкой. Но стоит возрасти нагрузке (скажем, отдел рекламы провел успешную компанию), как ваш веб-сайт сначала переездет к провайдеру (что бы не загружать ваш канал в интернет), а при дальнейшем повышении нагрузки начнет поднимать у провайдера свои копии. И так до тех пор, пока весь поток посетителей не схлынет. Схлынул – сайт вернулся в родные пенаты. Не верьте мне, просто возьмите калькулятор в руки и подсчитайте стоимость подобного решения. Если у вас подобные случаи случаются регулярно, то вы будете очень обрадованы открывшимися возможностями.
И подобных возможностей в каждой компании – уйма. Честно.
Если все так хорошо, то почему все так плохо? Во всем этом есть одна большая ложка дегтя: без квалифицированных специалистов подобное реализовать нельзя. В смысле реализовать можно, но вы скорее потеряете деньги, чем сэкономите. И пока технологии “молодые”, нет никаких сертификатов, лицензий и прочих документов, свидетельствующих о том, что тот или иной ИТшник умеет “нырять” в облака и что более важно, “выныривать” из них …
Покупайте наших слонов, теперь и в облаках! Самые облачные облака по выгодным тарифам!
Такое или примерное такое сейчас можно увидеть и услышать в любой рекламе услуг, связанных с компьютерами. Что же такое облака и чего с ними можно делать?
Для начала маленький экскурс в историю. Давным-давно компьютеры умели выполнять только одну задачу за раз. И если он начинал считать, сколько будет 2+2, то нипочем не хотел останавливаться. Потом компьютеры научили делать сразу несколько задач. Они могли одновременно считать сколько будет 2+2 и спрашивать у пользователя, сколько ему лет. Потихоньку увеличивая мощность компьютеров дошли до того, что один мощный компьютер мог представляться для окружающих кучей слабых. Ведь для очень многих задач куча слабых компьютеров гораздо удобней и выгодней одного, но очень мощного.
Но тут пришли продавцы и маркетологи. Первым надо было увеличить продажи, а вторые помогали первым, ведь им тоже перепадал кусок пирога.
Поначалу шаги было очень осторожными. Практически все шло под лозунгом “сократи расходы на сервера”. Ведь в самом деле, поставить и обслуживать один мощный сервер гораздо дешевле, чем кучку маленьких. Тут и стали называть эти маленькие сервера виртуальными. Ведь их нельзя пощупать, но они есть. Постепенно технологии дошли до того, что стало возможно объединять мощные сервера между собой так, что они могли “делиться” с соседями виртуальными серверами без их остановки. И на всех схемах сети такая конструкция обозначалась облаком. Типа мы знаем, что сервер там, но детали реализации от нас скрыты.
Ушлые маркетологи мгновенно раскопали ассоциацию и начали толкать “облака” в массы. В результате вышеописанное (несколько мощных серверов, которые стоят в серверной у вас за стенкой) стали называть “частное облако” или private cloud.
Тут же появились провайдеры, которые стали предлагать “облака” для всех страждущих. Такие облака стали называть “публичными облаками” или public cloud. Услуга довольно быстро стала популярной: ведь большинству людей не нужны для своих задач мощные компьютеры, а провайдерам очень дорого обслуживать обычные слабые сервера.
Следующим появились на свет “гибридные облака”. Это когда часть виртуальных серверов работает в серверной за стенкой, а часть – у провайдера. А для вас – ну абсолютно никакой разницы, где они размещены. Вы работаете с ними одинаково во всех случаях.
Больше всего “облакам” радовались ИТшники. Благодаря “облакам” у них исчезло очень много нудной работы по обслуживанию серверов … Конечно, появилось много другой работы, но это тема уже для другой статьи.
Итак, в чем же основное преимущество облаков?
– Снижение расходов на серверный парк. По моим прикидкам, переход с классической схемы (один сервис – один сервер) на облачную (много серверов – много сервисов) дает экономию примерно в 20-30% просто от самого факта использования.
– Снижение времени простоя. Теперь для обслуживания “железного” сервера нет необходимости останавливать работу размещенных на нем сервисов.
– Резкое ускорение специфических для ИТ задач. Поднять новый сервер или скопировать работающий – дело минут, но никак не часов.
– Возможность при наличии соответствующих навыков кратковременно и очень резко увеличивать мощность какого-либо сервиса.
Вот за эту особенность и ухватились в очередной раз маркетологи. И как обычно, выкинув самые значимые слова (я про навыки), ринулись на следующий виток. Необходимость как-то разделять “облака” их надолго не остановила и они придумали новые слова.
“Старые” облака (провайдер вам предоставляет один или несколько серверов, возможно объединяя их в одну сеть с вашей) стали называть IaaS (Infrastructure as a service). Инфраструктура как сервис. Легко понимаемая всеми ИТшниками модель. Яркий пример – Amazon
Вон та возможность резко увеличивать мощность (повторюсь, при наличии навыков!) привела к следующему варианту облаков: PaaS (Platform as a service). Платформа как сервис. Пример – Azure. Суть простая. Берет провайдер толковых спецов, которые настраивают какой-либо сервис как надо. А потом продает этот сервис вам. Скажем, у вас есть веб-сайт, на который приходит 1000 человек в день. Ваши маркетологи, продавцы и прочие товарищи что-то такое замутили, что к вам внезапно пришло 100000 человек. Обычно веб-сайт в таких случаях тупо умирает под нагрузкой. В случае PaaS правильно настроенный сервис начинает поднимать для внезапно свалившейся нагрузки еще сервера. Десять, сто, тыщу. В общем пока не переварит весь поток. А потом точно так же берет и “убивает” ставшие ненужными сервера. В итоге все довольны: пользователи увидели ваш сайт, а не сообщение о недоступности, вы получили новые заказы, а провайдер – деньги.
Очень это понравилось маркетологам и они придумали SaaS (Software as a service) или программа как сервис. Оно очень похоже на PaaS, но про отдельный сервис. Скажем, вам нужен почтовый сервер. Можно сказать админу, он купит сервер, настроит его … А можно пойти к провайдеру и купить доступ к его почтовому серверу. Если у вас в компании 100 человек, так и купите кусочек провайдерского сервера на 100 человек. А провайдер пусть уже сам мучается с антивирусами, антиспамами и прочей фигней. Яркий пример – Office 365.
Но тут внезапно обнаружилось, что SaaS один-в-один повторяет то, что предлагается уже много лет. В самом деле, купить кусок сервиса можно было очень давно. И Вам совершенно безразлично, на каких там технологиях крутится.
Думаете это кого-то остановило? Неа, просто стали продавать старое под новым соусом.
И для резюме нужно подвести итоги. Сравним их с привычной всем “своей серверой”
Преимущества:
– Быстрота развертывания. При наличии денег на карточке можно получить полностью готовый сервер или сервис за десятки минут. Причем в стране на выбор.
– Более высокая доступность. У провайдеров просто больше возможностей это обеспечить.
(ТОЛЬКО для частных облаков) – Более низкая стоимость обслуживания
Недостатки:
– Более высокая стоимость обслуживания. На данный момент – в 1,5-2 раза дороже. За тренд надо платить.
(для всех КРОМЕ частных облаков) – Полная потеря контроля за вашими данными. Что бы там не писали маркетологи в пресс-релизах и зазывалках, данные из облака очень легко (по сравнению с классической схемой) могут быть взяты без возможности какого-либо контроля с вашей стороны. Люди, которые имеют доступ к физическим серверам, всего лишь люди.
Тут обычно возникает мысль про то, что я (в смысле автор) ничего не понимаю. Ведь если “облака” стоят дороже, то почему ими пользуются? Люди же не настолько глупые …
Но где можно “выиграть в облаках”, я напишу в другой раз. Вдруг никому не надо и я только зря клавиатуру терзал? 🙂
Решил вылечить очередную родовую болезнь Дрыня: не фиксирующиеся крышки бензобаков. Быть “лопоухим” как-то не комильфо, все-таки не запорожец ..
Для лечения этой болезни на просторах сети я нашел аж целых четыре рецепта:
– Врезать замок.
– Высверлить крепление пружинной пластины и подогнуть ее. Потом прикрепить ее обратно.
– Ближе к оси крышки приделать дополнительную пружину.
– Заменить резиновый демпфер болтом и на крышку прицепить магнит.
После сборки часов для тещи у меня остались шикарные неодимовые магниты. Я убрал резинку, вкрутил на ее место болтик (М5 или М6 – не помню), шлепнул на крышку магнит … Да, крышка теперь держится хорошо, но звук, с которым она закрывается … Этакий “бам с жестяным скрежетом и дребезгом”. Попытка смягчить звук путем наклеивания нескольких слоев изоленты не удалась: просто добавилось “причмокивание”. Вроде бы и так пойдет, но машина-то для удовольствия, а на каждой заправке слушать этот дребезг с чмоканьем не хочу. На виброизоляцию крышки я был морально и материально не готов, поэтому вернул все в первоначальное состояние.
Сел думать. Пошерстил интернет. Взапно озарило: кто сказал, что магниты могут быть только прямоугольными или квадратными? Цилиндрические тоже есть!
Мухой в магазин, где закупил кучку цилиндрических магнитов диаметром 4мм и длиной от 3 до 6 мм. Пригодятся.
Из магазина к машине на примерку. У меня получилось, что “сверху” от крепления до дверцы 9мм, а “снизу” – 10мм.
Десять раз примеряю и клею!
Пока клей сохнет, хожу вокруг машины, придумывая, что бы еще поделать, но только не так, как вчера. Не придумал, зато клей высох.
Получилось просто изумительно: крышка закрывается, потом с легким таким стуком фиксируется. Куда там дверцам всяких майбахов и ройсов … Доволен.
Для некоторых первые километры на машине сродни первым шагам ребенка – точно такие же незабываемые и волнующие. А для кого-то наоборот, очень волнующими являются последние метры.
Когда я анализировал свою последнюю аварию, совершенную еще на Д2, то я очень огорчался, что у меня не стоял видеорегистратор. Человеческая память крайне избирательная и не желает хранить самые неприглядные моменты жизни, а надо. В последующем я подобные промахи не повторял: у меня всегда в машине стоял видеорегистратор. Кстати, видеорегистраторы не всегда используются для записи аварий – ингда на них попадают и просто смешные моменты, особенно если регистратор поддерживает функцию “детектор движения”. Опять же некоторые утверждают, что вид стоящего видеорегистратора дисциплинирует представителей полиции, но тут утверждать не берусь, ибо как-то у меня с ними получается ладить и без применения подобных средств массового поражения.
Итак, в машину необходим видеорегистратор. И он должен быть включен постоянно. Это дальше даже обсуждаться не будет.
Какие же регистраторы бывают и чем различаются?
Регистраторы бывают стационарные – когда блок, где происходит запись размещается отдельно и мобильными – когда сам блок объединен с камерами. Стационарные обычно ставят на коммерческий транспорт, когда необходимо регистрировать картинку с 3-4 камер, попутно обрабатывая данные от нескольких датчиков. Нам они не интересны. А вот мобильные, которые включаются в прикуриватель, крепятся на стекло и ведут съемку с 1-2 камер, нам и нужны. А различий у них море. Скажем, вот вы пришли в магазин, потерялись в море моделей регистраторов и жаждете помощи от продавца …
Первое, на что обычно обращают ваше внимание продавцы, это разрешение картинки. В принципе чем больше разрешение, тем лучше, тут спорить тяжело (четче картинка, можно разобрать больше мелких деталей, таких как номер машины вдали). Но как в большинстве других случаев, есть “честное” разрешение, а есть “китайское” (оно же интерполированное). В чем разница? В первом случае на карточку записывается именно та картинка, которую сняла камера. Во втором – “растянутая” по горизонтали и вертикали та же самая картинка. резкость картинки меньше, занимаемое на карточке место больше, а толку меньше. Сейчас с таким можно столкнуться только на откровенно дешевых и старых регистраторах.
Второй момент, к которому обычно привлекают внимание: наличие ИК подсветки. Дескать, это помогает лучше снимать в темноте. 100% обман. Ибо регистратор обычно находится близко к лобовому стеклу и все излучение ИК-светодиодов просто отражается от стекла. И хорошо, если не назад в объектив … Нет, конечно бывают случаи когда видеорегистратор снимают с крепления и идут с ним снимать куда-то в темноту. Но я ни разу не видел такой вариант использования.
И наконец, наличие GPS приемника. Без него регистратор – не регистратор, а так, камера на лобовом стекле. Опять же из личного опыта могу сказать, что GPS приемники в регистраторы ставят очень слабые и получить с ними “картинку со скоростью” получается не всегда. Плюс в спорных ситуациях показания GPS помочь не могут (у вас же нет сертификата точности на измеритель скорости?), а вот испортить отношение судьи – легко (кто из нас 100% соблюдает скоростной режим?).
На что же надо реально смотреть?
Во-первых, на наличие дисплея. Без него будет крайне сложно проконтролировать правильность установки регистратора и в дальнейшем контролировать запись. Но не гонитесь за размерами дисплея: вы покупаете не камеру. Размера в один дюйм достаточно.
Во-вторых, на механизм крепления. Если вы оставляете машину не только на охраняемых стоянках, то наверняка пожелаете убирать регистратор с глаз долой или вовсе забирать с собой. И рассматривая крепление, представьте, что перед каждой поездкой надо достать регистратор, прикрепить, включить и так далее и тому подобное. Думаю не будет откровением, что вскоре регистратор будет доставаться и включаться очень редко. И наконец, он будет выключен тогда когда он будет нужнее всего.
Следующий аспект, на который надо обратить внимание – это жесткость крепления. У нас не идеально ровные дороги. И если крепление будет хлипким, то к вибрации машины добавится еще и собственная вибрация регистратора, болтающегося на креплении. В результате даже самая лучшая камера запишет очень посредственную картинку. По моим наблюдениям, особенной хлипкостью отличаются крепления, где фиксация положения осуществляется “гайкой на шаре”.
И наконец, то самое разрешение и частота кадров, которые способен записать регистратор. Как я уже писал, чем эти числа больше и чем они “честнее”, тем лучше. Проверить это в магазине практически не возможно, поэтому придется принять декларируемое производителем.
“Но что же всё-таки купить?” – делюсь своим правилом, которое меня ни разу не подводило: мысленно выстраиваем понравившиеся регистраторы в порядке возрастания цены. И предпоследний (или предпредпоследний) – ваш. Последний обычно самый навороченный, с самыми большими возможностями. А предпоследний это обычно свергнутая с пьедестала бывшая топовая модель. Поверьте, для вас её возможностей хватит. (маленький совет: если выбираете регистраторы из средней ценовой категории, то наверняка эти регистраторы сделаны в китае. И чем более популярней регистратор, тем больше у него клонов и копий. Этот показатель тоже можно рассматривать как один из факторов)
“А еще?”. Если ваш выбор сократился до нескольких моделей, можно обратить внимание на другие, менее важные возможности регистраторов.
Запись звука. Очень полезно при конфликтах на дороге. Представьте себе “картинку с регистратора”: перед вами резко останавливается машина, из нее выходит водитель, подходя к водительской двери исчезает из поля зрения камеры, а через некоторое время прямо перед капотом происходит “битва нанайских мальчиков”, доведенная в последствии до суда. Без звука ваша версия может быть “остановился, он вышел, словесно оскорбил меня, я решил не спускать на тормозах”. А версия оппонента будет “вышел спросить как проехать в библиотеку, а он как кинется на меня”. Согласитесь, со звуком такие разбирательства пойдут гораздо продуктивней.
Вторая-третья камера. Некоторые регистраторы могут писать одновременно с двух или трех камер. У одних моделей одна камера смотрит вперед, а другая на водителя. У других вперед смотрят обе камеры, но у них разные объективы. В результате одна камера снимает дорогу как ее видит водитель, а другая – широко, но с искажениями. Возможность наверняка полезная, но в реальности я ни разу не видел удачного применения.
Форматы записей. Чем формат распространенней, тем больше шансов, что инспектор или судья увидят видео без лишних телодвижений.
“А можно дешево, но не сердито?”. Можно, хоть “кроилово и ведет к попадалову”. Самый простой вариант – использование специальных программ для смартфонов. Они используют встроенную камеру и пишут видео. Сам так ездил наверное с год.
Основные проблема заключается вовсе не в том, что смартфон надо включать-выключать. Проблема в том, что смартфон хочется поиспользовать еще для чего-то. Для карт с пробками, для звонков … Одновременную работу регистратора и навигатора тянут только современные смартфоны. Но есть и неочевидные проблемы. Например, когда я использовал Samsung Galaxy S для работы в качестве регистратора, то в солнечные дни смартфон выводил сообщения о недопустимо высоком уровне температуры батареи и прекращении заряда. Просто солнце нагревало. И ладно бы он прекращал заряжать батарею, так это окошко висело прям посредине экрана и при попытке закрыть его выскакивало снова.
Но рано или поздно может наступить момент, когда запись с регистратора запечатлеет момент аварии. Что делать? По этому поводу в интернете гуляет куча рассуждений про цифровую подпись и прочие ужастики. Но все проще.
Для начала если есть возможность заблокируйте запись от удаления. У каждого видеорегистратора это делается по разному, но обычно удержанием какой-либо кнопки. Если не помните про кнопки, то просто выключите регистратор.
Если в аварию попали не вы, то обязательно оставьте свой телефон участникам. Существует очень большая вероятность, что этот шаг поможет невиновному отстоять свою правоту. А если есть возможность, то скопируйте ролик на запасную карточку и отдайте (или просто отдайте свою). Деньги не большие, а хорошие дела обязательно вернулся сторицей.
Если к сожалению в аварию попали вы, то помимо обычных действий по вызову полиции, прикидыванию суммы убытков и прочего вы должны сделать только одно: максимально быстро легализовать свою запись.
Особенности российского законодательства таковы, что суду абсолютно пофиг на цифровые подписи видео, модель регистратора и остальные технические параметры. В случае каких-либо вопросов судья просто отправляет запись эксперту с вопросом: могла ли быть запись изменена/модифицирована/ещечто, при условии, что она сделана на дату Х.У.З, а легализована на дату З.Х.У? И эксперт обязан предположить, что у потерпевшего/истца за спиной голливудская киностудия с кучей техники и аппаратуры. Да, это маразм, но это так.
В результате если запись легализована быстро, то ответ эксперта будет отрицательным и запись будет принята судом во внимание. А если вы притащили запись через месяц после аварии, на слушанье … В общем, суд даже не будет рассматривать запись, какой бы подлинной она не была бы.
Как легализовать? Самое простое: прямо на месте составления протокола указать, что у вас есть видеозапись и сделав конвертик, отправить флешку прямо с инспектором. Минус тут один: обычно конвертик сделать не из чего, инспектор открещивается от такого подарка, на флешке могут быть другие фрагменты, которые характеризуют вас с отрицательной стороны …
Алгоритм действий меняется незначительно: выясняете у инспектора его территориальную принадлежность и уже подготовившись (написав заявление, приложив флешку) сдаете все это в дежурку. В ответ вам должны будут (обязаны! они реально должны проверить каждое заявление) выдать талон, который и будет аргументом для суда.
Если по каким-то причинам вы профукали все время в полиции, то тогда уже надо подавать ходатайство в суд, что бы прикрепили видеодоказательства к делу. Но тут уже лучше подключать адвоката, он знает всякие умные слова и формулировки.
Стоит ли делать копии записи? На мой взгляд стоит, как и стоит об этом указать в протоколе, хотя я ни разу не слышал, что бы полиция “потеряла” правильно оформленные флешки. Обычные записи – да, “теряет” с завидной регулярностью.
Но лучше всего, что бы регистратор вам вообще не пригодился. Будьте аккуратней на дорогах!
PS Я специально не стал описывать версию программы для смартфона и модель регистратора, стоящего у меня. Хотя это DailyRoads Voyager и Street Storm CVR-A7510.
Жили-были часы. Обычные, стрелочные. И постоянно с ними что-то случалось. То они отставали, то наоборот вперед убегали. И тикали. И ночью их было не видно.
Но у нас же на дворе 21 век! Меняем часы на цифровые. С большими цифрами! Пробег по магазинам показал, что хоть часы с большими цифрами и присутствуют на прилавках, но все поголовно имеют один большой минус: они светятся одной и той же яркостью. В итоге солнечным днем их не видно, а ночью они подобно прожектору слепят всех. Не годится.
Одновременно все магазинные часы требуют полочки или какой-либо ровной горизонтальной поверхности. Опять минус для отдельно взятого дома.
В общем, было решено взять и сделать часы самому.
Из закромов был извлечен большой индикатор, с 256 красными светодиодами, расположенными в 32 ряда по 8 штук. Ссылки на магазин давать не буду, но ищется по ключевому слову HT1632.
Далее была взята Arduino Leonardo (можно взять абсолютно любую ардуинку, её возможности будут использованы процентов на 5). Почему леонарда? Просто потому что была под рукой.
В качестве хранилки времени был взят наборчик от мастеркита, рядом нашлось пара кнопок и фотодиод. Как их подключать, можно прочитать в предидущем тут https://blog.kiltum.tech/2013/09/22/Многофункциональный-термометропока/
Внимание! Индикатор подключается абсолютно точно так же, как и тут: http://www.lucadentella.it/en/category/ledmatrix_ht1632c/ Расположенные в сети библиотеки с похожими названиями не работают, так как рассчитаны на другую схему подключения.
Самым сложным оказалось найти подходящий корпус. В результате я просто купил подходящий пластмассовый, долго его резал-штукатурил-красил, но так до гламурного состояния и не довел. Опыта мало, ошибок много …
Все это долгое время валялось у меня на столе разобранным, пока я не взял себя за шкирку и не собрал все в одну кучу. Так как схема не просто простая, а очень простая, то я тупо собрал все навесным монтажем.
Заодно опробовал и клеевой пистолет: вещь! Особенно для монтажа такого уровня.
Итак, что и как соединено по фотографии. Слева – направо.
Снаружи подходит обычный micro-usb кабель. Лично мне оказалось проще всего обеспечить схему питанием +5В – у меня валяется много зарядок от телефонов.
Далее две кнопки, посаженные на analog in и фотодиод, выведенный на верхнюю поверхность часов.
С батарейкой – это часы реального времени от мастер-кита.
Далее сама ардуинка и провода, уходящие на индикатор.
Внимание! Индикатор в режиме “все включено на максимум” потребляет примерно 300мА. Встроенный в ардуинку стабилизатор попросту не выдержит. В данной схеме я воспользовался грязным хаком и подцепил питание индикатора на VIN. По схеме он зацеплен прямо на +5В от USB, а там предел 500мА. В общем, не повторяйте этого, если не знаете что делаете.
Как вы можете обратить внимание, я там наклеил неодимовых магнитиков. Практика показала, что их хватает для надежного крепления часов к корпусу холодильника в люом удобном месте.
// where PIN button is
#define BUTT_H A8
#define BUTT_M A10
int photoRPin = 0; // where photo is
int minLight;
int maxLight;
int lightLevel;
int adjustedLightLevel;
byte display_buffer[32];
long previous_millis;
// enable System oscillator and LED duty cycle generator
ht1632c_send_command(HT1632_CMD_SYSON);
ht1632c_send_command(HT1632_CMD_LEDON);
ht1632c_send_command(HT1632_CMD_PWM+15); // full light!
На мой взгляд, ничего ранее не описанного в нем нет (но если что непонятно, то спрашивайте), поэтому я сразу перехожу к готовому результату.
Здесь часы собраны и расположены на испытательном стенде – обычной маркерной доске.
Практика использования в течении пары дней (больше просто времени не было и мы уезжали) показала, что все выбранные решения были верны. Днем часы было видно далеко, а ночью они не слепили. В общем, теперь можно сваять нечто и более монструозное.
После пары постов о возможных направлениях развития показометра меня попросили спроектировать некий многофункциональный показометр с функцией пускания пыли в глаза. В общем, после обмена несколькими письмами получился следующий набор задач:
– Иметь вход для ACC с замка зажигания.
Пока зажигание выключено: мигать светодиодом, как будто это сигналка.
При включении зажигания: первые 10 секунд показывать показания заранее выбранного датчика температуры. Потом показывать время.
– Иметь вход для CarPC. Плата должна уметь рассказывать о себе, сообщать что к ней подключено и показывать то, что попросят.
– Иметь возможность обрабатывать 4 “ветки” датчиков. Скорость обработки 1 секунда на один датчик на каждой ветке.
– Иметь возможность регулировки яркости.
– Все светящееся должно светить зеленым светом. За синее – расстрел на месте.
– Работать должно на Arduino Micro.
В общем, ничего сложного, все описано в интернете не раз и не два, но по кусочкам. Моя задача собрать все эти кусочки в один и “смазать” работой с CarPC. Ну и как обещал, параллельно выкладываю пошаговую инструкцию с краткими пояснениями.
Для начала решил выяснить, чем отличается Arduino Micro от CarDuino
– Первый итальянский, второй наш. Без разницы.
– Первый дороже второго почти на 500 рублей. 1200 супротив 700. Плохо, но терпимо.
– У micro по другому сделано общение с компьютером. Драйвера стандартные, при подключении компьютера сброса по умолчанию нет, можно спокойно пользовать RX и TX ножки. Это очень хорошо.
– У micro стандартные значения питания. Его, в отличии от CarDuino, напрямую от бортсети не запитаешь. Мелочь, но потребует как минимум одного лишнего элемента в схеме.
– У micro нет ножек SPK и HV12. Беда, печаль и огорчения. Абсолютно несущественно.
Теперь к индикаторам. Беглый поиск показал, что хотя у меня есть зеленый светодиодик, но вот индикатора с таким светом нет. Гугл дал ссылку на http://pacpac.ru/product/com-11440-7-segment-serial-display-green/ , он же COM-11440. Зелененький, 4 цифры, умеет дофига всего. Беру.
Для определения освещенности нужен фоторезистор. Опять же, у меня есть в закромах, но пойдет любой. Вот ссылка на тот же ПАКПАК http://pacpac.ru/product/sen-09088-mini-photocell/
Про часы и прочее можно прочитать в предыдущем посту.
Итак, собираем схему.
Первыми идут часы. Подключаем GND к GND, VCC к +5V, SDA к D2, SCL к D3.
В выводе serial monitor должны увидеть строчки с текущим временем.
Теперь подключаем светодиод. К 5й ножке, затем резистор 1кОм, затем земля. Почему 5я ножка? Просто это первый PWM выход на микре. Проще будет красиво мигать светодиодиком. Проверяем
int led = 5;
int brightness = 0;
int fadeAmount = 10;
Теперь следующий шаг: фотодиод. Подключаем одной ножкой к А0, второй к +5В. И “опускаем” А0 через резистор в 10кОм на землю. То есть должно получиться А0-фотодиод-5В и А0-резистор-GND.
Проверяем
int photoRPin = 0;
int minLight;
int maxLight;
int lightLevel;
int adjustedLightLevel;
В результате у нас должена получиться супер-пупер адаптивная подсветка из одного светодиода. Чем больше падает света на фотодиод, тем сильнее светится светодиод. При этом яркость подсветки адаптируется и самое яркое свечение светодиода будет при самом ярком свете. Вывод текущего значения подсветки в serial monitor - маленький бонус.
Следующим идет "дисплей". Он умеет общаться по разным протоколам, но я выбираю обычный последовательный, тем более что на micro аппаратный порт свободен.
Соединяем VCC с +5В, GND с GND, а rx индикатора с tx ардуинки. Всё, всего 3 проводка (сравните с предидущим индикатором). Если просто так все включить, то индикатор должен загореться с 0000 на экране. Проверяем остальное.
void loop() {
// put your main code here, to run repeatedly:
sp.print("1234");
sp.print("w");
char s=16;
sp.write(s);
delay(500);
sp.print("4321");
sp.print("w");
s=0;
sp.write(s);
delay(500);
}
На экране должны меняться 1234 и 4321 с мигающим двоеточием. Более подробное объяснение команд дисплейчика можно найти в его документации. Или тут http://www.arunet.co.uk/tkboyd/ec/ec1led4x7ser.htm
Следующим сделаем вход для сигнала ACC. Так как в машине напряжение может скакать от 9 до 15-16 вольт (в крайних случаях), а ардуинка понимает только 5В, то я не долго думая, сделал обычный делитель из двух сопротивлений: 1кОм и 4,7кОм.
Что бы не мучаться, воспользуемся сервисом http://www.bezkz.su/index/delitel/0-9. R1=4700, R2=1000, U1 - то, что "входит", U2 - то, что выходит.
Сопротивление 1кОм включаем между GND и A1, а сопротивление 4,7кОм, между А1 и "+" измеряемого. "-" измеряемого соединяем с GND.
Теперь по появлению чего-либо на A1 можно судить, включено ли зажигание. Но это как-то не функционально. В общем, надо превратить этот вход еще и в вольметр. Судя по вышеприведенному сервису, с данными номиналами можно будет измерять напряжение в диапазоне от 0 до 28 вольт. Для машины более чем достаточно. Но тут есть одна большая проблема: резисторы вообще-то не идеального номинала и поэтому ожидать от полученного вольтметра точности прямо с нуля не стоит.
Берем вот такой вот маленький скетч
void setup()
{
Serial.begin(115200);
}
void loop()
{
Serial.println(analogRead(1));
delay(100);
}
Он просто выводит значения измеренного с порта А1. Значения могут колебаться от 0 (ноль) до 1023 (5В). Я подключился к лабораторному блоку питания и при напряжении 12В оно мне выдало 430, 9В - 320, 6В - 215, 5В - 176. То есть теоретическая точность (и шаг измерения) данного показометра будет ...
При этом уже полученная штука может мерять напряжения еще в куче мест, ибо ножек свободных у нас дофига, даже если учесть, что нам надо куда-то подключить еще 4 ветки для датчиков температур. Ну разве это не прекрасно?
Тем, кто будет воплощать все это "в металл", еще раз следует учесть, что показания этого "вольметра" будут очень сильно плавать в зависимости от величины сопротивления используемых резисторов, проводов и соединений. Поэтому готовое изделие надо будет откалиборовать, просто подогнав выдаваемые им значения под измеренное в точке подключения каким-либо сторонним вольтметром. При этом учитывайте, что обычно вольтметры в бортовых компьютерах врут примерно на 0.3-0.5 вольт (так было на всех "ощупанных" мной машинах).
И наконец, почти последний шаг: измерение температуры. Я использую в своих проектах DS18B20. Это совершенно шикарный цифровой датчик, который с точностью 0,5 градуса измеряет свою температуру.
У этого датчика есть две схемы подключения: нормальная и с паразитным питанием. Если коротко, то нормальная использует 3 провода до датчика, а с паразитным питанием 2. Но (как обычно, без НО не обойтись) схема с паразитным питанием нормально работает только на короткие расстояния и в обычном, уличном, диапазоне температур. При увеличении расстояния от датчика до контроллера начинаются "глюки" и чем дальше, тем больше. И более того, ни одна схема с паразитным питанием и расстоянием по проводу до датчика порядка 5м (обычный домашний термометр) не выживала более года-полутора: попросту дохли "контроллеры". А трехпроводные живут. В общем, решать вам.
С картинками разницу между схемами можно прочитать тут http://openenergymonitor.org/emon/buildingblocks/DS18B20-temperature-sensing
Я лишь сопру картинку с нормальным питанием
И схему подключения
Как видно, датчики подключаются гирляндой, один за одним, к одним и тем же проводам. Максимальное количество датчиков на одной гирлянде по-моему 127. Или 64. В общем, дофига. Каждый датчик имеет свой уникальный адрес, поэтому вероятность, что они "перепутаются", нет. Правда, совершенно не факт, что первый физически по проводу будет первым и по адресу ...
Для сборки датчиков надо следующее: 3 провода (желательно разных цветов, многожильных), сам датчик и 2 разных термоусадочных трубочки. Одна чуть больше диаметром, чем сам провод, другая на 4,3мм.
Тут я показал процесс изготовления датчика: сначала припаиваем провода, затем изолируем выводы датчика первой термоусадочной трубкой, а затем собираем все "в кучу" с помощью второй. Данная конструкция показала свою надежность с 2004 года: до сих пор все датчики работают (а среди них есть и уличные, и домашние и те, которые все время в воде).
Для начала подключаем один датчик. VCC +5В, GND-GND, DQ-D6 и DQ-R4K7-+5В
// Data wire is plugged into pin 6 on the Arduino
#define ONE_WIRE_BUS 6
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
void setup(void)
{
// start serial port
Serial.begin(9600);
// Start up the library
sensors.begin(); // IC Default 9 bit.
}
void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");
Serial.print("Temperature for Device 1 is: ");
Serial.println(sensors.getTempCByIndex(0));
}
И в Serial Monitor вы увидите похожее на следующее
Requesting temperatures...DONE
Temperature for Device 1 is: 21.69
Зажмите сенсор между пальцами и увидите, как температура начнет медленно расти. Отпустите - точно так же медленно падать. Медленно - потому что у датчика довольно большая тепловая инерция, он попросту не успевает остывать или нагреваться так быстро. Но для наших целей более чем достаточно.
Ну и совершенно аналогично поступаем, подключая датчики в D7, D8 и D9.
Да, опять не могу удержаться
#include "SoftwareSerial.h"
#include "OneWire.h"
#include "DallasTemperature.h"
// Data wire is plugged into pin 6 on the Arduino
#define ONE_WIRE_BUS 6
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
void loop() {
sensors.requestTemperatures();
int temp=sensors.getTempCByIndex(0)*100;
Serial.println(temp);
sp.print(temp);
}
И у нас готовый термометр с цифровой индикацией температуры.
В принципе всё, можно с макетной платы переносить в "железо" и собирать все программки вместе ... но заказчик, после пары литров пива и объяснений, чего может и чего не может микропроцессорная техника, немного изменил техническое задание. Но об этом в следующем посту.
Итак, хватит разговоров, надо сделать что-либо полезное и приятное. А начнем мы с часов, совмещенных с показометром чего-нибудь. Чего именно и конкретно – пока я не определился.
В общем, сгребаем всё, что есть в предидущем посту и складываем на стол. Первым делом подключаем кабелем ардуинку к компьютеру и скачиваем весь необходимый для нее софт. Я останавливаться на этом не буду, ибо в интернете этих описаний – тьма и на любом языке. Точно так же я не буду останавливаться на том, что делает каждая конкретная функция.
Проверка для перехода к следующему шагу – стандартная “мигалка” компилируется, заливается в ардуинку и мигает светодиодиком, как положено.
Теперь подсоединяем индикатор к ардуинке. Ножку индикатора VCC цепляем к выводу +3.3V ардуинки. Не стоит занимать 0 и 1 ножку (там работа с компьютером) и 13й – там светодиодик.
В начале каждого скетча я сделал определение, какая ножка индикатора подключена к какому выводу ардуинки. Это при необходимости позволит быстро поменять схему.
int pinA=2;
int pinB=3;
int pinC=4;
int pinD=5;
int pinE=6;
int pinF=7;
int pinG=8;
int pinDP=9;
int pinPP=10;
int pinDIG1=11;
int pinDIG2=12;
int pinDIG3=A0;
int pinDIG4=A1;
Затем я делаю определение, в каком режиме должны работать порты ардуинки (у нас все работают на вывод)
и начнем включать/выключать точки с интервалом в одну секунду digitalWrite(pinPP,LOW);
delay(1000);
digitalWrite(pinPP,HIGH);
delay(1000);
В итоге в ардуинке должен залиться вот такой вот скетч int pinA=2;
int pinB=3;
int pinC=4;
int pinD=5;
int pinE=6;
int pinF=7;
int pinG=8;
int pinDP=9;
int pinPP=10;
int pinDIG1=11;
int pinDIG2=12;
int pinDIG3=A0;
int pinDIG4=A1;
Все просто: зажигаем циферку, затем увеличиваем ее и если она превышает 9, сбрасываем на 0. И затем с меньшим интервалом мигаем. В результате должен получиться вот такой вот скетч int pinA=2;
int pinB=3;
int pinC=4;
int pinD=5;
int pinE=6;
int pinF=7;
int pinG=8;
int pinDP=9;
int pinPP=10;
int pinDIG1=11;
int pinDIG2=12;
int pinDIG3=A0;
int pinDIG4=A1;
// the loop routine runs over and over again forever:
void loop() {
showDigit(count);
count++;
if(count>9)
{
count=0;
}
digitalWrite(pinPP,LOW);
delay(500);
digitalWrite(pinPP,HIGH);
delay(500);
}
С вот таким вот результатом
Ура? Ура конечно. Следующим шагом надо вывести какое-нибудь число. Я взял 1234.
В таких штуках механизм вывода числа простой: зажигаем первую цифру, затем вторую, затем третью и четверную.
За счет инерции нам будет казаться, что все цифры светятся одновременно.
Добавляем функцию, которая будет разбивать число на циферки и показывать их по порядку void showNumber(int num)
{
int divide=0;
for(int c=1;c<5;c++)
{
switch(c)
{
case 1:
digitalWrite(pinDIG1,LOW);
digitalWrite(pinDIG2,HIGH);
digitalWrite(pinDIG3,HIGH);
digitalWrite(pinDIG4,HIGH);
divide=1000;
break;
case 2:
digitalWrite(pinDIG1,HIGH);
digitalWrite(pinDIG2,LOW);
digitalWrite(pinDIG3,HIGH);
digitalWrite(pinDIG4,HIGH);
divide=100;
break;
case 3:
digitalWrite(pinDIG1,HIGH);
digitalWrite(pinDIG2,HIGH);
digitalWrite(pinDIG3,LOW);
digitalWrite(pinDIG4,HIGH);
divide=10;
break;
case 4:
digitalWrite(pinDIG1,HIGH);
digitalWrite(pinDIG2,HIGH);
digitalWrite(pinDIG3,HIGH);
digitalWrite(pinDIG4,LOW);
divide=1;
break;
} // switch
String s(int(num/divide));
char c=s.charAt(s.length()-1);
showDigit(c-'0');
delay(100);
}
}
Самым сложным тут является кусок кода String s(int(num/divide));
char c=s.charAt(s.length()-1);
showDigit(c-'0');
Вся его функция - "выкусить" нужную цифру из числа и затем показать.
скажем, нам нужна цифра 2 из 1234.
int(num/divide) - это "взять целую часть из деления num на divide". В нашем случае 1234/100=12
String(s - это "превратить данное число в строку"
s.length() - узнать длину строки в символах
s.charAt - взять Нный символ из строки
В итоге s.charAt(s.length()-1) значит "взять последний символ из строки". -1 нужен из-за того, что ардуинка считает, что 1й символ имеет "адрес" 0
c-'0' - превращаем символ назад в число. Отнеситесь к этому как к магии, иначе мне надо будет рассказывать вам про то, что такое ASCII
И заставляем ардуинку показать нам циферку
void loop() {
showNumber(1234);
}
Как обычно, скетч целиком
int pinA=2;
int pinB=3;
int pinC=4;
int pinD=5;
int pinE=6;
int pinF=7;
int pinG=8;
int pinDP=9;
int pinPP=10;
int pinDIG1=11;
int pinDIG2=12;
int pinDIG3=A0;
int pinDIG4=A1;
И вот обратите внимание, во время между шагами 3 и 4 на индикаторе горит 4! Да, это время невелико, но хватает, что бы мы заметили это.
Вывод? Надо между шагами 2 и 3 выключить показ циферок.
Добавляем вывод спец-цифры "10"
case 10:
digitalWrite(pinA,HIGH);
digitalWrite(pinB,HIGH);
digitalWrite(pinC,HIGH);
digitalWrite(pinD,HIGH);
digitalWrite(pinE,HIGH);
digitalWrite(pinF,HIGH);
digitalWrite(pinG,HIGH);
break;
Она просто будет гасить все сегменты. И вставим ее вызов самое начало ShowNumber
for(int c=1;c<5;c++)
{
showDigit(10);
Как видим, все получилось. Все красиво и никаких засветов нет. Можно побаловаться с разными циферками, поделать секундомеры.
Но нам нужны часы. Выключаем ардуинку, и вставляем на плату блок часиков. Предварительно вставьте туда батарейку, иначе чуда не будет. Соединения простые:
GND к GND,
VCC к +5V (НЕ к 3.3!)
SDA к A4
SCL к A5
И снова включаем, что бы удостовериться, что ничего не поломали и не оторвали.
Теперь для проверки уже блока часов скачиваем с https://github.com/adafruit/RTClib библиотечку RTC, добавляем ее в проект и заливаем вот такой вот скетч:
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
//RTC.adjust(DateTime(__DATE__, __TIME__));
}
Кака работает код, в принципе понятно из него самого. Но все-таки прокомментирую.
Система просто смотрит, не прошел ли уже заданный интервал и если прошел, то считывает время из часов точного времени и мигает двоеточием.
Почему я просто не поставил посередине что-нибудь типа delay(995)? Ответ опять же в том, что разные ардуинки имеют разную скорость работы. И код, который выполняется между delay,
выполняется за разный промежуток времени. А значит, в реальности между delay проходит разное количество времени. И чего, мне после каждого изменения кода или логики подбирать
задержку? Бессмысленное занятие при наличии под боком нормальных часов.
Код "now.second() % 2" означает "дробная часть при делении на два". Попросту говоря, я зажигаю светодиод каждую четную секунду (14/2=7.0), а гашу - нечетную (15/2=7.5).
Ну и now.hour()*100+now.minute() из часов и минут делает большое число.
Запускаем!
Ура! Работает! Теперь у нас есть часики. Свои, персональные! Можем танцевать и бросать в воздух чепчики!
Но мне же надо еще и показометр ...
Добавляем в loop
while (Serial.available() > 0) {
s=(char)Serial.read();
if (s == 'n') {
char ca[5];
txtMsg.toCharArray(ca, 5);
number_to_show = atoi(ca);
time_to_show=2;
digitalWrite(pinPP,HIGH); // we do to need dots
txtMsg = "";
} else {
txtMsg +=s;
}
}
Суть кода простая: если компьютер послал что-либо в ардуинку, то тупо собираем все, пока не попадется спецсимвол n - это Enter или Return.
Затем превращаем полученное в число и на две секунды показываем вместо часов. Думаю, что если вы одолели предидущее, то этот будет просто понять.
Вот он целиком (для тех, кто не просто копипастит, внутри сюрприз):
#include
#include
int pinA=2;
int pinB=3;
int pinC=4;
int pinD=5;
int pinE=6;
int pinF=7;
int pinG=8;
int pinDP=9;
int pinPP=10;
int pinDIG1=11;
int pinDIG2=12;
int pinDIG3=A0;
int pinDIG4=A1;
Итак, основа получения результата – это отсутствие заморочек.
Всё, что я использую, можно легко купить в любом магазине, занимающимся электроникой. ЧипИДип, Терраэлектроника, Вольтмастер, Амперка, Электронщик … в общем, поищите, наверняка рядом с вами есть фирмы, которые обеспечивают радиолюбителей полезными штуками.
Повторюсь, для повторения не надо будет даже паяльника. Но лучше с ним.
Итак, первое, что необходимо взять, это макетная плата с набором проводков к ней. Выглядит она как доска с кучей дырочек.
Они отличаются по размерам, числу дырочек, количеству проводков и другим наворотам. Нам подойдет любая, ибо создавать супер-сложные схемы мы не будем.
Главная цель макетной платы это позволить быстро и более-менее надежно собрать схему для проверки работоспособности. И так же быстро ее поправить или разобрать.
Вторым пунктом идет сам микроконтроллер. Я выбрал наиболее широко распространенный: arduino. Этих контроллеров и их клонов в магазинах как грязи по самым разным ценам. Для наших целей подойдет абсолютно любой.
В последнее время я почувствовал тягу к поддержке отечественных разработчиков, поэтому я по максимуму буду использовать наше.
Итак, в качестве микроконтроллера я взял CarDuino. Он же Arduino Nano или Nano Duo. Процессор ATmega328, документации очень мало, но есть русскоязычный форум. Использовать всякие “фишки carduino”, типа порта HV12 или SPK не буду (нет документации, не совместимы с другими ардуинками).
Для показометра я взял набор MP1091 от МастерКит. Четыре семисегментных индикатора, объединенных в один блок. Из документации только одна схема и черезжопу написанная библиотека.
Ну и венцом всего будет MP1095, в который спрятали уже готовую схему часов с батарейкой.
Отмечу, что хотя везде написано, что это наборы для Arduino, они прекрасно подойдут для других микроконтроллеров и компов.
Думаю, что обычный USB-miniUSB кабель, как и компьютер, вы найдете уж как-нибудь без моих подсказок.
Примерная стоимость набора в самом дорогом магазине Москвы:
Макетная плата с набором проводов – 1400 рублей.
CarDuino – 1180 рублей.
Индикатор MP1091 – 450 рублей
Часы MP1095 – 440 рублей
Итого 3500 рублей, из которых половину можно сэкономить, просто поспрашивав на форумах: многие отдают “макетки” и остальное за пиво-соки.
В дальнейшем в качестве “центрального компьютера” я буду использовать Raspberry Pi. Он точно так же доступен, обладает приличными характеристиками и при желании на нем можно собрать что угодно – от новогодней гирлянды до мультимедийного центра. Стоит ли вам его покупать сейчас, решать вам, но “часики/показометр” можно повторить за пару-тройку вечеров под пиво.
Опять же, к нему (хотя бы на начальном этапе) надо USB-клавиатуру, мышку, монитор с HDMI или RCA входом и еще один USB-miniUSB шнурок.
В общем, по ходу дела расскажу с фотографиями, что зачем надо и куда что во что включать.
Первое, что приходит в голову любому, кто желает добавить в автомобиль какого-либо функционала – это добавить в машину немного компьютера. Вещь привычная, как работать понятно, а с мониторчиком и клавиатурой разобраться тоже особых проблем не вызывает.
Собрать стандартную схему “музыку играем, навигатор показываем, в интернет ходим” достаточно легко. Обычный CarPC обходится примерно в 15-20 тысяч рублей и по своему функционалу не напрягаясь переплевывает то, что производители машин предлагают автолюбителям.
Но в этой простоте скрывается много подводных камней. Начиная от проблем с запуском в морозы и заканчивая проблемами с минимальными расширениями типа парктроников, датчиков давления и прочему. Подтверждением тому является много тем на соответствующих форумах.
С другой стороны, микроконтроллеры совершенно не имеют проблем с кнопками, индикаторами и датчиками. А на морозы большинству вообще чихать. Но одновременно они имеют дикие проблемы с высокоуровневым железом типа интернет-свистков или дисплеев. И почему-то обладают налетом этакой элитарности, дескать что бы что-либо на них сделать, надо очень сильно дружить в паяльником и обладать как минимум кандидатской в области электроники.
Вот, к примеру, моя первая хотелка: обычные маленькие часики в машину. Давайте прикинем, как можно их сделать.
Берем 4 индикатора для циферок и двоеточие для мигания секунд. Берем самое простое, а значит у каждого индикатора 7 ножек (по числу светящихся сегментов), итого 28 ножек. Еще по ножке для “двоеточия” и питания. Итого 30 ножек. Ладно, я знаю как упростить схему до 13 ножек (знание будущего, так сказать).
И? Куда такое количество ножек втыкать в компьютер? Значит надо сидеть придумывать и разрабатывать свою плату расширения.
А затем? Представляете, что будет твориться в компе? “так, надо проиграть следующие 5 секунд музыки, зажечь вон тот индикатор, а вон тот погасить, а там кнопку не нажали? так, надо снова зажечь индикатор, оп-па, GPS чего-то хочет нам рассказать” … Ничего не напоминает? Правильно, мысли новичка за рулем, когда мозг одновременно решает, насколько надо повернуть руль, какую педаль нажать и попытаться вспомнить пункт правил, регламентирующий разъезд на нерегулируемом перекрестке. В большинстве случаев спасает то, что компьютеры все-таки умеют делать это быстро и не свихнувшись при этом.
Но для микроконтроллера задачи позажигать индикторы вообще не стоит. У навороченных контроллеров число ножек для подобных целей измеряется десятками. А с платами расширения их число может легко измеряться сотнями. Зато задачи типа “проиграть mp3” или “показать пользователю картинку” в рамках одного контроллера не решаются никак. Для каждого действия вне установленных рамок требуется свой, отдельный микроконтроллер. В итоге музыку играет один контроллер, голоса типа “поверните налево” обеспечивает второй, а картинки рисует вообще третьий. А все это между собой связано какой-нибудь хитрой шиной … В общем, ужас. И этот ужас старательно поддерживается всеми, кто кормится с этой отрасли. А пользователи недоумевают: как же так, навигатор за 5 тысяч круче и навороченней встроенного в машину, за который отдали 100?
В итоге в реальности нет никакого противостояния между контроллерами и компьютерами. Как и опытный водитель просто не думает, какую педаль и насколько надо нажать, что бы машина поехала или остановилась. Как у него и не возникает мысли вроде “куда и насколько надо повернуть руль, что бы машина повернула?”
Так же поступлю и я. Все тупые задачи будет отрабатывать микроконтроллер. Показать часики, проверить, нажата ли кнопка или замерить напряжение в бортовой сети – все его задачи.
А вот узнать положение машины по GPS, распознать код ошибки или сходить в интернет – этими задачами пусть занимается компьютер.
Всё началось с того, что я переехал с семьей на другую квартиру. Сьемная, на километр дальше от метро. Всё бы было хорошо, но сигналы мобильных операторов балансировали на уровнях между “плохо” и “нет вообще”. Соответственно, все прелести пропадающей связи были в комплекте: дозвониться на домашний мобильник иногда было невозможно, а когда дозванивался, то бульки превращали разговор в игру “угадай, что я сказал”. Нет, в квартире есть проводной телефон, но ходить с ним к холодильнику в ответе на вопрос “что купить” совершенно не комильфо …
В общем, надо было решать этот вопрос с телефонией. Главная задача: обеспечить канал связи между мной и женой. Второстепенные задачи: сделать это максимально дешево, незатратно и ненапряжно. Шикарно, если получится сделать городской номер, что бы раздавать знакомым и который не будет меняться при переездах.
Первое, что пришло в голову, это воспользоваться сервисом МультиФон от Мегафона, благо все мобильные номера от него и дома беспроводного интернета завались. В плюсах у него достаточно простая настройка, но в минусах продолжает танцевать жаба: все звонки оплачиваются по мобильным тарифам.
Следующим шагом стала мысль поставить на свой сервер VoIP АТС, на смартфоны sip клиентов, настроить все это и начать радоваться жизни. В принципе задача совершенно реальная для меня, но в последнее время я стал предпочитать отдавать решение задач людям, которые специализируются на решении именно таких задач … В общем, надо идти к телефонным провайдерам.
Первым естественно в голову пришел sipnet. Старейший, толстейший и теде и тепе. Есть как свой клиент, так и наработанная база по подключению всего и всех. Из минусов – какая-то запредельная стоимость телефонного номера.
Дальше поиск привел к YouMagic от МТТ. В свое время я его тестировал и у меня остались двоякие впечатления: с одной стороны все есть, но с другой, это все подано таким винегретом … Но все равно зашел посмотреть что изменилось. Из наиболее видимого стала полная смена клиентов: когда я его тестировал, главным у них был клиент, написанный на java. Все прелести в виде тормозов, ресурсожручести и прочего в комплекте. Сейчас они договорились и сделали брендированную версию Bria (Её делает та же контора, которая делает X-Lite). А самый главный плюс был в том, что МТТ – ну очень толстая контора и владеет своей телефонной сетью, поэтому может позволить себе небольшие цены.
Следующим в списке стал Mango Office. Опять же, я давно его тестировал и он мне понравился. А сейчас у них всякие штучки, дрючки и свистелки с перделками. Я полюбовался на интеграцию их АТС с CRM и практически пошел создавать акканут, но по пути заглянул в раздел “тарифы” … В общем, по мобильникам с Дальнего Востока в Москву звонить дешевле.
Остальные мне не показались достойным упоминания. Они были или тупыми реселлерами кого-нибудь из потолще, либо обладали настолько невнятным сайтом, что я не мог в течении минуты-другой определить, что у них есть и за сколько …
Где-то на этом этапе я пришел к варианту взять номер у МТТ, поднять на своем сервере астериск, купить приличный sip клиент для iOS и Android, sip телефон домой и закрыть эту тему.
Стал читать интернет на предмет подводных камней и прочих заморочек с выбранной схемой. И внезапно обнаружил, что у МТТ есть youmagic.pro. Грубо говоря, виртуальная АТС с минимумом свистелок и перделок. За 300 рублей в месяц я получаю телефонный номер в Москве, 5 аккаунтов к нему, возможность создавать всякие простейшие диалпланы и голосовую почту в емаил. Почему они не рекламируют эту услугу … в общем, наверняка руководству известно.
Быстрый чёс по интернету показал, что больших подводных камней нет. Есть куча мелочей, которые свойственны большой конторе, но все решаемо.
Ок, “заткнись и возьми мои деньги!”. Регистрация, выбор номера, я внутри. 5 дней на оплату, а то заблокируют.
Первый камешек меня ожидал на страничке оплаты. Она не изменилась с бета-тестовых времен. То есть то что там написано в реальности не применимо. Фигня, метод тыка и система соглашается с тем, что у нее есть этот аккаунт (если что, то валидным для нее является не 8499номер, не номер, а 499номер).
Второй камешек – то, что после оплаты вас пытаются послать на страницу magic.mtt.ru, которой так же нет еще со времен теста.
Но это все мелочи. На счете появились деньги и можно начинать звонить.
Первый звонок был совершен с компьютера на мобильный телефон. Слышимость нормальная, только голос глуховат. Пойдет …
Но все время так звонить “некузяво”. Надо стационарный sip телефон.
Опрос знакомых в мордокниге ожидаемо вывел на сименс гигасет с суффиксом ip на конце. Первая попытка купить его на горбушке или околометрошных магазинах электроники закончилась провалом: его нигде не было. Только развалы дектовских панасоников.
Вторая попытка была предпринята уже в магазине около работы. Там внезапно было обнаружено аж 3 точки, где наличествовал этот телефон. Методом “да и ну его” был выбран самый дорогой вариант – Siemens C610A IP. Почти четыре тысячи рублей.
Что было получено? Раздельные “стакан” и “база”. Очень удобно – не надо мучаться с выбором места установки. Обычные пальчиковые аккумуляторы – на предидущем телефоне были какие-то свои. В итоге оказалось дешевле выкинуть телефон, чем купить новый аккумулятор. Возможность работы с 5 sip провайдерами одновременно и какое-то слабое подобие диалплана. Ну и для резерва остается обычная телефонная линия, куда его тоже можно воткнуть.
Остальные фиговинки типа клиента электронной почты … в общем, маркетоидный бред, даже смотреть в ту сторону не стал.
Итак, финальная стадия в виде попытки все это собрать в одну кучу.
Базу в розетку, телефонную линию и ethernet в нее. Трубку на место старого телефона и тоже в розетку … Все сверкает и переливается, поэтому тупо понажимал “ок”, пока не прекратилось мельтешение.
Что получил в результате? Телефон с обновленной прошивкой, подключенный в обычную линию, к какому-то gigaset.net и аккаунт sipnet с кучей циферок. С sipnet получилось прикольно: телефон спросил меня, имею ли я какой-нибудь код автонастройки, а вместе с ним была бумажка от сипнета с этим самым кодом. Ну я и ввел его.
Но мне-то надо на МТТ! Пошел читать, как все это настраивать. На wiki от МТТ есть аж три варианта настроек именно этого телефона. Правда, отличаются они только методом “проникновения” на телефон. И опять же, если следовать им, то телефон даже в принципе не будет способен соединиться. Ибо прошивки новые, пункты не совпадают и так далее.
Потом сделал попытку воспользоваться автонастройкой. Толку было столько же, то есть нифига. Registration failed. Спасибо вам, маркетолухи сименса за сокрытие подробностей от пользователя! Ни логов, ни … в общем, вообще ничего нет. Почему оно не может – догадывайся сам. В качестве спасительного круга можно воспользоваться “вызовом мастера настройки АТС”, но это уже крайний случай …
(тут пропущены tcpdump, маты, расколупывание потока и конфигурирование роутера). В общем и если кратко, про хотя бы UPnP оно не в курсе, и надо давать ему “все на всех и везде”.
Наконец в страничке статуса я увидел registered. Тестовый звонок подтвердил, что все работает. Ура! Пошли настраивать дальше.
Тут в принципе можно было бы и завершать рассказку, ибо дальше каждый настраивает все под свой вкус … Но я оставлю резюме.
Итак, что я получил за четыре тысячи единовременных и 300 рублей постоянных затрат?
– Москвовский номер с кодом 499
– Возможность приема звонков с него как на мобильные телефоны (после установки клиентов), так и обратно.
– Стационарный телефон, с которым теперь можно бегать по квартире.
– Голосовую почту и возможность “наберите добавочный номер или дождитесь ответа оператора”. Слабенькое, дохлое, но есть.
– Практически мгновенную связь между внутренними клиентами. С мобильного-3G на стационарный-sip часто даже “гудков вызова” нет.
Что плохо?
– Тормозной сайт. Все выполняется медленно и печально.
– Куча бессистемно сваленной документации в формате “наотеб.сь”. Толку чуть больше нуля.
– На iOS запуск клиента приводит к остановке музыки (запуск, а не звонок!) и пожиранию батарейки. На андроиде не пробовал.
– Сименс страдает тем же, что и МТТ. К примеру, не умеет перерегистрироваться сам, без пинка в виде перезагрузки. Обещает индикацию состояния лампочкой на базе, но не показывает и так далее и тому подобное. Зато регулярно обещает “риск урагана” в Москве.
Я люблю смотреть на всякие графики. Температуры, объемы или скорости. Не важно. Главное в этом деле – легкий сбор данных и последующая их визуализация.
Давным-давно я мечтаю о неком универсальном разъеме в тушке человека, куда можно воткнуть спец-устройство, которое через некоторое время выдаст мне информацию о состоянии организма. А если обладать необходимыми знаниями, то и подправить поведение некоторых органов так, как мне надо. У машин такие разъемы давно есть, а вот человек вынужден пока использовать для каждого параметра свое устройство.
Не так давно в арсенал моих программ попала Runtastic HeartRate. У нее одна-единственная функция – измерять пульс или по-научному частоту сердечных сокращений (ЧСС).
Есть для всех устройств, для работы требует только одного: что бы камера на смартфоне располагалась рядом со “вспышкой”/фонариком. Так, что бы можно было закрыть одним пальцем.
Принцип работы прост: яркий светодиод от “вспышки” светит в палец, а кровоток в такт пульсу меняет поток света, попадающий в камеру смартфона. Остается только это зафиксировать и подсчитать.
Но просто так показывать не интересно. Во-первых, HeartRate заинтегрирована с основным порталом runtastic, куда сливает информацию и там позволяет рисовать всякие графики. Это мелочь, так много программ умеют.
А во-вторых, у HeartRate есть полезная функция ежедневного “теребления” пользователя о необходимости померить пульс. С учетом того, что сам процесс измерения занимает 15-20 секунд, это совершено не создает неудобств. Главное, что бы измерения происходили примерно в одном и тоже время в одном и том же состоянии.
И наконец, результатом этого стало изобретение велосипеда: теперь когда я болею, я получаю не только субъективные подтверждения болезни, но и объективные. Если кому интересно, то по графику можете прикинуть, когда за последние два месяца моей тушке было плохо (Hint: ЧСС больше 90).
Ну и вдруг в случае чего, для врача однозначно не будет лишним такой график.
Теперь бы найти точно такое же ненапряжное решение для измерения давления …