August 2008 Blog Posts

Company - Employee Interaction

31 August 2008 |

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

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

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

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

Вот так из таких, казалось бы обыденных данных, можно получить полезную информацию.

DataSet AutoIncrement For Guid Column

29 August 2008 |

Как сделать AutoIncrement для столбца типа Guid, DataSet-е. В MS SQL Server подобная функциональность достигается с помощью newid(). DataSet не поддерживает аналогичную функциональность встроенными средствами, но бывают ситуации, когда потребность в ней существуетю. К примеру если вы привязали таблицу (PK Id Guid, Value1 string, Value2 string) к DataGridView, при этом не показываете столбец Id, тогда при создании новой записи необходимо, чтобы автоматически заполнялнять значение Id.

Решение задачи: нужно переопределить метод EndInit для таблицы в типизированном DataSet-е:

public override void EndInit()
{
base.EndInit();
IdColumn.DefaultValue = Guid.NewGuid();
this.ValueRowChanged += (sender, e) =>
{
if (e.Action == DataRowAction.Add)
IdColumn.DefaultValue = Guid.NewGuid();
};
}

Blooming Cactus

28 August 2008 |

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

2008-08-28 Cactus1

2008-08-28 Cactus2

Entity Framework Only 2-tier

28 August 2008 |

Entity Framework (EF) - object-relational mapper (ORM) от Microsoft. Позиционируется Microsoft как framework предназначенный для создания приложений уровня предприятия (Enterprise).

Как это часто бывает с новыми технологиями, использование Entity Framework началось с неожиданности. Оказалось, EF не поддерживает 3-tier архитектуру с толстым (rich) клиентом. Это было очень невероятно, учитывая то, что значительная часть именно Enterprise решений построена на такой архитектуре, оставшаяся часть это портальные решения. Но поверить пришлось и с этим теперь придётся жить, что подтверждает множество вопросов в интернете и наличие сторонних framework-ов для решения этой проблемы (EntityBag, DevForce for Entity Framework).

Ну и о сути проблемы в двух словах. Упрощённо 3-tier выглядит так: три слоя хранилище данных (база данных), сервер приложения (application server) и клиент (WinFroms/WPF). EF находится на application server, при этом он содержит в себе все необходимые возможности и инструменты для организации взаимодействия со слоем хранения данных. Проблема заключается именно в клиентском уровне, никакой серьёзной поддержки Data Transfer Objects в EF нет, и уж тем более нет каких-то клиентских компонентов. Т.е. Вам самим придётся организовывать DTO и клиентские компоненты, которые поддерживают State, Current/Original значения и Binding во всех его аспектах. Ну господа эрудиты, что это такое существует в .NET, о чем мы все подумали, правильно это DataSet, они могут быть и DTO и с Binding-ом у них все хорошо и богатая внутренняя функциональность. Но что же это получается, таким образом весь EF мы покоцали, и его можно рассматривать как типизированные TableAdapter-ы на стероидах, который безусловно решает массу важных проблем, создаёт замечательную прокладку между DataBase и Application Server.

С другой стороны, не похоже что это просто какая-то недоработка, за этим стоит идеология. Судя по всему у Microsoft были серьёзные причины не добавлять такую поддержку, может Smart Client-ы это уже пройденный этап и будущие за часто и быстро обращающимися к серверу приложениями или их вырожденному варианту ASP.NET.

С выходом SP1 люди начнут активно пытаться использовать EF и через 3-4 месяца ситуация окончательно проясниться и устаканится в каком либо виде...

WCF In Demo & Prototype

27 August 2008 |

Большинству известно, а остальные догадываются, что переделывать клиент-серверное приложения в 3-х уровневое значительно сложнее, чем если сразу делать 3-х уровневое.

Но на начальных этапах проекта хочется, чтобы эволюционный прототип или демо версия выглядела, как одноуровневое или хотя бы двухуровневое. Почему, чтобы проще развёртывать было, чтобы не ставить серверную часть, не настраивать IIS или какой-нибудь другой host для Application Server-а. Чтобы было просто передать эту версию заинтересованному лицу и она легко запустилось, без установки.

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

На теоретическом уровне понятно, что нужно динамически подгружать сборку и через Reflection стартовать сервер, нужно ещё загружать нужный конфигурационный файл и тому подобное. Если вы столкнётесь с такой задачей, то не стоит изобретать велосипед, лучше использовать существующие решение: Hosting plug-in WCF Services, это сэкономит Ваше время.

Olympic Games

25 August 2008 |

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

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

Tip: Gmail Security

23 August 2008 |

В адресе http://mail.google.com/ Вас ничего не смущает правильно, хочется чтобы было https. С самого начала я всегда использовал https, но за этим приходилось следить. Оказывается в настройках появилась возможность, достаточно давно, указать: "Всегда использовать https". Узнал об этом недавно, вдруг Вы тоже не знаете, мне кажется, что разумно активизировать эту настройку.

Мобильный Лохотрон

21 August 2008 |

Забавный случай произошёл недавно с моей женой. Пришла SMS примерно следующего содержания: Платёж 500,00р. зачислен 21-08-2008 в 13:34 через QIWI(www.qiwi.ru). Потом позвонил человек номер которого определился как 8-906-180-60-06, сказал что ошибся, когда переводил деньги и не будут ли так любезны вернуть деньги переведя на номер телефона с которого он звонит. Разумный человек конечно же сразу чувствует, что это развод, приятно отметить что жена это сразу осознала.

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

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

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

