to post messages and comments.

← Все записи с тегом Linux

@OCTAGRAM:

Самая проблемная (как сейчас представляется) часть совмещения библиотек для разных OS — это исключения и сигналы, которые конвертируются в исключения разных языков программирования. Виндоуз в этом плане очень продумана, по крайней мере, 32-разрядная и более поздние. Там общая для всех языков программирования система структурной обработки исключений (SEH), поэтому самое сложное, что там нужно делать — это брандмауэр исключений. Например, в ActiveX объектах такое есть. Исключение ловится, конвертируется в информацию IErrorInfo, передаётся в COM, а функция возвращает неуспешный HRESULT. Потом, по другую сторону можно обратно сконструировать исключение другого языка программирования.

Но нас интересуют операционные системы вроде Линукса и БиЭсДи, и там всё гораздо сложнее из-за того, что функционал структурной обработки исключений отдан на откуп компиляторам, а ядро вызывает сигналы. А компиляторы — кто в лес, кто по дрова. Они заточены под то, что вся программа написана на одном языке программирования, и код инициализации ставит обработчики сигналов для всей программы, и только так оно работает, а возможность комбинировать разные языки программирования не учтена.

@OCTAGRAM:

Сайты, которые нужно знать китайскому поклоннику открытых исходников:
opencas.org
oss.org.cn

code.csdn.net
coding.net
git.oschina.net

Но при этом какой-нибудь tangram.baidu.com вполне может вести на банальный GitHub.

Думал, куда бы свалить с пидорского BitBucket. На международных CodePlex, BitBucket, Google Code, Assembla, SourceForge какой ни возьми, варианты SCM разные, и Mercurial тоже был. На трёх указанных китайских — нет. Беда. Глянул в китайскую вики, там тоже не видать своих сервисов.

@OCTAGRAM:

Раньше я видел в действии только Делфи для Мак ОС Десять. Скомпилировал при помощи dccosx.exe консольный «Привет, мир!», всё прошло успешно, но на Мак ОС Десять, правда, не запустилось, потому что у меня был Тигр, а надо было хотя бы Леопард. Кому надо, зачем надо, так хорошо без него всё было, но как обычно, просто надо, и всё тут. На XP Safari 5 можно было установить, а на более новый Тигр — всего лишь Safari 2. И FireFox 26 на XP против FireFox 3.6 на Тигре. Про Делфи XE2 можно было сказать: «И ты, Брут?» Но примечательно, что компилировалось это всё дело без доступа к Мак ОС Десять, ни к Тигру, ни к Леопарду, ни к какой.

А вот на Линуксе я же помню, что вылезает, если с ЦентОСа на Дебиан перенести бинарник. Сразу то символ в glibc не той версии, то сегфолт, то ещё что-нибудь не заладится. Интересно, как с этим новый Делфи справляется. Ведь ему же не дают полапать конфигурацию операционной системы разработчика, и он не может к ней глубоко привязаться, как это любит делать всё автотулзовое и вообще чуть ли не всё линуксовое.

Собственно, пока я окончательный бинарник так и не смог получить, а только .o. То есть, так же просто, как с Мак ОСом, уже не работает. Если пытаться что-то сделать из IDE, хотя бы Build или Compile, без Run, при любом раскладе IDE требует подключить к paserver на Linux, а если нет, то и компилировать не будет. Попытался задействовать в качестве платформы paserver «Bash на Ubuntu», то есть, WSL, и не смог скопировать paserver туда. Помедитировал на вывод mount и ls / в этом bash, не нашёл ничего похожего на файловую систему Windows. Это действительно параллельная Вселенная. Можно, конечно, на сайт залить, а потом wget'ом скачать, но решил дождаться установки Creators Update, а пока пойти другим путём.

@OCTAGRAM:

Почитал сорцы в linuxrtl, бросилось в глаза MarshaledAString вместо PAnsiChar. Открыл System.pas, нашёл там при включенном NEXTGEN такое:
_PAnsiChr = _PAnsiChar;
MarshaledAString = _PAnsiChr;
При этом _PAnsiChar не объявляется, то есть, он встроенный. Без NEXTGEN _PAnsiChr = привычному PAnsiChar. Напрашивается мнение, что из MarshaledAString пытаются лепить типа-не-указатель, который надо класть в System.TMarshal. Судя по тому, что WriteLn(X) и X[0] := '2' компилируются, природа этого типа пока ещё не совсем замаскирована.

