LINUX.ORG.RU

Сообщения KivApple

 

Помогите найти footprint для NRF51822

Форум — Science & Engineering

Приобрёл вот такую вот штуку - https://ae01.alicdn.com/kf/HTB1byNdKXXXXXagapXXq6xXFXXX7/BLE4-0-Bluetooth-2-4...

Хочу сделать для неё базовую плату, на которой уже будет вся необходимая моему устройству периферия и впаять туда эту плату на манер SMD-детали.

Вопрос: где раздобыть footprint для этой штуки? Рисовать самому ой как не хочется (боюсь пролететь с размерами). Мне даже не совсем понятно как гуглить, чтобы найти footprint не для самой микросхемы, а для целой платы. Подойдут варианты для KiCAD (в нём планирую вести разработку) или EagleCAD (вроде как без проблем конвертируется в KiCAD).

 ,

KivApple
()

JavaFX: масштабирование Node

Форум — Development

Допустим, я создаю SVGPath и Label, а затем добавляю их на StackPane (хочу чтобы надпись отображалась поверх SVGPath), а затем всё это добавляю в окно. Как-то так:

package sample;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.FillRule;
import javafx.scene.shape.SVGPath;
import javafx.stage.Stage;

public class Main extends Application {

    private static final String BUBBLE_SVG_PATH = "m 32.339338,-904.55632 c -355.323298,0 -643.374998,210.31657 " +
            "-643.374998,469.78125 0,259.46468 288.0517,469.812505 643.374998,469.812505 123.404292,0 " +
            "238.667342,-25.3559002 336.593752,-69.3438 69.80799,78.7043 181.84985,84.1354 378.90625,5.3126 " +
            "-149.2328,-8.9191 -166.3627,-41.22 -200.6562,-124.031305 80.6876,-78.49713 128.5,-176.04496 " +
            "128.5,-281.75 0,-259.46468 -288.0205,-469.78125 -643.343802,-469.78125 z";

    @Override
    public void start(Stage primaryStage) throws Exception{
        primaryStage.setTitle("Hello World");
        SVGPath svgPath = new SVGPath();
        svgPath.setContent(BUBBLE_SVG_PATH);
        svgPath.setFill(Color.WHITE);
        svgPath.setStroke(Color.BLACK);
        svgPath.setScaleX(0.5);
        svgPath.setScaleY(0.5);
        Label label = new Label("Hello world");
        System.out.println(svgPath.getBoundsInLocal());
        System.out.println(svgPath.getBoundsInParent());
        System.out.println(svgPath.getLayoutBounds());
        StackPane stackPane = new StackPane();
        stackPane.getChildren().add(svgPath);
        stackPane.getChildren().add(label);
        Group root = new Group();
        root.getChildren().add(stackPane);
        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}

Проблема в том, что layoutBounds у Node не учитывает трансформацию. В результате stackPane растягивается до исходного размера SVGPath, а в след за собой растягивает и окно.

То есть получается, что окно и stackPane имеют размер в 2 раза больше, чем надо. И это совсем не прикольно. Ах да, задание scale для самого stackPane ничего не меняет + я хочу масштабировать только SVGPath, но не остальных детей stackPane.

Я понимаю, что это поведение согласно документации. Но как правильно масштабировать Node, чтобы родитель это корректно воспринимал и растягивался под новый, а не старый размер?

 ,

KivApple
()

Создать класс-прокси в рантайме

Форум — Development

Допустим, есть класс:

abstract class A {
    public abstract void foo(int i);
    public abstract void bar();
}

class B extends A {
    @Override
    public void foo(int i) { ... }
    
