Так что же с GPS?

14 мая, 13:42

Какая-то ненормальная паника в интернете по поводу GPS. Кипиш начался после того, как Рогозин заявил, что РФ приостановит работу наземных станций. Началось нытье, что GPS перестанет работать, что его хотят запретить и прочий маразм.

Для того, чтобы запретить GPS в РФ, нужно физически уничтожить спутники. Иначе никак.

Спутники, летающие по орбитам, транслируют в дециметровом диапазоне свои координаты и точное время. Для того, чтобы айфон определил своё месторасположение перед чекином, ему нужно получить координаты минимум трех спутников (грубо, четыре для более точного определения) и по несложной формуле уже высчитать свои.

Что же делают эти наземные станции?

Спутники движутся очень быстро, их координаты постоянно меняются. В разных точках орбиты они отправляют данные на разных частотах. Чтобы GPS-приемник начал работать, ему нужен набор сведений для поиска видимых спутников — альманах.

Так вот наземные станции расчитывают изменение орбит спутников и знают точное их месторасположение. По этим данным станции прогнозируют предполагаемое местонахождение спутника в будущем. Прогнозы эти называются эфемеридами.

Чем актуальнее альманах и эфемерид, тем быстрее устройство находит спутники. Если где-нибудь посреди океана включить GPS-приемник, который был выключен несколько дней, то на определение координат может уйти до 12 минут.

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

По факту отключение базовых станций не несет серьезных проблем, про падение точности на 1-2% тоже спорно. Возможно это заметят геологи где-то вдали от цивилизации, но скорее всего всё скажется только на времени поиска спутников.

Политика

Как же правительство может поднасрать своим гражданам и лишить их удобства GPS?

Наверное только перекрыв кислород для A-GPS. Блокировать трафик к серверам для получения актуальных данных, а также запретить их передачу через GSM-сети.

А вот США уже может спокойно снизить точность работы GPS в любую секунду для всех пользователей. А точные оставить только тем, кто сможет их расшифровать (армия, спецслужбы).

Такие дела.

Чистый буфер

5 мая, 16:11

Иногда очень раздражает форматирование буфера обмена. Хочешь, например, вставить из терминала в письмо что-нибудь, а получаешь что-то несуразное:

Некоторые программы вроде Эверноута поддерживают возможность вставки без форматирования, но на уровне системы такой штуки нет.

Раньше приходилось выдумывать костыли вроде вставить в блокнот и скопировать снова. Позже был придуман алиас для терминала, который чистил буфер:

alias clean="pbpaste | pbcopy"


Но это было неудобно. Однажды лень перевесила, полез разбираться с Автоматором.

Задача: сделать службу, которая должна вставлять неотформатированный текст. За основу я решил использовать связку pbpaste и pbcopy, так как мне всё равно хотелось кроме вставки неотформатированного текста ещё и загнать его обратно в буфер.

Поэтому добавляем действие «Запустить shell-скрипт», вставляем код:

pbpaste | pbcopy


Буфер чист.

Далее нужно его просто в документ. Досадой оказалось что это сделать стандартными действиями нельзя, нужно исхитряться и симулировать нажатие cmd+v. Поэтому добавляем «Запустить AppleScript» и вставляем следующий код:

on run {input, parameters}
	tell application "System Events" to keystroke "v" using {command down}
	return input
end run

Далее выключаем входные данные службы и сохраняем.


Теперь в настройках клавиатуры в сочетаниях клавиш появится новая служба, на которую можно повесить любой удобный хоткей. Работает универсально во всей системе.



Дом в облаках

13 апреля 2014, 22:58

Недавно я решительно отказался от разных облачных сервисов типа Дропбокса по следующим причинам:

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

Критичным оказался второй пункт. Я очень хотел синхронизировать несколько папок на разных разделах, а самое главное папку home.

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

Как всё работает: выбираю я папку, например, с проектами. Генерируется секретный ключ. Передаю ключ другому человеку, он добавляет к себе, и... всё. Папка синхронизируется. Никаких аккаунтов, никаких тарифных планов, ограничений. Чистый п2п.

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

Решаемые проблемы:

  • размер хранилища ограничен только размером диска участников;
  • про папки уже сказал;
  • своим серверам больше доверия, по крайней мере их контролируешь;
  • скорость ограничена каналом участников. Так как всё работает п2п, то внутри локальной сети синхронизация вообще скоростная.

Ещё плюшки:
Есть клиенты под все платформы, включая мобильные. Линукс версия работает как через консоль, так и через встроенный веб-сервер. Очень удобно.
Кроме обычного токена можно ещё сгенерировать токен только для чтения, что вообще нереально круто.

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

