В цій замітці хочу поділитися про програму, яка значно спрощує розуміння і роботу регулярних виразів –
Expresso
До знайомства із цим продуктом, регулярні вирази давалися мені важко, хоча працювати доводилося і не часто.
Але від часу початку роботи автоматизатором тестування, хочеш-не-хочеш, але рег. вирази потрібно розуміти. І на допомогу прийшла саме ця програма.

VN:F [1.6.3_896]
Rating: 0.0/10 (0 votes cast)
VN:F [1.6.3_896]
Березень 19th, 2010
admin
Із радістю повідомляю, що з під мого пера вийшла програма-настільний клієнт для on-line перекладача від Google. Перш за все вона цікава двома можливостями: Вам більше не потрібно йти на сторінку Google Translate для перекладу, крім цього, ви можете перекладати виділений текст у будь-якому вікні, що підтримує копіювання за допомогою комбінації клавіш Ctrl+C.
Основні можливості цієї програми такі:
- переклад текстів із однієї мови на іншу;
- автоматичне визначення мови тексту;
- переклад виділеного фрагменту тексту за допомогою натиснення комбінації клавіш Ctrl+C+C
- підтримка великої кількості мов;
- програма згортається в системний лоток;
- можливість роботи через проксі-сервер;
- автозавантаження;
- мова інтерфейсу користувача: англійська та українська;
Більш детально ознайомитися із цим продуктом
можна тут. Там же ви зможете знайти посилання для завантаження, а також розташування початкових кодів програми. Буду радий відгукам та побажанням щодо роботи.
Знімки екрану
VN:F [1.6.3_896]
Rating: 0.0/10 (0 votes cast)
VN:F [1.6.3_896]
Вітаю всіх!
Давненько я вже не писав нічого, і ось настав момент наявності часу і натхнення

