Достать старые бэкапы, которые обычно делаю перед тем как начать вносить изменения в программу. Распаковать их. Последовательно сверять WinMerge, пытаясь понять, что изменилось. Наваять ченджлог.
Тег программизм в блоге Linda-chan
Почему на FB DOS приложение написать можно, Win32 приложение написать можно, а Win16 приложение – нет?
Решила на 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() и вычленением екзешника.
Поборола в программе баг, который проявляется в Windows 98. Обратная совместимость at it's best!
Печально, что в интернетах нынче днём с огнём не сыщешь инструкций по сетевой настройке вибишных ActiveX EXE в современных системах. В последний раз я это дело запускала в Windows 98 (и вроде бы в XP) через DCOM и Remote Automation, а сейчас никак не могу.
Кстати, ранее я похожую фигню проворачивала с постилкой на Тумблер. API v2 в VB я не осилила, поэтому просто использовала генерирующийся для каждого запроса скрипт на Руби, где уже был клиент для Тумблера.
Заработал постинг на Dreamwidth. Сначала они сделали форвардинг на HTTPS, и мой HTTP клиент для прог на VB отвалился (всё руки не дойдут переписать и добавить поддержку HTTPS). Не беда, взяла WinHTTP клиент. Но тут оказалось, что на DW ещё и шифрование подкрутили, а у меня XP. В принципе WinHTTP работает на Нанами, но мне лень запускать постилку на отдельной машине. Попробовала пару костылей, в том числе всёже запуск куска постилки на Нанами через DCOM, но что-то ничего не заработало. В итоге плюнула и запилила вызов WGet из программы. UNIX way, блеать! Осталась, конечно, пара недоработок, но продукт внутренний, и по ходу дела я доведу всё до ума.
Сначала не могла понять, о чём ведут речь джентльмены в камментах:
http://juick.com/m/2952793#3
Всё же я никогда не привыкну к тому, что в светлом настоящем использование переменных без какого-либо объявления – норма и признак хорошего языка.
If Ret = True Then
90% ПО для нового американского истребителя F/A-22 написано на… Ada
Судя по тому, что жизненный цикл современного боевого самолета достигает 30-40 лет, языку Ada светит долгая и счастливая жизнь
Люблю условную компиляцию в VB6. Казалось бы, если какой-то блок выкидывается по условию, то IDE и компилятор должно меньше всего беспокоить, что там происходит. Ан нет. Очепятаешься в таком блоке – ошибка. Объявишь переменную не с тем типом – снова ошибка. Последнее особенно досадно, ибо условная компиляция может использоваться для выкидывания кода, который, скажем, использует хитрую библиотеку. Типа, если на машине зарегистрирована библиотека X, то подключаем её к проекту, ставим нужное условие, скажем, в свойствах проекта и компилируем с ней. Если нет – обходимся своими силами. А не работает – дай библиотку, IDE не узнаёт тип данных, который в екзешник всё равно не попадёт. Единственная польза от такого поведения – хак с именами элементов перечислений, которые любят терять регистр символов, но и тот – борьба с багом самой IDE.
Пока одни рубят на собеседованиях кандидатов, использующих строки с разделителями вместо Array(), другие пишут код как в ответе вот тут:
https://otvet.mail.ru/question/169097620
При чём это код, взятый из коммерческого продукта.
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.
Как хранить конфиги скриптов? Использовать отдельные файлы или системные средства (текстовые конфиги или реестр в Windows, например)? Использовать отдельные скрипты на том же языке с инициализацией переменных и вызывать их из главного скрипта? Или прямо в самом скрипте писать инициализацию переменных и пометки: «Настраивать здесь»? Кто как делает?
Сколько лет прошло, а до сих пор бомбит от этой истории. Гибридная программа с атомами и драйвером, блеать.
https://ithappens.me/story/9251
Невероятно! Уже 35 камментов в обсуждении VBA, и до сих пор ни одного про GoTo!
https://cauf.point.im/mirrm
Наконец-то кто-то объяснил, как выковыривать сообщения, отправляемые процессами через OutputDebugString()!
https://www.codeproject.com...DebugString-capturer
Теперь бы ещё понять, почему до первого запуска сисинтерналовского DebugView вызов OutputDebugString() без подключенного отладчика приводит к исключению, а после первого запуска – нет. Ну тоесть ставим голую винду, делаем в программе OutputDebugString() – ловим исключение. Запускаем DebugView, перезагружаемся для верности, делаем в программе OutputDebugString() – исключений больше нет. Ну и хотелось бы знать, почему IsDebuggerPresent() выдаёт TRUE, если запущен DebugView, если на деле он ничего не отлаживает, а просто читает буфер.
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.
Интересно, с помощью MSXML можно красиво отформатировать XML одной командой, не упражняясь в беготне по дереву и вставке пробелов перед узлами?
Могло быть и хуже.
https://gist.github.com/Lin...403396b19f9b458b1758
Я для обновления сертификатов использую getssl с валидацией через записи в доменах, которые живут на DigitalOcean. Со временем таких записей становится слишком много, а ручками чистить лениво. Вот и написала такую фигню: используя doctl, генерирует Bash скрипт (или BAT файл, если убрать заголовок), который уже делает всю работу. Я могла бы вызывать doctl и для удаления записей, но в таком варианте можно хотя бы проинспектировать, что будет удаляться. Так что пока так.