← All posts tagged Windows

OCTAGRAM
Windows sata AHCI Windows10 Не думал, что эта проблема актуальна, но это так. Обнаружил случайно, что в BIOS до сих пор стоит режим эмуляции IDE в SATA. И переключение в AHCI не позволяет загрузить в систему. Невероятно, но в Windows 10 Fall Creators Update проблема всё ещё здесь. И решить её не очевидно. Видимо, раньше тоже пытался включить, да всё тщетно. Тратил непростительно много времени, забивал на всё это, но ощущение осталось, будто проблему давно решил. Ведь не может же быть такого, чтоб в Windows 10 была такая же проблема с SATA, как в XP? Да ну, бред какой-то.

Какая самая первая мысль приходит? Установить драйвера. Производитель Acer. Идём на сайта производителя, ищем там драйвера для моей модели.
Audio Driver
Bluetooth Driver
Card Reader Driver
Touchpad Driver
Touchpad Driver
VGA Driver
Wireless LAN Driver

Эм, а где для жёсткого диска вообще? Или чипсет какой-нибудь. Какой вообще чипсет, я как это понять должен? Медитация на диспетчер устройств не помогла понять. Пришлось в Интернете смотреть. Ага, AMD какой-то. Какой именно, я до сих пор не знаю. Бывают серии SB7xx, SB8xx, SB9xx, и я не знаю, что у меня. Тогда что-то проясняется насчёт того, почему не видно. В VGA Driver загрузка Каталиста, а в него вроде бы как входят и всякие драйвера для miniIDE на чипсетах AMD. Но по факту драйверов-то нет, система не грузится в режиме AHCI. Нашёл, где можно скачать именно драйвера для чипсета, установил, перезагрузился в AHCI. Не загрузилось. Ну как так-то?

Установщик драйверов чипсета, впрочем, что-то изменил. Если раньше в Диспетчере устройств был какой-то драйвер общего назначения, то надпись изменилась на AMD SATA Controller (IDE mode), и драйвер — amdide64.sys. Поковырял установщик чипсета, нашёл там в AMD-Chipset-Drivers\Packages\Drivers\SBDrv\hseries\AHCI_svr\WT64A некие файлики типа amd_sata.sys, принудительно установил этот драйвер. Ну бывает же такое, что для несуществующего устройства драйвера вроде бы как устанавливать и не надо, а пока система в IDE режиме, то AHCI не существует, вот и хоть заустанавливайся, драйвер не появится. После установки в Диспетчере устройств-таки появилось новое устройство AMD SATA Controller, нерабочее. Рабочее или нет, а драйвер-то теперь точно есть. Перезагрузился в AHCI. Не загрузилось. Японская мать. Да тут вообще работает хоть что-то или как?

Нашёл в Интернете инструкции, как сделать AHCI в Windows 7, 8.1, 10. С
bcdedit /set {current} safeboot minimalпроблем не возникло, зато внезапно возникли проблемы с
после загрузки компьютера в безопасном режиме
Долбил я по F8, долбил, а ни в какие безопасные режимы Windows 10 загружаться не захотела. Позволил этому барану оставить пару раз с разбега мозги на стенке. Автоматическое восстановление началось. Диагностика. Которые, конечно, ничего не выявили. Ни F8, по которым я долбил, ни драйвер для SATA неактивированный, ничего не навело Windows 10 на мысли, а в чём может быть проблема. Когда автоматическое восстановление неудачно, запускается меню. Меню запутанное, но «безопасный режим при следующей загрузке» там при большом желании найти можно.

В безопасном режиме и AHCI загрузилось! Вот интересно мне стало, а в чём разница между моей попыткой поставить AHCI и тем, как загрузилось. В Диспетчере устройств увидел два устройства, оба AMD SATA Controller, но у того, который работает, драйвер storahci.sys от Microsoft. Он, вроде как встроенный, но это не помогало ему быть подхваченным на лету. Как принудительно поставить такой драйвер, вообще не понятно. Когда ставишь вручную драйвера, среди них нет встроенных. Для ATAPI были только драйвера AMD, а Microsoft — не было.

