Айс бакет по-белорусски

16 сентября, 13:24

Я слоупок, но всё же.

Несколько дней назад школьник из Березина бросил Лукашенко вызов с обливанием водой. Предсказуемая реакция последовала после: героя вызвали в инспекцию по делам несовершеннолетних и пригрозили штрафом и постановкой на учет, если видео не удалят с Ютуба.

«Сказали, что это глупо, что не нужно было Лукашенко бросать вызов. И все».

Самое интересное то, что Лукашенко скорее всего бы принял этот вызов. Ну смотрите — успешное проведение Чемпионата мира по хоккею, образ бодрого спортсмена-физкультурника, вся эта эйфория из-за многих успешных событий, благотворительность в конце концов. Принял вызов — повысил лояльность, медийный интерес. Все бы говорили «О, видали, какой крутой! Облился, молодец». Школьника бы показали по новостям, мол какой молодец, сверстники бы радовались и завидовали. И снова повышение лояльности среди молодежи, которой так не хватает. Успех.

Но он не принял этот вызов. Вызов вообще вряд ли дошёл до Лукашенко. На пути стоят фильтры из непробиваемых лбов КГБшников, администрации президента и прочих вахтёров. Все они боятся сделать что-то не то. Поэтому их задача не то, что бы просто не пропускать подобное, их задача пресечь подобное впредь. Запугать, оштрафовать, посадить в конце концов. Это какой-то нездоровый фанатизм с установкой отключить мозг и человечность.

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

В идеальном мире вообще такие люди не нужны, но мир не идеален.

За мной уже выехали.

Конкуренты

1 августа 2014, 0:34

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

Велосипед.

Если строить что-то с оглядкой на других, будет две стратегии развития: «сделать как у кого-то» и «сделать не как у кого-то». Гонка фич и концепций.

Если знаете как сделать что-то клевое — делайте. Не смотрите на конкурентов. Рано или поздно вы их и так увидите. Узнаете о их возможностях и недостатках. Где-то они будут пересекаться с вашими. Но это будет другой продукт с другой идеологией.

Мысли вслух, просьба не воспринимать всерьез

Так что же с GPS?

14 мая 2014, 13:42

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

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

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

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

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

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

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

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

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

Политика

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

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

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

Такие дела.

Чистый буфер

5 мая 2014, 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

Ctrl +  Ранее