LINUX.ORG.RU

Сообщения Jefail

 

Экспертам по Redux, есть вопрос.

Привет, ЛОР. Недавно я написал свою реализацию Redux на Kotlin и уже пост фактум столкнулся с интересной особенностью, мне надо понять, проблема в том как я спроектировал конечное приложение, или в моей реализации на Kotlin есть баг. В общем, нужно проверить как ведёт себя оригинальный ReduxJS в такой ситуации и потому я здесь (Сам я в JS не шибко силён).

Ближе к делу: Речь идёт о middleware, функции next внутри него и возможности диспатчить новые action непосредственно из Middleware (насколько я понял из документации вызов next и dispatch в одной ветке никаких правил не нарушают). Так вот, допустим у меня есть такая конструкция.

Action A
Action B
Action C
Action D

middleware1 который превращает A -> B вызывая next 
middleware2 который превращает B -> C вызывая next И! одновременно с этим дергает dispatch(ActionD)  

Какое поведение ожидаю я: Сначала полностью пройдет цепочка для A -> B -> C

C попадет в Reducer, поменяется состояние и только потом через все Middleware и в конечном счёте Reducer полетит событие D.

На самом деле происходит совсем не так: В моём случае событие D летит по всем Middleware ещё до того как событие C достигнет редюсера. Повторюсь, возможно бага в моей реализации и я просто хочу понять, как оно в эталоне, которым для меня является JS. Надеюсь доступно объяснил и надеюсь на вашу помощь.

 , ,

Jefail
()

Запустить Java приложение с большим Scaling параметром.

Привет, ЛОР. У меня такая проблема, гугл перерыл, ничего не нашел. Есть честно купленный Charles Proxy, недавно переехал на ноутбук с HiDPI (3000x2000) и столкнулся вот с такой вот проблемой.

https://ibb.co/rMnqPTZ

Соб-но, вопрос: Можно ли как то это исправить? Я знаю что это Java приложение, но не очень понимаю как ему можно передать Scale параметр. Что интересно, другие Java приложения работают нормально из коробки. Заранее спасибо за ответ.

 , , ,

Jefail
()

Я сделяль (Redux под Android)

Соб-но, сабж.

https://github.com/v-sulimov/android-redux-kotlin

Уже давно использую этот подход в разработке боевого Android приложения и очень доволен. При грамотном использовании решаются абсолютно все проблемы с жизненным циклом Activity в Android, потому что State редукса становится единственным источником правды для состояния приложения и всё что вам остаётся - нарисовать его при старте экрана. Реализация собиралась с миру по нитке, в общем и целом получилось то, что Вы можете наблюдать. Тестами покрыто, аргументированная критика приветствуется.

 , ,

Jefail
()

Очень тихий звук в Bluetooth наушниках на максимальной громкости.

Привет, ЛОР. Продолжаю плясать на граблях Bluetooth гарнитуры и убунты. В прошлый раз Вы мне очень помогли, надеюсь на Вас и сейчас, ибо советы в гугле закончились.

Дано: Ubuntu 20.04 и Huawei Freebuds 3, цепляются по Bluetooth стандартно, протокол A2DP, проблема: Очень тихий звук, даже на максимальной громкости. При сопряжении с телефоном максимальная громкость намного выше, так что проблема точно где-то в связке именно с ноутбуком. Советы из гугла покрутить настройки пульсы ничего не дали, идеи закончились. Заранее всем спасибо за ответы.

В прошлый раз очень помогли, потому скастую и сюда: xaizek и cvv

 , , , ,

Jefail
()

Ubuntu 20.04 изменить размер swap после установки.

Вечер добрый, ЛОР. Прошу прощения за очередной глупый вопрос, не могу адекватно нагуглить правильное решение, а в теме не силён. Есть Ubuntu 20.04, стандартная установка с LVM + LUKS. Проблема заключается в том, что Ubuntu сделала 980 мб под своп и мне этого не всегда хватает, из-за чего тот же Android эмулятор оказывается прибит ООМ. Вопрос вот в чем: Как можно изменить размер этой свап партиции? В интернете все инструкции советуют создавать отдельно swap файл и таким образом двигать мебель, но мне кажется это какой-то костыль. Заранее спасибо за ответы.

 , , ,

Jefail
()

Не получается сделать pairing для bluetooth наушников.

Вечер добрый, ЛОР. Дано: Huawei MateBook X Pro, свежая Ubuntu 20.04 и наушники Huawei Freebuds 3, пытаюсь сцепить их через Bluetooth и ничего не работает. В логах вижу это

