@Linda-chan

Тег программизм в блоге Linda-chan

Linda-chan

Почему на FB DOS приложение написать можно, Win32 приложение написать можно, а Win16 приложение – нет?

Linda-chan

Решила на FreeBasic написать простенькую программу. Уже в лёгком шоке. Оказывается, в FreeBasic нельзя просто взять и получить командную строку в оригинальном виде. Есть функция Command(), которая должна возвращать её, но на деле рантайм делает так. Сначала он парсит командную строку, разбивает на элементы и даёт доступ к результату через ARGC/ARGV хреновины. Потом при вызове Command() он СОБИРАЕТ ПОЛУЧЕННОЕ В ОДНУ СТРОКУ и возвращает. Тоесть это:

1 2 3 "4 5 6"

Превращается в это:

1 2 3 4 5 6

Более того, он без спросу, типа для совместимости с линупсом делает развёртывание масок на уровне самой программы, а не оболочки. Это:

*.txt

Превращается в это:

1.txt 2.txt 3.txt

Сюрприз, сюрприз! В доках сказано, как это непотребство выключить, но во-первых для каждой платформы это делается своим костылём, а во-вторых оно не работает.
Короче, действовать придётся, как водится, методом кишлака: GetCommandLine() и вычленением екзешника.

Linda-chan

Поборола в программе баг, который проявляется в Windows 98. Обратная совместимость at it's best!

Linda-chan

Печально, что в интернетах нынче днём с огнём не сыщешь инструкций по сетевой настройке вибишных ActiveX EXE в современных системах. В последний раз я это дело запускала в Windows 98 (и вроде бы в XP) через DCOM и Remote Automation, а сейчас никак не могу.

Linda-chan

Кстати, ранее я похожую фигню проворачивала с постилкой на Тумблер. API v2 в VB я не осилила, поэтому просто использовала генерирующийся для каждого запроса скрипт на Руби, где уже был клиент для Тумблера.

Linda-chan

Заработал постинг на Dreamwidth. Сначала они сделали форвардинг на HTTPS, и мой HTTP клиент для прог на VB отвалился (всё руки не дойдут переписать и добавить поддержку HTTPS). Не беда, взяла WinHTTP клиент. Но тут оказалось, что на DW ещё и шифрование подкрутили, а у меня XP. В принципе WinHTTP работает на Нанами, но мне лень запускать постилку на отдельной машине. Попробовала пару костылей, в том числе всёже запуск куска постилки на Нанами через DCOM, но что-то ничего не заработало. В итоге плюнула и запилила вызов WGet из программы. UNIX way, блеать! Осталась, конечно, пара недоработок, но продукт внутренний, и по ходу дела я доведу всё до ума.

Linda-chan

Сначала не могла понять, о чём ведут речь джентльмены в камментах:
http://juick.com/m/2952793#3
Всё же я никогда не привыкну к тому, что в светлом настоящем использование переменных без какого-либо объявления – норма и признак хорошего языка.

Linda-chan

If Ret = True Then

Linda-chan

90% ПО для нового американского истребителя F/A-22 написано на… Ada
Судя по тому, что жизненный цикл современного боевого самолета достигает 30-40 лет, языку Ada светит долгая и счастливая жизнь

https://habr.com/ru/post/94487/#comment_2876814

Linda-chan

Люблю условную компиляцию в VB6. Казалось бы, если какой-то блок выкидывается по условию, то IDE и компилятор должно меньше всего беспокоить, что там происходит. Ан нет. Очепятаешься в таком блоке – ошибка. Объявишь переменную не с тем типом – снова ошибка. Последнее особенно досадно, ибо условная компиляция может использоваться для выкидывания кода, который, скажем, использует хитрую библиотеку. Типа, если на машине зарегистрирована библиотека X, то подключаем её к проекту, ставим нужное условие, скажем, в свойствах проекта и компилируем с ней. Если нет – обходимся своими силами. А не работает – дай библиотку, IDE не узнаёт тип данных, который в екзешник всё равно не попадёт. Единственная польза от такого поведения – хак с именами элементов перечислений, которые любят терять регистр символов, но и тот – борьба с багом самой IDE.

Linda-chan

Пока одни рубят на собеседованиях кандидатов, использующих строки с разделителями вместо Array(), другие пишут код как в ответе вот тут:
https://otvet.mail.ru/question/169097620
При чём это код, взятый из коммерческого продукта.

Linda-chan

