misc/class
lib/jquery_pnotify, lib/moment, lib/lodash, misc/notification, site/engine, misc/social
if( $.browser.msie && $.browser.version <= 8 ) include('lib/respond'); $._social.__cfg = {"init":[{"service":"basic"},{"fb_app_id":"1997094873850041","service":"fb"},{"vk_app_id":"2978320","service":"vk"},{"service":"twi"}],"like":[{"service":"fb"},{"service":"vk"},{"via":"","channel":"","hash_tag":"","service":"twi"}]}; window._SiteEngine = new classes.SiteEngine( { user_id: 0, controller: 'homepage', action: 'index', content_css_version: '1459538664', social_enabled: 0} );

Faiwer

Блог web-программиста

Прочее goPro 4 ― первое впечатление

3 июня 2015

Купил goPro 4 Black для записи видео с полётов. Первые впечатления по большей части негативные. Пока свежи, решил их перечислить в этой заметке:

  • Пульт из поставки убрали. Стоимость пульта довольно таки высокая. Стоимость батареи увеличенной ёмкости со спец. крышкой тоже выше всяких разумных пределов. На сайте goPro.com даже самые элементраные вещи стоят не ниже 19 $. Хороший бизнес, что сказать…
  • Пока не пробовал снимать нормальные видео в нормальных условиях. Но в условиях квартиры я почему-то наблюдаю жутчайшие артефакты на снятых видео. Попробовал разные режимы ― артефакты не пропадают. Неужели брак? Обновление прошивки ситуацию не спасло. Надеюсь в боевых условиях таких фокусов не  будет.
  • Обновление прошивки не обрадовало. Вариант без сторонних приложений требует от вас кардридера (о_О). Вариант обновления через goPro APP с android-трубки был почему-то выпилен из приложения (хотя в описании на сайте присутствует). Обновление через goPro Studio прошло штатно. Однако неожиданно. Я так и не смог найти специальной кнопки для этого. Её попросту нет. Приложение само, при подключении goPro к windows (да-да, unix-фаги идут лесом), предложило обновиться и обновило прошивку. Минуты 4 ушло. В новой прошивке новые опции, типа timelapse и пр.
  • goPro Studio в своём windows-installer-е указывает куда она установится, но сменить путь не позволяет. оО. Впрочем плевать на форточки.

Из некоторых особенностей:

  • В комплекте нет micro-sd карточки. Впрочем оно и понятно. Стоят они не копейки, и кому-то хватит 32 GiB, а кому-то только 64 подавай. Я взял 32 GiB.
  • Установка прошивки на goPro hero 3 BE несколько лет назад отняла у меня куда больше нервов. Да и goPro app работал значительно хуже. Шаманств с wi-fi было много.
  • Переработано меню. Говорят стало удобнее.
  • Попробовал 720P-120 режим. Честно говоря или VLC откровенно тупит и при 25% скорости извращается, а не берёт оригинальные кадры, или сама камера снимает при таком режиме как-то обрывочно. Пока точно не знаю, посему не стал записывать в минусы. Нужно разбираться.
  • К камере прилагается бесчисленное количество всяких там брошур и книжек.
  • Теперь на корпусе на 1 кнопку больше. Есть два вытянутых светодиода.
  • Многие жалуются на мириады глюков в софте. На фризы. Некоторые даже утверждают, что при длительной работе камера греется до 70 градусов. Впрочем, в полёте её ожидает неплохой обдув ветром.

