И это всё МОЁ

Давным давно, когда локализация в линуксе настраивалась через ж.пу, настроил на рабочем десктопе переключатель раскладки клавиатуры так, что лампочка scroll lock работает как индикатор, т.к. нормального индикатора раскладки в линуксе в то время не было. Прошли годы. Многое в этом мире изменилось. Венда в ж.пе, линукс десктоп рулит в галактике. В гноме теперь есть нормальный индикатор раскладки, scroll lock больше не нужен. Недавно, дай, думаю, верну скрол локу его нормальную функцию. Не то, чтобы сильно нужно, просто для порядку. И в упор не помню, как это сделать. В gnome settings такой опции нет. setxkbmap -option вроде возвращает всё взад, но только на одну сессию. В каком конфиге этот grp_led запрятан в гноме?









 








И это всё МОЁ

Редкий случай суда не из-за прав на использование (копирование, распространение), а из-за признания кого-то автором. Кто прав, кто виноват - хз, но вот описание https://habr.com/ru/news/t/469069/

Ъ: Дело в РФ. Из одной фирмы внезапно уволился гендир с сотрудниками и основали другую фирму и код типа их. В первой с этим не согласен.

Пикантно, что вроде код при этом Open Source (не проверял)








 








И это всё МОЁ

24 сентября 2019г. на сайте разработчика появилась запись о релизе DNS-сервера KnotDNS 2.8.4. Разработчик проекта — чешский регистратор доменных имён CZ.NIC. KnotDNS является высокопроизводительным DNS-сервером, поддерживающим все возможности DNS. Написан на языке C и распространяется под лицензией GPLv3.

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

Среди возможностей сервера:

  • добавление и удаление зон на лету;
  • передача зон между серверами;
  • DDNS (динамические обновления);
  • NSID (RFC 5001);
  • расширения EDNS0 и DNSSEC (включая NSEC3);
  • ограничения интенсивности ответов (RRL)


Новшества версии 2.8.4:

  • автоматическая загрузка записей DS (Delegation of Signing) в родительскую DNS-зону при помощи DDNS;
  • в случае проблем с сетевым соединением входящие запросы IXFR больше не преобразуются в AXFR;
  • улучшенная проверка отсутствующих записей GR (Glue Record) с адресами DNS-серверов, определённых на стороне регистратора.







 ,








И это всё МОЁ

В связи с недавней новостью (Bitbucket прекращает поддержку mercurial) стало интересно, какими системами контроля версий пользуются пользователи LOR. Скорее всего первое место по популярности займёт git, но это не снижает ценности других систем в зависимости от потребностей в рамках работы над каким-либо проектом.


Постарался внести в список наиболее часто упоминаемые, как мне кажется, VCS. Доступен мультивыбор.


p.s.

Вариант «храню архивы, не пользуюсь VCS» включает в себя и просто создание копий директорий и/или файлов без архивирования.







Git2
Azure DevOps (Team Foundation) Server0
Bazaar0
CVS0
Darcs0
Dat0
Fossil0
Mercurial (Hg)0
Monotone0
Perforce0
Subversion (SVN)0
другая VCS (в комментариях)0
храню архивы, не пользуюсь VCS0
не храню промежуточные состояния проекта0
Всего голосов: 2
Всего проголосовавших: 2




 








И это всё МОЁ

Привет всем!

Есть, значит, у меня картинка и матрица аффинных преобразований для неё. Нужно исказить картинку и обрезать под требуемый размер. Сейчас это делается так:

result = cv2.warpAffine(img, affine_matrix, (target_w, target_h), borderValue=0.0)
и всё работает. Но не быстро, т.к. на процессоре. В приложении много где используется фреймворк MXNet, который может ускоряться на GPU. Прямого аналога для warpAffine я там не нахожу. Результаты гугления по теме очень скудны, нашлось только немного документации c одним примером. В принципе, это то, что нужно, замена выглядит как-то так:
grid = mx.ndarray.GridGenerator(data=affine_matrix, transform_type='affine', target_shape=(original_h, original_w))
img_nchw = mx.ndarray.array(img)
img_nchw = img_nchw.transpose((2, 0, 1))
img_nchw = mx.ndarray.expand_dims(img_nchw, 0)
result = mx.ndarray.BilinearSampler(img_nchw, grid)
(Понятно, что картинку потом надо превести к прежнему виду, сделать transpose, squeeze...)

