.NET 3.5 SP1 Bootstrapper package във Visual Studio 2008 SP1

В долния документ има секция 2.3.1.1, в който е описано как да добавим .NET 3.5 SP1 като bootstrapper в ClickOnce и Setup проекти:

http://download.microsoft.com/download/A/2/8/A2807F78-C861-4B66-9B31-9205C3F22252/VS2008SP1Readme.htm

Silverlight.js под Firefox 3

При приложение, което използва Silverlight 1.0 (Silverlight.js) под Firefox 3 се стига до неприятния момент винаги да показва, че Silverlight не е инсталиран и трябва да се изтегли наново.
Разбира се, повторното изтегляне и инсталиране не води до абсолютно никакъв резултат (освен загубено време).
Проблемът се оказа, че “стария” Silverlight 1.0 няма понятие за Firefox 3 като browser, поради което винаги се изкарва съобщение, че е нужна повторна инсталация.

Решението и причините са описани тук, като общо взето всичко се свежда до подмяна на Silverlight.js файла с по-нова версия (такава от 2.0), която може да се изтегли от http://code.msdn.microsoft.com/silverlightjs

Като цяло, не виждам причина да се използва Silverlight 1.0 за ново RIA приложение, при положение че Silverlight 2 е с много повече възможности и превъзхожда 1.0 в почти всяко едно направление. Но при наличие на неработещо 1.0 приложение, което трябва да се подкара, горното е повече от добре дошло.

Disable UAC под Vista през командна линия

UAC е добра функция на Windows Vista, но в някои случаи изключването е най-добрия вариант за решаване на проблеми със съвместимостта със стари приложения. И не само…
По принцип – изключването не представлява проблем – минава се през Control Panel и всичко е наред. Дотук добре, но това е процес, който иска крайния потребител да извърши някаква операция – нещо, което не винаги е тривиална задача.
Добре, че има msconfig – там в таб Tools има Disable UACentry, което изпълнява следната команда:

C:WindowsSystem32cmd.exe /k %windir%System32reg.exe ADD HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem /v EnableLUA /t REG_DWORD /d 0 /f

съответно за да се пусне UAC е необходимо да се изпълни:

C:WindowsSystem32cmd.exe /k %windir%System32reg.exe ADD HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem /v EnableLUA /t REG_DWORD /d 1 /f

Това вече удобно може да се изпълнява без да е необходимо крайния потребител да прави това или онова 🙂

SEO съвети от Google

Google поставиха на официалния си блог набор от съвети как да се постигне по-добри резултати в търсенето в търсачката на … Google :).
На този адрес може да се види самия пост Google’s SEO Starter Guide от официалния блог,
а от тук може да се свали PDF файл със самите съвети(Google’s SEO Starter guide in PDF).
Позачетох се в документа и мисля, че е доста полезно четиво – в общи линии не е толкова SEO guide, колкото съвети “как да напишем функционален и полезен сайт”.

 

Проблем с отваряне на CHM файлове под Vista

Няколко пъти ми се случва досега да не мога да видя съдържанието на CHM файлове. Ако се отварят от network share – причината е ясна.
Възможно е да дава странни грешки от сорта на “Navigation to the webpage was canceled”, “File not Found” и т.н. Оказа се, че не съм първият с такъв проблем (както обикновено) и решение е описано в http://blog.crowe.co.nz/archive/2007/04/13/719.aspx.
В общи линии – в Properties има бутон Unblock, след което всичко се оправя и CHM файла си е вече съвсем наред.Забележка: Ако файлът се намира на системния диск – Unblock бутона изглежда като да не работи, въпреки че не изкарва грешка. (Най-вероятно е заради правата, но можеше да изкара грешка)

Корекция на правописни грешки на български език с Office 2007

Много е приятно, когато нещата просто работят. Още по-приятно е, когато никак не се очаква да работят, пък те си работят съвсем добре 🙂

Едно от тези неща е ItaEst -една разработка на Българската Асоциация за Компютърна Лингвистика.
“ItaEst – Така е!” е система за корекция на правописни грешки и сричкопренасяне за български език за Microsoft Office 2000, XP и 2003.”
 
Лесна и бърза инсталация – работи безпроблемно и за Office 2007 (въпреки че е софтуер от 2004-та година). Лицензът е максимално опростен – може да се инсталира без никакви ограничения.
Какво по-добре от това. Опредено си заслужава да се използва!
Адресът, от който може да се изтегли е: http://www.bacl.org/itaestbg.html , размерът е под 6 MB.

Проблем с ID-тата при SQL Server Compact Edition

