Как стать автором
Обновить

kbTrainer — «Перезагрузка»

Время на прочтение 9 мин
Количество просмотров 714
День добрый Хабралюди!

За этот топик многоуважаемое НЛО прислало мне инвайт.
Инвайт я впоследствии «за малым» эпически не профэйлил
(спасибо gmail, что у них точка в логине ничего не значит).

Предупреждаю сразу, печатаю я быстро, так что букв будет много.

Топик посвящён вот этой штуке .
Это addon к Mozilla FireFox, который добавляет в него kbTrainer .

Если кому-нибудь ВДРУГ нужен оф. сайт.

Дальше рекомендуется не читать.

Топик бесконечно нудный!





Эмм… Я его тут «слегка» подредактировал, конечно, хабракат добавил и т.п.
Тем не менее Топик получился унылым и занудным

Ответ на вопрос «Почему»…

Как-то уже давным-давно я обнаружил у Вас на сайте запись об этой моей «поделке».

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

А тут, в выдаче Яндекса странице так на десятой — такая замечательная статейка.

Кстати, именно после этого я вообще узнал, что есть, оказывается Хабр, Лепра и «Тематические Медиа»…
В общем — наткнулся. Пробежался. Оказалось — весело.

Налив чайку и запасшись плюшками я решился, наконец, прочитать ВСЁ с толком и с расстановкой…
Ведь комментарии — это самое интересное!

Подумав еще немного, сходил за валерианой и корвалолом.
Как оказалось не зря… После некоторых «перлов» пришлось себя слегка откачивать.

Потом очень, знаете ли, хотелось пообщаться с комментаторами…

В итоге я понял, что даже если получу инвайт, то это всё будет «некропост».
А некропост — это антисоциально.
Но, тем не менее, вначале я старался.
Я не дизайнер, для инвайта нужна была какая-то картинка…
Еще можно было написать статью… Но я не писатель.
Писать о том, что сделал — да чего я, собственно, такого сделал, о чем стоит писать…
А о kbTrainer уже написали вместо меня.
В общем, я решил, что желание ответить «комментаторам» не стоит усилий по получению инвайта.
Статьи на хабре можно читать «и так», а значит — «нефих-нафих»…

Что же произошло Теперь, и зачем я, собственно, это пишу всё сейчас.

А произошло то, что дома у меня завелась Ubuntu 8.10.
Холил её и лелеял, но HTA запустить не смог.
Руки у меня растут как у большинства «нормальных людей», в общем «не сисадмин» я.
C/C++ не знаю, исходные коды Linux не понимаю, ядро сам не пересоберу…

Зачем оно (Ubuntu) мне понадобилось?
Видите ли, работаю я, так сказать, в компании, которая борется «за права».
Собственно, у меня есть ноут, рабочий, на нем «вынь да положь»…
А дома, а дома — чтобы не повадно было.

Такая, в общем, приключилась ситуация…
Моё «творение» осталось «на работе», и дома его теперь не оказалось.
Печально, грустно, обидно — в конце концов!

Шли месяцы, я грустил, но ничего не делал — ну, работа, быт, знаете.
" — Хобби это не такая штука, на которую стоит серьезно отвлекаться".

Продолжение случилось недавно, и, как обычно, внезапно.
«По долгу службы» я познакомился с «замечательной [… впишите нужное здесь...]» — «ADODB.Stream».
Кто знает — тот поймёт.
Я понял, что уже около года не обновлял своё детище…
«Ну и что, что только для Windows?!» — подумал я — «зато ведь если добавить работу с Latin1, UTF, KOI — то скольким юзерам я еще „открою путь к совершенству“!

Такая вот пришла мысль.

Исправление кода заняло пару десятков минут.
После чего на всех „моих“ каталогах версия была незамедлительно обновлена.

