суббота, 4 мая 2024 г.

Immersed lags (en)

At one point, I bought myself VR glasses (Meta Quest 2) to work on a giant monitor.
I use the Immersed application for this purpose.
Periodically, the application starts to lag and loses the ability to function properly.
I suspected and it initially worked that the agent installed on the machine was to blame.
Executing the command fixed the problem:

$ sudo pkill -9 -i immersed

However, after some time even this stopped helping and I had to reboot the MacBook.

I also noticed that the MacBook sometimes experiences an inexplicable load and the system processes show the activity of the replayd process, which manages screen recording.
It turned out that if I stop its activity and restart the Immersed agent, everything starts working as good as new.
$ sudo pkill -9 -i replayd

Immersed lags (ru)

В своё время купил себе очки VR (Meta Quest 2), чтобы работать за гигантским монитором.
Использую для этого приложение Immersed.
Периодически, в приложении начинают возникать лаги и теряется возможность нормально его использовать.
Я подозревал и изначально это работало, что виноват агент, установленный на машине.
Выполнение команды исправляло проблему:

$ sudo pkill -9 -i immersed

Однако, через некоторое время даже это переставало помогать и приходилось перезагружать макбук.

Также я заметил, что у макбука иногда возникает непонятная нагрузка и в системных процессах видно деятельность процесса replayd, который управляет записью экрана.
Выяснилось, что если прекратить его деятельность и перезапустить агента Immersed, всё начинает работать как новенькое.
$ sudo pkill -9 -i replayd

воскресенье, 13 мая 2012 г.

Как установить Java Development Kit (JDK) 7 Update 4 на MacOS 10.6 Snow Leopard

Идём на официальный сайт Oracle и качаем jdk-7u4-macosx-x64.dmg.
Монтируем. Пока всё стандартно.



Пытаемся открыть...

OS X Lion required
This Installer is supported only on OS X Lion (10.7.0)

И тихо сквозь зубы материмся: "Ну, не настолько мы ещё устарели, чтобы нас так игнорировать".
Да и, по слухам, проблемы со стабильностью есть у Льва.

Но на каждую драную кошку у нас найдётся свой кобель.


Сейчас эту роль сыграет PackageMaker.


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


Дальше должно быть очевидно.
Required либо превращается в Optional, либо исчезает. Я шел по первому пути.

Далее необходимо исправить Destination в пакете установки, дописав "/System" вначале.


Должно получиться "/System/Library/Java/JavaVirtualMachines".


Иначе потом придётся переносить руками с помощью "sudo mv".
Если этого не сделать, то новая версия не появится в настройках Java ( Java Preferences ).

Опцию "Restart Action" можно выставить в "None", если по какой-то причине нельзя прерывать текущую сессию.

Далее жмём Build и выбираем место сохранения нового пакета.


"Save" и чуть-чуть ждём.


Готово.


Открываем новый пакет и следуем инструкциям.
По завершении установки, необходимо открыть Настройки Java ( Java Preferences ).

open "/Applications/Utilities/Java Preferences.app"


либо


и перетащить Java SE 7 наверх списка.


И последний шаг


$ java -version

java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)





понедельник, 7 мая 2012 г.

Кроссплатформная проблема длинных имен файлов (Crossplatform long file name problem)


Хотя я демонстрирую ошибку на примере работы с системами контроля версий для MacOsX и Windows - это проблема более глобальная и поймать её вы можете в любой другой комбинации софта (да хоть в той же Samba).
Используемый подход решения проблемы наверняка не единственный, но, при этом, довольно универсален.

Различные файловые системы по разному хранят информацию об имени файла.
Из-за чего возникают коллизии если разработка ведётся многими людьми и у всех разные ОС.
В моём случае получилось так, что другой разработчик закоммитил в репозиторий файл длиной 180 русских букв.

$ echo "яяяяяяяяя яя яяяя яя яяяяяяяяяя яяяяяяяяя я яяяяяя я яяя яяяяяяяяя яяяяяяяяяяяяя яяяяяяяя я яяяяяяяяяяяяяяяяяя яяяяяя яя яяяяяя яяяяяяяяяяяяя яяяяяяяя яяяяя яяяяяя я яяя яяяяя яяя" | wc -m

180


Но

$ echo "яяяяяяяяя яя яяяя яя яяяяяяяяяя яяяяяяяяя я яяяяяя я яяя яяяяяяяяя яяяяяяяяяяяяя яяяяяяяя я яяяяяяяяяяяяяяяяяя яяяяяя яя яяяяяя яяяяяяяяяяяяя яяяяяяяя яяяяя яяяяяя я яяя яяяяя яяя" | wc -c

334

Русские буквы занимают два байта вместо одного.
При попытке создать такой файл под MacOsX на диске со стандартной файловой системой HFS+

$ touch "яяяяяяяяя яя яяяя яя яяяяяяяяяя яяяяяяяяя я яяяяяя я яяя яяяяяяяяя яяяяяяяяяяяяя яяяяяяяя я яяяяяяяяяяяяяяяяяя яяяяяя яя яяяяяя яяяяяяяяяяяяя яяяяяяяя яяяяя яяяяяя я яяя яяяяя яяя"

Получим странное

$ ls я*

