Впечатления от iPhone

Примерно полтора года назад купил iPhone 6s Plus.
Понадобился второй телефон, т.к. использовать два номера на одном двухсимочном аппарате очень неудобно.
Покупать простую кнопочную звонилку — не вариант, т.к. в этом случае возникают сложности с синхронизацией контактов между двумя телефонами.
Покупать второй телефон с Android скучно и неинтересно.
К тому же мне нужно было тестировать одно мобильное приложение, у которого есть версия и для Android, и для IOS.
На момент покупки актуальным был iPhone 7 и вот-вот, через пару месяцев, должен был выйти iPhone 8. Однако, цена актуального аппарата и отсутствие миниджека убедили меня выбрать iPhone 6s. А в виду того, что единственный на тот момент телефон был с относительно небольшим экраном — 5 дюймов — выбрал большую версию iPhone 6s Plus.

По прошествие достаточно большого срока хочу высказать своё мнение об iPhone, как в отрыве, так и в сравнении с телефонами Samsung C5 и Xiaomi Redmi 5 plus, которые я по-очерёдно использовал вместе с iPhone.

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

mac os x: удалить иконку из Launchpad

Перетягиваем иконку из Launchpad в док. В доке кликаем правой кнопкой на этой иконке и пункт «Показать в Finder». В открывшемся окне удаляем иконку, потом удаляем иконку из дока.

Сравнение Macbook Pro 13 2017 и Macbook Air 13 2015

Чуть больше года назад купил Macbook Air 13 2015, RAM 8GB, SSD 256GB.

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

Ждал выхода нового макбука и дождался такого, что без ругательств сложно описать, ну вы сами знаете. Решил купить Macbook Pro 13 2015, но найти его в продаже сложно, тем более у нас. Вероятно мне надо было реагировать быстрее, может быть и успел бы. Сейчас же старую модель можно купить разве что без русских букв, да и не особо она и подешевела — 86 тысяч рублей против 95 тысяч за младший новый Macbook Pro. Короче говоря, мучился я, мучился и решил, что придётся попробовать новый Macbook. Остановился на самой доступной версии — Macbook Pro 13 2017 RAM 8GB, SSD 128GB. Купил его 6 февраля 2018 г.

Лично меня в новых макбуках пугает не отсутствие нормальных разъёмов, не наличие всего двух USB-C (в младшей версии), а странная, плоская, клавиатура и, особенно, конфигурация блока управления курсором, который, как нарочно, сделали максимально неотличимым от остальной части клавиатуры. Кстати, я не пояснил для каких целей я использую макбук. Я — сисадмин, причём основной метод удалённого управления оборудованием это текстовая консоль. Поэтому для меня важнее всего именно клавиатура, не процессор, не память и даже не жёсткий диск. Важен именно рельеф клавиатуры, который позволяет нажимать клавиши не глядя на них, в том числе, и особенно, клавиши управления курсором. На старом макбуке пальцы легко вслепую находили клавиши управления курсором. Удобнее всего, конечно же, обычная полноразмерная настольная клавиатура, но речь сейчас не о ней.
Следующий момент, вызвавший во мне отторжение и недоумение — это невозможность видеть процесс зарядки аккумулятора в виду полного отсутствия индикаторов как на корпусе ноутбука, так и на зарядном устройстве или кабеле. На старом макбуке, с его чудесным MagSafe, прямо на разъёме был индикатор. Теперь же, получается, я могу проверить зарядился ли ноутбук только включив его открыв крышку и подождав пару секунд — на экране отображается уровень заряда. Кстати, до сих удивляет, что у айфона нет светодиода индикатора состояний, наверняка причина не техническая, а чисто маркетинговая.

Однако, несмотря на большие сомнения в удобстве клавиатуры, я решился на переход на новый макбук только ради нормального экрана. Альтернативный вариант — покупка обычного ноутбука и установка на него Линукса — меня не зацепила, хотя на рабочем компьютере у меня как раз Линукс и стоит.

По габаритам и весу описываемые два ноутбука существенно не отличаются. У обоих ноутбуков одна и та же ёмкость аккумулятора — 54,5 Втч. Предположительно у Air автономность должна быть больше, т.к. экран там существенно проще, зато у нового Macbook вроде как более энергоэффективные процессоры. В общем надо проверять, хотя судя по первым часам пользования складывается ощущение, что новый макбук немного быстрее разряжается, но выводы делать пока рано.

