воскресенье, 23 декабря 2007 г.

Особенности восприятия против реалий Web-дизайна

Сегодня испытал на себе достаточно занятные ощущения.

Все выходные я занимался изучением существующего рынка продуктов, которые обеспечивают миграцию данных между СУБД различных поставщиков.

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

Меня интересовало, какие именно СУБД поддерживает программный продукт. В итоге, после ~5 минутного чтения по-диагонали страниц на сайте я таки обнаружил эту информацию.

Естественно, что эта информация отражалась непосредственно на главной странице сайта.

Каким-то чудом я отсеил как раз ту часть страницы, на которой как раз находилась ключевая информация! Любопытно, не правда ли? :)

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

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

Так что рекламщикам меня не подцепить :))

суббота, 1 декабря 2007 г.

Суббота. Работа. Ужасное настроение.

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

Видимо это связано с повышением профессионализма :)

Но сегодня как раз тот самый день. И я сижу и наблюдаю эту чертовски загадочное сообщение об ошибке:
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.

Какой constraint, какое поле, какой not null, какой уникальный, какой внешний ключ?! ....

Неужели бравые ребята в MS не имели возможности это сделать? Они же умные, не то что я...

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

Stack trace целиком, если кому интересно:

System.Data.ConstraintException: Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
at System.Data.DataSet.FailedEnableConstraints()
at System.Data.DataSet.EnableConstraints()
at System.Data.DataSet.set_EnforceConstraints(Boolean value)
at System.Data.DataTable.EndLoadData()
at System.Data.Common.DbDataAdapter.FillFromReader(Object data, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)

суббота, 17 ноября 2007 г.

Список свободного ПО для Windows и обычного пользователя :)

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

Сегодня общался со своим товарищем, рассказывал ему про свободное ПО и как раз созрела небольшая заметка :)

Итак, список свободного ПО под Windows для среднестатистического, обычного пользователя:

OpenOffice.org - Рекомендую поставить и поработать в нем. По-моему мнению последние версии выполняют 100% нужд обычных пользователей.

Работать в нем стоти только с документами родного формата, несмотря на то, что он прекрасно понимает формат Microsoft Office. Просто так загрузка документа будет в несколько раз быстрее.

Единственная пока в нем проблема, отсутствие хорошей совместимости с Microsoft Access.

Firefox - браузер. Вообще отказываюсь комментировать. Все остальные браузеры в топку. Точка :)

7-zip - упаковщик. может распаковывать RAR 3.0 архивы. Рекомендую формат 7Z для упаковки, по сравнению с ним RAR проигрывает по степени сжатия. В крайнем случае формат ZIP никто не отменял.

Mozilla Thunderbird - почтовый клиент. один мой товарищ, продвинутый пользователь сказал что у этой программы нехватает только одной! фичи, которая есть в коммерческом The Bat! Но эта фича, реально нужна только системным администраторам. По-правде говоря я даже не помню что он говорил... :)

Miranda - многопротокольный клиет для обмена мгновенными сообщениями. В стандартной поставке требует большого количества времени для настройки. Имеет мощнейшую систему плагинов. Рекомендую использовать уже скомпонованные сборки типа Miranda IM - LEM pack или Miranda IM zeleboba's pack

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

MPlayer - видеоплеер, который также имеет свои собственные кодеки. Работает без установки - достаточно распаковать архив. После установки 60-мб пакета кодеков воспроизводит АБСОЛЮТНО ВСЁ. Использую как альтернативный плеер. Есть проблемы с работой под Windows Vista.

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

WinDjView - программа для просмотра электронный книг в формате DejaVu. Документы формата DejaVu имеют расширение .djvu и для неопытного пользователя чем-то напоминают PDF, но при этом документы намного комактнее из-за того, что там применяется сжатие векторного изображения.


P.S. Естественно, что этот списк можно дополнить софтом для гиков. Может быть я это когда-нибудь и сделаю.

пятница, 9 ноября 2007 г.

Самый быстрый способ посчитать число уникальных строк

Самый быстрый способ посчитать число уникальных (и не уникальных) строк.

Предположим, есть входные данные:
abc
bcd
bcd
def
efg
fgh
efg

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

Для этого может пригодится Microsoft Exel.

Вставляем этот список значений в столбец.
Добавляем эту формулу =+COUNTIF($A$1:$A$7,A1) в той же строке что и наша первая запись.

При этом нужно проследить чтобы диапазон, заданный в абсолютных координатах A$1:A$7 полностью охватывал все входные данные.

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


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

четверг, 8 ноября 2007 г.

Чем отличаются ASP.NET проекты Web Application и Web Site

Нашел довольно внятное объяснение тут.

Общий вывод. Web Site проект это настоящий шлак, который допустим к использованию только в детском саду.

Самое обидное, что проект типа Web Application доступен только начиная с Visual Studio 2005 SP1. В оригинальной 2005-й студии его упразднили... как мы видим по service paсk'у - неудачный ход.

Есть есть конструктивные замечания против. Буду рад услышать.

Необычное поведение индексатора у XmlAttributeCollection

В .NET 1.1 этот код НЕ работает:

ExtraCell extraCell = new ExtraCell(
node.Attributes[ATTRIBUTE_NAME].Value,
node.Attributes[ATTRIBUTE_VALUE].Value);

а этот - работает:

ExtraCell extraCell = new ExtraCell(
node.Attributes.GetNamedItem(ATTRIBUTE_NAME).Value,
node.Attributes.GetNamedItem(ATTRIBUTE_VALUE).Value);


Остается открытым вопрос... кто виноват :)

UPDATE:

