Irina’s Weblog

29/11/2007

¬печатлени€ от вчерашни€ семинар

Filed under: Computers,Daily — Izida @ 10:23 am

ћина и семинара, посветен на NetBeans и Swing.

Roman Strobl ни запозна с новостите в NetBeans 6.0, който скоро тр€бва да стане финална верси€ до колкото разбрах. — кратка шега лекторът провери колко от физиономиите в залата разбират английски€ му, след което започна да ни демонстрира самото IDE. —ъщо така наблегна и на факта, че NetBeans не е само едно IDE, а платформа, ко€то можеш да използваш за разработка на свои приложение благодарение на архитектурата и лиценза. «а пример даде фотоалбум и приложение, използващо свободните за ползване карти на NASA : “No, that is not Google Maps”, както каза –оман. рЯШЙ —лед което демонстрира релефа около —офи€ и каква е гледката от хотела му. ƒа, проекта World Wind, включващ картите на NASA, както и предоставеното Java SDK, категорично са в списъка ми ToTest!

¬ъпросът колко човека в залата ползват NetBeans предизвика реакци€ само у една шепа хора, което изненада непри€тно –оман – в √ърци€, по негови думи, около 50% от присъстващите на презентаци€та ползвали Sun-ското IDE. ƒокато при нас преобладаваше Eclipse. “ова доведе до множество сравнени€ с Eclipse, запознаване с функционалността “Import Eclipse Project”, готов профил с клавишни комбинации “≈clipse” и т.н. рЯШЙ ≈дин колега от залата предложи въвеждане и на “Export to Eclipse Project”, което много ме озадачи – едвам са хванали хора, що да ги улесн€ват да мигрират към други? рЯШЙ Ќо иде€та беше добра – ако си в екип, работещ основно с Eclipse, а искаш да разработваш на NetBeans, би било удобно да можете лесно да си прехвърл€те проектите. –оман даде иде€та да се ползва създаване на проект с Ant скрипт, който Ant скрипт после да се използва за създаване на проект в Eclipse.

’ареса ми, че предлагат различни конфигурации на средата в зависимост от това дали искаш всички опции или ще разработваш само J2SE, C++, Ruby, J2EE, като чисти€ J2SE вариант е само 21 ћб за свал€не! ћоже и да го пробвам като редактор за дребни “проектчета” и тестове по време на четене на книги да видим как е. Eclipse не ми е много удобен за това, защото създаването на проект ми идва в повече ако е само един тестов файл. ¬ такива случаи ползвам прост редактор със синтактично оцвет€ване и компилиране от конзолата.

—ъщо така при€тна изненада беше възможността да извадиш н€кой от прозорците извън главни€ прозорец на NetBeans-а – за да го завлачиш например на втори€ си екран. ∆алко, че аз си имам само един монитор.

Profiler-ът изглеждаше при€тен, –оман демонстрира ползването на “Profiling points” за засичане времето на изпълнение между т€х. Ќаков изрази съжалението си за това, че н€маш опци€та да видиш структурата на променлива от съставен тип в малкото прозорче, което се по€в€ва като € селектираш. Ќо залата не му позволи да обвини Eclipse в липсата на тази опци€ – кой не ползва “Inspect” (Ctrl-Shft-I)! ћожеш да правиш и “snapshot” в даден момент, да сравн€ваш с “snapshot” от минал момент и да виждаш колко памет повече е заета например.

ƒруг минус, който Ќаков посочи, е липсата на автоматична компилаци€ само на променените класове по време на редактиране – опци€та “Build Automatically” в Eclipse. –оман об€сни, че имали гол€мо желание да включат тази функционалност във верси€та 6.0, но не смогнали с времето и за това ще тр€бва да се изчака до следващата верси€.  ато до тогава се компилира цели€ проект всеки път. ј това е минус при големи проекти, аз поне ползвам нон-стоп автоматичното компилиране.

¬ общи линии повечето новости в NetBeans, които –оман представ€ше толкова ентусиазирано, пораждаха у мен леко съжаление към този проект на Sun – ползвам тези опции от години с Eclipse, което значи и че са поизчистени от бъгове. Ќе вид€х причина да мина към NetBeans освен може би малката дистрибуци€ при желание само на J2SE поддръжка.

