Между прочим: минивыпуск, отчет
Всем привет!
Вчера моей страничке исполнился ровно год. Юбилей. В преддверии этого знаменательного события я устроил себе выходной и почти ровно две недели ничего сюда не писал, ибо решил отдохнуть от своего хобби и углубится в основную работу.
Нельзя сказать, что я позволил себе бездействовать и ничего не делал для Интернет-общественности целых две недели. Сегодня, чтобы плавно начать после долгого простоя я, для старта, опишу все то, что я успел сделать в свободное от работы время.
С момента приобретения 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.
Следите за обновлениями! :)
На этом список Потрясающих Открытий и Бесконечно Полезных Деяний, Сделанных Мной Для Человечества на этот период заканчивается и мне пора прощаться, так как гору Накопившихся Дел и Срочной Работы необходимо все-таки разгрести. Как только я это сделаю, попробую вернуться к прежнему ритму, всем пока!
Пишите!