@Linda-chan

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

Linda-chan

А вот интересно... Можно ли сделать кастомную reparse point так, чтобы хранить в ней какие-то свои данные, не связанные с файловой системой? Типа как маскировка данных в файловых потоках, только ещё круче, что прямо код надо писать, чтобы вытащить эти данные.
// Возможно, этот пост содержит часть ответа на вопрос из предыдущего.

Linda-chan

Написала код, который изучает симлинк (на самом деле – reparse point) и выдаёт то, на что симлинк ссылается. Проверила – работает. Почти приступила к применению, но тут заметила, что в некоторых случаях код работает неправильно, выдаёт странные результаты. Начала изучать двоичные данные, которые парсит программа, и поняла, что что-то с ними не так: одни поля налезают на другие, хотя в других случаях всё с полями нормально. Начала копаться в MSDN. Оказалось, что документация про всему этому есть, но какая-то туманная, везде недосказанность, функций всего ничего, объясняются только общие концепции. Продолжила копать и повторно открыла для себя раздел «Open Specifications», в котором предельно чётко описаны все структуры, которые в этих самых reparse points используются. И оказалось, что в MSDN была описана одна структура, а в реальности используются другие структуры, по одной на каждый тип симлинков. А та, что описана в MSDN – вообще для сторонних реализаций. В итоге код придётся переписывать и снова всё тестировать. Но я всё равно не понимаю, чего Microsoft так тряслись над этими reparse points так, словно это пентагоновский секрет?

Linda-chan

Почему структура GUID не соответствует текстовому виду этого самого GUID?

Linda-chan

Узнала, что JavaScript поддерживает запись двоичных чисел как «0b10101010». В смысле, в принципе поддерживает двоичные числа.

Linda-chan

Не, я знаю, что For Each, не смотря на использование варианта, работает быстрее, чем просто For с индексом, но чтобы настолько... Коллекция, 240 тысяч элементов типа Long, с которым в цикле производятся действия (коллекция перегоняется в массив). For с индексом пережёвывает коллекцию за тридцать-сорок секунд. For Each проносится по коллекции за 0.12 секунд.

Linda-chan

Научилась делать ботов-уведомляторов для телеграмки на VB. Документация по API, конечно, написана в лучших традициях Роберта Гейла. Особенно порадовало описание отправки картинок и файлов на сервер, типа, можно указать URL, можно указать ID, а можно «КАК БРОУЗЕР ЗАГРУЖАЕТ КАРТИНКИ НА САЙТ». Я час ломала голову, пока не додумалась, что оно в отправляемой форме хочет имя файла, даже если это имя потом нигде не будет использоваться.

Linda-chan

Я тут пишу кое-что, и снова столкнулась с такими мерзкими, но неизбежными вещами, как байтовые буферы, в том числе запихнутые в строки. Всвязи с чем два наблюдения.
1. У VB нет встроенных механизмов, чтобы скопировать часть одного байтового буфера в другой. CopyMemory().
2. Строки в VB – юникодные, но могут быть ANSI, если хорошо попросить. Понять, в каком формате строка, очень трудно, но сам VB знает, что там внутри.

Linda-chan

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

Linda-chan

В Windows можно выбрать локаль для пользователя, и от неё будет форматироваться всякое вроде чисел и дат. А чтобы форматировать оные числа и даты, есть ряд функций вроде GetNumberFormat() и GetDateFormat(). Они позволяют отформатировать что-то, используя собственную маску, используя системную маску или то, чем системную маску переопределил пользователь в региональных настройках. Конкретно дата-время форматируются двумя разными функциями, которые выполняют свою работу хорошо, но всё же один нюанс остаётся за кадром: порядок следования. Ну, тоесть, я с детства знаю, что сначала идёт дата, а потом время: возможно, в школе так научили. Но вот есть программы вроде Notepad2, которые сначала вставляют время, а потом – дату. И в локали нет ничего на эту тему, только отдельный формат даты и отдельный формат времени. И как быть? Вообще, есть какие-то правила на сей счёт?

Linda-chan

Два часа билась над алгоритмом перевода химетриков в пиксели через миллиметры и дюймы. Пришлось даже писать для себя мини-гайд о сути операции деления. Совсем плохо стало у меня с математикой. Последствия коронки?

Linda-chan

Фан фэкт: авторка отборного NTR по «Ragnarok Online» какое-то время была VB разработчицей. Возможно, это как-то связано.

Linda-chan

Стряхнула пыль с подзабытого искусства писать апплеты панели управления Windows.