    @Override
    public void bar() { ... }
}

Я хочу запилить свой класс:

class C extends A {
    private final B b;
    C(B b) {
        this.b = b;
    }
    @Override
    public void foo(int i) {
        b.foo(i * 2);
    }
    @Override
    public void bar() {
        b.bar();
    }
}

То есть он по сути дела является обёрткой над классом B, которая модифицирует поведение одного из методов (точнее выполняет некоторую предобработку аргументов), а все остальные просто проксирует без изменений.

Разумеется, в реальности методов у класса B не 2, а больше.

Я хочу создать объект-прокси полностью в рантайме (с помощью, например, javassist). Более того, я даже знать не хочу, какие конкретно методы есть у класса A кроме того, в который я хочу влезть, но они должны правильно отпроксироваться.

Как такое запилить?

P. S.: Я понимаю, что полученный класс не будет полной заменой класса B, но мне это и не нужно - всё равно весь код работает с ним только как с классом A.

 ,

KivApple
()

VirtualBox + Tor

Форум — Admin

Решил тут в целях саморазвития поразбираться как настраивать связку Tor и VirtualBox.

Создаю виртуальную машину, выбираю в качестве сетевого подключения «Виртуальный адаптер хоста». Имя этот адаптер имеет vboxnet1, IP-адрес 192.168.57.1. Гость получает IP от встроенного в VirtualBox DHCP-сервера.

В sysctl на хосте задаю такие опции:

net.ipv4.ip_forward=1
net.ipv4.conf.all.route_localnet=1
net.ipv6.conf.default.forwarding=0
net.ipv6.conf.all.forwarding=0

iptables на хосте настраиваю так:

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -t raw -F
iptables -t raw -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -I INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -I INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -I INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -I INPUT -p icmp --icmp-type echo-request -j ACCEPT

iptables -t nat -A PREROUTING -i vboxnet1 -p tcp --dport 9050 -j DNAT --to-destination 127.0.0.1:9050
iptables -A INPUT -i vboxnet1 -d 127.0.0.1 -p tcp --dport 9050 -j ACCEPT

iptables -I INPUT -i lo -j ACCEPT

iptables -I OUTPUT -o vboxnet1 -j DROP
iptables -I OUTPUT -o vboxnet1 -p tcp --sport 9050 -j ACCEPT
iptables -I OUTPUT -o vboxnet1 -p icmp --icmp-type echo-reply -j ACCEPT
iptables -I OUTPUT -o vboxnet1 -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -I OUTPUT -o vboxnet1 -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -I OUTPUT -o vboxnet1 -p icmp --icmp-type echo-request -j ACCEPT

iptables -I OUTPUT -o lo -j ACCEPT

Верно ли, что теперь виртуальная машина может только пинговать 192.168.57.1 и подключаться по TCP к 192.168.57.1:9050 (что в реальности будет перенаправлено на хосте на 127.0.0.1:9050)?

Верно ли, что приложения на хосте могут только пинговать виртуальную машину или являться сервером по адресу 127.0.0.1:9050 и никак больше по сети взаимодействовать с ВМ не могут?

Если не верно, то как сделать эти утверждения истинными?

 , , ,

KivApple
()

Не стартует плазма

Форум — Desktop

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

Переустанавливать Arch Linux я не захотел и просто поставил Plasma рядом с Gnome, а потом удалил Gnome и подчистил orphaned-пакеты.

В результате столкнулся вот с чем:

1) Первый раз плазма нормально запустилась, я её понастраивал немного (незначительные вещи типа комбинаций клавиш и количества рабочих столов).

2) Второй раз плазма нормально не запустилась. Пару минут висит заставка запуска плазмы, затем появляются дефолтные обои (хотя я их сменил). Панели нет. Чтобы получить нормальную плазму нужно запустить через krunner konsole и выполнить следующую команду:

pkill plasmashell && kstart5 plasmashell

После этого в 100% случаев появляется панелька, правильные обои рабочего стола и т. д.

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

4) Тот же результат.

В чём может быть проблема? Можно ли как-то посмотреть логи запуска plasmashell, чтобы узнать чего ему не хватает или чего он ждёт?

По тому что появляется дефолтная обоина могу предпложить, что у плазмы возникают какие-то проблемы с чтением конфигов в первый раз (но только у плазмы, krunner и kwin нормально работают).

 , ,