.
В цій статті я хочу дати вичерпний опис різниці між перевизначенням та перевантаженням в Java.
Далі…VN:F [1.6.3_896]
Rating: 0.0/10 (0 votes cast)
VN:F [1.6.3_896]
Сьогодні хочу написати про ще декілька нюансів при роботі із шаблоном проектування
Одинак (англ. Singleton). У статті про деякі
проблеми при його реалізації наведено найпоширеніший підхід за допомогою використання приватного поля із модифікатором
final та статичної фабрики (
static factory).
Зазначу, що існує ще також подібний метод реалізації – за допомогою публічного final-поля:
// Singleton with public final field
public class Singleton{
public static final Singleton INSTANCE = new Singleton();
private Singleton() { ... }
}
Але виграшу цей метод майже не дає: сучасні віртуальні машини Java вміють робити inline-виклики методи статичних фабрик (static factory methods)
Але дана реалізація може не виконувати своєї основної функції – не дозволяти створення більше одного екземпляру класу. Це може статися у двох випадках. На них і зупинимося
Далі…VN:F [1.6.3_896]
Rating: 8.0/10 (1 vote cast)
VN:F [1.6.3_896]
Незмінні об’єкти – (англ.: immutable objects) це просто об’єкти, стан яких (їх внутрішні дані) не може змінюватися після його конструювання. Прикладами таких класів у JDK є String та Integer.
Значення незмінних об’єктів
Незмінні об’єкти мають дуже переконливий список позитивних якостей. Без сумніву, вони відносяться до числа найбільш простих і надійних класів, які програміст може створити. При використанні незмінних класів зникає цілий ряд проблем при створенні програм (наприклад, скорочуються затрати на синхронізацію і забезпечення цілісності даних).
Незмінні об’єкти виявляються особливо корисними для паралельних програм. Оскільки вони не можуть змінити стан, вони не можуть бути пошкоджені якимось потоком і перебувати у нецілісному стані.
Програмісти часто неохоче використовують такі класи, оскільки вважають, що затрати на створення нового об’єкта не дадуть виграшу в порівнянні із модифікацією об’єкта на місці. Хоча затрати на створення об’єкта часто переоцінюють і забувають, що це може бути з лихвою компенсовано ефективнішою роботою із незмінними об’єктами – сюди входить зниження накладних витрат на збирання сміття (garbage collection
) і зменшення кількості коду, необхідного для забезпечення цілісності змінюваних об’єктів.
Далі…VN:F [1.6.3_896]
Rating: 0.0/10 (0 votes cast)
VN:F [1.6.3_896]
Захисне копіювання об’єктів застосовується тоді, коли клас містить об’єктні поля, стан яких може модифікуватися тільки даним класом. Наприклад, розглянемо приклад:
package defencivecopyingsample;
import java.util.Date;
class NotImmutable {
private Date dt = new Date();
public long getTime() {
return dt.getTime();
}
public Date getDate(){
return dt;
}
}
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
NotImmutable obj = new NotImmutable();
Date d = obj.getDate();
System.out.println(obj.getTime());
d.setTime(1);
System.out.println(obj.getTime());
}
}
Результат виконання:
1261782744531
1
В цьому прикладі маємо клас NotImmutable, яки має приватний член Date dt. За допомогою методу getDate() можна отримати доступ до приватного поля dt, оскільки метод повертає
посилання на об’єкт dt, а не його копію. Клієнтський код створює об’єкт типу NotImmutable, отримує посилання на приватний член і модифікує його. Оскільки це посилання,зміни зачіпають і приватне поле. Програміст, який пише клієнтський код навіть може і не знати того, що він змінив стан об’єкта obj (він просто працював із іншим об’єктом). Це може призвести до неузгодженості даних та помилок в роботі програми.
Щоб цього уникнути, потрібно використовувати так зване захисне копіювання. Розглянемо це на прикладі:
package defencivecopyingsample;
import java.util.Date;
class NotImmutable {
private Date dt = new Date();
public long getTime() {
return dt.getTime();
}
public Date getDate() {
return new Date(dt.getTime());
}
public void setDate(Date dt) {
this.dt = new Date(dt.getTime());
}
}
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
NotImmutable obj = new NotImmutable();
Date d = obj.getDate();
System.out.println(obj.getTime());
d.setTime(1);
System.out.println(obj.getTime());
}
}
Виведення даного прикладу:
1261783307000
1261783307000
Зверніть увагу на реалізацію методів getDate() та setDate(Date dt). Замість копіювання посилань на об’єкти і створюються нові об’єкти. Це гарантуватиме те, що приватні члени ваших класів не будуть змінені із назовні.
VN:F [1.6.3_896]
Rating: 1.0/10 (1 vote cast)
VN:F [1.6.3_896]
Як відомо, в Java щоб заборонити успадкування від даного класу потрібно використати ключове слово final. Наприкла, наступний клас не може мати нащадків:
final class CantHaveChildren{
public final int x;
public CantHaveChildren() {
x = 0;
}
public CantHaveChildren(int x) {
this.x = x;
}
}
У даному пості я хочу сказати, що можна також заборонити успадкування від класу просто зробивши конструктор приватним:
package privateconstructors;
/**
*
* @author <a href="http://bytes.org.ua/">Vitaliy Ganzha</a>
*/
class Parent {
public final int x;
private Parent() {
x = 0;
}
public Parent(int x) {
this.x = x;
}
}
public class Main extends Parent {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}
}
При спробі компіляції даного коду отримаємо помилку:
cannot find symbol
symbol : constructor Parent()
location: class privateconstructors.Parent
public class Main extends Parent {
Цей факт потрібно враховувати при використанні статичних фабрик створення об’єктів (static factory methods,[Effective Java Second Edition by Joshua Bloch]). При використанні даного підходу неможливо створити об’єкт безпосередньо (всі вони приватні). Створення об’єктів здійснюється за допомогою статичних методів класу.
VN:F [1.6.3_896]
Rating: 10.0/10 (1 vote cast)
VN:F [1.6.3_896]
Вітаю всіх!
Дана публікація буде присвячена ключовому слову мови
Java -
transient.
Щоб зрозуміти для чого призначене це слово, потрібно розуміти, що таке серіалізація (
Serialization).
Далі…VN:F [1.6.3_896]
Rating: 0.0/10 (0 votes cast)
VN:F [1.6.3_896]
Вітаю всіх читачів!
У цій статті хочу показати різницю між двома підходами до написання класів Java:
- Використання публічних членів класів;
- використання приватних членів класів та відкриття доступу до них за допомогою getters/setters.
В самому простому випадку можна дозволити собі обрати той метод, який тобі до вподоби, але при створенні ієрархії класів ситуація змінюється.
Далі…VN:F [1.6.3_896]
Rating: 0.0/10 (0 votes cast)
VN:F [1.6.3_896]
Листопад 18th, 2009
admin
Сьогодні світ побачила версія 0.0.3 набору плагінів для
Джири –
JIRA Plugin Pack.
Основні нововведення такі:
- Assign issue to group member (workflow post function) - тепер ця пост-функція при модифікації значення поля цю зміну записує в історію роботи по заявці;
- Add user to watcher list (workflow post function) – додано можливість встановлювати спостерігачами вибраних користувачів. Раніше список був обмежений поточним виконавцем/автором/поточним користувачем. Але тепер для роботи плагіну потрібно також втсановлений JIRA Watcher Field.
- Початкові коди проекту було модифіковано під використання Maven та Atlassian Plugin Development Kit 3.0.
Значний внесок в цей реліз зробив
Lon Binder (Vice President of Technology at Folica Inc.), за що йому окрема подяка!
Додаткові інформацію можна отримати на
офіційній сторінціVN:F [1.6.3_896]
Rating: 0.0/10 (0 votes cast)
VN:F [1.6.3_896]
Останні коментарі