MCP

пятница, 19 июня 2009 г.

Прокачиваем мышь 3

Продолжение. вторая часть, первая часть.

Решил всё-таки довести затею до конца, и доделать программу, хоть до какого-то состояния.

За прошедшее с последнего поста время, я умудрился придумать куда запихать пятую кнопку ("а чо она без дела?"), и поправить некоторые неоднозначные ситуации с управлением окнами до состояния, как мне больше нравится (всякие MDI, беззаголовочные и прочие специфические окна). Про четвёртую кнопку я вроде бы всё расписал. Так что, распишу про пятую, которую я приспособил для управления музыкой (эмулируются мультимедийные кнопки клавиатуры, на которые должен уметь вешаться любой уважающий себя Winamp).


  • Нажать пятую и покрутить колесо — изменить громкость

  • Нажать пятую и среднюю — пуск/пауза

  • Нажать пятую и левую — предыдущая песня

  • Нажать пятую и правую — следующая песня


Это как бы наиболее понятные и очевидные вещи, но осталось незадействованным движение, но что туда повесить? У меня мыслей хватило только на простенькие Gestures, которые тоже эмулируют соответствующие кнопки:

  • Нажать пятую и сдвинуть влево — назад (например для браузера)

  • Нажать пятую и сдвинуть вправо — вперед

  • Нажать пятую и сдвинуть вверх — стоп (для браузера)

  • Нажать пятую и сдвинуть вниз — обновить (для браузера)


Т.е. простенькое управление браузером, для того, чтобы можно было безболезненно отказаться от четвёртой и пятой кнопки для тех, кто использует их в качестве Back/Forward в браузере. Теперь это можно делать с помощью gestures .

На этом я планирую всё-таки успокоиться и прекратить мучать мышь . Соответственно для всех желающих даю ссылку:
mouseExtender

В архиве есть версия для 64-х бит, есть версия которая изменяет только логику скролла без всех остальных действий, и версия которая использует вместо четвёртой — правую кнопку мышки + Ctrl (но она только для когда посмотреть хочется, а четвёртой кнопки нету, качество работы не гарантируется).



ЗЫ: Постепенно буду доводить до относительного ума остальные проекты, которые в полуподвешенном состоянии и которыми пользуется 3-4 человека и выкладывать их сюда, чтобы пользовалось ими 5-6 .

пятница, 24 апреля 2009 г.

Прокачиваем мышь 2

Продолжение предыдущего поста.

Креатив продолжился, и я понял, что незадействованы было движение мыши, при нажатой четвёртой кнопке. После небольшого brainstorm'а, оказалось что это действие замечательно подходит для перетаскивания окон. За любую часть! Без захвата фокуса!

Другими словами, сидите вы работаете, сзади торчит окно, и хотите вы его подвинуть, чтобы увидеть нужную информацию, но переключаться с текущего не хочется. Зажимаете четвёртую кнопку на том окне, и тащите его куда надо. Красота.

Также, выяснил у людей наиболее удобную логику скроллинга. Практически все считают, что скроллится должно именно то окно, над которым находится курсор мышки, а не активное, как часто бывает. Мышиные драйвера некоторых производителей делают такую логику, а некоторых нет (у меня как раз и не делалось). Поэтому добавил ещё и это, чтобы программа стала генератором удобства.

Из интересных моментов при написании данной программы, было замечено, что некоторые программы не реагируют на команду закрытия (WM_CLOSE), зато реагируют на команду вида "тебе на крестик нажали" (WM_SYSCOMMAND), даже если у них нет крестика.


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

среда, 22 апреля 2009 г.

Прокачиваем мышь

Давно я не писал тут, ну да ладно. Не до умных технических постов было. А тут появился повод.

Повод случился вчера, когда я решил поправить функциональность стандартных драйверов Майкрософта для мышки. Вообще, на это всё меня натолкнула программа моего коллеги Vista Keys Extender. Программа весьма интересная, наверняка кому-нить будет полезная, ибо позволяет управлять окнами с клавиатуры "как в семёрке".

Но я для управления окнами уже давно использую мышку. А именно, одну из боковых кнопок (которая по дефолту "Back") переназначаю на сворачивание окна. Весьма удобная вещь для меня, — посмотрел окно, мгновенно свернул, пошёл работать дальше. Очень полезно для всякой почты/миранды и прочего, чего не требуется для постоянной работы, а является своего рода "попапами".

В стандартных драйверах мне сильно не нравились две вещи:

  • Сворачивается активное окно, а не то, над которым мышка
  • Проблемы с программами, написанными на Delphi (там очень оригинальная концепция окон, из-за чего они сворачиваются совершенно безумно, как MDI).

