LINUX.ORG.RU

Сообщения Legioner

 

Альтернативы hosted pgadmin

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

Есть какие-то альтернативы? В целом нужно дать некоторым людям возможность работать с БД из браузера, чтобы не устанавливать/настраивать каждому pgadmin, выдавать пароли, открывать порты и тд.

 ,

Legioner
()

Docker, использовать маленький файл для кеширования образа

Есть докер-образ, по сути скачивает с фиксированного URL архив, рядом скачивает файл с контрольной суммой, сверяет контрольную сумму, распаковывает архив. Архив в будущем может меняться (по тому же URL), т.е. его надо периодически пересобирать с --no-cache. Файл достаточно большой. Соответственно хочется, чтобы сначала скачивался маленький файл с контрольной суммой, если он не изменился, то дальше уже ничего и не проверялось, а брались готовые закешированные слои. А вот если маленький файл поменялся, то уже качать большой и тд.

Это всё хочется именно в самом Dockerfile как-то описать, а не внешними скриптами. Есть ли такая возможность?

 

Legioner
()

Apple будет продавать запчасти для физиков

Apple announces Self Service Repair

По-моему это круто. Я ни одного бренда не знаю, который подобным занимается. И мануалы будут, и инструменты и запчасти.

В общем я теперь официально эпплофанатик.

 , ,

Legioner
()

less --no-init не всегда правильно работает

Мне не нравится, что less как бы переключает экран при просмотре длинных файлов. И при выходе из less последний просматриваемый экран исчезает. Например это очень неудобно в psql: я делаю запрос, просматриваю его результаты, нахожу нужную запись, нажимаю q и ожидаю, что текущий экран останется в консоли, чтобы копировать данные из него в следующий запрос. Это всё решается флагом --no-init, а точней такой строчкой в файлах инициализации bash: export LESS="--quit-if-one-screen --no-init".

Но возникает другая проблема: теперь некоторые (не все) программы начинают показывают крякозябры. Например git diff выдаёт