яяяяяяяяя яя яяяя яя яяяяяяяяяя яяяяяяяяя я яяяяяя я яяя яяяяяяяяя яяяяяяяяяяяяя яяяяяяяя я яяяяяяяяяяяяяяяяяя яяяяяя яя яяяяяя яяяя#299CD031

Несмотря на заявляемые 255 знаков в кодировке UTF-16 (точно также в NTFS).
А если такой файл попробовать отредактировать, например с помощью vim, то после сохранения и выхода
:wq
файл исчезает.

Кстати, несмотря на то, что некоторые ФС поддерживают ещё более длинные имена, штатные утилиты linux, по всей вероятности, всё равно оперируют байтами и поэтому комманда touch мне стабильно выдавала ошибку: “File name too long”
Я, например, пробовал ReiserfFS под Ubuntu 12.04 LTS.

Возвращаясь к MacOs. Именно эту ошибку я поймал при попытке получить последние изменения из репозитория.
$ git svn rebase
First, rewinding head to replay your work on top of it...
error: cannot stat '$73_chars_4_deep_levels_path_with_spaces/$180_chars_file_name_with_spaces_too': File name too long
error: cannot stat '$73_chars_4_deep_levels_path_with_spaces/$180_chars_file_name_with_spaces_too': File name too long
error: cannot stat '$73_chars_4_deep_levels_path_with_spaces/$180_chars_file_name_with_spaces_too': File name too long
could not detach HEAD
rebase refs/remotes/git-svn: command returned error: 1

Первой моей идеей стало установить Windows внутри VirtualBox и там настроить Cygwin, т.к. в этой экосистеме файлы с длинными именами чувствуют себя вольготно.
Но, всё-таки, ОС внутри виртуальной машины - это довольно тяжелая штука в плане потребления ресурсов.
К тому же, Cygwin/MSysGit имеют и другие проблемы, с которыми приходится периодически бороться.

И, вот, после неудачи с Windows и Ubuntu, ко мне пришла идея попробовать создать образ диска с подходящей ФС средствами MacOS.

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

В комплекте с макосью идёт инструмент DiskUtility.
Где я для начала попробовал создать DMG-образы с NTFS.
Но, вероятно, имеющиеся у меня драйверы NTFS-3G и Tuxero, содержат ошибку.
В обоих случаях я получал до боли знакомый “File name too long”.

Удача меня ждала с ФС ExFat.



$ touch "яяяяяяяяя яя яяяя яя яяяяяяяяяя яяяяяяяяя я яяяяяя я яяя яяяяяяяяя яяяяяяяяяяяяя яяяяяяяя я яяяяяяяяяяяяяяяяяя яяяяяя яя яяяяяя яяяяяяяяяяяяя яяяяяяяя яяяяя яяяяяя я яяя яяяяя яяя"

И, ву-а-ля

$ ls я*

яяяяяяяяя яя яяяя яя яяяяяяяяяя яяяяяяяяя я яяяяяя я яяя яяяяяяяяя яяяяяяяяяяяяя яяяяяяяя я яяяяяяяяяяяяяяяяяя яяяяяя яя яяяяяя яяяяяяяяяяяяя яяяяяяяя яяяяя яяяяяя я яяя яяяяя яяя


После перемещения своего проекта в новый раздел, вся остальная операция прошла как по-маслу.

Далее, можно почитать про Unicode в названиях файлов в HFS.

воскресенье, 26 февраля 2012 г.

Шутка про UDP, TCP, ARP

Я знаю две шутки: про UDP и про TCP.
Не могу гарантировать, что до вас дойдёт первая.
Но пока не дойдёт вторая, я буду повторять её снова и снова.
Дошла ли шутка про TCP? Ок, ничего страшного, сейчас повторю чуть медленнее.
Была ещё третья - про ARP. Кто-нибудь знает у кого сейчас она? Скажите мне.
(C) не мой.
Я, лишь скомпилировал и оттранслировал из разных исходников (собрал в одну кучу и перевёл на русский)

В оригинале шутки звучат так:
I know a joke about UDP but I can't guarantee you'll get it.
I know a TCP joke and I'll keep telling it until you get it.
You didn't get my joke about TCP? It's okay, I'll tell it to you again slower.
Anyone know who has an ARP joke? Tell me

понедельник, 30 января 2012 г.

Скрипт Ruby для вычисления SHA1 по аналогии с Git



Некоторое время назад, участвовал в одном обсуждении.
Тогда же, по его результатам, родился небольшой скриптик.
Вкратце, это действует так.
Если вы когда-то давным-давно закоммитили файл. Потом имя (но не содержимое) этого файла несколько раз менялось.
А сейчас вам необходимо найти содержимое блоба, зная только текущее наименование файла.

Следующий скрипт должен помочь.


Выполните:
$ git-sha1.rb filename1 filename2 ... filenameN

На выходе получите список хешей:
sha1_1
sha1_2
...
sha1_N

Теперь можно попробовать найти нужный блоб.
$ git show sha1_N

Так же исходный код этого срипта можно взять на гитхабе.

пятница, 20 января 2012 г.

Cygwin: Starting Gerrit Code Review: Error: Unable to access jarfile


When you encountered this error then you should search in the file "bin/gerrit.sh" for string Если вы встретили такую ошибку, то необходимо в файле "bin/gerrit.sh" найти строку 

GERRIT_SITE=`pwd`

and replace it to the next string и заменить на следующее

GERRIT_SITE=`cygpath -am \`pwd\``