Дом в облаках

13 апреля, 22:58

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

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

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

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

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

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

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

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

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

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

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

27 февраля, 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.

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

Облака в Айти

28 июня 2013, 15:57

Написал заметку для минского журнала «Технологии безопасности».

Последние годы всё большую популярность набирают «облачные сервисы» — возможность предоставлять людям различные услуги через Интернет: будь то удалённый диск, вычислительные мощности или программное обеспечение. Ещё совсем недавно все стремились купить более дорогой и крутой компьютер, чтобы уместить на нём кучу музыки, фильмов, сложных программ. Но сейчас такой подход уходит в прошлое, ведь людям больше нет необходимости иметь большие и дорогие жесткие диски — они хранят всё в «облаках». По данным исследовательских компаний, на сегодняшний день в «облаках» хранится чуть более одного эксабайта данных.

Но как так получилось, что интернет развит довольно давно, а модные «облака» пришли относительно недавно? Обратимся к истории.

Шел 1957 год, Элвис Пресли был на пике своей популярности. В это время СССР запустили первый в мире искусственный спутник Земли, благодаря чему Министерство обороны США решает создать надёжную систему передачи информации на случай войны. В итоге оборонным научно-исследовательским агентством США была разработана такая сеть, получившая название ARPANET, за которой уже в 1983 году закрепилось название «Интернет». Когда количество оборудования стало настолько огромным, что техники не могли уместить его в схемы, было придумано обозначение «облако». Фактически это масса оборудования, которое при группировкой на схеме обводилось в облачко. Получается, что «облака» — это и есть интернет.

Люди начали пользоваться облачными сервисами со времён создания компьютерных сетей и интернета. Самые ранние такие сервисы — электронная почта, где письма пользователей хранятся непосредственно на сервере. Когда все смогли обмениваться информацией быстро, просто и дешево, разные компании начали предлагать старые вещи в новой обертке и назвали это рекламным термином «облачный сервис».

Сегодня пользователи хранят данные «в облаке» не особо задумываясь о том, что это такое и где хранятся их почта с фоторграфиями. Оно работает, доступ есть, и хорошо. Разработчики начали создавать новые концепции удалённой работы с данными. Для пользователя важно иметь доступ к своей информации, пока есть доступ к интернету. А проблема обработки, хранения, защиты и доступности информации ложится на плечи разработчиков. Так появились несколько моделей хранения инфомации, наиболее интересные из которых:

Инфраструктура как сервис (IaaS). Вы арендуете у провайдера абстрактные вычислительные мощности вместо сервера. Больше не нужно заморачиваться с настройкой и масштабированием серверов, ведь у вас есть столько мощности, сколько необходимо в данный момент. Как правило по такой модели работают облачные хостинги.

Платформа как сервис (PaaS). Более высокий уровень абстракции. Вы больше не настраиваете операционную систему, этим занимаются знающие люди. Через панель управления можно только устанавливать свои приложения на арендованную платформу. Яркий пример такой модели — Windows Azure, который представляет облако с установленной платформой Windows.

Приложение как сервис (SaaS). Самый высокий уровень абстракции. Вы можете пользоваться только каким-то определённым приложением. Не важно, каким образом, вы будете подключаться: через браузер, тонким клиентом, или через удалённый рабочий стол — в вашем распоряжении есть только какое-то одно приложение. Это самая распространённая и самая старая модель на сегодняшний день. Например, электронная почта Gmail или Mail.ru есть ни что иное, как SaaS.

Очень остро сегодня стоит вопрос конфиденциальности данных. Многие компании стран СНГ не привыкли хранить свои проекты и клиентские базы на чужих серверах. Одно из самых распространённых заблуждений это то, что штатный системный администратор, которого они нанимают за копейки, защитит данные куда надежнее, чем компания, которая занимается предоставлением услуг и имеет штат специалистов по информационной безопасности. Локальные решения так или иначе имеют доступ к интернету, поэтому подключиться к ним проще простого. Данный факт был легко доказан разработчиками теневого поисковика Shodan, который сканирует интернет на наличие доступа в разные системы по простым паролям. С его помощью получили доступ к светофорам, системам видеонаблюдения и охраны, системам отопления. И даже к таким вещам, как охладители вина и автомойки. Дэн Тентлер, независимый специалист по проникновению в системы, в прошлом году прямо на конференции продемонстрировал, как одной командой может разморозить ледовую арену в Дании. Это всё говорит нам о том, что локальным системам не уделяют должной защиты, ведь они не предназначались для интернета, но оказались там.