Но тут случилось Чрезвычайное Происшествие.
Понимаете, кроме того, что я не сисадмин, я ещё и не совсем программист (или совсем не программист).
У меня нет специального „программистского“ образования.
Себя представляю „нормальным таким челом“, экономистом-математиком по специальности. Нет, ну, когда-то я учился в университете, не самом плохом. Нам, как будущим экономистам, и немного, опять же „будущим“ математикам преподавали там Word, Excell, Visual Basic. Были даже спецкурсы по Oracle (но так, „без фанатизЬму“) и математической логике.
Как выразился однажды мой хороший друг-программист: „Ты человек, испорченный Visual Basic'ом“.

»Программирую" как алкоголик — «запоем».
Сколько раз уже зарекался — "! не начинать снова! ".
Это портит, знаете ли, размеренную жизнь тихого обывателя.
Портит примерно как в том бородатом анекдоте про «вот и сейчас...»
Но, тем не менее, ЭТО — случилось, и вот, сейчас час ночи, а я снова не сплю.
У меня, так сказать, очередной «запой».

Ну да ладно…
Тем не менее, когда ЭТО случается, то, на мой взгляд выходит — неплохо…

Как ЭТО началось?
После окончания учёбы мне пару раз подворачивалась «халтурка», типа «сделать сайт», но то было время «становления RuNet», и для клиентов статический сайт «со снежинками» к новому году считался «Верхом Совершенства».

Именно с тех пор остался интерес к JavaScript.
Ведь по сути это единственное, что мне тогда приходилось делать.
К сожалению, отсутствие навыков в алгоритмизации и чтении мануалов часто приводило к казусам.
Я регулярно «изобретал велосипеды». Сам рисовал эти снежинки, делал деревья «как в Проводнике»
(на таблицах, то, что списки это проще и веселей я узнал гораздо позже).
В общем — наелся. И бросил. Надолго.

В последствии время от времени приходилось практиковаться, но это уже были корпоративные сети и WSH.
К 2005 году я плотно «подсел» на 1С, и навыки в СоздатьОбъект(" Scripting.FileSystemObject") существенно помогали.
Потом я и 1С забросил, занялся нормальной обывательской работой — устроился в банк инженером.

*** шли годы ***

Летом 2007 года я решил научиться БЫСТРО! печатать.
У многих было, у некоторых, как видите — не прошло.
В чатах я не сижу, на форумах бываю редко.
Мне почти никто не пишет писем, и я почти никому не пишу.
Вместо всех этих замечательных прелестей цивилизации я пользуюсь телефоном.
Но тут, мне показалось, что иметь в резюме строчку «скоростной набор текста Ru(***)|EN(***) символов» будет весьма весомым аргументом в мою пользу.

Вывод — качать клавиатурный тренажер.
Потыкался — нашел Соло.
Оказалось, что оно стоит денех… не ахти каких, но — стоит.
Пройдя в демке пару уроков я понял, что это психологическое давление — «не для слабых умов типа меня», выдерживать его и дальше не в состоянии, нужно искать альтернативу…
Впоследствии, правда, Соло я всё-таки купил.
Не себе, другу на День Рожденья. Предварительно я, конечно, посмотрел на то, что покупаю.
Было «уже лучше», и мне показалось что как небольшой презент это будет «кстати».