“ъй като тази лекци€ се проточи с половин час, втората лекци€ започна в 20:30. Ќа ћирослав Ќачев му се наложи да се сблъска с нуждата на много от гостите да се поразтъпчат въпреки желанието на организаторите да пропуснем почивката заради ограниченото време. ћинахме към кратко представ€не на новите SwingX компоненти – в общи линии преглеждане на примера, даден от Sun. ƒоволна съм от развитието на компонентите, изглеждаха доста добре и също влизат в ToTest списъка ми.

¬се пак правеше впечатление разликата в представ€нето на NetBeans 6.0 на машината на ћирослав спр€мо тази на –оман.  акто каза глас от залата : “—ега ще видим как се държи NetBeans в нашенски услови€…”

ѕокрай втората лекци€ “Rich Client Application example” се поотплеснахме към въпроси от базите данни като политиките на транзакции и заключване, които доведоха до извода, че е добре да има лекци€ по темата. —тига и н€кой да се подготви рЯШЙ

Ќуждата при ползване на JNLP ц€лото приложение да е подписано от един човек доведе до дискуси€ на тема дали тр€бва разработчика му да е подписал и известни широко използвани библиотеки, които е включил – например log4j. ќтговора бе – да, тр€бва да подпишеш всичко! ≈дин от гостите се противопостави на нуждата той да гарантира пред клиента за log4j. ћирослав напомни, че все пак клиента плаща на нас за разработка на приложението, и че в крайна сметка ако ние не в€рваме на една библиотека, защо искаме клиента да й в€рва? ј и тук се намесва отговорността – ти разработваш приложението, тр€бва да избираш внимателно какви компоненти ползваш.

 огато семинара приключи (около 22:15), мо€т пакет солети за екстремни ситуации бе отдавна из€ден от колегите рЯШЙ “ака че с ¬ерчето се хванахме под ръчичка за да не се претрепем нейде в леда, и се отбихме за по една пица в ““оронто” – много са ми вкусни пиците там! —лед това вече можех да прецен€, че съм доволна от това, че дойдох на семинара – да, беше тежък, защото бе след работен ден, до късно, без почивки, но подочух н€кои новости, за които, предполагам, скоро ще се чува все повече.  олкото до презентаци€та на NetBeans – била е добавена 3 дни преди семинара след като според Ќаков Sun научили за събитието и пратили човек. ∆алкото бе, че зае най-бодрото време (поне за мен) – първи€ час и половина. “ова се доказва и от асиметричността на тази ми публикаци€ – колкото и да се стараех, концентраци€та ми бе ниска след втори€ час. Ќо поне направи нещо, за което аз не намерих достатъчно желание – да разгледам тази алтернатива на текущото си IDE Eclipse. ¬еднъж го инсталирах, но така и не се насилих да го тествам сериозно. Ќакра€ го махнах защото имах нужда от м€стото и това е. Ќепри€тно впечатление обаче ми остави скастр€нето на дискусиите, които се получи на н€колко пъти – предполагам причина бе ограниченото време – минусът на семинарите в работен ден.

ј, да! —лед месец ще има н€какво събитие в графа “забавни” – “боксинг” между .NET и Java програмисти. Ќещо борбите между платформите не са ми любима тема, но см€там да се отби€ в парк-хотел ћосква ако имам възможност (съжал€вам, не помн€ точната дата и час в момента).

21/11/2007

Java’s final

Filed under: Computers — Izida @ 11:39 am

“The Final Word On the final Keyword” – според автора на стати€та Renaud Waldura, претрупани€ с “final” Java код има предимства, които избро€ва за вс€ко едно от възможните приложени€.

ј вие пишете ли final при всеки възможен случай?

¬печатление ми направи иде€та, че final отдел€ агрегаци€та от простото познанство (Aggregation vs. Acquaintance). “.е. ако един обект е част от друг обект като баналното Engine като част от Car, то Engine ще е константна референци€ в класа Car. јко една референци€ не е final, това показва, че обекта, към който сочи, не е съставна част, а по-точно “познат” на наши€ обект.

19/11/2007

Ѕъговете се мултиплицират сами

Filed under: Computers,Daily — Izida @ 11:19 am

