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

От време на време се чудя колко ток точно гълта постоянно включения сървър вкъщи или пък десктоп 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 хард диска в един компютър, използван като сървър отделените ватове като топлина бързо се превръща в сериозен проблем.

Образование и CV

Писането на CV винаги е било, поне за мене, една съвсем не лека задача. Често пренебрегвам една информация за сметка на друга, не знам точно как да го структурирам – с две думи – бъркотия (това е една дума, но ситуацията е ясна).
Оказах се с малко повече време и реших да се поразровя и да попрочета малко повече какво трябва да има и да няма в едно CV.
Информация има колкото искаш и едно търсене в google изкарва предостатъчно резултати по темата, но реших да се съсредоточа основно върху тъй наречения “Европейски формат на автобиография”.
На този портал: Център за развитие на човешките ресурси има много информация с препоръки как да напишем едно CV, как да изглежда, какво да има и няма. Също така са описани различни приложения към дипломи, сертификати, брошури за програмите Еразъм, Леонардо Да Винчи и др.
Още повече, сайтът действа като справочник за университети, европейски програми и прочие. Мисля, че е едно определно полезно място в web.
Europass формат на CVUpdate: Моето CV все още не е готово, но вече не се чудя какво да пиша вътре и как да го структурирам 🙂

Google Image Labeler

Поредната иновация от Google, която заслужава адмирации. Търсенето на изображения досега беше по-скоро търсене на текст покрай самите изображения, както и в имената на файловете, отколкото в самата картинка.
Това, между впрочем, съвсем не е изненадващо – много сме далече от автоматично разпознаване на образи…

Тук идва идеята на Google – на сайта http://images.google.com/imagelabeler/ в рамките на две минути всеки може да се “състезава” срещу друг потребител, като всеки се опитва да характеризира картинка с няколко етикета, като при първият етикет, който съвпада се присъждат точки в зависимост от сложността на думата.
Например – ако на картинката има летяща птица – възможни етикети са bird, sky и така нататък.
Хубавото е, че благодарение на двойната проверка – остават само тези етикети, за които и двамата потребители са се сетили – това значително намалява шанса от грешни класификации.
Още повече – при категоризиране на някоя картинка с етикет, в последствие този етикет вече не може да се използва и той е off-limit. Така в един момент, картинките се характеризират с няколко различни етикета и съответно търсенето е много, много по-ефективно.

Опитът показва, че за 2 мин могат да се категоризират средно около 10-15 картинки. Няма информация, колко картинки са категоризирани досега, но броят им определено нараства. Според класацията първия потребител е категоризирал около 150-200 000 картинки 🙂

Похвално е, че Google използват огромния си потребителски потенциал, за да го впрегнат в нещо толкова полезно.
Въвеждането на етикети за момента е само на английски, така че и подобреното търсене ще е само на английски (засега).

От мене – едно браво за Google 🙂

Update: Изглежда тази услуга е от доста време – пусната е още 2006 в бета версия. Малко закъсняла реакция от моя страна…

Новости в .NET 3.5 и Visual Studio 2008 (или по-скоро общ преглед)

Преди време ми се наложи да напиша две кратки статии за новостите в .NET 3.5 и Visual Studio 2008. Статиите така и не видяха бял свят и са далече от завършена фаза, но така или иначе вече са онлайн и са достъпни за сваляне във формат PDF на следните адреси:
Новости в .NET 3.5 и Visual Studio 2008.

По никакъв начин не претендират за изчерпателност или задълбочен анализ на материята.
Все пак през последните 4 месеца, откакто са написани известна част от схващанията ми са попроменени. Например:
– LINQ може би не е толкова “cool”, колкото ми изглеждаше в началото – да, идеално е за малки демо презентации, но не винаги успява в реалния свят
– Silverlight 1.0 е много далече от завършен продукт и за момента изостава от примерно Flex. Може би 2.0 ще обърне нещата – прогрес се забелязва в тази насока
– WCF – продължавам да не му схващам цялостната идея 🙂

 

Update (13.01.2016):

  • LINQ е “cool”, всъщност не минава ден без да го използвам – швейцрско ножче, което може всичко
  • WCF – ами… продължавам да не го харесвам, но вече го уважавам 🙂