Как оказалось были виноваты мои руки... прошу меня простить за совершенно бесполезный пост :(

воскресенье, 14 октября 2007 г.

Miranda. Проблемы с unicode версией irc.dll

status_alexus: привет
ctype: +
status_alexus: Miranda IM 0.7.0.48 (IRC v.0.7.0.2 Unicode)
status_alexus: это у тебя
status_alexus: ты знаешь, тут Саша Белый один бажок нашел
status_alexus: если ты юзаешь юникодовую версию irc.dll
ctype: пишет 0.7
status_alexus: то к тебе не приходят сообщения от пользователей имя которых начинается с большой русской буквы С
status_alexus: :)
ctype: да ну
status_alexus: ctype я тебе серьезно говорю
status_alexus: короче мы тут мудились с полчасика
status_alexus: я попробовал все порты (читай кодировки) которые поддерживает сервак онеат
ctype: г.м. я сам на себя послал - приходит
status_alexus: ircd-RU!
status_alexus: да. но у тебя же с латинской С
status_alexus: а я говорю о заглавной русской
ctype: ну я заглавную русскую себе послал
status_alexus: так вот
ctype: а. от пользовоталей
status_alexus: и только в одном случае я видел сообщения от такого пользователя
ctype: прикольно
status_alexus: когда подключался в режиме транслита
status_alexus: но тогда от него приходил транслит, а мне приходилось отправлять латиницей
status_alexus: и ник соотв. его начинался с S
status_alexus: такие от грабли :(
ctype: гы. вообще-то у мну нет знакомых с русскими никами
status_alexus: Аналогично ;)
ctype: так что это не баг, эта фича :)
status_alexus: в общем я буду юзать новый глючный плагин ирки в миранде :)
Sasha_Beluj: =))
status_alexus: а кто юзает ники на русском в IRC пускай идут гулять лесом
Sasha_Beluj: да не. Даже не так
status_alexus: а как?
Sasha_Beluj: те, кто юзает ники с большой буквы С пусть идут гулять :)
status_alexus: не важно
status_alexus: Кошечки, Ромашки и Писечки тоже пусть гуляют...
ctype: меня только один глюк волнует - досихпор rss переодически падает. и плагин без исходников
status_alexus: я RSS давно читаю через Google Reader
Sasha_Beluj: А глюк с буквой С большой не волнует? :)
ctype: Sasha_Belu. абсалютна

среда, 3 октября 2007 г.

Firefox HTML Validator

Нашел довльно любопытное расширение для Firefox.

На странице находится следующее описание:

Расширение основано на Tidy и OpenSP (SGML Parser). Оба алгоритма были разработаны консорциумом W3C. Оба алгоритма встраиваются внутрь Mozilla Firefox и проводят валидацию локально на вашем компьютере без отправки HTML на сервер третьей стороны.

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

Окно конфигурации, которое появилось после установки:




Вот непосредственно "рабочее" окно валидатора:

вторник, 2 октября 2007 г.

T-SQL. Как "округлить" datetime до date?

Постоянно забываю :(

convert(datetime, convert(varchar, od.SomeDateTime, 1), 1) as SomeDate

суббота, 29 сентября 2007 г.

Google Mail vs Велтон телеком. Уведомления о почте

Когда-то давно, когда у меня был основной почтовый ящик на mail.ru я настраивал уведомления на почте.

Я являюсь абонентом сети "Велтон-телеком" и пользователем почтового сервиса Goggle Mail и хочу поделиться как настроить уведомления о приходе новой почты.


Для этого нужно зайти на сервис Google Mail, выбрать Settings -> Forwarding and POP -> Forwarding.

После этого выбрать пункт "Forward a copy of incoming mail to" и ввести почтовый адрес вида 805XXXXXXX@sms.velton.ua, который содержит семизначный номер вашего телефона.

После этого по приходе новой почте вам будут приходить текстовые сообщения с номера 3333 такого вида:

From: some.address+caf_=8057XXXXXXX=sms.velton.ua@gmail.com
Date: Sat 29 Sep 2007 13^53^52+0300
Subj: Hello world
Text: This is a test e-mail.

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


Так что на повестке дня вопрос по-прежнему открыт.

понедельник, 27 августа 2007 г.

Total Commander и PDA

В связи с недавным приобретением КПК постепенно обустраиваю свое рабочее место.

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


Буквально недавно нашел соответствующий плагин для моего единственно возможного файлового менеджера - Total Commander :)

Плагин WinCE обеспечивает доступ Pocket PC, который  подключен через ActiveSync соединение. Сам плагин выполнен в виде виртуальной файловой системы.

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


P.S. Руководствуясь спортивным интересом обнаружил еще плагин WM Explorer  - аналогичный плагин для Far. Любопытно, какой же из двух этих плагинов более функциональный :)

воскресенье, 26 августа 2007 г.

Тестирование - в массы :)

Пару месяцев назад я проходил один занимательный тест.

В результате получил следующий результат:

Составление вашего психологического портрета окончено. Результаты: Тихий Гений
Довольно редкая и положительная психологическая группа людей. В одежде эти люди не стремятся к гламурному блеску, но умеют найти свой стиль. Волосы, например, красят редко, предпочитая натуральность и уход за кожей. Характер в целом "в штиле", но бывают редкие скачки, выливающиеся в недовольство окружающих. Их мирок кишит неуловимыми замыслами, которые они, однако, не всегда воплощают. Про таких говорят "деньги его любят". В работе Гении делают ставку на свою коммуникабельность, и редко проигрывают. У них отлично получается рисовать и пространственно мыслить, однако задания, требующие усидчивости, им будут не по плечу. Редкие люди, видящие душу Тихого Гения насквозь, ценят и уважают его как друга. Люди этого типа чувствуют свою связь с богом и людьми. Опасными друзьями могут стать попытки забыться от мира: телевизор, компьтер, алкоголь, наркотики.
Пройти тест