¬ петък се свързах с хората, разработващи приложен слой в приложението, който аз ползвам – един метод генерираше изключение при опита ми да го ползвам. ƒнес получих интересен отговор : проблемът е оправен, решението е било да размен€т местата на двете променливи, които аз подавам на метода… ƒо сега не ми се беше случвало да размен€ места на параметри, още повече – да не го забележа и да обвин€ чужди€ код. ќще повече със сигурност четох JavaDoc-а на сло€, който ползвам. «ащо се случи? «ащото този слой от по-ниско ниво, на който аз разчитам, при вс€ка следваща верси€ показваше все нови и нови проблеми. «агубила съм доверие в него – веро€тността проблема да е там е висока, което от сво€ страна е притъпило собствената ми самокритичност и не съм проверила достатъчно добре сво€ код. ѕък и какво можеш да объркаш в едно викане на метод?!

¬ този конкретен случай имаше и друга причина – разменените параметри са от един тип и са съответно източник и цел на операци€та. јз самоуверено съм си написала операци€(цел, източник). ƒа, ама не! Ѕило обратното! –еших да провер€ защо съм ги написала именно в този ред така убедено въпреки, че съм проверила документаци€та на метода – спомних си за C функциите от типа на memcpy, strcpy и д.р. Ќаистина при т€х реда е <цел, източник>! ƒокато java.lang.System.arraycopy в Java е на обратно. јз ли се лъжа, или наистина имаше подобна политика в C/C++, първо цел, после източник? јко беше така, не намирам причина в Java да отхвърл€т този стил.

15/11/2007

ќб€снителен текст към HTML поле

Filed under: Computers — Izida @ 11:32 am

«абел€звам н€каква мода в уеб страниците : вместо да има статичен текст “¬ъведете име:” преди полето, сами€ текст е вътре в полето и се изтрива като започнеш да пишеш в него. “ова обаче има н€колко интересни последици

Ќапример : пиша коментар в един сайт. ѕолето за коментар при зареждането на страницата съдържа об€снителни€ текст “¬ъведете сво€ коментар тук:” – слушам и изпълн€вам! Ќо понеже на страницата не се виждаха предните коментари, отидох в други€ таб на Firefox-а за да прочета на какво всъщност отговар€м. ¬ръщам се аз в таба с мо€ коментар и какво да вид€ – полето празно! ƒобре, че Ctrl+Z сработи, че н€маше да пиша ц€лото това нещо наново и щ€х да се откажа от коментирането там. ≈дна бърза инспекци€ на текстовото поле показа следни€ код onfocus=’this.value=””;’

ƒруг случай – сайт с логин форма на вс€ка страница, представл€ваща дискретна кутийка с две полета в не€. «а да н€ма излишен текст, “»ме” и “ѕарола” са изписани в самите полета. »зтриването на полетата става при onclick и onselect. ƒа, но за да се чете текста в полето за парола, се налага това поле да не е от тип “password”! јко беше – вместо “ѕарола” щ€хме да четем “******”. Ќо сега пък аз тр€бва пиша паролата само докато н€ма хора около мен, щото иначе всеки € чете! ћоето решение – JavaScript, който намира това поле, изтрива съдържанието му и му слага тип “password”, който скрипт е асоцииран за автоматично изпълнение при onload на дадени€ сайт чрез add-on-а GreaseMonkey за Firefox.

GreaseMonkey се оказва отлично допълнение за хора с професионални изкрив€вани€, които просто не могат да се примир€т с н€кои неудобства по сайтовете, които ползват!

ѕ.—. ѕитам се, още ли има уеб разработчици, които не са прочели книжката “Ќе ме карай да мисл€” на —тийв  руг?

6/11/2007

GMail срещу Firebug

Filed under: Computers — Izida @ 10:25 pm

ƒнес GMail ме изненада със следното информационно съобщение :

Firebug is known to make Gmail slow unless it is configured correctly. Fix this Hide

Fix this е връзка, ко€то сочи към съвети, заключващи се в това да забраниш Firebug за Gmail или, ако не искаш, то поне да спреш логването на XMLHttpRequest-ите и “Network monitoring”.

Ќе, мерси! Ќе съм забел€зала да има забав€не, а и ако тр€бва да избирам между GMail и Firebug – какво да кажа, пощенски клиенти много!

31/10/2007

‘орматиране на дати в Java

Filed under: Computers — Izida @ 4:39 pm

