.bash_aliases с автоприменением

После добавления алиаса в .bash_aliases приходится делать source ~/.bash_aliases, чтобы незамедлительно воспользоваться свежепридуманым алиасом. Надоело?

Есть маленькая хитрость, которая избавит вас от рутины. Нужно просто добавить алиас для редактирования самого файла алиасов с автоматическим применением после сохранения, просто добавьте в ваш .bash_aliases:

alias editalias=’edit ~/.bash_aliases && source ~/.bash_aliases’

Ну и конечно любителям vim может понравиться алиас с другим именем:

Продолжить чтение «.bash_aliases с автоприменением»

JMX MBean Scala example

Это простой пример Management Bean на Scala.

В scala нет интерфейсов, вместо них — трэйты.
И так, создаём трейт, определяем в нём геттеры, создаём класс наследующий трейт, регистрируем инстанс в MBeanServer, всё. Имена классов выбираются не просто так, имя трейта должно совпадать с именем класса реализации и заканчиваться на «MBean», как в нашем примере:

    trait StatusMBean
    class Status extends StatusMBean

Хоть scala и разрешает нам писать все классы в одном файле, для порядка создадим два файла. class Status это реализация нашего MBean интерфейса, которая считает количество символов. class MBeanMain это тестовое приложение, читает строки с консоли и регистрирует каждый символ в бине Status. В трейте (интерфейсе) StatusMBean объявлен метод возвращающий все символы в виде строки, и список пар символ-количество в виде массива строк. Вообще MBean может отдавать только примитивные типы, и массивы примитивных типов.

Продолжить чтение «JMX MBean Scala example»

Windows 7 Ярлыки

Буквально позавчера узнал о особенности ярлыков в Win 7. Наверное все помнят как это было в XP: переименовал папку где файлик лежит — ярлык на него сломался. Теперь всё не так. При переименовании / перемещении папки с файлом на который создан ярлык, который лежит например на рабочем столе, тоже меняется. Что конечно же не может не радовать. Хотя всё же может не радовать. Вот создал ты папку, положил туда Tomcat, и чтоб не париться сделал ярлык на startup.bat. После тебе захотелось «подменить» сервер. перемещаешь папу, создаёшь с таким же название ещё одну, кладёшь туда другой сервер, а запускается всё тот же, старый. А ты ломаешь голову, откуда он эти пути взял.

Нужно быть внимательней.

Virtual Box и залипающая хост-клавиша

В недалёком прошлом у Virtual Box (теперь уже Oracle) был баг, не то что бы существенный, но изрядно мешающи работать, особенно если любишь по-переключаться между виртуалкой и основной системой.
Залипала хост-клавиша. (как правило Right Ctrl)
После определённых мучений, и изрядно пострадавших прорамм, от наплыва клавиатурных сокращений и щелчков мышкой с зажатой клавишей Crtl, пришло в голову достаточно простое, но эффективное решение. Поменять хост-клавишу на F1. С тех пор так и не нашлось программ использующих, скажем такое сочетание: F1+R.
vbox hot key

OpenSolaris NetBeans g++

Если при сборке проекта с++ в NetBeans у вас появляются подобные сообщения:

g++ -o dist/Debug/GNU-Solaris-x86/cftp build/Debug/GNU-Solaris-x86/main.o -lsocket -lnsl -lposix4
Undefined                        first referenced
 symbol                              in file
FTPClient::~FTPClient()             build/Debug/GNU-Solaris-x86/main.o
FTPClient::FTPClient()              build/Debug/GNU-Solaris-x86/main.o
ld: fatal: symbol referencing errors. No output written to dist/Debug/GNU-Solaris-x86/cftp
collect2: ld returned 1 exit status

Причём как мы видим стандартная библиотека подключена, сокеты тоже. (-lsocket -lnsl -lposix4) Файлы класса (h, cpp) лежат одной папке с main.cpp. То есть как бы всё в порядке. Но …

Продолжить чтение «OpenSolaris NetBeans g++»

Проблемы с библиотеками

Не так давно я взялся за Java3D. Но как ни странно эту затею пришлось отложить, потому как на JDK1.7 x64 под Windows он категорически отказался работать. Рендеринг происходил только в апплетах, ито через раз. Но прошло время, я поставил JDK1.6 x86, скачал сборку EclipseEE, пытался изучать Hibernate, и тут я вспомнил про Java3D. Ведь был в моей практике похожий случай: Visual Editor для эклипса нивкакую не хотел устанавляваться под JDK1.7, но после длетельных войн поставился на сборку EclipseEE. Не долго думая скачал Java3D, установил, попытался скомпилировать простейший пример, не вышло. Eclipse вотрил мне Access restriction: The type Canvas3D is not accessible due to restriction on required library C:\Program Files (x86)\Java\jre6\lib\ext\j3dcore.jar. Решение нашол в этом блоге, и был несказанно счастлив.
Перейдём к сути. Ошибка возникает из-за неправильной конфигурации Eclipse компилятора Java. Необходимо изменить «Forbidden reference (access rules)» в пункте «Deprecated and restricted API» с «Error» на «Warning».

После Eclipse предложит перекомпилиовать все проекты. И ещё добавить SuppressWarnings(«restriction»)

Проблема с Visual Editor в Eclipse

Использую eclipse Gallileo 3.5.1 и Visual Editor 1.4, сегодня столкнулся с такой проблемой:

При создании нового визуального класса, и попытки открыть его в Visual Editor возникала следующая ошибка:

error trying to set new file into editor

reason: java.lang.NullPointExeption

Собственно дальше ошибки ничего не происходит. Быстро нашел на www.eclipsezone.com решение проблемы в ветке форума. Необходимо сделать следующие:

1. Закрыть все окна VE.

2. В главном меню Project –> Clean, далее Clean All

3. Дождаться завершения операции.

Теперь можно попробовать открыть VE снова, всё должно работать.

Apache Derby (JavaDB) SQL авто-инкрементное поле

Как создать SQL запрос для создания таблицы с авто-инкрементное полем для сервера Apach Derby (JavaDC) На подобие MySQL запроса

CREATE TABLE <table_name> (
	ID INT NOT NULL AUTO_INCREMENT,
	<field_name> <field_type> [...]
);

Ведь JavaDB ругается на AUTO_INCREMNT. Не отчаеватесь, всё достаточно просто, вот пример, где можно видеть как настроить авто-заполнение первичного ключа:

CREATE TABLE <table_name> (
	ID INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
	<field_name> <field_type> [...]
);

А так можно указать диапазон значений автозаполнение:

CREATE TABLE <table_name> (
	ID INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY 
		(START WITH 1, INCREMENT BY 1),
	<field_name> <field_type> [...]
);