А сегодня прошел еще один:

Обратив взор свой в бездну, понял ты, что сила в тебе есть - Надежда
Мы знать, не знаем и не помним, пока не встретимся с бедой, что весь наш мир такой огромный весит на ниточке одной, она ... В палящий зной, Вы тень на горизонте, в кромешной тьме Вы света луч. Вам не приходила в голову мысль, что если во мраке, горит хотя бы один огонёк, то свет не сможет погибнуть никогда! Вы тот, что дарит надежду, на спасение, поддержку близким друзьям, для них вы луч в тёмном царстве. Для света Вы последняя надежда! image
Пройти тест



Вот такие вот дела. Если подойти к результатам с некоторой долей юмора, то можно сделать вывод "тихий гений, подающий надежды" :) ...довольно оптимистично ;)

вторник, 21 августа 2007 г.

Вожделенное приобретение

Совсем недавно купил себе КПК, о котором достаточно давно мечтал.

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

Так или иначе он пошел мне на пользу. Потому что как-то я чуть было не приобрел себе Dell X51.

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

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

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

Как раз в тот момент более в наличии этих КПК не было мне вернули деньги.

И вот, спустя больше года и совершенно в другом магазине я таки себе приобрел совершенно другой по классу девайс - Fujitsu Siemens Pocket Loox C550.

Так что я доволен что тогда я таки не сделал эту покупку, потому как технологии за это время не стояли на месте.

Естественно что этот девайс был несколько дороже.

Как говориться сегодня раки (Fujitsu-Siemens) были большие, но за $520 против вчерашних, маленьких (Dell X51) но за $400 ;)


В общем я крайне доволен функциональностью этого умного устройства, если бы не одно НО!

Софт, который осуществляет поддержку Wi-Fi от производителя мало того что малополезный, дык он еще и вредоносный :(

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

После того, как я посвятил этой программе достаточно большое время и проколдовал со своим КПК наверное две недели подряд (от случая к случаю, в свободное время) в конечном счете мне открылась святая истина...


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

"вобщем после хард ресета n560 пикнет и все что было до этого
установлено будет удалено. теперь ни в коем случае не запускаем e2c,
удалить ее не получится т.к. она вшита в винду, но можно просто не
запускать ее."

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

Такие вот забавные программки поставляются с КПК. Обхохочешься...

воскресенье, 12 августа 2007 г.

Функциональные требования MP3 плееру

Сегодня общался с товарищем по аське и в ходе беседы я вывел для себя следующие требования:

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

четверг, 2 августа 2007 г.

Visual Studio 2008

Сегодня стал счастливым обладателем версии Beta 2.

Эту версию студии еще называют Orcas. В принципе я уважаю маркетинговые изыски кампаний. Если это им помогает, то пожалуйста ;)

Для меня же эта студия 2008 :) Была бы моя воля я бы вообще порядковые номера вел. Без всяких премудростей. Если продукт хороший, ему вообще название не нужно...


В общем, если кому нужно, могу записать диск.

суббота, 14 июля 2007 г.

Managed C++. Проба пера

Сегодня попробовал поработать с управляемым C++.

Ну и в качестве упражнения хотелось попробовать что-то интересное, а не ограничиваться переписыванием примеров из того же MSDN.

Поэтому мой выбор пал на одну небольшую библиотеку - minifmod. Это часть библиотеки FMOD - кроссплатформенной библиотеки для работы с различными аудиоформатами.

Библиотека minifmod поставляется с открытым исходным кодом, а так же имеет в поставке статическую C-библиотеку для использования их в проектах Visual C++.

Но .NET программист не сможет использовать эту библитеку, поэтому я решил это исправить.

Действительно, достаточно типичная ситуация. Мы имеем огромную массу библиотек, написанных на C и C++, для того чтобы использовать вызовы к этим библиотекам можно использовать достаточно удобный интерфейс как Platform Invoke. Однако в моем случае это было невозможно, потому как это не *.dll, а static link library.

Было принято решение создать проект на Managed C++, который является оберткой вокруг minifmod, а так же тестовый проект Windows Forms на C# который бы использовал мою библиотеку-обертку.

Изучив исходный код minifmod я обнаружил, что сама библиотека заточена на работу с музыкальными треками как с файлами:
FMUSIC_MODULE * FMUSIC_LoadSong(signed char *name, SAMPLELOADCALLBACK sampleloadcallback);

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

К счастью, я обнаружил еще механизм функций обратного вызова, которые вселили в меня надежду что не все так плохо как кажется на самом деле:
typedef void (*FMUSIC_CALLBACK)(FMUSIC_MODULE *mod, unsigned char param);

void FSOUND_File_SetCallbacks(
unsigned int (*OpenCallback)(char *name),
void (*CloseCallback)(unsigned int handle),
int (*ReadCallback)(void *buffer, int size, unsigned int handle),
void (*SeekCallback)(unsigned int handle, int pos, signed char mode),
int (*TellCallback)(unsigned int handle));

Итак, я решил реализовать класс, который бы как минимум умел бы воспроизводить XM-треки из файла, и как максимум - работать с объектом типа System.IO.Stream.

Мне очень понравился процесс создания этой оболочки. Мне даже удалось в некоторой степени "обмануть" разработчиков, и передавать не строку с путем файла а указатель на объект типа System.IO.Stream.