Это я поправил, повесив собственный хук на нажатие данной кнопки, а дальше задумался. Собственно, почему кнопки мыши практически не используются как модификаторы? Т.е. нажатие одной, за редкими исключениями никак не влияет на другую? Дальше пошёл креатив, и появились следующие комбинации, начинающиеся с того, что нужно нажать четвёртую кнопку, и:

  • Отпустить: свернётся окно, находящееся под курсором
  • Покрутить колесо вниз: развёрнутое окно станет нормальным, нормальное — свернётся.
  • Покрутить колесо вверх: нормальное — развёрнется. Логично продолжить про свёрнутое, но его ведь нет . Так что нечему разворачиваться. Хотя в определённых ситуациях всё будет. Я постарался.
  • Нажать правую кнопку: свернутся все окна
  • Нажать левую: закроется текущее
  • Нажать среднюю: компьютер заблокируется

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

К чему я написал весь этот пост? Ну конечно же, похвастаться, как же без этого. Но также хочу обратить внимание на то, что была бы идея, а реализовать её можно просто и получить от этого удовольствие и удобство. Да и то, что мышка совершенно не используется по максимуму. На всё это у меня ушло всего пара часов, не больше. Часть времени при этом я просто потратил на идеи, а не на написание кода. Но за два часа сделать полезную, хотя бы для себя, вещь — это уже хорошо.


Тут по идее должна быть ссылка на программу и исходники, но писал я пост больше как концепцию, ибо не факт, что те же сочетания понравятся вам, и вы будете готовы взять исходники и всё переделать. Но если же это кому-нибудь будет действительно нужно, то обязательно всё выложу!

суббота, 28 марта 2009 г.

Обновление сайта с градусником

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

1. Добавлен график изменения температуры за месяц. 
Точнее не за месяц, а за 24 дня, но существенной разницы в этом нет. Просто ширина поля графика 576 пикселей, т.е. 24 часа * 24 дня. По пикселу на час. 

А поскольку за час температура может сильно поменяться, я рисую максимум и минимум, с зелёным заполнителем (пробовал брать среднюю температуру за час, получается всё равно некрасиво, возможно летом, с более резкими переходами будет всё гораздо лучше). В общем, ближе к лету, возможно этот график изменится . А может добавлю и информацию за более длительный период.

2. Дополнительная информация о текущей температуре.

Тут она фиолетового цвета. График весь из себя плавный и красивый. Это я ради интереса добавил текущую погоду с Гисметео, чтобы можно было убедиться в том, что мой градусник так же невероятно точен, как и у продвинутых систем (на самом деле он ещё точнее , Гисметео слишком оптимистичны).  Хотя тут видны сразу две проблемы с моим градусником. В 05:50 — тепмература сильно опустилась и градусник начал глючить (об этом уже написано). А в 9:20 — Солнце аккуратно попало на градусник и температура поехала. Надо будет собраться и попробовать перевесить его чуть правее, чтобы его получше закрывало от солнца. Хотя после перевода часов, проблема уедет на час, так что будет не так критично .
Хотя чего я всё заладил про Гисметео. Буквально с сегодняшнего дня данные идут от HMN, ибо они обновляются чаще и оперативнее. Но это уже детали, погоду, по идее, они берут из одних источников.

3. Web Slices.
Ну и напоследок маленькая фишка для пользователей восьмого Интернет Эксплорера. Теперь есть поддержка Веб-Слайсов, и можно добавить на панель браузера "обновлябельный" погодный сайт. Если вы уже пользуетесь восьмеркой — рекомендую добавить . А если нет, то рекомендую поставить, ибо браузер весьма и весьма симпатичный (хотя отмечу, что у некоторых людей он конкретно глючит, причём не ясно от чего).

пятница, 20 марта 2009 г.

Немного расчётов про Оперу

По статистике в мире доля Оперы 0.7%. В России 31%.

Берём калькулятор в руки и считаем. Получаем, что если Оперой пользуются только в России, то в России находится всего 2.2% пользователей всего интернета.

Берём статистику, например из Википедии. Получаем, что пользователей интернета в России 2.4% от общего количества. Получаем маленькую нестыковочку. 

Ещё раз в цифрах. В России пользуются Оперой 38 000 000 * 31% = 12 920 000 человек. В мире же пользуются Оперой "всего" 1 581 571 589 * 0.7% = 11 071 000.

Другими словами, в России есть почти 2 млн. человек, которые пользуются двумя Операми, и это с учётом того, что больше в мире ей никто не пользуется.

Сдаётся мне, что кто-то пизд лукавит в статистике. И я очень сомневаюсь, что это делают в России.

среда, 18 марта 2009 г.

Opera Turbo