Размисли на тема memory карти и различните smart card четци

В един от последните ми проекти се наложи да работя със memory карти , по-специално SLE4428.
Защо? Ами евтини са, лесно се доставят и вярвах, че лесно се работи с тях – в крайна сметка – като голяма магнитна карта.
Да, ама не – след 3 дневно проучване и четене в google се оказа, че последното хич не е вярно.
Тъй наречените memory карти или карти със синхронен достъп се оказаха костелив орех и PS/SC спецификацията не важи за тях (PS/SC била само за карти с протоколи T=0 и Т=1, но откъде да го знам това…). В крайна сметка всеки модел картов четец си има собствен начин за достъп до синхронни карти!
Частта по инициализирането със SCardEstablishContext и SCardConnect е същата и идва от стандартния Windows winscard интерфейс, но самото четене и писане е специфично за конкретния четец.
С две думи – в зависимост от vendor-a на четеца се използват различни команди за достъп до паметта на картата. Мнооого неприятно. Това в комбинация с нуждата за поддръжка на няколко различни типове memory карти – още по-неприятно.

Все пак – решение има. За ACS има описание на командите в SDK-a (не знам дали е публично достъпен, но със сигурност може да се намери в Интернет),
за OMNIKEY има достъпно SDK на http://www.omnikey.com/ като трябва да се търси Synchronous API като цялата функционалност е затворена в scardsyn.dll и има готови функции за четене/запис.
За GemPlus (вече Gemalto) нужната библиотека е GSC.dll като идва с кратко описание от сайта на Gemalto.

Update: Ако се използва четец на Omnikey, за да сработи API-то за работа със синхронни карти е необходимо да се инсталират драйверите за Omnikey, тъй като стандартния драйвер по подразбиране от Windows не работи правилно.

Update2: ACS произвеждат USB картови четци, които не поддържат memory cards. Например такива са ACS ACR38C (C идва от CCID). За тези четци драйвери не са необходими, но за съжаление поддържат само карти с микропроцесор.

Няколко трика за Joomla 1.5

При поредната инсталация на Joomla 1.5 се натъкнах на следния проблем с някои хостинг провайдъри:
– файловете качени през FTP/SFTP имат за owner конкретния потребител, което е нормално
– файловете създадени от joomla (като качени templates и т.н) се създават в зависимост от потребителя, под който се изпълнява PHP (примерно nobody)

Всичко това не изглежда толкова лошо до момента, в който се наложи да се редактира/подмени някой файл от , например, някой template.
Тъй като файлът е с owner nobody и permissions 644 – няма начин да се смени достъпа да файла чрез потребителя на FTP/SFTP.
Доста неприятен факт, за който все пак се оказа, че има решение и то е plugin към joomla – файлов мениджър.

Използвам joomlaXplorer и от описаниет може да се прочете: “joomlaXplorer is a File- and FTP – Manager. It allows you to edit files, delete, copy, rename, archive and unpack files/directories directly on your server”
Така проблемът с permissions на файловете е решен макар и с цената на леко неудобен web интерфейс 🙂

Още нещо, което ми се наложи да науча в движение за Joomla 1.5 е, че настройките, който досега бяха в Global Settings вече се достъпват от няколко места по администраторския интерфейс.
Опцците за icons PDF/Mail/Print и други свързани със статиите са се преместили в Parameters от Article Manager.

Регистрация на Assembly в Windows GAC без gacutil.exe

В този блог http://blog.neutron.sharpstyle.com/2007/07/08/installing-assembly-into-the-gac-programmatically/ попаднах на информация как да регистрираме програмно .NET assembly в Windows GAC.
Всъщност това се оказа доста лесно и се постига с помощта само на един ред:

new
System.EnterpriseServices.Internal.Publish().GacInstall(”myassembly.dll”);

Новините от RSS feed излизат като “????” в Joomla