Также огорчило, что до сих пор нет нормальных 32битных символов и строк. В языке Ада они уже 12 лет как появились как неотъемлемая часть стандарта. Как можно идти на Линукс без 32битных строк? В API открытых библиотек Юникод, сколько я видел, любой libidn возьми, всегда представлен 32битными строками. Открыл System.pas, увидел там type UCS4Char = type Cardinal для всех платформ, где Cardinal — это беззнаковое 32-битное целое, а type … = type … в Делфи делает новый тип, не совместимый со старым без приведения типа, аналог адского type … is new …

Ещё посмотрев по сторонам, нашёл StdDefTypes.inc , а в нём — type wchar_t = Int32

Ни методов TMarshal, ни попыток аналогично скрыть указатель вроде Marshaled32String, ничего такого. Высокопоставленные китайские чиновники с именами из иероглифов за пределами BMP, а также все причастные, которым текст с этими именами надо обрабатывать, не одобряют это.

@OCTAGRAM:

Windows 10 Creators Update: что нового в Bash/WSL и Windows Console
В то время как Win10 Anniversary Update поставлялся с поддержкой Ubuntu 14.04, в новом обновлении Win10 CU теперь WSL поддерживает Ubuntu 16.04.То есть, если хочется писать на Аде под роутер на MIPSe, теперь не надо искать, как бы так обновить встроенную Ubuntu до 15, чтобы не сломать.

Главой целью создания WSL было уменьшить «разрыв» по ощущениям, когда запускаешь инструменты Windows рядом с инструментами командной строки и окружениями Linux. Когда мы выпустили WSL в Windows 10 AU, то поместили Linux и Windows рядом друг с другом, но всё ещё был большой «разрыв» между ними — хотя обе системы могли иметь совместный доступ к некоторым файлам, каждое из окружений было довольно сильно изолировано от другого. Пользователи часто говорили, что хотят иметь возможность запускать приложения Windows и консоли Bash, и запускать приложения Linux и Windows. Так что мы добавили эту функцию! В Windows 10 Creators Update вы можете запускать приложения и инструменты Windows из консоли Bash.
Как раз то, чего не хватало. А то хочется dcclinux64.exe вызвать из линуксовых скриптов, а никак, или хочешь прямо из ФАРа запускать mips-linux-gnu-gnatmake и не можешь, тоже не очень здорово. Да, я знаю, что можно через plink и XMing как минимум в одну сторону срастить, и у меня Windows 2003 и Debian в соседних доменах Xen так и живут. А тут-то из коробки теперь. Удивительно видеть, как Microsoft опережает Apple в том, чтобы поддерживать Linux.

Ещё одной частой просьбой сообщества была поддержка в консоли больше чем 16 цветов. Поддержка 256 цветов и более очень важна при работе с современными всё более сложными и насыщенными инструментами командной строки, шеллами и т. д. В Win10 Creators Update консоль обновилась и поддерживает полный, прекрасный 24-битный цвет!
Я даже побежал в MSDN смотреть, какое там новое Console API для этого дела. Но не увидел. Тут советуют начинать любить Escape-последовательности. Эм, а как же гасить панели во всяких ФАР Менеджерах, если мы не можем прочитать буфер и потом восстановить его? Или теперь предлагаете буфер на виртуальном экране ncurses хранить? Вот так поворот.

В общем, пошёл обновляться.

@OCTAGRAM:

Посмотрел немного на Delphi для Linux. Компилятор командной строки называется dcclinux64.exe. И там ARC для ссылок на объекты, что было бы очень круто, если не отсутствие поддержки ARC в компиляторах для Windows и Mac OS X. Ну покажите мне такого человека, которой будет писать из-под Винды (и не из-под чего другого) на Линукс (и не подо что другое). Потому что если в целевых платформах затёсывается хоть одна не-ARC, это во всём общем коде становится нельзя положиться на его наличие, всюду вылезают лестницы try-finally, то есть, ARC, считай, что и нет, наоборот, только геморроя добавляется предусматривать постоянно оба случая.