„уд€ се днес как е най-правилно да форматираш дати в Java по зададен от теб шаблон. –азглеждам JDK 1.5 API документаци€та и в класа SimpleDateFormat попадам на това :

SimpleDateFormat allows you to start by choosing any user-defined patterns for date-time formatting. However, you are encouraged to create a date-time formatter with either getTimeInstance, getDateInstance, or getDateTimeInstance in DateFormat. Each of these class methods can return a date/time formatter initialized with a default format pattern. You may modify the format pattern using the applyPattern methods as desired. For more information on using these methods, see DateFormat.

» понеже се стара€ да следвам препоръчваните добри практики, отивам в базови€ клас DateFormat. “ам обаче applyPattern метод липсва, имаш избор само между н€колко предефинирани шаблона за дати (SHORT, MEDIUM, LONG и FULL). «а сметка на това попаднах на следни€ коментар :

If you want even more control over the format or parsing, (or want to give your users more control), you can try casting the DateFormat you get from the factory methods to a SimpleDateFormat. This will work for the majority of countries; just remember to put it in a try block in case you encounter an unusual one.

Ќе знам за вас, но аз мисл€ да си създам SimpleDateFormat … рЯШЙ

15/10/2007

Sweet Home 3D – софтуер за вътрешен дизайн

Filed under: Computers,Daily — Izida @ 1:46 pm

 омпютрите са интересни машинки – уж ги взимаш с една цел, после се оказва, че те прав€т още милион неща. » понеже ни се наложи да пренареждаме мебелите, хрумна ми да използвам компютъра си и за това. ѕотърсих н€ко€ свободна програмка за тази цел на обичайното ми м€сто за подобни търсени€ : SourceForge. ‘разата “interior design” даде отлични резултати – още първата програма бе точно каквото търс€. ј днес зарибих с не€ и колеги, и при€тели. Ќе мога да не € похвал€ и в блога си!

screenshot

ѕрограмата е Sweet Home 3D, текущата верси€ е 1.1 (т.е. достатъчно стабилна). –азпростран€ва се под GPL лиценз, мултиплатформена, писана на Java. »нтерфейса е доста опростен – под менюто има лента с инструменти, в д€сно разграфена чертожна дъска, в л€во списък със стандартни компоненти, групирани по типове стаи, и долу – триизмерен изглед над направеното до момента. Ќабързо начертах стените, “бо€дисах” си ги, сложих врати и прозорци и започнах да ред€ мебелите. ≈, остава ми да измер€ повечето от т€х, но и това е стане. ѕредполагам за професионалист в тази сфера изобщо н€ма да е достатъчна, особено по отношение на предоставените стандартни компоненти за обзавеждане, но за лична употреба е напълно задоволително.

≈крана вл€во е от сайта на проекта, кликнете върху картинката за да разгледате и другите примери от сайта на проекта.

“риизмерни€ модел е много удобен за визуализаци€ – може лесно да се върти във всички посоки, да се запише като картинка, има и опци€ за виртуална разходка като ти позиционираш човечето на скицата и оглеждаш наоколо чрез него.

—еминар Creating Web Applications with Java Server Faces (JSF)

Filed under: Computers — Izida @ 11:01 am

—еминар на тема “Creating Web Applications with Java Server Faces (JSF)” ще се проведе на 25ти октомври /четвъртък/ в зала 200 на ‘ћ».

ѕовече информаци€ – на страницата на семинара.

ѕ.—. «а тези като мен, които са пропуснали предни€ семинар “Creating AJAX Applications
with Google Web Toolkit (GWT)”, на страницата му вече има качени аудио и видео материали от събитието.

4/10/2007

Pathological – една забавна свободна игра

Filed under: Computers — Izida @ 9:47 pm

ѕреди време писах за новата си игричка за джобни€ компютър – Scarabeus VGA. Ћъчо ме светна, че това е всъщност клонинг на играта “Logical” на Rainbow Arts, пусната на пазара през 1991 г. ћежду другото личи си, че по времето на създаването на тази игра иде€та за лесно намиране в »нтернет още не е била на дневен ред – все пак “Logical” описва ц€л жанр игри! «а да намер€ името на разпространител€ тр€бваше да преров€ мрежата за описани€ на Scarabeus като клонинг на стара игра Logical рЯШЙ –еших, че все може да има н€кой клонинг за Windows, че дори и свободен, който да прат€ на нашите и на баба ми за да се занимават.

