Irina’s Weblog

7/7/2005

Tomcat 4.1.29 и Ant

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

Днес реших да забързам процеса на пускане на уеб приложения с Tomcat. Просто не ми хареса да спирам/пускам сървъра всеки път, когато компилирам нова версия на WAR-а. И с помощта на Google попаднах на следните “задачи” за Ant :

WAR file Remote Deployment using Ant - Catalina tasks

След известна доза борене с Ant - дефиниране на променливи, подмяна на директории, стигнах до момента, в който най-накрая задачата “list” тръгна! Но какво беше учудването ми като в конзолата ми се изсипа HTML код и червен ред сигнализираше за грешка при изпълнението. Тогава се сетих, че една от променливите имаше странна стойност, която ми се стори още на първо гледане потенциален проблем :

tomcat.manager.url=http://localhost:8080/manager/html

И след повторно търсене в Google намерих второ описание на същия процес на настройка : TomcatAntTasks, този път с вярното url:

tomcat.manager.url=http://localhost:8080/manager

Щастливо разглеждах резултата от изреждането на стартираните в момента уеб приложения в конзолата на Eclipse-а си. :)
Тогава реших, че е време да подкарам и “сериозните” задачи - спиране, премахване, инсталиране и стартиране на уеб приложения. Най-красивото се крие във факта, че изобщо няма нужда да се рестартира Tomcat сървъра с цел да се deploy-не новото приложение. А това спестява време и нерви.

Но радостта ми беше кратка. След като спрях успешно приложението, над което работя, се опитах да го премахна, за да инсталирам и пусна новата му версия. Премахването обаче даде грешка:

remove:
[undeploy] FAIL - Cannot remove document base for path /cartTest

тново Google беше включен в играта. Излиза, че има проблем с изтриването на struts.jar от deploy-натото приложение и поради тази причина не успява да го премахне! :( Намерих и Бъг #10026 в Tomcat 4, който не е оправен. Състои се в това, че ако се зарежда DTD от JAR файл, който се намира в ${webapp.name}/WEB-INF/lib директорията, то JAR файлът остава заключен до спиране на виртуалната машина - struts.jar в моя случай. Тук се посочва и вероятно решение - вместо да се включва JAR файл, той да бъде разархивиран и сложен в ${webapp.name}/WEB-INF/classes.

Май е време просто да мина на Tomcat 5, където този проблем не съществува вече ;)

П.С. Вече се сваля…

3/7/2005

DHTML ден (и нощ…)

Filed under: Computers, Daily — Izida @ 2:39 am

Денят премина в нощ под знака на поправянето на CSS и писането на JavaScript. Така става, като си позволи човек да подремне следобед и се събуди в 19:30 ;)

Във форума BgDev от доста време ме дразни това, че като пишеш мнение си ощетен ако ползваш Firefox. Причината е, че бутоните за добавяне на форматиране (”B”, “U”, “I”, цветове и т.н.) работят коректно само под IE. Дори и не подозирах, че съм ощетена от към функционалност поради избора си на браузър до момента, в който забелязах как Лъчо селектира текст в текстовата област за писане на мнение и после клика на бутончето “B”. Това добавя отварящ и затварящ таг около селекцията при IE. Но при мен винаги добавя само отварящ таг и то в края на текста! Така че се хванах да оправя нещата.

След преглед на JavaScript-а разбрах, че ограждането с тагове на селекция се прави само ако детектнатия браузър е IE. Причината : IE предоставя обект, представящ селекцията, чието модифициране се отразява в директно модифициране на текста в текстовата област. Така че можеш да добавиш директно таговете около върнатата от документа селекция и това да свърши работата.
Но FireFox не предоставя такъв обект. За сметка на това предоставя началния и крайния индекс на селекцията в текста в текстовата област. Така че е налице лесен алгоритъм:

  1. Проверяваме дали сме с FF - той дефинира функцията document.getSelection, така че една проста проверка върши работата:
    if (document.getSelection)
    {
    // code for FF
    }
    От тук нататък кодът ще бъде вмъкван в тази if секция.
  2. Запомняме началото на селекцията (obj_ta е обекта textarea, който манипулираме) :
    var cursorPos = obj_ta.selectionStart;
  3. Взимаме селектирания текст :var selTxt = text.substring(obj_ta.selectionStart, obj_ta.selectionEnd);
  4. Конструираме текста, който трябва да замести селекцията (реализацията на constructSubstText(selTxt) е ваша задача) : var newText = constructSubstText(selTxt);
  5. Към текущата позиция добавяме големината на новия текст - за да можем после да позиционираме курсора веднага след добавения текст чрез тази позиция :cursorPos += newText.length;
  6. Сменяме стойността на цялата текстовата област като подменяме селекцията : replaceSelection(obj_ta, newText); За целта използвам помощна функция : // Replaces the current selection in the TextArea o with the string s
    function replaceSelection(o, s)
    {
    var s2 = o.value;
    o.value = s2.substring(0, o.selectionStart) + s + s2.substr(o.selectionEnd);
    }
  7. Променяме стойностите на selectionStart и selectionEnd на текстовата област на запазената текуща стойност : obj_ta.focus();
    obj_ta.selectionStart = cursorPos;
    obj_ta.selectionEnd = cursorPos;

И сме готови!

Предложих решението си и във форума - смятам, че би било полезно и ние, FF юзерите, да ползваме форматиращи глезотийки ;)

2/7/2005

Проблеми с IE 6.0 и подредените списъци

Filed under: Computers, Daily — Izida @ 9:48 pm

Случайно забелязах, че Лъчо чете сайт, често посещаван от мен. Интересното беше не, че и той го чете, а че при него изглеждаше различно. Aз ползвам Firefox, а той - Maxthon (MyIE). Разликата се изразява в това, че един подреден списък, чиито елементи са номерирани с главни римски цифри, при него беше номериран само с точки, като при това те се намираха не в началото, а в дъното на елементите. Реших да видя какво причинява разликата във визуализацията на подредения списък.

Открих, че проблемът при IE идва от следния стил на подредения списък:
margin: 20px 0px 40px 0px;Объркването идваше от задаването на ляво и дясно поле с размер нула.
Замених горния ред със задаване на горното и долното поле, като лявото и дясното са оставени да бъдат наследени:
margin-top: 20px;
margin-bottom: 40px;
Това доведе до еднаква визуализация в IE и FF.

Относно показването на числото в дъното на елемента при IE, забелязах, че това се предизвиква от следния стил на списъка:
width: 95%;

Но остана друг проблем.
Забелязах, че като се стигне до големи числа като “XXVIII”, то това число се появява в IE леко отрязано отдясно. Оказа се, че проблемът идва от следния стил, зададен за списъка:
font-weight: bold;Ако го махна, то и в IE числата се появяват цели и без орязване. Явно ширината на полето, в което се изписва номера на елемента, се изчислява преди да се вземе предвид, че е със стил “bold” и следователно заема повече място.

1/7/2005

Оръдията в животинския свят

Filed under: Daily — Izida @ 11:28 pm

Гледах интересно предаване по National Geographic Channel - “Animals like us”. В него се представяха най-различни животни и техните начини за приспособяване към околната среда. Интересен случай е ракът-боксьор (Lybia tessellata), който носи във всяка от щипките си по една анемония. Ракът ги размахва срещу враговете си, които се страхуват от отровата на анемониите и отстъпват - дори когато имат предимство в размерите. А анемонията печели подвижност, която природно не притежава. Не знам дали анемонията може да се приеме за “инструмент” на рака - може би “жив щит” би било по-подходящо.

Когато обаче стане дума за най-съвършените оръдия в света на животните, в съзнанието ми изниква образа на шимпанзето с клечката, ровещо в мравуняка. Но днес National Geographic промени мисленето ми.

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

Оказва се обаче, че има животно, което не само, че няма противопоставения на остналите пръсти палец, но и изобщо няма ръце - и въпреки това притежава умението да изработва най-сложния инструмент, открит до сега в животинския свят. И всички познаваме това животно - обикновената гарга! Със своя клюн гаргата чупи клонка, маха листата и извива крайчето като кука. След като пробва да пъха тази кука в дупки по изгнили дървета в търсене на сочни ларви, птицата осъвършенства инструмента като го дооформя за да пасва идеално на дупката. И така си спечелва обяд, който другите животни не могат да си позволят. Това е инструмент, за който шимпанзетата могат да завидят!

Интересното е, че докато търсех материали за сръчността на правенето на куки от страна на гаргите, попаднах на материал за птичия мозък. В него се твърди, че от около 1990 година насам в Япония са забелязани гарги, които чакат на светофарите наред с хората. Когато тръгнат пешеходците да пресичат, гаргите пускат ядки на пътя. След като колите тръгнат, ядките биват строшени. И при следващо светване на червеното, гаргата отива да вземе строшената ядка.

Започвам да мисля, че съм подценявала до колко нашето развитие повлиява на развитието на обкръжаващите ни животни.



Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 License.

Powered by WordPress