Apr 24 20:55:41 matebook-x-pro kernel: debugfs: File 'le_min_key_size' in directory 'hci0' already present!
Apr 24 20:55:41 matebook-x-pro kernel: debugfs: File 'le_max_key_size' in directory 'hci0' already present!
Apr 24 20:55:46 matebook-x-pro systemd[1]: systemd-rfkill.service: Succeeded.
Apr 24 20:56:08 matebook-x-pro gnome-control-c[2865]: Setting up /org/bluez/hci0/dev_04_8C_9A_F7_A9_44 failed: Timeout was reached
Apr 24 20:56:30 matebook-x-pro gnome-control-c[2865]: Setting up /org/bluez/hci0/dev_04_8C_9A_F7_A9_44 failed: GDBus.Error:org.bluez.Error.InProgress: In Pr>

В гугле нашел человека с такой же проблемой https://askubuntu.com/questions/1225896/huawei-freebuds-3-pairing-with-ubuntu...

Решения нет.

Но вопрос вот в чем: Кто виноват? Это баг в Bluetooth стеке убунты или производитель наушников что-то накосячил? Пишу сюда, потому что возможно у кого-то есть такие же наушники и они работают / не работают в Linux.

Любая помощь / подсказки куда копать приветствуются.

Заранее спасибо за ответы.

 , , ,

Jefail
()

Нубских вопросов по Rust'у тред

Привет, ЛОР. Сразу попрошу камнями не кидаться, ибо за плечами 5 лет Java разработки, возможно она и накладывает такой отпечаток на восприятие нового языка. Энивей, ближе к делу. Читаю их оффициальную книгу и есть там такой пример

fn main() {
    println!("Guess the number!");

    println!("Please input your guess.");

    let mut guess = String::new();

    io::stdin().read_line(&mut guess)
        .expect("Failed to read line");

    println!("You guessed: {}", guess);
}
И мне взрывает мозг конструкция с mut, точнее я вроде как это прекрасно понял (но хочу убедиться что понял правильно, потому и пишу), + в книге дикая путаница в важных вещах, которые еще и обзываются по разному (binding, variable, reference).

Как я это вижу:

let mut guess = String::new();
На языке джависта «Создаёт мутабельную ссылку на мутабельный объект». Т.е. меняться может как то, куда она указывает, так и объект, на который она указывает (можно вызвать guess.push('c');, например)

let guess = String::new();

Это же звучит как «Создает иммутабельную ссылку на иммутабельный объект», т.е. нельзя поменять то, куда она указывает, равно как и значение по ней (нельзя вызвать guess.push('c');)

let guess = &mut String::new();

А вот это просто вишенка на торте, а может быть и сам торт. Создаёт иммутабельную ссылку на мутабельный объект. Т.е. мы не можем поменять то, куда оно указывает, но можем изменять значение (вызовом того же guess.push('c');) Если описывать последнее терминами раста, то создаёт иммутабельный биндинг на мутабельную ссылку.

И если я понял это правильно, то у меня вопрос, почему в примере книги написано вот так?

    let mut guess = String::new();

    io::stdin().read_line(&mut guess)
        .expect("Failed to read line");

Ибо мне как джависту очень хочется написать вот так

    let guess = &mut String::new();

    io::stdin().read_line(guess)
        .expect("Failed to read line");
Т.е. биндинг сам по себе иммутабелен и всегда указывает на одну ссылку, а ссылка мутабельна и её содержимое может меняться. Вот, дискасс, если я что-то упустил или не понял - поясните пожалуйста.

 , , ,

Jefail
()

Установка Linux на Huawei Matebook X Pro

Соб-но, сабж, есть такой ноут, покупался для одной цели - обработка фотографий, венда как основная ОС просто взрывает мне жопу и больше я её терпеть не могу, хочу накатить хостом федору, но есть нюанс - Nvidia GPU. Честно, последний раз дело с ней имел лет 5 назад, что там сегодня в линуксе с ней? Стоит MX150, сделать в конечном счёте хочу вот что: Хостом будет Linux, поверх виртуалка (Gnome Boxes), в которой будет венда c PS/LR (Darktable пробовал, не зашло), можно ли будет эту Nvidia пробросить в виртуалку и получить +- адекватный уровень производительности в этих программах? По какому гайду стоит натягивать Nvidia на Fedora дабы не плясать потом с бубном после каждого обновления? Если есть истории успеха именно на этом ноутбуке - поделитесь пожалуйста.

 , , ,

Jefail
()

Превью открытых вкладок как в Safari

Привет, ЛОР. Это своего рода посоветуй плагин-костыль тред, потому что нагуглить у меня самому не получилось. Мне очень нравится поведение Safari, когда при тонне открытых вкладок можно сделать жест и увидеть все их в виде плиток (так сильно проще найти то, что нужно, чем скроллить вертикальный список, на который не шибко много чего влезает). Вопрос: Есть ли возможность сделать так же на Firefox? Либо любой другой подход, который сделает поиск вкладки менее болезненным процессом. Заранее спасибо.

 , , , ,

