July 2008 Blog Posts

IQ - Test

29 July 2008 |

Популярность тестов IQ меня всегда вводило в замешательство. Когда я их читал то не мог понять как вот это всё может оценить  интеллект. Но общество их признаёт и относится к ним на полном серьёзе. Недавно прочитал замечательные статьи в журнале компьютера на эту тему, и стало легче не один я такой. Очень советую почитать: Самый лучший IQ-тест и Что измеряют тесты IQ?

Конечно проблема оценки интеллекта(ума) стоит шире и острее, к примеру экзамены в школе/институте часто воспринимаются, не как оценка знаний, а как оценка интеллекта, что уже само по себе не верно. Да и насколько эта оценка соответствует знаниям, это ещё тоже вопрос.

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

Есть области где такие оценки необходимы к примеру многие области в медицине, а есть где их можно использовать и более мягкие критерии: наука.

Disable/Enable WiFi

25 July 2008 |

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

При попытки отключить через task bar, выдаётся окно:

WarningDisableWIFI

Стал вопрос, как же отключать соединение, бывают ситуации когда оно не нужно. Решение нашлось довольно быстро. Существует утилита DevCon разработки Microsoft, которая позволяет работать с устройствами через командную строку, фактически это Device Manager с интерфейсом командной строки.

К примеру команды включения/отключения WIFI на моем ноутбуке выглядят следующим образом:

devcon enable "PCI\VEN_8086&DEV_4222&SUBSYS_10018086&REV_02*"
devcon disable "PCI\VEN_8086&DEV_4222&SUBSYS_10018086&REV_02*"

Color Sequence

24 July 2008 |

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

Простого решения не нашёл. Единственное, что придумал выровнять цвета в радугу, разбить радугу на равные по длине отрезки, концы отрезков и будут соответствующие цвета. Решение задачи звучит разумно, но оно не является удовлетворительным, потому что цвета по восприятию контрастности человеком в радуге распределены не равномерно. К примеру, полоса зелёного толстая, а жёлтого узкая.

Rainbow

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

Описанное выше решение задачи на языке C#.

Assembla: мышеловка захлопывается

23 July 2008 |

Некоторое время назад я рассказывал об интернет сервисе для ведения проекта разработки программного обеспечения.

Тогда меня удивили относительно большие возможности входящие в бесплатную версию. Размещение бесплатного сыра всем известно и здесь мы находим подтверждение этому правилу. Недавно объём бесплатно предоставляемого места уменьшили с 500 до 200Мб.

Единственное не понятно с какой целью: подтолкнуть людей к переходу на платную версию, или просто решили, что 500 слишком много для бесплатной версии.

Set Processor Frequency

19 July 2008 |

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

По тем или иным причинам возникает вопрос: Можно ли стандартными средствами, управлять частотой работы процессора? Ответ да можно, с помощью команды powercfg. Описание управлением работы процессора с помощью команды powercfg можно посмотреть здесь.

Для себя я создал командный файл, который упрощает доступ к этой функциональности:

@echo off
REM Set processor work mode OFF - low, ON - High
REM For check: powercfg /q
chcp
1251
set schemaName=
Портативная
chcp
866
@echo
on
IF /i '%1'=='OFF'
(
  powercfg /x %schemaName%
/processor-throttle-ac degrade
  powercfg /x %schemaName%
/processor-throttle-dc degrade
) ELSE IF /i '%1'=='ON'
(
  powercfg /x %schemaName%
/processor-throttle-ac adaptive
  powercfg /x %schemaName%
/processor-throttle-dc adaptive
)

Browser Statistic

15 July 2008 |

Вот посмотрел статистику посещения блога, относительно браузеров. Кто бы мог подумать ещё пару лет  назад, что лидерство IE будет таким не убедительным.

BrowserStatistic

День взятия Бастилии

14 July 2008 |

Поздравляю всех с одним из самых моим любимым праздником: День взятия Бастилии. Я уже получил поздравления от друзей, а Вы?

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

Конечно мало кто знает и понимает про что праздник, но все знают о его существовании и в этом его сила. У Нас много таких праздников: официальных выходных дней. День взятия Бастилии - праздник посвященным всем этим праздникам, можно сказать что это праздник праздников с сатирическим уклоном. В нем нет лжи, не надо думать что праздновать, празднуется не по указки, и именно по этому так любим народом.

Французы не должны обидеться, так уж получилось, что наш день взятия Бастилии, совпал с ихнем.

WPF: Window Alt-Tab

12 July 2008 |

Как сделать, так чтобы ваше WPF приложение не было видно в качестве иконки по нажатию ALT-TAB. Ответ простой нужно установить свойству WindowStyle значение ToolWindow, а что делать если вам это не подходит, если Вам требуется None?

Удивил не сам факт наличия проблемы, а то что потребовалось потратить больше чем обычно времени, чтобы найти приемлемое решение. Поэтому есть основания полагать, что кому-то это может помочь:

private static partial class NativeMethods
{
internal const int WS_EX_TOOLWINDOW = 0x00000080;
internal const int GWL_EXSTYLE = -20;
[System.Runtime.InteropServices.DllImport("user32.dll")]
internal static extern int SetWindowLong(IntPtr window, int index, int value);
}
///
<summary>
///
Hides window icon from panel when press alt-tab.
///
</summary>
///
<param name="window">The window.
</param>
public static void HideFromAltTab(this Window window)
{
var handle = window.GetHandle();
if (handle == IntPtr.Zero)
throw new InvalidOperationException("Can't hide icon when click Alt-Tab. Handel of winodw is not exist.");
var res = NativeMethods.SetWindowLong(
handle,
NativeMethods.GWL_EXSTYLE,
NativeMethods.WS_EX_TOOLWINDOW);
if (res == 0)
{
//Note: The constructor of Win32Exception will automatically set
//Win32Exception.NativeErrorCode to Marshal.GetLastWin32Error()
throw new System.ComponentModel.Win32Exception();
}
}

PInvoke Interop Assistant

07 July 2008 |

Если Вам приходиться работать с WinAPI из .NET и написание вызовов вызывает затруднения или вам просто лень описывать константы, структуры и вызовы, то PInvoke Interop Assistant поможет. Этот инструмент сгенерирует код вызова за Вас. Узнал здесь.

How It Work: Touchpad

06 July 2008 |

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

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

ComboBox: AutoComplete

02 July 2008 |

Любопытный вопрос недавно задали:
Где-нить видел такой контрол, реализованный в виде drop down list с возможностью ввода, когда вводишь, он фильтрует выпадающий список на основании введённых символов?
На практике самому такого контрола делать не приходилось, но о возможности AutoComplete в WinForms 2.0 мы знали. Поэтому ответили, что никаких проблем в этом нет.

И в общем-то действительно стандартные возможности позволяют достичь подобной функциональности достаточно просто, но дьявол как всегда в деталях. Стандартная реализация кривая, потому что выпадающий список авто-дополнения конфликтует со стандартным поведением ComboBox-а. Если у вас была практика использования AutoComplite в ComboBox-е вы поймёте про что идёт речь.

В стремлении к идеалу, или правильней сказать, точному соответствию запросу пользователя, пришлось реализовать функцию авто-дополнения руками.

Проект демонстрирующий работу функции AutoComplete, в стандартном виде и при ручной доделки, можно скачать здесь.