23 апреля 2009 г.

Portable программы

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

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

Поэтому мне стало интересно, а много ли есть portable версий популярных программ. И собственно, кто их делает. Долго искать не пришлось. Достаточно зайти в google и в качестве запроса указать одно слово portable. Сайтов будет найдено уйма и что самое интересное на многие ресурсы представляют собой просто склады этих самых программ. Чего тут только нет, программы на любой вкус и при этом порой весят намного меньше своих инсталлируемых собратьев.

Как же устроены portable программы? Я попытаюсь ответить на этот вопрос изучив некоторые версии программ используемых у меня и некоторых, которые я скачал специально для этих целей. И так начнем.
Первым нашим пациентом будет программа для просмотра графических файлов IrfanView. Данную программу можно скачать с http://www.irfanview.com совершенно бесплатно.

За то, что эта программа может работать без установки спасибо собственно её автору - Irfan Skiljan. Как видно данный товарищ не заморачивался о чем-то и просто написал программу, которая хорошо работает. Так что если вам нужно, то просто установите эту программу себе на диск, только ни на системный и пользуйтесь даже после переустановки ОС.

Следующей рассмотренной мною программой будет бесплатный редактор аудио-файлов Audacity.

Portable версия данной программы была скачана с ресурса portableapps.com.
Содержимое архива с программой можно увидеть ниже.

Как видно, для запуска приложения существует файл AudacityPortable.exe, который является ни чем иным как своего рода эмулятором. Дело в том, что такого рода portable программы запускаются в эмулирующей среде, в которой эмулятор показывает программе, что она была установлена, все изменения в реестре сделаны и что можно работать и ни о чем не думать. А теперь подробнее о том, что же находится в каждой папке.
App - данная директория собственно содержит само приложение.
Data - настройки приложения
Other - насколько я понял эта папка никак не действует на работу самого приложения. В ней содержатся исходные коды самого приложения.

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

22 апреля 2009 г.

Изменение ТЗ во время разработки приложения

Я думаю многие разработчики сталкивались с такой бедой как изменение технического задания при разработке сайта или программы во время разработки приложения. Такое есть и, наверное, будет всегда. Да это плохо и часто губительно, но ничего не поделаешь. Так повелось, что заказчики никогда толком и не могут определить, что же они хотят? "Вот эту фишаЧку, или вот эту!" И что делать нам разработчикам? Хочешь заработать свою копейку делай, переделывай, строй, разрабатывай. Да, за лишнюю работу цена увеличивается, но часто бывает, что и не рад увеличению этой самой платы так как работы бывает много.

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

9 апреля 2009 г.

Microsoft опубликовала документацию о своих новых продуктах.

За последнее время компания Microsoft выпустила в достаточное количество новых продуктов. И вот теперь появилась документация, наконец-то, на "великом и могучем" о том, что же нам обычным пользователям и разработчикам она привнесла нового и неизведанного ранее.

Internet Explorer 8. Никогда не думал, что я так буду восхищен этим браузером, но стоит заметить, что это так. Наверное, это потому, что IE8 привнес все-таки что-то новое в мир браузеров и это радует. О чем я говорю? Можно прочитать вот в этом руководстве.
Так же все таки не помешает прочитать и про совместимость IE8 с сайтами не поддерживающими web-стандарты. Этот документ доступен здесь.

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

Silverlight 3 beta. Для меня документация и сам выход новой версии Silverlight был приятной неожиданностью. Очень уж запала в душу эта технология. Для меня как разработчика web-приложений, Silverlight дает такие возможности, какие все-таки не могла дать ныне НИ ОДНА технология, а это много значит. Скачать - "Новые возможности Silverlight 3"

1 апреля 2009 г.

.NET Framework копия Java?