Jefail
()

Не получается поставить Telegram Desktop на KDE Neon.

Доброй ночи, ЛОР. Прошу тапками сильно не бить, за всё время пользования различными дистрами с подобной проблемой сталкиваюсь впервые.
Дано: Последний стабильный KDE Neon, на который я сполз пару часов назад и попытка натянуть сову на глобус поставить из оффициальных реп клиент телеги.

Получаю такой вывод

vsulimov@probook-450-g5:~$ sudo apt install telegram-desktop 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Starting pkgProblemResolver with broken count: 1
Starting 2 pkgProblemResolver with broken count: 1
Investigating (0) telegram-desktop:amd64 < none -> 1.2.17-1 @un puN Ib >
Broken telegram-desktop:amd64 Depends on libopenal1:amd64 < none | 1:1.18.2-2 @un uH > (>= 1.14)
  Considering libopenal1:amd64 0 as a solution to telegram-desktop:amd64 9999
  Re-Instated libopenal-data:amd64
  Re-Instated libopenal1:amd64
Broken telegram-desktop:amd64 Depends on libtgvoip1.0.3:amd64 < none | 1.0.3-3 @un uH > (>= 1.0)
  Considering libtgvoip1.0.3:amd64 0 as a solution to telegram-desktop:amd64 9999
  Re-Instated libtgvoip1.0.3:amd64
Broken telegram-desktop:amd64 Depends on qtbase-abi-5-9-5:amd64 < none @un H >
  Considering libqt5core5a:amd64 3086 as a solution to telegram-desktop:amd64 9999
  Considering libqt5core5a:amd64 3086 as a solution to telegram-desktop:amd64 9999
Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 telegram-desktop : Depends: qtbase-abi-5-9-5
                    Recommends: fonts-open-sans but it is not going to be installed
                    Recommends: libappindicator3-1 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Я понимаю в чём проблема, я не понимаю: Как её можно решить? Заранее всем спасибо за советы и помощь.

 , , , ,

Jefail
()

Аварийное выключение и thermald[1038]: critical temp reached

Привет, ЛОР. Такая ерунда сейчас случилась: Работал себе спокойно и тут хоба, ноутбук выключился, просто резкий cutoff по питанию (важное уточнение, за несколько секунд до этого я стартовал сборку проекта) в journalctl за предыдущий бут увидел последней строкой

thermald[1038]: critical temp reached 
Собственно, я понимаю что произошло, у меня вопрос: Почему так вышло и как это можно исправить? По данному сообщению гуглятся лишь темы, что thermald ватный и не торопится поднимать обороты, доводя до критических отметок (что для меня вообще новость, я думал этим рулит ACPI, а не ОС), соб-но, можно ли это как-то исправить? Мне не привыкать к шуму, пускай лучше гудит сильнее, но температуры будут ниже. Дискасс.

 , , ,

Jefail
()

Фотоаппарат, зима и конденсат.

Привет, ЛОР. Заранее извиняюсь за лютый оффтопик, но вопрос меня очень сильно волнует и чем больше я гуглю, тем больше путаюсь, а тут есть очень толковые люди, надеюсь на вашу помощь. Собственно, решил я недавно заняться фотографией и купил для этого соответствующий обвес (Sony a6500 и набор оптики, вышло дорого, потому так и парюсь) и первый же нюанс всплыл после съемки зимних пейзажей (было где-то -13), зайдя в помещение я понял, что камера покрыта влагой, а стекло запотело, собственно, у меня какого плана вопросы:

1) Насколько конденсат опасен для фотоаппарата / оптики и может ли он её перманентно повредить? Каюсь, химию в школе прогуливал, а мнения в интернете на этот счёт разнятся. Кто-то утверждает, что конденсат - почти дистиллированная вода, диэлектрик, не содержит солей и испаряется без следов, кто-то утверждает обратное и что последствия будут хреновые.

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

Собственно, дискасс, кастую ist76 и скастуйте ещё фотографов пожалуйста, если знаете.

 , , , ,

Jefail
()

Я сделяль (и делюсь)

Привет, ЛОР. Я тут в своё время делал кастомную вьюшку под Android и решил выкатить всё это дело в open-source. Соб-но, исходники с докой и гифками можно посмотреть здесь (Java) и здесь (Kotlin).
Надеюсь кому-нибудь моя работа будет полезна, возможно в целях обучения, возможно для использования в проекте.
P.S. Аргументированная критика приветствуется.

 , , , ,

Jefail
()

Есть ли способ перемаппить SysRq REISUB комбинацию?

