LINUX.ORG.RU

Сообщения LongLiveUbuntu

 

OpenVino и OpenCV в Gentoo

Я в курсе, что модуль OpenVINO уже давно часть OpenCV и вроде как даже собирается вместе с ней без предварительных условий, то есть это не contrib часть проекта. Внимание, вопрос: почему в Gentoo в ебилде этот модуль до сих пор недоступен? Я видел запись в bugzilla с просьбой его туда включить, но похоже, воз и ныне там. Или мне надо OpenCV как в старину руками собирать?

OpenVINO мне нужен для корректной сборки GOCV, чтобы можно было нормально тестировать, в том числе.

 ,

LongLiveUbuntu
()

Firefox падает с сегфолтом

[unhandlable oom] Failed to mmap, likely no more mappings available /var/tmp/portage/www-client/firefox-131.0.3/work/firefox-131.0.3/memory/build/mozjemalloc.cpp : 1763Exiting due to channel error.

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

emerge --info

Portage 3.0.66.1 (python 3.12.6-final-0, default/linux/amd64/23.0/split-usr/desktop, gcc-14, glibc-2.40-r5, 6.6.51-gentoo-dist x86_64)
=================================================================
System uname: Linux-6.6.51-gentoo-dist-x86_64-AMD_Ryzen_7_5700X_8-Core_Processor-with-glibc2.40
KiB Mem:    32785592 total,  15772468 free
KiB Swap:   41634808 total,  41634552 free
Timestamp of repository gentoo: Mon, 21 Oct 2024 11:33:30 +0000
Head commit of repository gentoo: 76c9b6f4d660ed7039046d94a8aedc753cb1cbb4

Timestamp of repository gentoo-zh: Mon, 21 Oct 2024 09:33:26 +0000
Head commit of repository gentoo-zh: 6d9ea5f60bc7e3055ac05b9c2ab064ef4a6bef29

Timestamp of repository java: Tue, 08 Oct 2024 15:50:51 +0000
Head commit of repository java: 6562b8b76b34a67667b8267d28fa14b0d9b1c5ec

Timestamp of repository qt: Mon, 14 Oct 2024 12:50:27 +0000
Head commit of repository qt: 3abf3df5f33c90bfc5195bdaeaa53b8b570bdce0

Timestamp of repository steam-overlay: Tue, 08 Oct 2024 15:50:59 +0000
Head commit of repository steam-overlay: 1dc5a0d57c688eacd472d714a0621b6c277a9385

Timestamp of repository supertux88: Mon, 21 Oct 2024 01:03:15 +0000
Head commit of repository supertux88: 33594f8a469acf7385bef77c4dc986b137a0962f

sh bash 5.2_p37
ld GNU ld (Gentoo 2.43 p2) 2.43.1
app-misc/pax-utils:        1.3.8::gentoo
app-shells/bash:           5.2_p37::gentoo
dev-build/autoconf:        2.13-r8::gentoo, 2.72-r1::gentoo
dev-build/automake:        1.16.5-r2::gentoo, 1.17-r1::gentoo
dev-build/cmake:           3.30.5::gentoo
dev-build/libtool:         2.5.3::gentoo
dev-build/make:            4.4.1-r100::gentoo
dev-build/meson:           1.5.2::gentoo
dev-java/java-config:      2.3.4::gentoo
dev-lang/perl:             5.40.0::gentoo
dev-lang/python:           3.10.15_p1::gentoo, 3.11.10_p1::gentoo, 3.12.6_p4::gentoo
dev-lang/rust:             1.82.0::gentoo
sys-apps/baselayout:       2.15::gentoo
sys-apps/openrc:           0.55.1::gentoo
sys-apps/sandbox:          2.39::gentoo
sys-devel/binutils:        2.43-r1::gentoo
sys-devel/binutils-config: 5.5.2::gentoo
sys-devel/clang:           18.1.8::gentoo, 19.1.2::gentoo
sys-devel/gcc:             14.2.1_p20240817::gentoo
sys-devel/gcc-config:      2.11::gentoo
sys-devel/lld:             18.1.8::gentoo
sys-devel/llvm:            18.1.8-r4::gentoo, 19.1.2::gentoo
sys-kernel/linux-headers:  6.6-r1::gentoo (virtual/os-headers)
sys-libs/glibc:            2.40-r5::gentoo
Repositories:

