nov 132014
 

Some days ago there was a seminar held by the Bulgarian Java User Group with topic “REST, HATEOAS, Novelties in JAX-RS 2.0 & Spring HATEOAS”. I talked about the Spring HATEOAS related piece presenting a small demo project I developed beforehand with Spring HATEOAS.

The code along with a few wiki pages with rough explanations of what is done and how to be used are available on my GitHub account.

Share Button
ago 232013
 

En PL/SQL, para iterar sobre una lista de valores (strings, integers etc.) que no están obtenido de una tabla, view etc., se tiene que hacer lo siguiente:

DECLARE
  -- 1. declare a list type
  TYPE STR_LIST_TYPE IS TABLE OF VARCHAR2(15);

  -- 2. declare the variable of the list
  V_STR_VALUES STR_LIST_TYPE;

  -- 3. optional variable to store single values
  V_STR_VALUE VARCHAR2(15);

BEGIN

  -- 4. initialize the list of values to be iterated in a for-loop
  V_STR_VALUES := STR_LIST_TYPE('String 1','String 2');

  -- 5. iterating over the values
  FOR INDX IN V_COLUMN_NAMES.FIRST..V_COLUMN_NAMES.LAST
  LOOP
  
    -- 6. accessing the value itself
    V_STR_VALUE := V_STR_VALUES(INDX);
    
  END LOOP;     
END;
Share Button
mar 212013
 

Днес, 21.03.2013 г, ще се проведе семинар на тема “Eclipse plug-in development” пред българската Java потребителска група (BG-JUG). Семинарът ще бъде в зала 299 на ФМИ с начало19:00 ч.

eclipse-plugin-development-poster

Повече за семинара

На семинара ще бъдат разгледани следните въпроси:

  1. Кратка история и развитие на платформата Eclipse
  2. OSGi и реализация в Eclipse
  3. Архитектура и основни компоненти на платформата Eclipse
  4. Структура на Eclipse
  5. Разработване на плъгини за Eclipse

По време на семинара ще се наблегне и на новостите в e4.

Лектори

Лектори на семинара ще бъдат Мартин Тошев и Дмитрий Александров.

Това е обявата на събитието и на сайта на BG-JUG.

Share Button
mar 152012
 

За сбирката

Книга "Класически шаблони за дизайн"

Книга “Класически шаблони за дизайн”

След първата организационна сбирка (която се състоя на 19.12.20011) и края на първата итерация от проекта за написването на книга за класически шаблони за (софтуерен) дизайн, екипът на книгата реши да се събере отново и втората сбирка ще се състои на 17.03.2012 (събота) от 10 ч, в учебен център “SoftAcad”, намиращ се на следния адрес:

ул. Проф. Кирил Попов 27, кв. Студентски град, гр. София [карта]

За хората, които не са в България и не могат да присъстват физически, ще могат да “присъстват” чрез WebEx конферентен разговор. За целта просто трябва да ни уведомят.

Някои от по-важните теми на сбирката ще са следните:

  1. Състояние на проекта
  2. Ретроспекция на работата до момента (какво мина добре, какво не чак толкова, какво е добре да започнем да правим и т.н.)
  3. Обсъждане на критериите за изключване на несериозни/немотивириани автори от екипа
  4. Организация и продължителност на бъдещите итерации
  5. Избиране на автори и редактори на оставащите теми от книгата

За проекта

Целта на проекта е да се създаде оригинална българска книга с отворен код, по подобие на книгите “Въведение в програмирането с Java” и “Въведение в програмирането със С#”, която предоставя изчерпателна и актуална информация за шаблоните за софтуерен дизайн (design patterns), служейки еднакво добре, както за въведение в материята, така и като справочник. Като евентуално начало на поредица от книги за шаблони за софтуерен дизайн, тази книга ще обхваща най-често използваните (“класически”) шаблони за софтуерен дизайн (GoF patterns). Ако всичко приключи добре, инициативата може да продължи с други поредица от проекти за написване на книги за архитектурни шаблони, интеграционни шаблони, шаблони за конкурентно програмиране и т.н. Друга цел на проекта е да предостави безплатен достъп до електронната версия на книгата. Цената на хартиеното копие ще бъде в размера на разходите за отпечатване и дистрибуция, като сумата събрана от продажбата ще се преизползва за следващи тиражи