Впечатление от экрана даже превзошло ожидания — экран впечатляющий, такое ощущение, что у меня зрение стало лучше, настолько всё чёткое )

После пары недель использования новым Macbook Pro могу сказать, что к клавиатуре я пока так и не могу привыкнуть. Спасает только то, что пальцы находят их, а точнее их место, по старой привычке, а сами клавиши практически не чувствуются.
Кроме того клавиши отсвечивают при определённом освещении, становятся серыми, на них сильно видны следы от пальцев, в результате надписи на клавишах теряются. На старом макбуке ничего такого нет.
Ещё клавиатура щёлкает странно, по разному — какие-то клавиши щёлкают чётко и звонко, а какие-то с дребезжанием или глухо и, вроде бы даже, с разным усилием. Из-за этого клавиши не всегда нажимаются, вроде по клавише я попал, а символ не напечатался. Теперь стараюсь стучать по клавишам сильнее.

Увеличенный в размерах трекпад, вопреки опасениям, не приводит к нежелательным перемещениям курсора. Но и какого-то явного увеличения удобства я не заметил, хотя и ждал его.

На данный момент, после двух недель использования, я всё ещё хочу не новый Macbook Pro 2017, а старый 2015 года. Я уже соскучился по нормальной клавиатуре.

Дополнение за номером 1

Всё это время, ровно месяц, я старательно избегал пользования старым Macbook Air, даже в руки не брал, чтобы быстрее привыкнуть к новому. И вот сегодня решил, попробовать взглянуть на старый ноутбук новыми глазами, ну или хотя бы посмотреть не разрядился ли он. Так вот, не разрядился — 89%.
Старый показался мне тоньше и шире нового, но это даже лучше — руки на нём лежат удобнее. Клавиши такие маленькие и толстенькие, расстояние между ними больше, вот набираю эти два новых абзаца и понимаю, что явно удобнее — клавиши ощущаются, ложных попаданий намного меньше, все клавиши нажимаются одинаково, хоть и без чёткого щелчка, невнятно, но зато понятно и тихо. Пальцы находят клавиши управления курсором легко и естественно, даже не «находят», а просто ложатся на них сами. А ещё клавиши не бликуют и на них не так сильно видны пятна.
А вот дисплей расстраивает, особенно на мелких буквах.
Маленький старый трекпад вообще ничем не хуже нового большого.
Вот сейчас ещё пойду подключу к старому ноутбуку зарядку MagSafe и порадуюсь )

Дополнение за номером 2 от 20 апреля 2018 г.

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

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

А ещё неожиданная проблема с включением ноутбука. После почти трёх месяцев я так и не знаю как точно надо включать ноутбук. Включение у меня происходит примерно так: просто нажимаю как раньше — не включается, потом зажимаю и жду пару секунд — не включается, опять просто нажимаю — включается. Пробовал по-разному: сразу зажимал на 2-3 секунды — не включается. Ждал пока отобразится уровень заряда и когда он гас нажимал кнопку питания — не включается. Мне кажется, я не помню ни одного случая чтобы мне удалось включить ноутбук с первого раза.

Моё первоначальное подозрение, что новый Macbook разряжается быстрее старого Macbook Air подтвердилось. Правда замеров и тестов я не проводил, разница не пугающая, но заметная.

Если вдруг выйдет обновлённый Macbook Air со старой клавиатурой, нормальным дисплеем и неважно какими портами, то я на следующий же день побегу в магазин и постараюсь заказать его в максимальной конфигурации, чтобы его хватило надолго. Но, несмотря на слухи в Интернете, я сильно сомневаюсь, что такой ноутбук выпустят.

Дополнение за номером 3 от 15 августа 2018 г.

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

Аккумулятор держит явно меньше, чем на MacBook Air 13, хотя и не критично.

Зарядка не нравится. Надо прицеливаться в разъёмы, одной рукой подключить или отключить кабель сложно. Нет индикации уровня заряда, надо открывать крышку, чтобы на дисплее увидеть на несколько секунд уровень заряда.

Не хватает хотя бы одного обычного USB-порта. Не взял с собой переходник — не смог подключить ни флешку, ни езернет-адаптер.

Продолжение следует...

Policy-routing на CentOS

Довольно распространённая ситуация — на моёй рабочей станции есть два интерфейса и два айпишника, скажем из подсети А и подсети Б. При обращении клиента с хоста из сети Б к моему айпишнику из подсети А ответ к нему уходит через другой интерфейс с моего айпишника из подсети Б, т.к. он из той же подсети, что и адрес клиента. Мне надо сделать, чтобы эти ответы уходили с того же адреса на который пришли.

