Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Между прочим: минивыпуск, отчет

Всем привет!

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

Нельзя сказать, что я позволил себе бездействовать и ничего не делал для Интернет-общественности целых две недели. Сегодня, чтобы плавно начать после долгого простоя я, для старта, опишу все то, что я успел сделать в свободное от работы время.

С момента приобретения Casio PV у меня чесались руки сделать что-то полезное для всех тех, кто, как и я приобрел этот замечательный наладонник, приложить руку к популяризации этого замечательного продукта.

Для того, чтобы писать программы на C нужно учить API, а у меня на это нет ни времени, ни желания, серьезные программы на OW-BASIC, как я убедился на собственном опыте, писать не получится — так устроена среда разработки, так что я решил обратить свой взор на другие аспекты.

Первое, что пришло мне в голову, это русифицировать PV Application Manager. Это основная программа, с которой довольно часто сталкивается любой пользователь PV — именно через нее происходит обновление программного обеспечение, удаление программ и их данных, изменение версии операционной системы.

Так уж традиционно повелось, что основной язык у нас в стране — русский и с английским у большей части населения возникают некоторые проблемы. Второй проблемой нашей страны является наличие многообразия стандартов русских кодировок KOI, ISO, MAC, WIN, DOS — далеко не полный перечень слов, которые можно услышать в сочетании со словом «кодировка». Естественно, что русскоязычная часть владельцев Casio не осталась в стороне от дел и выпустила в свет кодировку, которую я условно называю Casio-R.

Фирма Casio, соответственно, мало интересует та и другая проблема, поэтому их замечательный PC-Sync (насколько я понимаю, стараниями программистов из фирмы «Белка») знает, что есть русский язык, а Application Manager — нет, поэтому говорит он на английском и, вместо русских букв в названии программ, показывается разные интересные знаки.

По мере поступления обеих проблем я их попытался решить. Сразу скажу, что сделать это мне удалось, и новую версию PV Application Manager можно скачать вот отсюда. К архиву прилагается краткая инструкция по пользованию на русском языке и небольшой список изменений.

Добавление от 06.02.2002. Больше распространением патча к Минибуку я не занимаюсь. Из уважения к труду Пу Бо.

Как известно всем тем, кто приобрел PV (а если не известно, то срочно рекомендую об этом узнать) единственной приличной читалкой текстов для PV была, есть и остается программа MiniBook программиста Пу Бо.

К сожалению, последние версии MiniBook обладают кучей приятных возможностей и неприятным багом — через 30 дней они прекращают функционировать. Оригинальный патч от Пу Бо стоит всего 8$ и я бы уплатил эти деньги, если бы не отсутствие у меня, как и у многих россиян свободноковертируемого пластика.

SSC взяла на себя инициативу по упрощению процедуры регистрации для жителей России и, что немаловажно, по снижении цены продукта. Но, поскольку я устал ждать, когда это произойдет я решил справится с проблемой собственноручно и выпустил патч для версий 2.53 и русифицированной 2.54.

Технические аспекты. Данный патч, написан с использованием Windows Script Host на языке VBScript (поскольку JScript пытается любой бинарник прочитать в Unicode) и должен быть сохранен, как файл patch.vbs, запускается он в среде Windows 98, ME, 2000, XP и NT c Service Pack, может, после некоторых танцев, заработать и на Windows 95.

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

Вообще, этот вопрос довольно интересен. Помню, во времена DOS текстовая информация о патче распространялась отдельно от программы, которая умела патчить что угодно, руководствуясь такой информацией. Таким образом соблюдалась законность, но это было жутко неудобно — кроме патча надо было отдельно искать программу, которая с ним работает или вносить изменения руками.

Сейчас все больше обретают популярность программы на Perl и других подобных языках — тенденция, на мой взгляд странная, так как в Windows уже давно существует так называемый Windows Script Host, некая замена морально устаревшему языку BAT-файлов, которых хотя и развивается Microsoft, но довольно вяло.

Поскольку я не видел патчей, написанных на WSH, то объявляю этот патч первой ласточкой. :) Делал я его так, чтобы сохранить возможность простой модификации, так что под многие задачи его даже не придется модифицировать.

' This is not patch. It's demo startup code only.
' Это не сам патч, а только демонстрационный стартовый код.

Sub Patch (name)

        Dim fso, f, file

        FileLength1     = 90020
        FileLength2     = 96484
        CannotPatchMsg = "Cannot patch file. Incorrect version."


        Set fso  = CreateObject("Scripting.FileSystemObject")
        Set f    = fso.GetFile(name)
        Set file = fso.OpenTextFile(name, 1, False)

        lenf = f.size

        If lenf = FileLength1 Then
                Addrs = Array ( ... )
                Sours = Array ( ... )
                Dests = Array ( ... )
        ElseIf lenf = FileLength2 Then
                Addrs = Array ( ... )
                Sours = Array ( ... )
                Dests = Array ( ... )
        Else
                WScript.Echo CannotPatchMsg
                file.Close
                Exit Sub
        End If

        s = file.Read (lenf)
        file.Close

        K = 0
        P = 0

        For I = LBound(Addrs) To UBound(Addrs) Step 2
                For J = Addrs(I) To Addrs(I+1)
                        ch = Asc(Mid(s, J+1, 1))
                        If Sours(K) = Hex(ch) Then
                                s = Left(s, J) & Chr(Dests(K)) & Right(s, Len(s)-J-1)
                        Else
                                If Dests(K) = ch Then
                                        P = P + 1
                                Else
                                        WScript.Echo CannotPatchMsg
                                        Exit Sub
                                End If
                        End If

                        K = K + 1
                Next

        Next

        If P=0 Then
                Set file = fso.OpenTextFile(name, 2, False)
                file.Write(s)
                file.Close

                WScript.Echo "File was successfully patched."

        ElseIf P = UBound(Dests)-LBound(Dests)+1 Then
                WScript.Echo "File is already patched."
        Else
                WScript.Echo CannotPatchMsg
        End If

End Sub


If WScript.Arguments.Count = 0 Then
        WScript.Echo "Written by Evgeny Stepanischev (https://bolknote.ru)" & _
        Chr(13) & Chr(10) & _
        "        Patch for Pu Bo MiniBook v2.53 and 2.54R (PV)"  & Chr(13) & Chr(10) & _
        "                     Usage: patch.vbs <bin_file>"
Else
        Patch(WScript.Arguments(0))
End If

Да, забыл сказать, я не несу никакой ответственности за возможную порчу данных PV или MiniBook при пользовании патчем, хотя у меня все работает нормально и нормально работало, когда я переводил год на 2010. Только Пу Бо знает какие сюрпризы он подготовил любителям халявы. :)

Хорошая новость для тех, кто использует мой JUnix. Так как неожиданно поднялась активность на этом сайте (обычно так бывает после публикации ссылки в каком-то относительно популярном издании) я решил произвести некоторые изменения.

На днях, если пройдет тестирование, выйдет новая версия этой программы. Будут исправлены некие застарелые баги, добавлены новые возможности, в частности поддержка прав на разделах cookies, не раздвигающий текст курсор и устройство /dev/random.

Следите за обновлениями! :)

На этом список Потрясающих Открытий и Бесконечно Полезных Деяний, Сделанных Мной Для Человечества на этот период заканчивается и мне пора прощаться, так как гору Накопившихся Дел и Срочной Работы необходимо все-таки разгрести. Как только я это сделаю, попробую вернуться к прежнему ритму, всем пока!

Пишите!