SQL Server Compact Edition е много добра вградена база, която може лесно да се deploy-ва на клиентски машини.
Разбира се, има ограничения – някои ти бъркат в здравето, други не чак толкова. Един проблем се оказа доста изнервящ, докато не намеря в Google подходящо решение. Накратко – ако в приложението се добавят нови записи в таблица, то те са с id-та -1, -2, -3 и т.н.
Дотук съвсем нормално и в реда на нещата.
След запис на данните – новите редове се появяват физически в базата с правилните (поредни) id-та. За съжаление – в приложението те някак си остават със старите идентификатори (-1, -2 и т.н). Ефектът е доста неприятен – ако се редактира някой от току що създадените редове и се даде запис се получава Exception, тъй като не може да намери такова id в базата за update.
Още по-изнервящо е, че същия код работи съвсем добре с SQL Express или пълния SQL.
След известно чудене и лутане в Интернет намерих решение, по-точно – едно решение.В form_Load се добавя:

eventsTableAdapter.Adapter.RowUpdated += new System.Data.SqlServerCe.SqlCeRowUpdatedEventHandler(Adapter_RowUpdated);

(тук таблицата е events, като трябва да се добави по един ред за всяка таблица, в която може да се добавят нови редове)

като самия код на метода е:

void Adapter_RowUpdated(object sender, System.Data.SqlServerCe.SqlCeRowUpdatedEventArgs e)
{
if (e.StatementType == StatementType.Insert)
{
SqlCeCommand cmd = null; cmd = new SqlCeCommand(“SELECT @@IDENTITY”, e.Command.Connection, e.Command.Transaction);

int newid = Convert.ToInt32(cmd.ExecuteScalar());

DataColumn colMasterID = e.Row.Table.Columns[“ID”];
colMasterID.ReadOnly = false;
e.Row[colMasterID] = newid;
}
}

Малко “грубо” решение, тъй като прави нова заявка към базата при вседки update, но работи. Все пак си мисля, че трябва да има и по-добро решение …
(най-вероятно refresh и прочитане отново на данните също ще работи, но не ми се струва достатъчно елегантно)

Колко ток гълта компютъра?

От време на време се чудя колко ток точно гълта постоянно включения сървър вкъщи или пък десктоп PC-то. Днес реших да разбера отговора на този въпрос и се сдобих с една машинка на Voltcraft, с която да измеря консумацията на компютрите вкъщи.
Това е лесен за използване уред, който се слага в стандартен контакт и измерва ватовете на уредите свързани към него. Не се нуждае от батерия – захранва се от мрежата. Има си и малка EEPROM памет, така че настройките за тарифите се запазват и след изключване.
Не съм голям експерт що се отнася до ток (а и по принцип :)), така че първо включих една преносима лампа с крушка, на която гордо пише 60W и наистина на екрана светна число около 60W (59.5-59.9 W по-точно).
След това пристъпих към същинския въпрос – колко точно харчи сървърното PC вкъщи.
Duron/1000 Mhz с 896 MB SDRAM ,2 IDE хард диска, 2 мрежови карти и AGP видео карта със захранване Fortron.
Без флопи или оптично устройство, клавиатура, мишка или монитор.

Този компютър поддържа постоянна консумация от приблизително 90W.
С малко изчисления – при цена на дневния ток около 17.7 ст/KWh и на нощния – около 11.5 ст/KWh се получават следните сметки:
0.090KW x 16 h x 17.7 = 25.48 стот по дневен ток за ден
0.090KW x 8 h x 11.5 = 8.28 стот по нощен ток за ден
или общо 33.76 стот /ден или малко над 10 лв за месец.

Излиза, че един постоянно включен компютър (без флопи, оптично устройство, клавиатура или други входно изходни устройства) изразходва по 10 лв на месец. Нещо, което кара човек да се замисли дали може да се оптимизира разхода на енергия и как би могло да се възвърне инвестицията.
Аз като начало мисля да разкача видео картата и да спра USB портовете 🙂 Интересно какъв ефект ще има това върху цялостната консумация.

Update:
16 port switch консумира средно около 6.6W
Използването на standby функции на хард дисковете може да намали консумацията с допълнителни 5-6W на хард диск. Това се постига например с командата:
hdparm -S 12 /dev/hda
(12*5 sec= 60 sec standby за /dev/hda)

Update2:
17″ CRT LG Flatron 795FT в режим 1024x768x85Hz консумира 75W
PC с процесор AMD Sempron 64 3200+ (1.8 GHz), 1.5 GB RAM и 250 GB HDD консумира около 70W в idle режим и 7 W, ако е вързан към ел. мрежа, без да е пуснат

Update3: Поставянето на хард дискове в standby има един допълнителен аспект, за който не се бях замислял досега, но определено има значение. Топлината,която се отделя е значително по-малка в standby, отколкото в нормална работа.
Може да не изглежда важно, но при 3 хард диска в един компютър, използван като сървър отделените ватове като топлина бързо се превръща в сериозен проблем.