Вот листинг .NET класса для воспроизведения XM-файлов:
namespace NModPlayer
{
public ref class ModPlayer : public IDisposable
{
private:
Stream^ _stream;
FMUSIC_MODULE* _mod;
GCHandle _gcHandle;

public:

ModPlayer(Stream^ stream)
{
_stream = stream;
FSOUND_File_SetCallbacks(memopen, memclose, memread, memseek, memtell);
}

void BeginPlay()
{
GCHandle _gcHandle = GCHandle::Alloc(_stream);
void* pStream = (void*)GCHandle::ToIntPtr(_gcHandle);

_mod = FMUSIC_LoadSong((char*)pStream, NULL);
FMUSIC_PlaySong(_mod);
}

void StopPlay()
{
if (_mod)
{
FMUSIC_FreeSong(_mod);
}

if (_gcHandle.IsAllocated)
{
_gcHandle.Free();
}
}

~ModPlayer()
{
StopPlay();
}
};
}

Обратите внимание на конструкцию вида:
GCHandle _gcHandle = GCHandle::Alloc(_stream);
void* pStream = (void*)GCHandle::ToIntPtr(_gcHandle);

_mod = FMUSIC_LoadSong((char*)pStream, NULL);

Сдесь мне пришел в голову один хак. Поскольку ответственность по реализации callback-функций я взял на себя, то я могу совершенно спокойно передавать что угодно.

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

Реализация callback-функций выглядит следующим образом:
Stream^ handleToStream(unsigned int handle)
{
GCHandle gcHandle = GCHandle::FromIntPtr((IntPtr)(void*)handle);
Stream^ stream = (Stream^)gcHandle.Target;
return stream;
}

unsigned int memopen(char* instance)
{
return (unsigned int)((void*)instance);
}

void memclose(unsigned int)
{
// Do nothing because GC will free all allocated memory
}

int memread(void *buffer, int size, unsigned int handle)
{
Stream^ stream = handleToStream(handle);

if (stream->Position + size >= stream->Length)
{
size = (int)(stream->Length - stream->Position);
}

array^ managedBuffer = gcnew array(
(unsigned int)size);

stream->Read(managedBuffer, 0, size);

Marshal::Copy(managedBuffer, 0, (IntPtr)buffer, managedBuffer->Length);

return size;
}

void memseek(unsigned int handle, int pos, signed char mode)
{
Stream^ stream = handleToStream(handle);

if (mode == SEEK_SET)
{
stream->Position = pos;
}
else if (mode == SEEK_CUR)
{
stream->Position += pos;
}
else if (mode == SEEK_END)
{
stream->Position = stream->Length + pos;
}

if (stream->Position > stream->Length)
{
stream->Position = stream->Length;
}
}

int memtell(unsigned int handle)
{
Stream^ stream = handleToStream(handle);

return (int)stream->Position;
}

В фунции memopen вроде бы передают указатель на строку, но мы то знаем, что мы туда отдали ;)

В принципе реализация остальных функций не требует особых пояснений.

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

Вот например я этот класс использовал в Windows Form приложении:
namespace NMiniFMOD.Sample
{
public partial class FormMain : Form
{
ModPlayer _modPlayer;

public FormMain()
{
InitializeComponent();
}

private void FormMain_Shown(object sender, EventArgs e)
{
using (Stream stream = new MemoryStream(Resources.MusicTrack))
{
_modPlayer = new ModPlayer(stream);
_modPlayer.BeginPlay();
}
}

private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
{
_modPlayer.Dispose();
}
}
}

Если интересно, могу выложить полный исходный код.

среда, 4 июля 2007 г.

Браузерная головная боль

Сегодня обнаружил, что IE6 и, что более удручающее, IE7 содержат аналогичные проблемы с закачкой файлов по HTTP.

Дело в том, что при попытке выкачать файл очень большого размера, скажем более 4,5 Гб, Internet Explorer испытывает арифметические переполнение из-за того, что пришедший Content-Length превышает максимальный размер 4-х байтового беззнакового целого числа (unsigned int).

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

Аналогичные опыты были проведены с Opera 8.5 - результат аналогичен IE6. К счастью Opera 9.21 никаких проблем в связи с этим не испытывает.

Ну и самое главное это то, что Mozilla Firefox 1.5 и 2.0 работают так, как должен работать самый лучший браузер в мире :)

И при этом не следует забывать, что Mozilla Firefox 1.5 является достаточно старой версией браузера.

пятница, 29 июня 2007 г.

Дискуссия Java VS .NET

Не могу сказать что я обожаю holy wars, но сам лично стараюсь в них не ввязываться.
Сегодня у меня состоялась дискуссия по ICQ с одним моим знакомым, и я, с его позволения, решил опубликовать наш диалог.

Будем надеяться, что кому-то это покажется познавательным.