Блуждая по вкладкам

27 февраля 2014, 16:36

Часто так бывает, что в терминале открыто с десяток табов, в каждом из которых висят ССШ-сессии на разные сервера.

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

Что же можно сделать?

Да всё просто, переименуем вкладки.

Правильные ребята подключаются к ССШ через конфиг — это и время сокращает, и меньше мусора в аргументах.

Нам нужно выполнить локальную команду. Смотрим ман по ssh-config:

LocalCommand
Specifies a command to execute on the local machine after successfully connecting to the server.
[...]
This directive is ignored unless PermitLocalCommand has been enabled.

То, что нужно. Обновляем конфиг нашего сервера:

Host build
User root
Port 22
Hostname 192.168.1.200
PermitLocalCommand yes
LocalCommand echo -n -e "\033]0; Cherry (Debian 7)\007"

Без директивы PermitLocalCommand всё это работать не будет.

Получаем такую вот красоту:

Польша

8 января 2014, 0:49

Угораздило тут меня попасть в Варшаву на Рождество. Я слышал, что в такое время в Европе всё (вообще всё) закрыто, но здравый смысл сопротивлялся. Как же так? А где люди празднуют? А в ресторане посидеть на праздник? Да ну нахер, нужно же получать профит с гуляющей толпы людей на праздники.

Ан нет, ведь толпы тоже нет. Вообще. Город мертв.

Центр, Дворец культуры и науки. Даже стоянки пустые вокруг.


А так город очень клевый. Какие-то 500 километров от Минска, как город моментально становится для людей, а не для галочки. Даже такие мелочи, как вывески, реклама, витрины, знаки очень важны — именно они и наделяют город душой. В Варшаве или люди ответственные, или мэр сечет фишку, я не знаю. А скорее всего и то и другое.

Европейцы к малому бизнесу подходят ответственно и креативно — ведь это прямым образом сказывается на продажах. А мэрия делает дизайн-код: изуродовал фасад херовой вывеской — вон отсюда. В любом случае разглядывать витрины было одно удовольствие.

По витрине и не скажешь, что это чайное кафе, а не магазин лабораторного оборудования.


После Минска Варшава радует деталями.

На маленьких улочках, как правило не принято отхапывать кусок тротуара для автобусной остановки. Поэтому делают 3 полосы для движения. Крайняя из них выделяется под остановку, по двум остальным проходит трафик.

Все это аккуратно выделяется с любовью уложенной плиточкой.



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

Таблички.


Вайфай.

Даунтаун соседствует со сталинской архитектурой.

Где люди?

После Евро-2012 в городе осталась куча паркоматов. Вроде и работают (функционируют), но нифига не понятно. Официальное приложение для айфона так и не нашлось, хотя куар-код через тридевять редиректов должен был привести меня в аппстор.

Достопочтенный пан, выгуливающий собаку с интересом наблюдал за моими попытками освоить чудо техники и оплатить стоянку. Через несколько минут, получив удовлетворение от возгласа «Да как эта херня работает???», он спокойно произнес — «никак», после чего медленно скрылся вдали.

Местные тупо ставят машину на парковку и все норм.

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

Специальная морозильная установка поддерживает лед на катке в +10˚С.

Жилой подъезд в историческом центре.

Детская площадка.

На многих светофорах можно заметить какие-то мешки или пакеты. Недавно меняли светофоры? Или мысль куда глубже?

Оставь собаченку.

Почтовый ящик.

Транспорт

Польша — одна из тех стран, которая бросает все усилия на то, чтобы изменить свои города к лучшему. Это очень сильно проявляется на общественном транспорте.



Сравню, опять же, с Минском. При равном количестве жителей в городах, в Минске основную нагрузку по перевозке жителей берет метро, а в Варшаве — трамвай.

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

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

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

Варшавский автобус ездит по трамвайным путям, если это возможно. Отлично.

Стоит ли говорить, что бо́льшая часть транспорта оборудована кондиционерами?

Метро в городе пока скорее декоративное, чем полезное. Единственная ветка проходит параллельно реке и по большому счету пустует. Сейчас активно строится вторая ветка.

Кстати, отличное решение: знак, который долгое время предупреждал о закрытии моста, вместо демонтажа просто перечеркнули. Отсутствие знака не так бросается на глаза, чем его контрастное изменение.

Еще от Варшавы ходят пригородные электрички, которые быстро доставляют пассажиров в достаточно большие (более 3 млн. жителей) пригородные районы. Типа наших Городских Линий, ага.