Недостатками облачных сервисов являются невозможность работать в оффлайне без подключения к интернету, и, самый важный недостаток, возможность сервиса закрыться в любую минуту. Как, например, произошло с сервисом Google Reader, который закрывается 1 июля. Сотни тысяч пользователей остались без удобного и популярного rss-агрегатора. От закрытия сервиса никто не застрахован.

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

Доверять или не доверять облачным сервисам — дело каждого. Но стоит принять тот факт, что за ними не только будущее, но и настоящее.

Специально для журнала «Технологии безопасности».

Переосмысление Dotfiles

12 мая 2013, 22:58

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

Наиболее интересные собраны тут http://dotfiles.github.io.

У меня по долгу службы тоже накопился список разных удобств, состоявший из кучи баш-скриптов в /usr/local/bin и алиасов в ~/.bashrc. Решил всё собрать, аккуратно организовать, сделать установщик — в общем как у всех. Но не тут-то было.

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

Мне же хотелось сделать что-нибудь универсальное: нужно — установил. Так и родилась идея сделать пакетный менеджер для дотфайлсов.

Установка

Для установки нужна OS X, так как используется пакетный менеджер homebrew. Позже добавлю поддержку deb-подобных ОС, всё же на серверах такая штука не помешает.

curl -Ls dotfiles.gleero.com | bash

Во время установки вас попросят отметить модули, которые нужно установить. Дотфайлс по-умолчанию установится в вашу домашнюю папку: ~/dotfiles/

Обновление и удаление

Для обновления до последней версии рекомендуется использовать

dotfiles update

А для удаления —

dotfiles remove

Модули

Все свои полезности я сгруппировал по модулям. На текущий момент их 9 (по ссылкам описание, документация и исходники):

Сейчас в разработке модули PythonTools, WebdevTools и Zsh.

Как видно, пользователь сам может выбрать то, что он хочет установить. Bash или Zsh; нужны ему подсветки синтаксиса для Nano, или он пользуется Vim’ом; нужны ему генераторы font-face и woff-шрифтов из ttf, или же virtualenv для питона — всё можно выбрать под себя.

Ништяки

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

Программы json и jsonselect

json получает в поток STD любой сжатый неотформатированный JSON, а выдаёт красивый, разноцветный, и с отступами.

jsonselect основана на библиотеке JsonSelect, которая может фильтровать JSON с помощью CSS-селекторов. Также принимает в STD любой JSON и фильтрует.

Например, мы хотим узнать список исполнителей в плейлисте http://tracksflow.com/2.0/api/playlists/3b6cbc12-99d6-4f1f-914e-f25ce7eec232. Открыв ссылку в браузере, замечаем огромную кучу разного мусора, мешающего нам получить исполнителей.

Теперь пишем в терминале:

curl -s http://tracksflow.com/2.0/api/playlists/3b6cbc12-99d6-4f1f-914e-f25ce7eec232 | jsonselect ".artistName" | json

Получаем JSON, передаём его в jsonselect и просим отдать всё по селектору «artistName». Вывод отдаём в программу json, которая красиво показывает результат. Всё.

Программа Quicklook

Открывает в родном маковском квиклуке любые данные. Есть же qlmanage, умеющий показывать любой файл. Но он определяет тип данных по расширению файла и не умеет читать файл из std. Мой же quicklook на лету определяет тип данных и правильно их показывает.

curl -s http://cs315327.vk.me/v315327003/8755/VzYcbNgtofE.jpg | quicklook

Neblo terminal

Собственно цветовая схема для терминала.

И ещё куча разных полезностей. Подробно о всех программах и возможностях написано на гитхабе.

Приватные конфиги

Начал я заметку с того, что хорошо бы свои приватные данные держать при себе. Так вот в папке с дотфайлсами можно наблюдать выделенную цветом папочку private, в которой лежат две болванки: aliases.sh и bash_profile.sh. Но можно создавать и другие, так как при открытии нового терминала подключаются все шелл-скрипты из private.

А приложения можно класть в папку bin, которая добавлена в PATH.

Создание своего модуля

Создавать свои модули просто:

cd ~/dotfiles/modules
dfmod init test

Будет создан модуль с названием `test` и заготовкой. Подробная информация об устройстве модуля есть как в свежесозданном модуле (в виде комментариев), так и на гитхабе.

Модулем можно поделиться на гитхабе, установить его будет очень просто:

cd ~/dotfiles/modules/
git clone <ЛЮБОЙ_МОДУЛЬ>
dfmod install <МОДУЛЬ>

А можно пуллреквестить :-)

Заключение

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

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

Пользуйтесь. http://github.com/gleero/dotfiles

Ctrl +  Ранее