Тут нужен policy-routing — маршрутизация на основе определённых правил. Логика получается такая: ответы на запросы из подсети Б к моему адресу из подсети А отправлять с адреса из подсети А (т.е. на шлюз подсети А).

Маркируем соединения из сети Б к нашему адресу из сети А при помощи iptables и таблицу mangle (используется для изменения пакетов):
iptables -t mangle -I INPUT -i eth0 -s 10.1.100.0/24 -d 10.2.96.3 -j CONNMARK --set-mark 1
А на выходе копируем маркировку соединения в маркировку пакетов, насколько я понимаю, это означает, что мы маркируем пакеты промаркированных ранее соединений:
iptables -t mangle -I OUTPUT -s 10.2.96.3 -d 10.1.100.0/24 -j CONNMARK --restore-mark
Вероятно, в этом правиле можно обойтись и без указания адресов источника и адресата, но мне кажется так будет правильнее, более точно чтоли )

В таблицу маршрутизации 111 добавляем маршрут для сети Б, но на шлюз из подсети А:
ip route add to 10.1.100.0/24 via 10.2.96.1 dev eth0 table 111
И, наконец, добавляем правило для перенаправления пакетов с нашей маркировкой в отдельную таблицу маршрутизации:
ip rule add fwmark 1 lookup 111

Для удобства можно назначить название для таблицы в файле /etc/iproute2/rt_tables, которое можно будет использовать вместо номера.

Так же нужно проверить не включена ли проверка обратного пути (reverse path checking):
sysctl net.ipv4.conf.eth0.rp_filter
Если включена, то система будет проверять пакеты на соответствие источника интерфейсу, с которого пакет получен. Например, если пакет пришёл с адреса, который виден через другой интерфейс (а не тот, с которого пакет пришёл), то значит этот пакет надо отбросить.

Если всё заработало как надо, то сохраняем правила iptables в файл "/etc/sysconfig/iptables", а правила для маршрутизации в файл "/etc/sysconfig/network-scripts/route-eth0".

Далее несколько вспомогательных команд, которые могут пригодиться.

Посмотреть определённую таблицу маршрутизации:
ip route show table 111
Удалить маршрут из указанной таблицы
ip route del table 111 to 10.1.100.0/24
Посмотреть правила маршрутизации:
ip rule show
Удалить правило маршрутизации:
ip rule del fwmark 1

Как посмотреть правила iptables писать не буду )

Цена на кабели к смартфонам Samsung и Apple

По сути пост ни о чём, все и так знают, что аксессуары Apple неоправданно дорогие. Просто сам столкнулся и так удивился, что решил поделиться )

Понадобились мне кабели USB Type-C и Lightning. За первым я пошёл в фирменный салон Samsung, а за вторым в магазин авторизованного представителя Apple, по крайней мере оба магазина так о себе заявляют.

Кабель Samsung USB Type-C стоит 400 сом, кабель Apple Lightning стоит 1490 сом. Разница более чем в 3,5 раза.
Конечно, кабель USB Type-C в довольно простом пакетике, а кабель Lightning в красивой, добротной коробочке и парой маленьких брошюрок, но они мне не нужны. Какой-то явной разницы в качестве не заметил. Более того, кабель Samsung USB Type-C длиннее примерно на 10 см.

Фирменный кабель Lightning — это не блажь. Предыдущий кабель фирмы Remax (вроде не совсем уж нонейм) визуально более красивый и добротный, в довольно крепкой оплётке, начал глючить — периодически отказывается заряжать айфон, т.е. подключаешь зарядку, а телефон её не видит. Хотя я был с ним очень аккуратен, на нём нет никаких перегибов, потёртостей и других видимых изъянов. Вот я и решил купить фирменный кабель.