KivApple
()

QBluetooth очень долго сканирует характеристики BLE устройства

Форум — Development

Скомпилировал и запустил пример LowEnergyScanner из Qt 5.8 Examples и обнаружил, что оно ОЧЕНЬ долго сканирует характеристики устройства (то есть нашли девайс, подключились, выбрали какой-нибудь профиль и по идее должны получить список его характеристик). В некоторых ситуациях я ждал минут 20 и закрывал приложение, ничего не получив.

При этом список устройств и список профилей открывается более-менее нормально.

При этом простой скрипт на Python с использованием библиотеки bluepy на той же машине (ноутбук под управлением Linux, встроенный адаптер поддерживает BLE) сканирует характеристики очень быстро. Аналогичная ситуация с приложением NRFConnect на Android смартфоне - получает список характеристик очень быстро.

В качестве BLE устройства выступает Android-смартфон с запущенным приложением BLESimulator (пробовал симулировать и батарейку, и датчик пульса - результат один), и самодельное устройство. В любом случае раз у Android и Python проблем нет, значит виноват обязательно Qt.

В чём может быть проблема?

Пробовал вручную выставлять в Qt maximumConnectionInterval в минимальное значение в 7.5 мс - профили находятся быстрее, но с характеристиками та же проблемы.

Либо посоветуйте другую библиотеку кроме QBluetooth, которая имеет хоть какую-то документацию и поддерживает смену connectionInterval (bluepy не умеет).

 , ,

KivApple
()

Выключение ноутбука при низком уровне заряда

Форум — Desktop

Где в Gnome3 настраивается поведение ноутбука при низком уровне заряда батареи? Никаких релевантных опций в параметрах электропитания не вижу.

Интересует уровень порога срабатывания (сколько процентов считать критическим уровнем заряда) и действие (ничего, спящий режим, ждущий режим, отключение).

 

KivApple
()

Отладка Chrome-like приложений

Форум — Development

Допустим, есть основная программа. Она запускает дополнительные программы-плагины и общается с ними (это могут быть пайпы, сокеты, stdin/stdout). Как отлаживать процессы-плагины?

Их нельзя запустить самих по себе, их должен запустить основной процесс.

 

KivApple
()

BLE и передача потока данных

Форум — Science & Engineering

Как я уже говорил в предыдущей теме, я хочу сделать BLE устройство, которое будет передавать данные с датчика. Я тут немного подумал и понял, что наврал. На самом деле мне нужно передавать 24 кбайт/сек (24 байта * 1000 Гц).

Это вообще реально с BLE? Если нет, то сколько получится передать, если между устройствами будет не больше пары метров?

И в какую сторону копать? Как реализовать подобный протокол? Сделать кучу характеристик с данными за последние несколько десятков миллисекунд? Или как?

 

KivApple
()

Посоветуйте микроконтроллер или радиомодуль

Форум — Science & Engineering

1) Есть датчик. У датчика есть интерфейс SPI. Я хочу опрашивать его пару тысяч раз в секунду и передавать значения без какой-либо обработки на компьютер на онтопике или смартфон на Android. При этом извращения в виде втыкания в смартфон всяких специальных приёмников через USB OTG не хочу. Должно быть нужно только приложение. В компьютер же можно что-нибудь и воткнуть (тот же Bluetooth донгл, но на ноутбуках практически всегда есть из коробки).

2) Поток данных - несколько килобайт в секунду. Однако было бы не плохо, если можно уходить в какой-нибудь режим ожидания и начинать передачу лишь по запросу. Да так чтобы это давало большой плюс к пункту 4.

3) Дальность: 5-10 метров это ок. Сотни метров не нужно.

4) Низкое энергопотребление. Вся система будет работать от аккумулятора и должна быть достаточно компактной (так что советы прикрутить к этой штуке аккумулятор от КАМАЗа идут лесом). В даташите на NRF24L01 указан ток потребления порядка 13 мА в момент передачи. С учётом того, что мне дальность можно поменьше (на улице дальность достигает 50-70 метров по моим личным тестам у этого модуля), как и скорость, то будем считать, что радиомодуль должен жрать не больше 5 мА в среднем.