Ну вот, стоило сделать свою версию сжимающей прокси (кстати, большинство удалось побороть за 10 минут, оказалось, что была бага, которую я правил-правил и не доправил), как норвежцы прочитали мой пост и сделали Opera Turbo.

В общем, идея та же самая, но на более глобальном уровне, со сжатием картинок, блекджеком и шлюхами. Благодаря тому, что это напрямую встроили в браузер, сразу же появятся вкусные фишки (например, релоад картинки загрузит её уже в хорошем качестве).

Вообще, думаю что в Опере нашли ту самую killing-feature, которая позволит им прорекламироваться. Не думаю, что кто-то ещё сможет провернуть подобное. Возможно только Гугл с хромом, но не думаю, что им это нужно будет.




Эх, чтобы ещё такого сделать, чтобы в Опере тут же реализовали в 10 раз лучше...

пятница, 6 марта 2009 г.

Proxy

Жизнь течёт, изменяется, но по-прежнему сохраняется потребность в проксе, хотя казалось бы, интернет шустреет, и зачем оно таки надо?  

Достаточно давно, когда интернет у меня был практически только по диалапу (на работе, правда более или менее приличный, но не шустрый), я написал какую-то безумную проксю с совершенно извращённым кешированием. А именно, она кешировала все картинки намертво, CSS и JavaScript, вроде бы тоже. Страничики тоже кешировались, но слава богу обновлялись, иногда.  Как результат, было удобно смотреть сайты в браузере без интернета (ибо раз нельзя достучаться, результат выдавался из кеша), да и трафик был слегка меньше.

Естественно, всё слегка глючило, кеш портился, да много чего было. Но тогда я разобрался в принципах работы HTTP через прокси, написал свою файловую систему для кеша, проработал механизмы блокировки URL'ов с баннерами. Часть из всего этого пригодилась в дальнейших проектах. Да и урощённый движок прокси тоже активно использовался в одном из них.

На этом можно было бы и закончить, но совершенно недавно я понял, что таки старые наработки ещё пригодятся. Дело в том, что интернет дома развился до неузнаваемости, у меня появился отдельный компьютер, который является сервером и круглосуточно сидит в сети и делает своё маленькое грязное дело.  На работе же, с интернетом всё не так радужно. В результате, после подкинутой идеи, я за пару часиков практически с нуля (используя старые наработки в качестве напоминалок, как надо и как не надо делать) написал сжимающий прокси. Т.е. идея совершенно банальная: на работе есть прокси "клиент", который связывается с прокси "сервером" отдавая ему запросы и получая ответы (которые уже "сервер" скачивает из интернета). И вот эта передача уже идёт запакованная.

Потом, конечно, пошли доработки, в которых я выяснил, что встроенное в .NET сжатие GZip — это унылое говно, которое использовать нужно только по необходимости. В других же случаях гораздо лучше использовать #ziplib, мало того, что жмёт на порядок лучше, так ещё и работает быстрее! Кто там говорил, что в Майкрософте воруют код? Да ничего подобного! Если бы они это делали, они бы не написали такой отстой. Сжатие BZip2 было реализовано, но исключено по причине того, что оно раз в 10 медленнее GZip (точнее Deflate, но это уже тонкости структуры результирующего потока), а результаты в большинстве случаев не лучше. LZMA (7z) — результаты давал ненамного лучше, то скорость у него вообще отвратительная. Были ещё варианты сжатия по заранее заданному словарю, но пока на них забил из-за сложностей в реализации (хотя прирост сжатия должен быть весьма и весьма хорош). Добавил простенькое кеширование, чтобы не перегружать заново некоторые страницы (они реально перегружаются, но если результат такой же, то он не отправляется). Также сделал повторное использование TCP-соединений, чтобы уменьшить их количество и соответственно трафик.

Результаты оказались в принципе достаточно неплохие. Сжатие в зависимости от условий использования вполне может составлять 50% (в принципе, при некоторых сценариях и все 35% от исходного объёма). Заодно выяснил, что некоторые серверы плюют на робкие попытки прокси попросить закрывать соединение после отсылки данных (пришлось закрывать самостоятельно). Ну и конечно, всё периодически глючит, как же без этого.

К чему я это пишу? А к тому, чтобы похвастаться, да и узнать, а вдруг кому-нибудь это будет интересно. Могу отдать, вплоть до исходников. Может и поправите ошибки.  Поэтому и не выкладываю программу сразу. Ибо реально есть ещё проблемы, с которыми можно жить, но лучше не стоит.

Конечно же, можно было бы взять что-нибудь готовое, но это совершенно неинтересно. Написать что-нибудь самому, очень полезно для развития. При этом, как я уже писал, с оценкой времени всё туманно, так что как оценить пользу/вред от этого совершенно непонятно.