Дмитрий: Ты можешь в двух словах обрисовать отличие Явы от Шарпа?
status_alexus: Могу
status_alexus: Java - это консервативная выжимка из C++. Выкинули все редко используемое, которое только добавляло головную боль программистам. Язык реально кроссплатформенный это большой плюс. Язык открыли по лицензии GPL, поэтому это только пойдет ему на пользу, его буду портировать и дальше. Основная GUI библиотека - Swing - выглядит как не родная под целевой OC.
status_alexus: Есть еще либа SWT - приложения выглядят как родные на Windows, Mac OS, Linux
status_alexus: Есть Java Community Process - это группа по развтию технологий языка. Одновременно хорошо и плохо. Хорошо, потому что язык будет более стабильным, не будут прикручивать сомнительные фичи, которые "перегрузят" язык. Плохо, потому что добавляет инертность к введению новых языковых конструкций.
Дмитрий: эм, ну а указателей ведь там нет, и есть GC, как в Шарпе? а нотация венгерская, как в Си?
status_alexus: C# основной язык платформы .NET
Таким образом, зная Framework Class Library можно писать на любом языке. Сейчас реально можно писать на C#, Visual Basic .NET, Iron Python и это огромный плюс.
status_alexus: Говорят что .NET вроде как тоже кроссплатформенный, но реально пока нет.
Дмитрий: А это, Mono?
status_alexus: Есть разработка в виде Mono, но нужно прилагать усилия, чтобы приложение везде работало.
Дмитрий: а, даже так...
status_alexus: Уже в версии 2.0 C# начал "обрастать" сомнительными, на мой взгляд, возможностями.
status_alexus: Мне очень не нравится Nullable типы. Я считаю что это лишнее. Это моя точка зрения.
Дмитрий: Так это для баз данных, имхо
status_alexus: Указателей в C# нет. GC есть. Соответственно, код стабилен и управляем.
status_alexus: да для баз.
Дмитрий: Тем не менее, Ява умирает. Почему?
status_alexus: Ха. Пошутил :)
Дмитрий: Чем Шарп её обскакал?
status_alexus: Java никогда не умрет ;)
Дмитрий: Ну эта... на твоей фирме 2 года назад на Яве было 20% проектов, сейчас - меньше 5% ;)
status_alexus: .NET ее обскакал кроссязыковостью, пиаром, а также тем, что в Microsoft к разработчикам относятся лучше, чем наверное к пользвователям ;)
Дмитрий: Хе... Как по мне, так для программирования в среде .NET во сто крат лучше использовать шарп, а не что-либо иное
status_alexus: Э тут ты не прав. Не всегда C# тебе подойдет.
Дмитрий: А когда не подойдёт? Когда в большом тиме и не с нуля пишешь?
status_alexus: Мне как-то пришлось использовать язык IronPython - это реализация языка Python под платформу .NET. Есть Windows Service который в зависимости от пришедших данных поднимает ту или иную Assembly, в которой есть реализация некоторого интерфейса. Так вот фабричный метод реализован на языке IronPython. Таким образом, мы можем позволить Deployment новой компоненты без останова сервиса, наживую.
status_alexus: Достаточно выложить новую Assembly и новый скрипт с фабричным методом.
Дмитрий:Мммм, не понял... Это только IronPython позволяет? Помимо возможностей CLR?
status_alexus: IronPython это язык интерпретируемый. А C# копилируется в MSIL
Дмитрий: Оригинально... Я-то думал, что все языки на платформе .NET компилируются в MSIL

Большое спасибо Дмитрию за поставленные вопросы.

воскресенье, 24 июня 2007 г.

Eclipse CDT

На выходных, я как обычно занимаюсь всякими бесполезностями :)

Вот решил тряхнуть стариной и поковырять немного Eclipse как среду разработки для языка C++.

Нашел достаточно внятную заметку, как эту штуку можно настроить вместе с компилятором MinGW. К сожалению, я решил съэкономить на трафике и воспользовался достаточно устаревшей MinGW версии 3.0.8.

В качестве полигона для тестирования я взял свой старый проект Gruz2. Это небольшая игрулька, написаная на C++ и имеет зависимость на библиотеку SDL. Еще несколько лет назад я добился, чтобы она собиралась на Visual C++ 7, Borland C++ Builder 5 и MinGW 3.0.8 (из-под среды Dev-C++) и GCC 3.x под Mandriva Linux 10.1.

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

К сожалению мне так и не удалось осилить настройку линковщика, и рабочей версии приложения так и не получилось :(

Я уже было совсем расстроился от того, что мне ничего большего чем Hello World не удалось выжать, однако я вспомнил еще об одном моем древнем поделии под названием SmallBasic.

Это реализация интерпретатора подмножества языка Basic. Главная его "фишка" заключалась в том, что он имел зависимости только на C++ Standard Template Library и при этом тянул на аж 4 класса из 1363 строк :)

Простите за такие жуткие цифры, этот проект был наколбашен достаточно давно.

Вот как раз этот проект успешно собрался и даже удалось его немного подебажить.

В целом впечатления довольно положительные. Жалко только что MinGW - самый "медленный" C++ компилятор в мире :) Ну уж очень долго он собирает проект.

Вот такие фичи у CDT попали под угол моего зрения:
  • подсветка синтаксиса
  • code complete
  • outline полей и функций активного *.cpp или *.h файла
  • вкладки c открытыми файлами
  • список задач (TODO, предупреждения, ошибки)
  • console output во вкладке
  • подсветка ошибок и предупреждений (насколько я понял поддерживается парсинг GCC/MinGW и Visual C++)
  • поддержка нескольких targets (типа можно настроить на сборку под GCC, MinGW, Visual C++ 7, Borland C++ да еще и под разными ОСями что бы скучно не было)
  • дебагер с показом переменных области видимости и Expression (это типа Watch в Visual Studio)
  • генератор makefile для MinGW и GCC
  • парсер makefile (outline подсветка синтаксиса и т.п.)
И обязательно, документальное подтверждение моих мук:

Аудиопроигрыватель для Linux

Сегодня у меня был очень приятный опыт использования сразу двух программ в Linux. :)

Первая это Exaile - аудиплеер. Достаточно продуманный интерфейс. Функционально программа, в некоторой степени, напоминает iTunes, однако не обременена такими вещами как интерфейс для покупки песен через интернет.
Очень удобный, на мой взгляд, фичер - боковая панель с деревом, контекст которого можно менять. Т.е. вы можете в дереве группировать аудиозаписи по исполнителю, альбому или жанру.
Кроме того, все плейлисты отображаются как табуляторы, таким образом у меня под рукой интерфейс ко всей моей аудиотеке.

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