Но есть большая проблема: GridGenerator надо передавать совсем не такую матрицу, как в warpAffine. Некоторые элементы матрицы достаточно понятно преобразуются в вид для GridGenerator. Например, в warpAffine увеличение в два раза задаётся как 2, а для GridGenerator - 0.5. А вот с коэффициентами для искажений не понятно совсем, подобрать их не получается.

Может быть кому-то попадалась внятная документация по mx.ndarray.GridGenerator с примерами?

P.S.: Да, можно найти другие варианты, вместо MXNet для издевательств над картинками силами GPU. Но не хочется увеличивать количество зависимостей. Кроме того, MXNet используется много для чего и важно сохранить контекст размещения данных, т.е. чтобы массивы не надо было пересоздавать.








 , , , ,








И это всё МОЁ

YADRO - продуктовая IT-компания (250+ чел.), мы разрабатываем и производим серверы и системы хранения данных.
Мы продолжаем расти и сейчас расширяем команду системной разработки, которая занимается обеспечением менеджмента компонентов СХД, спроектированной в нашей компании.
О некоторых компонентах данной системы можно почитать в блоге YADRO на Хабре - https://habr.com/ru/company/yadro/. ПО работает на storage контроллере под управлением GNU/Linux и активно взаимодействует как с аппаратными компонентами системы, так и системами менеджмента высокого уровня. Особый интерес вызывает наличие опыта написания системных демонов GNU/Linux и модулей ядра и/или большое желание развиваться в этом направлении. Обещаем работу в классной профессиональной команде и вал интересных задач!

Примеры задач, которые придется решать:

— Настройка и доработка различных подсистем ядра Linux;

— Разработка драйверов для работы с аппаратными компонентами;

— Написание, доработка и портирование компонентов под архитектуру ppc64;

— Продвижение наработок в «upstream»;

Мы точно найдем общий язык, если вы:

— Уверенно знаете С (C++ у нас не используется) и используете его более 2-х лет;

— Разбираетесь в устройстве ядра Linux и имеете опыт написания драйверов;

— Умеете писать системные приложения и демоны под GNU/Linux;

— Имеете хорошее представление об аппаратном обеспечении современного сервера (Организация памяти, шин данных, систем ввода-вывода);

— Знаете английский на уровне чтения и написания технической документации;

— Знакомы с Python для быстрого прототипирования;

Мы предлагаем:

— Красивый и удобный лофт-офис в БЦ «Трехгорная мануфактура», 10-15 мин. пешком от м.1905 года/ Краснопресненская;

— ЗП 100 000р. - 200 000р., фикс (конечно же полностью «белый»;) + бывают премии по результатам mailstone'ов проекта;

— ДМС, включающая стоматологию, госпитализации, страхование во время путешествий;

— Традиция «Лекторий», в рамках которой приглашенные эксперты и наши специалисты на регулярной основе делятся профессиональным опытом из различных областей науки;

— Внутренняя программа поддержки инноваций: cистема премирования за научные достижения, публикацию статей и регистрацию патентов;

Вопросы и резюме можно и нужно направлять HR Yadro Алине Кочетовой любым удобным способом:

TG: @IT_All_in_a

[email protected]

+7-915-21-21-798 (whatsapp/ звонки)








 , ,








И это всё МОЁ

Можете человеческим языком объяснить дурачку? Как вообще работает этот прекрасное ключевое слово ORDER BY в SQL? Читаю книгу по SQL, и не могу отдуплять. В нем пишется следующее:



По «остальным» сортировка работает, если предыдущие поля в списке ORDER BY равны.



Шо значит предыдущие поля в списке ORDER BY равны? К чему равны? К чему это сравнивается? Допустим есть такая таблица:


-- Таблица "Persons"

