@Linda-chan

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

Linda-chan

Достать старые бэкапы, которые обычно делаю перед тем как начать вносить изменения в программу. Распаковать их. Последовательно сверять WinMerge, пытаясь понять, что изменилось. Наваять ченджлог.

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 и для удаления записей, но в таком варианте можно хотя бы проинспектировать, что будет удаляться. Так что пока так.

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

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