В общем я, как пользователь достаточно нетривиального Windows-плеера Foobar2000, был очень доволен этим линуховым зверем.

Второй проблемой этого плеера стало отсутствие нормальной поддержки кирилицы в ID3 тегах версии 1. Как многие знают, большинство MP3 файлов имеют теги, которые сохранены в кодировке Windows-1251. А вот в Linux большинство софта по понятным причинам не любит эту кодировку.

Поэтому вторая программа - EasyTAG была ключиком к решению этой проблемы.

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

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

Для решения проблемы с кодировками я настроил эту программу чтобы она читала все ID3 теги в кодировке Windows-1251, и принудительно записывала их в Unicode (UTF-8). Кроме того, я был вынужден запретить сохранение ID3 тегов версии 1, т.к. он не поддерживает многобайтовых кодировок.

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

Еще одной очень полезной особенностью программы EasyTAG является то, что уровень ее подсказок об той или иной настройке представляет из себя компактную энциклопедию по обработке ID3 тегов :)

В общем ОС Linux постепенно "обрастает" действительно классным софтом. Так что даже .NET программист не гнушается этой интересной операционкой ;)

Скриншоты прилагаются:

воскресенье, 17 июня 2007 г.

Кому нужен WinRAR?

Сегодня в очередной раз порадовался своему основному архиватору.



Последний год, или может быть два, я использую архиватор 7-Zip.



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



Сегодня нужно было упаковать игру Quake 2 (ну нужна она мне и все тут :) ), так я был просто поражен результатом.



Оригинальный размер дистрибутива был 210 Мб, который после упаковки превратился в ничтожные 79 Мб. Фантастика, не правда ли ;)



Особенно если учесть что ребята из ID Software молодцы. Они все игровые данные упаковывают в один файл pak.



Правда ложкой дегтя можно назвать требования по ОЗУ для работы с архивами в режиме ультра сжатия: для упаковки требуется 709 Мб, а для распаковки - 66 Мб.



Но согласитесь, на то он и архив. Чтобы хорошенько упаковать и записать на диск.





Powered by ScribeFire.

суббота, 9 июня 2007 г.

Тестовый пост

Прошу прощения за "левый" пост, просто проверяю работу плагина для Firefox





Powered by ScribeFire.

четверг, 24 мая 2007 г.

Очень занятные шутки про блондинок

Недавно нашел очень прикольные шутки про блондинок.

По правде говоря, даже не ожидал, что можно так действительно интересно шутить.

суббота, 19 мая 2007 г.

Инструкция по использованию Google Reader

Вопрос: Как быть в курсе всех интересующих событий?
Ответ: Быть подписанным и читать новостные ленты


Вопрос: Что такое новостные ленты?
Ответ: Есть например три сайта - sport.ru, job.ru и hobby.ru и вам интересно чего там новенького появляется. В этом случае существует два варианта.

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

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


Вопрос: С помощью чего читать эти новостные ленты?
Ответ: Использовать Google Reader


Google Reader можно пользоваться следующим образом:
- зайти на сайт, новости которого, вас интересуют
- в адресной строке браузера должен появиться значек, который сигнализирует о том, что сайт поддерживает публикацию новостных лент в форматах RSS или Atom (Atom это более новый формат, желательно подписываться именно на него)
- скопировать ссылку на новостную ленту в буфер обмена
- зайти на http://www.google.com/reader
- залогиниться
- сделать клик на ссылке "Add subscription" и в появившемся окошке ввести url который был скопирован в буфер обмена
- щелкнуть на "Add"

UPD: сразу после того, как я опубликовал это сообщение, мне стало интересно, а был ли вообще смысл в подобной инструкции :)

Мой Firefox

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

Generated:
Sun May 20 2007 19:42:29 GMT+0300
User Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
Build ID: 2006120418

Enabled Extensions: [20]
Installed Themes: [4]
Installed Plugins: (8)
  • Adobe Acrobat
  • Java(TM) Platform SE 6
  • LogMeIn Inc. Remote Access Components 1.0.0.242
  • Microsoft® DRM
  • Mozilla Default Plug-in
  • PCMan's IE Tab Plug-in for Mozilla/Firefox
  • QuickTime Plug-in 6.5.1
  • Windows Media Player Plug-in Dynamic Link Library

В поисках святого грааля

Сегодня вдруг захотелось отыскать plugin для Miranda, который добавляет проверку правописания в сообщениях. Спустя получасового сеанса нашел то что мне было нужно и то, что мне не было нужно :)

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

Проверка орфографии проводится не с помощью Aspell, как я предполагал, а с помощью движка, который использует OpenOffice.org

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


Так что попробую использовать этот plugin некоторое время. Думаю что он у меня приживется :)


Кроме того, обнаружил еще два любопытных плагина:
  • Miranda-GDS-V2 - обеспечит интеграцию Google Desktop Search с историей сообщений, которая хранится в базе Miranda. Не знаю насколько он будет мне полезен, так как я не использую дома Google Desktop Search. Для поиска сообщения по истории я использую Find A Message, хотя может быть мне стоит перестать жадничать и поставить у себя дома Google Desktop Search :)
  • WATrack - Отображает название проигрываемой песни в окне сообщений. Поддерживает Winamp, Apollo, 1by1, Media Player Classic, Window Media Player, JetAudio и FooBar. ...уверенная победа в номинации "самый бесполезный plugin" ;)