UPD1: Подключается goPro к ПК, как и мобильники, используя MTP. И с этим у меня возникла куча проблем:

  • LinuxMint устройство определяет, caja MTP видит. Но при попытке что-нибудь скачать или вообще сделать всё намертно зависает. Поиск результатов не дал.
  • В VirtualBox при пробросе USB в WinXP, наблюдаю бесконечное подключение к камере…
  • При пробросе в Win7 ― ОС не может найти драйвера для устройства. Попытка установить GoPro Studio венчается невнятными ошибками и откатом установки. Поиск тоже результатов не дал.
  • При загрузке в dual boot в Win8.1 ― доступ к файлам есть, тормоза отсутствуют. Но нельзя просто взять и посмотреть начало файла (дабы понять, нужен ли он вообще). Нужно обязательно его скачать целиком.
  • Можно скачать файлы используя web-интерфейс и Wi-Fi соединение. У меня на desktop-е есть Wi-Fi приёмник. Подключиться удалось. Однако скорость скачивания была безумно низкой. Не вариант.

Не понимаю зачем нужен MTP, и зачем он нужен для скачивания видео с GoPro… Какой-то вселенский геморрой.

UPD2: В боевых условия волны, рябь и прочая ерунда на видео не наблюдается. Картинка качественная, точно не хуже GoPro 3 BE. Наверное, лучше. Приобрёл за 6$ вот такое вот крепление. Оказалось очень добротным, рекомендую. В качестве примера приведу этот стоп-кадр.

UPD3: Не зря я бочку на MTP катил. Подключив камеру уже к win8 на борту я попробовал скинуть файлы сразу на флешку. Довольно часто explorer ругался разными ошибками, и в конечном счёте смог скопировать только 1 файл из 3. А вот 2 оставшихся с карточки испарились. Карта пуста, файлы утеряны. Видимо, из-за того, что я их "вырезал". Такая вот хвалебная ода MTP. Теперь будут пытаться восстановить их через android приложения, ибо больше некуда воткнуть SD карту

UPD4: Заменил камеру по гарантии.

IT Кирилица и SmartGit

11 апреля 2015

Извечная беда с горячими клавишами в нестандартной (т.е. английской) раскладке. Наиболее часто попадается в Java и QT приложениях. Наиболее остро я на это натыкаюсь при использовании Mate окружения в свежем LinuxMint-е. Обе баги (что QT, что Java) уже исправлены, что, почему то не сказывается даже на свежих билдах софта, к примеру SmartGit-а. В очередной раз вооружившись поисковиком я стал искать решения в обход. И нашёл! Хороший человек написал небольшую java-утилиту для решения проблем с горячими клавишами. Вся соль в том, что необходимо запустить jar-ки с флагом -javaagent к java. В описании к репозиторию указано, как правильно это сделать для Intelli Idea и ещё ряда приложений. А для SmartGit-а вот правильное решение:

  • Создать файл ~/.smartgit/smartgit.vmoptions
  • Вписать туда -javaagent:%jarpath%/LinuxJavaFixes-%version%.jar=swt. Вместо %jarpath% указать путь к скачанным с github-а файлам, а вместо %version% текущую версию jar-ки. Обратите внимание на =swt, без этого в SmartGit ничего не заработало. SWT это фреймворк для Java, который использует SmartGit
  • Готово!