Но — продолжим: Яндекс нам поможет — нашел и скачал Stamin'у.
Потренировался с месяцок, догнал до 250…
В процессе самосовершенствования мне, как «творческой личности» , с «богатым внутренним миром» приходили в голову разные мысли по улучшению этого замечательного произведения программистского искусства.
Сначала я написал Алексею Казанцеву (автор Stamin'ы) пару писем с вопросами «возможно ли?».
Алексей ответил что-то в духе «не программировал уже 3 года» и т.д. и т.п…
Потом, почитав форум, я понял, что такие «запросы» приходят к нему регулярно.
Нельзя сказать, что я сильно расстроился — Stamina чудесный продукт.

Тем не менее, что-то так «засело».
И вот, однажды, меня осенило: А я ведь могу сделать «это» на JavaScript!
Так получилось, что я уже был знаком с тем, что есть, оказывается HTML Applications
Взволнованный я вышел во двор… сел на лавочку и закурил.
Идеи «роились» в голове. Последняя была не самой удачной…
Но, тем не менее, звучала так: «Всё! Нет, ВСЁ будет написано на скриптах!»
Конечно, внутри скриптов я использовал и создание HTML-тэгов и обращение к свойствам CSS. Но изначальное решение о том, что 99% кода будет через JS, больше не менял. Просто так, ведь «мы лёгких путей не ищем». Мне было важно, понимаете ли, доказать себе, что это можно сделать исключительно кодируя скрипты.
Такая вот сверхзадача…

Потом настали «тяжелые времена» бессонных ночей, опозданий на работу, переполненных пепельниц и негодующих родственников. Но зато где-то внутри себя, глубоко-глубоко — я был в нирване, ведь я — Творил!
Безусловно, «отсутствие возможности» писать на HTML и CSS мешало, но не сильно. Я «забацал» очередной «велосипед». Сделал короткие линки ко всем нужным мне объектам и свойствам, этого хватило. Мысль о том, что есть JQuery и Prototype мне как-то даже в голову не приходила (ну не знал я о них), как и мысль о том, что стоит поискать нечто подобное. Ведь «Мы русские программисты» — презираем чужой код! Такой вот наивный. Кстати, может оно и к лучшему. Код ведь на 100% получался собственный, мой, мной же «вылизанный». Первое, с чем я столкнулся, что большие скрипты очень неудобны. Решил написать свой pre-Loader. Понятие AJAX я краем уха слышал, но толком ничего не читал… Таким образом я в итоге выяснил, что, оказывается, даже если сделать массив путей и скормить его на загрузку, то не факт, что скрипты загрузятся последовательно. Загрузка же асинхронная, что-то медленней, что-то быстрей, даже работая на локальной машине… Это печалило, но спас readyState. Были и другие «проблемы», в частности «замечательная работа» Scripting.FileSystemObject с большими текстовыми файлами (как оказалось и 200 килобайт — это дохрена!!!). Пришлось «пилить их на кусочки по 8 килобайт». Но Самым Страшным было то, что непосредственно из JavaScript невозможно узнать текущую раскладку, нужно делать COM объект… А я этого не умею. В итоге пришлось писать свой обработчик для Ctrl, Alt, Shift. Зато мне теперь не важно какая у пользователя раскладка… у меня выбрана та, которая у меня выбрана… Если Бы Вы знали сколько времени ушло на добавление реакции к CapsLock! (решил сделать и такую фичу, т.к. видел в линухах) Он, оказывается, не нажимается же, гад…
Ну да «ф топку», сделано же уже…
Так или иначе, но в итоге к январю появилось то, о чем потом написали на хабре.
Могу лишь заметить, что «к концу разработки» писать стало настолько лень, что я уже перестал создавать объекты, и «в хвост и в гриву» дергал innerHTML, «клал», так сказать, в него. :)

Разработка была завершена. «Уставшие но довольные они возвращались домой...»
Оставалось сделать всего одно дело…
Просто появилась мысль о том, что можно написать что-то для себя, а потом отдать другим на растерзание.
Мотивация ясна — «рост самооценки».
(опять же, если нужно — можно будет поставить галочку в резюме)
Но перед тем как выложить это в интернет нужно было сделать еще кое что весьма ВАЖНОЕ…

Кушать чужой хлеб — плохо. Нужно хотя-бы спросить разрешения.
Т.к. с Алексеем я уже был слегка знаком, то, собственно, вот вопрос.
И, к моей неописуемой радости там же лежит и ответ.
(если кого-нибудь Вдруг интересует достоверность переписки — могу выслать)

Ну и вот, 5 марте 2008 года появился kbTrainer, вместе с ним появился сайт code.google.com/p/kbtrainer.
Я высылал программу Алексею, и он даже повесил у себя на сайте новость (пока еще висит, от 5 марта, на всякий случай вот скриншот ).