ESC[1mindex ea34e64..c074a9c 100644ESC[m

при этом, например, man работает нормально, с подсветкой и тд.

Есть ли какой-то способ получить и то, что я хочу от less (не стирать последний экран при выходе), и чтобы другие программы не портили вывод.

 

Legioner
()

Придёт ли опен сорс в наш мир?

В виртуальном мире программного обеспечения опен сорс занимает крепкие позиции. Можно спорить о том, занимает ли он лидирующие позиции, но про крепкие - тут спорить не о чем.

В реальном мире всё сложней. Подавляющее большинство устройств - проприетарные. Нет чертежей для изготовления корпусов и других частей устройств. Нет схем плат. Нет прошивок.

При этом у людей на самом деле есть возможности организовывать мелкое несерийное производство. Корпусы можно печатать на 3D-принтерах, которые вполне доступны. Можно пользоваться ЧПУ фрезерными станками, например. Вариантов много. Платы можно изготавливать самостоятельно, можно заказывать довольно дёшево. Паять - ну не просто, но возможно.

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

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

Кстати в мире 3Д-печати зачастую вроде и много бесплатных моделек, но, как я понимаю, не в исходном формате, а в «скомпилированном». Наверное нет культуры и понимания культуры опен-сорс.

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

 

Legioner
()

Изготовление плат в домашних условиях

Посоветуйте технологию для изготовления плат в домашних условиях. Платы будут содержать тонкие дорожки 0.2 мм и два слоя. Бюджет не больше 200к. Особых требований к скорости изготовления или цене платы нет.

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

Про то, что умные люди заказывают в крупных предприятиях или в Китае я в курсе, тема не про это.

 ,

Legioner
()

Чем отличается STM32Fn от STM32Ln?

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

 

Legioner
()

st-flash write не работает

У меня плата NUCLEO-L073RZ. Создал пример с HAL, скомпилировал, получился bin. Когда я эту плату соединяю с компьютером, появляется флешка. Я в эту флешку закинул этот bin, всё сработало, лампочка моргает как положено. Теперь хочу через st-flash записать. Не получается.

$ st-info --probe
Found 1 stlink programmers
  version:    V2J38S27
  serial:     066CFF494849887767255731
  flash:      196608 (pagesize: 128)
  sram:       20480
  chipid:     0x0447
  descr:      L0xx Category 5

$ st-flash write build/stm32cubetest.bin 0x8000000
st-flash 1.7.0
2021-11-03T00:55:19 INFO common.c: L0xx Category 5: 20 KiB SRAM, 192 KiB flash in at least 128 byte pages.
file build/stm32cubetest.bin md5 checksum: 887f85a4d767f3f16d13668ae959e72, stlink checksum: 0x0006629a
2021-11-03T00:55:19 INFO common.c: Attempting to write 4748 (0x128c) bytes to stm32 address: 134217728 (0x8000000)
2021-11-03T00:55:20 INFO common.c: Flash page at addr: 0x08000000 erased
2021-11-03T00:55:20 INFO common.c: Flash page at addr: 0x08000080 erased
2021-11-03T00:55:20 INFO common.c: Flash page at addr: 0x08000100 erased
...
2021-11-03T00:55:20 INFO common.c: Flash page at addr: 0x08001180 erased
2021-11-03T00:55:20 INFO common.c: Flash page at addr: 0x08001200 erased
2021-11-03T00:55:20 INFO common.c: Flash page at addr: 0x08001280 erased
2021-11-03T00:55:20 INFO common.c: Finished erasing 38 pages of 128 (0x80) bytes
2021-11-03T00:55:20 INFO common.c: Starting Flash write for L0
2021-11-03T00:55:20 INFO common.c: Starting Half page flash write for STM32L core id
2021-11-03T00:55:20 INFO flash_loader.c: Successfully loaded flash loader in sram
2021-11-03T00:55:20 INFO flash_loader.c: Clear DFSR
2021-11-03T00:55:20 ERROR flash_loader.c: Flash loader run error
2021-11-03T00:55:20 WARN flash_loader.c: Loader state: R2 0x0 R15 0x0
2021-11-03T00:55:20 WARN flash_loader.c: MCU state: DHCSR 0x1080009 DFSR 0x0 CFSR 0x0 HFSR 0x0
2021-11-03T00:55:20 WARN common.c: l1_stlink_flash_loader_run(0x8000000) failed! == -1
2021-11-03T00:55:20 WARN common.c: 
write_half_pages failed == -1
тут оно висит
^C
[!] send_recv send request failed: LIBUSB_ERROR_BUSY
[!] send_recv STLINK_DEBUG_READREG
2021-11-03T00:55:56 INFO common.c: Go to Thumb mode
[!] send_recv send request failed: LIBUSB_ERROR_BUSY
[!] send_recv STLINK_DEBUG_WRITEREG
[!] send_recv send request failed: LIBUSB_ERROR_BUSY
[!] send_recv STLINK_JTAG_WRITEDEBUG_32BIT
[!] send_recv send request failed: LIBUSB_ERROR_BUSY
[!] send_recv STLINK_JTAG_WRITEDEBUG_32BIT
libusb: error [do_close] Device handle closed while transfer was still being processed, but the device is still connected as far as we know
libusb: error [do_close] A cancellation hasn't even been scheduled on the transfer for which the device is closing
st-flash: os/threads_posix.h:58: usbi_mutex_destroy: Assertion `pthread_mutex_destroy(mutex) == 0' failed.
Aborted (core dumped)

После этого девайс вообще не отвечает и даже reset не помогает, только перетыкивание из USB.

STM32Programmer у меня не запускается, жава падает с коре дампом. Предполагаю, что из-за wayland, пока хочу без него обойтись.

Возможно я неправильно указываю параметр ADDR, но во всех примерах указывают 0x8000000, никаких инструкций по поиску правильного адреса я не нашёл.

Прошивку на st-link который на плате я обновил до последней версии.

stlink у меня из дистрибутива, версия 1.7.0. Судя по гитхабу это последняя.

 

Legioner
()

За браузером будущее

Прям щас сунули в морду рекламу - Keil Studio Cloud. Keil это бренд, это даже я знаю. Вдумайтесь - микроконтролеры, эту вотчину бородатых консольных мужей, теперь будут программировать смузихлёбы со своих макбуков, прямо не вылезая из сафари. Где теперь ваш бог?

 , ,

Legioner
()

А почему микроконтролеры не включают в себя нужную обвязку?

Изучаю вопрос, как правильно подключать микроконтролер на плату и там куча каких-то сложностей. Какие-то конденсаторы, резисторы, дроссели, диодов напридумывали разных.

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

Или я изобрел ардуину?

 ,

Legioner
()

bash, docker, sleep

Есть bash-скрипт, который запускает чего-то там в background и дальше делает sleep 100000d. Смысл в том, что юзер жмет ctrl+c, скрипт завершает выполнение и фоновые процессы прибиваются.

В докере это не работает. На ctrl+c реакции нет, stop не останавливает (ну точней останавливает тупо прибивая, когда таймаут выходит).

Пробовал: trap, trap с короткими sleep в цикле, trap с sleep в фоне и wait.

Последняя попытка:

    trap 'echo trap 0' 0
    trap 'echo trap 1' 1
    trap 'echo trap 2' 2
    trap 'echo trap 3' 3
    trap 'echo trap 13' 13
    trap 'echo trap 15' 15
    trap 'echo trap INT' INT
    trap 'echo trap STOP' STOP
    trap 'echo trap TERM' TERM
#    trap 'jobs -p | xargs --no-run-if-empty kill' STOP
    
#    sleep 100000d || true
    sleep 1 &
    while wait $!
    do
        sleep 1 &
    done

Ничего не работает. Как это правильно сделать?

Т.е. если упростить, то:

test.sh:

#!/bin/sh -eu

trap 'echo trap INT' INT

sleep 100000d || true

Dockerfile

FROM node:16

WORKDIR /root
COPY test.sh .
CMD ./test.sh
docker build -t test .
docker run --rm --name test test

Тут надо, чтобы он на Ctrl+C среагировал, напечатав что-нибудь и остановившись. Или на docker stop test в соседней вкладке. Хотя кажется это одно и то же.

Запускать docker run -t не предлагать. Оно должно в конечном итоге работать как сервис.

 ,

Legioner
()

Чёлка в новых макбуках

Мне кажется, это гениально. Гномовцы как будто знали, интерфейс гнома прямо идеально заточен на чёлку, как раз верхняя панель посредине никак не используется, дату-время перенести правей и всё.

 , ,

Legioner
()

Посоветуйте европейский email-сервис

  1. Достаточно старый и авторитетный.

  2. Бесплатный или с небольшим одноразовым платежом (без подписки).

  3. Без удаления аккаунтов из-за неактивности (-protonmail).

  4. Разрешающий регистрацию из Казахстана (-gmx).

  5. Поддерживающий двухфакторную аутентификацию (пароль + телефон).

  6. Базирующийся исключительно в странах Европы, без Америки и России (-yandex).

 

Legioner
()

Раздербанить odex файл

Имеется apk + odex. Скачал baksmali, запускаю:

java -jar ~/apps/baksmali-2.5.2.jar deodex --api 22 MyApp.odex
Exception in thread "main" org.jf.dexlib2.DexFileFactory$UnsupportedOatVersionException: Unsupported oat version: 45
	at org.jf.dexlib2.DexFileFactory.loadDexContainer(DexFileFactory.java:274)
	at org.jf.baksmali.DexInputCommand.loadDexFile(DexInputCommand.java:153)
	at org.jf.baksmali.DisassembleCommand.run(DisassembleCommand.java:162)
	at org.jf.baksmali.Main.main(Main.java:102)

Автор фиксить отказывается.

Есть какие-нибудь ещё варианты?

Мне надо отреверсить всё это и внести определённые изменения.

 ,

Legioner
()

Хочу залезть в устройство

Имеется устройство (маленькое) с линуксом. У меня есть файл прошивка, на нём 3 линуксовых раздела и 4-й неизвестного типа. Первый раздел это что-то вроде boot, на втором уже видно, что корень. Третий раздел - там какие-то пользовательские программы, это не интересно.

При подключении устройства к компьютеру через USB пишет следующее:

[27475.582317] usb 3-4.4: new high-speed USB device number 13 using xhci_hcd
[27475.684648] usb 3-4.4: New USB device found, idVendor=0525, idProduct=a4a2, bcdDevice= 4.01
[27475.684651] usb 3-4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[27475.684652] usb 3-4.4: Product: RNDIS/Ethernet Gadget
[27475.684653] usb 3-4.4: Manufacturer: Linux 4.1.15+gb63f3f5 with 2184000.usb
[27475.687123] cdc_subset: probe of 3-4.4:2.0 failed with error -22
[27475.689241] rndis_host 3-4.4:2.0 usb0: register 'rndis_host' at usb-0000:00:14.0-4.4, RNDIS device, e2:a5:45:a8:e9:e5
[27475.694102] rndis_host 3-4.4:2.0 enp0s20f0u4u4c2: renamed from usb0

И на компьютере появляется сетевое устройство:

29: enp0s20f0u4u4c2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
    link/ether fe:5d:a4:a9:26:68 brd ff:ff:ff:ff:ff:ff

Хочется как-то залезть внутрь того линукса. Можно ли из полученной информации что-то сварганить?

Также устройство обладает своим WiFi-модулем и может само подключаться к сети.

В прошивке есть ssh, на порту висит. root-пароль сломать сходу не получилось, из прошивки вытащил его хеш, но джон не взял, видимо не root:root. Ещё побрутю.

В целом его писали на отвали, уже понял, как можно ему скормить «обновление», которое сделает что мне угодно, но там ещё покопаться придётся, может можно как-то проще?

 

Legioner
()

Java в докере жрёт много памяти

По крайней мере по словам докера. docker stats выдаёт, что контейнер жрёт 322 MiB. При этом Java запущена с -Xmx128M, а средства Java говорят, что и из этого используется лишь половина. Т.е. реально Java потребляет 60 MiB. Откуда всё остальное?

Java 17. Флажки, относящиеся к памяти: -XX:G1PeriodicGCInterval=900000 -Xms16m -Xmx128m.

 ,

Legioner
()

secure boot - ложная безопасность?

Тут утверждается, что grub не проверяет подпись initramfs. То бишь любой может просто смонтировать /boot, подменить там initramfs на такой, который запоминает введённый пароль помимо расшифровки диска, и таким образом пароль утечёт.

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

Выходит, что маздай безопасней линукса в этом аспекте? Диверсия?

 , ,

Legioner
()

ИБП SVC

Имеется ИБП SVC RTS-3KL-LCD. Подключается через RS-232, который через USB-переходник соединён с сервером. По ссылка «скачать драйвер» скачивается архив с вендовыми программами:

  36K Dec 28  1998  CLOSEAPP.EXE
    8 Aug 29  2011  PWD.txt
 2.7M Nov 23  2015 'UPS Power Monitor Users Manual Ver 1.17_C.pdf'
 797K Dec 16  2016  UPSPowerMTR_V1.80_C.CHS
 798K Dec 16  2016  UPSPowerMTR_V1.80_C.ENU
 2.7M Dec 16  2016  UPSPowerMTR_V1.80_C.exe

Запускать их не пробовал, винды нет. Что за программа - вообще не понимаю, откуда она, кто её сделал. Собственно задача стандартная - выключать сервер, когда у батареи малый заряд. Как подступиться? Может кто работал с такой фирмой?

 svc,

Legioner
()

Менеджер паролей без хранения данных

Покритикуйте идею.

В чём суть: создать менеджер паролей, который будет работать с мастер-паролем, но без самой базы.

Самый тупой вариант: echo 'Legioner:linux.org.ru:m@sterP@55w0rd' | sha256sum но он не позволяет менять пароль.

Чтобы менять пароль, нужно добавить ещё один компонент. Назовём его token. Т.е. получается такая формула: echo 'token:Legioner:linux.org.ru:m@sterP@55w0rd' | sha256sum. Если мы хотим поменять пароль, мы проcто меняем token. Причём сам по себе token может быть публичный, его ни от кого скрывать не надо. Надо просто, чтобы он хранился на самом сайте, ведь не запомнишь все эти токены.

В случае лора токен можно хранить просто в профиле пользователя. И по сути проблема решена. Но куча сайтов не предоставляют такого функционала.

По сути нужно публичное хранилище ассоциаций вроде Legioner:linux.org.ru -> token. И тут я застопорился, т.к. не знаю таких хранилищ. Конечно можно организовать сервис на пожертвования, но это выглядит не слишком надёжным.

Один из вариантов это использовать биткоин. Как известно, в блокчейне биткоина можно навечно сохранять любую информацию. Я не нашёл расчётов именно для биткоина, для эфира я нашёл расчёты: Costs Of Storing Data On The Blockchain. У них получилось примерно рубль за байт. Если хранить sha-256 хеш (32 байта) и ещё 32 байта токен, то получится примерно 70 рублей за пароль. Дороговато. Если хранить 500 паролей и менять каждый пароль раз в год, получается 35 000 рублей в год. Причём цена привязана к цене эфира. К примеру в статье расчёты для $500 за эфир, сейчас он стоит $3000, т.е. надо ещё на 6 умножать.

Я плохо знаю, как работают технологии вроде IPFS, DHT. Нет ли какого-то способа хранить 32 килобайта на пользователя, причём это должно быть 100% надёжно, как можно более дёшево, не иметь единых точек отказа.

 ,

Legioner
()

Java 17 Released

Кто самый умный - сделайте новость. С https://jdk.java.net/17/ уже качаются релизные бинарники, несмотря на то, что релиз завтра.

./jdk-17/bin/java -version
openjdk version "17" 2021-09-14
OpenJDK Runtime Environment (build 17+35-2724)
OpenJDK 64-Bit Server VM (build 17+35-2724, mixed mode, sharing)

 ,

Legioner
()

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