Привет, ЛОР. Иногда дерьмо случается и система встаёт колом после недельных аптаймов (в причинах пока до конца разобраться не могу), во избежании потери / повреждения данных перезагружать систему стараюсь через комбинацию SysRq + R E I S U B, но есть проблема, высокие умы инженеров HP выпилили кнопку SysRq с клавиатуры и активируется она через Fn + S, что не позволяет нормально выполнить эту комбинацию, соб-но, вопрос: Есть ли простой способ замаппить свой шорткат на это действие, да так, чтобы он работал всегда, даже когда система повисла наглухо (REISUB с внешней клавиатуры во время фризов работает, но внешняя клавиатура то не всегда с собой есть)

 ,

Jefail
()

Рандомные файлы в домашней директории

Очень странный вопрос на параноидальной почве. Сегодня весь день ставил / настраивал систему, больше всего времени ушло на впиливание отображения бранча в bash prompt В итоге использовал скрипт вот отсюда: https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh

Но вопрос в другом, я не сразу сделал корректно и после обнаружил странные файлы, в хомяке был файл с названием -^, а в одном из проектов \\ У меня такой вопрос: Возможен ли технически кейс, что некорректная конфигурация .bashrc может наплодить такого рандома в хомаяке? Или эти файлы создало что-то другое?

 , , ,

Jefail
()

Про final в Java замолвите слово

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

Первое - классы. Если опираться на трактовку Open Closed принципа, то мы должны иметь возможность отнаследоваться от класса, чтобы расширить его функциональность, потому final классами должны быть как правило только утилитные классы, либо то, что логически по тем или иным причинам не должно использоваться как родитель чего-либо.

Методы - а вот тут уже интереснее, опять же возвращаемся к трактовке Open Closed, правильно ли я понимаю, что все методы класса должны быть помечены как final? Т.е. даже если кто-то отнаследуется от класса, он сможет только докинуть своих методов, но не сможет переопределить то, что уже имеется. Такой же вопрос к методам-реализациям. Если класс, допустим, является реализацией какого-либо интерфейса, должны ли Override методы из этого интерфейса быть final?

Переменные: Локальные - да, если не меняются на протяжении области видимости, в сигнатуре функции судя по всему тоже да, чтобы не было возможности сделать вот так

public void foo(String s) {
    s = "New String";
}

Соб-но, дискасс, а где и как ты, ЛОРовец, используешь final и как видишь данную ситуацию?

 , , ,

Jefail
()

Как рассчитать примерный write limit для SSD?

Соб-но, сабж. Стараюсь делать регулярные бэкапы, но всё же, просто чтобы понимать. Судя по смарту в моём ноуте стоит SAMSUNG MZVLW512HMJP-000H1 на 512 гб. С декабря того года записано 7.07 TB. Я не знаю много это или мало, но это обычный workload для этой системы, вопрос: Сколько он всего протянет и когда стоит задумываться о замене диска?

 , , ,

Jefail
()

L1TF CPU bug present and SMT on, data leak possible.

Привет, ЛОР. Заметил сейчас случайно в dmesg логе такую строку

[Aug30 14:01] L1TF CPU bug present and SMT on, data leak possible. See CVE-2018-3646 and https://www.kernel.org/doc/html/latest/admin-guide/l1tf.html for details.
У меня вот вопрос: Правильно ли я понимаю, что после всех заплаток, которые и так превратили мой процессор в тыкву, они еще хотят, чтобы я HT руками выключил?


Если да, есть ли у кого истории успеха по поводу срача / возврата товара из-за этих аппаратных дыр?

 , , ,

Jefail
()

Товарищ ищет работу тестировщиком (Junior)

Ночи доброй, ЛОР. Один знакомый хочет податься в IT и начать с тестирования, проблема: Сейчас из опыта только теоретический багаж, образование к IT никакого отношения не имеет, потому можно сказать что самоучка. Если есть тут те, кому нужен джун / стажёр на позицию ручного тестирования - дайте знать пожалуйста. Основной целью является получение опыта. Приоритетным направлением является тестирование сайтов / мобильных приложений, но я думаю, что это не принципиально.

По вопросам можно писать мне на почту: v.sulimov <AT> fastmail.fm

 ,

Jefail
()

Можно ли сравнить два буфера через vim -d?

Привет, ЛОР. Очень часто в работе использую vim -d для сравнения запросов от сервера, чудесная штука, но есть у неё один оверхед, надо перед этим запросы в файлы сохранить и потом ей скормить. У меня такой вопрос: В системе ведь есть 2 буфера обмена (1-ый системный, второй, насколько я понимаю, от Xorg), можно ли натравить vim diff на содержимое этих 2х буферов?

 , , , ,

Jefail
()

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