Заметки

Categories: Компьютеры, Linux, Железо, Игры, Программирование

Установил KOMPAS 3D LT V12 под Linux, но...

Компас 3D LT это бесплатная и максимально облегчённая (и очень старая) версия приложения для учеников образовательных учреждений. Возникла идея поставить её сыну для школьного проекта, так как Tinkercad не имеет некоторых нужных возможностей (фигуры вращения и выдавливания по произвольным эскизам, скругления).
Качаем дистрибутив с официального сайта.
Всё ставится примерно как и в инструкции для Home-версии, за исключением того, что нужны другие компоненты Винды и нет защиты от копирования и сервера ключей HASP. Также, скорее всего, нет необходимости обновлять Wine не из дистрибутива. В итоге установка заметно быстрее и проще. Вот официальная страница FAQ по Компасу LT под Wine.
0) Установите / обновите Wine.
1) Создаём инстанс Wine:

WINEPREFIX=~/.wine-kompas3dlt winecfg

Выбираем режим Windows XP, задаём разрешение экрана, добавляем диски (если надо), выходим.
2) Устанавливаем компоненты:

WINEPREFIX=~/.wine-kompas3dlt winetricks -f -q corefonts mfc40 mfc42 vcrun2003 vcrun2010 gecko vcrun6 vcrun6sp6

3) Распаковываем дистрибутив в ~/.wine-kompas3dlt/drive_c/Distrib, переходим в каталог с файлами, запускаем:

WINEPREFIX=~/.wine-kompas3dlt wine msiexec /i KOMPAS-3D_LT_V12.msi

Почему-то, в отличие от Home-версии, не создался ярлык на рабочем столе, но это легко исправить, создав на столе скрипт или ярлык с примерно такой командой:

WINEPREFIX=$HOME/.wine-kompas3dlt wine "$HOME/.wine-kompas3dlt/drive_c/Program Files (x86)/ASCON/KOMPAS-3D LT V12/Bin/KOMPASLT.Exe"

И вроде всё запускается и работает очень шустро и не падает.
А теперь, вёдра дёгтя в ложку мёда:

  • На одном компьютере при редактировании эскиза глючит отрисовка - фон становится чёрным и рисуются фантомные линии (геометрии, которые были в эскизе раньше).
  • На другом компьютере при редактировании возле курсора болтаются всякие артефакты.
  • На дисплее 4K работать невозможно, т.к. кнопки в тулбаре итак крошечные, а при увеличении DPI не увеличиваются, в результате их без экранной лупы не видно.

По первым двум проблемам, в интернетах есть информация, что старый Компас под Wine не всегда дружит в фирменными драйверами nVidia и лучше работает с nouveau, но это решение неприемлемо, т.к. с nouveau много что другое плохо работает. Итого, пока что затея с Компас LT проваливается. Вам может повезти и всё будет работать нормально, нам не повезло.
Проблемы могут быть исправлены в WINE @ Etersoft, но это не точно - нужно пробовать, а для этого надо пожертвовать временем и установленным, налаженным стоковым Wine на каком-то компьютере (параллельно их просто так поставить нельзя), либо поднимать виртуалку, что лишает 90% смысла использования Wine (так можно сразу виртуалку с XP или 7 делать).

Установка KOMPAS 3D под Ubuntu (20.04, v21, 64bit), 2023.02

1) Устанавливаем wine и winetricks. Желательно установить супер-новый Wine (без этого может работать, может не работать). Ниже команды для Ubuntu. Замените focal на кодовое имя вашего дистрибутива, при необходимости его можно уточнить командой lsb_release -a:

sudo add-apt-repository 'deb http://dl.winehq.org/wine-builds/ubuntu/ focal main'
sudo apt install --install-recommends winehq-devel

Примечание - на самом деле, в этой инструкции для Ubuntu специфичен только этот способ установки свежего Wine, всё остальное одинаковое для всех дистрибутивов Linux.
UPD: Лучше используйте инструкцию для этого шага отсюда (страница для Ubuntu).