first_name | last_name | year_of_birth
----------------------------------------
иван | валуев | 1989
александр | глыбин | 1975
максим | тарский | 1982
владимир | пагубин | 1976


Я хочу отсортировать по last_name и year_of_birth. Отправляю такой запрос:


SELECT first_name, last_name,
FROM Persons
ORDER BY first_name, last_name;


И я вижу такое:


 first_name |  last_name   |  year_of_birth
----------------------------------------
александр | глыбин | 1975
владимир | пагубин | 1976
иван | валуев | 1989
максим | тарский | 1982


А че? Второй критерий last_name не будет действовать шо ли? Только по first_name отсортировал? Вопрос тогда, когда и в каких обстоятельствах может действовать сортировка по второму критерию last_name вот это я не понимаю?









 ,








И это всё МОЁ

Привет!

Смартфон сошел с ума, и картинка в видео при ярком солнечном свете меняется с нормальной на тусклую, и так - каждые несколько секунд. Как мне с помощью ПК с Linux избавиться от недостаточной выдержки (недодержки, underexposure) на уже отснятом видео и какие настройки изменить на смартфоне? Пробовал извлечь картинки из видео:

ffmpeg -i video.3gp vid%04d.jpg -hide_banner

и сделать
sudo apt install graphicsmagick
gm convert in.jpg -normalize out.jpg
но это помогает только для отдельных фото (где есть этот эффект), а мне нужно в пределах видео. Выполнил эту команду для всех изображений и собрал с помощью
ffmpeg -framerate 25 -i vid%04d_out.jpg -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p out.mp4

но недодержка осталась (поскольку все изображения были изменены с -normalize, а не только нужные), а видео получилось рваным и видны кубики.








 , ,








И это всё МОЁ

Ее не нужно было создавать.








 








И это всё МОЁ

Создал окно graphwindow

Добавил в него:

 QwtPlot *d_plot = new QwtPlot( this );

setCentralWidget(d_plot); // привязать поле к границам окна

d_plot->setTitle( "Qwt demonstration" ); // заголовок
d_plot->setCanvasBackground( Qt::white ); // цвет фона

// Параметры осей координат
d_plot->setAxisTitle(QwtPlot::yLeft, "Y";);
d_plot->setAxisTitle(QwtPlot::xBottom, "X";);
d_plot->insertLegend( new QwtLegend() );


// Включить сетку
// #include <qwt_plot_grid.h>
QwtPlotGrid *grid = new QwtPlotGrid(); //
grid->setMajorPen(QPen( Qt::gray, 2 )); // цвет линий и толщина
grid->attach( d_plot ); // добавить сетку к полю графика

// Кривая
//#include <qwt_plot_curve.h>
QwtPlotCurve *curve = new QwtPlotCurve();
curve->setTitle( "Demo Curve" );
curve->setPen( Qt::blue, 6 ); // цвет и толщина кривой
curve->setRenderHint
( QwtPlotItem::RenderAntialiased, true ); // сглаживание

// Маркеры кривой
// #include <qwt_symbol.h>
QwtSymbol *symbol = new QwtSymbol( QwtSymbol::Ellipse,
QBrush( Qt::yellow ), QPen( Qt::red, 2 ), QSize( 8, 8 ) );
curve->setSymbol( symbol );

// Добавить точки на ранее созданную кривую
QPolygonF points;

points << QPointF( 1.0, 1.0 ) // координаты x, y
<< QPointF( 1.5, 2.0 ) << QPointF( 3.0, 2.0 )
<< QPointF( 3.5, 3.0 ) << QPointF( 5.0, 3.0 );

curve->setSamples( points ); // ассоциировать набор точек с кривой

curve->attach( d_plot ); // отобразить кривую на графике


// Включить возможность приближения/удаления графика
// #include <qwt_plot_magnifier.h>
QwtPlotMagnifier *magnifier = new QwtPlotMagnifier(d_plot->canvas());
// клавиша, активирующая приближение/удаление
magnifier->setMouseButton(Qt::MidButton);


// Включить возможность перемещения по графику
// #include <qwt_plot_panner.h>
QwtPlotPanner *d_panner = new QwtPlotPanner( d_plot->canvas() );
// клавиша, активирующая перемещение
d_panner->setMouseButton( Qt::RightButton );

