Latest Entries »

Вече мина месец от както се записах в Software University София (Софт Уни накратко) и реших да споделя моето мнение за него. Най-вероятно до този момент знаете или поне сте чували за него от едно или друго място. Няма да навлизам в подробности за самият университет и преподавателите  му понеже докато четете тази статия информацията може вече да е стара и е добре да влезете на посоченият адрес и да се запознаете по-добре.softUni

За популярността и цензът на университетът си дадох сметка чак на входният изпит. Изкарах 420/500 точки и дори не бях в топ 100, даже мисля, че бях класиран на 180-186 място и това е първият прием на първият випуск. Иначе самият изпит се състоеше от 5 задачи които можеха да се решават  на C#, C++, Java и JS нищо , че самият курс се казваше C# Basics. Както и да е влязох в ниво едно на университета и започнахме да изучаваме „Java“ с която аз се сблъсквах за първи път. В началото ми харесваше след 2-рото 3-тото домашно не чак толкова.  Впечатленията ми от Java курса главно бяха свързани с домашните и с курсовата работа. В едно домашно имахме за задача да изкараме всички 52 карти за игра в PDF файл което си беше голяма играчка понеже се наложи да работим и с външни  библиотеки, а и аз досега никога не бях правил такова нещо. Също така имахме за задача да прочетем Ексел документ и да извадим нужната ни от него информация, или да направим всички комбинации на карти които образуват „Full house“ в покера с нормално тесте (3744 на брой), а след това и с джокери (119808 на брой). Не знам на вас как ви звучат тези неща, но на мен ми звучаха трудно и като се помъчих да ги направя се оказаха още по-трудни. За щастие на помощ идва форума– главното място където веднага ще намериш някой да ти обясни и да ти помогне независимо кое време на денонощието е. Имахме и курсова работа  в която бяхме разделени на отбори по 4-ма. Имах големи очаквания тъй като това щеше да  ми е четвъртата игра която правя и си мислех, че ще сътворим нещо доста прилично, а и съотборниците ми веднага се захванаха с проекта.JavaMeme Както обикновено си останах само с мисленето имах големи идеи ала като започнах да ги прилагам всичко се бъгваше, прецакваше и въобще не работеше както трябва. С голямата ми уста дадох обещания на съотборниците и общо взето нищо не успях да направя както трябва. Имах късмет, че бяха точни и разбрани и успяха да се справят доста добре и изкарахме 10/10 точки на презентацията. Ето така мина първият месец и дойде време за изпит за който не се бях готвил въобще и
не се справих много добре (240/400). Не съм сигурен дали мога да говоря за задачите в момента понеже мисля че има още една група която не е минала, но моето впечатление беше малко смесено. За 2 часа горе долу реших първите 3 задачи като имах грешки на някой от тестовете. На четвърта задача просто не знаех материала толкова добре колкото си мислех.

Това обаче далеч не е всичко което се случваше в унито за този месец. Имаше семинари на всякакви теми дори някои от тях не бяха пряко свързани с програмирането и бяха доста интересни . Една събота и неделя почти целият университет отиде на Боровец на teambuilding, аз за нещастие бях на работа, но от другите чух, че било голяма забава. Други колеги ходеха на paintball мисля, а някой от по-изявените  водеха упражнения за предстоящият изпит.  Така като погледна назад в момента си мисля, че можеше да отидеш в унито в понеделник сутринта и да се прибереш в петък вечерта и пак да си мислиш, че си успял да свършиш само половината работа.

Сега след като приключих с първата част от ниво 1 реших да си дам равносметка какво знам горе долу  ( изпита спомогна за това). Истината е че не мога да претендирам, че разбирам от Java. Това което научих са някой основни концепции и къде да търся ако се сблъсквам отново с нея и срещна някой от проблемите с които се сборих по време на курса. Не ме разбирайте погрешно де, това не значи, че преподавателите не стават или че материала не беше на ниво. Просто винаги се стига до това дали може сам да си отговориш на няколко въпроса- Това ли е което искаш да правиш наистина? Доволен ли си от нивото на което си в момента? Какво си готов да пожертваш за да станеш добър?

На първите два въпроса по отношение на програмирането в сърцето си знам от две години вече верният отговор.  Последният въпрос цял живот ме трови обаче, просто съм много мързелив и трудно се лишавам от каквото и да било. Много обичам да играя на игри, да гледам филми или сериали, или просто да излизам навън. Първата част на ниво едно ми показа, че няма как да стане. Не можеш просто да решиш задължителните задачи от домашното и да си мислиш, че знаеш достатъчно. Трябва яко да се „коди“ и да се сблъскваш с проблеми и не веднага да копираш решението на някой от нета ми да помислиш малко.