2) Нужно создать отдельный чистый инстанс Wine для Компаса. Да, это расход дискового пространства (сам Компас у меня занял 5,5 ГБ, а его индивидуальная "винда" ещё 3 ГБ), но так намного удобнее и надёжнее. Всегда можно снести "винду" (весь каталог Wine) и начать с чистого листа и не восстанавливать кучу пропавших виндовых програм. Или забэкапить или перенести каталог с отдельным приложением. Заодно можно индивидуально настроить видимость линуксовой файловой системы, режимы совместимости с Windows. Ну и самое главное - активация Компаса привязана к конфигурации железа, на котором он работает, и при изменении конфигурации Wine активация может накрыться медным тазом. (Если это произойдёт, то остаётся только связываться с технической поддержкой Компаса, они помогут восстановить ключ.)
Допустим, выберем для установки Компаса каталог ~/.wine-kompas. Создадим инстанс "винды":

WINEPREFIX=~/.wine-kompas winecfg

Когда winecfg создаст каталоги "Windows" и запустится, смотрим настройки, например, можно настроить разрешение экрана и какие каталоги из системы будут видны виндовым программам и на каких буквах дисков. Потом выходим из него.
Современная версия Wine по дефолту создаёт винду а ля Windows 10 64-bit, что нам и нужно.

3) Следуя официальной инструкции, установим нужные компоненты винды:

WINEPREFIX=~/.wine-kompas winetricks -f -q corefonts d3dcompiler_47 vcrun2015 dotnet48

Примечание: это может работать адски долго, но дайте ему закончить.
Перейдём в каталог ~/.wine-kompas/drive_c, создадим там подкаталог, например, Distr и распакуем туда архив с Компасом, например, KOMPAS-3D_v21_Home_x64_1174.zip. Найдём где лежит файл MSI, например, KOMPAS-3D_v21_Home_x64.msi и перейдём туда. Выполняем команду:

WINEPREFIX=~/.wine-kompas wine msiexec /i KOMPAS-3D_v21_Home_x64.msi

Выбираем выборочную установку и отключаем установку HASP (она называется как-то по другому в списке, типа менеджера ключей или что-то в этом роде). (Виндовый сервер HASP на Wine не работает, но есть линуксовая реализация, о ней ниже.)
Компас устанавливается, на рабочем столе создаётся ярлык, которым можно запустить приложение. Wine автоматически прописывает в ярлыке правильный WINEPREFIX. Но если возникнет необходимость сделать свой скрипт для запуска то не забудьте в нём про этот префикс.

Активацию делаем просто по официальному мануалу, никаких граблей в процессе не обнаружено: раз, два. Для домашней версии нужно будет:
1) Установить сервер активации из архива aksusbd_vlib46707.tar (он линуксовый, распаковываем, выполняем sudo ./dinst). Кстати, у сервера есть веб панелька, которая доступна после его установки по адресу: http://localhost:1947/
2) Распаковать kActivation_cli.tar, сделать:

sudo cp libhasp_linux_x86_64_46707.so /lib
./kActivation_cli -a <ключ> <емайл>

Запускаем Компас, проверяем что всё ОК, делаем бэкап с ~/.wine-kompas ;)

P.S. Приложение работает под Wine в целом нормально и стабильно, хотя где-то неидеален вид UI. Также, иногда перестают нажиматься кнопки и вводиться текст в диалогах (свойства объектов, например), это лечится нажатием Alt+Tab.

P.P.S. Ждём официальный порт на Linux, альфу обещали уже 2023 году...

Сниппет для сэмплинга пользователей или A/B тестирования (Java)

Допустим, у нас есть стабильный идентификатор пользователя userId. С помощью этой функции мы превращаем строковый идентификатор в псевдослучайное число:

int userNumber = stringIdToSamplingMillis(userId);

Теперь мы можем использовать это число так:

if (userNumber < 50) ... // Пользователь попал в 5% тестовую выборку
if (userNumber < 500) ... // Пользователь попал в категорию A
else ... // Пользователь попал в категорию B

Функция:

    // Генерирует по строке псевдослучайное число от 0 до 999 включительно.
    private static int stringIdToSamplingMillis(final String str) {
        // Используем MD5 в качестве генератора псевдослучайного числа на базе строки
        final MessageDigest hasher = MessageDigest.getInstance("MD5");
        final byte[] data = str.getBytes();
        hasher.update(data, 0, data.length);
        // Получим MD5 в виде длинного целого числа
        final BigInteger bigInt = (new BigInteger(hasher.digest())).abs();
        // Получим хвост длинного целого в виде обычного int-а [0..999]
        return bigInt.mod(BigInteger.valueOf(1000)).intValue();
    }