// Включить отображение координат курсора и двух перпендикулярных
// линий в месте его отображения
// #include <qwt_plot_picker.h>

// настройка функций
QwtPlotPicker *d_picker =
new QwtPlotPicker(
QwtPlot::xBottom, QwtPlot::yLeft, // ассоциация с осями
QwtPlotPicker::CrossRubberBand, // стиль перпендикулярных линий
QwtPicker::ActiveOnly, // включение/выключение
d_plot->canvas() ); // ассоциация с полем

// Цвет перпендикулярных линий
d_picker->setRubberBandPen( QColor( Qt::red ) );

// цвет координат положения указателя
d_picker->setTrackerPen( QColor( Qt::black ) );

// непосредственное включение вышеописанных функций
d_picker->setStateMachine( new QwtPickerDragPointMachine() );


получил ошибку
/home/alexey/tion28-pro/graphwindow.cpp:27: error: ‘setCentralWidget’ was not declared in this scope
setCentralWidget(d_plot); // привязать поле к границам окна
^~~~~~~~~~~~~~~~

В чем дело?
Что нужно прописать в graphwindow.h?








 ,








И это всё МОЁ

Здравствуйте, на хосте есть 2 SSD (512GBx2), как я понял объединенных в RAID-1. Как правильно отключить RAID и сделать общее пространство (1TB), не потеряв текущие данные?

Скриншот дисков








 , ,








И это всё МОЁ

Не приходят уведомления о новых скриншотах, если я подписан, допустим, на тег `gnome`.








 








И это всё МОЁ

А сколько стоит такой мальчик и где их искать? И как проверить хороший он репетитор или нет?








 








И это всё МОЁ
И это всё МОЁ

Сабж. Какой процессор взять? amd или intel? Поделитесь опытом.
Мне нужен условно бюджетный вариант, т.е. супермикро с ксеоном или топовые камни я не потяну.








 , ,








И это всё МОЁ
И это всё МОЁ

Уважаемые.
Прошу Вашего совета.


Подскажите, как хорошо и верно зашифровать пароль в Ansible.
Что имееем?


ansible 2.8.4
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/home/deb/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Aug 7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]


Что нужно?
Нужно сказать пароль в зашифрованом виде, желательно чтобы клиент понял.


В чём загвоздка?
При использовании ansible-vault encrypt_string - переменная в команде, для примера mysql -u user -p ` password_mysql `


Если данная строка содержит ошибку или завершается с ошибкой - пароль в открытом виде выводится в консоль вместе с командой.


Хранить пароль в password_file - лучше сразу пароль отдать.


И в любом случае нужно вводить --ask-vault-pass.


А как сделать без --ask-vault-pass если я хочу дать права пользователю запустить task с помощью Jenkins?


Что почитать по данной теме?









 , ,








И это всё МОЁ

tl;dr При установке манжары в legacy boot (не uefi) установщик не ставит флаг «загружаемый» на раздел с /

Вообще, это целая история о моих граблях и как я их решал.

Несколько месяцев сидел на KDE Neon. Полностью устраивал, но пару раз при sudo apt upgrade система ломалась. Я хз как решать кроме переустановки. К счастью, у меня корень и хомяк на разных разделах - можно не тратить много часов на бэкапы.

Знакомый виндузятник однажды посоветовал манжару. Я решил попробовать. Конечно же KDE Edition. Боялся, что некоторые deb only программы (skype, teamviewer...) не смогу поставить и вернусь на дериватив убунты. К счастью, легко освоил установку из аура. Правда не нравится, что усатновка некоторого софта идёт через компиляцию С++ (долго на моём ноутбучном core i5 3xxx).

Позже KTorrent начал каждый раз при запуске системы спамить типа «geoip не работает». Раздражало, выключил модуль «Сведения» в KTorrent. Но после для удобного отслеживания прогресса скачивания сериалов этот модуль must have. Через где-то 20 переключений модуль сломался - перестал включаться. sudo pacman -Rns ktorrent и установка заново ничего не изменила. Стёр все конфиги кторрента из хомяка - то же самое. Забил.