The code builds just fine except that you get a linker error that makes no sense. (Let’s face it, most linker errors make no sense until you put on your linker-colored glasses.)
[...]
There’s some good news and bad news about this error message.
The good news is that this error message is going away. The bad news is that it’s being replaced with a different error message.

https://devblogs.microsoft....0190529-00/?p=102527

Linda-chan

Как хранить конфиги скриптов? Использовать отдельные файлы или системные средства (текстовые конфиги или реестр в Windows, например)? Использовать отдельные скрипты на том же языке с инициализацией переменных и вызывать их из главного скрипта? Или прямо в самом скрипте писать инициализацию переменных и пометки: «Настраивать здесь»? Кто как делает?

Linda-chan

Сколько лет прошло, а до сих пор бомбит от этой истории. Гибридная программа с атомами и драйвером, блеать.
https://ithappens.me/story/9251

Linda-chan

Невероятно! Уже 35 камментов в обсуждении VBA, и до сих пор ни одного про GoTo!
https://cauf.point.im/mirrm

Linda-chan

Наконец-то кто-то объяснил, как выковыривать сообщения, отправляемые процессами через OutputDebugString()!
https://www.codeproject.com...DebugString-capturer
Теперь бы ещё понять, почему до первого запуска сисинтерналовского DebugView вызов OutputDebugString() без подключенного отладчика приводит к исключению, а после первого запуска – нет. Ну тоесть ставим голую винду, делаем в программе OutputDebugString() – ловим исключение. Запускаем DebugView, перезагружаемся для верности, делаем в программе OutputDebugString() – исключений больше нет. Ну и хотелось бы знать, почему IsDebuggerPresent() выдаёт TRUE, если запущен DebugView, если на деле он ничего не отлаживает, а просто читает буфер.

Linda-chan

Dim Reader As New SAXXMLReader40
Dim Writer As New MXXMLWriter40

Но!

Set Reader = CreateObject("MSXML2.SAXXMLReader.4.0")
Set Writer = CreateObject("MSXML2.MXXMLWriter.4.0")

Что я люблю!
Разумеется, в доках подробно написано, почему они так сделали, но легче от этого не становится.
К слову, у MSXML4 имя библиотеки – MSXML2.

Linda-chan

Интересно, с помощью MSXML можно красиво отформатировать XML одной командой, не упражняясь в беготне по дереву и вставке пробелов перед узлами?

Linda-chan

Могло быть и хуже.
https://gist.github.com/Lin...403396b19f9b458b1758
Я для обновления сертификатов использую getssl с валидацией через записи в доменах, которые живут на DigitalOcean. Со временем таких записей становится слишком много, а ручками чистить лениво. Вот и написала такую фигню: используя doctl, генерирует Bash скрипт (или BAT файл, если убрать заголовок), который уже делает всю работу. Я могла бы вызывать doctl и для удаления записей, но в таком варианте можно хотя бы проинспектировать, что будет удаляться. Так что пока так.

Linda-chan

Решила ещё раз попробовать Private Desktops в Windows 7 и узнать, чего она там не работает. Ну, то что Win+1 и прочие цифры забиндены Проводником на прибитые на таскбар программы, при чём скопом со всеми модификаторами (Win+Ctrl+1, Win+Alt+1 etc), я выяснила в прошлый раз. Поставила более конвенционные Win+Q для первого рабочего стола (дефолтного), Win+W для второго, перезапустила программу. Жму Win+W – переключилось. Жму Win+Q – не реагирует. Не работает переключение? Запустила екзешник программы с параметром «/Switch 0» – переключилось. Вернулась на второй рабочий стол, снова жму Win+Q. Там запущена консоль, и я вдруг заметила, что эта самая Q в ней набирается. Тоесть, хоткей не работает в принципе. Короче, если в XP глобальные хоткеи работали на всех рабочих столах в пределах текущей оконной станции (кроме рабочего стола блокировки системы), то, похоже, дальше они стали заизолированы на конкретных рабочих столах. Тоесть если на рабочем столе X программа создала окно и следом зарегистрировала хоткей с его манипулятором, то сообщения WM_HOTKEY будут прилетать только если клавиши были нажаты, пока рабочий стол X был активен. А если система переключится на рабочий стол Y, то сообщения прилетать не будут. Пичалька, придётся думать, как программу обновить. Есть вариант с хуками, но я хуки зависят от разрядности процесса, в который библиотека будет внедряться, а я пока в этом не разбиралась =_=

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.