Выполнил
bcdedit /deletevalue {current} safebootперезагрузился в обычном режиме. Работает. Заметно лучше стали работать активно использующие своп программы с трассирующей сборкой мусора, в первую очередь, браузер. В IDE-то команды нельзя переупорядочить, а в AHCI чтение-запись асинхронные.
OCTAGRAM
Windows Apple iCloud Windows10 Обновил Windows до Падших Создателей.

Проверил, как там iCloud. Не работает. Всё так же, крутится индикатор после Войти, e-mail приходит о том, что мой Apple ID использовался для входа. Увижу ли я когда-нибудь, как эта штука работает? Windows 2003 ей была слишком старая. Windows 10, похоже, перманентно слишком новая. Удивительно просто, как столько лет не могут починить.
OCTAGRAM
FOSS ada Идёт какая-то прямо неделя принятия моих наработок в открытые проекты

I've uploaded JVM-GNAT for macOS, see
Thanks to you, I could put inside Java API files.
В оригинале документация и примеры для JGNAT не была рассчитана на проекты GPR, была устаревшая система по типу Search Directories в Делфях или include path в C, а привязки, хотя и генерировались разные, но использовались только те, что подключены. А я сделал проект, и привязки тоже проектом, и пока пытался собрать проект привязок, повылезали ошибки в случаях, когда для абстрактного метода стояла pragma Import вместо pragma Export, а также конфликты имён в разном регистре, которые генератор привязок сам не переварил. По результатам разруливания для всех стандартных Java API есть рабочие привязки. Это и приняли.

Пакет (Binding) Ada2012 Unicode NCURSES под Windows
Тут пригодился мой шаблон проекта

Работа Ada Web Server Client TLS через прокси починена
OCTAGRAM
pthreads Strategies for Implementing POSIX Condition Variables on Win32

Заставил себя вчитаться. Вчера заснул после PulseEvent, сегодня со свежими силами продолжаю читать про SetEvent. Хотел написать, что никак не могу понять эту часть:
8. Thread C2 is the only thread left and blocks forever since not_empty_ will never be signaledПока писал, почему не могу понять, понял.

То, что в этой статье описывается, как пользоваться WinAPI времён XP, не принципиально.

Во-первых, во второй части указано, как реализовывать события, если их нет, и как реализовывать мониторы поверх событий, если в операционной системе нет атомарного ожидания одного объекта и сигнализации другому (Windows 95, Windows NT 3.51).

Во-вторых, я читаю, как сделан M:N планировщик IBM NGPT, и там тоже поверх событий сделано: на строке 333 ожидание входа в мьютекс, а на строке 998 — ожидание условной переменной, а откуда берётся ev, можно посмотреть по строкам выше.

Это отличается от того, что пишет, например, Дмитрий Завалишин, разработчик Фантом ОС, под авторством которого вышло научно-популярное чтиво про архитектуру примитивов синхронизации:
Иерархия реализации такова: mutex/cond/sema сделаны на базе спинлоков, спинлоки — на базе атомарных операций, предоставляемых процессором.
Внутри ядра мьютекс реализован с помощью спинлоков, а вот спинлоки реализованы сами по себе, автономно. Они — действительно базовый примитив. Ниже — только сам процессор.

Смотрю его код и вижу не событие, а некую очередь, которая то ли так же, как события, работает, то ли нет, но неплохо бы, чтоб это где-то уточнялось. Разработчик osFree, когда я его на эту тему пытал в IRC, говорил, что у них в L4 сообщения посылаются между процессорами.

То есть, восполняя пробелы:
mutex/cond/sema сделаны на базе спинлоков и либо событий, либо очередей потоков, либо сообщений.
События, очереди потоков или сообщения реализованы на базе спинлоков и атомарных операций, предоставляемых процессором.
Спинлоки реализованы на базе атомарных операций, предоставляемых процессором.

Напрашивается предположение, что между подчёркнутым есть изоморфизм или даже синонимия, но сам я такого утверждать не могу, а чтоб где-то авторитетно утверждалось, не вижу. Если про эту часть даже тот, кто сам её писал, «забыл», что говорить о других.
OCTAGRAM
Java com совместимость Bad class file: version 52.0 not supported
Да что ж вам неймётся-то по версиям скакать. Ну что не сидится на одной. Вот чем хорош COM и чем плоха Java, в COM совместимость десятилетиями держится, а тут каких-то несчастных четыре года отделяет, и уже инструментарий начинает отваливаться. В книге «Putting Metaclasses to Work» симуляция была специально реализована на Java, чтобы, как пишет автор, как можно надольше сохранить. В итоге компилятор DirectToSOM C++, библиотека SOM и прочее PE/COFF'ное запускается на современной Windows 10, а симуляция PMtW на современной JVM — нет. И на не очень современной 1.5 — тоже. Вообще надо какую-то древнюю находить, чтоб подошло тютелька в тютельку. Знал бы автор, как жестоко будут насмехаться над его потугами производители. Начиналось за здравие, столько надежд было.