После такого «исполнения» случилось неожиданное. Еще полгода я занимался разработкой новых версий и исправлением ошибок. Трудно, тяжело… Я ведь не рассчитывал, что «нерадивые пользователи» будут это, ну, пытаться печатать. Так, с версии 1 дошел до версии 1.23U (U появилась как результат перекодировки всего кода в UTF 16LE).

Потом, опять же примерно на год, до тех пор, пока не узнал об ADODB, к правке кода больше не возвращался. Но вот узнал. И 11 августа появилась версия 1.25 (последняя на данный момент) и теперь считаю, что U это поддержка юникодовых кодировок при загрузке книг в библиотеку.

***

Дальше…
К сожалению, в августе 2009го у меня дома уже стоял Linux. Отделаться получасом кодирования версии 1.25 не получилось — мгновенно вошёл в раж и начался очередной «запой».
Просто я уже знал, что в Mosilla есть FireFox, а в нем есть XUL, и addon'ы пишутся на JavaScript.
Чем не повод: «И тут Остапа понесло...»

Итог: 17 сентября 2009 года появилась XUL версия kbTrainer.
Код существенно модифицирован, не только для работы с XUL но и для разных других полезных мелочей.
CSS теперь тоже «можно» (шкурки и клавиатурные раскладки).

В Линуксе работает, ура!
Правда, мой линукс крадёт смену раскладки, и вместо кодов клавиш выдает «0», так что теперь есть волшебная кнопка F5, которая принудительно раскладку меняет.
В общем, кое-что кое-где еще тестируется и дописывается, но, так или иначе.
Получается, что «движение за права Microsoft», привело меня к творческому процессу.
Так что — спасибо Билли! Это такая шутка, «если чо».

Ага, ну и вот…
Код открыт, пользуйте на Ваше усмотрение.
Код общения с API FireFox нахально переписан из исходников на https://developer.mozilla.org/En (ну, там внутри есть комментарии откуда и что взято).
Пожалуйста, если ВДРУГ Вам расхочется почему-то использовать JQwery и Вы решите взять мой mixer.txt (ну вдруг) — сделайте линк на сайт kbTrainer в каментах.
Если кто-нибудь захочет дописать «что-нибудь своё» — милости прошу:
http://code.google.com/p/kbtrainer/wiki/slkm

Если кто-нибудь захочет прямо сейчас скачать сам Addon:
https://addons.mozilla.org/ru/firefox/addon/14396

Можно и у меня на сайте (правда, там не настроена выдача заголовка для XPI, ну не знает Google, что это за зверь такой, так что сохраняем и перетаскиваем на FF):
http://code.google.com/p/kbtrainer/

Да, кнопка сама на панели не появляется, добавьте, пожалуйста, самостоятельно из «Вид -> Панели инструментов -> Настроить». Это рекомендации Mosilla, не я это придумал. Может потом, как-нибудь, доделаю автоматический вывод кнопки на панель, но уже не сейчас, ибо — устал я чегой-то полтора месяца снова не спать.

Зачем
Можно сказать, что я почти ответил на вопрос «зачем я это написал сейчас».
Отвечу «до конца», чтобы всё было ясно: хотя вероятность того, что на этом сайте случайно появилась бы очередная статья про kbTrainer ничтожно мала, тем не менее я не хочу переволноваться, узнав о ней не лично, а из выдачи Яндекса.

:)

Как со всем этим знанием жить дальше...

Камрады, если кому-нибудь всё это понравилось и «стало жутко интересно».
Я приглашаю вас «присоединиться к проекту»:
можно сюда
или сюда

Кроме того, можно оставить комментарии на страничке аддона, там внизу.

Наконец, есть существенные вопросы: тут (XPoint.ru).

В общем — любой помощи искренне буду рад.
Обещаю рассказать о Вас в справочной системе и т.п.

Спасибо, искренне Ваш went.
Теги:
Хабы:
+5
Комментарии 14
Комментарии Комментарии 14

Публикации

Истории

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн