May 2008 Blog Posts

Generate Assembly Version

29 May 2008 |

Дежавю (фр. déjà vu — уже виденное) — психологическое состояние, при котором человек ощущает, что он когда-то уже был в подобной ситуации, однако это чувство не связывается с определённым моментом прошлого, а относится к «прошлому вообще».

wikipedia

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

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

Контекст ситуации в которой этот вопрос появился следующий. Есть проект на .NET, в качестве репозитория исходных кодов используется SVN. Как генерировать версию приложения/сборок во время ежедневных сборок? Вот какое было принято решение номер Build-а генерируется по номеру дня года, а номер Revision берётся из SVN. Реализация выглядит, как консольное приложение, которое позволяет генерировать версию, и подменять её в указанных файлах исходного кода.

Если кто-то оказался в такой же ситуации, то надеюсь это ему поможет.

Google Sites

23 May 2008 |

Goolge открыла для всех возможности Google Sites, как видно из названия, приложение предназначено для создания сайтов. По функциональности очень похоже на Google Page Creator, конечно более мощное, но очень похожее. Правильней сказать что Google Sites это развитие Google Page Creator.

Все логично, действительно Google Page Creator давно уже требовал развития. Но если Google Sites это развитие Google Page Creator, то почему это выпущено как отдельный продукт, и переход с Google Page Creator на Google Sites требует ручной работы, как и изменение внешних ссылок со старого на новый сайт. Понятно, что сделано это по техническим причинам, но обратная совместимость наиважнейшее понятие в индустрии разработки программного обеспечения и должны быть очень существенные причины, чтобы пренебречь ей.

Выход этого продукта скорее разочаровал, чем обрадовал. Потому что показал не зрелость компании Google, параллельно с такими действиями будет появляться репутация как у компании Microsoft. С точки зрения зарабатывания денег это не важно, но человек существо социальное и ему не все равно мнение общества. Грустно за работников Google, которые оказались заложниками ситуации.

Основы промывки мозгов

23 May 2008 |

Люди смотрят телевизор, читают газеты, слушают радио. Почему действует навящивая реклама, почему работает примитивная пропаганда. Возможно вот эта статья поможет вам в этом разобраться:

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

Более того, хорошо известно, что некоторые наши воспоминания являются ложными — это память о том, чего никогда не было (мы можем, например, вообразить себе что-то или увидеть во сне, а потом искренне считать это реальным событием своей жизни). Феномен ложных воспоминаний сегодня весьма активно изучается психологами. Отличить подлинное воспоминание от ложного «изнутри», то есть только путем анализа самого воспоминания — без привлечения внешних свидетельств, — на сегодняшний день технически невозможно, а скорее всего это невозможно и в принципе.

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

Адресная Строка. Advanced.

18 May 2008 |

В одной из предыдущих заметок рассказывалось о проблеме с панелью "Адресная строка" возникших с выходом SP3 для Windows XP и способе решения этой проблемы. В данной заметки рассказывается о решении проблем, которые всё ещё остаются.

  • невозможность перейти в панель редактирования адресной строки с помощью клавиатуры
  • невозможность быстро выполнить поисковый запрос