gentoo
    location: /var/db/repos/gentoo
    sync-type: git
    sync-uri: https://github.com/gentoo-mirror/gentoo.git
    priority: -1000
    volatile: False

free2all
    location: /var/db/repos/free2all
    masters: gentoo
    volatile: False

gentoo-zh
    location: /var/db/repos/gentoo-zh
    sync-type: git
    sync-uri: https://github.com/gentoo-mirror/gentoo-zh.git
    masters: gentoo
    volatile: False

java
    location: /var/db/repos/java
    sync-type: git
    sync-uri: https://github.com/gentoo-mirror/java.git
    masters: gentoo
    volatile: False

qt
    location: /var/db/repos/qt
    sync-type: git
    sync-uri: https://github.com/gentoo-mirror/qt.git
    masters: gentoo
    volatile: False

steam-overlay
    location: /var/db/repos/steam-overlay
    sync-type: git
    sync-uri: https://github.com/gentoo-mirror/steam-overlay.git
    masters: gentoo
    volatile: False

supertux88
    location: /var/db/repos/supertux88
    sync-type: git
    sync-uri: https://github.com/gentoo-mirror/supertux88.git
    masters: gentoo
    volatile: False

Binary Repositories:

gentoobinhost
    priority: 1
    sync-uri: https://gentoo.osuosl.org/releases/amd64/binpackages/23.0/x86-64

ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=znver3 -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt /usr/share/maven-bin-3.9/conf /var/lib/i2pd/certificates"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-march=znver3 -O2 -pipe"
DISTDIR="/home/aspnet"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR XDG_STATE_HOME"
FCFLAGS="-march=znver3 -O2 -pipe"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance buildpkg-live config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync merge-wait multilib-strict network-sandbox news parallel-fetch pid-sandbox pkgdir-index-trusted preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-march=znver3 -O2 -pipe"
GENTOO_MIRRORS="http://ftp.byfly.by/pub/gentoo-distfiles/     https://mirror.yandex.ru/gentoo-distfiles/     http://mirror.yandex.ru/gentoo-distfiles/"
LANG="ru_RU.UTF-8"
LC_ALL="ru_RU.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs"
LEX="flex"
LINGUAS="ru"
MAKEOPTS="-j9"
PKGDIR="/var/cache/binpkgs"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
SHELL="/bin/bash"
USE="X a52 aac acl acpi alsa amd64 apparmor bash-completion branding bzip2 cairo cdda cet crypt cups dbus dri dts dvd dvdr elogind encode exif flac gdbm gif gnome-keyring gpm gtk gui iconv icu jpeg kf6compat lcms libnotify libtirpc lto mad mng mp3 mp4 mpeg multilib ncurses nls ogg opengl openmp pam pango pcre pdf pipewire png policykit ppds pulseaudio qml qt6 readline sdl seccomp sound spell split-usr ssl startup-notification svg symlink test-rust tiff truetype udev udisks unicode upower usb vorbis vulkan wxwidgets x264 x265 xattr xcb xft xml xv xvid zlib" ABI_X86="64" ADA_TARGET="gcc_12" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_anon authn_dbm authn_file authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir env expires ext_filter file_cache filter headers include info log_config logio mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2 aes avx avx2 f16c fma3 pclmul popcnt rdrand sha sse3 sse4_1 sse4_2 sse4a ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax navcom oceanserver oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 tsip tripmate tnt ublox" GUILE_SINGLE_TARGET="3-0" GUILE_TARGETS="3-0" INPUT_DEVICES="evdev" KERNEL="linux" L10N="ru" LCD_DEVICES="bayrad cfontz glk hd44780 lb216 lcdm001 mtxorb text" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php8-2" POSTGRES_TARGETS="postgres16" PYTHON_SINGLE_TARGET="python3_12" PYTHON_TARGETS="python3_12" RUBY_TARGETS="ruby32" VIDEO_CARDS="nvidia" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipp2p iface geoip fuzzy condition tarpit sysrq proto logmark ipmark dhcpmac delude chaos account"
Unset:  ADDR2LINE, AR, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CPPFLAGS, CTARGET, CXX, CXXFILT, ELFEDIT, EMERGE_DEFAULT_OPTS, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, INSTALL_MASK, LD, LFLAGS, LIBTOOL, MAKE, MAKEFLAGS, NM, OBJCOPY, OBJDUMP, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PYTHONPATH, RANLIB, READELF, RUSTFLAGS, SIZE, STRINGS, STRIP, YACC, YFLAGS