SyncToy v2.0

16 August 2008 |

Microsoft выпустил новую версию утилиты SyncToy, SyncToy White Paper. Утилита позволяет синхронизировать папки/файлы между устройствами. Особенно удобна для организации backup-ов на внешние накопители. В новой версии появились настройки позволяющие детально настроить правила синхронизации.

Утилита существует уже очень давно, но почему то остаётся малоизвестной, на мой взгляд не заслужено.

.NET 3.5 SP1 Unknown Feature

14 August 2008 |

Запуск .NET приложения из сети (с общего диска) требовал от пользователя изменение локальных настроек безопасности. Это раздражало и в некоторых ситуациях мешало эффективно решить задачу.

Если верить Brad Abrams, то с выходом SP1 эти затруднения решены. Так ли это сам не проверял, но судя по всему действительно так. В связи с такими изменениями сразу возникают вопрос: Потребуются ли изменения в коде приложения чтобы сделать для пользователей запуск приложения с общего диска? Конечно, когда существует технология ClickOnce, говорить о таких вариантах, как то даже не прилично, но если нельзя, а очень хочется, то можно.

Как бы то ни было, знать об этом полезно.

Война

09 August 2008 |

«Я знать не хочу ту тварь что спалит это небо...»

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

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

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

Что же делать? Не забывайте, об этих двух пунктах. Как только в Вас появится ненависть к другим людям, которых вы даже не знаете, значит кто-то уже манипулирует Вами. Просто оставайтесь людьми.

Любопытно, что война может быть выгодна руководству всех участвующих в ней стран, не выгодна она только тем кого убивают, их родственникам, друзьям... США тут вообще все очевидно, лучшее средство борьбы с экономическим кризисом всегда считалась война или хотя бы наличие внешнего врага, хотя почему здесь, чего им Востока мало. Россия здесь менее однозначно, та же экономическая нестабильность, потребность в повышении уровня поддержки власти со стороны народа. Это всего лишь гипотезы, да и так ли важно за какие такие чужие интересы умирают люди, явно что не за свои... А может просто к власти пришло поколение людей, которые сами не знаю, что такое война, и для них это всего лишь ещё один ресурс.

«На войне все просто, но самое простое в высшей степени трудно.»

Конечно легко говорить. А что делать если в так называемых горячих точках. Люди рождаются и вырастают в состоянии ненависти к своим соседям? Очевидно есть два выхода либо поубивать всех своих соседей, а потом жить мирно и счастливо замаливая свои грехи, либо бороться с таким наследством стремиться стать человеком.

Strong Law

04 August 2008 |

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

Use Case ~ User Story

02 August 2008 |

Объёмная документация - часть проблемы,
а не часть решения.

Давать формальное определение для User Story, не очень хочется. Для людей знающих, что такое Use Case, это должно быть интуитивно понятно, в существование людей, которые знают что такое User Story но не знают что такое Use Case верится с трудом.

Сбором требований обычно занимаются люди, должность которых звучит как: системный аналитик, или бизнес аналитик или аналитик требований или как то по другому. Важно то, что эти люди испытывают затруднения при формализации требований. Связано это, как мне кажется, с тем что очень часто эти люди не занимались разработкой, а других областей деятельности, где можно получить практику моделирования/формализации требований не так уж много. Как бы то ни было, обычно следует совет, ну вы значит пишите Use Case, и совет этот по сути верен. Но использование Use Case в этом случае может привести к трате ресурсов, будет выполнятся работа которая никому не нужна, в виду своего качества. Как же быть, очень просто не говорите про Use Case говорите про User Story и всё сразу станет проще, и аналитик и заказчик гораздо лучше чувствуют этот термин, прекращаются терминологические споры и повышается эффективность работы. Аналитик будет делать то на что он способен, и не будет тратить сил на то чтобы прыгнуть выше головы.

Казалось бы не бином ньютона и все более менее очевидно, но простые вещи иногда оказываются очень эффективными.

ОДНО ОКНО

01 August 2008 |

Очевидное не вероятное или как количество может переходить в качество. Появился портал Электронная приёмная на котором можно получить некоторые справки и другую полезную информацию. Этим сервисом не пользовался, но факт его наличия приятно удивляет.

How We Faking

01 August 2008 |

Сколько ваших непосредственных родственников жило в 1010 году? Будем считать, что у каждого человека 2 родителя папа и мама, и поколение сменяется каждые 25 лет. Тогда получается, такая последовательность: 2 - 4 - 8 - 16... всего до 1010 года сменилось 40 поколений, значит ваших непосредственных родственников 2 в 40 степени. Что превышает количество людей живших на тот момент. Вы обманулись...

Можно ли создать четыре кубика, расставив на гранях числа таким образом чтобы: A чаще выигрывал у B, B чаще у C,  C чаще у D, а D чаще у А? Чувствуете замкнутый круг? Ответ:
A: 7, 7, 7, 7, 1, 1
B: 6, 6, 5, 5, 4, 4
C: 9, 9, 3, 3, 3, 3
D: 8, 8, 8, 2, 2, 2
То есть можно, подробнее.

Микроскоп увеличивает. Правильно - да. Телескоп тоже увеличивает, ведь правда. Значит между ними нет особой разницы.

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