November 2008 Blog Posts

WPF: UserControl Vs CustomControl

28 November 2008 |

Общеизвестно что UserControl не очень хорошо подходит для повторного использования в рамках нескольких приложений. CustomControl по сравнению с UserControl трудоёмок для разработки, но предоставляет больше возможностей тонкой настройки и поддержки повторного использования. Аналогия с ASP.NET Forms практически полная. При разработке не всегда понятно будет ли контрол повторно использоваться или нет, поэтому необходимо делать выбор.

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

На основе этого опыта, вывод: Если есть сомнения, что использовать UserControl или CustomControl, нужно всегда использовать CustomControl. А еще лучше разобраться с CustomControl, приобрести больше опыта в реализации и использовать только CustomControl.

VS 2008: Back To The Future

24 November 2008 |

При работе с большими проектами иногда возникает необходимость найти в Solution Explorer файл открытый на редактирование. В VS 2003 по умолчанию была включена функциональность синхронизации Окна редактирования и Solution Explorer, начиная с VS 2005 эта функциональность отключена, но её можно включить: Tools -> Options...

greenshot_2008-11-24_16-20-59

И в заключении: с выходом SP1 for VS2008, значительно улучшилась работа Task List, теперь комментарии из кода "//TODO:" отображаются не только для открытых в данный момент файлов, а для всех файлов Solution.

Run Long Function

22 November 2008 |

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

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

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

Песочные часы, текст и анимация в строке состояний - компромиссное решение, которое считаю наиболее разумным. Вот его реализация:

private T RunBackgroundFunc<T>(string funcStatus, Func<T> func)
{
if (func == null) throw new ArgumentNullException("func");
var beforeCursor = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;
var beforeStatus = toolStripStatusLabel.Text;
toolStripStatusLabel.Text = funcStatus;
spinningWheelStatusLabel.Visible = true;
IAsyncResult iAsyncResult = null;
var result = default(T);
try
{
iAsyncResult = func.BeginInvoke(null, null);
while (!iAsyncResult.AsyncWaitHandle.WaitOne(100))
{
statusStrip.Update();
spinningWheelStatusLabel.Invalidate();
}
}
finally
{
Cursor.Current = beforeCursor;
spinningWheelStatusLabel.Visible = false;
toolStripStatusLabel.Text = beforeStatus;
result = func.EndInvoke(iAsyncResult);
}
return result;
}

Religion: Bible Samson

21 November 2008 |

Ужасы описанные в предыдущих заметках (Religion: Bible First Half, Religion: First Step) закончились, как раз где-то после 1/2 от всего объема Библии. Текст приобрел более философский характер, читать стало интересней. Много плоского из разряда не плюй в колодец, но раньше и этого не было, а есть и действительно интересные места, к примеру книга Иов.

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

И полюбил царь Соломон многих чужестранных женщин, кроме дочери фараоновой, Моавитянок, Аммонитянок, Идумеянок, Сидонянок, Хеттеянок, из тех народов, о которых Господь сказал сынам Израилевым: "не входите к ним, и они пусть не входят к вам, чтобы они не склонили сердца вашего к своим богам"; к ним прилепился Соломон любовью. И было у него семьсот жен и триста наложниц; и развратили жены его сердце его.

А вот, что сам Самсон проповедует:

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

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

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

Есть ли у дождя отец? или кто рождает капли росы? Из чьего чрева выходит лед, и иней небесный, -- кто рождает его?

Как то не очень это звучит убедительно, по крайней мере для меня.

Google SketchUp

19 November 2008 |

Недавно промелькнула новость о выходе Google SketchUp 7 (построение 3D моделей, есть бесплатная версия). На волне новости, любопытстве и наличие точки приложения, попробовал этот продукт. До этого никогда не пользовался приложениями для построения 3D моделей.

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

Если есть задачи 3D моделирования, но вам кажется что это трудно, попробуйте, может быть Вы заблуждаетесь.

Microsoft + Developer + Web = Challenge

18 November 2008 |

Сложилось такое впечатление, что в последнее время Microsoft активизировало работу с разработчиками. Впечатление основано на аномальной щедрости Microsoft, как то раздача книжек ("Боекомплекта ИТ-профессионала и разработчика"), раздача Windows 2008 Server Web Edition на различных конференциях (Дни разработчик, VORT-EX08), задушевные письма с предложением высказывать свои пожелания, акции по поддержке startup-ов и другие, сейчас уже не вспомню...

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

Мне как разработчику кажется, что один из значительных моментов, который сдерживает бурный рост разработок на технологиях Microsoft, это отсутствие БЕСПЛАТНОГО хотинга для Web приложений реализованных на этих технологиях. Причём важно чтобы хостинг был международный, контролируемый Microsoft, пусть с большими ограничениями, чтобы поддерживал все основные новые технологии Microsoft, был прост в использовании и легко доступен.

Если ещё 3-4 года назад среднестатистическое приложение было вида Desktop, то сейчас это конечно Web. Существует достаточно большая группа разработчиков, которые пишут приложения в рамках хобби, для себя. И ситуация сложилось таким образом, что разработчик которые пишут for Fun, стали выбирать альтернативные технологии, потому что ими проще воспользоваться. Сейчас технологии Microsoft для Web с технической точки зрения превосходят все другие. Но поставьте себя на место студента, сколько трудностей ему придется преодолеть, чтобы развернуть приложение у которого серверная часть WebService, он должен найти провайдера которые ему предложит хостинг с поддержкой всего необходимого нужных версий, заплатить деньги... Помните о ком идёт речь, студент просто хочет что-то написать for Fun, и какая будет его реакция, да он даже не станет разбираться с тем что такое WebService, он ограничиться написанием каких нибудь прибамбасов для сервисов google или еще чего подобного. В итоге не продвигаются на рынок новые технологии, всё меньше появляется разработчиков на технологиях Microsoft и всё больше на альтернативных. Под угрозу попадает самый главный козырь Microsoft - массовость. Microsoft инстинктивно чувствует это, вопрос в том сможет ли гигант с этим что-то сделать или так и будет продолжать беспорядочно дергать ножками... Что спасает Microsoft, это отсутствие сильных конкурирующих технологий.