И в Delphi CORBA IDL парсится утилитой не на Delphi, транслируемой в, как показывает практика, долгоживущий PE/COFF, а на Java, и тоже там совместимую версию надо постараться подобрать, собственно, почему эту фичу кроме особенно заинтересованных никто не смог увидеть в действии.

Предполагаю, что так пагубно влияет общая версия формата для интерфейса и реализации. Собственно, и нет разделения на интерфейс и реализацию. Новые фичи не могут просто сидеть и не высовываться в новых секциях и новых опкодах, на которые не любой инструментарий будет смотреть, им обязательно надо вылезать на самый верх, в общий номер формата, и там всё ломать.
OCTAGRAM
графика sRGB scRGB Неправильная и правильная обработка изображений
До вчерашнего дня не знал, что RGB, который на мониторе, в CSS веба и вообще везде — официально нелинейный. Думал, что подстройка гаммы — это не более, чем настройка на мониторе. Но нет, у стандартного RGB (sRGB) приблизительно степенной закон 2.2. И половина между 0 и 255 — это 187. Так что без конвертации в/из линейный RGB ничего почти нельзя корректно сделать. Даже в градации серого нельзя корректно свести. И нас таких, не в курсе про нелинейность, похоже, очень много.

Альфа-канал такой конвертации не подлежит, во всяком случае, в PNG. Но тогда стандартных 8 бит не хватит по разрядности, чтобы иметь возможность получать при наложении полупрозрачного белого на чёрный или наоборот все оттенки серого в sRGB. По крайней мере, для альфа-канала высокая разрядность — это не блажь, а необходимость.

И, как показывают тесты, правильно наложение в софте мало, где сделано. Вот в браузере если наложить чёрный с варьирующимся альфа-каналом поверх белого фона, результат будет неправильный. Всё (почти), что было мне привычно, оказывается, работает неправильно. Технически наиболее подходящее решение проблемы — это scRGB, у которого есть представление в виде линейных 16-битных чисел.

По сравнению с sRGB, диапазон расширен в восемь раз, от -0,5sRGB до 7,5sRGB, что позволяет представить в этом формате весь диапазон доступных восприятию цветов типа суперзелёного. И, начиная с Windows Seven, эти цвета по HDMI с соотвествующими HDMI мониторами и видеокартами можно даже отобразить на оверлее или на полном экране средствами DirectX.
OCTAGRAM
Windows Squid Как-то странно ведёт себя система служб Windows. Стоит у Squid на первый сбой перезапуск, на второй сбой — перезапуск, на последующие сбои — перезапуск. Перезапуск службы через 1 минуту. Проверяю, почему все сайты упали, а там Squid ничтоже сумняшеся не работает. И не поднимается через минуту. Вручную поднял — всё заработало. Мне что, как на Линуксе, надо net start в планировщик поставить?
OCTAGRAM
OCaml CPC CIL Устанавливать старый опасный OCaml 3.12.1 не пришлось, FAR arclite справился с форматом NSIS. Директорию выбрал C:\ocamlmgw, как зашито в бинарники, потому что они там ищут библиотеки. Пришлось выжечь калёным HIEW из каждого flexlink.exe аргумент -mno-cygwin, который современный gcc не в силах потерпеть. Доустановить hg clone git+https://gitlab.camlcity.org/gerd/lib-findlib.git . Поставить make и perl из msys2. Закомментировать строчку 2202 в cpc.ml. И получилось собрать!

Без pthread и libev под Windows примеры не работают, но я всё равно под Windows только препроцессор хотел. Перловая обёртка вполне успешно собирает ошки, в том числе с сохранением промежуточных файлов. Для того, чтоб собрать ошки, рабочая реализация рантайма не нужна. Нужно отпрепроцессировать выбранным транслятором, потом отпрепроцессировать cpc cilly, потом оттранслировать обычным транслятором, вот такие этапы делает перловая обёртка. Смотрел промежуточный результат, вроде похоже на правду.

