Интерестно тестче Със съвсем честни отговори бях зашлевен с оценка “All hail the monstrous nerd. You are by far the SUPREME NERD GOD!!!“. Отивам да се правя, че имам реален живот.

Интерестно тестче Със съвсем честни отговори бях зашлевен с оценка “All hail the monstrous nerd. You are by far the SUPREME NERD GOD!!!“. Отивам да се правя, че имам реален живот.

Вчера получих отговор от ЦКБ, по повод неволите ми с онлайн банкирането им.
Приканваха ме да се свържа с тях по телефона, за да изчистим по-бързо и лесно проблема.
Е, днес се обадих и се свързах с човек от банката. След 10 минути разговори се разбрахме, че има някакъв проблем със сертификата, който отказваше да се инсталира на който и да било браузър, било то под Linux или Windows. Opera 9.62, на която първоначално го инсталирах успешно въобще не го показваше като инсталиран, а при опит за инсталация единствено споделяше за успех.
Човекът сякаш не беше подготвен за неочаквани резултати и в крайна сметка ме отпрати към най-близкия офис на банката, който, слава богу, е на съседната улица.
Девойката там се свърза със същия този човек и след известен разговор се откри проблема – непотвърдено заявление за онлайн банкиране. Когато съм подавал заявлението (~Юли) тъко влезли в сила разпоредби да е нужно потвърждение от двама служители, което така и не се случило с моята сметка.
Потвърдиха, прибрах се, инсталирах нов сертификат, с който успешно влязох (под Firefox и IE8, Опера отказва да го import-не) и нова изненада – няма карти, няма сметки?
Обиколих всички менюта, линкове и опции, но не… Единственото, което звучи обещаващо е “Добавяне на нова карта”, но линкът не работи. Нищо не се случва.
Утре ще се опитам отново. Може би им отнема някакво време да ми впишат картата?!
Въобще цялата работа въобще не е толкова лесна и удобна, колкото трябва да бъде. Разкарвания по банки, телефони… Сигурно всичко е с цел “сигурност”?
Имам си дебитна карта VIsa Electron от ЦКБ.
Имам я от повече от година. Направих си я с идеята за eBay, Amazon и прочие, но така и не се наканих да си направя съответните акаунти. Днес, обаче реших, че е крайно време за това (конкретен повод е [url=http://www.amazon.com/Programming-Microsoft®-Robotics-Studio-Morgan/dp/0735624321]тази[/url] книга за Microsoft Robotics Development Studio) и реших да видя какво е положението със сметката чрез CCB Online – порталът за управление на карти и сметки на ЦКБ.
За тази цел, разбира се е нужен съответния е-сертификат. Няма да се крадем я! Тук възникнаха и проблемите. Коректно генерирах и инсталирах своя сертификат, чрез страницата за целта. Сертификатите, обаче, се оказаха 2 – един носещ трите ми имена и един www.ccbank.bg
При обит за влизане в портала с кой да е от двата сертификата бивах грозно наплют със съобщението “Избрали сте грешен сертификат”. Никакво триене на сертификати, кукита и т.н. не помогна.
Предположих, че смятат Опера за екзотика като браузър. Да, обаче цялата операция вършех под Windows. А там Konqueror отказва да импортва сертификати, а Internet Explorer-a ми е 8 Бета. Той пък гърмеше с грешка (ха! Изненада!) при инсталацията на сертификата.
Специално си свалих firefox за целта, той пък отказа да инсталира сертификата – грешен ми бил private key-a нужен за декриптирането му.
В крайна сметка греда. Достъп до системата нямам и чакам отговор от support-a.
1.Не можеш да си пипнеш всички зъби с езика …
2.Всички идиоти след като го прочетат опитват да го направят
3.Първата истина е лъжа
4.Сега се усмихваш ,защото си идиот
5.Скоро ще го изпратите на друг идиот
6.Още има глупава усмивка на лицето ти
Преди няколко дни се срина външният ми хардиск – Western Digital 400GB. ОТ известно време даваше грешки на една ext3 система, а веднъж NTFS-ът с музиката се срина и chkdsk превърна 2/3 от съдържанието му в папките dir0001.chk до dir0745.chk, но мислех, че това са все проблеми с файловата ми система, поради чести манипулации с ntfs-3g, както и монтиране на ext3 под Windows със съответните драйвери.
След последния срив се презастраховах с едно dd if=/dev/zero of=/dev/sdb, но файловите системи, които създавам се държат неадекватно и дават доста грешки, тъй че вероятно ще го проверя за лоши сектори и ще опитам с гаранция.
Конкретно последния срив стана докато синхронизирах iPod Touch-а си с музика и всичките си снимки чрез iTunes. Снимките представляват една безсмислица от цветни точки, а музиката синхронизирана от въпросния диск е претърпяла странни метаморфози. Оказва се, че 3 Psychedelic Trance албума и един Techno, макар и копирани със съответните ID3 тагове, всъщност са… Gabber. “Oforia – Why Not On Mars”, да речем, всъщност е част от един доста хард концертен сет на Angerfist.
Може да се каже, че съм се заразил с “Габба вирус”, който подменя песните ми
С все по-сериозното навлизане на многоядрените процесори (вече дори почти няма съвременни едноядрени решения от Intel или AMD) и най-вече във връзка с областта, с която се занимавам последните месеци – изкуствени невронни мрежи, взех да се интересувам по-сериозно от възможностите за писане на приложения, които се възползват максимално от наличните ресурси за изпълнение.
Решението, което търсех трябваше да покрие следните изисквания:
-Да е безплатно
-Да е с отворен код
-Да не е обвързано с някакви сериозни frameworks
-Да е С++
-Най-важното – да е максимално портативно.
pthreads са си С базирани, а и за Windows трябва да се разчита на pthreads-w32, Windows Threads има проблеми с точки 1,2 ,3 и 5.
Друг вариант са Qt и техните QThreads. Това, всъщност беше вариантът, който избрах при писането на приложението към дипломната си работа. Проблемът при него е, че е нужен QT Framework-а, което не е съвсем ефикасно решение, а самата библиотека предполага някои странни решения и методи, които не ми харесаха особено много.
Последния вариант, които остана е Boost::Threads. Те, като че ли, покриват всички изисквания, нужно е линкване единствено с bost threading библиотеката, още повече, че най-вероятно ще са стандартния начин за threading в C++0x.
Единственият сериозен проблем, на който се натъкнах бе, че документацията на Boost-a е отвратителна. Примерите към библиотеката практически нямат коментари в кода (WTF?!), tutorial-ът е постничък.
Та след като попрочетох доста материали по тематиката многонишково програмиране и се опитах да почна да пиша многонишкови приложения постепенно останах със следното впечатление:
Съществуващите методи за threading страдат от един общ проблем: те твърде усложняват създаването на паралелни приложения. Thread-овете са инструмент на твърде ниско ниво за разпаралеляване на алгоритмите. Управлението на цялата им логика, като синхронизация, създаване и прекъсване води до множество скрити потенциални проблеми (deadlocked, anyone?), а същевременно се нуждае от голяма част от времето и ресурси за създаване на приложението. Още повече, че човек мисли изключително последователно, а писането на многонишков код като цяло изисква преди това да можем да си представим изпълнението на програмата по няколко отделни пътя едновременно.
Присещайки се и търсейки един инструмент на Intel (VTune Analyzer) за профилиране на приложения попаднах на алтернатива на класическите threading решения в лицето Intel Threading Building Blocks. Тези “блокове” са темплейтна библиотека, написана на стандартен ISO C++, която предлага run-time engine и се свързват и компилират на всеки следващ стандартите компилатор.
Библиотеката предлага един малко по-различен подход към паралелност, изразяващ се в разбиването на логическите операции на “задачи”, които библиотеката управлява и разпределя ефективно и най-вече – ефективно, между изпълнителните ядра. По този начин програмистът “залага” паралелност в приложенията си, без да се налага да се грижи за синхронизация на ресурсите между отделни нишки, броя нишки, които се изпълняват и хардуера, като цяло.
Предимствата, както Интел твърдят са:
-Intel® Threading Building Blocks enables you to specify tasks instead of
threads.
-Intel® Threading Building Blocks targets threading for performance.
-Intel® Threading Building Blocks is compatible with other threading
packages.
-Intel® Threading Building Blocks emphasizes scalable, data parallel
programming.
-Intel® Threading Building Blocks relies on generic programming.
Идеята като цяло ми се стори интересна и ме накара да зарежа всичките си досегашни опити за ефективност и да се насоча към нея.
Оставам с впечатлението, че “блокчетата” нямат за цел да заместят стандартните решения във всяка област на многонишковостта. Всъщност инструментите, които предлагат, като parallel_for, parallel_do и т.н. биха били от голяма полза в някои, но не всички области. За мен поне са от сериозен интерес, защото се обърнато голямо внимание, най-вече на паралелизиране на работата с контейнери, което за мен е буквално Свети Граал.
При невронните мрежи се работи с огромно количество от вектори и вектори от вектори, които, за да се достъпват конкурентно изискват доста сериозни locking усилия и управление на достъпа, а с TBB мога да заместя цял един клас, управляващ достъпа до един vector от няколко thread-а с един прост parallel_for и една функциика, която да се занимава с отделните части от вектора. Жестоко!
Е, след като дори Линус Торвалдс започна свой блог, мисля, че мога да се пробвам и аз. Честно казано винаги съм смятал, че това е един вид като да си говориш сам (дори в момента ме преследва това усещане!), дори и ако след това други хора четат публикациите.
Поживеем – увидим.