Осталось найти рецепт для QT-приложений :( Похоже, что там надо насильно ставить себе QT5.5+ и собирать из исходников каждое проблемное приложение :(

IT Простой proxy-сервер на iojs

9 апреля 2015

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

"use strict";

/**
 * run: iojs --harmony_arrow_functions proxy.js
 *
 * nginx:
 * location ~ ^/api.*$ {
 * 	proxy_pass http://127.0.0.1:3001;
 * 	proxy_set_header X-Real-IP $remote_addr;
 * 	proxy_set_header Host $host;
 * 	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 * }
 */

let hostname = '%hostname%';
let port = 3001;
let auth = '%user%:%pass%';
let http = require('http');

http.createServer((clientReq, clientRes) =>
{
	let opts =
	{
		hostname: hostname,
		port: 80,
		path: clientReq.url,
		auth: auth,
		headers: clientReq.headers,
		method: clientReq.method
	};
	opts.headers.host = hostname;

	console.info('serve: %s %s', clientReq.method, clientReq.url);

	let proxy = http.request(opts, (proxyRes) =>
	{
		proxyRes.addListener('data', (chunk) => clientRes.write(chunk, 'binary'));
		proxyRes.addListener('end', () => clientRes.end());
		clientRes.writeHead(proxyRes.statusCode, proxyRes.headers);
	});

	clientReq.addListener('data', (chunk) => proxy.write(chunk, 'binary'));
	clientReq.addListener('end', () => proxy.end());
}).listen(port);

Запускается путём выполнения iojs --harmony_arrow_functions proxy.js, логирует все запросы в консоль. Точно умеет POST, GET, отдавать статику… Для простых нужд вполне сгодится. Жаль браузеры пока толком не умеют arrow functions :(

Полёты Облёт Litespeed-а

22 февраля 2015

Купил почти новый Moyes Litespeed RX 3.5. Сегодня облетал. Третий полёт на лысом аппарате. Посадка "пузом" на контрсклон.

IT Переключение раскладки клавиатуры по Capslock

20 декабря 2014

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

Но в очередной раз переустановив себе LinuxMint, я столкнулся с тем, что передо мною снова стоит вопрос неудобства ctrl+shift в этих наших линуксах. Суть в том, что есть большая разница в том, какая клавиша когда была отжата... По факту в 80% случаев у меня переключение попростую не срабатывало просто потому, что я не ту клавишу раньше отпустил. Поискав, в очередной раз решение, я его не нашёл. Ну и решил, что настало время переучиваться на caps_lock. Всё равно смысла в этой клавиши я не вижу никакого. 

Переключился и пользуюсь уже второй месяц. Оказалось действительно удобно. Привыкание прошло довольно быстро, недели за две. Но увы, осталась 1 проблема. Дело в том, что когда быстро набираешь тексты, часто сталкиваешься с тем, что нажиммаешь caps_lock с зажатой клавишей shift, а это, оказывается, оставленная на резерв старая функциональность caps_lock-а (печатать ВОТ ТАКИМ регистром). Отключается точно также ― с шифтом. Нафиг нужно мне такое счастье... Сразу сбивает рабочий настрой, сидеть всё переправлять.

Порывшись в сети я не нашёл готовых решений. Спросив на lor-е, я, в коем веке, получил нормальный ответ... Сказали в какую сторону копать. Раскопал и таки получилось. Теперь у меня capslock + shift работает точно так же как и просто capslock, т.е. тоже меняет раскладку клавиатуры. Сделать это из диалога настроек клавиатуры, оказалось невозможным. Ниже будет ясно почему.

За работу клавиатуры, по всей видимости, отвечает некий xkb. Именно его настройки изменяются в настроках «Клавиатуры». Настройки расположены по адресу  /usr/share/X11/xkb/. В поддиректории rules лежат непосредственно сами правила. Интересующее нас правило называется grp:caps_toggle. Но правило ссылается на уже готовый символ. Выглядит это так:

grp:caps_toggle = +capslock(grouplock)

Как оказалось, +capslock это указание на то, из какого файла взять сам symbol. В данном случае из /usr/share/X11/xkb/symbols/capslock. А вот grouplock это уже непосредственно название самого символа. Вот его код:

partial hidden modifier_keys
xkb_symbols "grouplock" {
    replace key <CAPS> { [ ISO_Next_Group, Caps_Lock ] };
};

partial, hidden, modifier_keys ― это всё модификаторы символа. Подробнее о них можно прочесть здесь. Внутри фигурных кавычек лежат настройки символа. В нашем случае CAPS ребиндится на ISO_Next_Group и на самого себя (Caps_Lock). Суть в том, что если в квадратных скобках указано два значения, то первое доступно без shift-а, а второе с ним. Если же указано всего 1 значение, то оно будет использоваться во всех вариантах. Собственно достаточно поменять код на:

replace key <CAPS> { [ ISO_Next_Group ] };

, после чего пощёлкать в том самом диалоге Клавиатура что-нибудь (чтобы сбросить кеш), как мы получаем, то что хотели. Теперь по shift + caps_lock тоже меняется раскладка.