Журнал "Юный разработчик web-приложений"
[Recent Entries][Archive][Friends][User Info]
Below are the 19 most recent journal entries recorded in the "Anna Safronova" journal:
04:12 pm
[Link] | First of all, I finally started a new job.
Second, i want to underline that starting Tomcat using sudo (as I adviced in last post) is not a good idea because of security.
And third, what is the most important - I understood all advantages of open-source platforms, frameworks and tools. Funny thing is that now I'm using Eclipse and I'm completely happy about it!
Tags: eclipse, tomcat, ubuntu
|
10:15 am
[Link] |
Java and Tomcat in Ubuntu. Quick start. First I should mention that I´m just a beginner and I don´t pretend to call myself as Ubuntu professional, but i started to work with it and noticed that Internet contains a lot of messy information that doesn´t allow you to start quick.
1) You should install Java. - Run terminal from Applications - > Accessories.
- Enter in terminal command gksudo synaptic
- There will start an application which allows you to install software/libraries you need automatically. Select in quick search ¨sun¨ or ¨java¨ and install version you want to use.
2) Probably another versions of Java already exists on your machine. Use sudo update-alternatives --config java to choose version you want to work.
3) Now you should set JAVA_HOME as env variable, else Tomcat couldn´t start.- Use gedit ~/.bashrc to edit file.
- Add to file links : export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/ (write your directory)
export CLASSPATH=/usr/share/tomcat5.5/common/lib/jsp-api.jar:/usr/share/tomcat5.5/common/lib/servlet-api.jar (write your directory). - Please note that JAVA_HOME is defined now only for LOCAL user and ADMINISTRATOR know nothing about this variable. You can´t run Tomcat WITHOUT command sudo.
- Use sudo env to see that JAVA_HOME is not in the list.
- Run sudo visudo to add JAVA_HOME in list.
- Add line "Defaults env_keep+=JAVA_HOME" in the file.
- Exit using Ctrl + X.
- Use sudo env to see that JAVA_HOME IS now in the list.
4) Run Tomcat.- Please note that you should install Tomcat the same way as i described in 1)
- Run Tomcat using sudo /usr/share/tomcat5.5/bin/startup.sh (of course, use your directory)
- You will see smth like this
Using CATALINA_BASE: /usr/share/tomcat5.5 Using CATALINA_HOME: /usr/share/tomcat5.5 Using CATALINA_TMPDIR: /usr/share/tomcat5.5/temp Using JRE_HOME: /usr/lib/jvm/java-6-openjdk/ Good luck!
Tags: java_home, tomcat, ubuntu
|
04:16 pm
[Link] |
Перешли на SVN, появились проблемы. Update под branch в SVN, немногие знают, а это возможно.
If you want to work with branch, but don't want to checkout it, you can use menu TortoiseSVN → Switch... that will update your folder according to the url of branch.
The bad thing is that TortoiseSVN still make checkout, not update of binary files (libs and etc), good thing is that update by branch of Java classes is the same as in CVS.
Tags: cvs, svn, vcs
|
05:53 pm
[Link] |
No comments. “The traditionally limited computer resources in Russia make Russian programmers more creative in their solutions,” said Dan Dougan from St. Petersburg based Jensen Technologies. To put it more bluntly, Russian programmers can’t afford to buy their own computer so they put it together by hand."
(c) official website, September 2001
|
11:08 pm
[Link] |
Sun Tech Days 2009
"Ajax: инфраструктура, производительность и передовой опыт" Doris Chen
"MySQL: взгляд в будущее" Константин Осипов
- по ссылка архивы с фотками слайдов. Фоткала то, что считала нужным :-)
Tags: suntechdays
|
07:22 pm
[Link] |
Генерация классов данных при помощи скрипта ant по hbm
<target name="codegen" description="Generate Java source from the O/R mapping files"> <taskdef name="hbm2java" classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask"/> <hbm2java output="${src.dir}" > <fileset dir="${hbm}/com/your_wayl"> <!--<include name="YourName1.hbm.xml"/>--> <include name="YourName2.hbm.xml"/> <!--<include name="YourName3.hbm.xml"/>--> </fileset> </hbm2java> </target>
Tags: ant, hibernate
|
08:51 pm
[Link] |
What does my boyfriend say about using IE... "Webbrowsing with IE is like having a car without a lock, without any codes to start or so. And you just park it somewhere and place a sign on it: Free joyriding"
|
10:49 pm
[Link] | Один из самых странных вопросов на собеседовании за тот период, что я ищу работу, я услышала сегодня.
Меня попросили вспомнить ASCII код для пробела. Должность, напомню, j2ee developer. Много думала. Наверное, это очень важно знать любому программисту, чтобы так, знаете, сходу назвать =) А вы помните? ;-)
Да, и поскольку в этом ЖЖ я не писала - я официально ищу работу. Настолько официально, что даже начальника уже предупредила. Скачать резюме можно здесь.
Рассматривается переезд в Москву, Европу и США.
Current Music: Laam - Petite Soeur
|
11:48 am
[Link] |
Новости с полей. 1) spring-ws (начиная с ver 1.5) работает не только с SOAP'ом, но и с REST'ом. Unbelivable!
2) spring-ws поддерживает Castor, начиная с версии 1.2. Не смотря на это, предоставленный на сайте springframework архив вэб сервисов со всеми dependencies включает библиотеку Castor'a 1.1. Дескать, догадайтесь сами и скачайте 1.2.
3) I hate web-services. Судя по тому, что я нашла, технология появилась аж в 2001-ом, однако обороты стала набирать в последние годы. И думаю, что в ближайшем будущем перед любым мало-мальским серьёзным вэб-приложением помимо каких-то основных функций будет в обязательно порядке ставиться задача реализации клиентской или серверной стороны вэб службы.
Tags: web-services
|
03:59 pm
[Link] | Давеча в icq постучалась барышня из рекрутинговой конторы. Интересовалась моим знанием немецкого, предлагала работу в каком-то представительстве какой-то компании...
Вот я думаю - резюме моего в открытом доступе нигде не висит, а барышня начала свой разговор без прелюдий и вопроса "ищите ли Вы работу?"... Это что значит, любой разработчик по умолчанию всегда в активном поиске местечка, где зарплата побольше хлеба послаще, да проект поденежней трава позеленее или как? =)
Current Location: JT Tags: work
|
04:32 pm
[Link] |
Не могу с вами не поделиться :-))
Взято у catty_ua.
|
05:38 pm
[Link] |
JAXB Marshaller. Problem of forced escaping tags (how to configure the marshalling process)
Problem. By default, the marshaller implementation of the JAXB usually escapes characters. Sometimes we don’t want to escape characters, for example if we want to get xml-document with CDATA we don’t want to see smth like:
<description><![CDATA[<html>text></html>]]></description>
Solution. 1. Write a class that implements the com.sun.xml.bind.marshaller.CharacterEscapeHandler interface.
import com.sun.xml.bind.marshaller.CharacterEscapeHandler; import java.io.IOException; import java.io.Writer;
public class NoEscapeHandler implements CharacterEscapeHandler {
private NoEscapeHandler() { super(); } public static final NoEscapeHandler theInstance = new NoEscapeHandler(); /** * Escape characters inside the buffer and send the output to the writer. * * @param buf buffer of characters to be encoded * @param start the index position of the first character that should be encoded * @param len the number of characters that should be encoded * @param isAttValue true, if the buffer represents an XML tag attribute * @param out the output stream * @throws IOException if the writing process fails */ public void escape(char[] buf, int start, int len, boolean isAttValue, Writer out) throws IOException { for (int i = start; i < start + len; i++) { out.write(buf[i]); } return; } }
2. Set that instance to the Marshaller by using this property.
CharacterEscapeHandler escapeHandler = NoEscapeHandler.theInstance; marshaller.setProperty("com.sun.xml.bind.characterEscapeHandler", escapeHandler);
3. Enjoy!
<description><![CDATA[<html><br></html>]]></description>
Tags: escaping characters, jaxb, xml
|
06:35 pm
[Link] |
Маленькие ошибки больших гигантов. На gmail почти такая же ошибка, о которой я писала здесь - "operation aborted". Возможные причины - тяжеловесный скрипт. Поскольку, IE 7 (молчите, гусары!) - мой основной браузер, то ошибка раздражает не по-детски...
Current Location: JT
|
07:13 pm
[Link] | Когда год назад я писала диплом на тему, связанную с автоматизацией рефакторинга, я искренне считала, что "рефакторинг" - это главное слово в словосочетании "автоматизированный рефакторинг", теперь понимаю - нет, главное в этом словосочетании слово "автоматизированный"!
|
01:51 pm
[Link] |
Хозяйке на заметку. Проблемы с показом карты (Google Maps и иже с ними) на странице в IE 7 (сообщение “operation aborted”) связаны с тем, что карта загрузиться ещё не успела, а уже начинает грузиться оставшаяся часть страницы. Решается путём выставления тайм-аута на инициализацию карты.
Current Location: JT Tags: firefox & ie
|
04:34 pm
[Link] |
Предновогодняя заметка про Jasper Reports. В первую очередь, мне хотелось бы отметить, что лучше, чем сказали про Jasper Reports ребята здесь - http://voituk.kiev.ua/intro-jasper-reports/ , не найти. По крайней мере, это очень хороший мануал для новичков и тех, кто хочет просто начать и делать.
Мне бы хотелось заострить своё внимание на одном достаточно интересном моменте. Интернет пестрит сообщениями ребят, которые хотят, чтобы им пояснили синтаксис jrxml. Дело в том, что для контроля вывода того или иного элемента отчёта можно воспользоваться простым или сложным булевским выражением. Со сложными булевскими выражениями не так всё просто - мало написать CDATA - выражение нужно обернуть в new Boolean.
<textField isStretchWithOverflow="true"> <reportElement positionType="Float" x="615" y="0" width="70" height="25" style="Arial_Normal"> <printWhenExpression> <![CDATA[new Boolean(!("5").equals($P{JobScope}) && !("4").equals($P{JobScope}))]]> </printWhenExpression> </reportElement> <box bottomBorder="Thin" rightBorder="Thin" leftPadding="5" topPadding="5" bottomPadding="5" rightPadding="5" borderColor="#DADCE1"/> <textElement/> <textFieldExpression class="java.lang.Long"><![CDATA[$F{totalLogins}]]></textFieldExpression> </textField> Однако, чуть позже, я поняла, что впихивать сложное булевское выражение в jrxml для того чтобы понять, нужен нам этот элемент в данном конкретном отчёте или нет – это изврат. В библотеке jasperreports есть замечательный класс JRDefaultScriptlet, от которого мы можем наследовать свой класс MyScriptlet. В методе afterDetailEval() мы присваиваем значения переменным и параметрам, которые будут использоваться в нашем отчёте, а в, к примеру, mySummary() будем производить различные операции и принимать решение, что в итоге будет выводиться “” или “Count: 212”
Обращаться к методу в jrxml будем следующим образом :
<textField isStretchWithOverflow="true"> <reportElement positionType="Float" x="175" y="140" width="200" height="20" forecolor="#993300" style="Arial_Bold"> </reportElement> <textElement textAlignment="Center"/> <textFieldExpression class="java.lang.String"><![CDATA[(( reports.scriptlets.MyScriptlet)$P{REPORT_SCRIPTLET}). mySummary()]]></textFieldExpression> </textField> Спасибо за внимание и с наступающим Новым Годом, дорогие!
Tags: jasperreports
|
04:50 pm
[Link] | Итак, сегодня мы поговорим об одной маленькой, но неприятной вещи, с которой можно столкнуться, делая раскрывающийся список.
Дело в том, что выставляя getElementById(elem).style.display = "none" и getElementById(elem).style.display = "block", мы получаем лишнее пространство за свёрнутым списком в firefox'e. Проблема решается так - вместо getElementById(elem).style.display = "block"; мы полностью сбрасываем значение display следующим образом: getElementById(elem).style.display = "".
Tags: firefox & ie, javascript
|
10:42 pm
[Link] |
Хороший код - минимизация ошибок. Если есть что-то, что мне не нравится в чужом коде, так это, когда пишут вот так:
if(smth) return yYY; //bla-bla-bla if(anotherSmth) doAnotherSmth(); if(notAnotherSmth) return xXX;
Блин, но это же рассадник для ошибок! Я вполне могу вклиниться в какой-нибудь if, вписать какую-нибудь дурь и совершенно забыть, что if это не увидит, ибо я забыла поставить фигурные скобки.
Я считаю, что нужно писать так:
if(smth) { return yYY; } //bla-bla-bla if(anotherSmth) { doAnotherSmth(); } if(notAnotherSmth) { return xXX; }
Накрайняк, можно и так, если мой вариант кажется слишком топорным:
if(smth) { return yYY;} //bla-bla-bla if(anotherSmth) { doAnotherSmth(); } if(notAnotherSmth) { return xXX; }
Current Location: дома Current Mood: в пафосных размышлениях Tags: код
|
05:38 pm
[Link] |
outerHTML для Firefox.
document.getElementById(ElementID).outerHTML вещь совершенно бесполезная для Firefox. Даже ошибки этот браузер Вам не покажет, а работать не будет. Как быть?
В интернете описана масса способов решения данной проблемы, однако наиболее простым способом лично для меня оказался вот этот:
function setOuterHTML(ElementID, txt) { var someElement = document.getElementById(ElementID);
//работает для IE, но не работает для Firefox. if (someElement.outerHTML) { someElement.outerHTML = txt; }
//работает для Firefox, но не работает для IE. else { var range = document.createRange(); range.setStartBefore(someElement); var docFrag = range.createContextualFragment(txt); someElement.parentNode.replaceChild(docFrag, someElement); } }
Так, например, обратившись к функции setOuterHTML, мы сможем заменить options для select'a.
var newSelect = "<SELECT id='userOtionSet' name='<%=ReportAdminServlet.PARAM_USER_ID %>' class='blackText' >" + users + "</SELECT>";
setOuterHTML("userOtionSet", newSelect);
Current Location: JT Tags: firefox & ie, javascript
|
|