В стандартна инсталация на Joomla 1.0.x (включително и локализираната версия на български от joomla-bg.com) RSS агрегаторът не работи правилно, заради проблеми с encoding-a и резултатът обикновено е следния:
Въпросителни в имената на статиите и в линковете.
След известно търсене по форумите видях, че проблемътът се състои в com_newsfeeds компонента и по-специално във файла newsfeeds.html.php, който се намира в /components/com_newsfeed/ подпапка.

Вече не си спомням от къде в Интернет намерих patch за горния проблем. Ето го и самия patch:

newsfeeds.html.php
В общи линии е това. След като се сложи файла, резултатът вече е доста по-приемлив, а именно:

Компресия на трафика по TCP/IP връзка

Почти всяко уважаващо себе си бизнес приложение в наши дни използва връзка с база данни. Ако БД е на същата машина въобще не се замисляме за трафика, който се генерира, но ако свързаността е слаба (през Интернет чрез VPN или просто директна връзка с отдалечена машина), то това може да се превърне в сериозен проблем.

Разбира се, винаги има вариант да се оптимизира приложението и да работи с по-малки обеми от данни, но това изисква допълнително време и ресурси и рядко е лесно изпълнимо.

Едно друго и лесно решение за компресия и криптиране на връзката се дава от един open-source продукт – Zebedee. Последната версия е от 2005, но това съвсем не пречи да работи точно както се очаква:) . Сред хубавите черти е и това, че работи под Windows (като application и service) и под Linux.

Нека най-общо имаме следната конфигурация:
Клиент Сървър
като целта е данните, които се предават между Клиент-а и Сървър-а да са компресирани максимално.
Ще предполагаме, че на машината Сървър е стартиран Firebird server, който работи на порт 3050 (Разбира се – може да е всяко приложение, което слуша на TCP/IP port)

Инструкциите за подкарване на Zebedee се състоят в едва няколко точки:
1. Официалният сайт е : http://www.winton.org.uk/zebedee/ . От там може да се свали последната актуална версия 2.4.1 или 2.5.3
2. Инсталира се на машината клиент и машината сървър
3. На машината сървър се подсигурява порт 11965 да не е филтриран или блокиран от firewall (този порт може да се настрои при необходимост)
4. На машината сървър се стартира следното:
c:program fileszebedeezebedee -s -z 9
(При условие, че zebedee е инсталиран в директорията по подразбиране)
-z 9 ще осигури максимална компресия, което е достатъчно добре за всички ситуации, пък и при сегашните процесори не си заслужава да се използва по-ниска степен на компресия.
За получаване на повече статистическа информация може да се постави и параметър -v 4 и -d (за да не се detache-не от конзолата и да продължи да плюе информация)
5. На машината клиент се стартира следното:
c:program fileszebedeezebedee -z 9 8000:<сървър>:3050
(При условие, че zebedee е инсталиран в директорията по подразбиране)
6. Навсякъде, където досега сме се връзвали към <сървър>:3050 сега трябва да се връзваме към localhost:8000.

Горното е съвсем базов пример, колкото да се подкара и да се види, че работи. Допълнително може всички настройки да се изнесат в конфигурационен файл и да не се въвеждат на командна линия.
Другите възможности, които заслужават интерес са:
– работа като Windows service
– криптиране на връзката
– смяна на порта на тунела
– други

Ето и dump как се представя компресирането през zebedee за няколко минути работа с база данни през Интернет:
….
zebedee(2324/3028): read 53959 bytes (63560 expanded) in 1592 messages
zebedee(2324/3028): wrote 326821 bytes (1306955 expanded) in 1702 messages
….

Или в крайна сметка използването на zebedee ни позволява да намалим трафика в едната посока 4-кратно ! А това автоматично означава приложения, който са по-responsive и с по-бърз достъп до данните.

Update1:
Стартиране на zebedee като service се прави чрез изпълнението на следната команда
zebedee -n “Zebedee Server” “-Sinstall=c:server.zbd”
Горното ще създаде windows service с име Zebedee Server и ще прочете конфигурационния файл от c:server.zbd – трябва да е указан пълния път до файла!

Българска локализация на setup project във MS Visual Studio 2005