“а ето го и него : Pathological.

≈, графиката не е чак толкова готина, но има 50 нива, което за мен е предостатъчно! » варианти за Windows, Linux, Mac.

ўе взема да се пробвам и аз да напиша н€кое и друго ниво, току виж достигнем 100те нива, мечтани от автора.

25/9/2007

—еминар “Creating AJAX Applications with Google Web Toolkit (GWT)”

Filed under: Computers — Izida @ 5:46 pm

¬ ср€да, 26.09.2007 г., от 18:30 часа в зала 200 на ‘ћ» ще има семинар на тема “Creating AJAX Applications with Google Web Toolkit (GWT)”, в рамките на който ще се състои и първата среща на BGJUG /Bulgarian Java User Group/. јз вече се регистрирах на сайта на BGJUG, добавих и RSS-а на форума за да след€ какво ново. ƒа видим как ще се развие!

—тискам си палци да успе€ да си вмест€ задачите в тези така кратки дни и да мога да го посет€.

24/9/2007

Ќова игричка за джобни€ компютър

Filed under: Computers,PocketPC — Izida @ 9:01 am

ќт прекалено дълго време запълвах пътувани€та си в градски€ транспорт с пасианс и судоку, и още една-две свободни игри с GPL лиценз. –еших, че е време да си куп€ н€ко€ забавна игричка за джобни€ компютър, с ко€то да се разнообраз€. Ћъчо ми препоръча Handango и ClickGamer. ≈дна от любимите за мен характеристики на джобните компютри е факта, че са неудобни за игра от типа “first person shooter” и разни ралита, поради което основно за т€х се пишат логически и пъзел игри. “ака че имах мноооого избор рЯШЙ «а мо€ още по-гол€ма радост се оказа, че, в сравнение с преди 8 месеца, сега има много повече игри за VGA разделителна способност, което беше допълнителен стимул да се поразров€. ¬ четвъртък вечер свалих около 40на демо варианти на разни игри, спр€х се на н€колко. —лед дълго умуване (т.е. игра докато съм в ѕловдив), установих, че най-много ми е мъчно за изчерпването на демо минутите на играта Scarabeus VGA (демото обаче е дадено само в Handango след безплатна регистраци€, иначе има и QVGA вариант). «а $19,95 реших, че си струва – забавна игра, скин по мо€ вкус. »збрах да € куп€ от ClickGamer, тъй като за опци€та да свал€ повторно играта при нужда Handango искат допълнителни $4,95, докато в ClickGamer това е безплатно. јз естествено си записах exe-то на сигурно м€сто (над€вам се) рЯШЙ —ега вече остава опасността не да засп€ от скука по време на безкрайните задръствани€, а да си пропусна спирката!

–ешила съм следващата игра да е Resco Diamonds, ко€то за $15 предостав€ вариант на една от любимите ми малки и забавни игрички. ѕредлага се и друг вариант на същата игра – Bejewed, ко€то Astraware предостав€т в пакет с още 4 игри за $30 – PopCap Games Pack 1. Ќо при тестването установих, че не “Bejewed”, а “Bejewed 2” е еквивалент на Resco Diamonds, така че може би ще пропусна пакета в полза на единичната игра – а и графиката на Resco Diamonds според мен е много по-при€тна.

ƒруга готина и забавна игричка е Happy Lines – играла съм доста време вариант за PC и все пак продължава да ме забавл€ва.  оето е точни€ критерий ко€ игра си заслужава парите – особено като струва $10. ¬чера инсталирах един свободен клонинг на тази игра на компютъра на баба ми – Lines game. ћакар и не толкова шарена, е при€тна за игра.

—амо едно ме притесн€ва – като слушам mp3ки в рейса за времето на пътуването батери€та пада в н€ма и 10на процента. Ќовата игра смъкна накъде към 20% за същото време… Ќо батериите са за да се зареждат. ¬се пак ще взема да си поръчам една втора оригинална батери€ за като и минат циклите на презареждане на тази.

13/9/2007

„естит празник