eix www-client/firefox

Установленные версии:  131.0.3(rapid)(15:54:02 18.10.2024)(X dbus gmp-autoupdate hwaccel jumbo-build lto pulseaudio system-av1 system-harfbuzz system-icu system-jpeg system-libevent system-libvpx system-webp -clang -debug -eme-free -gnome-shell -hardened -jack -libproxy -openh264 -pgo -selinux -sndio -system-png -telemetry -valgrind -wayland -wifi L10N="ru -ach -af -an -ar -ast -az -be -bg -bn -br -bs -ca -ca-valencia -cak -cs -cy -da -de -dsb -el -en-CA -en-GB -eo -es-AR -es-CL -es-ES -es-MX -et -eu -fa -ff -fi -fr -fur -fy -ga -gd -gl -gn -gu -he -hi -hr -hsb -hu -hy -ia -id -is -it -ja -ka -kab -kk -km -kn -ko -lij -lt -lv -mk -mr -ms -my -nb -ne -nl -nn -oc -pa -pl -pt-BR -pt-PT -rm -ro -sc -sco -si -sk -skr -sl -son -sq -sr -sv -szl -ta -te -th -tl -tr -trs -uk -ur -uz -vi -xh -zh-CN -zh-TW" LLVM_SLOT="18 -17")
Кто с таким сталкивался и как фиксил?

 ,

LongLiveUbuntu
()

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

Интересует обычный бытовой Wi-Fi роутер. Что хочется: умеренная цена, максимально «тупой» способ настройки подключения без фирменных приложений и прочего шлака, в стиле старых D-Link'ов. Главное, чтобы поддерживал современные протоколы подключения и/или простую перешивку на DD-WRT / Open WRT .

 ,

LongLiveUbuntu
()

Завести голосовую связь в Discord

Или предложите аналог для длительных голосовых тим-матчей.

Суть такова: у нас группа чтецов книг, человек 10-12, делаем что-то вроде аудиоспектаклей. Для репетиций пользуем Дискорд, так как удобно: хорошая передача звука, режим стримера, иные плюшки. После роскомнадзор работать стало невозможно: интерфейс еще удалось запустить, а вот голосовую связь нет, а она критически важна. Что можете предложить, уважаемые ЛОРчане?

Линукс тут при том, что работает он у меня в Гентушечке.

Всем заранее спасибо за помощь.

 , ,

LongLiveUbuntu
()

OpenCV и многопоточность

Решил я поиграться с OpenCV. Взял у них один из примеров, скомпилировал с флажками по дефолту (-O2 -g), запустил, получаю вот это:

[ INFO:0@0.168] global registry_parallel.impl.hpp:96 ParallelBackendRegistry core(parallel): Enabled backends(3, sorted by priority): ONETBB(1000); TBB(990); OPENMP(980)
. Я так понимаю, тут сразу подключается многопоточность через указанные библиотеки. Обрадовался я, собрал на своём старом ноутбуке из исходников
cmake -S . -B build/ -DCMAKE_PREFIX_INSTALL=/usr/local -DWITH_OPENMP=ON -DWITH_TBB=ON
, компилирую там, запускаю - ничего подобного нет и по ощущениям в одном потоке сразу работает. Процессор ноутбука вполне многопоточный: Intel Core i3 2330m. Что я делаю не так при сборке? Хотелось бы многопоточность из коробки, как в Генте.

 ,

LongLiveUbuntu
()

По следам демонов OpenRC