Кстати, считаю конструкцию кабеля Lightning намного более удачной нежели кабеля USB Type-C. Разъём со стороны телефона у Lightning явно более крепкий и продуманный — толстая площадка с контактами, которая вставляется в простой разъём телефона, ничего лишнего грубо говоря — палочку вставляешь в дырочку. А кабель USB Type-C, такое ощущение, что специально назло Apple сделали наоборот — вывернули и поэтому получилось сложнее: разъём на кабеле должен надеваться на контактную площадку в разъёме телефона, т.е. должна точно совпасть не только контактная площадка, но и рамка вокруг неё. Разъём Lightning на телефоне сломать надо очень постараться, там нет выступающих частей, а разъём USB Type-C на телефоне — это тонкая контактная площадка внутри углубления. Примерно тоже самое с разъёмами на кабелях — на Lightning, как я уже говорил, толстая контактная площадка и всё, испортить сложно, а на кабеле USB Type-C полость, в которой тонкие контакты. В результате подключение кабеля USB Type-C всё равно требует внимания и аккуратности, хоть теперь и не нужно определять верх-низ разъёма. Тогда как кабель Lightning подключить намного проще, но с другой стороны отключить его немного сложнее — он крепко держится, а ухватиться сложно, т.к. корпус разъёма слишком маленький и гладкий, но это уже придирки )

CentOS: статистика

В папке /proc можно найти много всякой полезной статистики, например:
/proc/meminfo — статистика по памяти;
/proc/diskstats — статистика по дискам;
/proc/net/dev — счётчики трафика на сетевых картах;

А ещё есть данные в папке /sys/class, например счётчики трафика на отдельных сетевых картах:
/sys/class/net/eth0/statistics/rx_bytes
/sys/class/net/eth0/statistics/tx_bytes
/sys/class/net/eth0/statistics/rx_packets
/sys/class/net/eth0/statistics/tx_packets

Там же есть данные по параметрам сетевой карты, например, скорость соединения, режим дуплекса.

CentOS: Запуск демона при помощи systemd

Установил net-snmp из исходников, т.к. пакет требует наличия библиотек mariadb, которые конфликтуют с установленным mysql.

Для нормального запуска демона посредством systemd создал файл /usr/lib/systemd/system/snmpd.service:
[Unit]
Description=Net-SNMP daemon
Documentation=man:snmpd(8) man:snmpd.conf(5)
After=network.target

[Service]
ExecStart=/usr/local/net-snmp/sbin/snmpd -f -c /etc/snmpd.conf -p /var/run/snmpd.pid
ExecReload=/bin/kill -HUP ${MAINPID}
ExecStop=/bin/kill -TERM ${MAINPID}

[Install]
WantedBy=multi-user.target

Обратите внимание на ключ "-f" — не уходить в фон. Так systemd может прочитать pid процесса. Иначе у меня не получилось, опция «PIDFile=» не помогла.

Теперь демон нормально обрабатывается командой systemctl:
systemctl enable snmpd.service
systemctl start snmpd.service
systemctl status snmpd.service
systemctl stop snmpd.service

CentOS: установка VMWare Player

Скачиваем дистрибутив с официального сайта. Скаченный файл, например, VMware-Player-7.0.0-2305329.x86_64.bundle — это шелл-скрипт. Запускаем установку:
sh VMware-Player-7.0.0-2305329.x86_64.bundle

После успешной установки в меню программ System появится пункт «VMWare Player».

Удалить его можно вот так:
sh VMware-Player-7.0.0-2305329.x86_64.bundle --uninstall-product vmware-player

CentOS: iSCSI

Настраиваем iSCSI-сервер (таргет)

Выбираем для этого раздел, не забываем отмонтировать его и убрать из /etc/fstab если надо, например это будет раздел sdc1.

Устанавливаем пакет:
yum -y install scsi-target-utils

Затем в файле /etc/tgt/targets.conf прописываем наше устройство:
<target iqn.2014-12.tld.mydomain:myserver.test>
# Устройство:
backing-store /dev/sdc1
# Адрес iSCSI-клиента (инициатора), можно указать несколько таких строк:
initiator-address 10.0.0.1
№initiator-address 10.0.0.2
# Если надо — логин и пароль:
#incominguser test pass-12345


Запускаем службу:
/etc/rc.d/init.d/tgtd start

Прописываем её автозапуск:
chkconfig --levels 23 tgtd on

Проверяем состояние:
tgt-admin --show

Открываем, если надо, порт 3260 в файрволе.

Посмотреть текущие поключения инициаторов к указанному таргету можно вот так:
tgtadm --lld iscsi --mode conn --op show --tid 1
Session: 4
Connection: 0
Initiator: iqn.2014-12.tld.mydomain:client1
IP Address: 10.1.0.1

Настраиваем iSCSI-клиент (инициатор)

Устанавливаем пакет:
yum -y install iscsi-initiator-utils