Организационният екип на този проект се ръководи от Цветан Василев, Николай Томитов и мен.

Относно присъединяването на НОВИ автори и редактори

Тъй като се опитваме да ръководим проекта, следвайки модифициран вариант на Scrum методологията, това ни дава възможност да сме гъвкави, относно присъединяването на нови автори и редактори към екипа. В този ред на мисли, ако някой има желание да се включи в проекта, ще бъде добре дошъл(а), стига да е сериозен/сериозна и да има желание да отдели част от свободното си време за създаването на тази книга 🙂 За целта, моля присъединете се към дискусионната група на книгата и чрез нея се свържете с нас. Връзката с организационния екип на проекта можете да осъществите също, като ни пишете на design.patterns.book.team [кльомба] gmail.com. Естествено, ако имате желание да се включите,  можете да дойдете директно на сбирката и да обсъдим включването Ви 🙂

Съдържание на книгата за шаблони за дизайн

Книга за софтуерни шаблони за дизайн се състои от няколко части. Първата част представлява кратко въведение в основните принципи на софтуерен дизайн. Втората излага трите групи “класически” шаблони, а именно за създаване на обекти, структурни и поведенчески. Третата част е своеобразен преход към евентуална книга за архитектурни шаблони и представя многослойната архитектура и шаблона MVC. Четвъртата част евентуално ще съдържа материал, който е важен за изложението но не се вписва в контекста на нито една от предходните три части. Книгата ще следва до някъде класическите концепции от GoF, но няма да е превод на тяхната книга, а ще дава съвременно виждане за шаблоните с имплементация на Java и примери от практическия опит на авторите. Следва планираното съдържание на книгата по глави:

Предговор

Част 1. Софтуерен дизайн – общи положения

Глава 1. Основни етапи при разработката на софтуер Глава 2. Принципи и техники на ООП Глава 3.1. Принципи на обектно-ориентиран дизайн Глава 3.2. Принципи SOLID Глава 4. Кратко въведение в UML

Част 2. Класически шаблони за дизайн

Глава 5. Шаблони за дизайн – въведение

Шаблони за създаване на обекти (Creational Patterns)

Глава 6. Абстрактна фабрика (Abstract Factory) Глава 7. Строител (Builder) Глава 8. Метод фабрика (Factory Method) Глава 9. Прототип (Prototype) Глава 10. Сингълтон (Singleton)

Структурни шаблони (Structural Patterns)

Глава 11. Адаптер (Adapter) Глава 12. Мост (Bridge) Глава 13. Композиция (Composite) Глава 14. Декоратор / обвивка (Decorator / Wrapper) Глава 15. Фасада (Façade) Глава 16. Миниобект (Flyweight) Глава 17. Прокси (Proxy)

Поведенчески шаблони (Behavioral Patterns)

Глава 18. Верига от отговорности (Chain of Responsibility) Глава 19. Команда (Command) Глава 20. Интерпретатор (Interpreter) Глава 21. Итератор (Iterator) Глава 22. Посредник (Mediator) Глава 23. Спомен/Мементо (Memento) Глава 24. Наблюдател (Observer) Глава 25. Състояние (State) Глава 26. Стратегия (Strategy) Глава 27. Шаблонен метод (Template Method) Глава 28. Посетител (Visitor)

Част 3. Допълнителни шаблони за дизайн

Глава 29. Многослойна архитектура (Multilayer Architecture) Глава 30. Модел-презентация-контролер (MVC)

Част 4. Приложения*

* в процес на изясняване

Сайт на проекта – безплатна книга за шаблони за софтуерен дизайн

