Archive

Archive for the ‘Програмиране’ Category

JDBC connection към BIRT

December 6th, 2010 No comments

И днес продължаваме темата за BIRT и ставаме от advanced – по-advanced. Целта на днешното упражнение е да можем да подаваме произволен java.sql.Connection към BIRT engine-а. Read more…

Параметризирани репорти в BIRT

December 3rd, 2010 No comments

От известно време ми се наложи пак да се захвана с BIRT, но този път идеята беше средата, която ни дава Eclipse, да се използва единствено и само за създаването на репорт дефиницията (.rptdesign), но не и за изпълнението на самите репорти. Read more…

Screen captures using Java

December 30th, 2009 No comments

Един наистина прост пример, с който можем да правим много бързо 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 – дава доста възможности и никак не е за изпускане :)

Tip of the day

November 27th, 2009 1 comment

Разглеждах bgdev.org и случайно попаднах на български сайт с информация и описания на функции от C++. Хареса ми идеята за полето “Съвет на деня” и се зачетох в него. Ето на какво попаднах:

tip

Колко грешки виждате общо във всички редове? :)

Eclipse: escape when pasting

July 6th, 2009 No comments

Хубаво е когато правим някакъв тестов клас и временно в него забиваме път до определен ресурс да не се налага да escape-ваме символи на ръка. Това е само един от многото примери, когато един автоматичен escaping би свършил чудна работа. В Eclipse по подразбиране тази функционалност не е включена, но можем да го направим от

Window>Preference>Java>Editor>Typing и изберем “Escape text when pasting into a string literal

Eclipse Galileo – първи впечатления

June 25th, 2009 No comments

Да – вече е release-ната stable версия. Няма да се задълбавам (и не мога, при мен е от около половин час) – това ще са най-началните впечатления от Galileo.

Най-много ме зарадва, че Galileo запали на 64bit-овата Java, за разлика от Ganymede. Тествах и с 2 версии – 6.0_12 i586 и 6.0_14 x64. За разлика от повечето приложения, за мен тук видима разлика имаше. Като за теста измъкнах един workspace с повечко проекти в него – имаше и малки, имаше и големи – отворих всичките. Разликата във времената за стартиране и пълно зареждане беше видима с просто око.

Второто, което ми направи впечатление беше значително повишените стандартни -Xms и -Xmx аргументи за виртуалната машина, както и PermSize-овете на launcher-ите.

И последното до този момент – install new software прозорецът – Пак имаме имена на линковете, както в по-предните версии и интерфейсът е по-разчупен. Харесва ми!

Ще видим как ще се държи и занапред :)

Separate package loading in Drools

May 12th, 2009 No comments

Първо, линкче към Drools, а след това – малко разяснение за целта на упражнението. Няма да говоря за Drools като технология, нито ще изразявам мнения и вплечатления тук. Ще приема, че мога да говоря с Drools термините – исканото решение имаше за цел да зарежда компилираните пакети runtime и поотделно. Read more…

Eclipse: to upper and lower case shortcuts

April 19th, 2009 No comments

Трябваше да редактирам SQL заявки и държах да са в прилична форма – големи, малки букви, сещате се. След втория criterion ми втръсна и потърсих за shortcut-и. Страхотно е, защото ги има, не се правят допълнително:

  • To upper case: Ctrl + Shift + X
  • To lower case: Ctrl + Shift + Y

Struts2 annotations: redirect action

March 29th, 2009 No comments

Доста време избирах най-подходящия framework за един от проектите и накрая се спрях на Struts 2. Наследник на Struts 1 и WebWork 2, достатъчно гъвкав за целите, достатъчно customizable, лесен за употреба и не много тежък. Read more…

FreeMarker редактор за Eclipse

March 29th, 2009 No comments

Писна ми да чета plain text и да се обърквам какво чета в момента, какво съм прочел, какво следва. Хората са го направили: FreeMarker Eclipse редактор. Засега highlight-ът работи.

Eclipse и стандартите табулации

February 7th, 2009 No comments

Мда, by default Eclipse слага табове, вместо space-ове (обикновено 4). Като цяло е отвратително, защото табовете не са еднакви навсякъде.

Какво имам предвид – да вземем за пример един конфугурационен xml, копиран от файл с tab-ове, вместо space-ове. Копирам го и го цвъквам в конзола с отворен файл – най-обикновен copy/paste. Ами, съдържанието леко се помазва ;) Read more…

JBoss 5.0 под Eclipse

January 1st, 2009 No comments

В новата версия на JBoss (5.0) бяха променени някои от пътищата, където се намират стандартните библиотеки. По тази причина добавянето на JBoss 5.0 в Eclipse беше невъзможно. В bug-tracking системата на Eclipse се появи един доста елементарен workaround.

ASCII spinner в HTML с JavaScript

December 31st, 2008 2 comments

Харесвам, когато има някакво въртящо се 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>

Целият файл под формата на демо може да се види тук.