Filed under: Computers — Izida @ 9:07 am

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class ProgrammersDay {
public static int PROGRAMMERS_DAY_OF_YEAR = 256;
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR));
calendar.set(Calendar.DAY_OF_YEAR, PROGRAMMERS_DAY_OF_YEAR);
Date programmersDay = calendar.getTime();
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
System.out.println("Programmer's Day this in the current year is at : " + formatter.format(programmersDay));
}
}

»нтересното е, че вече н€ма стати€ във Wikipedia по темата – изтрита е след дебат. Ќо усп€х да намер€ из блоговете какво е пишело там :

“Programmer’s day is a “holiday” on the 256th day of the year celebrated mostly by computer programmers (reason: 256 = 2 to the power of 8 = the number of values representable in a byte of data).
Traditions include drinking, behaving silly, coding silly programs, mini computer games, playing with old computers, etc. That, of course, includes the condition that the developer who chooses to celebrate, needs to have done decent coding on all the other days and had tried the best not to behave silly on the other days. For those programmers who are used to the ‘celebrations’ in their every day lives, this ‘holiday’ becomes unjustified!
Programmer’s day usually falls on September 13th; on leap years, it is September 12th.”

12/9/2007

≈вроцензура над »нтернет достъпа

Filed under: Computers — Izida @ 9:01 am

¬чера попаднах на следната новина в Dnes.bg : “≈— иска да блокира интернет търсени€та за инструкции за бомби”. ќказа се, че това притеснително съобщение вече бе описано и в стати€та в англоезичната Wikipedia, посветена на ‘ратини, еврокомисар по правосъдието и сигурността :

Interviewed by Reuters he declared his intention to promote online communications monitoring and censorship of “dangerous words” like “bomb, kill, genocide or terrorism” and is expected make a proposal to member states in November 2007.

 ато източник е посочена следната стати€ на Reuters : “Web search for bomb recipes should be blocked: EU”. Ќа въпроса това блокиране на сайтове н€ма ли да окаже вли€ние върху свободата на словото и правото на свободен достъп до информаци€, ‘ратини отговар€:

“Frankly speaking, instructing people to make a bomb has nothing to do with the freedom of expression, or the freedom of informing people. The right balance, in my view, is to give priority to the protection of absolute rights and, first of all, right to life.”

√руб превод :

“„естно казано инструктирането на хора за това как да направ€т бомба н€ма нищо общо със свободата на словото или правото на информаци€. —поред мен правилни€т баланс е да се даде приоритет на опазването на абсолютните права и, преди всичко, правото на живот”

”спокоението, според ‘ратини, идва и от факта, че н€мало да се блокират исторически данни и лични мнени€, а само оперативни инструкции. Ќо се намесва и цензура над търсени€та – посочват се опасни думи като “бомба”, “убийство”, “геноцид”, “тероризъм”.

Ќе знам за вас, но аз не искам ≈— да се превърне във втори  итай! ѕри това ми се струва абсурдно доставчиците да отс€ват ко€ страница става за показване и ко€ – не. ƒа не кажа – невъзможно. » как точно от ≈— ще подготв€т инструкции към държавите-членки, как те ще ги конкретизират, как доставчиците на »нтернет услуги ще се справ€т с изпълнението им?

7/9/2007

FireBug и printer-friendly верси€ на сайт

Filed under: Computers — Izida @ 3:30 pm

ќбичам го този FireBug! ƒнес исках да разпечатам една интернет страница. ≈стествено имаше доста банери и излишни за печатната верси€ елементи като “—вържи се с нас” и разни други форми. “ака че хванах инструмента “Inspect”, щраках на всеки излишен елемент, и редактирах стила му като в секци€та “Style” давах десен клик > “Edit element style” и го скривах с добав€не на “display:none”. —коро страницата стана не по-различна от обикновен off-line документ!

19/8/2007

i18n

Filed under: Computers,Humor — Izida @ 12:50 pm

»з Flash теста по географи€ на GeoBee Challenge на National Geographic :

i18n

¬тората страна е тр€бвало да бъде C?te d’Ivoire.

Unicode 4.0 в JDK 1.5

Filed under: Computers — Izida @ 11:31 am

≈дна от новостите в JDK 1.5 е, че вече се поддържа доста по-широк набор от символи чрез приемане на стандарта Unicode 4.0