Официалният сайт на книгата за шаблони за софтуерен дизайн за момента е в Google Code: http://code.google.com/p/design-patterns-book. Дискусионна група на проекта е: http://groups.google.com/group/design-patterns-book. Всички активи по проекта са публично достъпни от неговото SVN хранилище: http://design-patterns-book.googlecode.com/svn/trunk/. Следващата итерация (за редакция на написаното до момента) ще започне най-вероятно идната седмица, а тази, за писане на глави, най-вероятно – след две седмици, така че не е късно да се включите. 🙂 Забележка: Фонът на картинката е от творба на Ешер, взета от този сайт: http://www.wikipaintings.org/en/m-c-escher/symmetry-watercolor-55-fish

Share Button
ago 222011
 

Una versión concreta de  Firefox se puede descargar de la dirección siguiente:

http://www.mozilla.com/en-US/products/download.html?product=firefox-[VERSION]&os=win&lang=en-US

donde [VERSION] es la versión deseada. Por ejemplo para versión 5.0 el URL estará: http://www.mozilla.com/en-US/products/download.html?product=firefox-5.0&os=win&lang=en-US

Share Button
ago 092011
 
Nakov & Co. - Introducción en Programmación con С#

Nakov & Co. - Introducción en Programmación con С#

La otra tarde me informaron que oficialmente se publicó el segundo libro “Introducción en Programación con C#” (en búlgaro), en el que participo como autor.

Aquí pongo alguna información sobre el libro:

El libro es un libro de texto detallado sobre la introducción a la programación, estructuras de datos y pensamiento algorítmico.  La información está basada completamente en el material del libro anterior “Introducción en Programación con Java”, aunque mas extendido. Como se puede deducir del titulo del libro, para representar los conceptos y los ejemplos se utiliza la plataforma .NET y el lenguaje de programación C#. Aquí está un pasaje conciso de la pagina oficial del libro:

El libro se considera como una serie de lecciones en programación – comenzando con la base de la programación, entorno de desarrollo, variables, operadores, arrays, bucles y continuando con la introducción de conceptos mas complejos como recursión, estructuras de datos básicas y algoritmos clásicos, listas, arboles, grafos, tablas hash, evaluación de la complejidad de algoritmos, programación orientada a objetos (OOP), consultas (queries) de LINQ  y construcción de código de programación con calidad.

Cada capítulo del libro, siguiendo de la tradición de “Introducción en Programación con Java”, tiene gran numero de ejemplos y ejercicios al final de cada lección. Ademas, junto con el libro, hay materiales adicionales (de nuevo en búlgaro) como:

También este libro es un libro con código fuente libre y la versión electrónica es gratis y se puede descargar de la página oficial del libro http://www.introprogramming.info/ o de la pagina – http://code.google.com/p/introcsharpbook. Se tiene que mencionar que el libro se puede leer en-linea en la dirección siguiente – http://www.introprogramming.info/intro-csharp-book/read-online. Según de los organizadores, la copia impresa del libro se publicará al fin del septiembre 2011.

Aunque “Introducción en Programación con Java” es mi libro favorito (porque fue el primero y porque está relacionado con Java), creo, que “Introducción en Programación con C#” en muchas maneras es un libro mejor, porque el contenido es mas extenso. Independientemente de eso, creo que la opinión de Svetlin es un poco extrema, diciendo que “Introducción en Programación con Java” ” no es recomendable” para principiantes en programación. Por supuesto él tiene su motivos para recomendar el libro nuevo, pero en mi opinión el libro anterior tiene una calidad extraordinaria y es un guía maravillosa para la introducción en programación.

Espero que proyectos como estos, que unen a gente con ideas e intereses comunes que desean contribuir a la sociedad sin esperar nada a cambio, se conviertan en una tendencia y dejen de ser hechos aislados. De esta forma quizás mas gente dejará de quejarse de la situación del país, despertará su creatividad y entenderá que la única  esperanza para levantarnos como una sociedad y movernos hacia un futuro mejor está oculta en nosotros mismos.

Share Button
jul 152011
 