Linda-chan

А! Чего я занялась сертификатами?
Я тут пытаюсь писать новую библиотеку для HTTP запросов, поскольку старая, использующая православный WinInet, начала не справляться с современными интернетами даже в современных виндах. Хотела заюзать WinHTTP, но и он тоже где-то позади прогресса.
Забавно, что сначала MS придумала одну библиотеку для интернетов, потом другую, потом внедрила их в другие библиотеки и технологии, а потом просто забила. Сейчас, если что-то и существует, то где-то в дотнете и не понятно, в каком состоянии.
Ну в итоге я и решила делать костыль с запуском wget на фоне, хоть это и не мой метод. С ним пока всё нормально, так что...
Ну и где-то во время тестов обнаружилось, что wget ругается на мои сайты, говоря, что у меня неправильный сертификат. Разработку пришлось отложить в сторону и заняться сертификатами.
Не люблю такие вложенные дела =_=

Linda-chan

В поисках одного кода нашла модуль, который писала ещё на первой работе. Там проверялось имя компьютера на соответствие имени компьютера, за которым я работала. Ностальгия...

Linda-chan

Зачем-то написала библиотеку, совместимую с RunDLL32.

Linda-chan

Культура «пет-проектов» должна умереть.
Я за утилитарный подход: нужна тебе какая-то программа, чтобы делать то, что другие не могут или могут, но не так, как тебе нужно – открываешь среду разработки (или текстовый редактор), пишешь код, а потом его используешь. Со временем у тебя таких программ набирается тонна, и ты все их используешь с той или иной периодичностью, выпиливая баги и модифицируя под новые условия. Можешь даже делиться с народом удачными или потенциально общественно полезными программами.
Ну, типа как, не нравится тебе как дверца в шкафу весит – берёшь, перевешиваешь её и пользуешься. Можешь даже кому-то ещё перевесить, если кто нуждается.
В культуре же «пет-проектов» оные проекты предстают в виде эдакого особого объекта, который необходимо выдавить из себя и упорно заниматься им хотя бы раз в день.
Одни вопрошают, каким бы «пет-проектом» заняться, ибо ничего придумать не могут, а надо. Другие рекомендуют придумать себе «пет-проект» и регулярно заниматься им, чтобы потенциальный хээр видел, что ты – серьёзный кандидат, «пет-проектом» занимаешься, а не объебос какой-то. Третьи жалуются, что десяток «пет-проектов» не оставляют времени работу работать и личной жизнью заниматься.
Ну, вы же не ломаете с утра до ночи голову над вопросом, какой бы гвоздь куда-нибудь вбить, а потом ежедневно гнуть его по-всякому, чтобы однажды кому-то его показать и доказать, что ты серьёзный чел, с гнутым гвоздём в стенке, а не объебос какой-то.

Linda-chan

Написала тестовую программу, которая парсит заголовки Win16 и Win32 программ, показывая интересные данные вроде версии подсистемы, типа подсистемы, контрольной суммы, имени и описания модуля, ну и так далее. А теперь не знаю, что делать со всем этим кодом.

Linda-chan

Помнится, в Windows 9x для удалённого запуска компонентов требовалась специальна программа на сервере. Одна постоянно висела в панели задач, но работала надёжнее, в вторая как-то фоном, но с ней вечно какие-то проблемы были. И ещё была утилита, которая позволяла прямо в реестре указать, что какой-то компонент должен выполняться на удалённой машине. Только это было реально двадцать лет назад, и я даже названий не помню этих программ, только иконку первой и её окошко. Ну и то, что вторая называлась dcomcnfg.exe, и нынче она вызывает MMC с оснасткой управления DCOM'ом.

Linda-chan

Неожиданно удалось запустить ActiveX компонент удалённо. Тоесть, на одной машине зарегистрирован сервер ActiveX EXE, написанный на VB6, а на другой его объект пытается создать клиент, написанный тоже на VB6. При чём, раньше у меня всё время были какие-то проблемы, а в этот раз просто накидала тестовый проект, зарегистрировала, а на другой машине просто сделала «CreateObject(ProgID, ComputerName)», и всё. Клиент рулит объектом у себя, а код исполняется на другой машине. Единственное что, пришлось файрволл поковырять.

Linda-chan

If you start off on Python before learning more beginner-friendly languages like JavaScript or Ruby [...]

https://medium.com/codex/le...-choice-5c8af5cb45a8
Кстати.

All things considered, why not start off on a watered-down version of Python rather than dive right in?

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

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