≈стествено оказва се, че кодовете на всички тези символи не могат да се поберат в типа char, който е 16 битов. «а това новите символи се кодират чрез заместваща двойка или code pointдва поредни char-а, всеки от които се нарича code unit. ћетодът String.length продължава да връща бро€ char-ове в стринга. Ќо тъй като н€кои символи се кодират с 2 char-а, то String.length може би не е методът, който ви тр€бва ако търсите дължината стринга като брой символи. «а това има въведен нов метод :

int codePointCount(int beginIndex, int endIndex)

“ози метод връща бро€ code points или същински unicode символи като брои двойките за кодиране на новите символи като един.

—ъщо така ако искате да вземете n-ти€ символ, String.charAt() н€ма да ви свърши работа – тъй като той би върнал n-ти€ char. «а това има и нови методи :

int offset = str.offsetByCodePoints(0, 3);
int codePnt = str.codePointAt(offset);

“ук взимаме индекса на първи€ от едини€ или двата char-а, представ€щи 3-ти€ символ. » след това взимаме символа (един или два char-а) на дадената позици€.

» един пример за стринг, съдържащ един символ, който се кодира като двойка от char-ове :

String str = "\uD800\uDF30";
System.out.println("str: " + str);
System.out.println("str.length(): " + str.length());
System.out.println("str.codePointCount(0, str.length()): " + str.codePointCount(0, str.length()));
System.out.println("str.charAt(0): " + (int)str.charAt(0));
System.out.println("str.charAt(1): " + (int)str.charAt(1));
System.out.println("str.codePointAt(0): " + str.codePointAt(0));
System.out.println("str.codePointAt(1): " + str.codePointAt(1));

»звод : јко работим с новите за Unicode 4.0 символи, тр€бва да сме много внимателни кои функции ползваме – досегашните, за които всеки символ е точно един char, или въведените от JDK 1.5 функции специално за работа с новите дву-char-ови символи. »злиза, че предимството на Java над C++, което дават изрично указаните в спецификаци€та на езика размери на всеки примитивен тип, вече става и недостатък.

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

ѕолезни ресурси:

18/8/2007

JavaScript дреболии

Filed under: Computers,Daily — Izida @ 10:30 pm

ѕри четене на спецификаци€та на ECMAScript 2.0 и на книгата “JavaScript: The Definitive Guide /5th edition/” на O’Reilly попаднах на н€кои забавни дреболии :

  • ћислите ли, че има разлика между следните две парчета код?
    function myFunc() {
    return 5;
    }
    alert(myFunc());

    function myFunc() {
    return
    5;
    }
    alert(myFunc());

    ѕредлагам ви преди да кажете “Ќе!” да тествате. ќказа се, че според спецификаци€та JavaScript, €в€вайки език за програмиране насочен и към професионални програмисти, и към аматьори, се опитва да “мисли” вместо програмиста. » да слага ‘;’ там, където прецени, че липсва. ≈, ако между return/throw и следващи€ ги израз, или между break/continue и етикета, или между променлива и постинкремент/постдекремент имате нов ред, то JavaScript вмъква точка и запета€ преди нови€ ред. “ака че пишете тези изрази на един ред ако не искате сума време да се чудите какво не е наред в иначе кристално €сни€ ви код.
  • ¬ описанието на типа Number срещнах следни€ текст:

    Note that these two infinite number values are produced by the program expressions +Infinity (or simply Infinity) and
    -Infinity, assuming that the globally defined variable Infinity has not been altered by program
    execution.

    “ова провокира у мен следни€ тест:

    alert(5 == +Infinity); // резултат : false
    Infinity=5;
    alert(5 == +Infinity); // резултат : true

  • оператор === : сравн€ва не само стойностите, но и типовете; Ќапример :
    var a = 5;
    alert(a == "5"); // в€рно
    alert(a === "5") // лъжа - различни типове;
  • “р€бва да се внимава когато искаме да разберем дали една променлива е изрично установена на null и кога просто не е инициализирана, т.е. има стойност undefined. ѕростото сравнение :
    unknownVar == null;
    където unknownVar е локална променлива, спомената за първи път, връща истина! «а това ако искаме да сме убедени, че стойността е наистина undefined, а не null, тр€бва да сравн€ваме променливата с null чрез оператор===:
    unknownVar === null;
  • Ѕулеви€т оператор »Ћ» (||) работи доста сходно на същи€ оператор в C/C++/Java – ако десни€ операнд е true или може да се конвертира до тази стойност, то изобщо не се изчисл€ва леви€, защото така или иначе логическото условие е удовлетворено (една от стойностите е true). ƒо тук нищо ново. —амо че се оказва, че JavaScript не присво€ва за стойност на оператора »Ћ» булева стойност – true или false, а стойността на сами€ операнд! “.е. стойност на израза е първи€ от двата операнда (от л€во на д€сно), който не може да се преобразува до false – не е undefined, не е null и т.н. “ака че може да се използва по следни€ начин :
    var width = minWidth || averageWidth || 50;
    јко нико€ от първите стойности не е зададена, то на width ще се присвои стойност 50;
  • ћожем да изтрием последните N елемента на масив по следни€ начин:
    var a = [1, 2, 3, 4, 5, 6];
    var n = 2;
    a.length = a.length - n;
    alert(a.join(", "));
  • ‘ункци€та Array.slice() връща подмасив, започвайки от посочени€ първи индекс до втори€ индекс.  акво става обаче ако подадем отрицателно число като индекс?
    var a = [1, 2, 3, 4, 5, 6];
    var n = 2;
    var b = a.slice(1, -1);
    alert(b.join(", "));

    ¬ръща подмасив, започващ от елемента с индекс 1 (т.е. втори€ елемент), като спира без да включва на последни€ елемент.
  • јко искате да пропуснете досадни€ атрибут type=”text/javascript” в HTML документа, то включете следното в head секци€та:
    <meta http-equiv="Content-Script-Type" content="text/javascript"></meta>
    “ова важи и за другите езици разбира се и задава типа по подразбиране на скриптовете в документа.