Решил я в своем демоне вынести опции конфигурации в /etc/conf.d, как и должно быть. Глянул как это делали на github с каждым демоном и впал в когнитивный диссонанс: как именно правильно передавать опции демонизируемой программе? Как быть, если для нее нужно command_background=true? В тред призываются опытные админы и разработчики Gentoo.

Пока вид /etc/init.d/byedpi такой:

name="ByeDPI"

command=/usr/bin/ciadpi
pidfile="/run/${RC_SVCNAME}.pid"
logfile="/var/log/${RC_SVCNAME}.log"

start() {
        local opts source
        if [ -n "${BYEDPI_OPTS}"]; then
                opts=${BYEDPI_OPTS}
                source="@SYSCONFIGDIR/conf.d/{RC_SVCNAME}"
                  fi
        ebegin "Starting settings daemon to $opts from $source"
        command "$opts"
        eend $? "Failed to start daemon"
        command_background=true
}                                            

 , ,

LongLiveUbuntu
()

Смешиваются источники пакетов для Ubuntu

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

E: Failed to fetch http://ru.archive.ubuntu.com/ubuntu/dists/noble/main/binary-armhf/Packages  404  Not Found [IP: 213.180.204.183 80]
E: Failed to fetch http://ru.archive.ubuntu.com/ubuntu/dists/noble-updates/main/binary-arm64/Packages  404  Not Found [IP: 213.180.204.183 80]
E: Failed to fetch http://ru.archive.ubuntu.com/ubuntu/dists/noble-backports/universe/binary-arm64/Packages  404  Not Found [IP: 213.180.204.183 80]
E: Failed to fetch http://security.ubuntu.com/ubuntu/dists/noble-security/main/binary-arm64/Packages  404  Not Found [IP: 185.125.190.82 80]
E: Some index files failed to download. They have been ignored, or old ones used instead.
. Вопрос: откуда это взялось, если в ubuntu.sources я ничего не менял, а в ports.sources у меня это:
Types: deb
Architectures: arm64
URIs: http://ports.ubuntu.com/ubuntu-ports
Suites: noble
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Как заставить его искать компоненты в правильных местах? Пробовал удалять кэш индексов - не работает. Что еще можно сделать? Да, у меня остались огрызки от armhf, которые никак удаляться не хотят. например, gcc-14-base - как с этим быть?

 ,

LongLiveUbuntu
()

Не срабатывает кросскомпиляция в CMake (не находит тулчейны)

В чем состоит проблема: мне надо перебрать некий пакет под архитектуру arm-linux-gnueabi. Как умная Маша собираю себе с помощью crossdev нужный тулчейн: crossdev -S -t arm-linux-gnueabi. Ок. Потом в директории искомого пакета делаю

cmake -S . -B build/ -DCMAKE_TOOLCHAIN_FILE=./platforms/linux/arm-gnueabi.toolchain.cmake
, а в ответ оно мне такое:
-- The CXX compiler identification is GNU 14.2.1
-- The C compiler identification is GNU 14.2.1
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - failed
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ - broken
CMake Error at /usr/share/cmake/Modules/CMakeTestCXXCompiler.cmake:73 (message):
  The C++ compiler

    "/usr/bin/c++"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: '/home/den/src/opencv/opencv-4.10.0/build/CMakeFiles/CMakeScratch/TryCompile-M78Otx'
    
    Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_16743/fast
    /usr/bin/gmake  -f CMakeFiles/cmTC_16743.dir/build.make CMakeFiles/cmTC_16743.dir/build
    gmake[1]: вход в каталог «/home/den/src/opencv/opencv-4.10.0/build/CMakeFiles/CMakeScratch/TryCompile-M78Otx»
    Building CXX object CMakeFiles/cmTC_16743.dir/testCXXCompiler.cxx.o
    /usr/bin/c++   -mthumb  -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi  -fPIE -o CMakeFiles/cmTC_16743.dir/testCXXCompiler.cxx.o -c /home/den/src/opencv/opencv-4.10.0/build/CMakeFiles/CMakeScratch/TryCompile-M78Otx/testCXXCompiler.cxx
    c++: ошибка: unrecognized command-line option «-mthumb»
    gmake[1]: *** [CMakeFiles/cmTC_16743.dir/build.make:78: CMakeFiles/cmTC_16743.dir/testCXXCompiler.cxx.o] Ошибка 1
    gmake[1]: выход из каталога «/home/den/src/opencv/opencv-4.10.0/build/CMakeFiles/CMakeScratch/TryCompile-M78Otx»
    gmake: *** [Makefile:127: cmTC_16743/fast] Ошибка 2
    
    

  

  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:127 (enable_language)