Linux + 4K + Firefox & Chrome - размер шрифтов в меню и на вкладках

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

1) Вычисляем коэффициент, на который нужно умножить разрешение. У моего нового монитора 162x161 PPI (xdpyinfo | grep dots), а проги считают, что 96 PPI. Делим ((162+161)/2)/96 = 1.6822916(6). То есть примерно 1.68. Можно не округлять, можно округлить до 1.7, по вкусу.

2) Google Chrome. Добавляем в ярлык параметр запуска:
sudo gedit /usr/share/applications/google-chrome.desktop
Находим строчку:
Exec=/usr/bin/google-chrome-stable %U
Меняем на:
exec=/usr/bin/google-chrome-stable --force-device-scale-factor=1.68 %U
Если есть копия ярлыка на панели запуска или рабочем столе то её правим аналогично.
Перезапускаем Chrome поправленным ярлыком.
Минус - если Chrome не был запущен и запускается из командной строки без этого параметра, то чуда опять не произойдёт. Впрочем, он почти всегда висит запущенный, поэтому и ладно.

3) Firefox, Thunderbird и другие GTK-приложения. Добавляем в ~/.bash_profile или ~/.profile (какой у вас используется, или в оба):
export GDK_DPI_SCALE=1.68
Перелогиниваемся.

P.S. Почему в 2020 году ведущие мировые приложения не умеют читать реальный PPI экрана мне неведомо.

P.P.S. Фикс для Zoom: в ~/.config/zoomus.conf - исправляем значение scaleFactor.
Sweet Home 3D: в /usr/share/sweethome3d/sweethome3d.sh - добавляем параметр -Dcom.eteks.sweethome3d.resolutionScale=1.68.

P.P.P.S. Wine: wine regedit -> HKEY_CURRENT_CONFIG > Software > Fonts, там создаём LogPixels (типа DWORD) с разрешением экрана, например, 162 (decimal) или просто запускаем winecfg и ставим разрешение на вкладке "Графика". Чтобы создать эффект использования увеличенных шрифтов нужно поставить разрешение на 25-30% больше реального.

Шпаргалка по настройке Octoprint / OctoPi + TouchUI

  • Берём кит Raspberry Pi 3 B+ с 3.5" тачскрином, например.
  • Скачиваем и прошиваем на microSD образ OctoPi. Согласно инструкции настраиваем сетевое подключение. Вставляем карту в Pi. В принципе, OctoPi уже работает и можно подключать принтер, заходить на веб-интерфейс и пользоваться.
  • Заходим на Пирожок по SSH и устанавливаем драйвер дисплея и тачскрина. Сначала стоит апнуть всё с помощью apt. Для поиска драйвера нужно использовать информацию, написанную на задней стороне экрана, т.к. много производителей делают аналогичные экраны и драйвера от не того экрана скорее всего не подойдут. В приведённом выше случае, нужен вот этот драйвер (см. SPI_128M_60Hz). На Пирожке распаковываем архив и выполняем sudo ./LCD35_show. После перезагрузки дисплей должен начать работать.
  • Устанавливаем плагин TouchUI в веб-интерфейсе OctoPi.
  • Чтобы на экране Pi после загрузки сразу показывался TouchUI, настраиваем boot to browser. После этого шага, у меня перестали запускаться Иксы, как выяснилось, проблема в конфигурационном файле для тача 99-..., который скрипт установки TouchUI создал в /usr/share/X11 на этом шаге. Его нужно удалить и снова перезагрузить Pi.
  • Отключаем гашение экрана (оно всё равно бесполезно с этим экраном, т.к. он не умеет отключать подсветку), в /etc/xdg/lxsession/LXDE-pi/autostart:
    @lxpanel --profile LXDE-pi
    @pcmanfm --desktop --profile LXDE-pi
    # Эту строчку нужно закомментировать:
    # @xscreensaver -no-splash
    # Эти строчки нужно добавить:
    @xset s off
    @xset -dpms
    @xset s noblank
    @unclutter

Примечание: есть странный баг - иногда случайным образом блокировка скринсейвера не отрабатывает и экран всё же гаснет.
Полезное видео по установке TouchUI.

Archives

                                                                                                                                                                                                                                                                   


© Sergey A. Galin, 1998-2021 sageshome.net/blog/