Переход в панель редактирования с помощью клавиатуры.
Решение проблемы заключается в написание приложения, которое выполняет активацию панели. И установка вызова этого приложения на нажатие комбинации кнопок. Приложение можно скачать здесь, требует .NET Framework 3.5. Для любопытных и любителей делать всё своими руками исходный код:
[DllImport("user32.dll", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr FindWindowEx(IntPtr parentHandle,
                          IntPtr childAfter, string className, string windowTitle);
private static void ActivateAddressBar()
{
    var h = FindWindow("Shell_TrayWnd", "");
    h = FindWindowEx(h, IntPtr.Zero, "ReBarWindow32", "");
    h = FindWindowEx(h, IntPtr.Zero, "ComboBoxEx32", "");
    h = FindWindowEx(h, IntPtr.Zero, "ComboBox", "");
    h = FindWindowEx(h, IntPtr.Zero, "Edit", "");
    var res = SetForegroundWindow(h);                       
}
static void Main(string[] args)
{
    ActivateAddressBar();
}

Для вызова приложений по нажатию комбинации кнопок существует множество приложений. Я использую HotKeyz, а наиболее удобное сочетание кнопок Alt+R.
Выполнение поискового запроса в Google.
Для решения этой задачи создается файл f.bat, следующего содержания:

@echo off
REM Execute search in google from command line
SET var=%1
IF /I (%2) neq () SET var=%var%+%2
IF /I (%3) neq () SET var=%var%+%3
IF /I (%4) neq () SET var=%var%+%4
IF /I (%5) neq () SET var=%var%+%5
IF /I (%6) neq () SET var=%var%+%6
IF /I (%7) neq () SET var=%var%+%7
IF /I (%8) neq () SET var=%var%+%8
IF /I (%9) neq () SET var=%var%+%9
set scriptName=%~d0%~p0executeIE.js
wscript.exe%scriptName%http://www.google.ru/search?source=ig&hl=ru&rlz=&q=%var%

где executeIE.js находиться в той же папке что и f.bat и имеет следующее содержание:

var objShell = new ActiveXObject("Shell.Application");
var shellWindows = objShell.Windows();
var ie;
for (var i=shellWindows.Count; --i >= 0;){
var item = shellWindows.Item(i);
if(item.Name == "Windows Internet Explorer") {
  
ie = item; break;
 
}
}
if (ie == null) {
   ie = new ActiveXObject("InternetExplorer.Application");
 
ie.Navigate(WScript.Arguments(0));
   ie.Visible = true;

} else
 
ie.Navigate(WScript.Arguments(0), 0x0800);

при этом папка где находятся эти файлы должна быть прописана в переменной PATH. После выполнения всех этих действий, для выполнения поискового запроса достаточно набрать в адресной строке: f word1 word2 word3.

Отключение горячей воды

18 May 2008 |

Существует такая практика как ежегодное отключение горячей воды на три недели в профилактических целях. Имеется в виду обслуживание труб и другого оборудования. Посмотрим на это с точки зрения оплаты услуг холодного и горячего водоснабжения. К примеру в Москве 90% домов оборудованы домовыми счетчиками потребления горячей и холодной воды. На основе их показаний каждый месяц ЕИРЦ рассчитывает сумму подлежащую оплате, по горячей и холодной воде отдельно.

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

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

PS Всех жителей города Москвы поздравляем с началом сезона отключения горячего водоснабжения.

XP SP3 VS Address In Taskbar

17 May 2008 |

Установка SP3 для Windows XP принесла неожиданный результат. Из taskbar исчезла такая возможность как "Адрес". Интересна причина, как не странно это не козни Microsoft, а следствие исполнения решения суда по удалению IE из ОС.

Альтернативные возможности вроде Windows Desktop Search, не очень привлекательны, неоправданно много памяти отнимают, увеличивают время загрузки ОС. Есть решения с откатом к dll предыдущей версии из SP2, что тоже не есть хорошо.

К счастью нашлось решение восстанавливающие эту функциональность.

Microsoft PowerToys for Windows XP

17 May 2008 |

У Microsoft есть полезные маленькие программы, которыми я пользуюсь уже достаточно долгое время. И вот недавно узнал, что существует пакет Microsoft PowerToys for Windows XP объединяющий некоторые из их.

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

Generate Id By Ids

13 May 2008 |

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

"Мы знаем, что задача нерешаемая, мы хотим знать как её решать"

Остается только искать достаточно хорошее решение, которое пусть и не гарантирует уникальности, но хотя бы повышает её вероятность. И конечно же такое решение годиться для разовых задач, которые нужно сделать скорее быстро чем хорошо. Решение задачи нашлось достаточно быстро, благодаря тому, что SQL Server 2005 была добавлена функция HashBytes. Вот как это выглядит:

DECLARE @id1 int;
DECLARE @id2 int
;
SET @id1 = 8
;
SET @id2 = 7
;
DECLARE @newId int;
SET @newId =CONVERT(int,
        
HashBytes('MD5', CONVERT(nvarchar, @id1)+CONVERT(nvarchar, @id2))
      );
print @newId;

Белемниты

08 May 2008 |

Многие в детстве находили забавные камушки вытянутой формы. Их еще называют чертов палец.

Белемниты

В детской среде о происхождении этих камешков было много разных мнений. Преобладало мнение, что это окаменелости кальмара. Лично мне казалось, что это сталагмиты/сталактиты, потому что уж слишком правильной формы эти камни. Интернета в те времена не было, да и домашних компьютеров тоже. Авторитетному мнению школьных учителей уже не доверял, не без причин.

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

Электроэнергия VS Инфляция

06 May 2008 |

Даже не являясь экспертом в макроэкономике, тем не менее нельзя было пройти мимо такой новости:

В среднем рост тарифов на электроэнергию составит в 2008 году 16,7%, в 2009 году — 26% против ранее запланированных 16%, в 2010 году тарифы вырастут на 22% (ранее 13—15%), в 2011 году электроэнергия подорожает на 18%. Ожидается удорожание и голубого топлива. Особенно резко газ вырастет в цене в 2011 году — на 40%.

взято здесь

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