Мне часто приходится слышать достаточно неприятную, лично для меня, вещь, что .NET Framework это всего-лишь копия Java и не более. Т.е. есть граждане, которые утверждают, что Microsoft просто содрала все у Sun Microsystems и ничего нового собственно не придумала. Простите, но я не совсем согласен с этим. Все-таки как не крути, но .NET Framework это нечто большее, чем платформа.

Если заглянуть немного внутрь двух платформ, то действительно мы видим простую идею: "Работать везде". Т.е. приложения написанные на Java работают везде, где установлена виртуальная машина Java. Приложения же .NET Framework, работают там, где установлен .NET Framework. При этом списки всех систем на которые можно поставить .NET и Java достаточно большие.

Но неужели за кроссплатформенность .NET Framework можно назвать клоном Java. А как на счет всего остального? Как на счет всех технологий присущих .NET? Вспомним ASP.NET, ADO.NET, WinForms, LINQ, Silverlight (который уже получил 3-ю версию), .NET Services, ADO.NET Data Services, Entity Framework. И это далеко не весь список. И с каждым разом он увеличивается, что-то развивается и улучшается. А если посмотреть, что анонсирует Microsoft в .NET Framework 4.0 и C# 4.0, то назвать это клоном Java просто кощунственно.

Так же часто слышится, что Silverlight это просто копия Flash и ничего более. Тогда ответьте на вопрос те, кто так считает. "Можно ли во Flash смотреть фильмы в HDTV?" Я думаю ответ будет один.

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

20 марта 2009 г.

Microsoft выпустила новую версию браузера Internet Explorer 8

И вот, наконец, компания Microsoft и выпустила новую версию браузера Internet Explorer 8. Браузер доступен на множестве языков, в том числе и русском. Скачать браузер можно по ссылке приведенной ниже
http://www.microsoft.com/rus/windows/internet-explorer/
Для новой версии браузера доступно огромное количество сторонних компонентов, которые можно скачать с http://ieaddons.com/ru/
По заверения разработчиков Internet Explorer 8 является:
1. Наиболее совместимым со всеми стандартами web.
2. Совместимым со старым кодом — IE8 имеет режим compatibility view, позволяющий на время переключить браузер в режим совместимости с IE7 и более ранними версиями.
3. Специально для веб-разработчиков создан IEAK8, позволяющий собрать собственный IE8, адаптированный под нужды конкретных пользователей и содержащий собственные компоненты

12 марта 2009 г.

Mail.Ru и Microsoft выпустили специальную версию браузера Internet Explorer 8

Mail.Ru и компания Microsoft разработали специальную версию браузера Internet Explorer 8. Она включает в себя ряд функциональных дополнений, позволяющих работать в Интернете еще удобнее с помощью сервисов Mail.Ru. В настоящее время IE8 находится в статусе Release Candidate 1 и пока еще не начал официально распространяться. Загрузить версию IE8 с пакетом дополнений от Mail.Ru сейчас можно только на страницах этого портала - стратегического партнера Microsoft по продвижению браузера в России.
вся статья...

Честно говоря IE пользуюст только при разработке сайтов, так как хорошая работа данного браузера с Microsoft Visual Studio не вызывает опасений. Да и тестировать сайт приходится далеко не в одном браузере. Но данная статья меня все-таки немного обрадовала. Microsoft предоставила разработчикам IEAK8. И теперь любой желающий может собрать свой собственный IE. Но вот вопрос, почему другие производители браузеров не делают того же? Столько информации о своем браузере, как Microsoft не выаживал никто. Взять хотя бы доклады на сайте TechDays.

В общем ждем, выхода полной версии и попробуем, что-нить написать под новый IE.

1 марта 2009 г.

Кризис и IT

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

И так, как же подействовал кризис на IT, а именно на разработку программного обеспечения. Не будем говорить о том, что огромное количество специалистов в разных областях остались без высокооплачиваемой работы. А ведь это действительно так! Вот мне интересно, что делать теперь этим самым специалистам? Ведь никто не говорит, что их уволили потому что они были плохими! Нет! Порой просто увольняли людей за которых в без кризисную пору просто могли драться и предлагать сумасшедшие деньги. Так, что же происходит сейчас?

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

