Archive 2009

Программирование на .NET: С чего начать?

Published at December 16, 2009 ·  2 min read

Случилось так, что на работе попросили составить список из того, что нужно почитать/скачать/установить студентам, которые хотят писать на всеми любимом языке программирования C#. Решили, что раз они (студенты) этим интересуются, то вопрос “а оно нам(им) надо пропускаем.

Для начала начала необходимо установить сам .NET framework и какуе-то IDE. C IDE вариантов не много: или бесплатные express версии (http://www.microsoft.com/exPress/), или trial полнофункциональной Visual Studio (http://www.microsoft.com/visualstudio/en-us/default.mspx). Что дальше делать с триальной версией - каждый решает сам, но для студентов полно всяких програм, где можно получить всё это бессплатно и, главное, легально.

...


[Offtopic] Установка PostgreSQL на MacOS X или ностальгия по MS DOS

Published at December 10, 2009 ·  1 min read

Первая попытка установить PostgreSQL на MacOS X потерпела крах. Пошел читать readme:

 

Вспомнились танцы с бубном в MS Dos, чтоб тот увидел больше 640К оперативной памяти, работа с extension memory (привет Паскалю). А чего стоит знаменитая фраза одного известного всем человека, о том, что нам таки хватит 640К ОЗУ. А ностальгия скорее не о ДОСе, а о том, как раньше писал код (некоторые и сейчас так пишут): оптимизировали память так, чтоб лишнего байта не занимало. А как доставалось тогда Windows’у? Лишние лишние файлы, процессы, записи в реестре дезжалостно удалялись для прибавления 1-2 мегабайт свободной оперативной памяти и нескольких десятков мег на винте. А сейчас словил OutOfMemoryException, когда процесс IIS’а в виртуалке начал есть более одного гига… Завтра буду искать memory leaks…

...


jQuery 1.4 Alfa 1

Published at December 7, 2009 ·  1 min read

Несколько дней назад вышла новая версия популярного JavaScript framework’а jQuery, пока только альфа, которую сами разработчики не рекомендуют использовать в production. Официальная информация на блоге http://blog.jquery.com/2009/12/04/jquery-14-alpha-1-released, а я расскажу о своих первых впечатлениях по сравнению с последней стабильной версией 1.3.2.

Для начала сравним размеры файлов:

Видем что размер вырос, примерно, на 30 килобайт. Много это или мало - судите сами.

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

...


Прошло два года...

Published at December 4, 2009 ·  1 min read

В прошлом месяце болгу исполнилось 2 года. За это время поменялось 3 хостинга, 2 движка блога (после переезда с blogspot.com был выбран BlogEngine.NET). Сейчас свотрю всё больше в сторону WordPress, который написан на нелюбимом мной PHP, но не такой сырой, как движки на .NET или Python. Или прийдётся таки дописывать самостоятельно нужную функциональность к BlogEngine, но на это нужно время. Также изменился вид RSS-ленты: теперь в ней виден весь пост.

...


ASPNET: Script Service

Published at December 3, 2009 ·  1 min read

Почему-то, всегда забываю синтаксис вызова script service/method. Руки так и тянуться написать:

И каждый раз, после написания такого когда приходится лезть в MSDN/Google чтобы понять почему же оно не работает. После прочтения документации становится понятно “как” нужно писать вызов метода, но вопрос “почему” ответ, как правило, находится не сразу. Чтобы понять почему же всё работает именно так, достаточно посмотреть JavaScript код, который генерируется службой. Посмотреть это можно зайдя по адресу http://localhost:65456/AsmxService.asmx/js и сохранив себе js-файл следующего содержания:

...


Запуск 32-х битных веб сайтов на Windows Server 2008 x64

Published at November 17, 2009 ·  1 min read

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

Первым делом я в свойствах проекта поменял свойство Platform Target (посже оказалось что это нужно сделать для всех проектов в solution):

 

PlatrormTestWeb.zip (10.01 kb)

...


Байты, строки и кодировки

Published at October 16, 2009 ·  1 min read

 

  byte[]	byteArray = GetBytes();<br />		var retval = Encoding.ASCII.GetString(byteArray);

 

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

 

  "\u0000"\u0000a\u0000"\u0000:\u00002\u00000...." 

 

Тогда все начинают громко ругаться и рвать на себе волосы со словами: “Ну ведь работало же! Да и вот в этом(http://www.google.com.ua/search?rlz=1C1GGLS_enUA335US335&sourceid=chrome&ie=UTF-8&q=c%23+byte+array+to+string) примере так написано!”.

...



Программания 2009

Published at October 9, 2009 ·  1 min read

Завтра состоится очередной конкурс Программания. Другой формат. Не понятно зачем его таки делать. IMHO, лучше б уже не было. Заявку подал, но участие под вопросом.

P.S. Верните нам IT-Contest!

P.S.S. Получился не пост в блог, а сообщение для твиттера. 

...


ASP.NET + Mono + Apache

Published at September 22, 2009 ·  2 min read

Всё больше и больше можлно услышать о Mono. Как изестно, основное его идеей является реализация действительно кроссплатформенной среды .NET. Таким образом, чеще всего Mono испльзуют в операционной системе, отличной от MS Windows. А если не Windows, то Linux или какой-то из Unix. И всё было бы хорошо, если б не 2 момента (в данном случае я не акцентрирую внимание на степень готовности реализации Mono: аналог WinForms и замена Internet Information Services (IIS).На за мену WinForms приходят GTK, QTи другие библиотеки. А вот с заменой IIS все не тах хорошо: либо Apache с соответствующими модуляли, либо “родной” для Mono веб-сервер XSP2. А так как Apache наиболее популярен, то будем пользоваться им.

...


Patterns & Practices Roadshow

Published at September 17, 2009 ·  3 min read

Началось всё со вступительного слова представителя компании Microsoft Ukraine. Хотя, на самом деле всё началось с регистрации, где нам вдали пакеты с анкетой, ручкой и каким-то учебником для ВУЗов на украинском языке и кофе.

 

Вторым на сцену вышел Don Smith, которого встретили бурными авациями в том числе и из-за его Mac Book Pro, на котором оказалась установленная Windows 7. Тут доклады немного пеменялись местами и мы услышали  доклад “Руководство по архитектуре приложений: карта вашего путешествия”, который должен был быть после обеда. Но хуже от этого не стало. Нам рассказали о “Application Architecture Guide”, котором написано, что он создан для разработки решений на платформе .NET, но, по сути, может быть использован при использовании и других технологий. Это же нам подтвердил Дон. Application Architecture Guide рассазывает нам о высокоарзхитектурных решениях, не вдаваясь в подробности реализации конкретных частей приложений. Думаю, что это будет интересно не только архитекторам, но и всем разработчикам. Поэтому рекомендую прочесть этот почти 400-страничный мануал.

...



А вы говорите индусский код...

Published at August 31, 2009 ·  1 min read

internal class LinqConnection: BaseDatabaseConnection{

   ///    /// Should never be called   ///    internal LinqConnection()   {       throw new Exception();   }   …

 

Написали программисты из США. И это ещё далеко не самый плохой кусок кода в проекте….

...


Blog was hacked: vol.2 или разбор полётов

Published at August 17, 2009 ·  1 min read

В то время, пока я не мог найти время разобраться что же случилось с моим блогом, это случилось снова! 2 раза за два дня - это слишком.

 

  		**2009-08-16 17:39:33 81.215.238.234 - W3SVC119 WINHOSTING2 194.54.88.53 80 PUT /index.html - 201 0 330 347 16 HTTP/1.0 Microsoft+Data+Access+Internet+Publishing+Provider+DAV+1.1 - -** 
  		 
...


Это случилось: Blog was hacked!

Published at August 7, 2009 ·  1 min read

Да, это всё-таки случилось. Товарищ по имени ZoRRoKiN хакнул мой блог. Произошло это, судя по всему, из-за моей глупости: лёгкий пароль на админку + старая и бажная версия движка BlogEngine.NET.

А случилось вот что:

На хочтинг были залиты файлы: - default.html, zorrokin.htm, index.html с следующим содержанием:  

	ZoRRoKiN

  -  ownz.htm с текстом: Command Tribulation Ownz your b0x  

...


Project dependences и project references: делаем это правильно

Published at July 23, 2009 ·  1 min read

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

 Рассмотрим такую ситуацию: у нас есть главная сборка (Main), сборка с утилитными классами (Utils) и 3-rd party логгер (Logger):

  1. Добавляем в наш solution нужные нам проекты. 1. Добавляем ссылки на проекты. ReferencesSample.zip (76.14 kb)

...


SourceGear Vault и ошибка при коммите

Published at July 21, 2009 ·  1 min read

На проекте приходится использовать SourceGear Vault - source control система, которая очень похожа на VSS. Сегодня наткнулся на очередной глюк:

 

...


Интересная особенность Enum

Published at July 17, 2009 ·  2 min read

Те, кто знает на память книгу Дж.Рихтера C# via .NET, в этом врядли найдут для себя что-то новое/интересное.

 

 Всё началось с того, что было у меня два похожих enum’ов (к примеру Numbers и BigNumbers) и нужно было как-то переменные первого типа приводить к другом, и наоборот. 

** enum Numbers**

**     {**

**         One,**

**         Two,**

**         Three**

**     }**

** **

...


JavaScript: удаляем элементы из массива

Published at July 3, 2009 ·  2 min read

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

Итак, у нас есть исходный массив:

<p>
<em>var arr = new Array();<br />
arr.push('q');<br />
arr.push('w');<br />
arr.push('a');<br />
arr.push('e');<br />
arr.push('r');<br />
arr.push('t');<br />
arr.push('z');<br />
arr.push('y'); </em>
</p>

 Задача состоит в том, чтобы удалить из него элементы со значениями “a” и “z”. Первой же идеей было использование оператора delete:

...


ASP.NET, сэссия и рестарт приложения

Published at June 9, 2009 ·  3 min read

Всё началось с того, что в спецификации к проекту написали примерно такое: “Время продолжительности сэссии пользователя на сайте должно составлять 120 минут”. После чего, в web.config была добавлена следующая строка: 

<p>
<em><sessionState mode="InProc" cookieless="false" timeout="120" /> 
</em>
</p>

А на страницу был добавлен такой мета-тег:

<p>
<strong><meta http-equiv="Refresh" content="7200; URL=/EzRc/Pages/LogOn/SessionExpired.aspx" /> 
</strong>
</p>

Следует упомянуть конфигурацию тестовых серверов: Windows Vista/2008, IIS7, .NET 3.5. Ничто не предвещало беды. Но, как и полагается, в один “прекрасный” день всеми людимые QA написали баг следующего содержания: “Session expiration occurs prior to 30 min (and as little as 10 min).” При этом повторить его было достаточно просто:

...


Встречаем новый язык программирования от Microsoft - Axum

Published at May 24, 2009 ·  4 min read

Не успели мы ещё познакомитя с F# и новыми возможнастями .NET 4.0, как Microsoft представила новый язык программирования Axum (на самом деле Axum был представлен ещё до выпуска первой бета-версии .NET 4.0). Раньше он имел коддовое название Maestro.

Что же представляет собой Axum? Это язык для паралельной разработки (parallel model language), который позволяетлегко создавать легкомасштабируемые, распределённые и многопоточные приложения. Лично мне синтаксис этого языка напомнил Erlang, которые имеет изменённый синтаксис и является полностью .net-совместимым языком программирования. Текущяя версия - CTP. В данный момент не известно о дальнейшей судьбе и планах о релизе.

...



Pirates: to be or not to be.

Published at April 23, 2009 ·  2 min read

Навеяно судовым процессом над The Pirate Bay.

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

...


Visual Studio 2008: проблемы с генерацией .designer.cs для Web Application

Published at April 16, 2009 ·  1 min read

Вчера столкнулся с интересным моментом при генерации *.designer.cs-файлов. Сначала подумал что это баг, но после недолгих размышлений пришел к выводу, что это не баг, а фича (“багофича” (с)). 

Всё началось с того, что на одной из страниц сайта нужно было создать некоторую функциональность, которая уже была доступна дадругой странице. Сразу же было решено поместить эу функциональность в UserControl.После достаточно стандартных действий, copy&pase нужной разметки из страницы в только что созданный контрол, уже собирался писать в нём логину, но… Но студия ругалась на любое упоминание о вебконтроле, расположенном в mycontrol.ascx. “Странно” - подумал я и посмотрел содеримое файла mycontrol.ascx.designer.cs. В нём оказалось пусто. Тут же вспомнились похожие баги Visual Studio 2005 без установки на неё Service Pack 1 и было принято решение (как озакалось потом - ошибочное) руками дописать нужный код. Дописал. Сайт скомпилировался и даже попытался запуститься, но run-time ошибка не дала ему нормально функционировать.

...


Offtopic: Архивы, архиваторы, Windows

Published at April 13, 2009 ·  1 min read

На работе возникла необходимость отправить архив с …, с чем-то очень важным. По привычке, быстро сделал rar-архив, прикрепил его к письму и уже собирался нажать кнопку Send, но вовремя остановился. Вспомнил что в одном из писем мне присылали файлы, запакованы в zip-архив. Быстро переархивировал нужные файлы отправил письмо и задумался о Windows, Microsoft и архивах.

Вчера скачивал Internet Explorer Application Compatibility VPC Image. И там некоторые образы запакованы в rar-архив. Замечу, что это не первый случай, когда на сайте Microsoft лежат rar-архивы. Обратил я на это внимание потому, что сама ОС Windows “из коробки” может работать только с zip-архивами. И как это безобразие понимать? Microsoft рекламирует WinRar? Субъективно, было бы логичнее сжимать всё в zip, чтобы разработчики не искали нужное ПО, чтобы разархивировать нужные архивы. Или предполагается, что после покупки и установки OS Windows её пользователю необходимо ещё скачать/купить/установить n-е количество софта? Странно всё это…

...



ASP.NET Ajax. Часть 1: что внутри?

Published at April 2, 2009 ·  2 min read

На днях столкнулся такой ситуацией, что многие некоторые разработчики при упоминании Ajax имеют в виду компонент UpdatePanel и не понимают как она работает. Сегодня я решил попытаться исправить эту ситуацию и рассказать что такое и как устроен ASP.NET Ajax.

 Для начала обратимся Википедии и посмотрим, что такое Ajax:

<p>
AJAX (Asynchronous Javascript and XML — «асинхронный JavaScript и XML») — это подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером. В результате при обновлении данных веб-страница не перезагружается полностью, и веб-приложения становятся более быстрыми и удобными.
</p>

Для выполнения асинхронных запросов, на JavaSctipt необходимо создать объект XMLHttpRequest, который и будет взаимодействовать с сервером. В зависимости от браузера, объект создаётся разными способами, но можно написать универсальный метод для его создания:

...


Пути использования Open Source

Published at March 27, 2009 ·  3 min read

  На мысль натолкнуло исправление очередного бага в Ajax Control Toolkit.

 

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

...


Dynamic Language Runtime: динамические языки в .NET

Published at March 21, 2009 ·  1 min read

Dynamic Language Runtime (DLR) - позволяет создавать свои динамические языки на платформе .NET. Сейчас самыми популярными из них являются IronPython и IronRuby. Также на просторах CodePlex существует IronLisp и другие динамические языки. Последняя версия DLR имеет номер 0.9 и была выпущена 10 декабря 2008 года.

Кроме того, что DLR позволяет создавать динамические языки, она также позволяет добавлять динамические элементы в уже сеществующие языки: C# 4.0 уже использует DLR - смотрите в сторону IDynamicObject.  Если я правильно понял документ DLR Overview, то DLR 1.0 будет частью Common Language Runtime (CLR), выход которой уже не за горами.

...


Делаем Build правильно

Published at March 20, 2009 ·  2 min read

Осталось реализовать ещё несколько методов… Сейчас допишу последнюю строчку… Проект пока что не компилируется… Ура! Вот эта заветная строчка в окне Output Visual Studio:

========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
 

 Теперь предстоит запустить проект. Но все не так просто. Часто для проектов, которые больше чем знаменитый “Неllo World!” и который пишет команда из нескольких человек, необходимы какие-то условия для запуска:

- скопировать конфигурационный файл;			
- запустить веб-службу;			
- отправить письмо о успешном билде;			
- и т.д. и т.п.

 

...


Первый взгляд на Microsoft Sync Framework

Published at March 19, 2009 ·  2 min read

Пока все делятся впечатлениями от новинок, представленными на MIX09, я решил написать о Microsoft Sync Framework. Исходя из того, что сказано на их сайте, можно синхронизировать всё.

  Microsoft	Sync Framework – a comprehensive synchronization platform enabling	collaboration and offline for applications, services and devices with	support for any data type, any data store, any transfer protocol, and	network topology.	

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

...


It Works!

Published at March 18, 2009 ·  1 min read

После значитального перерыва блог снова возобновил свою работу. Теперь, наконец-то он расположен на нормальном хостинге. До этого он находился на моём домашнем сервере и временами не работал (выключили свет, завис комп, забыл заплатить за инет), но после смены провайдера пришлось расстаться с выделенными IP-адресом, а платить за свой домен на сервисах, предоставляющих dynamic dns не хочется, пришлось задомуться о покупке хостинга. Банально, но решающим фактором оказалась цена. Выбор пал на наш украинский hosting.ua. После двух недель использования жалоб на него нет, хороший, почти круглосуточный (на некоторые вопорсы можно получить ответы по Skype или MSN круглосуточно, но на более технические вопросы через панель управления мне отвечали в течении рабочего дня) саппорт.

...


Подключаем базу от SQL Server Express к SQL Server Developer Edition

Published at February 6, 2009 ·  1 min read

SQL Server Express хоть и бесплатен, но обладает некоторыми недостатками. Мне кажется для разработчика один из главных - это то, что он не соответствеут боевым условиям. Ведь мало кто использует Express версию в production. Поэтому разработчики часто ставят SQL Server Developer Edition (опустим вопрос о лицензировании). Вот только тут появляются новые проблемы: скачал новый starter kit, а он в качестве СУБД использует SQL Server Expres. Не ставить же его из-за этого? Хотя можно и поставить…  Но я для себя выбрал другой путь: подключить эту базу к полноценному MS SQL серверу.

...


Python 3.0 и Django

Published at January 22, 2009 ·  2 min read

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

Вот и после очередного релиза Python, правильнее сказать после выхода новой версии языка Python 3.0 захотелось сразу опробоватьвсе гого “вкустности”. Вот только новая версия не полностью совместима с веткой 2.х. Поэтому возникает вопрос на какой версии начинать новые проекты? Популярный web frameworkDjango все ещё не пожжерживает Python версии 3.0. Вот что пишут их разработчики:

...


Новый релиз Mono 2.2

Published at January 21, 2009 ·  1 min read

Делюсь моими впечатлениями от знакомства с Mono.

На прошлой неделе вышел очередной релиз Mono - open source реализации .Net framework, разрабатываемый при поддержке компаний Novell и Microsoft. Подробно но нововведения можно почитать на странице проекта http://www.mono-project.com/Release_Notes_Mono_2.2.

Радует, что Mono в последних версиях поддерживает C# 3.0. Также есть Moonlight 1.0  - аналог Silverlight 2.0. Для миграции существующих проектов есть утилита Mono Migration Analyzer, которая позволяет узнать будет ли работать существующий код под Mono. Хочу сказать, что запуск небольшого WinForms приложения написаного на .Net framework 3.5 прошел порблем, а вот с web-приложением все немного хуже. Оффицияльня IDE MonoDevelop не поддерживает Web Application проекты, созданные в VS2008, поэтому для открытия каккого-ннибудь сужествующего проекти или StarterKit пришлось создавать новый проект и вручную добавлять в него все необходимые файлы. По удобству работы MonoDevelopв данный момент существенно проигрывает своему старшему брату и конкуренту - VisualStudio, но работать вполне можно. За время её использования MonoDevelop не разу не упала, аботала стабильно.

...


Tags

.net .net framework .net framework 3.5 agile ajax ajax control toolkit ampq ansible apache asp.net asp.net mvc automation axum babel bash benchmark blog blog engine bootstrap buildout c# cache centos chrome ci cinder ckan cli cloud code review codeplex community config debugger deface dependencies development environment devices devstack devtime disks django dlr dns docker dockerimage dos easy_install elmah encoding environment variables error event events everything-as-a-code exception exceptions fabrik firefox flask foreach forms fstab gae gcc gerrit git github go google google app engine grep hack hacked hardware headless horizon hound html hugo iaas ienumerable iis internet iptables iron python ironic iscsi java script javascript jenkins jquery js jsx k8s kharkivpy kiss kombu kubernetes kvm kyiv lettuce libvirt linux lio loci logging loopback losetup lvm mac os macos mercurial microsoft microsoft sync framework mobile mono ms office msbuild networking news nginx npm npx offtopic oop open source open xml opensource openstack openvswitch os p'n'p packages paraller development patterns & practices performance php pika pip plugins podcast popup postgresql profiler project protocols proxy pycamp pycharm pycon pykyiv pylint pypi python python 3 qcow quantum qumy rabbitmq rar react reactjs refactoring rfc rhel search engine security selenium server shell silverlight socket software engineering source control sourcegear vault sources sql sql server sql server express sqlalchemy ssh static site sublimetext svg tests tgt tipfy todo tornado typescript uapycon ui uneta unit tests upgrades usability vim virtualenv visual studio vitrage vm vue.js vuejs web development web server web service web_root webpack webroot windows windows live word press x32 x64 xcode xml xss xvfb интернет-магазин книги

Recent posts

Go 1.18: new features

Всё будет Kubernetes

2022 Relaunch

Everyday Blogging

I don't want this CI


Archives

2022 (3)
2019 (73)
2018 (2)
2017 (3)
2016 (2)
2015 (3)
2014 (5)
2013 (17)
2012 (22)
2011 (36)
2010 (25)
2009 (35)
2008 (32)
2007 (2)