-- Configuring incomplete, errors occurred!

Смотрю, что за /usr/bin/c++ - так и есть, это основной компилятор системы. То есть ему пофигу, хочу я сборку на arm или не хочу. А мне надо. Как победить сие?

Да, параметр --toolchain тоже не пашет, я проверял.

Всем спасибо.

Решение: Не срабатывает кросскомпиляция в CMake (не находит тулчейны) (комментарий)

 ,

LongLiveUbuntu
()

Подружить Acer xv275k с linux

Исходные данные. У меня: Mate 1.28, Xorg 1.21, монитор подключен по HDMI.

В чем суть: по документации он может в частоту разрешения до 160 Hz, на деле выставляется не больше 60 Hz. Соответственно, очень неприятно для глаз. У кого есть истории успеха в настройке сабжевого монитора?

Всем спасибо.

 

LongLiveUbuntu
()

Отладка демона в OpenRC

Пишу демона для некоей программы. Скрипт выглядит так:

#!/sbin/openrc-run
# Copyright (c) 2007-2015 The OpenRC Authors.
# See the Authors file at the top-level directory of this distribution and
# https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS
#
# This file is part of OpenRC. It is subject to the license terms in
# the LICENSE file found in the top-level directory of this
# distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE
# This file may not be copied, modified, propagated, or distributed
# except according to the terms contained in the LICENSE file.

name="ByeDPI"

command=/usr/bin/ciadpi
pidfile="/run/${RC_SVCNAME}.pid"
logfile="/var/log/${RC_SVCNAME}.log"
byedpi_args="--fake -1"
command_args="${byedpi_args}"
#supervisor=supervise-daemon
depend() {
    need net
}
Проблема в том, что хоть при запуске все стартует, статус демона по-прежнему остается starting, как будто он не может стартовать до конца. Делал по официальному руководству Gentoo для OpenRC. Где может быть затык? Всем спасибо.

Перемещено hobbit из general

 , ,

LongLiveUbuntu
()

Каскады iferr: как живете с ними?

Не секрет, что практически все функции в Golang возвращают ошибки. И тут два пути: или игнорировать или обрабатывать в iferr. Игнорировать почти никогда не получается, так что выбор невелик и код превращается в

val, err := SomeFunc()
if err != nil {
..do some..
}
. Да, это правильно, но это ж на каждый чих проверка получается. Нельзя ли сделать для этого условный defer или как-то иначе скрыть явную обработку ошибок? Может, кодогенерация поможет или еще что? Как вы пишете максимально чистый и компактный код?

 ,

LongLiveUbuntu
()

Реляционные и NoSql СУБД

Имеет ли смысл менять реляционную СУБД на нереляционную? В чем и когда выгода от условной Mongo DB или Couch DB по сравнению с MySQL, Postgres, whatever?

 ,

LongLiveUbuntu
()

А в России сейчас есть годные виртуальные банковские карты?

Для чего нужно: оплата в интернет-магазинах, чтобы основную не палить, подписки и так далее. Что от карты требуется: чтобы везде принимали с нее оплату, чтобы не было платы за обслуживание.

 ,

LongLiveUbuntu
()

Кто должен обрабатывать panic: вызывающий или вызываемый?

Привет всем. Задумался я тут о корректной обработке паник в golang. Предположим у меня есть функция foo, где инициируется паника:

func foo() {
...
if some {
   panic(reason)
}
}
func bar() {
  ...
  foo()
...
}
, где идеологически более правильно делать recover: прямо в foo или можно в bar (и нужно)?

 , ,

LongLiveUbuntu
()

Сценарии развертывания приложения