В интернете не раз звучали опасения всевозможных аналитиков, экспертов в области IT, что кризис даст толчок для роста киберпреступности. И я с этим согласен. Если человек не может найти работу и следовательно деньги для того, чтобы прокормить свою семью то, что ему остается? Только воровать! Но воровать ведь тоже нужно уметь! А что делать, если ты, например, специалист по безопасности web-приложений. Если ты знаешь каждую брешь в защите! Или можешь найти её? То, что остается, кроме как не воспользоваться этим и не заработать денег. Почему не написать на заказ новый вирус, который заразит миллионы компьютеров, если за это хорошо заплатят? Почему это не сделать?

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

26 февраля 2009 г.

Таблица шансов

Данное приложение предназначено для изучения "Таблицы шансов" для игры в покер.

В программе есть два режима работы: тестирование и обучение.

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

Программа разрабатывалась как WindowsForms приложение под .NET Framework 2.0
Применялись следующие технологии и инструменты разработки: C#, XPath, Microsoft Visual Studio 2008 Express.

21 февраля 2009 г.

Нужна ли спецификация для проекта?

Когда-то все свои программы я писал даже не думая о том, чтобы составить хотя бы перечень из функциональностей доступных в программе. Программы писались и даже работали =) да вот только бывало, что работа над одной программой занимала огромное количество времени. И это происходило не из-за того, что программы были огромными и многофункциональными. Нет, скорее наоборот! Они были маленькие и их функциональность была смехотворна. Тогда почему же их разработка занимала много времени? Все просто! У меня небыло и малейшего плана разработки, я не задумывался о взаимодействиях одной части программы со второй.

Это было просто ужасно, так как простейшие часики с настройками, будильником, напоминалками и календарем занял полторы тысячи строк. Подумайте 1500 строк на часы, которые ничего из себя не представляли. Но не только это было причиной таких больших сроков разработки. Порой программа выходила только через несколько версий, т.е. я начинал писать с версии 1.0, а свет увидела только 1.4 =(( И все потому, что напортачив в коде, я не разбираясь начинал писать новую версию, уже более продуманную.

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

Итак, мой разговор пойдет, об одной из частей разработки программного обеспечения - написании спецификации.

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

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

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

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

Допустим, мы написали о писали всю функциональность приложения и написали как со всем этим будет работать пользователь. Можно ли расширить и добавить в нашу спецификацию какую-нибудь информацию, которая может помочь при программировании? Конечно можем. Этот шаг мало кто делает (я сам так сделал только один раз =)) ) но польза от следующего действия огромна и позволяет сократить время программирования в 2 и более раз. Что это за шаг? Шаг разработки внутренней структуры самого приложения. Т.е. для каждой описанной нами ранее функциональности мы описываем из чего она будет состоять программно. Т.е. классы и для чего они нужны, взаимодействия между классами. После этого действия у нас все приложение будет уже описано, нам только останется создать все эти классы, а именно создать реализацию каждого конкретного класса, их методы.

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

15 февраля 2009 г.

Разработка службы Windows на Microsoft Visual Studio 2008 Express

Часто нам приходится писать приложения, в которых нужно написать Windows службу, которая будет следить за какими-то процессами или выполнять какую-то работу в фоновом режиме. Например, при создании сайта, часто возникает такая потребность как подтверждение email адреса только, что зарегистрировавшегося пользователя. В основе своем для реализации данного решения, мы создаем таблицу, в которой прописаны идентификаторы пользователей, их email адреса и коды подтверждения сгенерированные самим сайтом для каждого. Но вот проблема, если пользователь не прошел авторизацию, то в таблице остаются данные о его регистрации, что не очень хорошо, так как, во-первых, база данных хранит много ненужной информации (ведь таких пользователей может быть не один и не два), во-вторых, так как повторения логинов не допустимо, то может оказаться, что вновь регистрирующийся пользователь не сможет зарегистрироваться под своим любимым ником из-за "мертвой души", которой собственно и нет на сайте. Как поступить в этом случае?

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