В крайна сметка още нищо не е свършило и мисля, че от тук на сетне мога само да се старая повече и да вниквам по-надълбоко в нещата. Съвета ми към вас които мислите да се записвате в Software University София е да помислите наистина добре дали това е което искате, защото голяма част от колегите са доста сериозни и според мен имат потенциала  да намерят своята ниша както в нашата така и в световната  IT индустрия.

Advertisements

Описание:

Не успях да намеря много информация на български за GPT и MBR и затова реших да преведа малко от тази на английски. Нарочно не съм превеждал някой от изразите или абревиатури понеже мисля, че по-скоро ще се срещат на английски от колкото на български и се надявам да избегна ненужно объркване. Ще сложа една таблица най-отгоре (за по-нетърпеливите)която обобщава предимствата и недостатъците им.

Общи характеристики: 

GPT

MBR

Supports creating up to 128 primary partitions

Supports creating up to four primary partitions and more inside extended partitions

Partition size is much larger. Windows limits GPT file system to 256TB.

Supports maximum partition size of 2 TB.

More reliable because of the replication function and the CRC (Cyclic Redundancy Check) protection of the partition.

Less reliable.

Uses 16-bit GUID (Global Unique Identifier) to identify partition types

Uses 1-bit partition type code to identify partition types

Stores critical GPT data structures twice on the disk to improve odds of successful recovery

Stores critical data structures only once on the disk

Data disk support only for x86 OS

Boot and data disk support for x86 OS

Boot and data disk support for x64 OS

Boot and data disk support for x64 OS

Дялове в твърдия диск

Твърдият диск може да се разделя на различни по големина и формат дялове. Има различни програми с които това може да се направи, но въпросът е как операционната система знае дяловата структура на дадения твърд диск? Тук се намесват MBR(Master Boot Record) и GPT(Guid Partition Table). Въпреки че тези два дяла са архитектурно различни те имат една и съща роля в управлението и подаването на информация за дяловете в твърдия диск.

Master Boot Record (MBR)

MBR е старият стандарт за управлението на дяловете на твърдият диск и все още се използва от много хора. MBR съдържа информацията зMBR tableа това как организират логичните дялове съдържащи дадена файлова система. Освен това в него се намира функция която служи за стартиране на записаната операционна система.

С този тип архитектура твърдият диск може да се раздели на четири главни дяла. За де се направят повече дялове, можете да смените четвъртият дял да е „extended partition“ и ще можете да направите повече под-дялове в него. MBR съхранява информацията за адресирането в блокове с размер 32-бита и за това всеки дял може да има големина не повече от 2TB.На картинката в дясно е показана типична архитектура на MBR твърд диск.

Главни недостатъци както споменахме има в ограничението както на броя на дяловете така и в размера им. Второ в MBR е единственото място в което се намират данните за всеки дял на твърдия диск и ако това място се повреди по някакъв начин целият твърд диск става не четим.

GUID Partition Table (GPT)

GPT table

GPT е част от UEFI(Unified Extensible Firmware Interface)стандарти. Той работи като ползва глобални уникални идентификатори (GUID) за дефинира даден дял от твърдият диск. Като част от UEFI стандарта, UEFI-базирани системи( катo изискване за Windows 8 Secure Boot feature), е задължително ползването на GPT. На теория с GPT могат да се направят безброй много дялове въпреки, че на повечето операционни системи има ограничение от 128 дяла. За разлика от MBR големината на дяловете(ползва 64-битово LBA адресиране) в GPT може да достигне до 9,44ZB (1 ZB = 1 милиард TB). За Windows големината на дяла е до 256 TB.В дясно е показана типична схема на GPT.Както се вижда в диаграмата е показано, че в началото на диска има главно GPT и в края има резервно. Това е една от главните разлики и предимства на GPT пред MBR. Резервният GPT Header се ползва при загуба или повреда на предния. Също така съдържа CRC32 checksums, който проверяват за грешки или повреди в таблицата.

Поддръжка в различните ОС

Intel Macs използват GPT по подразбиране и по принцип без използване на някакви хакове и шашми не може да се инсталира Mac OS X на MBR система.

Linux като цяло поддържа GPT, но най-вероятно ще ви трябва GRUB 2 както и да си направите BIOS Boot Partition в който да се съдържа GRUB’s second-stage code. На места из нета се споменава и че LILO, gdisk и GNU Parted също работят с GPT.

За Windows само 64-битовите версии (Windows XP и нататък) се стартират от GPT диск. Ако си взимате лаптоп с 64-битов Windows, най-вероятно се използва GPT. За Windows 7 и по-ранни версии конфигурацията по подразбиране ще е MBR а не GPT.

Моето заключение:

Въпреки че очевидно GPT е по-надежден за мен лично като средно статистически потребител няма особено значение дали ще съм с GPT или MBR. Тези предимства които има GPT сякаш са насочени повече за наистина големи сървъри с голям приток на информация. Най-вероятно в близкото бъдеще GPT може и да се наложи пред MBR заради постоянният растеж на информация.