Весь городской транспорт имеет общую красно-желтую ливрею, это очень круто. В Минске еще лет 7-8 назад каждый автобусный и троллейбусный парк имел свою уникальную расцветку, по которой можно было определить номер маршрута на достаточно большом расстоянии. Сейчас с этим все очень плохо, машины в парки поступают с заводскими ливреями, но через некоторое время засираются рекламой. А Варшаве повезло!

Оплата транспорта зависит от зоны (стрефы). В городе существует всего две стрефы и билеты продают либо для первой, либо для первой+второй. Первая стрефа — центр города и недалекие окраины, вторая — дальние окраины и пригород.

Отъезд через 4 минуты.

Междугороднее

Конец и начало населенного пункта помечается таким вот знаком:

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

Как-то так. Варшаву стоит посетить хотя бы для того, чтобы увидеть как может измениться город за 10 лет в ЕС. Тепло, уют, контраст.

Быстрое решение для выполнения команд по SSH

14 ноября 2013, 0:21

Наткнулся на дискуссию Сапегина и Харитонова по поводу деплоя блога.
И тогда я задумался. А можно ли не устанавливая фабрик и подобное, полностью нативными средствами реализовать выполнение перечня команд на удалённом сервере?

Конечно, можно! Например, так:

ssh user@server "ls -l /home/"

Но если список команд будет большим, писать подобное станет слишком неудобно. Да и некрасиво.

Красивое решение

В юниксах любой текстовый исполняемый файл начинается с подобной строки:

#!/bin/bash

Это говорит ядру о том, что запускать файл нужно с указанного в данной строке интерпретатора. Что нам мешает изобрести свой интерпретатор? Да ничего.

Создаём файл /usr/local/bin/remote и делаем его исполняемым:

#!/bin/bash
if echo "$1" | grep ":" > /dev/null; then
	srv="`echo \"$1\" | awk -F\: '{ print \$1}'`"
	pth="`echo \"$1\" | awk -F\: '{ print \$2}'`"
	cmd="cd $pth;"
else
	srv="$1"
fi
cmd="$cmd cat | bash"
cat $2 | ssh "$srv" "$cmd"

Это и есть наш интерпретатор. Который тоже запускается с помощью интерпретатора :-) На входе принимаем адрес удалённого сервера и, если нужно, папку, в которую сразу перейдём.

Как всё работает

Создаём некий скрипт, который будет деплоить. Что-то вроде баш-скрипта, только исполняться он будет удалённо.

#!/usr/bin/env remote user@server:/path/to/project/
git checkout master
git pull
npm install
grunt deploy

Сделаем файл исполняемым и запустим. Данный перечень команд запустится на сервере user@server в папке /path/to/project/. Всё просто.

Из плюсов можно отметить использование ключей и ссш-конфигов. При отсутствии ключа спросит пароль.

Не полноценные баш-скрипты, конечно, и не мощный фабрик, но работает. Enjoy.

UPD: Развитие идеи от Артёма: https://github.com/sapegin/shipit

Ленты новостей

30 октября 2013, 22:54

Практически везде ленты новостей (фиды) — лютое неудобное говно. Вроде идея хорошая, но почему везде такая отвратительная реализация?

Что имеем?

Открываем ленту, в самом верху видим последние записи. Ниже — старые. Так работают многие популярные сервисы.

Вконтакте:



Фейсбук:



Веб-версия твиттера:



Инстаграм на айфоне:



Проблемы начинаются ровно тогда, когда мы попытаемся открыть эту же страницу, к примеру, на следующий день. Что мы увидим? Да то же самое — самые свежие новости. Сервисам по большому счету наплевать на то, где мы остановились. Поэтому пользователи листают ленту вниз, пока не наткнутся на знакомую запись. Значит дальше читали, ага.

Проблема такого подхода в том, что читать удобнее от прошлого на настоящему (снизу вверх).

Но ведь на дворе типа 2013 год: аякс, веб-сокеты, поллинг. И всё, что могут нам предложить сервисы сегодня — уведомление о новостях.


Пользователи нашли лайфхак: не закрывать вкладку с фидом впринципе. Часто ли вы видели у себя либо у знакомых/родственников такую вот вкладку?


Ведь можно на неё нажать и проскроллить вверх, к свежим новостям.

С мобильными приложениями лучше. Они в основном не закрываются, поэтому помнят где мы остановились. И если мы вернёмся в приложение, оно просто подгрузит ленту выше. Отлично! Только много где (в том же инстаграме) после долгого бездействия или полного закрытия мы снова попадает на самый верх ленты.

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

Что можно сделать?

