в 8086 ELKS сделали работу с многосегментными прогами.
https://github.com/ghaerr/elks/wiki/Using-OpenWatcom-C-with-ELKS
OpenWatcom C, формат бинарника от os2, до 320 кб :) (раньше было до 128 кб - 2 сегмента)
https://github.com/ghaerr/elks/wiki/Using-OpenWatcom-C-with-ELKS
OpenWatcom C, формат бинарника от os2, до 320 кб :) (раньше было до 128 кб - 2 сегмента)
В домашней сети установлен сервер Proxmox Для общего доступа к файлам и папкам на хосте развернут сервер SAMBA Хочется получить беспарольный доступ с любых устройств. Для различных ТВ-приставок и мобильных устройств этого удалось добиться, а вот для компьютеров с Windows 11 не получается. При попытке войти на сервер SAMBA Windows 11 выкидывает диалог авторизации. Перепробовал различные варианты и мануалы, но никак не получается решить задачу. Конфиг smb.conf следующий
[global]
workgroup = LAN
server string = Media Server
security = user
map to guest = Bad User
log file = /var/log/samba/%m.log
max log size = 50
guest account = nobody
dns proxy = no
[Music]
comment = Музыка
path = /srv/samba/Music
read only = no
guest ok = yes
create mask = 0777
directory mask = 0777
force create mode = 777
force directory mode = 777
[Movies]
comment = Фильмы
path = /srv/samba/Movies
read only = no
guest ok = yes
create mask = 0777
directory mask = 0777
force create mode = 777
force directory mode = 777
В стародавние времена когда деревья были большими, трава зеленее, а мороженное стоило по 10 копеек, на Земле жили динозавры, и эти динозавры программировали в Vim.
( читать дальше... )
Лет 5 ждал, пока кто-то сделает, и в итоге сам сделал. Задача состояла в том, чтобы сделать шрифт, в котором визуально отличаются пары букв, которые обычно выглядят одинаково, например, „с“ и „c“. Тогда при любой работе с двуязычными текстами в программировании можно будет избегать ошибок, связанных с перепутыванием этих букв.
https://tvoygit.ru/budden/dr_cyr
Сделан необходимый минимум, один моноширинный шрифт - модифицированный Ubuntu Mono, и один пропорциональный - модифицированный Golos Text, одно начертание для каждого. Проигнорировано всё, кроме русской кириллицы и основной латиницы, возможны косяки. Идея, заложенная в шрифты, немного отличается.
Художники обругали, простой народ похвалил, на данный момент порядка 4 внедрений.
Есть ли какой-нибудь хороший новичковый мануал по криптографии?
Примерная задача такая: есть неведомая чертова фигня, если распечатать - будет пол-листа формата а4. Нужно понять, что же там зашифровано.
Т.е. понятно, что это искусство, изучаемое чертову прорву лет. Но может есть какие-нибудь маны, чтобы ухватить сам стиль мышления? Как нужно думать, чтобы успешно расшифровывать.
(вроде, это достаточно нетехническая вещь, чтобы не засорять ей /development)
Color management:
Обработка, конвертация и управление коллекцией RAW-изображений
Графические редакторы
Управление фотоаппаратом с компьютера
Focus stacking, склейка панорам и снимков с большим динамическим диапазоном (HDR)
Time-lapse
Астрофото
Работа с онлайн фото-стоками
Есть в Linux функция sendmsg. Я создал сокет с возможностью отправлять свой ip заголовок и udp. Я вызвал функцию с размером пакета 1500, возникает ошибка message too long и она не уходит пока я не понижаю размер до 1480. Но ведь максимальный mtu 1500? А в wireshark размер моих пакетов 1494, почему? Откуда ещё 14 байт?
Всем привет!
Хотел попросить совета относительно среды рабочего стола (DE), поскольку - по моим ощущениям - привычный XFCE идет куда-то не туда в плане потребления ресурсов.
Требования достаточно простые:
План таков: свести к минимуму лишний софт и хлам, который присутствует при установке по дефолту.
Бэкграунд: Много лет сидел на крысе XFCE. На маломощном лэптопе пользуюсь LXDE. Также пользовался Openbox от Crunchbang и Bunsenlabs. С KDE исторически меньше работал.
Начал только общаться с Samba. Нужно настроить шару на Самбе 3.6 (Centos 6.5) с авторизацией к ней по учетным записям из AD (Windows Server 2003). Поставил Kerberos, kinit получает нормально. Поставил winbind, пользователи и группы отображаются с домена нормально. Centos ввел в домен. Захожу с виндовой машины, которая в домене под на шару. Папку видит, запрашивает на нее пароль и логин, но не пускает ни с одной доменной учетной записью.
Папку создал # mkdir /home/papka
Дал права # chown -R 777 /home/papka
Часть файла конфигурации, где прописывается шара smb.conf:
[papka]
comment = papka_obmen
browseable = yes
path = /home/papka
wriatable = yes
valid users = @"мой домен\имя OU, где лежат пользователи в домене"
create mask = 0660
directory mask = 0770
create mask = 0666
directory mask = 0777
В чем может быть причина?
Сообщество Linux From Scratch объявляет о выпуске дистрибутива-книги LFS 12.1, также доступен перевод на русский язык.
Основные изменения включают обновления набора инструментов для binutils-2.42 и glibc-2.39. В общей сложности, с момента последнего выпуска было обновлено 43 пакета, среди них Grub 2.12, Systemd 255, SysVinit 3.08, Openssl 3.2.1, Python 3.12 и другие. Ядро Linux было обновлено до версия 6.7.4.
( читать дальше... )
>>> Подробности
В очередной (третий-четвёртый за несколько последних лет) раз затерев по неаккуратности файл с кодом (cp
не в ту сторону), на который был потрачен предыдущий час или больше, и который ещё не был закоммичен, решил что искать его с помощью dd
и grep
- занятие утомительное. Слышал тут про binwalk
, но, посмотрев описание, то ли не осилил найти способ её для этой цели использовать, то ли она и правда для другого.
Написал свою прогу в итоге: исходник.
Компилировать:
gcc -o rawsearch rawsearch.c
Синтаксис:
./rawsearch if=/dev/sda8 str=some_string_from_file
Прога найдёт на диске все текстовые блоки (внимание: если файл фрагментирован то он будет не одним блоком а несколькими, прога их сцеплять не будет), что содержат эту строку и создаст пачку файлов с названиями found-NNN
(NNN - байт где начинается) с этими текстами. Границы текстовых блоков определяются так:
static int is_binchar(char c) { return (c==127 || c>=0 && c<=6 || c>=14 && c!=27 && c<=31); }
(это символы которые по мнению проги в текстовых файлах не встречаются).
Возможно кому-то будет полезно.
Исходник максимально простой (всего 300 строк и 12кб), можно легко патчить под какие-то потребности по месту.
Зайдя на сайт ventoy (за новой версией их классной утилиты) обнаружил у них сабж (ventoy по PXE). Круто.
Читал, читал там какая то муть с платной и без, и главное не понятно как это заюзать в готовой инструктуре (где взять файлы iventoy_loader_16000_uefi чтобы бы положить на свой сервак).
Короче есть кто уже юзал и как впечатления ?
Как из командной строки свернуть окно программы, зная ее PID и ID окна (as in wmctrl -lp
)?
Нашел
xdotool search --name "<окно>" windowminimize
Иксы, кеды.
Конечная цель - проверить почту в Sylpheed из скрипта, не разворачивая его окно, sylpheed --receive-all
делает что надо, только разворачивает окно, я хочу сворачивать обратно.
UPD
WN=$(xprop -id $WID WM_NAME | awk -F '"' '{print $2}')
xdotool search --name "$WN" windowminimize
Начнем с 1,2,3.
Окрываем эмулятор терминала и запускаем:
$xrandr --output LVDS1 --scale 1.25x1.25
(Вместо LVDS1 возможно придется указать другое значение, не знаю как его узнать кошерно, я подсмотрел в диалоге MATE: Система->Параметры->Оборудование->Экраны. У меня там картинка экрана: Ноутбук: LVDS1)
ВСЁ! Это работает на уровне системы, решение подсказали на LOR, когда я расхваливал Xfce с таким же решением в пункте меню.
Далее идем в Система->Параметры->Персональные->Запускаемые приложения и добавляем скажем: screenresize с параметрами: $xrandr --output LVDS1 --scale 1.25x1.25
Всё, теперь параметры автоматически применяются при логине этого пользователя.
Я являюсь владельцем древнего 10" нетбука который тут все рекомендуют выкинуть... Но впрочем он вполне работает, и с собой брать не так тяжело как толстую машинку....
Но всегда мучала проблема... Открываешь в Линуксовом десктопе какое нибудь модальное окно и оно больше чем 1024x600, кнопочки: «Применить», «Сохранить», «Идинафик» - находятся где то за нижней границей экрана.
Играясь с Manjaro Linux (Я его назвал Мажориком, хотя тут ходит Ник: Бомжара) я столкнулся с оконным менеджером Xfce, у которого прямо в меню настроек можно выставить масштаб 1.2 и всё стало вмещаться на УРА!
Расписал это здесь на форуме, и анонимус подсказал мне решение, ссылкой на: https://wiki.archlinux.org/title/HiDPI.
Теперь я знаю об этом рабочем решении и хочу поделиться им с другими!
Есть идея перекинуть 1с ерп с вин 2019 на дебиан (бд уже постгря под вин)
С реализацией в режиме клиент-сервер в целом все понятно, нюанс в том что в вин по традиции у нас используется терминальный сервер и у клиентов стоят простенькие моноблоки, задача которых исключительно запустить рдп клиент.
Вопрос - стоит ли городить терминальный сервер под лин вообще, и если да то на чем оно работает более внятно - vnc или xrdp?
Клиентов пытались перенести на линух много лет назад но тогда все уперлось в весьма унылую работу рдп с виндовым сервером - имеются некоторые фантомные боли после этого и очень хотелось бы услышать историю успеха из современного мира ^_^
В продолжение предыдущей темы: Acer Extensa 4220. Еще в строю. Железо то же, ОС та же. На этот раз ОС поставлена на родной 80-гиговый HDD. Который работает на удивление тихо, кстати. Не слышно гула и щелчков, в отличие от более нового 1-терабайтного HDD в ноуте, что стоит рядом на столе.
Я решил выяснить, насколько сложно будет собрать GTK2-версию XFCE на свежем Арче. В AUR нашлась бОльшая часть пакетов. Но некоторых зависимостей не хватало. Я добавил нужное и внёс некоторые правки в имеющееся. Залил сюда: https://github.com/sde-gui/PKGBUILDs-xfce4-gtk2
Кому надо, пользуйтесь, репортите баги и отправляйте пул-реквесты. В AUR запиливать откровенно лень. Это всё еще не максимальный комплект того, что входит в XFCE со всеми допами. Если что-то нужно добавить в сборку, пишите.
На скриншоте видно потребление памяти. XFCE ест больше, чем LXDE/SDE. Для сравнения потребление под SDE: https://ibb.co/HYmnm9r
Еще раз проговорю некоторые моменты относительно потребления памяти и использования Арча на старых машинах:
И немного личных выводов:
Половину дня провёл за этим ноутом, слушал музыку с ютуба, открывал кучу вкладок с разных сайтов. Правил файлы, работал с git и компилировал пакеты. Производительности машины в целом хватает, но запас по ОЗУ не очень большой. Компиляция кода на Си упирается не столько в CPU, сколько в IO на HDD. Вот если SSD поставлю, там уже в CPU упрусь. GUI не тормозит, работает отзывчиво. Памяти на какой-то из линковок потребовалось много, и около гига улетело в своп. В общем, 3 гига пока всё еще нормально для задач печатной машинки и веб-терминала. Думаю, на 2-х было бы уже сложновато.
P.S. Hobbit, верни тег gtk2 в БД!!!
Приветствую. Казалось бы, тривиальная в 2023 году вещь - распарсить строку по делимитеру и загнать это в массив. Но нет, просто не будет.
Впрочем вопрос не в этом. Есть код. Описания переменных и прочая, я опущу, перейду сразу к сути.
Алгоритм ну вроде как прост, работает и на питоне, и на пыхе, а вот на С делает какую-то срань, хотя скорее всего я банально не до конца понимаю нюансов С, в связи с чем и прошу помощи.
printf("\n============ Parsing: ");printf(gtk_path);printf(" ========\n");
fg_color = "#888888";
bg_color = "#AAAAAA";
filePointer = fopen(gtk_path, "r");
while(fgets(buffer, bufferLength, filePointer)) {
if (strstr(buffer, " fg_color ") != NULL) {
printf("\nFound fg_color entry: ");
char **arr = split(buffer, ' ');
fg_color = trim(arr[2]);
printf(fg_color); // <<<<
}
if (strstr(buffer, " bg_color ") != NULL) {
printf("\nFound bg_color entry: ");
char **arr = split(buffer, ' ');
bg_color = trim(arr[2]);
printf(bg_color); // <<<<
}
}
fclose(filePointer);
printf("\n *** \n");printf("Main color: ");printf(fg_color);printf("BG color: ");printf(bg_color);printf("\n");
// Для информации приведу функции split и trim, хотя дело вряд ли в них.
char **split(char *str, char delim) {
char **arr = malloc(sizeof(char *) * (strlen(str) + 1));
int i = 0;
for (char *p = strtok(str, &delim); p; p = strtok(NULL, &delim)) {
arr[i++] = p;
}
return arr;
}
char *trim(char *s) {
char *ptr;
if (!s)
return NULL; // handle NULL string
if (!*s)
return s; // handle empty string
for (ptr = s + strlen(s) - 1; (ptr >= s) && isspace(*ptr); --ptr);
ptr[1] = '\0';
return s;
}
Задача блока - прочитать CSS-файл, и выдрать с него полторы строчки в массив.
Сначала присваиваем двум переменным какое-то значение, например #888888 и #AAAAAA;
Читаем построчно файл, ищем в каждой строке нахождение подстроки, если подстрока найдена, тогда парсим ее в массив, и присваиваем нашей главной переменной значение массива с определенным индексом, и ГЛАВНОЕ - тут же выводим эту переменную на экран.
После того, как файл пройден до конца - выводим результирующее значение тех же переменных.
А вот что оно выводит:
============ Parsing: /usr/share/themes/Relax-Light-GTK/gtk-3.0/gtk.css ========
***
Main color: #888888BG color: #AAAAAA
============ Parsing: /usr/share/themes/White - OE2-GTK/gtk-3.0/gtk.css ========
Found fg_color entry: #5C616C;
Found bg_color entry: #FAFAFA;
***
Main color: #000000;
BG color: #000000;
Вопрос: откуда нах взялся этот #000000 ?
Когда подстрока не встречается в строке (т.е. файл не содержит ни fg_color ни bg_color) - возвращаются правильные значения того что я установил. Этот кусок работает правильно.
Да, возможно парсер работает криво, но ведь каждое присваивание fg_color = сопровождается printf'ом, и в пределах if'а с парсером видно, что парсер отрабатывает на отлично. #000000 - явно взято откуда-то из файла, но как оно могло пробраться в переменную, и не засветиться в выводе этой переменной ? ЧЯДНТ ?
Привет, ЛОР.
В посте полугодичной давности я рассказал о том, как я возился с монохромным монитором от МежДелМаша, подключая его к IBM PS/2. Теперь же я хочу поделиться с вами совсем-таки недавним моим успехом уже софтверного характера, впрочем всё так же занимающим своё заслуженное место в одном из разделов Специальной олимпиады, а именно, — я модифицировал древний MINIX 1.7.5 под нужды своего компьютера, дабы использовать все основные возможности железа. Но начну я своё изложение всё-таки с описания характеристик, ибо именно оно является основным лимитирующим фактором.
Итак, на фото один IBM 8530 (PS/2 Model 30 286) со следующими параметрами
Делловский монитор подключён к VGA из материнки, а вот с монохромным монитором пришлось повозиться, сделав переходник с MDA DB-9 на DB-15, плюс выцыганить питание с разъёма для флоппи, ибо IBM решили убрать молексы из дизайна, и запитывать диски с материнки.
Ситуация с подключением двух мониторов довольна нестандартна для конца 80х, однако именно для этой цели адресное пространство у монохромного адаптера и у цветного графического (от которого наследуется текстовый режим VGA) разные, а значит в теории можно использовать VGA+MDA. Однако обычно программы для MS-DOS на это не затачивались, и профита от такой схемы для меня не должно было быть, если бы не…
Если бы не старый MINIX. Версии вплоть до 2.0.4 позволяли в теории запустить полноценный UNIX даже на IBM PC XT с 640k RAM. Однако же найти подходящую именно для меня конфигурацию MINIX оказалось задачей трудной. Я перебрал сначала версию MINIX для MS-DOS, но 1 MB памяти для неё было явно мало (что и не удивительно, ведь MINIX для DOS создаёт виртуальный диск в RAM). В итоге я смог установить в QEMU MINIX 1.7.5 на один из разделов Compact Flash, и потом даже запустить уже на самом PS/2.
Правда, путь к первой введённой в терминале команде был тернист. Во-первых,
MINIX подвешивал клавиатуру при загрузке. Причину удалось установить,
загрузившись в режиме совместимости с i8086, откуда подозрения сразу пали на
злосчастную линию A20, которая управляется контроллером клавиатуры в AT-клонах
для совместимости с i8086. В исходном коде kernel/klib88.s
A20-линия
выставлялась в соответствии с мануалами, вот только оказалось, что для IBM
PS/2 появился специальный контроллер для управления A20, а посему код для ядра
пришлось сразу же патчить. По итогам доступная память с 640k в режиме
совместимости увеличилась до установленной памяти в 1 MB, плюс защищённый
режим с его плюсами (ну и минусами тоже, об этом чуть позже).
Следующим шагом было реализации возможности работать одновременно в двух
виртуальных tty, используя два монитора. В коде kernel/console.c
такой
абстракции как монитор или экран не было, поэтому пришлось долго провозиться с
возникающими гонками за внутренние переменные, однако усилия были
вознаграждены, и теперь я мог например вывести на один экран какой-нибудь man, и параллельно редактировать файл на другом, переключаять по Alt-<- Alt–>.
Ещё одна из проблем оригинального MINIX — он отказывался работать с CF-XT адаптером. Одно время я был удовлетворён работой драйвера, который вызывает функции BIOS int 13h через аппаратный сброс, пока я не захотел наконец-то разобраться с сетевым драйвером (благо он как раз для WD8390 совместимых карт уже был в исходниках). При включении Ethernet в параметрах ядра загрузка зависала на моменте инициализации драйвера диска (забавно, не правда ли?) Вместо того, чтобы пофиксить баг, я решили подойти к вопросу радикально и переписать стандартный драйвер IDE контроллера, чтобы он стал поддерживать CF-XT-lite. И это было увлекательно. Главной подсказской для меня стала принципиальная схема адаптера, потому что сходу отображение адресов CF на шину не гуглилось, и оказалось, что не на все вопросы необходимо искать ответ в Интернете, тем более когда достаточно просто взглянуть глазами на схему платы. Конечно, документация к CF и исходники XTIDE BIOS мне тоже помогли. В процессе переписывания драйвера в момент, когда я наконец-то разобрался с адресами, и драйвер стал идентифицировать устройство, я умудрился несколько раз испортить корневой раздел, но спасали бэкапы и Linux, который до сих пор поддерживает старую добрую MINIX FS.
Как итог: старый MINIX прекрасно себя чувствует на старой же машине с 16-bit разрядностью и 1 MB памяти, при этом позволяет выходить во внешний мир с помощью telnet и ftp и поддерживает мультизадачность. Сейчас я ковыряюсь с httpd сервером, который уже скомпилировался и запускается, но пока возвращает только 403 и 404 (причём делает это он секунд за пять, если не медленнее). Остались ещё мелкие недочёты по типу не работающего SIGTERM по Ctrl-C и мигающего сразу в двух экранах курсора (это сбивает с толку, потому что не знаешь, на какой экран сейчас перенаправлен ввод). Из глобального хочется сделать frame buffer хотя бы для VGA, а то и для обоих мониторов (попробовать видеокарту ATI в режиме Hercules). Другая возможная ветка развития — создание дистрибутива для старых компов и эмуляторов типа даже pcjs.org, чтобы у энтузиастов была возможность попробовать настоящий UNIX на своём ретро железе.
P.S. Да, чуть не забыл. На фото на левом мониторе telnet на какую-то из BBSок, на правом — стандартные UNIX команды и вывод кусочка ядра на экран.
Как на Википедии.
А если ещё и результат опросов выводить в таком виде, то вообще 🔥.
давно у меня уже руки чесались и вот наконец дошли. потянуло меня в общем на ночь глядя фигнёй заняться. и вот, что из этого вышло:
на экране, в окошке xterm'а, мы наблюдаем знаменитый ютавский чайничек [1] в его первозданном виде, сгенерённый моей маленькой приблудой из оригинальных файлов мистера ньюэлла. [2]
но это ещё не всё. давным давно, лет тридцать назад, а может больше, существовали такие векторные терминалы, как tektronix 4014 [3]. терминалы эти, как и vt100, давным давно уже канули в лету, но бравый xterm их всё ещё эмулирует. так вот, именно таким хитрым способом графика на экран и выводится.
ну и что бы завершить сеанс некрофилии, добавлю, что код сей писался на openbsd-машинке в nvi (ну, не сдружился я ни с vim'ом, ни с emacs'ом).
ругайте!
PS: коли кому цвета терминала понравятся, прошу любить и жаловать:
amberXTerm*foreground: #ff7f00
amberXTerm*background: #1f0000
greenXTerm*foreground: #00df1f
greenXTerm*background: #001f00
[1] http://letmegooglethatforyou.com/?q=utah+teapot
[2] http://www.sjbaker.org/teapot/teaset.tgz
[3] http://letmegooglethatforyou.com/?q=tektronix+4014
следующие → |