Допълнителни сайтове за информация:

На български:

http://alekz.sistemite.com/mbr-vs-gpt/

http://sheepplace.com/?p=811

На английски:

http://www.petri.co.il/gpt-vs-mbr-based-disks.htm

http://www.partitionguru.com/seo/MBR-or-GPT.php

Oculusr Rift представляват очила за виртуална реалност. Разработват се от Oculus VR като основател е Palmer Luckey. За момента тези очила се предоставят само на разработчици като главна причина за това, според мен е за да могат да се синхронизират с колкото се може повече игри. Доставката се прави за хора участвали в Kickstarter кампанията и дарили над 275$ ,а през април 2012 за разработчиците developer kit струвал 300$ и са били закупени по 4-5 на минута за първият ден.
Във видеото обясняват както плюсовете така и минусите, аз само ще дам някакви параметри за очилата:

OS: Windows,Linux, OS X (няма ги за конзоли за сега)
екран: 5.6 inch LCD
резолюция: 1280х800 (640х800 на око)
поле на видимост: 110°
може да се свърже чрез: DVI/HDMI и USB
тегло: 379 гр. (не се включват слушалки)

Понеже между двете лещи има разстояние реалното поле на зрение е повече от 110°
Тези параметри както и цената не са финални и са за разработчици. За сега от това което чух и прочетох в нета мога да кажа, че тези очила са дали доста добри отзиви и хора които са играли с тях в игри като Half-Life 2, Team Fortress 2, Hawken, Eve Online са доста доволни. Единственият минус за който се говори е че може да предизвикат гадене при игри с повече детайли и по-богата околна среда. Един човек твърди, че е играл 4 часа без прекъсване на Team Fortress 2 с тях и не имал никакви проблеми, но това колко може да му се вярва не е сигурно.
През юни 2013 на Е3 са показали ‘Oculus Rift 2.0’. Тази версия която е ориентиране вече за нормалния потребител е с подобрено следене на движението на главата и с резолюция 1080p.
При всички положения едно е сигурно, тези очила са наистина нещо революционно и аз лично нямам търпение да излязат на пазара.

Компания на име Dapper Vision работи по проекта  OpenGlass, система от помощни средства и инструменти, които могат да помогнат да се идентифицират обекти както и да се види допълнителна информация за тях през гугъл очилата.Изображение

Във видеото по-долу ще видите две от функциите на OpenGlass, които могат да помогнат на хората с увредено зрение или на който и да било друг да идентифицира и получат информация за даден обект. Първата функция е от типа въпроси-отговори където потребителя прави снимка на предмета която се праща Twitter или в Amazon’s Mechanical Turk където предмета се индетифицира и се връща гласово съобщение обратно към потребителя. Втората е функция е подобна на първата с тази разлика, че се създава база данни на снимки на предмети заедно с коментари, които се използват при идентифицирането на обекта.

 

Здравей Свят! Това  е може би първата частица код която е написал всеки начинаещ програмист и реших и аз така да започна моят първи пост.

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

Ако вземе числото 47 и го обърнем на обратно и съберем тези две числа, 47 + 74 = 121, се получава палиндром. В някои случай обаче не винаги това става толкова бързо. Например,

349 + 943 =1292,

1292 + 2921 = 4213,

4213 + 3124 =7337

Тук направихме 3 итерации докато постигнем палиндром.

Въпреки че никой не го е доказал се предполага че някой числа  никога не достигат до палиндром. Този процес понякога се нарича 196-алгоритъм наречен така заради най-известното число което се асоциира с този процес. Името „Lychrel” е измислено от Уейд Ван Ландингам като анаграма на „Cheryl“, неговата приятелка.

Задачата ни е да намерим всички „Lychrel” числа под 10 000.

Ще приемем че числото е „Lychrel” ако е станало палиндром с по-малко от 50 итерации всъщност първото число  на което са му трябвали повече е 10677 : 4668731596684224866951378664 (53 итерации, 28-цифри). Също така има и числа които са палиндроми и същото време  „Lychrel”, 4994.

Задачата по същество не е трудна и за това само ще опиша стъпките:

-заради големината на числата избрах да ползвам BigInteger

-правя си 3 метода:

– метод за обръщане на числата, като ползвам масив от чарове и Array.Reverse(number)    и парсвам обърнатото число към BigInteger.

-булев метод който проверява дали числото е палиндром

-булев метод който проверява дали числото е „Lychrel”, в който с помощта на 1 for цикъл събирам числото с обърнатото като съм го направил да прави 50 итерации. След това с помощта на булевия метод за палиндром връщам всички числа който не са палиндроми.

– в Main() имам цикъл който проверява всички числа от 10-10 000 с помощта на „Lychrel” метода.

– и отговора който открих е че съществуват 249 такива числа.