По этим хотелками я прихожу к выводу, что мне должен идеально подойти Bluetooth (Wi-Fi явно завалит 4-ый пункт, а всякие NRF24L01 не проходят по 1-ому пункту - смартфон с ней работать не будет). Но тут есть вопрос: обычный Bluetooth или Low Energy? Поразбираться немного подольше я не против, если это даст заметный прирост в автономности. Или же BLE при непрерывной передаче нескольких килобайт данных в секунду жрёт не меньше, чем обычный Bluetooth?

Дальше. Есть два варианта - отдельный радиомодуль и отдельный микроконтроллер или комбинированное решение. По идее в плане энергопотребления второй вариант лучше, зато первый проще в реализации (я могу выбрать любой микроконтроллер, который умею программировать).

Так что можете посоветовать под мои хотелки, господа?

Вот, например, есть CC2540. Но там 8051 и не совсем понятно, что с SDK и компилятором (можно ли использовать какой-нибудь SDCC или надо обмазываться win-only софтом). Вроде как китайские платки с ним прошиты таким образом, чтобы управляться AT-командами. Возможно ли при этом будет воспользоваться всеми фишками BLE (допустим, я прикручу какой-нибудь MSP430 между радиомодулем и самим датчиком)?

Или, может быть, вы знаете какие-то другие хорошие микроконтроллеры со встроенным радиомодулем? Или может есть радиомодуль без микроконтроллера (чтобы не жрал лишнее), который бы я подключил к своему микроконтроллеру?

 , ,

KivApple
()

Преобразование std::string в std::wstring

Форум — Development
$ cat test_encoding_conv.cpp 
#include <iostream>
#include <string>
#include <locale>
#include <codecvt>

int main() {
	std::string str = "z";
	std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
	std::wstring wstr = converter.from_bytes(str);
	std::string utf8 = converter.to_bytes(wstr);
	std::cout << utf8 << std::endl;
	return 0;
}
$ g++ -std=c++14 -o test_encoding_conv test_encoding_conv.cpp 
$ ./test_encoding_conv 
稀

Делал по примеру отсюда: http://stackoverflow.com/questions/7153935/how-to-convert-utf-8-stdstring-to-...

Почему не работает и печатает какой-то иероглиф вместо «z»?

РЕШЕНИЕ: Заменить std::codecvt_utf8_utf16 на std::codecvt_utf8. В результате всё отлично работает.

Как известно, на Linux wchar_t 32-битный, а под офтопиком - 16-битный. И судя по всему std::codecvt_utf8_utf16 неадекватно себя ведёт в этом случае. Соответственно, нужно либо гарантированно 16-битный тип, либо использовать другой преобразователь кодировку. Ответ на SO скорее всего тестировался под виндой, либо на другой версии libstdc++ (у кого-то всё работает, вероятно, баг имеет место быть не во всех версиях).

 

KivApple
()

Снова про ThinkPad и поворот экрана

Форум — Desktop

Не могу повесить кастомную команду на кнопку поворота дисплея у ThinkPad X230T. Называется эта кнопка с точки зрения Gnome «RotateWindows».

А мне очень важно повесить именно на эту кнопку, потому что клавиатура в режиме планшета недоступна.

Пробовал назначать эту же кнопку на другие действия (типа перехода в режим обзора или запуск браузера) - точно также не работает.

Но при этом Gnome видит эту кнопку - как минимум он позволяет её назначить на что-нибудь (хоть это работать и не будет).

Более этого, эта кнопка блин работает. Он таки циклически меняет ориентацию при её нажатии. Казалось бы, зачем мне что-то менять, но проблема в том, что он это делает тупо через xrandr, а надо делать по-умному через thinkpad-rotate. Иначе координаты стилуса не трансформируются и он работает некорректно, хотя с тачем проблем нет (в KDE таких проблем не было - можно было вертеть экран через xrandr и стилус, и тачскрин на это правильно реагировали, а на эту кнопку можно было назначить любое действие).

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

