to post messages and comments.

@OCTAGRAM:

Пока не установил МакОС, из которого выпилили эмуляцию PowerPC, я даже не подозревал, сколько у меня таких программ. Причём, каких! Игры!

Ricochet Lost Worlds, Marble Blast Gold, Luxor 2, Luxor Mahjong, Monster Fair Pinball, Nanosaur — всё это оказалось PowerPC. Кто говорил про обязательные нативные порты, теперь посрамлён. Можно пользоваться программами в эмуляции и даже не знать об этом, пока эмуляцию не отключат. А если не отключать, так и вообще хорошо.

@OCTAGRAM:

Запарился мигрировать всё с Хакинтоша, на котором Ассистент миграции вообще не может в сеть (Mac OS X 10.4.10 Tiger). В принципе, там был порт FireWire, но какой с него толк для миграции, если на Хакинтоше нет Open Firmware и Эпловской разновидности EFI, в которую нужно загрузить донора. Короче, полный голяк. Некоторое время полюбовался на Mac OS X 10.6.8 Snow Leopard на купленном устройства. Там всё ещё узнаваемый стиль Аква и шрифт Lucida Grande. Антиалиасинг без хинтинга и мыла. Всё такое приятное, круглое, пластмассовое.

Сделать образ диска, с которого запущена операционка — это оказалась творческая задача. В Хакинтоше у меня два диска, и можно бекапить первый на второй. Очень мудро я в своё время поступил, разбив основной ЖД на кучу мелких разделов, хоть как-то себе жизнь облегчил. Ещё бы привод DVD никуда не делся, я б прямо с Хакинтошного DVD загрузился бы и Дисковой Утилитой сделал образ как надо. Но привода нет. А hdiutil в Single Mode не заработал. Пришлось dd'шечкой делать. На 10.6.8 образ в таком формате сходу не подключился (нет таблицы разделов), но его оказалось возможным сконвертировать, и этот сконвертированный уже работал лучше. Его подмонтировал, запустил Ассистент Миграции, выбрал вариант «с другого раздела», и этот виртуальный образ был в списке кандидатов.

@OCTAGRAM:

Этот макОС — какой-то новый Турбо Паскаль
Exception Type:        EXC_ARITHMETIC (SIGFPE)
Exception Codes:       EXC_I386_DIV (divide by zero)
Exception Note:        EXC_CORPSE_NOTIFY

SOLVED: My MacBook Pro didn't have a battery installed. I had to remove it b/c it got bloated one day. I installed a new battery and the upgrade didn't crash. Upgraded successfully to El Capitan.
Кто ж мог знать, что без батареи установщик превратит макбук в макбрик. Ни туда и ни сюда теперь.

@OCTAGRAM:

Затарился макбуком. Пятый комп уже получается. Теперь смогу скомпилировать Cocotron и пощупать движок Objective-C 2.0. И заказов смогу больше принимать.

@OCTAGRAM:

Обнаружил в последнем обновлении приложение Paint 3D. Понабросал объектов, надоело, нажал закрыть и… он закрылся! Не спросив, а не хочу ли я сохранить свою мазню. Ну вдруг она мне очень дорога, а я погорячился. Впрочем, с учётом прошлого опыта что-то такое было ожидаемо. В приложении ВКонтакте долго писал пост, решил развернуть на весь экран, развернул, при этом панель написания поста уехала, а когда я её открыл заново, моего текста там уже не было. Охренел и с тех пор не запускал. Приложение Скайп пробовал, но однажды пропустил несколько важных сообщений, и Скайп никак о них не сообщил, хотя висел открытый в панели задач. Охренел и с тех пор не запускал.

В этом — весь UWP. Похоже, кроме как через Project Centennial, принципиально невозможно написать нормальное приложение для Магазина. Впрочем, с приложениями, которые были разработаны средствами PC, я большого опыта ещё не имел. Нельзя исключать, что и там талантливые инженеры придумали, как безнадёжно всё сломать.

@OCTAGRAM:

Увидел среди новых TLD .ads, пока без возможности регистрации. Наверное, хорошо подходит для адских библиотек, там по широко принятому соглашению .ads = ADa Specification, человеческий аналог заголовочных файлов.

@OCTAGRAM:

Не получается у заказчика через cPanel добавить запись NS, там есть только A, AAAA, CNAME, SRV и TXT, и через WHM тоже не сработало. У меня и в Windows 2003 получилось, и в Яндекс.ПДД порядок, только домены-то при этом мои, а надо, чтоб заказчика. Который день это уже длится. Пытаюсь сагитировать его взять ещё домен второго уровня, уж там-то NS поставятся как надо. $3 в год за .science, $30 сразу за 10 лет — вот столько стоит твоё потерянное время, говорю. Не сдаётся :)

@OCTAGRAM:

putting.om.Environment.solveMetaclassConstraints
Нашёл ту функцию, которая подбирает нужный метакласс или конструирует новый, если ни один из запрошенных не подходит. На всё про всё 40 строк кода. Вот, насколько упростил Гвидо ван Россум свой Питон, отказавшись это сделать, и сломав метаклассы по сравнению с моделью из книги, которой он вдохновлялся.

The metaclasses book describes a mechanism whereby a suitable metaclass is automatically created, when necessary, through multiple inheritance from M1 and M2. In Python 2.2, I have chosen a simpler approach which raises an exception if the metaclass constraint is not satisfied; it is up to the programmer to provide a suitable metaclass through the __metaclass__ class variable. However, if one of the base metaclasses satisfies the constraint (including the explicitly given __metaclass__, if any), the first base metaclass found satisfying the constraint will be used as the metaclass.

@OCTAGRAM:

XIII Международная научно-практическая конференция «Объектные системы — 2016 (Зимняя сессия)»

Таки опубликовали сборник. Без моей статьи. А за полгода, прошедшие с декабря, как-то сообщить мне нельзя было, чтоб я на другую конференцию успел подать? Может, ещё бы очно пообщался, если поближе к Барнаулу найти вариант. И на письмо так и не ответили. С кем я связался.

@OCTAGRAM:

Хочется странного. Домена в зоне, где продление стоит $50 в год.

@OCTAGRAM:

Среди клиентов заказчика (обход геоблокировок) попадаются такие, у которых провайдер мудрит. Бывает, заворачивает все запросы к любым DNS на свой и отвечает от чужого имени. Бывает, блокирует сторонние DNS. Так или иначе, обычная схема с изменённым DNS не работает. Начал делать с proxy.pac. В нём очень плохо, что всё на виду. Тестируют люди все проксируемые каналы на Amazon Fire Stick, на Smart TV, на Chromecast, и каждый раз домены новые всплывают. И сам список найденных доменов, которые нужно проксировать, начинает представлять коммерческую ценность. Поэтому, когда клиенты шарят лучом в темноте DNS, это одно дело, а когда они могут открыть proxy.pac и увидеть там полный список, всё, над чем работали тестеры несколько месяцев на самом разном оборудовании, и просто слить, так можно и конкурентам ненароком сильно помочь.

Было у заказчика желание и до абонентов злых провайдеров добраться, и домены не светить. А у меня давно идейка была в связи с помешательством на блокировках. Я прочитал, что proxy.pac может резолвить айпишки (isResolvable + dnsResolve), и пришла мне в голову мысль, что так ведь можно в DNS хранить команды, а в proxy.pac — читать их и интерпретировать. О том, может ли такое вообще работать, представления были туманные, а тут выдался шанс подтвердить гипотезу. Отзеркалил таблицу перенаправлений DNS в зону поддомена и заставил proxy.pac дописывать к хостам суффикс (этот поддомен) и пытаться резолвить то, что получилось, и в зависимости от этого ходить напрямую или через прокси. В общем и целом получилось так же, как и через SmartDNS, каждый шарит лучом в темноте и видит только нужный ему фрагмент, не видя всей полноты. Отличие — в том, что между клиентом и нашим сервером ещё появились DNS провайдера, а так работает очень похоже.

@OCTAGRAM:
X11

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

@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:

В кой-то веки Google вспомнил о чём-то русском. С чего бы это вдруг? Ах, да, день независимости от здравого смысла. Как по такому поводу не поплясать на костях.

@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:

На конференции «Объектные системы» по-прежнему тихо. С виду. Если зимняя сессия 2015 опубликована здесь, то логично ожидать, что зимняя сессия 2016 будет здесь. А тут тоже пусто.
Но я тут сегодня зашёл через РИНЦ и узнал, что долгожданный сборник там появился. Без моей статьи. На странице сборника этого не видно, но можно зайти в любую статью и увидеть «Перейти на полный текст на внешнем сайте», защищённую JavaScript. Для получения ссылки нужно войти на elibrary, у меня там логин есть, я зашёл и получил ссылку на свёрстанный сборник. И там тоже моей статьи нет. Примечательно, что на странице 98 идёт агитация за доклады на декабрь 2017, то есть, в мае 2017го действительно какая-то заминка.
Выглядит, прямо скажем, некрасиво.
Ермаков Илья Евгеньевич, Заместитель директора, казенное учреждение Орловской области «Региональный центр оценки качества образования», Технический директор, НПО «Тесла», Россия, ОрёлЕго я видел на forum.oberoncore.ru . Ада и Оберон — это близко, значит, свой человек. При прочих равных скорее надо поддержать, чем нет.
Шалыто Анатолий Абрамович, д.т.н., проф., лауреат премии Правительства РФ в области образования, Заведующий кафедрой «Технологии программирования», Санкт-Петербургский государственный университет информационных технологий механики и оптики, Россия, Санкт-ПетербургЕго я знаю по мыслям об алгоритмах и программах, среди которых очень близок сердцу (и духу моего проекта) номер 18 про шоу-бизнес и разноцветные кирпичи. Мысли не его, но он на своей площадке поддержал их, значит, надо его поддержать.
С виду достойные люди, их присутствие в редколлегии склонило меня при выборе, где публиковаться, в пользу именно этой конференции. Так бы давно уже, где и раньше, опубликовался бы. Что это может быть?
1. Первейшее предположение моего научрука — что статью припрятали и будут публиковать без ссылок на меня, а, может, ещё и грантик попытаются выбить. Сделать — не сделают, а деньги получат. Он свидетелем таких историй был.
2. Мы с главредом в ноябре спорили при рецензировании, номерами карточек обменялись, я даже готов был возврат оргвзноса получить, но кончилось тем, что лимит страниц подняли, я статью увеличил, чтоб непосвящённым был контекст понятен, и её приняли. Вот, может быть, за кулисами редколлегия всё-таки передумала, а мне «забыли» сообщить, также «забыли» сборник напечатанный, хоть и без моей статьи, отправить, также «забыли», если не печатать сборник и не публиковать статью, то хоть оргвзнос вернуть, так я бы тоже понял, что статью там публиковать не будут, и побежал бы с ней в другой журнал.
3. Статью отложили на майскую сессию, майская не состоялась, и теперь она отложена вообще до следующего декабря.
4. В РИНЦе и на сайте черновик, который ещё будет дополнен и перевёрстан, либо дополнен не будет, но когда это решится, вот тогда-то мне и собирались это сообщить. Из-за того, что это черновик, на сайте до сих пор сборник нормально как новость не опубликован.

Я вообще не люблю лишний раз обращаться, особенно, когда нас таких много, но тут уже пора.

@OCTAGRAM:

Почему-то сходу не находятся утилиты для слияния exe+dll. Нормального слияния, без выгрузки на жёсткий диск. Вот пытаться сконвертировать DLL в статическую библиотеку — это я согласен, не получится. При компоновке EXE и DLL теряется информация о внутренних связях между кодом и данными, и секции жёстко фиксируются друг относительно друга, а у статических библиотек нет такого формата. Там, наоборот, будь добр все связи предоставь, чтоб компоновщик потом мог как угодно код относительно данных подвигать. Но вот если слияние exe+dll делать на последнем этапе, после обычных компоновщиков, то можно себе представить такой метакомпоновщик, который делает бекон из секций входных PE-файлов, устраняет ставшие внутренними связи импорта/экспорта DLL и делает прочую рутинную работу, как то: сделать новую точку входа, повызывать оттуда DllMain, а потом WinMain. Если вложенные библиотеки не сильно злоупотребляют попытками обратиться к себе как к DLL, не пытаются узнать свой HMODULE и не суют его потом во все WinAPI, а просто служат хранилищем кода, должно сработать.

Жизнь бы упростилась, если делать только DLL, а для тех, кому ну очень нужно всё в одном файле, предоставить такой метакомпоновщик.

@OCTAGRAM:

Сломался встроенный просмотрщик CHM. Не показывает текст. Раз такое дело, решил воспользоваться заботливо предложенным поиском по Магазину Windows и… ничего не нашёл.