Привет всем. Мы можем описать контейнер с приложением, например, в Dockerfile, А как быть с условным развертыванием? Например я даю команду на деплой, запускаются тесты и только если они все до единого успешны, стартует инстанс с приложением. С помощью чего лучше такое описывать? Желательно без привязки к отдельным сервисам типа гитхаб/гитлаб.

Всем спасибо.

 , , условное развертывание

LongLiveUbuntu
()

Развалился soft raid 1

Как получилось. Делай раз: цепляю к WD RED новый WD GREEN того же размера. Делай два: размечаю WD GREEN как /dev/sdb1 типа RAID auto detect Делай три: делаю mdadm /dev/md0 --add /dev/sdb1 на что получаю, что размер слишком мало, хотя по факту тот же. Делаю mdadm /dev/md0 --add /dev/sdb, ок, начинает синкаться, я в недоумении. Делай четыре: не дождавшись конца синка, выключаю машину, типа завтра до соберётся. Делай пять: включил машину, получил неработающий массив. При чем исходный раздел жив, просто массив не стартует. Если сделать mdadm --examine /dev/sdb1: No md superblock detected on /dev/sdb1. На /dev/sda1 всё в порядке. Что в таком случае делать, господа? mdadm --create заново с одним диском и надеяться, что соберёт правильно, а потом добавить второй? Что посоветуете?

 ,

LongLiveUbuntu
()

Какие ORM для Golang вы используете в продакшене?

И используете ли вообще? Какие тут best practicies?

 ,

LongLiveUbuntu
()

ApplyInterface из gorm.io/gen падает с ошибкой

Привет. Осваиваю генерацию запросов. Делаю по ману так:

type Person struct {
	gorm.Model
	Name string `"gorm:not null"`
	Age  int
}

type IPerson interface {
	FilterWithName(name string) (gen.T, error)
}
, дальше в main делаю:
gormDb, err := gorm.Open(sqlite.Open("test.gorm"), &gorm.Config{})
	if err != nil {
		panic(err)
	}
	g := gen.NewGenerator(gen.Config{
		OutPath: "./query",
		Mode:    gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface,
	})
	err = gormDb.AutoMigrate(model.Person{})
	if err != nil {
		fmt.Println(err)
	}
	g.UseDB(gormDb)
	g.ApplyBasic(model.Person{})
	g.ApplyInterface(func(model.IPerson) {}, model.Person{})
	g.Execute()
. Проблема в том, что оно сыпется с паникой на вызове ApplyInterface с сообщением check interface fail: sql [] build err:sql is null, По идее такого быть не должно. Кто сталкивался и как лечить? Или может вообще обойтись без gorm.io/gen? Всем спасибо.

 ,

LongLiveUbuntu
()

Не срабатывает канал

Собственно, упражняюсь с горутинами. Есть такой код:

func main() {
	var line chan string = make(chan string)
	var quit chan int = make(chan int)
	var input string

	go func() {
		for {
			fmt.Scan(&input)
			if input == "exit" {
				quit <- 0
				break
			}
			go calc(line, quit, input)
		}
	}()
	for str := range line {
		fmt.Println(str)
	}
}

func calc(line chan string, quit chan int, s string) {
	defer close(line)
	defer close(quit)
	select {
	case line <- s:
		line <- "Echo " + <-line
	case <-quit:
		line <- "Quit"
		return
	}
}

В целом всё хорошо, кроме выхода из горутины. Если ввожу «exit», получаю вот такое сообщение о дедлоке:

fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan receive]:
main.main()
        main.go:22 +0x11d

goroutine 6 [chan send]:
main.main.func1()
        main.go:16 +0x125
created by main.main in goroutine 1
        main.go:12 +0xb9
exit status 2
. Такое впечатление, что он пытается прочитать из канала text и не может. При этом все равно, есть там функции close или нет. Как аккуратно в данном случае завершить горутину?

 

LongLiveUbuntu
()

Разыскивается корпус.

Дано: высота не больше 45 см, ширина где-то 20, длина в пределах разумного. Если будет три места под HDD - совсем хорошо. Из критичного: масса не больше 5 кг - планируются перевозки из дома за город и обратно; хорошая защита от пыли.

Если кто видел такое чудо и знает где купить, буду рад ссылкам.

 ,

LongLiveUbuntu
()

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