7/8/2007

The March of Progress

Filed under: Computers,Humor — Izida @ 1:14 pm

»зточник : Cay Horstmann’s Home Page, едини€т от авторите на Core Java.

The March of Progress

2/8/2007

—вързани продукти

Filed under: Books,Computers — Izida @ 5:43 pm

¬чера с три колежки отидохме в обедната почивка на пазар за книжки. ÷елта на едното момиче бе да си купи книгата “ƒизайн, предпечат и печат Ц официално ръководство”. «а мое учудване, продавачът й предложи още една книга, ко€то може също да й бъде интересна : “Ўаблони за дизайн” рЯШЙ

Ќ€как бих го извинила, ако не беше факта, че всички книги за графичен дизайн са пълни с цветни илюстрации, а тази за шаблоните за дизайн в програмирането има само семпли UML диаграми. Ќо много интересно си кротуваше на рафта за дизайн и цифрова фотографи€!

јко не б€х останала без думи, можеше и да осведом€ човека къде би била по на м€сто тази книжка.

1/8/2007

RSH

Filed under: Computers — Izida @ 8:16 pm

—ед€ си пред компютъра, слушам “¬ечните песни на Ѕългари€”, пи€ “«акорка √олд” и си прип€вам с носталги€ “ огато б€х овчарче и овците пас€х…”

ƒо това може да те доведе опита да накараш едно Web 2.0 приложение да се държи коректно (и както се очаква) когато потребител€т е свикнал да ползва бутоните Back/Forward в браузъра си! “.е. не само да показва актуална предна страница, но да се движи напред/назад и между действи€та, които са довели до AJAX за€вки.

P.S. јко н€кой успешно е интегрирал и подкарал в Internet Explorer (поврат€м Internet Explorer!) фреймуърка Really Simple History при положение, че изрично е сложил в HTTP хедъра всичко необходимо за да не се кешира страницата и да се взима наново при натискане на Back/Forward бутоните, и най-вече ако му се пие бира, то нека ми се обади и даде н€кой съвет!

P.S.S. ј ти€ в O’Reilly как може да сложат коментарите на потребителите за фреймуърка —јћќ на последната от шестте страници по темата?? Ќе ги забел€зах докато изрично не ми б€ха посочени от колега (“€ ми каза, че намерила много коментари, аз като вид€х на ко€ страница се хванах за главата!). —викнала съм ако има странициране и коментари, коментарите да са видими под ¬—я ј страница.

« Previous PageNext Page »
пїњ