воскресенье, 13 мая 2007 г.

Параметры командной строки в .NET Windows Forms

Оказывается, что это можно получить предельно просто :)

string[] args = Environment.GetCommandLineArgs();

понедельник, 7 мая 2007 г.

Анализ функциональности Firebird, MySQL, PostgreeSQL

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

I. PostgreSQL 8.1.5

Работает на Windows NT и на Win9x через Cygwin, Linux, FreeBSD, Mac OS X, Novell Netware 6, OS/2

BSD лицензия, существует так же коммерческая лицензия (которая предполагает техническую поддержку)

Поддерживает транзакции, подзапросы, триггеры, представления, внешние ключи, пользовательские типы и их наследование

Исталлятор на русском языке.

Поддержка языка запросов PL/pgSQL, который очень похож на PL/SQL Oracle.

Поддержка хранимых процедур, написанных на PL/Java, PL-J, plPHP, plR, pl-ruby. Соответственно, хранимые процеруры можно писать на диалектах Java, PHP, Ruby (и каком-то языке для статистики - R).

В пакете идет консольная и графическая консоль управления

В пакете идет JDBC, Npgsql, ODBC, OLEDB драверы, таким образом обеспечивается функциональность для языков Java (JDBC), .NET (Npgsql), ADO (OleDB) и прочих через драйвер OBDC.

FAQ

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


II. Firebird

Firebird - это СУБД InterBase, код которой открыла компания Borland

Работает под Windows, Linux, Mac-OS (Darwin) и некоторых Unix платформах.

Идет под лицензией MPL, с небольшими ограничениями.

Инсталлятор на английском языке.

Поддерживает транзакции, триггеры, хранимые процедуры.

Функциональность СУБД аналогична InterBase.

Официальный сайт мне вообще не понравился, информация слабо структурирована.


III. MySQL

Работает на Windows, Linux, Unix, MacOS

Является наиболее известной открытой СУБД. Существует масса материалов на русском языке в виде печатных изданий и интернет ресурсов.

В пакете идет только консольная утилита для администрирования.

Инсталлятор на английском языке.

Начиная с версии 5.0 начала поддерживать хранимые процедуры.

Существуют провайдеры данных для Java, ADO.NET, ODBC, PHP, Perl и многих других языков.

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

IV. Сравнение существующих СУБД

Программа для тестирования производительности различных СУБД.

Поддерживаются:
  • Postgresql
  • Mysql
  • DB2
  • Oracle
  • Sapdb
  • Firebird
  • Microsoft SQL Server
  • Sybase

Результаты тестирования нескольких открытых СУБД


V. Личное мнение

От себя еще добавлю, то, что я пробовал использовать Oracle, MS SQL Server и MySQL из-под .NET

Лично мне диалект MySQL мне не очень понравился.

Все три вышеперечисленных СУБД совершенно спокойно работают с Unicode, так что проблем с интернационализацией быть просто не может.

Firebird предоставляет выбор запуска СУБД как приложение и как Windows служба. PostgreSQL работает только как сервис.


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

UPD:
Поступило логичное замечание о том, что функциональность Firebird недостаточно освещена. Я это сделал по причине того, что Firebird вырос из Interbase. Соответственно то, что эта СУБД является форком когда-то коммерческого движка говорит только в ее пользу.

Для доступа к базе конечно же существует ODBC драйвер, .NET Data провайдер и CA-JDBC (Jaybird) драйвер. Кстати, замечу, что OleDb драйвер не упоминался :)

Сегодня обнаружил следующие, достаточно веские аргументы в пользу Firebird против MS SQL Server, PostgreSql.

Из всех аргументов, честно говоря для меня наиболее существенным было наличие хорошего ADO.NET провайдера, который судя по заявлению разработчиков, поддерживает такие сервисные API как резвервное копирование и восстановление, статистика, пакетное выполение SQL скриптов.

Однако, использование подобных вещей из-под .NET приложение мне кажется сомнительной пользой. На мой взгляд, подобные вещи должны выполняться несколько иными механизмами, находящимися за пределами .NET клиента СУБД.

log4net в три шага

Сегодня решил воспользоваться библиотекой log4net для логирования сообщений в проекте, который я пишу в качестве работы на бакалавриат (слово "бакалавриат" мне подсказал spellchecker встроенный в Firefox, надеюсь что он меня не подвел :) ).

После непродолжительного гугления я сделал следующее:

1. Добавил ссылку на сборку log4net.dll в свой проект.
2. В App.config файл добавил следующее:
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
</configSections>

<log4net>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="log/trace.log"/>
<param name="AppendToFile" value="true"/>
<param name="RollingStyle" value="Date"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{yyyy-MM-dd hh:mm:ss} [%t] %m%n" />
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="LogFileAppender"/>
</root>
</log4net>

3. В AssemblyInfo.cs добавил следующую строку:
[assembly: log4net.Config.DOMConfigurator(Watch = true)]

4. И после этого смог воспользоваться логированием из своего кода следующим образом:

static class ApplicationEntryPoint
{
public static ILog log = LogManager.GetLogger(string.Empty);

[STAThread]
static void Main()
{
log.Info("Application: start");
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

FormMain formMain = new FormMain();
Application.Run(formMain);
log.Info("Application: end");
}
}


Таким образом, лог будет выглядеть следующим образом:

INFO 2007-05-07 10:02:14 [1064] Application: start
INFO 2007-05-07 10:02:17 [1064] Соединение с базой Paradox было успешно установлено.

четверг, 3 мая 2007 г.

Notepad++ 4.1 Released