Как с этим бороться?

UPD: Попробовал выполнить следующую команду:

gsettings set org.gnome.settings-daemon.plugins.orientation active false

Но это ничего не дало ни сразу, ни после релогина.

Попробовал повесить свой скрипт на другую комбинацию клавиш и оно проработало какое-то время, а потом перестало. Вот это вообще магия какая-то. Всякие мультимедиа клавиши работают (хотя они тоже иногда отваливаются, я уже создавал про это тему и мне никто ничего не подсказал, лечится перезапуском Gnome Shell), а моя добавленная нет. Даже если её удалить и заново добавить.

 , , ,

KivApple
()

Концепт языка программирования

Форум — Talks

Продолжаю свои эксперименты с языками программирования.

Вот плод моего больного воображения:

printf: (fmt: @(char const), ...) no_mangle;

main: (argc: int, argv: @(@(char))) -> int {
    i: int = 0;
    while (i < argc) {
        printf("%s\n", argv[i]);
        i += 1;
    }
    return 0;
};

ООП как-то так:

SomeClass: class {
    someFunc: (a: int) public {
        return a * 2;
    };
};

instanceOfSomeClass1: SomeClass;

Ну и массивы:

m: int[100];

Две основные идеи:

1) Обычно программист сначала придумывает название для сущности и только потом окончательно определяется с типом. Си заставляет писать сначала имя типа, а потом уже только потом название, что плохо. А уж всякие модификаторы (public, private, static, extern и т. д.) и подавно можно подобрать уже в самом конце определения.

2) Всякие фигурные скобочки придают коду наглядность куда лучше, чем паскалевский begin-end.

Но есть дополнительные вопросы:

1) Указатели. Как они должны определяться? В примере выше используется конструкция @(базовый тип). В том числе к ней можно применить модификаторы. Например, @(char const) volatile - изменчивый указатель на константный символ. Но можно было бы сделать что-то вроде Pointer(базовый тип), что было бы более наглядно, но и более многословно.

2) Опять указатели. Как следует выполнять разыменовывание указателей? C-style с помощью унарного *? Или может быть Pascal-style с помощью постфиксного ^? А может вообще считать указатели структурами с единственным полем value и делать разыменовывание как ptr->value (допустим, к полям структуры мы обращаемся через указатель через ->)?

3) И снова указатели. Как следует выполнять взятие адреса? C-style &? Или Pascal-style @? Или может неявно при присваивании указателю объекта?

4) Циклы. Классический сишный набор for-do-while с сишным же синтаксисом? Для for можно добавить for-each семантику. Какую? for (переменная: коллекция) или же for (переменная in коллекция)?

5) Шаблоны? Нужно ли? Если да, то какой синтаксис.

6) Алиасы для типов. Следуя основному стилю языка лучше сделать что-то вроде MyIntType: TypeAlias(int);, но это выглядит как введение ещё одного ключевого слова в язык. Может использовать какой-то символ? Какой?

7) ++ и --. Из-за этих операций возможны всякие странные вещи типа ++i + ++i. Так ли это плохо?

8) Преобразования типов. Варианты: сишный вариант (тип)значение. Паскалевский вариант тип(значение), C++ вариант reintepret_cast<тип>(значение). Что лучше?

Да, сам язык будет использовать концепцию модулей. Опрережающие определения не нужны - компилятор будет двухпроходным. Таким образом все определения из текущего модуля будут считаться объявленными в любой момент времени. Разумеется, циклы в иерархии наследования классов допускаться не будут. Подключение других модулей выполняется с помощью ключевого слова import some.module; Импорт возможен только до первой декларации. Взаимный импорт модулей должен корректно разруливаться компилятором (а не как в Python).