Это напоминает поведение хозяина, который, чтобы собаке было не так больно, режет ей хвост по частям. Linux уже там, а Windows и Mac OS X — ещё здесь. Ожидается, что и Windows будет там, но ещё нет, и пока крутитесь, как хотите.

Для Delphi обычно параллельно выпускается комплементарный C++ Builder, зеркалирующий в C++ особенности Delphi вроде свойств объектов, неявных метаклассов или пресловутого ARC, и синхронизирующий ABI вплоть до наследования классов между языками. Но для Linux я никакого такого компилятора не увидел. Нет bcclinux64.exe, и из IDE, если создать новый консольный проект, нельзя выбрать целевую платформу Linux. Немного неожиданно, ведь кроме одного все компиляторы C++ Builder основаны на clang и LLVM, в том числе для Android, который почти Linux.

Забавно, что для Win32, наоборот, есть сразу два компилятора, bcc32.exe без ARC и bcc32c.exe с ARC. Там тоже режут хвост по кусочкам, но начинают с другого конца. Ох, копец.

Если вдруг ограничиться только Линуксом, только Делфи (без комплементарного Делфям C++, но всё остальное, конечно, можно, включая Аду GNAT и комплементарный Аде G++), и только из-под Виндоуз, тогда всё супер. Хоть в чём-то Делфи становится лучше Ады. А так — копец.

@OCTAGRAM:

В который раз наблюдаю забаву Дебиан: загадить весь /boot разными версиями ядра, ничего не удалять, дождаться, пока /boot утонет в мусоре, а потом не давать установить ни один новый пакет, пока эти конюшни вручную не очистишь.

@OCTAGRAM:

Импортозамещение для всех
Презентация проекта «Общая платформа исполнения приложений». Скомпилируй дважды, запусти везде.

@OCTAGRAM:

Помянем OpenLina. Пожелаем долгих лет Wine.

@OCTAGRAM:

Delphi для Linux стоит минимум $2400. Могу себе представить откаты. Ну теперь-то импортозамещение пойдёт в гору.

@OCTAGRAM:

Опять у меня dom0 забаррикадировался и ушёл в себя. По IP пингуется, TCP соединение с портом 22 устанавливается, а ответа «OpenSSH…» нету. С гостевыми машинками по мосту связь потеряна полностью. Монитор и клавиатура к нему в постоянном режиме не подключены, но обычно если в таком состоянии подключить, то он их проигнорит и даже питание на лазер мыши не подаст. Постоянно держать подключенными тоже как-то не вариант

@OCTAGRAM:

Как установить node.js в Debian?
curl -sL deb.nodesource.com | sudo -E bash —
sudo apt-get install -y nodejs

В самом деле, надо изживать традицию «скачал-поставил». Надо, чтоб оно качалось сразу в Терминале и там же запускалось от имени суперпользователя.

@OCTAGRAM:

Открыл для себя ShiftF в less

@OCTAGRAM:

Потестил, как работает подсистема Linux в Windows 10. Гораздо лучше, чем SFU в Windows XP/2003. Нет веселья типа слом совместимости между SFU в Windows XP/2003 и SUA в Windows 7/2008, нет ограничения на выпуск OS, как это было в Windows 7. На моём самом днищенском выпуске всё замечательно заработало. И база пакетов, ну вся от Ubuntu. Взял, да поставил gnat-gps с компилятором. Во времена SFU это было ой как геморройно, и я так и не сделал. А ведь есть ещё и кросскомпиляторы для разработки под MIPS. Раньше и подумать нельзя было, чтобы кто–то собрал кросскомпилятор с Windows на Linux-MIPS для роутеров и приставок, скажем. Или с Mac OS X на Linux-MIPS. Как–то вот не было такого, зато на Linux готовые кросскомпиляторы всегда были в изобилии, и теперь они доступны на самых днищенских версиях Windows 10 почти любому желающему.