Промежуточный результат не такой оптимальный, как я надеялся. Скажем, g() в loops.cpc делает cps_yield(), имея аргумент c и переменную i. Я бы ожидал, что c и i между cps_yield() как сидели в контексте, так и оставались, но вместо этого __g_while_continue_2_push() постоянно принимает на вход c и i, перевыделяет под них место и копирует из своих аргументов в структуру. А процедуры, на которые ссылаются продолжения, постоянно открывают структуры со своими аргументами, вытаскивают оттуда c и i и под конец вызывают одну из _push() с этими c и i. И так по кругу. Чем больше стек процедуры, преобразованной в асинхронный вид, тем больше круговорот.
OCTAGRAM
web ВКонтакте ВКонтакте могли бы внедрить для просмотра видео VLC. Могли бы внедрить QuickTime. Могли бы внедрить Windows Media Player. Но нет, надо было выбрать что-то такое, где звук с видео постоянно разъезжаются после лага, приходится перематывать, чтоб они съехались обратно.
OCTAGRAM
windowsupdate Решил на всякий случай от всяких WannaCry обновить Windows 2003. Если и есть что-то архаичное в XP/2003, то это оно. BITS, не способный ничего скачать без пенделей, поиск обновлений пять суток с загрузкой одного ядра на 100%, ошибки, которые можно починить только Fix-it, который нельзя скачать с сайта Майкрософт даже через Машину времени, настолько хорошо свёрстан их сайт, благо, я в своё время собрал обширную коллекцию припарок.

Если бы в Windows 10 сделали обязательным ТАКИЕ обновления, оно просто у большинства перманентно было бы в сломанном состоянии, и не давало повода перезагрузить. То немногое, что стало работать ощутимо лучше.
OCTAGRAM
Apple xcode Попробовал собрать приложение для теста (TextEdit) и обнаружил, что оно на Mac OS X 10.11 El Capitan даже не запускается, собрано под 10.12 Sierra. Ну ладно, подумал я, и попытался переключить SDK и цель на 10.11. А нету SDK для 10.11! Xcode может работать на 10.11, но собрать может только для 10.12.

Весь Xcode прежней версии качать неохота было, качнул только утилиты командной строки. Поставил. Поставились. Теперь компилятор для 10.11 есть. А SDK нету. Так уж и быть, качнул Xcode 7.3.1. Поставил. Теперь есть и компилятор, и SDK для 10.11. Но только для них (не считая забекапленной 10.12, конечно). Странно, а вроде раньше по-другому было. В те дни, когда я думал, что 10.6.8 — потолок, я поставил Xcode 3, и там были 10.4u, 10.5, 10.6, то есть, начиная от самой первой x86’ой до самой последней поддерживаемой. А тут одна.

Вычитал такое:
I can copy MacOSX10.11.sdk from another host, but presumably Apple has something else in mind here.
Just to be clear, Apple policy since Xcode 7 has been to only distribute the newest SDK with Xcode.app.

Так, теперь понятно, как Эппл пасёт чебурашек. Ставим разработчиков в дурацкое положение, когда они не могут просто взять и собрать для минимальной достаточной версии OS, как это делается на Windows, со слабым связыванием опциональных фич. Если не предпринимать специальных действий, если не писать на Delphi, C++ Builder или GNAT Ada, а именно из Xcode, то получаются приложения с неоправданно завышенными системными требованиями. Пользователи вынужденно обновляют ОС и/или железо, Эппл собирает кассу, разработчикам с этого пирога ничего не перепадает.

Однако нашёл ещё такое и такое. То есть, несмотря на ужимки Эппл, возможность собирать как лучше для людей имеется.