Весь код транслируется в Си. Причём язык позволяет закодировать любую сишную конструкцию (в том числе всякие грязные преобразования типов и т. д.). Более того, можно сделать что-то типа import «stdio.h». При этом компилятор с помощью libclang по-быстрому парсит подключенные заголовочные файлы, таким образом видит все сишные определения как свои (разве что с макросами печалька, но можно и этот момент частично разрулить).

Разумеется, помимо ООП и шаблонов должны быть лямбда-функции и асинхронное программирование.

UPD: Про псевдонимы типов придумал вариант синтаксиса получше.

NewType := OldType;

Логика простая - если вместо имени типа сразу идёт =, то это не обычное определение, а псевдоним типа (таким образом чисто технически между : и = может быть пробел).

 ,

KivApple
()

ThinkPad + док-станция + жёсткий диск

Форум — Linux-hardware

Только что забрал с почты док-станцию для своего ThinkPad X230T. Очень доволен. Обнаружил, что сбоку у док-станции есть полость для установки привода для компакт-дисков. На вид как аналогичная полость у ноутбуков. В настоящий момент пустует (но продавец предупреждал в описании, что дисковод в комплект не входит, так что всё ок).

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

Это нормально будет работать? Как насчёт того факта, что фактически у меня будет hot-plug жёсткого диска? Сами разъёмы на это явно рассчитаны (ведь дисковод точно также будет подключаться-отключаться на горячую, а это штатная опция производителя), но как к этому отнесётся жёсткий диск?

На этом жёстком диске будут хранить всякие резервные копии и ненужные большие файлы, ведь в самом ThinkPad X230T только один разъём SATA, а очень большие SSD (ну не использовать же HDD в качестве системного диска в 2017-ом году ведь!) стоят очень дорого.

Также интересует мнение людей, которые имеют представления конкретно о ThinkPad'ах и их док-станциях. Там есть рычажок, который выталкивает ноутбук из дока, а есть кнопка с пиктограммой «извлечь», которая делает так что ноутбук отключается от дока, но никуда не вытакливается. Это типа как «безопасное извлечение устройства» и надо сначала нажимать на кнопку, а потом на рычажок или же пофиг и можно сразу жать на рычажок?

 

KivApple
()

Как изменить ассоциацию приложения для директорий

Форум — Desktop

Имеется установленный Gnome3 на ArchLinux с полным набором приложений. В который входит в том числе Anjuta. И почему-то теперь считается, что всё что хоть каким-то образом может иметь отношение к проектам данной среды разработки, должно открываться именно в ней. Даже шелл-скрипты. С большинством типов файлов легко - открываешь свойства файла в Nautilus и меняешь ассоциацию на другое приложение.

Однако есть особый тип файлов, у которого вкладки «Открыть с помощью» нет - каталоги. А они тоже внезапно открываются в Anjuta. Ну то есть как открываются... Nautilus, конечно, догадывается самостоятельно открывать каталоги внутри себя, но вот другие приложения - нет.

То есть, например, втыкаю флешку, появляется всплывающее уведомление о ней, щёлкаю по нему. И вместо того чтобы открыть флешку в Nautilus, Gnome запускает Anjuta, которая предлагает импортировать проект из каталога. Или, например, PyCharm думает, что файловый менеджер это Anjuta и пункт меню со смыслом «Показать в файловом менеджере» запускает Anjuta.

Я ничего не собираюсь удалять, ибо это не правильно. Мне нужно как-то подправить ассоциацию файлов для типа «каталог», чтобы они открывались в Nautilus.

И да, авторы приложений, не являющихся файловыми менеджерами общего назначения, которые додумываются создавать какие-то ассоциации с inode/directory - идиоты.

 ,

KivApple
()

Как называются такие разъёмы

Форум — Talks

Пришёл таки мне 4G модем для моего ThinkPad X230T. Я уже его было разобрал и захотел установить на его место, но обнаружилось два неприятных факта:

1) У модема разъём M.2 и в Mini PCI-E он не пихается. К счастью, я очень быстро нашёл на AliExpress переходник за 150 рублей и уже заказал его.