Позже кровь из носу понадобились nuitrack (проприетарщина) и intel realsense sdk. Первое поставил через debtap. Второе нашёл в ауре, но вместо распаковки файлов он собирает из исходников. Адок. Более того, во время компиляции система виснет намертво. Проверил несколько раз - это не oom. Было так сильно надо, что снёс манжару и поставил неон. Там установка intel realsense sdk свелась к «добавить ключи, репозиторий, установить через распаковку файлов». Красота.

Однако я уже привык к KMail, для меня удобнее, чем Thunderbird и тем более, чем веб клиенты. Однако akonadi не запускается ни с mysql, ни с sqlite. Проблема с KTorrent решилась. Глюки на ровном месте про эффекты через xrender или opengl (надо ручками при каждом запуске менять настройки). Я так привык к небольшой прозрачности окон в плазме (делается мышью, в дефолтных конфигах выключено), что плазма без прозрачности вызывает чувство, будто стоит WinXP. Что это за когнитивное искажение?

По моим субъективным впечатлениям плазму в манжаре готовят лучше, чем разрабы кде в кде неон. Как так возможно???

Возвращаюсь на манжару. После установки «Operating system not found». Переустанавливаю несколько раз. То же самое.

Нагуглил https://forum.manjaro.org/t/using-livecd-v17-0-1-and-above-as-grub-to-boot-os...

Выполнил инструкцию из Simple First Start. После configfile ... сразу началась грузиться система.

Заметил, что хомяк частично удалён. А именно все обычные директории и файлы остались, но все скрытые (начинаются на ".";) удалены. Кто (что) это сделал?

grub-isntall и update-grub ничего не изменили. Однако в livecd открыл KDE Partitions Manager и увидел, что в корневом разделе нету флага «загрузочный». Wtf? В установщике убунты флаг ставится автоматически где надо, в установщике манжары я явно выбрал этот флаг! Как и сказано в tl;dr - При установке манжары в legacy boot (не uefi) установщик не ставит флаг «загружаемый» на раздел с /

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

И ещё, в прошлой установке манжары было ядро 4.19. В неоне было ядро 5.0 В новой установке манжары уже ядро 5.2, хотя 4.19 до сих пор отмечено как рекомендуемое. От чего зависит «рекомендуемое» ядро в манжаре? Что дают новые ядра кроме поддержки нового железа? Читал changelog крупных релизов ядра, не понял влияния на userspace.








 , , , ,








И это всё МОЁ

Дистрибутив новый, и сторонние репозитории пусты ещё. Есть ли возможность установки кодеков без использования сторонних репозиториев?








 ,








И это всё МОЁ

Приветствую!

Купил себе недавно HPE Microserver Gen10, поставил 2 диска по 4ТБ в массив RAID 1 встроенным контроллером, накатил систему, софт. Всё работало нормально до вчерашнего вечера - скорость срезало до 200-300Кб/с. Перезагрузился - в статусе контроллера массив помечен как Degraded. При попытке собрать массив заново он разваливается на 1% rebuild'a. Диски новые, Seagate NAS серии. За потерю данных особо не беспокоюсь, есть бэкапы. Но что делать с дисками? Бежать за нормальным контроллером? Или mdadm? Или смотреть диски? По смарту оба диска проходят.

SMART:

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 071 064 044 Pre-fail Always - 12607411
3 Spin_Up_Time 0x0003 095 093 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 23
5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 078 060 045 Pre-fail Always - 66659907
9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 457 (121 65 0)
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 23
184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Command_Timeout 0x0032 100 100 000 Old_age Always - 0
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 071 066 040 Old_age Always - 29 (Min/Max 27/30)
191 G-Sense_Error_Rate 0x0032 100 100 000 Old_age Always - 0
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 6
193 Load_Cycle_Count 0x0032 100 100 000 Old_age Always - 361
194 Temperature_Celsius 0x0022 029 040 000 Old_age Always - 29 (0 25 0 0 0)
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 354 (42 28 0)
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 7104828078
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 2207875253







 , , ,