Сегодня прочел новость о выходе новой версии моего любимого легковесного текстового редактора Notepad++.

Был очень приятно удивлен добавлением плагина SpellChecker, который работает на базе aspell. Нужно будет на досуге обязательно попробовать эту функциональность. Меня давно интересовал этот движек для проверки орфографии, однако я до сих пор не видел продукта под-Windows-для-людей, который бы его использовал (Vim и Emacs я считаю достаточно сложными в освоении).

Вдруг вспомнилось о плагине для Miranda, который тоже, используя aspell, проверяет орфографию при наборе сообщения, который я так и не испытал до сих пор :)

пятница, 27 апреля 2007 г.

Все гораздо сложнее, чем кажется

Сегодня несколько часов потратил на решение проблемы, которую и решать-то не нужно было:
http://www.id-as.com/arts/ala/slidingdoors2/

«Западание» в IE:
Если вы наблюдаете «западание» (исчезновение) фоновых изображений при наведении курсора на закладки в IE/Win, проверьте установки кэша для временных файлов (Сервис > Свойства обозревателя > Общие > Настройка). Вы, возможно, поменяли установку по умолчанию, чтобы быть уверенным, что видите последнюю версию страницы при каждом ее обновлении. IE/Win имеет проблемы с отображением фоновых изображений для ссылок, если вы указали «При каждом посещении страницы». Установка по умолчанию «Автоматически». Она позволяет браузеру мгновенно получать изображение из кэша, предотвращая любые мигания. Большинство пользователей не меняют эту установку, скорее всего, они даже не знают о ее существовании.

пятница, 20 апреля 2007 г.

Google Talk - впустим прогресс в нашу жизнь

Основные плюсы:

- основан на октрытом протоколе Jabber
- для передачи текстовых сообщений существует просто уйма клиентов на просто уйме платформ
- позволяет сохранять историю сообщений на сервере
- официальный клиент никогда не будет перегружен рекламой, т.к. протокол открыт и ты можешь спокойно использовать прочие клиенты
- никогда не будет проблем с альтернативными клиентами по причине открытой спецификации протокола
- политика google заключается в многоплотформенности, мобильности и интеграции
- поддерживает видео и аудио конференции
- поддерживает линковку с другими jabber-серверами
- дает самую достойную связь на dial-up линиях. Когда Skype рвет, Google Talk меняет компрессию так, что ты голос собеседника узнать вообщен не можешь (металлический голос), но слышишь его очень отчетливо
- имеет два варианта Online клиента, что дает возможность чата из интернет-кафе

Я, например, использую Google Talk протокол + Miranda клиент.
В случае, если мне вдруг понадобиться голосовой чат - запускаю официальный клиент не закрывая Miranda.

Как обуздать Windows Service

По своей работе частенько приходиться ковыряться с самописными Windows Service на удаленных машинах.

Можно достаточно быстро и удобно это делать из командной строки:
Посмотреть статус сервиса - sc query <имя сервися>
Запустить сервис - net start <имя сервиса>
Остановить сервис - net stop <имя сервиса>

Есть так же возможность делать запуск/останов сервиса командами sc start <имя сервиса> и sc stop <имя сервиса>, но при этом команда отправляет сигнал сервису и сразу же возвращает управление консоли.

Мне лично такой вариант меньше подходит, потому как меня интересует синхронная команда. В случае с net start и net stop я вижу сколько приблизительно времени занимает операция запуска и останова сервиса и сразу же смогу обратить внимание на случаи, когда подобные операции с сервисом заканчиваются неудачей.

Можно так же удобно управлять удаленными Windows службами при наличии необходимых прав:
sc <имя компьютера> <команда> <имя сервиса>

Например мы хотим узнать статус службы dhcp (это служба "DHCP клиент") на компьютере с сетевым именем notebook :)
sc \\notebook query dhcp

пятница, 13 апреля 2007 г.

Особенности учебного процесса заочного отделения

В настоящее время я переживаю сессию :)

Недавно была лабораторная работа по операционной системе Unix, которая продолжалась 4 пары.

Хорошенько выспавшись, и опоздав на целый час, пришел на нее со своим ноутбуком, потому как на своем Ubuntu Linux 6.10 в графическом окружении Gnome мне будет легче писать лабы.

Дело было в субботу утром, и, оказалось что сервер Solaris в этот момент был нам недоступен по техническим причинам, а системных администраторов нет, потому как выходной.

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

Наблюдаю картину, как несколько человек сидит и читает методички и при
этом на практике сделать не может ничего.

После некоторой дискуссии с лаборантом и одного телефонного звонка домой системному администратору, мне выдают один свободный IP-адрес, после чего я подключаюсь к коммутатору, добавляю новых пользователей, устанавливаю пакеты для работы Telnet и SSH, После чего вся группа ходит на мой мобильный Linux-сервер... :))

Да, если кто не в курсе, я - .NET программист :)))

Первая заметка

Долгое время думал о создании блога, вот наконец-то решился :)

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

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

О чем вообще в этом блоге может пойти речь?

Я работаю инженером по разработке программного обеспечения (Software Engineer) в Харькове.

Как показывает практика, делаю практически все, что связано со словом .NET :) Уверенно себя чувствую в области ASP.NET, ADO.NET, Windows Service. Наверное наибольшие пробелы у меня в сфере .NET Remoting и, особенно, Windows Forms. Но, надеюсь, что со вторым, в случае "столкновения", особых проблем не будет.

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

Мне очень симпатична операционная система Linux за ее открытость, гибкость и переносимость.

Когда-то в далеком прошлом долгое время увлекался программированием на С++ и Assembler.