И это отличный источник входных файлов для BridgeSupport и анализатора, которым я также собираюсь прочесать GNUStep (до и после отравления TGC) и Cocotron на предмет пересечения. Где что появилось, где устарело, где изчезло. Пока что это мутная толща воды, и в неё надо забуриться.
OCTAGRAM
работа Не получается у заказчика через cPanel добавить запись NS, там есть только A, AAAA, CNAME, SRV и TXT, и через WHM тоже не сработало. У меня и в Windows 2003 получилось, и в Яндекс.ПДД порядок, только домены-то при этом мои, а надо, чтоб заказчика. Который день это уже длится. Пытаюсь сагитировать его взять ещё домен второго уровня, уж там-то NS поставятся как надо. $3 в год за .science, $30 сразу за 10 лет — вот столько стоит твоё потерянное время, говорю. Не сдаётся :)
OCTAGRAM
Linux Delphi Раньше я видел в действии только Делфи для Мак ОС Десять. Скомпилировал при помощи 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
Linux ada mips Windows10 WSL 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
Linux Delphi arc совместимость Посмотрел немного на 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
chm Windows10 Сломался встроенный просмотрщик CHM. Не показывает текст. Раз такое дело, решил воспользоваться заботливо предложенным поиском по Магазину Windows и… ничего не нашёл.
OCTAGRAM
Apple objectiveC YellowBox Эмпирически выясняю, что нужно, чтобы запустить приложения под YellowBox, по возможности не устанавливая их. Самый свежий — это WebObjects, проверяю на нём. Опытным путём установлено, что перед тем, как запускать программы, нужно запустить все 4 служебных процесса в таком порядке:
%NEXT_ROOT%\Library\System\machd.exe -d
%NEXT_ROOT%\Library\System\nmserver.exe -d
%NEXT_ROOT%\Library\System\WindowServer.exe
%NEXT_ROOT%\Library\Frameworks\AppKit.framework\Resources\pbs.exe

Причём, обычный установщик YellowBox ставит первые два как службы (также можно вручную установить ключиком -install с правами админа) с указанием зависимости, а последние два — ставит в автозагрузку каждому пользователю, отсюда и их порядок после служб. Между последними двумя порядок либо не критичен, либо они как-то ждут друг друга, тут сложно понять. Ключик -d позволяет запустить службы как обычные процессы, таким образом, не требуя прав админа.

С точки зрения возможности выбрать в качестве кроссплатформенного движка не какой-нибудь дебильный Qt, Gtk+ или ещё куда ни шло VCL, wxWidgets и иже с ними, а всё же что-нибудь, основанное на спецификации OpenStep, это фиговенький, но всё же вариант для Windows. Сдаётся мне, Cocotron-то во многом получше будет, но там инструменты разработки кросскомпилируют с Mac OS X, да ещё с каким-то движком Objective-C, будто бы отличным от всех остальных, которые можно найти в природе. Что касается GNUStep, то эти ребята, когда я прочитал, как они «сделали» ARC, у меня просто волосы дыбом встали. Они додумались Boehm GC впихнуть в движок для всех программ без разбора. Если оно там теперь так и осталось неизвлекаемое, GNUStep начиная с этого момента можно считать безнадёжно сломанным, непригодным для серьёзной разработки. Надо отследить ревизию, в которой эти умники насвинячили, игнорировать всё, что было после, а то вдруг там начали появляться программные ошибки, а я считаю циклы владения безусловно программными ошибками, нарушением причинности, и, может быть, в таком виде от GNUStep ещё будет какая-то польза.

Необходимость разрабатывать кроссплатформенно плюс плохое качество библиотек, обычно берущихся для этого, плюс проблемы с реализациями OpenStep на не-Windows платформах — всё это поспособствовало тому, что я надолго ушёл из фронтенда на сервера и никак не могу вернуться, кроме как заработков на Delphi VCL Windows. А хочется.
OCTAGRAM
работа winapi com Автозавершение в текстовых элементах Windows
Так и не нашёл нормальный способ вручную пинать это автозавершение, чтоб оно список перечитывало и чтоб возможные варианты принудительно показывало. Возможные варианты, пока текст не набран, отсутствуют, а даже после того, как набран, нужно получить ответ по HTTP, и только тогда есть, что показать. Объект автозавершения читает пустой список и запоминает, а когда можно что-то показать, список для автозаполнения всё равно пустой. Пока остановился на варианте с RecreateWnd + SendMessage(WM_KEYDOWN, VK_DOWN).

