О предустановке российского ПО

С 1 апреля 2021 года должен вступить в силу Закон об обязательной предустановке российского ПО на продаваемую в РФ электронику (если сроки вновь не перенесут, потому как ранее это должно было случится 1 января). Законопроект должен «повысить правовую защищенность российских пользователей» и обеспечить защиту интересов российских интернет-компаний.

Так, список сервисов для предустановки на телевизоры Smart TV, выглядит следующим образом:

  1. Wink
  2. ivi
  3. Первый
  4. Кинопоиск
  5. Оkkо
  6. Morе.tv
  7. Premier
  8. Смотрим
  9. НТВ
  10. Start
  11. Поисковая система «Яндекса»

Обязательное ПО для предустановки на смартфоны насчитывает гораздо больше — 16 шт. (много Яндекса, Мейла и даже есть ICQ) и это ведь еще неокончательный список.

Читать далее «О предустановке российского ПО»

Приложение «Первый канал» для Smart TV получило новый UI

Чуть больше месяца назад мы обновили UI в приложении «Первый канал» на Smart TV — ко многим элементам добавили скрепления по углам, разрядили сетку между плитками контента, перенесли навигационное меню с верха в левую боковую часть, что позволило увеличить рабочее пространство по высоте. А на ряде внутренних экранов (таких как фильмы или телепроекты) меню и вовсе не показывается (стиль Apple TV, где для вызова меню нужно вернуться на экран назад).

Изменения с навигационным меню, судя по пользовательским отзывам, были приняты не сразу — не все догадались, как на него перейти. Хотя тут все просто — быстрый вариант — это находясь на главном экране, достаточно нажать кнопку «Назад» на пульте, тогда меню раскроется. Обычный вариант — в карусели выделить крайнюю левую плитку и нажать еще раз «Влево» — меню также раскроется.

Приложение Первый канал на Smart TV

[OpenVPN] Роутинг определенных IP-адресов

Используется Tunnelblick для подключения к корпоративному VPN. Настройка «Route all IPv4 traffic through the VPN» отключена, т.к. совершенно нет желания гнать весь трафик через хлюплый VPN.

Однако недавно появилась задача перенаправлять запросы к определенному IP через VPN. И для этого достаточно в файле конфигурации подключения добавить:

route-nopull
route <IP-адрес> <маска подсети>

Пример:

route-nopull
route 192.168.1.1 255.255.255.0

libffi.6.dylib not found

Сегодня при запуске команды pod update получил неожиданную ошибку:

...
`require': dlopen(/Library/Ruby/Gems/2.6.0/gems/ffi-1.12.2/lib/ffi_c.bundle, 0x0009): dependent dylib '/opt/local/lib/libffi.6.dylib' not found for '/Library/Ruby/Gems/2.6.0/gems/ffi-1.12.2/lib/ffi_c.bundle' - /Library/Ruby/Gems/2.6.0/gems/ffi-1.12.2/lib/ffi_c.bundle (LoadError)

Решение: запустить команду

sudo gem pristine ffi

Стриминг игр с Xbox One на Mac

Мой Xbox One X подключен к телевизору, который в гостиной. Иногда телевизор занят, а поиграть хочется. Решение — стримим игры с Xbox на компьютер.

И хоть у меня Mac, но через Parallels стоит Windows 10, где через приложение Xbox можно в два клика добавить консоль и начать играть.

Магия проста — на компьютер передается просто видео (по этой технологии работает, к примеру, сервис NVIDIA GeForce Now или Playkey), поэтому сетевое соединение должно быть стабильным и быстрым.

Если не хочется сидеть через Windows, то для Mac есть сторонний клиент OneCast (триал 14 дней, лицензия ~1800 руб.).

Кстати, геймпад Xbox One, находясь в другой комнате, не отваливается и отлично работает. Блютуз всемогущий!

Извлечение субтитров из видео в MKV

Для извлечения субтитров из видео в MKV (Matroska) можно воспользоваться утилитой mkvtoolnix. На macOS можно установить через порты:

sudo port install mkvtoolnix

Далее необходимо получить информацию о видео:

mkvmerge -i video.mkv

Будет выведен список треков:

File 'video.mkv': container: Matroska
Track ID 0: video (MPEG-4p10/AVC/H.264)
Track ID 1: audio (AC-3)
Track ID 2: audio (AC-3)
Track ID 3: subtitles (SubRip/SRT)
Track ID 4: subtitles (SubRip/SRT)

<trackID> — идентификатор нужной дорожки, которую необходимо использовать для извлечения субтитров:

mkvextract tracks video.mkv <trackID>:<subtitles_name>.srt

Apple Music

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

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

Затем, года два назад, когда у меня был телефон на Android, использовал параллельно Google Music. Так вышло, что Google снова «убила» свой очередной сервис, и теперь перевела пользователей на YouTube Musiс, но он мне вообще на зашел (мне не нужно приложение для просмотра клипов).

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

Читать далее «Apple Music»

gradle.properties и настройки Proxy

Понадобилось в Android Studio пустить трафик через прокси-сервер, чтобы проверить, к каким адресам происходят запросы при сборке проекта. Для этого в настройках Android Studio нужно найти HTTP Proxy и указать параметры подключения.

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

Несколько раз перетыкивал настройки HTTP Proxy в значение None, перезапускал Android Studio – безрезультатно.

Потом выяснилось, что параметры прокси записываются в локальный файл %user%/.gradle/gradle.properties и выглядит это примерно так:

## For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
#
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx1024m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
#
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
#Thu Mar 19 12:38:55 MSK 2020
systemProp.https.proxyPort=8888
systemProp.http.proxyHost=localhost
systemProp.https.proxyHost=localhost
systemProp.http.proxyPort=8888

Как и следовало ожидать, убрав строчки с прокси, все заработало.

Похоже на баг Android Studio, потому как при отключении прокси соответствующие записи из gradle.properties должны также удаляться.

[Sublime Text] Моя схема настроек

Наиболее комфортная для меня схема настроек (Preferences.sublime-settings) выглядит следующим образом:

{
	"color_scheme": "Packages/Color Scheme - Default/iPlastic.tmTheme",
	"draw_white_space": "all",
	"fallback_encoding": "Cyrillic (Windows 1251)",
	"folder_exclude_patterns":
	[
		"node_modules",
		"bower_components",
		"generated",
		"intermediates",
		"sms/build",
		"tmp",
		".idea",
		".gradle",
		".git",
		"build"
	],
	"font_options":
	[
		"gray_antialias"
	],
	"highlight_modified_tabs": true,
	"ignored_packages":
	[
		"Vintage"
	],
	"open_files_in_new_window": false,
	"show_encoding": true,
	"theme_font_options":
	[
		"gray_antialias"
	],
	"translate_tabs_to_spaces": true,
	"trim_trailing_white_space_on_save": true,
	"update_check": false,
	"word_wrap": true
}

[Sublime Text] Исключение директории из поиска

Чтобы какая-либо директория не участвовала в результатах поиска (к примеру, node_modules), достаточно прописать в файл настроек (Preferences.sublime-settings) следующее:

"folder_exclude_patterns": ["<folder_name1>"]

Поддерживается в том числе формат по маске.