Но как же быть, если мы пишем сайт с помощью Microsoft Visual Studio 2008 Express в которой нету проекта для создания службы. Покупать другую версию? Не всегда есть на это деньги, да и если нужно написать всего-то одну службу и все, то это не самый лучший выход. Самым лучшим выходом из этого положения будет создать шаблон приложения Windows сервиса и просто всегда им пользоваться. При этом нам не понадобиться ни новой IDE ни установки каких-то дополнений.

Дело в том, что все, что мы пишем под .NET Framework на любом языке содержится в самой среде. Т.е. для написания ЛЮБОГО приложения не понадобиться абсолютно ничего, кроме рук, головы и соответствующих знаний.

И так, для создания нашего шаблона, запустим Visual C# 2008 Express и создадим новый пустой проект.
File-New Project...->Empty Project

Теперь необходимо добавить нужные файлы и сборки.
Первым делом добавьте в созданный нами проект файл, который будет содержать полную информацию о сборке – Assembly Information File. Назовем его AssemblyInfo.cs. Сразу после добавления его в проект, его можно просто закрыть, так как ничего изменять в этом файле мы не будем.
Далее нужно добавить файл, содержащий весь код нашей службы. Для этого добавьте в проект простой класс с именем WindowsService.cs и отредактируйте его как показано в листинге 1.
Листинг 1.
using System;
using System.Collections.Generic;
using System.Text;

namespace WindowsService
{
public class WindowsService : System.ServiceProcess.ServiceBase
{
public WindowsService()
{
InitializeComponent();
}

private void InitializeComponent()
{

}
}
}

Не забудьте добавить в Reference сборку System.ServiceProcess.
Для этого щелкните правой кнопкой мышки по папке Reference и выберите пункт Add Reference.… На вкладке .NET найдите сборку System.ServiceProcess, выделите её и нажмите кнопку OK.
Теперь нам осталось добавить класс для регистрации службы. Для этого также добавим класс с именем ProjectInstaller.cs. Исходный код данного класса приведен в листинге 2.
Листинг 2.
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;

namespace WindowsService
{
[RunInstallerAttribute(true)]
public class ProjectInstaller : System.Configuration.Install.Installer
{
public ProjectInstaller()
: base()
{
InitializeComponent();
}

private void InitializeComponent()
{

}
}
}

Не забудьте добавить ссылку в раздел Reference на сборку System.Configuration.Install.
Теперь нам осталось только экспортировать проект как шаблон. Для этого выберите File-Export Template…
Перед нами появляется первое окно мастера экспорта, в котором нам предлагается выбрать одно значение из двух:
1.Project template – шаблон проекта, который нам и нужен
2.Item template – шаблон одного файла. Т.е. это один из тех шаблонов, которые мы видим, выбирая пункт Add New Item, когда работаем с текущим проектом.

Жмем Next и видим новое окно мастера, в котором нам предлагается выбрать:
Template Icon: иконку шаблона (она будет ассоциироваться с этим шаблоном при создании нового проекта). Я оставил по умолчанию.
Template name: Имя шаблона. Желательно указать все же имя, по которому можно понять, шаблон какого проекта мы создаем. В данном случае я указал WindowsService.
Template description: Описание шаблона. Я ничего не указывал.
Output location: Папка, в которой будет храниться шаблон. Это значение изменить нельзя, так что после создания шаблона лучше скопируйте данный шаблон в папку, которая точно останется целой даже после переустановке операционной системы, так как каждый раз создавать один и тот же шаблон, все же не так и весело.
Жмем кнопку Finish и все. Наш шаблон готов. Теперь вы можете писать службы Windows и не задумываться о том, что вам нужно покупать новую версию любимой программы.