A month ago I gave a talk on Bulgarian Java User Group. The topic was “BDD with JBehave and Selenium”, introducing Behaviour Driven Development concept, JBehave basics and finally presenting an example of how JBehave could be integrated with Selenium.

The slides could be found on my Slideshare account:

The presentation and the code could be downloaded from google code repository: http://tinyurl.com/6xoz4sp

Both of them are published under CC-BY licence.

Share Button
oct 102007
 

Във връзка с въпроса:

Къде (и в какъв ред) се търсят *.properties файловете, когато се зареждат с:
ResourceBundle.getBundle(filename)

се поразрових и преведох следната интересна информация:

1) .properties файловете се зареждат от classloader-а, подобно на .java класовете, т.е. трябва местоположението им да е включено в CLASSPATH променливата на средата.

2) .properties файловете имат пълно име (fully-qualified-resource-name), както при .java класовете, с изключение на това, че не може да се извършва import на ресурcи (.properties файлове) в някой .java клас.

3)

ResourceBundle.getBundle("myBundleProps")

указва на classloader-a да зареди ресурс с име myBundleProps в пакета по подразбиране. Това не значи, че ресурса трябва да е в текущия пакет, в който е класа, от който се зарежда.

4)

ResourceBundle.getBundle("package1.package2.package3.myBundleProps")

указва на classloader-a да зареди ресурс myBundleProps с пакет package1.package2.package3. Неговото пълно име (fully-qualified-resource-name) съответно е
package1.package2.package3.myBundleProps.

Т.е. ако директорийната структура на проекта е следната:

project_path
    +-- src
    |      +-- package1
    |            +-- package2
    |                  +-- package3
    |                        +-- TestResourceBundle.java
    +-- classes
           +-- package1
                 +-- package2
                       +-- package3
                             +-- TestResourceBundle.class
                             +-- myBundleProps.properties

и ако в TestResourceBundle.java, ResourceBundel класa се зарежда със следният код:

ResourceBundle myBundleProps = ResourceBundle.getBundle(
                                                   "myBundleProps");

е нужно myBundleProps.properties да се копира в project_path/classes, на същото директорийно ниво на project1 папката. Като алтернатива може да се пакетира myBundleProps.properties в един .jar файл, така че myBundleProps.properties да е в главната директория в .jar архива, който няма никакви поддиректории архивирани в него. След това трябва да се добави този .jar файл в CLASSPATH променливата на средата.

Ако в TestResourceBundle.java се зарежда обект от тип ResourceBundel със следният код:

ResourceBundle myBundleProps = ResourceBundle.getBundle(
                       "package1.package2.package3.myBundleProps");

Тогава е нужно да се копира myBundleProps.properties в
project_path/classes/package1/package2/package3. Като алтернатива, може да се сложи
package1/package2/package3/myBundleProps.properties съответно в един .jar файл (запазвайки директорийната структура на пакетите и в него) и да се добави този .jar файл в CLASSPATH променливата на средата.

Причините за гореописаните начини за употреба на .properties ресурсни файлове са следните:

1) Прозрачност в локализирането на файла – по време на изпълнение на програмата, myBundleProps.properties НЕ е файл, той е просто ресурс, който се зарежда. myBundleProps.properties може да не се съдържа в проекта като цяло, и човека който пише TestResourceBundle.java може изобщо да не види този ресурс. Един URLClassLoader може да го намери в мрежовия път или в URL по време на изпълнение. Това специално е важно за server-side компоненти като EJB, Servlet, JSP и т.н., който по принцип нямат достъп до файловата система. При опит да се получи даден ресурс от classloader, няма значение къде се съхранява съответният ресурс.

2) Mеханизма при работа когато имаш namespaces – конструирайки програмата с пакети, това позволява множество други пакети да съдържат ресурсни файлове (.properties файлове) със същото кратко име (в случая myBundleProps.properties) без това да причинява конфликти в цялата работа на системата. Това е като java пакетите и xml namcesaces.

[Източник: http://blogs.sun.com/chengfang/entry/p_java_util_missingresourceexception_can]

Share Button