Help: ДТП

14 November 2008 |

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

Вот схема ДТП:

DTP_Diagram

Зелёная машина это родственник, красная другой участник ДТП. Стояли на светофоре, поехали, ехали по второй полосе, потому что на правой были припаркованы машины, второй участник ДТП решил обогнать по правой, но по всей видимости не рассчитал, в результате произошло ДТП, как показано на схеме. После ДТП красная машина проехала дальше и припарковалась в нескольких десятках метров. Удар был не сильный, родственник, который сидел за рулём первый раз попал в ДТП и немного растерялся, вместо того, чтобы оставить машину на месте ДТП припарковался. Затем родственник вызвал ГАИ и Агента страховой компании. В красной и зелёной машине находилось по два человека (водитель и пассажир). Машина имеет страховку КАСКО.

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

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

Поэтому вопросы опытным людям:
1. Какие прогнозы на завершения этого дела?
2. Как вести себя на разборе?
3. Как вести себя в суде, если он будет?
3. На какие тонкости нужно обратить внимание по существу дела?
4. На что может повлиять признание виновности/не виновности в ДТП?
5. Другие полезные советы по данной ситуации и моральная поддержка...

Заранее благодарю всех...

Religion: Bible First Half

13 November 2008 |

Медленно идёт знакомство с Библией, но что делать, о целесообразности этого: Religion: How Know. На текущий момент прочитано 3/8, появились новые впечатления поделюсь ими...

Стала появляться гуманистическая риторика такого вида:

" - Бог смиренных, Ты - помощник умаленных, заступник немощных, покровитель упавших духом, спаситель безнадежных."

Редко, но сильно контрастирует со всем остальным, поэтому  нельзя не заметить.

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

"... и пришел весь народ в большой страх от Господа..."
"... владычествуя в страхе Божием."
"Не в страхе ли Бога нашего должны  ходить вы, дабы избегнуть поношения от народов, врагов наших?"

Цитаты подобраны может не очень хорошо, просто хотелось подчеркнуть что "страх Господень/Божий" устойчивое выражение и имеется в виду самый обычных страх - страх каких либо физических воздействий, в основном смерти.

"Господи смерти прошу, Господи не для себя ведь прошу ."

Из характерного всё так же является то, что более 50% из совершенного или благословленного Господом, является истребление людей другой веры или людей нарушавших заповеди. При этом, как правило инициатором является сам Господь, он говорит, когда, кто, где и как будет уничтожен. Более подробно об этом гововрилось в Religion: First Step.

Verdi Style

11 November 2008 |

«Найти свой стиль – легко»
Fox

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

Поэтому если у Вас, у Ваших знакомых у знакомых Ваших знакомых есть потребность в такого рода услугах, то обращайтесь в магазин - салон Verdi Style.

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

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

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

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

Inherit From ElementHost

11 November 2008 |

Расширяя и подгоняя ElementHost для конкретных задач, через наследование. Столкнулся с необычной проблемой, в режиме DesignTime целевой элемент управления генерирует не нужный мне код, при этом атрибуты (Browsable и DesignerSerializationVisibility) над свойствами не помогают.

Проблема заключалась в атрибутах (Designer и DesignerSerializer) уровня класса, которые естественным образом наследуются от ElementHost. И чтобы от этого избавиться нужно их переопределить как:

[Designer(typeof(ControlDesigner))]
[DesignerSerializer(
"System.Windows.Forms.Design.ControlCodeDomSerializer, System.Design",
typeof(CodeDomSerializer))]


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

GMail Backup

10 November 2008 |

Для работой с почтой в основном использую Outlook, поэтому вопрос с резервной копией GMail не возникал, всё сводится к копированию .PST файла.

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

WPF: Multiline TextBox

05 November 2008 |

В WPF у TextBox интересное поведение в режиме работы Multiline. Явного свойства Multiline нет, но если установить свойства: AcceptsReturn = true и правильно выполнить Layout TextBox-а в контейнере, то вы увидите интересное поведение TextBox-а, в WinForms такого не было. Если высота TextBox-а указана явно, то будет работать так же как и в WinForms.

Religion: First Step

01 November 2008 |

Заметка является продолжением Religion: How Know. Существует много переводов Библии, дальнейший текст этой заметки и всех последующих упоминающих Библию основан на синодальном переводе середины XIX века. Данная заметка написана по свежим следам прочтения 1/4 Библии.

"Приносящий жертву богам, кроме одного Господа, да будет истреблен."

"...сокрушите столбы их, и сожгите огнем рощи их, и разбейте истуканы богов их, и истребите имя их от места того."

"...пришлец ли, туземец ли станет хулить имя [Господне], предан будет смерти."

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

"...итак убейте всех детей мужеского пола, и всех женщин, познавших мужа на мужеском ложе, убейте"

"Когда Господь Бог твой истребит народы, которых землю дает тебе Господь Бог..."

"...людей же всех перебили мечом, так что истребили _всех_ их: не оставили [из них] ни одной души."

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

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

У меня возник очень трудный вопрос, как современный,  в целом добрый человек может любить, молиться такому богу. При этом, тот же самый человек против смертной казни и за гуманное отношение к домашним животным, а может даже и вегетарианец. Кроме того, что этот обычный человек не знает "биографию" бога и того что он заповедовал, другое объяснение найти трудно.

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