Теперь бы ещё понять, а появился ли, наконец, нормальный X11 сервер для Windows, который, как в Mac OS X, сам синхронизирует свою раскладку клавиатуры с системной? У меня есть настроенный XMing, но раскладка не фонетическая и переключение по Ctrl-Shift, а у меня по Alt-Shift-{1,2,3}, и я не хочу лезть в настройки X11. Мне эти настройки нужны только по части как настроить волшебную печеньку, это само не сделается, так как подсистемы разные, в отличие от Mac OS X, где X11 сервер и приложения ищут печеньку в одном месте.

@OCTAGRAM:

start-stop-daemon из Debian в CentOS нет, и это прямо нежданчик конкретный был.

А ещё в CentOS сборка dnsmasq с невыключаемым "--bind-interfaces with SO_BINDTODEVICE", и поэтому рабочий конфиг с Debian вообще не пашет на CentOS. Миграция длится уже 12 часов из–за нескончаемых приколов CentOS. Ну почему эта опция неотключаемая??? Да будь он проклят, этот ваш SO_BINDTODEVICE! Я его не просил, он мне не нужен совершенно.

Попробовал было с относительно вменяемого Debian перетащить бинарник:
error while loading shared libraries: libnetfilter_conntrack.so.3: cannot open shared object file: No such file or directory

А без него, видимо, не судьба запуститься. Вот прямо кушать не могу, надо, и всё.

@OCTAGRAM:

Переношу сервак с Debian на CentOS. Там всё по–другому! И мой хороший скрипт для init.d вообще не заработал, всё переделывать надо.
/lib/lsb/init-functions: No such file or directory
Думал, ну хоть это останется. Нет. Что, CentOS не чтит LSB?

@OCTAGRAM:

-j REDIRECT --to-ports зачем–то ещё и меняет целевой IP на основной IP интерфейса. Вот кто его просил это делать? Не вижу, как отключить. Пришлось перейти на -j DNAT --to-destination

@OCTAGRAM:

Подредактировал /etc/network/interfaces, делаю /etc/init.d/networking restart, ноль реакции. Дополнительный IP нигде не появляется. Перезагружать сервер не хочется. Ubuntu, jessie/sid

@OCTAGRAM:

Это когда вместо End жмёшь ShiftG и понимаешь, что стоит РУССКАЯ РАСКЛАДКА

@OCTAGRAM:

Да ты запарил скачивать!
[email protected]:~$ sudo apt-get remove libreoffice-base libreoffice-base-core
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
abiword abiword-common abiword-plugin-grammar abiword-plugin-mathview
gnumeric gnumeric-common libabiword-2.9 libgdome2-0 libgdome2-cpp-smart0c2a
libgoffice-0.8-8 libgoffice-0.8-8-common libgtkmathview0c2a liblink-grammar4
libloudmouth1-0 libots0 libreoffice-core libreoffice-draw
libreoffice-filter-binfilter libreoffice-gnome libreoffice-gtk
libreoffice-impress libreoffice-math libwv-1.2-4
link-grammar-dictionaries-en poppler-utils python-uno
Предлагаемые пакеты:
gnumeric-doc gnumeric-plugins-extra epiphany-browser ttf-liberation
ttf-mscorefonts-installer
Пакеты, которые будут УДАЛЕНЫ:
gnome libreoffice-base libreoffice-base-core libreoffice-calc
libreoffice-evolution libreoffice-help-en-us libreoffice-writer
НОВЫЕ пакеты, которые будут установлены:
abiword abiword-common abiword-plugin-grammar abiword-plugin-mathview
gnumeric gnumeric-common libabiword-2.9 libgdome2-0 libgdome2-cpp-smart0c2a
libgoffice-0.8-8 libgoffice-0.8-8-common libgtkmathview0c2a liblink-grammar4
libloudmouth1-0 libots0 libwv-1.2-4 link-grammar-dictionaries-en
poppler-utils
Пакеты, которые будут обновлены:
libreoffice-core libreoffice-draw libreoffice-filter-binfilter
libreoffice-gnome libreoffice-gtk libreoffice-impress libreoffice-math
python-uno
обновлено 8, установлено 18 новых пакетов, для удаления отмечено 7 пакетов, и 103 пакетов не обновлено.
Необходимо скачать 59,5 MБ архивов.
После данной операции, объём занятого дискового пространства уменьшится на 25,2 MB.
Хотите продолжить [Д/н]?