Visual Studio 2005 предоставя инструменти за лесна направа на инсталации под формата на Setup/Deployment project. Сравнително лесно се правят инсталации, които са straight-forward и не изискват някаква сложна логика. Поддържат се и предварителни изисквания (prerequisites), custom actions както и ред други благини.
За съжаление няма българска локализация и още по-лошо – няма никаква локализация, която да поддържа кирилица. Проблемите, които произтичат от това са няколко:
– създадения инсталатор изглежда непрофесионално; опитваш се да предложиш продукт, а се инсталира на латиница. Тук имам предвид стандартните съобщения като ОК, Cancel надписите на бутоните
– design time се предоставя известен набор възможности за въвеждане на разни текстове като ProductName и др. За съжаление, ако се въведат на кирилица излиза warning, а run-time на същото място излизат ??????.

Има и други такива, за които всеки, на когото му се е налагало да използва може да сети и сам.

Какво може да се направи?
Накратко начина, по-който може да се кирилизира инсталатора не е лесен и изисква известни усилия, но в крайна сметка се постига желания резултат.

Като начало се инсталира Windows SDK Components for Windows Installer Developers от http://msdn2.microsoft.com/en-us/library/aa370834.aspx
От тук използваме инструмента Orca, който най-общо може да редактира ресурсните таблици на MSI файл, както и няколко скрипта в подпапка SamplesScripts

– Генерираме setup project-a от Visual Studio 2005. Обикновено той се състои от setup.exe и някакъв msi файл
– С помощта на Orca отваряме msi файла. Тук в зависимост от сложността на инсталацията може да се наложи да се експортират доста таблици от меню Tables->Export tables, но за по-прости setup проекти нужните таблици са:
Property.idt – обща информация за проекта като ProductName и други такива
Control.idt – текстовете по контролите и диалозите
RadioBut.idt – текстове на радио бутоните
– Превеждаме тези таблици както намерим за добре
– Кодовата таблица на msi setup файла, трябва да се промени на 1251, за да работи правилно с кирилица
WiLangId.vbs .msi codepage 1251
– Обратно импортиране на преведените таблици обратно в msi файла
WiImport.vbs .msi <път до idt файловете> Property.idt
WiImport.vbs .msi <път до idt файловете> Control.idt
WiImport.vbs .msi <път до idt файловете> RadioBut.idt

…..

Вече е всичко готово и MSI файлът е локализиран успешно!

Както може да се види обаче, процесът е доста дълъг и неприятен. Да се следва тази процедура при всеки build е крайно досадно и скучно.
Може да се ускори значитено като се поставят някои команди в Post-Build Property-to на самия проект, а именно първо се добавят следните файлове към проекта
– WiLangId.vbs, WiImport.vbs (те се намират в Windows SDK Components for Windows Installer Developers пакета в подпапка SamplesScripts)
– всички idt файлове, които са нужни за проекта
– в Post-Build Property се добавят тези редове:
cscript “$(ProjectDir)WiLangId.vbs” “$(BuiltOuputPath)” codepage 1251
cscript “$(ProjectDir)WiImport.vbs” “$(BuiltOuputPath)” “$(ProjectDir)” Property.idt
cscript “$(ProjectDir)WiImport.vbs” “$(BuiltOuputPath)” “$(ProjectDir)” Control.idt
cscript “$(ProjectDir)WiImport.vbs” “$(BuiltOuputPath)” “$(ProjectDir)” RadioBut.idt

И това е всичко.
Вече след всеки build автоматично проектът ще се кирилизира, ресурсните таблици ще се импортират обратно в него и се получава един красив български setup project!

Както обикновено се случва – всеки метод има някои недостатъци. Най-общо това са:
– ако се промени нещо по интерфейса (добави се нов стандартен диалог към проекта например) е нужно ресурсните таблици да се прегенерират и да се merge-нат към вече преведените
– при промяна design time на properties те не се отразяват, защото… се замазват от преведените ресурсни таблици. Решение за това е промените да се правят и в Proprty.idt

Като заключение ми се струва, че Microsoft не са обмислили setup projects (за момента, може би в VS 2008 ще е различно) и освен проблемите с локализацията има и доста недъзи по самия процес на направа на проекта….
Е имат и доста добри неща – най-вече добрата интеграция с Visual Studio :))