2) В ThinkPad уже есть пара антенн для модема, которые никуда не подключены. Очень предпочтительно использовать именно их, ибо они проведены уже как надо через весь ноутбук и экран. Однако их разъёмы не подходят к разъёмам на 4G модеме - на модеме они меньше диаметром, чем на концах проводов от антенн. Казалось бы, можно тоже заказать переходники, но я не знаю по каким названиям искать.

У меня завалялся ноутбучный Wi-Fi модуль и я попытался воткнуть антенну туда - оно подошло, хоть и нафиг не нужно.

Вот фото: https://itmages.ru/image/view/5383405/5b392528

Слева 4G-модем, справа Wi-Fi модуль. К Wi-Fi модулю антенные разъёмы имеющиеся в ThinkPad подходят, к 4G-модему нет. Как называются эти разъёмы и как мне найти переходник с одного на другой?

 

KivApple
()

Gnome3 + клавиши настройки громкости

Форум — Desktop

Есть Gnome3 и есть клавиатура с мультимедийными клавишами, среди которых есть клавиши прибавления, убавления и выключения звука. В KDE они работали из коробки. В Gnome по какой-то причине не работают. При этом если открыть настройки комбинаций клавиш и попытаться их переопределить на другую комбинацию, то всё работает, но я бы хотел использовать мультимедийные клавиши, ибо это удобнее, чем какая-то комбинация. Но система их как будто не видит.

В чём может быть проблема?

 

KivApple
()

Caribou и русская раскладка

Форум — Talks

Я тут короче запилил патч, добавляющий русскую раскладку в стандартную клавиатуру Gnome Shell. Написал баг-репорт - https://bugzilla.gnome.org/show_bug.cgi?id=776980, но он уже неделю висит и никаких комментариев или изменений от разработчиков Gnome нет.

Быть может, на ЛОРе есть разработчики Gnome или люди, которые с ними общаются, может пнёте их? Или это нормально и через пару месяцев они отреагируют?

Мой патч это просто добавление XML-файла, там ревьюить особо нечего.

 

KivApple
()

Поведение SSD при сбое

Форум — Linux-hardware

Насколько я понял, разные SSD при обнаружении ошибок ведут себя весьма по-разному. Некоторые просто молча перестают определяться, другие молча считывают мусор вместо данных, третьи выдают нормальные ошибки чтения/записи и переходят в режим read-only.

Как определить какое поведение заложено производителем? Многие магазины пишут названия контроллеров. Где бы узнать, как этот контроллер себя ведёт?

Хотелось бы выбрать SSD, который относится к третьему или хотя бы второму типу. Категорически не хочу вариант, когда SSD просто перестаёт видится системой.

 

KivApple
()

QVKbd

Форум — Talks

Я тут короче запилил свою виртуальную клавиатуру с шахматами и поэтессами. Вдохновлялся kvkbd (но это не форк).

https://github.com/KivApple/qvkbd

Основные плюшки:

1) Содержит все необходимые клавиши, которые есть на среднестатистической клавиатуре

2) Легко в будущем добавить альтернативные раскладки, потому что сама раскладка реализована в виде QML и её можно редактировать графически в Qt Creator

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

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

5) Нет привязок к KDE (в отличии от kvkbd). Требует только Qt и QtQuick. А ещё иксы (поддержку Wayland когда-нибудь добавлю). Используются расширения иксов Xkb и XRecord.

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

7) Имеет D-Bus интерфейс. Не знаю зачем, но вдруг кому-нибудь пригодится. Пока есть только 3 возможности - показать, скрыть и переключить видимость.

Так что если вы будете ставить Linux на какой-нибудь планшет или прилаживать к Linux-компьютеру тачскрин иным способом, то имейте ввиду, что помимо других проектов есть ещё и этот. А ещё я бы очень хотел знать, чего в этой клавиатуре не хватает или какие баги там наоборот имеются.

 , ,

KivApple
()

RSS подписка на новые темы