Если на таргете задавали логин и пароль, то прописываем их в файле /etc/iscsi/iscsid.conf, иначе можно его не трогать. Рядом с этим конфигом лежит файл initiatorname.iscsi, в котором не помешает задать понятное вам имя инициатора:
InitiatorName=iqn.2014-12.tld.mydomain:client1

Прописываем службы в автозапуск:
chkconfig --levels 23 iscsid on
chkconfig --levels 23 iscsi on
Проверяем включен ли автозапуск для netfs и если надо — включаем:
chkconfig --list netfs
chkconfig --levels 23 netfs on

Опрашиваем таргет:
iscsiadm -m discovery -t sendtargets -p 10.0.0.1
Должно выдать что-то вроде этого:
10.0.0.1:3260,1 iqn.2014-12.tld.mydomain:myserver.test

Можно просмотреть состояние:
iscsiadm -m node -o show

Подключаемся к таргету:
iscsiadm -m node --login -T iqn.2014-12.tld.mydomain:myserver.test
Проверяем сессию:
iscsiadm -m session -o show
Должно показать что-то вот такое:
tcp: [1] 10.0.0.1:3260,1 iqn.2014-12.tld.mydomain:myserver.test (non-flash)

Теперь проверяем появился ли новый диск в системе и если появился, то работаем с ним как обычно.

Создаём разделы (подробности не описываю):
fdisk /dev/sdc

Форматируем:
mkfs.ext4 /dev/sdc1
(или mkfs.xfs /dev/sdc1)

Монтируем:
mount -o noatime,nodiratime /dev/sdc1 /mnt/1

И добавляем в /etc/fstab:
/dev/sdc1 /mnt/1 ext4 _netdev,rw 0 0

Или же можно подмонтировать по UUID:
blkid /dev/sdc1
/dev/sdc1: UUID=«e65ea5f6-9a37-456e-9f33-00d63890c8f3» TYPE=«ext4»

Написано, что по UUID лучше, т.к. идентификатор устройства, например после подключения/отключения дисков, может измениться, а UUID — нет.

В этом случае в /etc/fstab добавляем:
UUID=e65ea5f6-9a37-456e-9f33-00d63890c8f3 /mnt/1 ext4 _netdev,rw,noatime,nodiratime 0 0

Службы iscsi-инициатора при запуске будут подмонтировать все таргеты, найденные в своей базе (/var/lib/iscsi/nodes). Соответственно система будет брать диск с нужным UUID и монтировать его в соответствии с записью в /etc/fstab, ну или как вы указали в команде mount.

Отключение iSCSI-диска

Как обычно отмонтируем:
umount /dev/sdc

Отключаемся от таргета:
iscsiadm --m node -T iqn.2014-12.tld.mydomain:myserver.test -u

Проверяем:
iscsiadm -m session -o show
iscsiadm: No active sessions.

Если таргет больше не нужно подключать, то, после отключения от него, лучше удалить его из базы, чтобы при каждом запуске системы таргет снова не подмонтировался:
iscsiadm -m node -T iqn.2014-12.tld.mydomain:myserver.test -o delete

Подключение раздела локально

Подмонтировать раздел, используемый как iscsi-таргет, локально как обычный диск мне пока не удалось. Это плохо. Успокаивает то, что можно подключить его как iscsi-диск с той же машины так же как и с удалённой.

CentOS: Переустановка загрузчика (GRUB)

Взято отсюда, на себе не проверял пока )

Переустановка загрузчика (GRUB)

Выполните следующие шаги.

Шаг 1: Загрузка CentOS с инсталляционного диска (например #1 CD или DVD).

Шаг 2: Выбрать «linux rescue» в поле меню «boot».

Шаг 3: Смонтировать все файловые системы в режиме чтения-записи.

Шаг 4: Заменить корень на реальный корень ("/") на жестком диске.

# chroot /mnt/sysimage

Шаг 5: Переустановка загрузчика (GRUB).

Если вы переустанавливаете GRUB в MBR на диск SCSI или SATA (/dev/sda).

# grub-install /dev/sda

Если вы переустанавливаете GRUB в PBR в раздел #2 на диск SCSI или SATA (/dev/sda2)

# grub-install /dev/sda2

Если вы переустанавливаете GRUB в MBR на IDE диск (/dev/hda).

# grub-install /dev/hda

Если вы переустанавливаете GRUB в MBR на диск HP Smart Array (/dev/c0d0).

# grub-install /dev/cciss/c0d0