Изолентой там всё скручено. Тут оконные ручки и оконные функции, а тут COM-интерфейсы, а как что-то надо, так и пнуть нечего. Ни сообщение нормальное послать, ни метод интерфейса вызвать.
OCTAGRAM
Delphi ada Взял для разнообразия новый проект. Вот никогда не фанател от упрощённого стиля Windows 10. В Мак ОС Десять до сих пор кажется эстетичной Аква, а безальтернативная упрощёнка — это что-то мимо. Но, поди ж ты, оказывается, это востребовано. Хотят в этом стиле. А ещё хотят, чтоб в этом стиле и на Семёрке работало. Всё указывает на выбор Делфи как инструмента реализации. Они там давно (кажется, в XE2) встроили стилизацию и научились мимикрировать под элементы управления, обычно наблюдаемые только в Метро. Решающий вклад тут вносит, что со времён Делфи 2006 возобновлена раздача базовой версии на шару. Без этого приходилось постоянно иметь дело с натленной Делфи Семь, как у легальных пользователей, так и у пиратов, и нового софта не появлялось, соответственно, интересных заказов — тоже.

По этому поводу получил возможность забуриться в свежий Делфи Токио. И сравнить с Адой. Первым делом зашёл в настройки проекта посмотреть, как там дела по умолчанию со включениям проверок времени выполнения. Негусто. Всё выключено. Никак видеокодеки опять пишем или на Розеттакоде секундами меряемся. Часы моего времени на отладку дороже, поэтому всё врубил. Во всяком случае, всё, что смог, а было там только три галочки. Но совсем как в Аде писать всё равно не получилось. Не хватило ещё проверки указателя на null-nil до того, как пытаться по нему пройти. На Аде я могу забуриться внутрь сложного JSON значения, а если где-то что-то не нашлось, вылететь по известному исключению в обработчик, который ничего не сделает. В Делфи, по крайней мере, в стандартной библиотеке, если не брать мои CVariants, такая история не работает. Ну или лучше не пользоваться. «X.Values['ObjectKey'] as TJSONString» запросто может оказаться nil, и если дальше у него получить Value, то вылетает исключение Access Violation с доступом к первым байтам виртуальной памяти. Чё-т как-то не очень такое ловить. Лучше б что-то языковое бросалось ДО попытки вызвать метод через такой указатель.

Освежил воспоминания, почему @akastargazer так радовался, что в Обероне не надо так париться управлением памятью. Как адаисту со стажем, мне это было не очень понятно, что там париться, и зачем решать эти проблемы таким изуверским способом, а тут вот оно всплыло. За каждый TJSONObject и TJSONPair трясёшься, чтоб он только не утёк, если на полпути исключение вылетит. Всё огораживаешь в try-finally-FreeAndNil-end, всем значениям, которые могли бы при прочих равных быть промежуточными, даёшь имя переменной. В GNATCOLL.JSON такого страха не было, и в моих делфёвых CVariants такого страха нет. Там RAII и счётчик ссылок внутри. Но столбовой дорогой это до сих пор не стало.
OCTAGRAM
web twitch youTubeDL Смотрю трансляцию на Твиче, браузер жрёт процессор как не в себя, видео заикается и со временем вовсе стопорится. Кликаю всякое разное качество, на какое-то время оживает. А иногда нет. Так и крутит своё дебильное кольцо. В настройках вижу варианты жалобы на качество воспроизведение. Смотрю, а нет ли там приложения для Windows, что не через браузер маяться. Нет, нету. Для дырок в заборе под управлением Android есть, а для Windows — нет. Плюнул, направил вывод youtube-dl в VLC, вот так всё нормально пошло, аж в Сурс качестве.

Смотрю youtube трансляцию. Та же история. Только тут мне ещё надо чат успевать записывать ДО того, как сообщения удаляются модератором, поэтому браузер нужен. Та же история. Видео виснет даже в 144p. И как-то интересно оно так виснет, что, я вот не понимаю, что, неужели так сложно программно определить, что видео зависло и надо что-то сделать, хоть бы даже и пересоздать тег VIDEO. И почему нет приложения для Windows?

Ну видно же, что кучу времени и денег вбухали в разработку под браузер, а толку нет. Сколько лет браузер развивается, сколько лет плеер на YouTube с Твичом развиваются, а Youtube-DL+VLC всё равно уделывают браузер. Ну и смысл тогда биться головой об эту стену? Забейте на браузер, горбатого могила исправит, видимо. Сделайте приложение. Обычное. Без тормозов браузера и без хакерства Youtube-DL+VLC.