Pull to refresh

Точное время 0100 часов 010111 минут

Reading time3 min
Views1K

KT102B1_012.png - image uploaded to PicamaticДолго выбирал блог между «Я безумный», «Странные вещи» и «Я пиарюсь»...



Началось всё с того, что мне подарили двоичные часы. Оказалось, что двоичная система не такая уж неудобная.



Под катом вы узнаете, что случилось с моим мозгом («Я безумный»), что я сделал («Странные вещи»), и как такое же заполучить себе («Я пиарюсь»).



Начнём с того, что я сделал двоичные часы на рабочий стол


Сперва это было сделано на Python/Tkinter, но потом, я переписал их Qt. Без наворотов. Должно собираться везде, я тестировал под UNIX и под Windows (MinGW) — собирается. Выглядит так (цвета можно настроить любые):



zoc.png - upload images with Picamatic


Есть меню с настройками немногочисленных аспектов внешнего вида:



zoc-menu.png - image uploaded to Picamatic


Эти настройки можно сохранить.



Если хотите поменять размеры, то можно подредактировать файл zoclock.h. Если что-то не понравится — буду рад комментариям.



Сайт проекта zoclock.googlecode.com
Прямая ссылка на исходники zoclock-1.0.0.tar.gz.
upd: Новая версия — теперь с «always on top»! :-) Прямая ссылка на исходники zoclock-1.0.1.tar.gz (планирую ближайшее время учесть и другие пожелания).



Собирается всё двумя командами:



qmake
make

Команды могут зависеть от вашей системы. На пример, если у вас Windows/MinGW, то вместо make надо использовать mingw32-make; если у вас FreeBSD, то вместо qmake пишем qmake-qt4 и так далее. Суть от этого не меняется.



А с мозгом моим случилось то, что я освоил быстрое понимание двоичной системы


Это оказалось совсем не сложно, достаточно запомнить...



Основное


Восемь маленьких чисел запомнить легко


000 - 0
001 - 1
010 - 2
011 - 3
100 - 4
101 - 5 (очень важное число)
110 - 6 (уже можно не запоминать, см. далее)
111 - 7 (есть несколько причин его запомнить)

Числа, которые бросаются в глаза


Это числа, состоящие из одних единиц



111 - 7
1111 - 15 (четверть часа)
11111 - 31

Веса разрядов


32 16  8  4  2  1

(Эти числа перекликаются с предыдущими, что облегчает запоминание :-))



Большую часть этой информации вы, наверняка, и так знали...



Устный счёт


… тогда вы можете моментально воспринять не слишком большие двоичные числа. Достаточно воспользоваться двумя правилами



Умножение на 2 равносильно сдвигу влево


и



Разбирать число лучше слева направо


Потому, что проще прибавлять к растущему числу меньшие слагаемые, чем наоборот.



Воспользуемся нашими знаниями


1010 — очевидно, что это 101 сдвинутое на один разряд 5*2, т.е. 10.



Чуть сложнее, что такое 10111? Можно было бы представить как 16+7 но это очень сложно складывать в уме. На много проще угадать тут последовательность 101 и заметить, что 10111=10100+11. А это уже 5*4+3 т.е. 23.



Ещё пример 11101. Это, очевидно 7*4+1 — 29.



11110 — 15*2 = 30.



101011 — 5*8+3 = 43.



И ещё — 111000. Это не 8+16+32 (сколько вам надо времени, чтобы вычислить это в уме?) а это 7*8 = 56!



Всё остальное — в том же духе :-)



Справедливости ради следует сказать, что


Я не первый, кто придумал писать такие часы. Их есть много (даже на googlecode полно), но я не смог найти такие, которые удовлетворяли бы меня. Во многих случаях эти программы просто не дописаны. Я же сделал так, чтобы самому нравилось...



Наиболее выдающимся наверно можно назвать вот этот проект. Мне он не подошёл потому, что он (1) не двоичный, а двоично-десятичный; (2) очень большое окно; (3) не работает один пункт меню (не доделан, по признанию автора) и… я не решился заюзать его исходный код потому, что он противоречит моим религиозным взглядам, и, как мне кажется, попирает лучшие идеи, заложенные в Qt. Как вы понимаете, все эти пункты являются чисто субъективными. Плюсы же, могут перевесить все недостатки. Это (1) проверенность временем, (2) софт, как я понимаю собирается и с Qt3 и Qt4, и есть реализация на Java. Возможно, вам этот проект понравится больше моего.



Но к чему это я?...



А! Да! Если кто-то возьмёт на себя труд посмотреть код, обнаружит какие-то его аспекты непотребными и не поленится высказать это мне в открытом споре или в привате — я буду бесконечно признателен!



Если кто-то будет использовать мой код, как пример использования Qt (а мне кажется, что это не плохой маленький примерчик), то я буду считать, что потратил на это дело полдня не зря!



Если у кого-то будут пожелания (будильник?) — принимаются!



Enjoy! :-)

Tags:
Hubs:
Total votes 97: ↑86 and ↓11+75
Comments147

Articles