Един наистина прост пример, с който можем да правим много бързо screenshot-ове, използвайки Java:
1 2 3 4 5 6 7 8 9 10 11 12
| public class ScreenCapture {
public static void main(String[] args) throws Exception {
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
BufferedImage image = new Robot().createScreenCapture(new Rectangle(dimension));
File file = new File("capture.png");
ImageIO.write(image, "png", file);
}
} |
Не е загуба ако се разгледа класа ImageIO – дава доста възможности и никак не е за изпускане :)
Разглеждах bgdev.org и случайно попаднах на български сайт с информация и описания на функции от C++. Хареса ми идеята за полето “Съвет на деня” и се зачетох в него. Ето на какво попаднах:

Колко грешки виждате общо във всички редове? :)
Хубаво е когато правим някакъв тестов клас и временно в него забиваме път до определен ресурс да не се налага да escape-ваме символи на ръка. Това е само един от многото примери, когато един автоматичен escaping би свършил чудна работа. В Eclipse по подразбиране тази функционалност не е включена, но можем да го направим от
Window>Preference>Java>Editor>Typing и изберем “Escape text when pasting into a string literal“
Да – вече е release-ната stable версия. Няма да се задълбавам (и не мога, при мен е от около половин час) – това ще са най-началните впечатления от Galileo.
Най-много ме зарадва, че Galileo запали на 64bit-овата Java, за разлика от Ganymede. Тествах и с 2 версии – 6.0_12 i586 и 6.0_14 x64. За разлика от повечето приложения, за мен тук видима разлика имаше. Като за теста измъкнах един workspace с повечко проекти в него – имаше и малки, имаше и големи – отворих всичките. Разликата във времената за стартиране и пълно зареждане беше видима с просто око.
Второто, което ми направи впечатление беше значително повишените стандартни -Xms и -Xmx аргументи за виртуалната машина, както и PermSize-овете на launcher-ите.
И последното до този момент – install new software прозорецът – Пак имаме имена на линковете, както в по-предните версии и интерфейсът е по-разчупен. Харесва ми!
Ще видим как ще се държи и занапред :)
Първо, линкче към Drools, а след това – малко разяснение за целта на упражнението. Няма да говоря за Drools като технология, нито ще изразявам мнения и вплечатления тук. Ще приема, че мога да говоря с Drools термините – исканото решение имаше за цел да зарежда компилираните пакети runtime и поотделно. Read more…
Categories: How to, Програмиране, Софтуер Tags: dools, drl, java, jboss, loading, packages, pkg, separate, stream, url
Трябваше да редактирам SQL заявки и държах да са в прилична форма – големи, малки букви, сещате се. След втория criterion ми втръсна и потърсих за shortcut-и. Страхотно е, защото ги има, не се правят допълнително:
- To upper case: Ctrl + Shift + X
- To lower case: Ctrl + Shift + Y
Доста време избирах най-подходящия framework за един от проектите и накрая се спрях на Struts 2. Наследник на Struts 1 и WebWork 2, достатъчно гъвкав за целите, достатъчно customizable, лесен за употреба и не много тежък. Read more…
Categories: Програмиране, Софтуер Tags: action, annotation, framework, howto, mapping, redirect, result, struts, struts 2, webwork, xml, анотация
Писна ми да чета plain text и да се обърквам какво чета в момента, какво съм прочел, какво следва. Хората са го направили: FreeMarker Eclipse редактор. Засега highlight-ът работи.
Мда, by default Eclipse слага табове, вместо space-ове (обикновено 4). Като цяло е отвратително, защото табовете не са еднакви навсякъде.
Какво имам предвид – да вземем за пример един конфугурационен xml, копиран от файл с tab-ове, вместо space-ове. Копирам го и го цвъквам в конзола с отворен файл – най-обикновен copy/paste. Ами, съдържанието леко се помазва ;) Read more…
Categories: Програмиране, Софтуер Tags: css, eclipse, framework, html, java, javascript, jsp, perl, server, space, tab, text, xml, редактор, табулация, таг
В новата версия на JBoss (5.0) бяха променени някои от пътищата, където се намират стандартните библиотеки. По тази причина добавянето на JBoss 5.0 в Eclipse беше невъзможно. В bug-tracking системата на Eclipse се появи един доста елементарен workaround.
Харесвам, когато има някакво въртящо се gif-че, което симулира прогрес при някакъв процес. Ето защо направих пренасочващата главна страница да се държи по подобен начин. Вложената доза шега е… Огромна и е породена от НАЙ-НАЙ-прекрасния торент клиент за мен – ctorrent. Няма значение, отплеснах се…
Като цяло не е нищо кой-знае какво, просто първата идея за имплементация, за която се сетих. Какво представлява: масив с 4 елемента – “\”, “|”, “/” и “-”, които непрекъснато се показват един след друг през определено време. Спинър-а не е cвързан с извършения прогрес! Трябва ни html страница и малко JavaScript. Ето JS-a:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| <script type="text/javascript">
var spinnerElements = new Array("\\", "|", "/", "-");
var spinnerIntervalId;
var prevIndex = 0;
function getById(elementId) {
if (document.getElementById) {
return document.getElementById(elementId);
} else if (document.all) {
return document.all[elementId];
} else if (document.layers) {
return document.layers[elementId];
}
return null;
}
function setSpinnerValue(value) {
getById("spinner").innerHTML = value;
}
function getNextValue() {
if (prevIndex >= spinnerElements.length) {
prevIndex = 0;
}
var value = spinnerElements[prevIndex];
prevIndex++;
return value;
}
function startSpinner() {
spinnerIntervalId = setInterval("setSpinnerValue(getNextValue());", 250);
}
function stopSpinner() {
if (spinnerIntervalId != null) {
clearInterval(spinnerIntervalId);
spinnerIntervalId = null;
}
}
</script> |
Малко CSS:
1 2 3 4 5 6 7 8 9 10
| <style type="text/css">
span#spinner {
font-size: 16pt;
font-weight: bold;
}
a {
color: #0000EE;
}
</style> |
И няколкото реда HTML:
1 2 3 4 5 6 7 8 9 10 11 12
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Spinner</title>
</head>
<body>
<a href="#" onClick="startSpinner();">start</a>
<a href="#" onClick="stopSpinner();">stop</a>
<span> [ <span id="spinner">-</span> ]</span>
</body>
</html> |
Целият файл под формата на демо може да се види тук.
Необходими ресурси:
Ще използвам C:\DEVELOP за директория, в която ще се намират всичките необходими компоненти. Там разархивираме Tomcat-а (C:\DEVELOP\apache-tomcat-6.0.18), както и PHP-архива (C:\DEVELOP\php-5.2.6-Win32). В системните променливи трябва да имаме няколко допълнителни – JAVA_HOME, ако все още не съществува, PHP_HOME и TOMCAT_HOME. Тези променливи трябва да сочат към главните съответни директории. В системния път (%PATH%) добавяме и %PHP_HOME%.
Отваряме %TOMCAT_HOME%\webapps, и създаваме директория test-php, а в нея – html-example.html (с най-просто съдържание), за да тестваме дали Tomcat работи. Стартираме Tomcat и отваряме http://localhost:8080/test-php/html-example.html. Ще изпреварим малко събитията и ще поготвим няколко други директории в test-php: WEB-INF, WEB-INF/lib. На нивото на html-example.html създаваме още една примерна страница, но този път за тестване на php: php-example.php със съдържание <?php phpinfo(); ?>
Отваряме %PHP_HOME%, копираме php.ini-dist в име php.ini и го отваряме за редакция. Разкоментираме реда с ;extension=php_java.dll, а ако той не съществува, добавяме само extension=php_java.dll (редовете, започващи с ; са коментари). От PECL-архива разархивираме php5servlet.dll и php_java.dll в %PHP_HOME%. Също от този архив взимаме phpsrvlt.jar и го оставяме в test-php/WEB-INF/lib. Отваряме jar-а (с jar или най-обикновен zip де/архиватор) и правим 2 промени в net/php/reflect.properties и net/php/servlet.properties: и в двата файла променяме реда library=php5srvlt на library=php5servlet (показват името на dll-файла, който ще се търси). Записваме ги и ги вкарваме обратно в .jar-архива (отново с jar или zip де/архиватор).
Отново се сръщаме в test-php/WEB-INF и в нея създаваме web.xml файл. Ето и неговото съдържание
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <web-app>
<display-name>test-php</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.php</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>php</servlet-name>
<servlet-class>net.php.servlet</servlet-class>
</servlet>
<servlet>
<servlet-name>php-formatter</servlet-name>
<servlet-class>net.php.formatter</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>php</servlet-name>
<url-pattern>*.php</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>php-formatter</servlet-name>
<url-pattern>*.phps</url-pattern>
</servlet-mapping>
</web-app> |
Стартираме Tomcat, отваряме http://localhost:8080/test-php/php-example.php и при успешно изпълнение на горните стъпки трябва да видим PHP Info страницата.
ВАЖНО: тези .dll файлове с x64 архитектури на Windows не са съвместими!
Последни коментари