Отиди на
Форум "Наука"

Avatara

Потребител
  • Брой отговори

    182
  • Регистрация

  • Последен вход

  • Days Won

    4

ВСИЧКО ПУБЛИКУВАНО ОТ Avatara

  1. ДА УБИЕМ INTERNET (Из цикъла: „Мрачното бъдеще на доверието”) Фотография: Ben Goossens Винаги съм твърдял, че internet ще бъде погубен от потребителите. Нещо като събитията от гръцката митология, свързани с изяждането на собствените деца. Повод да публикувам част от един стар материал ми даде мнение по темата, което изчетох внимателно. Doris, написа следното: ЦИТАТ: „ ... А от изброените езици един ми е познат - HTML и според мен изобщо не става за кибер-оръжие, дори не се смята за програмен език, а за маркиращ, описателен език.” Да ме вземат мътните, ако някога съм приемал това уродливо недоразумение за нормален програмен език, а още по-малко съм го споменавал. Пу, пу пу ... къш, къш, нечестива гад (следва прекръстване и плюене през рамо). Все пак не мога да не отдам дължимото на възможностите, които HyperText Markup Language (HTML) предоставя на начинаещият кибертерорист. Като начало това е прекрасната възможност да накараме де що е потребител да вкара глутница вълци в кошарата, т.е. да си вкара таралеж в гащите или каквото там се сетите. Може да вярвате в каквото си искате. Може да използвате Proxy, VPN, да модифицирате заглавната част на HTML, да променяте часова зона, да употребявате само и единствено "най-надеждните" браузъри, или други подобни залъгалки, но каквото и да направите някои web-сайтове никога няма да заличат спомена за вашето незабравимо посещение. Знам, че за мнозина това едва ли има някакво значение, но не е ли редно да се запитаме: „А какво стана с гарантираната ни анонимност?” Как според вас би реагирала разработената от „гениалните” индийски програмисти информационна система, на някоя водеща финансова институция, ако вземе та получи заявка от „оторизиран потребител”? Въпросът е дали данните получени от системата реално са подадени от съответния потребител или просто са били откраднати без негово знание? Но да се върнем към темата ... Като начало нека видим как функционират „бисквитките”. „Бисквитките” и това, което се крие в тях За да бъде идентефициран ползвател в internet приложенията масово се използват „бисквитки” (Cookies – англ.). В бисквитките няма нищо сложно и загадъчно. Това е малка „порция” текстова информация, която сървърът изпраща към потребителя (който ползва браузър за да рови в мрежата и да пасе виртуални говеда). Когато потребителят се обръща към сървъра (например иска да отвори определена странница, като набира нейният адрес), сървърът прочита информацията, която се съдържа в „бисквитката”. Тази информация може да бъде изключително интересна. Име на потребителя, статичен IP-адрес, MAC-адрес и пр. и пр.. Технически всичко това се реализира по следния начин: Пример: Потребителят иска да отвори странница с адрес: http://example.org/index.html. Браузърът (Mozilla, Safari, Opera, IE или каквото ви дойде наум) изпраща на сървъра следната заявка: GET /index.html HTTP/1.1 Host: www.example.org Сървърът от своя страна отговаря възпитано, като изпраща към потребителя исканата странница, заедно с текст, съдържащ HTML отговор. Именно този отговор, крие „бисквитка”, която остава на компютъра на потребителя. HTTP/1.1 200 OK Content-type: text/html Set-Cookie: name=value Когато браъзърът срещне символен низ от вида „Set-Cookie”, той запомня информацията „name=value (променлива = стойност) и я изпраща всеки път, когато се потребителят се обърне към същата странница (или към същият сървър). GET /spec.html HTTP/1.1 Host: www.example.org Cookie: name=value Accept: */* Както сами може да се убедите всичко е невероятно просто. Ако сървърът получи от страна на клиента „бисквитка” и в неговите бази от данни има съответстваща информация, той еднозначно ще я обработи без да иска каквото и да било съгласие от страна на същият този клиент. Например, ако това е „бисквитка” , съдържаща информация като „User name:” (потребителско име) и “Password” (парола), в момента в който бъдат открити от страна на сървъра, те няма да бъдат изисквани от потребителя. Прието е „бисквитките” да имат определен „жизнен цикъл”, както и да могат да бъдат премахвани в случай на нужда от потребителя (него пък кой го пита, ама нека си вярва). Няма браузър, за който това да не се твърди от страна на разработчиците и компанията, която го предлага „напълно безплатно”. Това силно изнервя собствениците на определен вид информационни ресурси, които изпитват непреодолимо желание да контролират от кого, кога и как са били посетени. Тук може да посочим анализатори на трафика (предвиждам да отделя напиша материал за измамите там), системите за статистическа обработка (някои от тях дори си вярват), банерни мрежи, електронна търговия и пр.. Забавното в случая е, че потребителите нямат и най-малка представа, че са обект на постоянен контрол от стърана на комерсиални институции, които неспирно твърдят, че предоставят „напоълно безплатни” продукти и услуги. Използват се изключително забавни уловки. Ето някои от тях ... Flash-бисквитки Анимираните Flash изображения, освен че поглъщат огромен ресурс са по опасни и от най-разрушителния вирус. Към момента те са прекрасно алтернатично хранилище, в което се съхранява информация за крайния клиент без негово знание. Най-често може да откриете интересна информация за себе си в Local Shared Objects (LSO), които макар и донякъде да приличат на „бисквитки” (като файл и това, че се намират на компютъра ви) притежават доста интересни от гледбна точка на кибертерориста свойства. Ето някой от тях: - Flash-бисквитките са еднакви за всички браузъри (за разлика от традиционните такива). Общи настройки, информация за сесиите, специализирани идентефикатори за проследяване на потребителя и пр. гадост не се интересува дали сте си сложили Mozilla, Opera, IE, Safari или нещо друго. - Flash-бисквитките позволяват да се събира по голяма по обем информация за клиента (до 100 KByte), което означава, че някой ще научава много повече за вас, отколкото би ви се искало. На практика LSO e изключително проста и достъпна технология за трекинг на метуера (нали знаете значението на тази дума). Никакви „стандартни” средства за изчистване кеша на браузъра няма да ви помогнат да се отървете от тази гад. Evercookie (посвещава се на Doris и нейната вярва в хуманизма) Ако за LSO са чували малцина, то за някои други технологии, помагащи на Големият Брат да ви проследи се знае много повече. Да разгледаме прекрасните контейнери предлагани от HTML5. Тук с чиста съвест мога да посоча всичкия боклук, който носи вълнуващи имена като Session Storage, Local Storage, Global Storage, Database Storage via SQLite и пр. (Doris, спомена нещо за HTML, ама нали сме недоверчиви). Ако търсите компетентно мнение по въпроса ви препоръчваме да се обърнете към Сами Kамкар (Samy Kamkar). В резултат на неговите усилия се появи специализирана JavaScript-библиотека evercookie, чиято основна задача е да създава изключително жизнени и неподдаващи се на унищожение „бисквитки”. Някой би попитал: „За какъв дявол е нужно да се прави нещо подобно?” Много е просто: За да се извърши „идентефикация на уникалността на потребителя” в случай на повторно посещение на дадена web-странница. Подобен вид „бисквитки” се наричат „tracking cookies”. . Evercookie унищожава всякаква форма на анонимност на потребителя. При този вид „бисквитки” се използват всички предоставяни от HTML средства, за събиране на информация за потребителите в мрежата. Традиционни „бисквитки”, HTML5 контейнери, LSO, системата за History, генерация на специални PNG-изображения (виж някои от докладите ни от различни научни конференции), използване на ETag и пр. и пр.. Възможностите тук са повече от неограничени. Предполагам, че вече сме доскучали на бъдещите кибертерористи и мнозина от тях биха задали основният въпрос: „ДА, ДЕ. АМА КАК ДА СЕ ВЪЗПОЛЗВАМЕ НИЕ ОТ ДАЛАВЕРАТА?” Ето един от многото примери, които бихме могли да дадем: PNG-бисквитка Evercookie предоставя възможност за съхраняване на данни в кеширани PNG-изображения. За целта се използва скрипта evercookie_png.php, който позволява да бъде записана информация за конкретната сесия. Подобен род „бисквитки” се наричат PHP-сценарии. Те създават PNG-зиображения, цветовете на които „съхраняват” определен вид информация (дори сме показвали пред публика подобни трикове). Най-забавно е, че PNG-файлът се изпраща на клиента със забележка: “ДА СЕ СЪХРАНЯВА ДО ФИЗИЧЕСКОТО УНИЩОЖЕНИЕ НА ДИСКА” Получавайки горното указание, evercookie премахва специализираните HTML-бисквитки, а след това изпълнява нареждането, следвайки PHP-сцернария, но без да предоставя информация за потребителя. На пръв поглед няма данни, които да позволят генериране на PNG. На практика обаче браузърът изпраща „преработен” HTML със следното съдържание: "304 Not Modified" Това си е покана да се изтегли файла от локалния кеш и да се визуализира посредством HTML5 Canvas. Когато това се случи evercookie изчита всеки един пиксел, съдържащ се в Canvas и изчита цифровите стойности за RJB. Както вече споменахме тези цифрови стойности съдържащ кодирана текстова информация за потребителя. ЗАКЛЮЧЕНИЕ Искаме да изкажем благодарност на г-н Ал.Фол, който в желанието си да „реформира” българското образование даде начален тласък на неговото безвъзмездно разрушаване. Изказваме благодарност на всички знайни и незнайни служители на МОН, които през последните години направиха всичко по силите си за да попречат на българският ученик да получи основни знания в областта на IT-технологиите. Виждаме, че в момента се прави всичко възможно зада се унищожат предмети като математика, физика, химия, биология, история и български език, като същите биват заменени с религия, шаманизъм, европейски скудоумия, простащина, права и наркомания и др.. Колкото по-безпросветен е българският потребител, толкова по-лесно ще бъде манипулиран. Личните му данни ще бъдат източвани и употребени за съответните цели. Да живее МОЛ-културата, гибека (не е грешка), Skype, Facebook (суратлъ тефтер – тур.), Flash и де що е шарения, простотия и дивотия. Вярвайте, че те свободни и независими, защото не сте нито едно от двете. Да пребъде силата на разрушението и съсипията. Георги Тодоров Герасимов – Avatara (Параноичен индивид, който дори не си шифрова писмата) P.S. Специално за ценители: function getCookie(best_candidate, all_candidates) { alert("The retrieved cookie is: " + best_candidate + "\n" + "You can see what each storage mechanism returned " + "by looping through the all candidates object."); for (var item in all_candidates) document.write("Storage mechanism " + item + " returned: " + all_candidates[item] + "<br>"); } ec.get("id", getCookie); Гореизложеният код е поредното доказателство, че срещу потребителските безумия, капризи и мрънкане дори най-съвършенната защита е безполезна.Само не ми казвайте, че използваната операционна система или браузър са в състояние да ви защитят от подобно "съвършенство". Току виж съм взел та съм ви повярвал ... Аксиома на Герасимов: Internet в ръцете на обезумелият от обгрижване на виртуални зеленчуци потребител е като заредена картечница в ръцете на луд, пуснат в детска градина.
  2. Само преди минути приключих с доста забавен телефонен разговор. Мисля, че е крайно време да се престане с твърдения от рода на "Linux е непробиваем!" и всякакви подобни. Скандирането по стадиони и митинги е емоционална проява, лишена от здрав разум. Колега е пострадал сериозно от пробив в Linux Kernel 2.6.x. Преди време бях пиосал някъде за това, че в Linux има маса пропуски при проверката на входните данни. Функции като: kvm_vcpu_ioctl_x86_get_vcpu_events(), kvm_vcpu_ioctl_x86_get_debugregs(), kvm_vm_ioctl_get_pit2(), kvm_arch_vm_ioctl() и др., са си жива бомба със закъснител, ама върви та доказвай. Та в този ред на мисли ... Ако се вярва, на показаното на конгреса на Chaos Computer Club, състоял се в периода 27-30.12.2010 год. в Берлин с помощтта на старичка Motorolla и нужните знания може да си подслушвате де що е GSM, без да имате достъп до централите и каквопто там ви допада (ама и за това бяхме писали преди три години, ама нали го казахме в България, а не в Централна Европа). Ето едно твърдение, което споделям напълно: "Това е като компютърните мрежи от 90-те години (то тогава започна и анархията, ама друго са индийските програмисти, икономиите и чуждият опит, б.пр.), когато хората нямаха и най-малка представа какво е компютърна безопасност (не че сега имат, б.пр.). GSM си е двадесетгодишна инфраструктура, съдържаща маса лични данни и почти никаква защита (и ние това казваме, ама няма кой да ни чуе, б.пр.). ..." No coment ... (както понякога се изписва под едни кратки видеоматериали) Георги Тодоров Герасимов (Avatara) Извод: Основна теорема на Герасимов: При доминиращата роля на информационните технологии в едно общество всяка икономия на средства във виртуалната сфера, може да генерира сериозен материален дизбаланс в реалната такава.
  3. РАЗДЕЛ I ПРОГРАМНИЯТ ЕЗИК КАТО КИБЕР-ОРЪЖИЕ През последните години е много модерно в българските форуми да се спори за това колко устарял е един или друг програмен език. За огромно мое огорчение подобни спорове не само са лишени от солидни аргументи, но и на практика се свеждат до няколко езика, които са ориентирани към повърхностни потребители и ученици от горните курсове. Първото, което един истински кибер-терорист трябва да познава е предназначението и обсега на действие на основните бойни средства. Ако все още вярвате, че глупости като номера на кредитни карти, пароли, съдържание на електронна поща и пр. ще ви направят по-умни, по-богати и по-могъщи, можете да не четете написаното по-долу. Вие определено сте обречен да останете в групата, която в някои рускоезични издания се определя като „чайници” (в англоговорящите среди използвад дума започваща с „L”). Ако към това добавим и упоритост и инат няма да се учудя, ако ви бъде предоставена прекрасна възможност за запознаване отблизо с основни текстове в НПК, с всички произтичащи от това последствия. Ако наистина обаче сте решили да правите нещо, не е зле да го правите както трябва. Дори да чистите тоалетни или да копаете фикалийни канали (като мен) трябва да вършите всяка дейност професионално. Професионализмът винаги вдъхва респект. Целта на някои от следващите публикации е да ви помогне във всяко едно благородно и крайно разрушително по своята същност начинание, свързано с придобиване на контрол върху онези малки неща, за които хората не подозират, но които ги карат да се чувстват съпричастни към IT-революцията. Като начало ще наблегнем на теоретичната подготовка, която през последните двадесет години в България бе сведена до отрицателни и дори бих казал имагенерни стойности. Резултат от тази политика (неотклонно следвана от МО и поддържана от ВУЗ, средните училища и махаленските експерти) бе прозрението на Якуб Брьжечки (Jakub Břečka – някой да знае как точно се транскрибира на български) и Дейвид Матоушек (David Matoušek) от 9 май 2010 година (денят на победата над де що е антивирусен софтуер), което никак ама никак не се понрави на поддържниците на Java Virtual Machine и Acrobat Reader (дълги години да пребъде безпросветността человеческа). Ние обаче няма да се поддадем на стадното чувство, намерило благодатна почва сред електронните медии, социалните мрежи и специализираните форуми. Ние не следваме модата, а я налагаме. Така, де. HDL ЕЗИЦИ ЗА ПРОГРАМИРАНЕ: Advanced Boolean Expression Language - ABEL (1983) – Мразите емоциите и вярвате непоклатимо в силата на логиката, това е за вас. Изключително мощен език, разработен от екип, ръководен от д-р Кей Ли (Kyu Lee ) Забележка: Моля да не се бърка с популярно изпълнение на популярна песен от близкото минало. Altera Hardware Description Language - AHDL – Само за педантични натури. Донякъде наподобява командите на UNIX, донякъде има сходство с SQL, без да е нито едно от двете. Удобен инструмент за програмиране на системи за контрол и управление. A Hardware Programming Language AHPL – Език за ценители. Ако от дете мечтаете да изобразите времето, това е вашият инструмент. Използвайте го за разработка на системи за работа в реално време и времеви анализатори. Това ще ви даде предимство пред конкурентите, които вярвават в Java Script. Нека вярват. Силата е с вас. Bluespec (юни 2003) - Само за екствремни личности. Ако ви се е налагало да работите с 10 GigaBit Ethernet –рутери (10GE) няма как да не сте се сблъскали с това чудо на академичната мисъл. Ако държите да бъдете в част с съвременните тенденции в телекуминикациите и използвате термини като „fiber - LRM PMD with enhanced equalization” е редно да отделите малко време за да се запознаете с този език. C-to-Verilog – Тук дори аз се обърках, но хубавото е, че има доста видеоматериали по темата. Необичаен компилатор, който обръща написания от вас C-код във Verilog. Задължителен елемент за всеки професионален киберпрестъпник, който държи на своята репутация. CoWare – Набор от пълнофункционални драйвери и още нещо. Незаменимо средство в борбата срещу индийските програмисти. CUPL – Препоръчвам ви да посетите сайта на фирмата, ползваща този език. Ще преживеете незабравими мигове, потапяйки се в света на корпусите за интегрални схеми. ELLA (1980 – 1990) – Британските програмни езици са като британското чувство за хумор и британската литература. Изтънченост, лека ирония и изключителна прецизност. Все пак не забравяйте, че този език е създаден по държавна поръчка, а финансирането на разработката е със средствата изплащани от поданниците на Нейно Величество. Handel-C (1996) – Мисля, че името Оксфорт говори само за себе си. Все пак ако сте заклет привърженик на C (и обратния полски запис) и никой не е в състояние да ви убеди, че понякога се налага да научите ASМ (по народному „асемблер”), това е вашият език. Ниско. По-ниско. Много ниско ниво. Директно в регистрите на процесора, а, а, а, а ... Hardware Join Java HJJ – Освен с кенгуруто, коaлата и други екзотични животински видове Австралия е допринесла за екзотиката в IT бранша с редица разработки (най-често те са продукт на професор, който носи името Вон или подобно, но това не бива да ви притеснява). За мен това е далекоизточния отговор на сътвореното в Обединеното Кралство. Все пак не забравяйте кои са били изпращани в Австралия. HML – Език за феновете на полиморфизма във всичките му разновидности. Някои от заложените в него принципи са авангардни дори за самите автори. Препоръчвам го като прекрасен заместител на ребусите. Hydra – Определен като Hardware Description Language (CHDL). Родното място на този език е Глазгоу (отново Албиона). Освен футбол на Острова има и други неща, които би следвало да се следят изключително внимателно. Impulse – Разновидност на C. Обърнете внимание на библиотеките. Препоръчаме да бъде включен в „Ръководство за създаване на кибернетични заблуди". Полезен инструмент за ценители. ParC – C за паралелни процеси. Прекрасен език, ако желаете да прикриете нещо, като нещо друго, което не е това, което е, но всички трябва да го мислят за това, което те си мислят, че е. Някой да си спомня за Перса (не ParC, a PerS), неговата печка и сливовия сладкиш от приказката на Киплинг? Just-Another Hardware Description Language JHDL – По ниско от това за език на високо ниво няма накъде. Незаменим за саботиране работата на прецизните тайммери. Lava – Логика и Програмируеми Автомати (ЛПА), синтез на крайни автомати и Pascal. Препоръчвам го за всеки, който желае да придобие истинска мощ. Независимостта се определя от нивото на теоретичните знания. Все пак Haskell е стандартизиран. Lola – Следовници на Силата. Трябва да започнете от тук. Невероятен език за обучение. Началото на пътя за всеки, който желае да се посвети на усвояването на изкуството на невидимото управление. M (1981) – За тези, които обичат AC/DC и правят разлика между реактивно съпротивление и проводник. Ако държите да властвате над енергоразпределителните системи на два континента, това е вашият език. . . . (Следва продължение) Автор на статията: Георги Тодоров Герасимов (кибернетично неориентиран индивид, вярващ в Дядо Коледа)
  4. Тъй като това е една изключително динамично развиваща се операционна система мислим, че е редно да бъде отделено специално място на това, което се случва. И като начало малко новини: 1. Какво ново в Red Hat Enterprise Linux 6 Макар тук да сме се сблъсквали с негативно отношение към Red Had, мисля, че е редно да обърнем внимание на някои детайли при новата разработка. Преди всичко това са включените 1800 (хиляда и осемстотин) нови функции. Към момента са отстранени над 14000 (четиринадесет хиляди) грешки. Добавени са 85% нов програмен код. Не това обаче е важно за разработчиците на корпоративни приложения. Истински приятната новина е, че Red Hat Enterprise Linux 6 е способна да поддържа сървъри с оперативна памет от орядъка на 16 TByte. Броят на процесорите може да е до 4000 (четири хиляди), а файловат подсистема е от порядъка на 100 TByte. Особен интерес лично за нас са новите функции, имащи непосредствено отношение към управлението на ел.захранването на изчислителните комплекси. Повече информация за продукта може да прочетете на следния адрес: http://www.redhat.com/rhel/ Забележка: За да бъдем разбрани правилно трябва да сте наясно, че на нас ни се налага да работим с производителност на системите от няколко стотин петафлопса и мерим обема памет в петабайтове (и това за "мобилни устройства"). Просто измеренията са различни. 2. Какво е Linux Mint 10 На практика това е нова операционна система (най-малко е взаимствала идеята за hardware database от технологията Black Screen, но това е дълга тема). Linux Mint 10 (кодово наименование — Julia) се базира на Ubuntu 10.10 (Maverick Meerkat). Ползва работна среда GNOME 2.32, а също така сървър X.Org 7.5 (това гарантира 100% съвместимост с Vilas-I, за който вече писахме). Може да добавяте мултимедийни кодеци (отново препратка към българската следа) и си има менаджер на надстройките (нещо до болка познато). Може да си изтеглите системата от официалния сайт на разработчика, но за съжаление не винаги е активен. Ето адреса: http://www.linuxmint.com/ 3. Fedora 14 Най-хубавото е поддръжката на Amazon Elastic Compute Cloud (Amazon EC2). Това ви позволява да използвате разпределен изчислителен ресурс през internet. Ядро на системата е Linux 2.6.35. работна среда - GNOME 2.32. За тези, които ползват мини компютри (не персонални, а мини машини) има богат набор средства за тестване, интегрирани с MeeeGo. Ако искате да си изтеглите версия за PC може да го направите от този адрес: http://fedoraproject.org/get-fedora 4. MeeGo за мобилни устройства и мини компютри MeeGo 1.1. е операционна система за миникомпютри и мобилни устройства (не само телефони, а и едни малко по-различни). Още през февруари тази година, бе показана на Mobile World Congress, но на пазара е от скоро. Системата е компилация от Linux 2.6.35 ядро, сървър X.org 1.9.0 (опааааа, пак опряхме до Vilas-I), приложения за Netbook UX 1.1, компоненти за автомобилна навигация и развлечение In-Vehicle Infotainment (IVI) UX 1.1 и естествено Handset UX 1.1 (че къде без него). Може да си изтеглите каквото ви харесва от тук: http://meego.com/downloads Забележка: Нас лично много ни забавляват анимираните герои. С най-добри пожелания Павел и Георги Герасимов (малко повече Павел и 30% Георги) P.S. Колеги, важно е да се прави разлика между корпоративна разработка и такава за PC. Различията са смазващи. Има много свободни пазарни ниши и силно се надяваме най-сетне бългатрските програмисти да се заемат сериозно с разработката им. Държавата отдавна е обърнала гръб на развитието на IT. Много се говори, но на практика не само, че няма подкрепа, а дори напротив. Ако не си помогнем сами няма кой да ни помогне.
  5. Здравейте, Да. За C# сте абсолютно прав. Грешката е моя. Просто бързо изписване. Сега за програмите. Преди две години Microsoft стартираха програмите Microsoft Website Spark и Biz Spark. Лично аз се регистрирах през московския им офис. В България официална информация по темата бе публикувана три седмици след като първия етап на програмата приключи. Не знам откъде е тази неприязън към Microsoft тук. Само за сравнение. В град Ярославл (близо до Mосква) за Microsoft работят над няколко хиляди (не е грешка) независими разработчици. Най-забавни са web-минарите, които редовно се организират. На тях колегите се събират в някое кафе и веселбата е безкрайна. Тук има подобни събирания на Silverlight обществото. Доколкото знам никой не е поискал на никого и лев за ползваната зала и лекционно оборудване. За съжаление успях да присъствам само на една от сбирките, но мога убедено да твърдя, че това е прекрасна форма за обмен на знания и опит при това напълно безплатна. Предполагам, че колегите от Телерик могат да предоставят по-изчерпателна информация. Подобни програми имат и Novell и IBM. Ако не греша те са отворени. Ето и официалните адреси на две от програмите на Microsoft: http://www.microsoft.com/bizspark/ http://www.microsoft.com/web/websitespark/ За Novell: https://secure-www.novell.com/center/ICSLogin/?"https://secure-www.novell.com/center/regadmin/jsps/home_app.jsp" Има и за ИБМ и за ORACLE, но просто адресите не са ми под ръка. Съществуват много програми. Просто трябва да се четат информационните бюлетини. Хората са си написали всичко и не съм забелязал нещо да крият. КАКВО ОБАЧЕ БИ СЛЕДВАЛО ДА ЗНАЕТЕ? Всяка програма има своя специфика. Участието в някоя от автоматично може да Ви създаде проблем с европейските субсидиращи организации (ако работите по 6-та или 7-ма рамкова програма). Аз лично предпочитам Microsoft и IBM (така и не схванах как точно се конкурират, като интересите им са в доста различни сфери, а и често взаимно се допълват). При тези програми Ви се предоставя възможност да се развивате. ВАЖНО ОБАЧЕ Е ДА ПРАВИТЕ СВОЙ СОФТУЕР! Хората подкрепят тези, които са креативни. Нищо, че няма да е красив, перфектен и пр.. Въпросът е да е ВАШ продукт. Ако работите Ви се предоставя шанс. Не знам какво е да се работи по поръчка за някого. Нашата политика е да изработваме софтуер, който е наш. Ние сме собственици на лиценза и го предоставяме на организации, които го дистрибутират. Разликата е огромна. Ние решаваме какво и как. Ако на някого не му харесва, това, което предлагаме има и други. Е, вярно, че се налага да работим здраво и да цепим стотинката, но ... ние сме от Севлиево, а тук сме по-големи скрънзи и от Габровци. Що се отнася до цените на хостинг пакетите, стандартните са около 7 лева на месец без ДДС. Цените са достъпни и ги има навсякъде в мрежата. Вижте какво предлагат например infodatacenter.com. Там може направо да си наемете виртуален сървър или виртуален компютър и да си тествате каквото ви харесва при това на съвсем достъпни цени. Звъннете им един телефон и се разберете. Момчетата са точни. А сега за протокола. Аз не съм някакъв изявен експерт. Имам някои и друг успешен проект, но имам много да уча. Не приемайте мнението ми като миродавно. Просто споделям неща, които са "личен опит". С най-добри пожелания Г.Т.Герасимов P.S. Само да добавя, че сте изключително прав и за критериите за избор на програмен език. Формулировката е изключително прецизна. Ако ми позволите ще Ви цитирам при първа възможност. Още веднъж Ви пожелавам успешен ден.
  6. Здравейте, Ако ми позволите искам да Ви предложа една интересна алтернатива при избора на език за програмиране. Ако твърдо държите да работите на C, може да се включите в някоя от програмите на Microsoft за разработчици. Получавате лицензи за сървър, MS SQL, Visual Studio и още куп безплатни благини. Цялото удоволствие струва 100 USD за три години. Това са около 50 лева на година, което е по-малко от хостинг пакет в България. Освен това ще може да ползвате няколко много силни партньорски мрежи. Друг вариант е подобна програма на IBM или Novell (в момента има две активни такива). Ако обаче основате е била Delphi, препоръчвам ви да не бягате от езика. Веднага ще се аргументирам. В Delphi може да напишете нещо от сорта: ConsoleMemo.Lines.Append(format('Host %s reports destination network unreachable.',[iCMP.ReplyStatus.FromIpAddress])); За същото в C, C+++, C# ще се наложи да се поизпотите сериозно. Четох внимателно въпросите, които поставяте. Разбирам, че проектът не е предназначен за България (а дори да е, това не е толкова важно). Ако тествате при едновременно работещи 1000 потребители е едно. Ако обаче се наложи да тествате при 50000, 100000 тогава ще се появят други въпроси. Подобни тестове в България няма как да бъдат извършени. Сега да приемем, че се наложи да "разпределите" базата с данни на няколко отдалечени сървъра. Макар това предположение да е чисто хипотетично то може да се случи. Да кажем единият сървър е в София, втори във Варна, а трети в Русе. Пускате заявка, която трябва да "събере" информация от трите и да ги обедини в общ report. Тук сме в една часова зона. В САЩ са в няколко часови зони. Както виждате има въпроси, които не "стоят" пред българските разработчици. Те са като подводни камъни, но са си там. На теория всичко е лесно. Синхронизация, обединение и пр. и пр.. Практиката обаче е много жесток учител. Какво мога да Ви посъветвам? Изберете Lazarus като платформа за програмиране. Разбирам, че бюджета ви е силно ограничен (нещо нормално). Lazarus e безплатен и е мощна среда за разработка. Няма да се налагате да преобразувате код. Ето малък пример: {$IFDEF Linux} // Ако операционната система е Linux какви библиотеки ще ползваме .... {$ELSE} // Ако е Windows ... и т.н. {$ENDIF} Задаването на опции за компилатора ще ви спести много от безценното време за разработка. Има и друг важен момент. Снощи дълго време ми убягваше, но днес си спомних за него. Успях да открия цитата и веднага Ви го изпращам, защото е много, ама много важен. ВАЖЕН ЦИТАТ: " .... В Interbase, до версия 6.01, може да създавате "генератори" до момента, в който общото им количество не надхвърли 32767 (много важно число). Kакво ще се случи когато надхвърлите тази стойност зависи само и единствено от използваната версия на СУБД. InterBase 6 (например) ще генерира грешка от вида: invalid block type, тъй като получените стойности надхвърлят паметта, заемана от странницата и резервирана от генератора. При други версии грешките ще имат друг характер. Това, което може да ви създаде сериозни проблеми е, че при други версии НЯМА ДА СЕ ПОЛУЧИ ГРЕШКА, А МЪЛЧАЛИВО РАЗРУШАВАНЕ НА ОБЛАСТ ОТ БАЗАТА ДАННИ, ЗА КОЕТО НАЙ-МАЛКО ПРЕДПОЛАГАТЕ." Това е. Не е страшно, когато знаем, че имаме грешка. Страшно е ако системата работи, няма грешка, но ... нещо вътре не е както трябва. Като цяло има неща, с които трябва доста да се внимава. Не, че е невъзможно да се избегнат, но ако имате ясно формулирани срокове може да закъснеете, а това ще доведе до неустойки и затруднения (тук в мен заговори администратора и ръководителя). Павел може да ви даде много детайлни разяснения по темата, но в момента е силно ангажиран, за което моля да бъде извинен. Така, че ако питате мен стремете се да се придържате колкото е възможно по-близо до първоизточника. При Delphi нещата са малко по-сложни. Може да ползвате Turbo Delphi. Лицензът е за 30 години и е free. Проблемът при Delphi e ... цената. Професионалните версии на продукта са около 4000 USD, но получавате три много важни продукта и пълен достъп до една "различна" световна мрежа, която ... Най-простичко казано там е като пещерата на Али Баба за програмиста. Ако наистина ползвате "външно" финансиране помолете за 30% авансово заплащане. При договор от подобен мащаб (освен ако не сте freelancer) парите ще са достатъчни за закупуване нужните лицензи. Няма да имате проблем от страна на САЩ, но тук и в ЕС ще имате доста сериозни главоболия (най-малко ще ви спретнат жестока данъчна ревизия). Но и тук има решение. България има сключени договори за избягване на двойното данъчно облагане. Ползата от това е огромна. Не се притеснявайте. Ще се справите. Ще помагам с каквото мога в рамките на възможностите си. Все пак не съм експерт в базите данни. С най-добри пожелания Г.Т.Герасимов
  7. Ако се вярва на написаното съхранените масиви не допускат процедури, но ... Да видим какво може да измислим по въпроса ... Ето два примера, които биха могли да влязат в употреба. Руснаците имат доста силни експерти в SQL. МЕТОД I EXECUTE BLOCK (IDS VARCHAR(32000) = ?IDS) RETURNS (ID INTEGER) AS BEGIN FOR SELECT "Id" FROM "RssFeedItems" WHERE :IDS CONTAINING '~'||"Id"||'~' INTO :ID DO SUSPEND; END МЕТОД II EXECUTE BLOCK (IDS VARCHAR(32000) = ?IDS) RETURNS (ID INTEGER) AS DECLARE I INTEGER = 1; DECLARE J INTEGER = 1; BEGIN WHILE (I <= CHAR_LENGTH(IDS)) DO BEGIN IF (',' = SUBSTRING(IDS FROM I FOR 1)) THEN BEGIN ID = SUBSTRING(IDS FROM J FOR I - J); FOR SELECT "Id" FROM "RssFeedItems" WHERE "Id" = :ID INTO :ID DO SUSPEND; I = I + 1; J = I; END I = I + 1; END END Мдааааа ... В този ред на мисли .... Ако сте решили да вкарвате да кажем Java обект в базата трябва да не забравяте, че обекта трябва да бъде сериализируем. Най-грубо създавате си масив от байтове, който отговаря на това изискване и вкарвате масива в базата данни. Нещо от сорта: // -----------------------------------------------------------------// // // Ако сме решили да вкарваме Java обект във Firebird база данни // // ---------------------------------------------------------------- // SomeObject o = new SomeObject(); ByteArrayOutputStream bout = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(bout); out.writeObject(o); pst.setBytes(1,bout.toByteArray()); pst.execute(); Преди време имаше бурна дискусия по темата и съм съхранил примера. Може да се окаже полезен за нещо. Мисля, че няма нужда от допълнителни коментари към кода, но ако се налага ще ги добавя. Хубаво е, че са възможни различни интерпретации ... Има и едно мнение, което ще си позволя да цитирам: " ... Драйверът на Firebird SQL-1.5.5JDK 1.4 - JDBC се нарича JayBird. Прието е setObject да се използва за да не пишем неща от рода на: if( o instanceof String) setString.. else if( o instanceof Integer) setInt(... Правилният подход е да се ползва InputStream и setBlob. Най-правилно обаче е да не се съхраняват обекти в BLOB полетата, а да се използват mapping обекти. ... " Много интересна тема. Това вече започва да прилича на дискусия. Кой точно вариант да се избере? Това вече е изкуство. С най-добри пожелания Г.Т.Герасимов P.S. Кодът не е красиво подреден, за което се извинявам. Притеснявам се, че подходът при SQL, C++ и Delphi се различава в нюансите, а там понякога са най-важните моменти. Дано информацията ви бъде от полза.
  8. Здравейте, Веднага ви отговарям. Предполагам, че визирате Firebird SQL? Да си призная, имам слабост към всичко свързано с Borland, Embarcadero и естествено ... Delphi. Но на темата: 1. При създаването на тази СУБД e залегнала идеята за Atomicity, Consistency, Isolation and Durability. Това е повече от показателно за това, какво имаме като ядро. 2. Тук има нещо, което се нарича PSQL (процедурен SQL). Исключително силен иснструмент за разработка. 3. Добавете към това и UDF (User Defined Function). Такива "външни" функции може да пишете на какъвто език пожелаете (за да няма кавги кой език за програмиране е по-добър) и ги включвате към сървъра като DLL/SO. Направо променяте сървъра според собствени си вкус. 4. Можете едновременно да обработвате OLTP и OLAP заявки. Ако не греша това се наричаше "версионна архитектура". 5. Firebird работи в средата на 32 и/или 64-разрядни версии на Windows, Linux, MacOS, HP-UX, FreeBSD, IBM Server и каквото се сетите. Най-общо всичко, изградено върху апаратни платформи като x86, x64, PowerPC, Sparc и т.н.. 6. Преноса на базите данни от една към друга операционна система става ... с копиране. Просто е като 2+2. А сега най-хубавото от хубавините: Firebird се разпространява с IPL (InterBase Public License) и IDPL (Initial Developer’s Public License) лицензи. Безплатен дори за комерсиални приложения. Найс, а? Сега конкретно за Linux. Бъдете спокойни. Пробвал съм с MDB (Multimedia DataBase). При размер на базата над 1,5 TByte (един и половина тера байта) работеше като часовник. За разлика от ORACLE няма да имате проблеми с BLOB полетата (личен опит). Ако работите за Русия или друга страна в ОНД е нужно да се съобразите с кодовите таблици. Специално за Linux Ви препоръчввм следния адрес: http://www.cl.cam.ac.uk/~mgk25/unicode.html Полезен е, особенно ако ви се налага да извършвате пренос от други СУБД във Firebird. Не забравяйте, че символните низове в UNICODE заемат повече място, а и имат два начина за сортировка (бинарен и азбучен). Това е важно ако работите с CLOB полета. СЕГА ЗА "ДИАЛЕКТИТЕ" ... Когато клиенската част изпраща "заявка" към сървъра с данни, може да се ползват два диалекта. Ако ползвате т.н. "Диалект 1", сървърът ще ви изпраща 32 битови целочислени стойности, ако и вътре в него те да са 64-битови. Това се прави с цел избягване на "зацикляне". Ако ползвате "Диалект 3" ще си комуникирате със 64 битови стойности. И в двата случая няма да имате проблем. Важно е да разберете, че това е въпрос от страна на "клиента", а не от страна на "сървъра". На сървъра му е все тая, клиента какви ще ги дроби. Той си е умничък и се справя с всякакви ситуации. Ако и други конкретни въпроси, може да ги зададете. Ще видим с какво мога да ви бъда полезен. Поздравления за избора на Firebird. Пак повтарям не се притеснявайте. В Linux работи прекрасно, както и във всяка друга ОС. С най-добри пожелания Г.Т.Герасимов (дърт пергишин с недостатък в характера) P.S. Нямате проблем с версията. Тя не е определяща. Важно е как е написана заявката, а ако е външно приложение как осъществявате връзката (например при ADO има един специфичен нюанс). Само да добавя нещо важно: Ако ползвате "Диалект 3" в някой от използваните генератори имате целочислена променлива (тип INTEGER), всичко ще е наред, ако стойностите са в 32-битовия диапазон. Ако обаче "прескочите гранницата" ще се получи грешка (препълване). "Диалект 3" е много стриктен. Най-важното, което трябва да знаете е, че генераторите съхраняват на сървъра всички стойности в 64-bita, без значение коя версия на Firebird ползвате. Разликата е в това, че в единия случай ви се връща директно 64 bit число, а в другия (ако сме работили както трябва) числото може да се разбие на две по 32 bit (както на времето "старши" и "младши"). За незапознатите: Генераторът е целочислен брояч (thread-safe), който се намира вътре в СУБД Firebird. Ако питате мен обаче е по-добре да ползвате SEQUENCE (последователност). Абсолютно същото е, но проблемите ще са ви по-малко, ако започвате от нула. Ето как се прави: CREATE SEQUENCE NewSeq; Само не се опитвайте да ръчкате директно в RDB$GENERATORS. На системните таблици не им допада идеята за директен достъп. Ако ще го правите ползвайте SELECT.
  9. Да. Linux ползва много от т.н. "submarine patent". Това е безпорен факт. Само не ми казвайте, че никога не сте чували за патент U.S. Patent 4,464,650 (U.S. Patent 4,464,650). Така де. Сигурно Linux, никога, ама съвсем никога не е ползвал този патент, че и още стотина други (аз знам за три на Nintendo, които мога да приема за спорни, ама няма да се заяждам за дреболии). Приемам, че в Русия (а и в България) законът забранява да се патентова софтуер, но ще ми е много интересно, ако решите да продавате софтуер да кажем в някоя държава в Латинска Америка (примерно) до къде ще стигнете. Повярвайте, че ще получите доста "забавни" писма от там, откъдето най-малко сте очаквали. Обещавам да публикувам при първа възможност писмо от мои колеги от Канада. Те са разработчици с многогодишна практика и имат твърде горчив опит със "свободния" и "безплатен" Linux. Моят опит се свежда само до някакви си 27 000 EURO (двадесет и седем хиляди евро) и няколкочасови разпити на не до там приятно място. Бе ... друго си е Linux ... стига да не се занимаваш със системи работещи в реално време (Microsoft не желаят да имат никакво отношение към подобни разработки и това е изрично записано в лицензионните им договори. Онази част с дребния шрифт най-долу). Като сте толкова ербап, я вземете, че дайте линк, откъдето да си дръпна FLV филтър (примерно), ама да е законно и да не плащам като разработчик. Не като потребител, а като разработчик. Все ми е тая дали ще е за Linux, Mac OS или нещо друго. А, да ... И да е работещ, и ако може да е придружен с официален документ, че имам право да го тиражирам в МОЯ си софтуер, а не в нечий друг. Ама я по-добре ми дайте един Linux, дето да мери времезакъсненията така както искам. Ама да е безплатен, че другото е доста соленко. И да може да го пусна в една Германия, например. Имам там някакви познати от DMG, дет много ще се зарадват ако им предложим подобно нещо. Естествено без пари. Ние сме ларж. Не сме пинтии. Хак им на гадните капиталисти. Вие сте експертите по "безплатното". От мен искат да си плащам, за да работя. С уважение Г.Т.Герасимов (дърт пергишин със собствено мнение, базирано на житейски опит) P.S. Червената шапчица (де юре) е собственост на IBM. Novell също имат пръст в тази работа, но като част от едно сдружение. Novell си имат доста патенти и неща като NetWare 6.0, Border Manager и пр.. IBM си има Сферата и Джаза (да не се бъркат с известни заведения във В.Търново). А че Linux е UNIX e общоизвестно. Тук две мнения няма. По малко е известно, че графичният интерфейс е T.E.G.L. в най-чист вид. Ама това е дълга тема. Старостта си има предимстваааааа ...
  10. Извън темата. Не знам защо в България някои си мислят, че между фирми като ORACLE, IBM, Microsoft, Novell и др. съществуват конфликти. Още по абсурдна е тезата за "безплатния софтуер". Ако познавахте дейността на Mozilla нямаше как да не знаете, че това, което пускат безплатно е едва 10% от техните инструменти за работа в internet. Цените на сериозния им софтуер варират от 35,95 USD до 7100 USD за лиценз (това е за един потребител). Друг момент е, че след като ORACLE закупиха Sun много от нещата се промениха. Ето една новина директно от пощенската ми кутия (за достоверност): * * * Are you running MySQL in either a cross-platform or Windows only environment? Get the Guide: A Guide to MySQL for Microsoft Windows The world’s most popular open source database just got better on Windows! MySQL 5.5 Release Candidate benchmarks recently presented at Oracle OpenWorld show the following impressive performance & scalability improvements on Windows: 1561% Performance Gains over MySQL 5.1 for Read/Write Operations 538% Performance Gains over MySQL 5.1 for Read Only Operations With MySQL on Windows you can: Dramatically Lower your TCO, while relying on 24/7 support worldwide delivered by Oracle’s MySQL experts Quickly Deploy and Scale new Applications, leveraging a database renowned for its ease of use and administration Have the flexibility to deploy applications on different platforms, choosing Linux / LAMP, or one of the 20+ operating systems MySQL runs on, for specific applications Learn More and Get Going with MySQL 5.5 on Windows: Download MySQL 5.5 Release Candidate Now! Get our Free Whitepapers A Guide to MySQL for Microsoft Windows MySQL Workbench: A Data Modeling Guide for Developers and DBAs Contact your MySQL sales representative for more information online or at the number for your region below: * USA/Canada - Toll Free: +1-866-221-0634 * USA - From abroad: +1-208-338-8100 *Additional phone numbers for EMEA, Latin America and APAC Regards, The MySQL Team at Oracle * * * Както сами може да се убедите, хората са оставили и телефони. Ако желаете може да им се обадите и да ги поразпитате. Любезни са и предоставят изчерпателна информация. Ще останете безкрайно учудени, когато разберете, колко от "безпорните истини", които масово битуват в българския IT-фолклор са абсолютна лъжа. Работата на инженерите е да решават конкретни задачи или да учатват в създаването на краен продукт. Едно е да говориш, съвсем друго е крайната реализация. За да иам крайна реализация се изискват добри познания и натрупан практически опит (рутина). Без тях няма резултат. Дори лошият резултат може да даде полезна информация. Лошо е, че в България не се изслушваме, не четем внимателно и най-вече не задаваме правилните въпроси. Все пак вярвам, че има надежда това да се оправи някой ден. С уважение Г.Т.Герасимов P.S. България има трима международно признати блогъри в IT-бранша. Двама от тях пишат за .NET. Имената им са цитирани многократно по Canal-9. Това е повече от признание. И една новина за всички почитатели на Linux: MeeGo официално е факт. Приятна платформа, която ще се ползва в автомобили, мобилни комуникации и пр.. Повече може да прочетете тук; http://meego.com/ Конфликти няма. Има само и единствено неразбиране на основополагащи принципи.
  11. Като се започне от системите за криптиране, премине се през конзолните команди и се приключи със спецификата на използваните видеостандарти. И дума не съм споменал за работата с графичните формати, където също има доста забавни различия ... Колеги, в Япония се ползва 5G и за много японци това е нещо отдавна изживяло времето си. Това обаче не пречи на едни други японци да не са чували за клетъчен телефон. .NET се използва при принтерите (най-вече модели на HP за двустранен печат), при мобилни терминали (това са промишлени системи и логистика), при WebSnap системите и т.н.. Между впрочем Linux използва патент на Microsoft за графичния си интерфейс. Това по никакъв начин не го компрометира като ОС, дори напротив. Ако проследите постовете ми няма как да не сте забелязали, че Vilas е по-близък като логика до UNIX и Linux, макар за Европа да е достъпен само за Windows. Версиите за Linux са ембаргови, защото могат да бъдат използвани за ... хмм, да кажем доста весели цели. С уважение Г.Т.Герасимов P.S. Нямате представа какво е да се продава софтуер легално. Хората са създали правила и те са облечени в законова форма. Google Имат екип от над 300 висококвалифицирани адвокати, но не пожелавам на никой да се среща с тях. Мога да ви представя преписка с юридическият отдел на MU (Manchester United) за да видите какво означава "да си вкараш таралеж в гащите". Забравете глупостите за "безплатен софтуер" или "отворен код". След поредният четири часов разпит ще проклинате всички митове и легенди в IT-бранша. В заключение ще цитирам Мо Хейдър: "Невежеството и злото са две различни неща." Много мъдра мисъл.
  12. Здравейте, За съжаление твърде късно видях темата. Поздравявам колегите от "Телерик" за тяхното начинание. Хубаво е, че има такъв курс. Налага се да отбележа няколко важни момента. 1. Това не е първата подобна проява. Имам прекрасни впечатления от работата на българското Silverlight общество и подбора на лекционен материал. Впечатленията ми са лични. Там "Телерик" също имат сериозно присъствие и не са поискали и стотинка от никого. 2. Колегите са написали, че няма обвързващи условия. Ако не греша през последните години фрилансерите не са някаква екзотика, а са се превърнали в нещо обичайно. Мисля, че курсът е ориентиран по-скоро към тях. 3. .NET е не просто платформа, а цялостна концепция. Това научихме когато ни бе обяснено при какви условия ще можем да създаваме софтуер за Appple. Това важи и за NetWare, IBM Server, UNIX, Linux и пр.. Искам дебело да подчертая, че Linux, който се ползва в ЕС и Азия, няма нищо общо с Linux за САЩ и Канада. Наречете го горчив опит. .NET в неговия пълноценен вид е много тясно обвързан с UNIX, Linux, Apple OS и една доста необичайна за нас концепция, от която научихме само, че "отворен код" има само при определени условия и който не ги спазва се запознава с едни доста приятни юристи с не до там приятни намерения. 4. Повечето учебни материали за C# са напълно безплатни и общодостъпни. Правилата на Biz Spark и Web Spark са железни и доколкото знем не са променяни. Това важи и за аналогичните програми на Novell и IBM. Между впрочем двете последни са ориентирани към разработчици, които създават продукти за Linux. Мисля, че "Телерик" са избрали най-доброто решение за подбор на сътрудници. Много по-евтино е от услугите на консултанска агенция, а е и много по надеждно. Софтуерното инженерство е нещо доста по-сложно като понятие. Идеята, че теорията, методологиията и инструментариума са отделни неща битуваше към края на 80-те години на миналия век. Това звучи много несериозно и да си призная е по скоро-тенденциозна формулировка, изведена от контекста на това, което е написал Кнут.
  13. Доколкото рабрах от Вас се изисква да разработите програма на C++. Посочения от Вас продукт е "интегрирана работна среда". Ако ползвате, цитирам: "файлове" е нужно да се ориентирате към MIDAS (по настоящем Data Snap) технология. Там може да ползвате XML файлове като база данни и да оперирате с тях. Ето малко статии по темата на български език (другите са на японски и корейски): XML документи Бази от данни Изграждане на трислойни приложения с MIDAS Методи за представяне на лекарствена и рецептурна информация. Преди да Ви укажа конкретно съдействие имам няколко въпроса: Кой точно Ви е задал тази "задача по информатика"? Имате ли представа, че написаното от вас е техническо задание за програма, чиято разработка струва няколко милиона в конвертируема валута (за справка може да се обърнете към фирмата от гр.Пловдив спечелилата проект по Седма рамкова програма на ЕС). Имате ли предства за т.н. "международни класификатори на заболяванията"? Там има кодове, които са строго регламентирани. Това важи и за рецептурната и лекарствени информации. Студент ли сте (съдя по възрастта - 21 години)? Наистина ли нямате представа какво искате? Чували ли сте за "4chan" (на японски се нарича "яцуба" или "йоцуба" - четири листа)? Не се сърдете, но написаното е типично за представител на яцуба поколението, а подобно поведение не бих могъл да толерирам. С уважение Георги Герасимов P.S. Как да тълкувам изискването: "Програмата трябва да е с меню"? Това да се разбира като "итерактивен интерфейс" или какво? Що се отнася до англоезичния "имиджборд" (каква дума само) той е бледо подобие на японскоезичния futaba channel.
  14. Здравейте г-н Хаджиев, С удоволствие прочетох всичко написано по темата. Ако ми позволите бих добавил малко информация, която е по-скоро любопитна. Подредбата на симвилите върху клавишите не е случайна. Причината символите да са разположени точно по този начин се крие в механизма на пишештата машина. Ако си спомняте те имаха "рамена" с буква на края. При много бързо писане, механизма блокираше, тъй като две съседни звена се притискаха плътно едно в друго. Това пораждаше големи проблеми и отстраняването си беше доста мръсна операция (лентите бяха текстилни и по пръстите оставаха доста неприятни петна). Подребата цели да забави и усложни процеса на въвеждане на информацията, а не да го ускори и облекчи. Друг момент е, че от гледна точка на фирмената сигурност е по-добре секретарките да не са запознати с това, което реално се случва (за справка трудовете на Терещенко). Подребата е върхово постижение на науката наричана ергономия. Въвеждането се забавя, а въвеждащият текста не е в състояние да осмисли съдържанието. Нещо подобно е и цифровата част на клавиатурата, намираща се в дясно. Тя е типична проява на "атавизъм". Съхранението и е наложено от IBM. Те са правели калкулатори и счетоводителите са свикнали да въвеждат бързо, използвайки само дясната си ръка. Запазването на тази част от клавиатурата е било с цел да не се загуби пазарен дял. Интересна е и клавиатурата "Стеноки", която е български патент и служи за стенографиране. Тя съще е върхово ергономично постижение в световен мащаб. Що се отнася до латинските букви и писането на "маймуница", то за всеки запознат с военните станции със средна и голяма мощност не е тайна, че този начин на писане е доста разпространен. Радиотелеграфистите държат изпит при който се изисква много висока скорост на въвеждане при използване на клавиатура, която е само с латински символи. Що се отнася до логаритмичната линийка ... Знам, че за някой би прозвучало необичайно, но освен цифрови методи има и графично интегриране и диференциране. Използва се в "Теория на механизмите и машините" и други области на науката. В момента тези методи се радват на нов живот. Това е просто един различен подход, който има свои предимства и недостатъци. Компютрите са помощно средство. С уважение Георги Тодоров Герасимов P.S. За мен "успял човек" е българският преводач и поет Валери Петров, композитора, музикант и художник Николай Иванов - ОМ, художникът и писател Венелин Вълканов, г-жа Биляна Хинова, д-р инж.Светла Матова и много други. Да си лекар е призвание, така както е призвание да си учител, строител или инженер. Съвременните политици са пример за това какви не би трябвало да бъдем. И няколко полезни адреса, свързани с ергономията и клавиатурите: http://osha.europa.eu/en Ергономия на работното място Уреди за ергономични изследвания
  15. Време е за следобедното кафе и поредната порция разсъждения. Ето още малко аргументи, касаещи избора на Delphi, като среда за разработка. Нямам представа, защо масово битува заблудата, че програмите написани на Delphi са с по-ниско бързодействие от тези на C, C++, C# или друг език. Въпреки, че многократно съм изисквал да ми бъдат представени конкретни доказателства, основаващи се на резултати от тестове, такива никога не съм получавал, а и няма как да получа. Истината е доста по-различна и сега ще анализираме показателя бързодействие, като се спрем на най-масово използваните елементи в игрите, а именно класовете. Защо това е нужно? При разработката на игри работим основно с обекти. Обектите се създават. Те имат живот. Те се развиват или биват унищожавани. Пример: Имаме герой, който ще ни представлява в един виртуален свят. Той притежава определени свойства: сила, издържливост, скорост и т.н. С нашия герой се случват определени събития: атакува враговете, правио магия, храни се, търси съкровища, язди кон, обучава се и пр.. Нашият герой е типичен пример за обект. Той притежава всички елементи на един обект (свойства, събития, параметри). Едно от често срещаните изисквания в съвременните игри е възможността да можем да правим героя такъв, какъвто ни харесва на нас. Да го обличаме с дрехи, които ни допадат. Да му задаваме едни или други качества. За едни той може да бъде по-бърз, но друг би пожелал да бъде по-силен или доруи по-умен (в редица игри това е голямо предимство). Всичко това има непосредствена връзка с обектите. Преди обаче да говорим за обекти ще поговорим за класове (class) и записи (records) Класовете, се появяват цяло деситилети по-късно от появата на записите и това е разбираемо, ако проследим развитието на езиците за програмиране и развититто на Обектно Ориентираното Програмиране (ООП). В Delphi може да ползвате както класове така и записи, защото на практика по своята същност става дума за едно и също нещо. Класовете са взаимствани от биологията, а записите от лингвистиката. И в двата случая е налице наследяване на предстви. Нека илюстрираме думите си с пример. Пример: Ние създаваме Герой. Нашият Герой има Име (Name). Името на героя е "Иван" (примерно). Името се състои от символи. Това се нарича символен низ. Забележка: В Delphi обаче се ползва още едно понятие и то е стринг (String), за да се прави разлика между низ, състоящ се от PChar или AnsiPChar символи. Последното може просто да пропуснете. Нашият герой има Сила (Power), която ще измерваме в интервал от 0 до 100. Сами виждате, че силата е цяло число с положителен знак. Ще прииемем, че силата е от целочислен тип или integer (цяло число със знак + или -). Освен сила, нашият герой има и Живот (Vitally). Живота на героят ни се измерва също в цели единици от 0 до 100. Когато живота на героя стане равен на нула, той ще бъде мъртъв. Тук пак имаме цяло число. До тук нашият живот има следните неща: Герой: 1. Име (Name) - String 2. Сила (Power) - Integer 3. Живот (Vitally) - Integer На практика ние създадохме запис "Герой", който съдържа три свойства. Най-общо групирахме различни неща (променливи) в един общ блок. Сега нека видим какво се случва когато ползваме запис (record) и когато ползваме клас (class). Целта ни е да изследваме, коя от двете структури би работила по-бързо. Преди да преминем към окончателните анализи обаче се налага да погледнем и една друга страна на тестовете - какво се случва след стартиране? Интересен въпрос. Съществуват разлчични форми на разпределение и използване на паметта на компютъра (забравете за операционни системи, тук говорим за основополагащи принципи). Темата е доста дълга и изисква една отделна дискусия, така, че за момента ще забравим за нея. Но не това е важно. Важно е, че една програма може да бъде пусната няколко пъти без да изключваме компютъра (нищо необичайно, нали). И тъй като всеки знае, че това е очевидна истина ние ще направим следното: За да бъде коректен теста ще извършим не еднократен запуск на програмата, а десет такива, като всеки път ще отчитаме времето в ms, необходимо за изпълнение на програмния код. Тук също се налага пояснение. Не отчитаме времето за компилация, а времето за извършване на операциите в изпълнимите програми, т.е. тези, които вече са компилирани (готови за ползване от крайния потребител). И така да видим какво се получава ... Пример 1: // Тук използваме клас type TTest = class A, B, C: Integer; end; var ArrT: Array [1 .. 1000000] Of TTest; begin for I:= low (ArrT) to high (ArrT) do begin ArrT:=TTest.Create; ArrT.A:= 2; ArrT.B:= 3; ArrT.C:= 4; end; end; При тестове на локална машина този код (при първо пускане) се изпълнява за средно 161 ms. При последващи пускания, времето се редуцира до 91 ms. Следващият кода обаче се изпълнява за 9 ms: begin C:=0; for I:= low(ArrT) to high(ArrT) do begin C:= C + ArrT.A + ArrT.B - ArrT.C; end; end; Ако пренапишем кода, но използваме масив, състоящ се от записи, ще се получи нещо подобно: // Тук вече използваме запис (record) type Rtest = record A, B, C: Integer; end; var ArrR: Array[1..1000000] of RTest; begin for I:= low(ArrR) to high(ArrR) do begin ArrR.A:= 2; ArrR.B:= 3; ArrR.C:= 5; end; end; На пръв поглед няма, кой знае каква разлика, но проверката на производителността показва, че за изпълнението на кода във втория случай при първи пуск са нужни 17 ms и 9 ms за всяко следващо изпълнение. Обхождането и задаването на стойност на всеки един от елементите на масива, отнема 6 ms. begin for I:= low(ArrR) to high(ArrR) do begin ArrR.A:= 2; ArrR.B:= 3; ArrR.C:= 5; end; end; С други думи, в конкретния случай кодът, при който ползваме записи се изпълнява десет пъти по-бързо, в сравнение с кода, ползващ класове. Мдааааа ... Ще премълча, че нормалната човешка реакция е от порядъка на 0,1 sek. След това на подсъзнателно ниво се появява леко раздразнение. Какво показват така направените разсъждения: Няма никакво значение какво ние си мислим. Истината може да се окаже твърде различна от представите, които имаме за нея. И за да бъда разбран правилно нека си послужа със следния пример: Пример: Запознавате се в сайт за запознанства с прекрасна, млада жена (мъж или каквото ви допада). Снимките са главозамайващи. Видът ви кара да виете като изгладняло куче. Интелект, разговори и закачки, до момента на реалната среща ... Тук настъпва ужасно разочарование. Жената-мечта (мъжът или каквото там се случи) е на годините на моята (не вашата, а моята) баба и с вид на кръстоска между Кощей Безсмъртни и шампион по сумо. Не стига това, ами и ви нарича "любими" ("любима" или каквото там се казва в подобен случай), а на вас ви идва да и наденете чувал на главата и да избягате в дън гори Тилилейски (доста приятно за обитаване място между впрочем). Е ... И с програмирането понякога е така. Съветът ми е никога да не приемате нещо за чиста монета, ако не сте го проверили. Що се отнася до това как трябва да се пише програма, то тук темата е доста забавна и няма нищо общо с компютрите. Такаааа ... Кафето е изпито. Беседата - проведена. Време е да продължим с рутинните задължения. Приятен ден.
  16. Здравейте, Ще има примери и то какви. Искам все пак да подчертая нещо много важно: Темата е за това как се разработват комерсиални игри, които носят печалби от няколко милиарда (не е грешка, а точен анализ). Преди много години, когато посетих за първи път в живота си Прага, бях очарован от този прекрасен град. Тогава нямах и най-малка представа, че живота ми ще бъде свързан с тесните улички на Мала Страна и красотата на Вацлавски намести. Бях млад и се наслаждавах на сладникавия вкус на бехеровката в някоя уютните малки кръчми в дъждовните нощи. Сега много от тях не съществуват. Бяха заменени от модерни бутици. Защо пиша всичко това ли? Защото ние българите много обичаме да казваме колко велики програмисти сме, но опре ли да покажем нещо "конвертируемо" не сме в състояние. Оутсорсинга е като проституцията - продаваш се на дребно, а и няма никакво достойнство в цялата работа. Чиста проба слугинаж и самочувствие без покритие, водещо само до упадък. Днес ще ви запозная с една група разработчици от Чехия (макар това да е относително, тъй като и Моравия е в гранниците на тази държава). Не знам колко от вас са чували за Bohemia Interactiv. Игрите, които те правят, не могат да бъдат направени с "едно кликване на мишката". Тук се използват воксели и много линейни уравнения, приложени за първи път в Stalker. За всичко това ще говорим на един по-късен етап, както и ще разгледаме различни аспекти на създаването на компютърните игри. В конкретния случай става дума за един малко познат в Българи жанр, а именно "тактически симулатор". Това е доста по-сложно от обикновенна стрелба от първо лице. В ARMA 2 се налага да решавате задачи, максимално близки до реалните. Забавно е, че във версията, която предстои да излезе на пазара на 29 юни 2010 година действието се развива в държава, наричана Такистан, като пейзажите силно наподобяват тези в Афганистан. Забавно е, че събитията в първата версия на играта се случват не къде да е, а в Чернорусия, която пък напомняше на Чечня. Но да се върнем на темата. Преди да бъдем в състояние да създадем игра, поне малко наподобяваща тази на чешките ни или американски колеги е нужно да се запознаем с основни елементи "от кухнята" на игрите. Ако сте чели внимателно, написаното, ние започнахме от DirectX. Посочихме, че друга технология е OpenGL. Разликата между двете е повече от определяща за избора на стратегия на разработка. В единия случай ползваме векторна, а в другия растерна графика. За да може да създаваме игри, които да бъдат конкурентни на този динамичен пазар е нужно да познаваме и двата подхода. Не си мислете, че това, което намирате тук и там в мрежата ще ви научи как точно се правят игри. Всичко се крие в малките трикове, и принципите на анимацията (класическа или кинематична), които се пазат ревниво. Друг момент са елементи като изкуственият интелект на играта. Проблемът там е, че технологиите са същите, като тези които се използват за управлението на високоточните ракети в съвременните войни и за това сме отделили специална тема. Играта, която Еньо е дал като пример е Flash-игра, която използва технологията на "спрайтовете". И ако си мислите, че "спрайт" е безалкохолна напитка, която прави много мехурчета, то не грешите. Наименованието "спрайт" идва именно от нея. Какво всъщност представляват спрайтовете? Спрайтовете са последователност от кадри. На практика те по нищо не се различават от кадрите върху една филмова лента и при тях се използват принципите на класическата анимация. Следващата тема (специално се посвещава на Еньо и Galahad) е за спрайтовете и как се използват. За да експериментирате обаче е нужно да разполагаме със среда за разработка. Както вече съм писал, аз лично предлагам да се научите да го правите на Delphi, ако се отнасяте сериозно към игрите. Като начало може да изтеглите Turbo Delphi от официалният им сайт: Turbo Delphi Следващата стъпка е да инсталирате DelphiX. Вижте и това, което Марко Канту е написал по темата в официалния си блог. Ако имате проблеми с Delphi, може да вземете от библиотеката, прекрасните книги на този удивителен човек. Всичко е на български език и има много добри примери и обяснения, които ще ви научат на невероятни неща. Официалният му блог се намира на адрес: (Marco's Tech World). Ще остането безкрайно изненадани, когато разберете, че на практика няма разлика между писането на програми (игри) за Windows, Linux, PS3, XBox, за различните модели на GSM или дори за iPad когато ползвате Delphi. Забавно е, а и спестява много проблеми, свързани с видеокарти, монитори, аудиосистеми, различни периферни устройства и т.н.. Там материалите са на английски, но ... имаме много добри статии на български, писани през годините за различни издания, които ще публикуваме. Все пак ако сега започвате и имате затруднения с инсталирането на Delphi X, най-добре е да го направите автоматично. Ето адреса, откъдето може да свалите програма, която ще добави всички нужни визуални компоненти към Turbo Delphi: Delphi X Instalation Защо предлагаме точно този подход? За да ви спестим редица сериозни юридически неприятности и много, много пари, които просто няма от къде да вземете. Дори при Linux се заплащат лицензионни такси (и то не малки), а за тестване и други необходими неща (като специални знаци, стикери и пр.), без които няма да можете да продадете и едно копие ще се наложи да се бръкнете доста дълбоко. Причината за това е ЕС и безумното законодателство, което бюрократите в Брюксел са приели. Все пак разработчиците и софтуерните гиганти еднакво мразят политиците и за това се подкрепяме и си помагаме с каквото можем. В този бранш няма "големи" и "малки". Има "кадърни" и "некадърни". Само от самите нас зависи, къде да бъдем. Парите сами идват, когато има какво да покажете. За голи обещания сериозни пари няма да получите, а и е нужно да се докажете и да положите усилия (в България точно тази част от работата най я мразят). Компании като Microsoft (виж BizSpark), IBM (виж Develop&deploy), Embarkadero (тези направо купиха cNet i Jedy) и др. са достатъчно предвидливи, за да ви дадат шанс да започнете. Те ви предоставят безплатно всичко необходимо за да работите. Дали ще го направите е друг въпрос. Това е начина да бъдете легални, почтенни и да ви допуснат до голямата игра, а там си струва да се играе, поварвайте. Всичко друго са пирамиди и интереси на алчни посредници, които само ще ограбят труда ви и след някоя година ще ви изхвърлят като ненужни вещи. Ние сме извървели много дълъг път и искренно желаем да помогнем. Ние не искаме нищо, а само да споделим опит и малкото знания, които са ни били предоставени. С нас са се отнесли човешки и ние се отнасяме човешки с вас. Ако обаче решите да ни плюете в лицето, то най-лесно е да предадем опита си на някой, който няма да го захвърли без преди това да помисли. Главата (освен за перископ на други наши органи) служи и за взимане на решения, когато се налага. Kогато сте готови ще започнем нашето забавно приключение в магическия свят на компютърните игри. Както казваше един мой колега: "По забавно от това да играеш на една игра е само това да я направиш ..." А историята на България може да даде основа на много интересни стратегически игри. Има над какво да помислим. Това е за сега. Обещавам да продължим по темата. С уважение Г.Т.Герасимов G-System Development Group P.S. Павел е на училище. Каквото и да ви казват големи пари се правят само и единствено с много, ама много учене и труд. Дори в наркобизнеса не печелят толкова, колкото се печели в IT-бранша (лични наблюдения), а и е конвертируем и с висока степен на принадена стойност (да ме прощават господата финансисти, аз имам малко по прагматични възгледи и не вярвам, че със селско стопанство и туризъм може да просперираме). Усмихвайте се и не прощавайте на глупоста и злобата. А преди години учехме чехите на програмиране. После доморасли "експерти" им се подиграваха на образователната система. Били се спрели на Delphi и го изучавали детайлно в средния курс. Горките чехи. Чак ми идва да се разплача от съжаление ... Друго си е да си "велик програмист" в държава, в която думата на ЕС е закон.
  17. Днес ще си позволим да излезем извън темата. Една от причините за това е приключилата в петък 23.04.2010 год. конференцуя "Software people 2010". Заедно с появата на т.н. "четвърта вълна" в IT все по-често ще говорим за ролята на "човешкия фактор". Та в този ред на мисли ето една информация, която би дала повод за размисъл на мнозина. В началото на месец март 2010 год. ръководството на Activision буквално изхвърли на улицата Джейсон Уест (Jason West) и Винс Зампела (Vince Zampella), които успешно ръководеха студиото Infinity Ward през последните години (няма как да не сте чували за Modern Warfare 2.В EA). Именно те донесоха милиарди пречалби на своите инвеститори. Какво се случи след това? Много от водещите разработчици на компанията подадоха оставки и напуснаха по собствено желание. За анализаторите си оставаше пълна загадка какво се случваше с Тод Алдерман (Todd Alderman) и Майки Маккандлиш (Mackey McCandlish), едни от най-великите аниматори на нашето съвремие - Марк Гризби (Mark Grisby) и Джон Пол Мезерли (John Paul Messerly), водещият ландшафтен художник Крис Черубини (Chris Cherubini), инженера по разработките Рейм Винсон (Rayme Vinson) и програмиста Джон Ширинг (Jon Shiring). Днес обаче тази загадка е разрешена. Ако не сте чували за Respawn няма да е зле да запоните това име. В момента на интернет странницата на компанията няма нищо, но това е разбираемо. На практика новата компания стартира своята дейност от началото на април 2010 година. Според официални публикации Respawn Entertainment ще започне да функционира от месец май. Имайки в предвид какво направи този екип до момента може само да предполагаме какво ни очаква. На практика това е пореден случай, в който алчни инвеститори заклаха кокошката, която снасяше златни яйца. За пореден път някои са забравили, че годината е 2010, а не 1980, но ... за това има една доста неприлична фраза, която не е редно да споменаваме на обществени места. Ние определено ще следим развитието на колегите, а и ще им помагаме с каквото можем. Все пак на всеки се случва да бъде наритан, когато дойде време за разпределяне на баницата, за която е положил немалко труд. Георги и Павел Герасимов P.S. Kакто нееднократно сме казвали: "Разработчици от всички страни ... забавлявайте се." След като не ви оценяват, просто направете по някой милиард за самите себе си. Парите няма да ви навредят съществено. А тези, които все още вярват в оутсорсинга ги забравете. Нямаме време да връщаме заблудените в правия път, а и не сме чак такива светци.
  18. " ... По принцип някои от задачите са си пълно обхождане и така могат да покрият производителността напълно." Напълно подкрепям това твърдение. Колегата XYZ е прав, че за научни цели този компютър е повече от необходим, особенно на сегашния етап (България се налага в области като фармация, нанотехнологии, обектно-релационно шифроване, хибридни технологии и др.). Има голяма разлика между персонален компютър, минимашина и суперкомпютър. Друг аспект са сервоконтролерите, хидравличните компютри, аналоговите интегрални схеми и пр.. Просто става дума за различни сфери на приложение. От 19 този месец всеки един, който пожелае може да поработи на един от най-мощните суперкомпютри в света. Това е безплатно и е част от една доста сериозна програма. Може да се включите след регистрация. Просто се поровете в мрежата. Друг интересен момент е какво се случва в света ... От 22 до 23 този месец в internet директно се транслират "откритите" доклади на Software People 2010. Много от тях са изключително интересни. Има какво да се научи, а и това, което вчера видях ме накара да онемея. Не мисля, че парите за суперкомпютър са похарчени напразно, дори считам, че инвестицията е твърде закъсняла.
  19. Здравейте, Имам въпрос, който би могъл да прозвучи абсурдно и нелепо, но е от изключителна важност. Нужен е органичен или неорганичен материал с голяма ударна жилавост и висока топлоустойчивост (до 2000 - две хиляди градуса Целзиеви). Не е задължително да се огъва, но е важно да може да се пробива и разкроява. Да не е токсичен (изключваме азбест или производни). Параметри като якост на опън, якост на огъване, твърдост и топлопроводност не са от значение. Да е устойчив на влага и киселини. Листовете са със следните размери: Ширина : до 1400 mm Дължина : до 2000 mm Дебелина: до 100 mm Предварително благодаря за всяка форма на съдействие. e-mail: office@g-92.com
  20. Здравейте, Бихме желали да зададем няколко въпроса, за които не сме убедени, че са напълно свързани с конкретната тема. От чисто математическа гледна точка въпросите са по-близки до тези за автоматично доказване на теореми. Най-общо нещата се свеждат до това дали ако имаме някаква теория, всяко предположение обвързано с теорията може да се разглежда като теорема доказваща или отхвърляща конкретната теория (и това ако не е рекурсивно мислене, здраве). Забележка: Приемаме аксиомите за частен случай на теоремите, при който доказването е лишено от смисъл, защото е очевидно (за нас, не за машината). Ако не грешим през 70-те Фишер, Рабин и Майер забелязват, че теореми които могат да бъдат решени по елементарен начин върху лист хартия са непосилни за изчислителните машини, поради огромният брой итерации (стъпки, изчислителни операции), които трябва да извършат за да ги докажат. И ето първия въпрос: Съществуват ли многочлен P(x) и детерминиран алгоритъм, който за не повече от p(n) на брой изчислителни операции за всяка произволно взета формула, но с n на брой набор от символи (за формулата) да провери дали формулата няма да доведе до безкрайно повторение на изчислителните процеси? От гледна точка на теорията на графите, комбинаториката, изчислителната математика, математическото програмиране и др. въпросът има точно и ясно решение. И така възниква вторият въпрос: Не е ли по-важно да се формулира една теория отколкото да се проверява до колко тя е вярна или не е? Какъв е характерът на генериране на конкретна теория, обвързана със заобикалящия ни свят? Интелекта е креативен и той генерира теории. Теориите са резултат от наблюдения на обективно съществуващи явления и процеси и последващи анализи. И стигаме до въпрос номер три: Как машината ще генерира теория и въз основа на какво? Няма ли теорията да се базира на субективния характер на въведената в машината информация? Ако отговорът на тези въпроси е "Да" то теоремата на Гьодел е в частично, а не в пълно противоречие, на силното направление. А ако е "Не"?
  21. Моля Ви пишете. Темата е невероятна и ще се радваме на дискусия. Ако ни позволите ще се включим с някой ред. С уважение Георги и Павел Герасимов P.S. Имаме запитвания по темата и от други колеги от екипа. Интересът е към алгоритмите за разпознаване на речта.
  22. II. DelphiX или правото на избор И така стигнахме до момента, в който колкото и да не желая ще се наложи да поговорим за избора на език за програмиране. Както вече упоменахме съществува два вида програмиране, а именно системно и приложно. Създаването на игри или програмирането на тяхното ядро (което занапред ще наричаме “game engine”) се отнася към приложното, а не към системното програмиране. Игрите са предимно пазарен продукт и като такъв те трябва да гарантират максимална печалба при минимум вложени средства за първоначална инвестиция. Когато работите по голям проект е от изключителна важност да документирате всичко извършено на всеки етап от проекта. Още по-важно е обаче да гарантирате, че това, което сте създали ще работи. Преди години се наложи да участваме в колектив, чиято задача беше да изготви примери към учебник по компютърна графика. Всички примери бяха написани на C++ и работеха прекрасно. Получихме добра оценка за своята работа, но един внимателен анализ ни доведе до твърде нелицеприятни изводи. В процеса на отпечатване бяха допуснати редица технически грешки, останали незабелязани за редакторите. Макар алгоритмите да бяха издържани във всяко едно отношение, самите програми не бяха достатъчно разбираеми за начинаещите програмисти въпреки коментарите към тях. Кодовете бяха написани с цел да впечатлят, а не да научат. При избора на език, на който да бъдат съставени базовите примерите, изхождахме от необходимостта да се демонстрират предимствата на обектно ориентираният модел (COM - Component Object Model) на програмиране, без да се налагат излишни и в редица случаи объркани пояснения. Важно за нас бе и да се избегне в максимална степен обвързаността с конкретна операционна система или набор от апаратни средства. Друг важен аргумент в избора на Delphi е и проведеното проучване на опита на водещи разработчици на компютърни игри. За наша изненада установихме, че за всеки един от тях бе важно какво получава крайния потребител и как то изглежда или звучи, а не с какви програмни средства е разработено. Предполагаме, че мнозина биха ни опонирали, застъпвайки тези, като тази за бързодействието при използване на един или друг компилатор (C++, C#, VB и др.). Подобни твърдения отдавна са лишени от каквото и да било основание. Целта ни е да анализираме различни подходи от чисто приложен характер. Това изисква да се придържаме към определена линия на изложение, доказала своята ефективност. Освен изграждане на добър стил Delphi формира и своеобразна дисциплина в мисленето, което може да се окаже изключително полезно, особенно ако сте решили да се занимавате професионално с програмиране. Мисля, че така изложените аргументи ще помогнат да бъдем разбрани правилно. И така след като сме приключили с избора на език за базовите примери е време да пристъпим към изучаването на DelphiX. Макар мнозина да приемат, че DelphiX е своеобразна надстройка на DirectX, на практика, това не е така. Всички компоненти в една или друга степен притежават относителна самостоятелност. Въпреки това в началото ще се придържаме стриктно към класическото определение, а всички допълнителни пояснения ще илюстрираме с примери. ОПРЕДЕЛЕНИЕ: DelphiX представлява набор от визуални компоненти, чиято задача е да позволят максимално лесно и удобно използване на цялата мощ на DirectX, при разработката на графични приложения. Основните компоненти в DelphiX са: DXDraw - Позволява бърз и удобен достъп до до повърхността на DirectDraw (всъщност това е просто DirectDraw) DXDib - Съхраняване на изображения в DIB (Device Independent Bitmap) DXImageList - Позволява съхраняване под формата на списък на DIB, JPG, BMP-файлове, което е безкрайно удобно при работа със спрайтове. Позволява също така зареждането на DIB, от диск по време на изпълнение на програмата DX3D - Direct3D компонент. Използва се основно при работа с тримерна графика. DXSound - Позволява възпроизвеждане на звукови файлове в wav формат DXWave - “Контейнер” за wav-файлове DXWaveList - Позволява съхраняване под формата на списък на серия от wav-файлове DXInput - Директен достъп до входните устройства (мишка, клавиатура, джойстик). Използва DirectInput DXPlay - Използва се основно за MyltiPlayer приложения. Позволява обмен между различни компютри при използване на стандартни, мрежови протоколи. DXSpriteEngine - Анимираща машина. Използва се основно при работа със спрайтове. DXTimer - Системен часовник DXPaintBox - Алтернатива на TImage но в DIB вариант В DelphiX съществуват както самостоятелни така и спомагателни компоненти. Например компонента DXSpriteEngine не може да бъде използвана самостоятелно, а само с DXDraw. Познаването на DelphiX ще ни помогне да усвоим един специфичен подход на програмиране. Това е важно когато пристъпим разглеждане на методологията за създаване на определени групи игри (стратегии в реално време, логически игри, игри от първо лице и др.). Забележка: Към момента изучаването на DelphiX е залегнало като основен предмет в редица престижни училища в Япония, САЩ, Европа, Русия и др.. За съжаление в България, поради наложени стериотипи (или неразбиране), това си остава една доста непопулярна тема.
  23. В този раздел мисля да пофоровим за това как се създават компютърни игри. Ще поговорим за "спрайтове", изометрия, псевдо и реална 3D и 4D анимация, за DirectX и OpenGL, за спецификата при създаване на gamе engine при използване на Delphi (RAD Studio), C# (Microsoft Visula Studio), Flash и др.. Ще поговорим за художници, 3D скенери, модели и manga. Към всяка статия ще има богат илюстрационен материал, както и конкретни примери. И така да започнем ... . . . ВМЕСТО УВОД I. DirectX – началото на всичко Едва ли мнозина ще си спомнят времето, когато съществуването на DirectX беше поставяно под въпрос. В онези години никой не предполагаше, че ще се стигне до следваща версия, а още по-малко, че фирмите производителки на видеокарти ще се надпреварват да гарантират хардуерна подръжка на на подобно творение. Малцина специалисти познаваха компонентите поддържащи доста ограничен набор от Win32 функции, известни като DX3.0 и Direct Input. Но дори тогава беше налице тенденция към платформена независимост защото едва ли някой може да бъде убеден в непреходната същност на поредната SDK. Ако на експертите вече им е станало досадно или ги е налегнала носталгия, могат да пропуснат следващите редове. Нека се опитаме да формулираме какво представлява DirectX. Най-общо това е набор от мултимедийни драйвери (не ги търсете в компютъра, все пак това са просто програми, написани от някой друг), които заобикаляйки стандартните функции на операционната система ни позволяват да работим директно с интерфейса (клавиатура, мишка, джойстик, монитор, звукова карта) като при това успяваме да използваме изцяло апаратните възможности, предоставени от производителя. Важно е да се знае, че съществува цял набор от Win32 сервизни приложения, които използват DirectX, като свое ядро. Или ако трябва да синтезираме казаното до тук то ще достигнем до следното ОПРЕДЕЛЕНИЕ DirectX е набор от мултимедийни драйвери на високо ниво. Важно е да се знае, че между DirectX и интерфейсът (видео или аудио-карта например) стоят и драйверите, които са написани от производителя. Най-общо последователността на взаимодействие изглежда така: DirectX се състои от няколко основни компоненти. Всяка една от тях обезпечава функционалност в определено направление както следва:  DirectX Graphics - 2D/3D графични изображения и анимация.  DirectShow – Поточно видео.  DirectInput – Управление на входните устройства (мишка, клавиатура, джойстик).  DirectSound и DirectMusic – Звук и звукови ефекти.  DirectPlay – Стандартен интерфейс за създаване на мрежови приложения на база различни мрежови протоколи и провайдери (провайдерите са тези, които доставят internet услуги до домашния ви компютър и често са безпричинно ругани за това, че се опитват да бъдат нормални хора)  DirectSetup – API чиято задача е да облекчи инсталирането на DirectX при крайния потребител Голяма част от функционалността на DirectX се основава на използването на обектно-ориентирания COM модел, който ни позволява достъп и управление на отделните обекти посредством стандартен интерфейс. Изхождайки от казаното следва, че интерфейсът представлява клас, съдържащ в себе си указател към функции, които ни позволяват да взаимодействаме с обектите. DirectX не е първият опит на Microsoft да превърне Windows в игрова платформа. Първият такъв опит се наричаше WinG API. Като цяло работеше основно с растерна графика и не успя да получи широко разпространение, макар с негова помощ да бяха създадени такива игри като първообраза на всички съвременни стратегии “Civilization”. Ако следваме някаква хронология то още през 1995 година след появата на пазара на Windows 95, Microsoft пускат първата Game SDK – което е и прототип на DirectX. През 1996 година се появява Microsoft Developers Kit и DerectX 2, като към функциите за обработка на растерна графика са добавени и такива за работа със звук, мрежови и управление на входни устройства. Но истинското развитие на платформата настъпва с появата (обърнете внимание отново през 1996 година) на DirectX 3. За първи път се заговаря за Direct3D. Не може да не подчертаем изключителната функционалност на продукта (за сведение всички функции са достъпни дори при NT 4.0). Петата версия се появява през 1998 година. Не се учудвайте. Четвърта версия няма. Обновена е функцията DirectInput или ако трябва да бъдем конкретни тя става напълно независима от функциите за управление на входа, на операционната система. През същата година се появява и шеста версия Direct3D (DirectX 6), която поддържа мултитекстури, stencil и w-buffer-и. В края на 1999 година се появява революционната DirectX 7 и настъпва златното време на компютърната графика. За първи път става възможно използването на T&L (апаратни трансформации и засветяване на обектите). Производителите на видеокарти приемат безусловно DirectX. С настъпването на 2000-та година на сцената се появява DirectX 8. Направена е поредната крачка към реалистичните изображения. DirectDraw прекратява своето съществуване. Новият продукт се нарича DirectX Graphics. Заедно с него се появяват и превърналите се в класика средства за разработка на софтуерни продукти на компанията “Pixar”. Следва версия 9 със всички предимства, които предлага. Какво все пак налага да отделяме толкова място на развитието на една технология? Преди всичко това е изконният стремеж на разработчиците да се абстрахират конкретен тип оборудване. Едва ли някой ще е готов да влага средства, усилия и време в разработка на игра, определен тип видео или звукова карта. Съществува ясна гранница между системното и приложно програмиране, за която си струва да поговорим. В първия случай става дума за разработчици на драйвери и съответстващите DDK (Driver Development Kit), а във втория – за тези, които пишат софтуер, използвайки вградените функции на DirectX SDK. Важно е първите никога да не забравят, че изискванията на COM стандарта повеляват да има приемственост между версиите, така, че всяка следваща да бъде в състояние да работи с програмите написани на предишната такава (след като веднъж е дефиниран COM интерфейсът не може да бъде променян по разбираеми причини). Ако съществува алтернатива на DirectX то това е само OpenGL, тъй като редица негови компоненти са напълно самостоятелни. Независимо от бурното развитие на OpenAL и DirectSound, към момента те си остават просто надстройка на действаща операционна система. Независимо от подобренията, направени в девета версия на DirectX в частта D3DX, обработката на 3D графика, отстъпва чувствително на тази на OpenGL, но нека не забравяме, че още от момента на създаването си DirectX е ориентирана към растерни, а не векторни изображения. Когато трябва да се направи избор между един или друг API компонент е нужно внимателно да се проучи неговата спесификация, както и възможностите за импортиране на DLL-библиотеките. Никога не забравяйте, че не винаги производителността е определяща. Към момента съществува ясно изразена тенденция при разработката на игри програмистите да използват DX интерфейс или OpenGL, без допълнителни библиотеки за работа с графичните изображения и устройствата за вход. Що се отнася обаче до мрежовите и звукови функции все още се отдава предпочитание на това, което е заложено в самата операционна система. Това се диктува от факта, че независимо какво се твърди DirectPlay си остава тънка надстройка над системните функции. Единственото, което би предизвикало някакъв интерес е стандартизацията при работа с библиотеките. Още повече, че някои от ярко изразените лидери, като Miles Sound System и безплатните (за некомерсиални цели) OGG и OpenAL, налагат свои изисквания. Когато се говори за видео не бива да се пренебрегва SMK/BNK формата, както и библиотеките за работа с него. Както сами може да се убедите, към момента не е предложена сериозна алтернатива за генериране на анимирани изображения и работа с растерна графика. От версия 9 на DirectX на разработчиците е предоставена възможност за работа с HLSL (High-Level Shader Language) – което е своеобразен език на високо ниво. Единствената алтернатива към момента е предложението на NVidia наречено Cg. Най-вероятно е езиковите платформи да продължат да съществуват успоредно във времето, подобно на D3D и OpenGL. Много по-интересно е завръщането в деветата версия към взаимодействието с GDI, а също така и на функциите StretchRect() и ColorFill(). Това ни навежда на мисълта за предстоящото възраждане на DirectDraw. Редица въпроси поставя и появата на MultiHead-функции, които позволяват извеждане на изображението на няколко отделни монитора (ако видеокартата е снабдена с няколко DAC преобразователя). Може би към момента използването на тази функция да е скъпо удоволствие, но в бъдеще, когато вероятно ще се наложи на мнозина да пишат софтуер за виртуална действителност, тези опции ще се превърнат в определящи при проектирането и изготвянето на цялостната стратегия на разработка на игри от ново поколение. Повече информация за DirectX: Microsoft DirectX - Официална странница
  24. ИЗ ИСТОРИЯТА НА САВРОМАТИТЕ Някой да знае кога е приключил матриархата? Приписва се на Мунчо Според древните легенди савроматите се явяват далечни потомци на амазонките. Ето как е станало това според непотвърдени източници ... Скитите са наричали амазонките "ойопата", което на елински е означавало "мъжеубийци" (от скитски "мъж" - ойор и за "убивам" - пата). Ако се вярва на журналистите от онова време след като опухали здраво амазонките в битката при Термодонт, елините качили на три кораба тези, които успели да заловят живи и отплували. Насред морето обаче те имали неблагоразумието да ги развържат, та да могат жените да отидат до тоалетна, в резултат на което амазонките се нахвърлили върху моряците и ги изклали до един. След като приключили с изблиците на емоционална неуравновесеност, те установили, че нито една от тях няма ни най-малко понятие от навигация, а що се отнася до платна и морски възли, то това определено е било доста по-различно ръкоделието. В крайна сметка, боговете се смилили над тях и след като морето и ветровете здраво ги полюшкали, в резулта на което редица се сдобили с мерки на съвременна манекенка (морската болест понякога е по-ефективна и от разделното хранене), то най-накрая корабите били запратени на брега на Меотийското езеро (днешно Азовско море) на едно място наречено Зъберите, в страната на свободните скити. След като слезли на твърда земя нашите девойки въобще не се чудили, а само пооправили прическите и се озърнали за най-близкия магазин. Както добре е известно обаче, по онова време системите за търговия на лизинг и безкасовите плащания не били особенно актуални, така че те се отдали на грабеж, като за начало си присвоили първата попаднала им пред очите конска черда и се отдали на безпаметно плячкосване. Скитите били доста неориентирани хорица (за справка някой си цар Дарий), а и както се знае не са гледали редовно новините на CNN, в резултат на което изпаднали в тотална дезориентация, относно характера на терористичните актове. Мислейки, че си имат работа с епилирани мъже, решили да заработят нещо, за да си платят куверта за гей клуба, те след усилено ръкомахане (в по-късни времена известно като "диспут") приели, че това повече не може да се търпи и най-накрая взели, та им дръпнали един як пердах. Да, ама като ги поразгледали отблизо, по липсата на някои задължителни атрибути и наличието на други разбрали характера на собственото си заблуждение. Събрали се старейшините им да поумуват и най-накрая, един от тях изрекъл следната велика фраза: "Тез жени не са нагласени как трябва, та от туй ще да им идат нервите, да знаете. Ами такова ... дайте там да видим как да я оправим тази работа. Аз съм вече на възраст и зорлям се преборвам с бабата, ама гледам внука, яко гони момите." Та решението било да не ги бият повече, освен при крайна необходимост, а да вземат та да им изпратят най-добрите мъже, та дано мирясат. Тактиката била проста - никакво влизане в битка. Единственото важно в случая било младежите да успеят да се доближат максимално близо до стана на войнствените харпии. И тъй младежите не чакали да ги подканят много, а усетили какво ще да последва от цялата тази работа се отправили да изпълнят задачата. То и девойките, като ги съзрели и разбрали, че тия са тръгнали с други намерения, а не да се бият не ги закачали, та да не увредят, някоя тяхна важна част. Та доближавали се те с всеки изминат ден и понеже нямало какво толкова да правят по цял ден или ловували или се отдавали на грабеж, което е нещо като пазаруване, но с тази разлика, че не плащаш сметката. Кога настанело пладне амазонките се пръскали на лов по единично или по две (тогава е нямало тоалетни). На скитите тази тактика допаднала и постепенно и те започнали да ловуват поединично. Да де, ама в резултат на тези прегрупирания един от младежите се доближил доста повече от нужното до една от девойките и тя вместо да се дърпа, взела, че му далада си получи своето. Сетне, понеже не можели да се разбират (на това сега му викат езикова бариера, а изучаването на английски в средния курс все още не е било основна дисциплина), тя му обяснила със знаци, че ако му е харесало на следващият ден може пак да се видят, ама няма да е зле да доведе някои свой другар, а тя щяла да се погрижи да дойде с приятелката си. Та като отишли на другия ден юнаците заварили две девойки срамежливо да пърхат с мигли и почти непорочно да се изчервяват. Като усетили другите каква е далаверата не се церемонили, а се заели да се прегрупират и чифтосват според нуждите, наклонностите и обективно създалата се ситуация. Та след като се събрали, възникнал въпросът с разбирателството и как да си обаждат, кой ще плаща сметките. За целта е трябвало някой да научи езика на другия. Те мъжете нали открай време са си захлупени, така и не успели да научат езика на амазонките (особенно невербалните жестове, като навиването на кичур коса около пръста), ама пък жените усвоили до най-малките подробности (в това число и онези фрази приписвани в миналото на каруцарите, а понастоящем на шофьорите) езика на по-силната, но и по-глупава половина на човечеството, ако и да говорели на ужасен диалект. Та като взели да се разбират младежите излезли с делово предложение, звучащо горе-долу така: "Вижте сега, то такова имаме там имоти и родители де. Е вярно и свекърва ... Ама .. Дай да се върнем при мама, че по-хубаво готви. И страшно ми се ядат кюфтенца." Да ама амазонките не били вчерашни и след като заели поза, станала в последствие известна под името "гръцка амфора" (което само иде да докаже влиянието на елинската култура) дали следният отговор: "А,а,а,а, няма да я бъде тая. Вие какво? Да не искате да седим по цял ден при талигите и да ви кърпим старите чорапи, а? Или отделно от мама и тате или никак. Или ние или те. А това за готвенето после ще го дискутираме." Скитите само се снишили и тихо, мирно и кротко събрали посудата и си останали при жените. Да ама жените все не мирясвали. "Вижте сега. То, че доста поокрадохме тука е ясно и вече като гледаме почти нищо не е останало. Ама така сте много близо до бащиното огнище и мнозина от вас през вечер, вместо да изпълняват мъжките си задължения, набикалят майките си за да похапнат. Така не може. Вдигаме си багажа и се преселваме отвър река Танаис (по настоящему Дон). А като ви се ядат кюфтенца ей ви на тигана." На скитете не им оставало друго освен кротко да се съгласят, защото боят с тиган по главата не е измислен в съвременния свят, а още по малко е резултат на феминизацията, както и феминизацията не е произлязла в следствие откриването на чорапогащника. Та след като прекосили Танаис и изминали три дни път от реката на изток, после три дни на север от Меотийското езеро, стигнали до място, което им се понравило и се установили там. Народът си нарекли "савромати" и езика който говорели е бил като този на скитите, но силно изкривен, тъй като навремето амазонките не го научили както трябва, така както и никога не се научили да правят кюфтета и малеби. Що се отнася до патардията с Дарий и тълкуванията на Гобрий, то това е друга история, на която ще отделим място в някои от следващите броеве. МНЕНИЕ НА КРИТИКАТА "Всяка истина, основаваща се на обективни обстоятелства ще бъде приета за лъжа." Основен постулат на доверието И после се питаме как са възникнали такива неща като модните списания, салоните за красота, марковата козметика, скъпите ресторанти, роклите с гол гръб, психоанализата и пазаруването с чужда кредитна карта. Някога мъжете воювали или тръгвали на далечни пътешествия за да избягат от жените. Сега това е немислимо. Дори да организираме междузвезден полет, то непременно ще се намери жена, която няма да миряса, докато не въведе ред на космическия кораб.
  25. Avatara

    Различния поглед

    Ако ми бъде позволено тук ще предложа поредици от статии, публикувани през различни периоди от време. Не гарантирам, че темите ще допаднат на всички, но това е начин да се съхрани малкото останало от един доста сериозен проект.

За нас

"Форум Наука" е онлайн и поддържа научни, исторически и любопитни дискусии с учени, експерти, любители, учители и ученици.

За своята близо двайсет годишна история "Форум Наука" се утвърди като мост между тези, които знаят и тези, които искат да знаят. Всеки ден тук влизат хиляди, които търсят своя отговор.  Форумът е богат да информация и безкрайни дискусии по различни въпроси.

Подкрепи съществуването на форумa - направи дарение:

Дари

 

 

За контакти:

×
×
  • Create New...