Для начала стоит запоминать айди прочитанной новости на клиентской стороне (в том же localstorage или в куках). И при открытии страницы с новостями проматывать к последней прочитанной новости, подгрузив при этом всё непрочитанное выше.
Я понимаю, что тонкостей много (не заходил год и лента разрослась, технические вопросы с перемоткой и подгрузкой новостей выше), но это всё реализуемо нормальными толковыми дизайнерами и разработчиками.

grunt-favicons

27 августа 2013, 2:16

Добавил ли фавиконку? Есть ли версия иконки для айфона? Есть ли иконки нужного размера? Какой программой быстро сделать мультиразмерную фавиконку?

На все эти вопросы приходилось отвечать перед завершением каждого проекта. Чеклист чеклистом, но ситуация требовала автоматизации. Была изучена матчасть по иконкам, их форматам и размерам, которая позже переросла в баш-скрипт. А потом и в плагин для гранта.

Итак, grunt-favicons.

Устанавливается как обычно:

npm install grunt-favicons --save-dev

Чтобы всё работало, требуется установить imagemagick.

На маке:
brew install imagemagick
на линуксе:
apt-get install imagemagick

Фичи

Пример таска с опциями по-умолчанию:

favicons: {
    production: {
        options: {
            html: 'deploy/index.html',
            HTMLPrefix: "/img/favicon/",
            trueColor: false,
            precomposed: true,
            appleTouchBackgroundColor: "auto", // none, auto, #color
            windowsTile: true,
            tileBlackWhite: true,
            tileColor: "auto" // none, auto, #color
        },
        src: 'site/img/favicon.png',
        dest: 'deploy/img/favicon'
    }
}

Плагин берет картинку «src» и помещает в «dest» результаты своих трудов:

  • 265-цветный favicon.ico с разрешениями 16x16, 32x32, 48x48;
  • favicon.png 64x64;
  • apple-touch-icon-xxx.png всех возможных разрешений включая 120x120 для iOS7;
  • windows-tile-144x144.png для тайла в Windows 8.

Опции

По порядку:

html

HTML-файл, в который необходимо добавить теги со ссылками на зоопарк иконок.

HTMLPrefix

Путь, который приписывать в HTML перед адресами всех файлов. Очень нехватает подобной опции во многих плагинах.

trueColor

Булевая опция. Если включена, то favicon.ico будет содержать полноцветные картинки с альфа-каналом. В противном случает будет 256 цветов. Полноцветная иконка будет весить более 15Кб против 7Кб обычной.

precomposed

Булевая опция. В iOS6 и ниже при сохранении иконки накладывались различные эффекты. Опция включена, то все эффекты выключаются и иконка выглядит как изначально задумано.

appleTouchBackgroundColor

Иконки в iOS непрозрачные и им нужен задний фон. Мой плагин заботливо определит доминирующий цвет, подкрутит контраст и выставит его фоном.
Фон также можно указать вручную или вообще не указывать — тогда iOS сделает его черным.

windowsTile

Нужно ли делать плитку для Виндоус 8?

tileBlackWhite

Сделать иконку для плитки монохромной.

tileColor

Задний фон для плитки. Значения аналогичны параметру appleTouchBackgroundColor, только немного отличается метод поиска цвета.


Форкай
@
Пуллреквесть
https://github.com/gleero/grunt-favicons

iTunes Radio

1 августа 2013, 0:19

После анонса неоднозначной Айос 7 по всем фронтам разразился дикий плоско-градиентный срач, из-за которого остались незамеченными некоторые интересные новшества.

Одно из них — радио.

В приложении «Музыка» на таббаре появился раздел «Радио». Можно выбрать одну из 13 существующих станций, а можно создать свою. Работает как ласт.фм, только без кучи геморроя с подписками и остановками через небольшой промежуток времени. Выбрал песню — получил поток из похожих.

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

Айос 7 принесла с собой кроме адовых иконок много чего интересного. В целом система мне нравится, к четвертой бете её достаточно хорошо причесали.

Отключение журнала в ext4

30 июля 2013, 17:00

При тестировании Rcam столкнулись с высоким Load Average на сервере. Процессор был загружен не сильно, диск разгрузили кешированием в оперативке. Но LA зашкаливал за 7.

iotop показал высокую нагрузку на службу журналирования kjournald. Какая бы хорошая система кеширования не была, при записи на диск 15 видео-потоков журнал начал загибаться.

Проблема решилась отключением журналирования для раздела с архивом. Для ext* это делается через tune2fs:

tune2fs -o journal_data_writeback /dev/sdb1
tune2fs -O ^has_journal /dev/sdb1

Монтировать диск лучше с опциями: data=writeback,noatime,nodiratime

Load Average упал до ~2.

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

Ctrl +  Ранее