Мои мысли и ощущения


Если вдруг в гите понадобилось безболезненно переменовать текущую ветку как локально так и удаленно, то помогают такие команды:

git branch -m new_branch
git push origin :old_branch
git push --set-upstream origin new_branch

Подробнее




Для начала нужно установить программку на свой телефон - Packet Capture. Программа  является прокси-сервером, в котором для мониторинг SSL-траффика используется аттака "Man in the Middle". В программу добавляется подставной сертификат, который для клиента считается доверенным. А сам прокси-сервер устанавливает две независимсые SSL-сессии, анализируя дешифрованные данные. А рут не нужен потому, что приложуха использует VPNService, доступный с Android 4.0. С помощью такого прокси можно анализировать работу различных REST API, которые ходят по https протоколу. Например, мне понадобилось починить музыкальное API ВКонтакте для VkAudioSaver.

Packet Capture VK API

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

Подробнее




Впрочем, я уже писал, как собирать для Linux, для OS X есть свои особенности в правильной конфигурации, ну и того, что Qt4 больше не поддерживается. А зря, я не использую Qt5 из-за огромного количества тянущихся библиотек, которые нужны ровным счетом для такого же приложения на Qt4. А все это выливается в тяжеловесный бандл для приложения типа Hello World.

Почему собирать? Скачанный с оф сайта готовый прекомпилированный пакет не встал в систему, все кончается какой-то ошибкой и qmake нигде нет. А сборка позволяет более тонко настроить Qt для Вашего релизного приложения, выкинуть ненужные и неиспользуемые модули и т.д. Также пацаны советуют собирать Qt с флагом -static, чтобы вообще избавиться от зависимых библиотек. К сожалению, это возможно, если вы не используете Webkit.

Подробнее




В какой-то момент времени мы понимаем, что первый релиз уже на подходе и пора бы добавить локализацию проекта. Делается это легко, настройках проекта добавляется новая локализация, на основе базового storyboard будет сгенерирован файл Main.strings, в котором по ObjectId идет замена заголовков контролов на нужный язык.

Это все очень классно, но проблема таится в следующем - как обновить этот strings-файл новыми строками в добавок к уже существующем, к следующему релизу обязательно появляются новые ViewController-ы. Решения нормального нет: можно либо перегенерить заново этот strings-файл с непереведенными строчками, потом глазом искать новые и добавлять в старый файл. Либо руками выцеплять ObjectId, тыкая на свойства каждого контрола и вручную добавлять для них поля для перевода. Все это неудобно и не понятно, по каким причинам нельзя было встроить это в XCode.

В целом я придумал простое решение в виде скрипта на bash, который генерит заново файл локализации, смотрит в существующий файл и если не находит в нем существующего ObjectID - добавляет новую строчку с локализацией
 

Подробнее




1. В обновленном XCode 8 не работает функция комментирования строки по CMD + /

sudo /usr/libexec/xpccachectl

2. В карабинере почему-то отвалились Home / End в привычном ожидании от своего поведения в редакторах (переход в начало / конец строки)

mkdir ~/Library/KeyBindings/

cat << EOF > ~/Library/KeyBindings/DefaultKeyBinding.dict
> {
> /* Remap Home / End keys to be correct */
> "\UF729" = "moveToBeginningOfLine:"; /* Home */
> "\UF72B" = "moveToEndOfLine:"; /* End */
> "$\UF729" = "moveToBeginningOfLineAndModifySelection:"; /* Shift + Home */
> "$\UF72B" = "moveToEndOfLineAndModifySelection:"; /* Shift + End */
> "^\UF729" = "moveToBeginningOfDocument:"; /* Ctrl + Home */
> "^\UF72B" = "moveToEndOfDocument:"; /* Ctrl + End */
> "$^\UF729" = "moveToBeginningOfDocumentAndModifySelection:"; /* Shift + Ctrl + Home */
> "$^\UF72B" = "moveToEndOfDocumentAndModifySelection:"; /* Shift + Ctrl + End */
> }
> EOF

После всего ребутаем тачку и радуемся

Подробнее




Понадобилось, значит, мне выцепить User-Agent официальной приложухи ВКонтакте для Андроид. Выяснить-то удалось, формируется он как-то так:

USER_AGENT = String.format(Locale.US, "VKAndroidApp/%s-%d (Android %s; SDK %d; %s; %s %s; %s)", new Object[] { PackageInfo.versionName, PackageInfo.versionCode, Build.VERSION.RELEASE, Integer.valueOf(Build.VERSION.SDK_INT), Build.CPU_ABI, Build.MANUFACTURER, Build.MODEL, System.getProperty("user.language") });

Т.е. примерно такая строка - "VKAndroidApp/4.38-849 (Android 6.0; SDK 23; x86; Google Nexus 5X; ru)

Но, почитав код ниже, я неслабо так поугарал. Очень веселый код находится в файле com.vkontakte.android.api.ApiController.java. Подробности под катом.

Подробнее




За последние пару месяцев очень многие заметили, что аудиозаписи в VkAudioSaver отображаются далеко не все. Если и раньше была подобная проблема в программе - то достаточно редко, когда у пользователя была включена фильтрация по битрейту, в результате чего песни с низким качеством не попадали в выдачу. Но теперь все стало гораздо хуже. VK API попросту не отдает более половины треков, мотивируя это тем, что они запрещены правообладателями.

Подобная проблема отмечается у всех приложений, которые используют официальное API ВКонтакте. Например в Kate Mobile для Android

 


Или же в хорошо проработанном плеере Meridian для Win10 с открытым исходным кодом

 

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

Подробнее




С сегодняшнего дня руководство мейл.ру перевело основной домен vk.com вместе со всеми его пользователями на новый дизайн. Счастье было недолгим, когда в течение 2.5 месяцев работал обходной способ вернуться на старый дизайн через кнопку на сайте. Но теперь уже, кажется, все. По идее поможет только создание нативного приложения для десктоп со старым дизайном, но кто этим станет заниматься - конечно же никто. Оригинал новости от самого руководства можете прочитать здесь

Кстати, о новом дизайне отозвался и сам основатель соцсети Павел Дуров, приведя ряд конструктивных аргументов о недоработках нового дизайна.

Всем счастья, здоровья и хорошего настроения, держитесь там.

Подробнее




Первое, что начинает коробить после запуска Android Studio на Ubuntu 16.04 - это ужасные нечитаемые шрифты. Это проблема будет в любом приложении, основанном на Swing.

Даже установка OracleJDK вместо OpenJDK не решает проблему. Точно так же пробовал играться с флагами при запуске, искать фонт-патчи для джавы. В итоге нашлось классное решение - TuxJDK. Это по сути OpenJDK, содержащий серию патчей для улучшения UX для Java-based приложений в Linux. В итоге после сборки по инструкции на странице readme.md c гитхаба все выглядит куда приятнее с классическим шрифтом Ubuntu

 

 

Подробнее