понедельник, 31 декабря 2012 г.

Fedora 17 install VirtualBox

Good manual this.

If you find errors in log file:
makefile:181 *** error: unable to find the sources

or:
Trying to register the VirtualBox kernel modules using DKMSError! Bad return status for module build on kernel

Check this packages in you system:
binutils
gcc
make
patch
libgomp
glibc-headers
glibc-devel
kernel-headers
kernel-devel
dkms

and read this page.

понедельник, 5 ноября 2012 г.

Install instant Oracle client on Centos 64

Downloads from http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.x86_64.rpm
and setup this.
Create /etc/profile.d/oracle.sh with:
export ORACLE_HOME="/usr/lib/oracle/11.2/client64"
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export TNS_ADMIN=$ORACLE_HOME
export PATH=$PATH:$ORACLE_HOME/bin
create "tnsnames.ora" file in $TNS_ADMIN folder, with:
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.5)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
Setup rlwrap:
sudo yum install rlwrap
and add this line to ~/.bashrc
alias sqlplus="rlwrap sqlplus"
Test:
sqlplus user_name@orcl
If you get error:
sqlplus: error while loading shared libraries: libsqlplus.so: cannot
open shared object file: No such file or directory
then check $ORACLE_PATH and $LD_LIBRARY_PATH and grants:
chmod -R 755 $ORACLE_HOME
If you get this error:
sqlplus: error while loading shared libraries: libsqlplus.so: cannot
open shared object file: No such file or directory
then add local machine to /etc/hosts :
127.0.0.1   localhost [machine_name]

среда, 31 октября 2012 г.

Обязательное чтиво для PG девелопера

Нарвался здесь на список ресурсов по Postgres. Как раз то что искал. Надеюсь автор не будет против, опубликую у себя:

Wiki
Планета Postgresql
Новости Weekly news
Конференция пользователей и разработчиков PostgreSQL
Исходники

воскресенье, 2 сентября 2012 г.

воскресенье, 22 апреля 2012 г.

Vimium - keyboard browser

Отличный плагин, который позволит управлять вашим браузером, используя стандартные сочетания клавиш Vim. Плагин так же доступен для Firefox.

воскресенье, 15 апреля 2012 г.

Source code of DB objects

Представьте такую ситуацию: команда разработчиков работает над программой. При этом исходный код приложения нигде не хранится. Каждый программист с помощью специального декомпилятора выгружает нужный код из бинарника, работает с ним, а потом вновь собирает и отдает на дальнейшую разаработку коллегам.

Как вы думаете, это нормальная ситуация? Думаю, что нет. Но почему-то такой подход довольно часто применяется при разработке приложений БД. Объекты создаются и изменяются "наживую" прямо в БД. Большинство специализированных IDE предоставляют массу "удобных" инструментов для этого - поиск нужного объекта с помощью навигационного дерева, его модификация несколькими щелчками мыши и т.д. При этом об исходном коде мало кто задумывается - а при сборке версии часто используются утилиты, которые на основании кода текущей базы и кода базы продакшена генерируют диф-скрипт (для меня до сих остается загадкой как, т.к. альтер (таблицы например) можно сформировать множеством спосбов, все зависит от конкретного случая, от логики изменения и т.д.). Получается, что исходного кода базы как бы и не существует, он считается неким машинным кодом, трудно воспринимаемым человеком, который полностью отдается на откуп визуальным средствам разаработки. Программист работает не с функционалом своей СУБД, а с функционалом конкретной IDE, неким красивым и (как кажется первое время) удобным промежуточным слоем. При этом приходится изучать именно IDE, а не саму СУБД.

Стоит помнить, что после того как вы с помощью собственно написанного кода (выверенного, отформатированного по корпаративным стандартам, оформленного комментариями) создаете объект БД, этот код нигде не сохранится, вы потеряете его, а в замен получите, то что соберет за вас машина (IDE, специальные утилиты или библиотеки), опираясь на словарь данных БД. При этом теряется история изменения объектов (становится невозможным узнать/вспомнить кто, когда и зачем создавал/удалял/изменял тот или иной объект), могут возникать конфликты при совместной разработке и еще очень много чего.

Об этом можно почитать в "PLSQL Standards Developed for the PLSQL Starter Framework" в главе "Source Code Control":

Remember to never modify the PL/SQL stored in the database. Work from the source code file instead. Yes, modifying the compiled code inside the database is technically feasible, but a really bad idea. It is comparable in some ways to modifying Java bytecode or C object files.

и в главе "Data Models and DDL":

Most DDL is still created by hand. Make it clean, commented and readable, just like source code.

Напоследок приведу код создания простой таблицы в Oracle и то, что из него получается после выгрузки из БД различными утилитами.
Исходный код создания таблицы:
-- This is test_table
CREATE TABLE test_table (
  id NUMBER(38),  -- PK
  value NUMBER(10,2),  -- main value
  width NUMBER(5,0) -- main width value
);
DBMS_METADATA:
  CREATE TABLE "OBJECTMAN"."TEST_TABLE" 
   ( "ID" NUMBER(38,0), 
 "VALUE" NUMBER(10,2), 
 "WIDTH" NUMBER(5,0)
   ) 
Tora:
CREATE TABLE objectman.test_table
(
    id                               NUMBER(38)                      
  , value                            NUMBER(10,2)                    
  , width                            NUMBER(5)                       
)
TOAD Eclpise plugin:
create table test_table
(
    id       number(38),
    value    number(10,2),
    width    number(5)
)


Как видно солянка полная, кто на что горазд.

Конечно это не значит, что нужно полностью отказаться от современных визуальных средств и работать в консольном редакторе. Самое главное работать именно с исходным кодом вашего приложения БД, контроллировать его самостоятельно, не отдавать на откуп машине. Исходный код приложений БД ничем не хуже кода Java или C++ приложений и требует к себе такого же обращения: форматирование, комментарии, контроль версий и т.д.

Несколько рекомендаций:
1. Весь код БД (DML, DDL, DCL, TCL и т.д.) необходимо хранить в репозитории (один объект = один файл);
2. Исходя из первого пункта, должна быть возможность собрать готовую к использованию "чистую" базу "с нуля", используя исходники из репозитория (нет необходимости делать дампы базы, вырезать ненужные(тестовые) данные и т.д.)
3. Править и компилировать код объекта БД нужно именно из файла (т.о. вместо навигатора по объктом БД вашей IDE станет актуален навигатор по файлам проекта в репозитории - найти файл, открыть на редактирование, накатить на базу).

пятница, 30 марта 2012 г.

IDE for Oracle = vim + vorax

Install ruby:
sudo yum install ruby ruby-devel rubygems
sudo gem install antlr3 -r

Install vim with ruby support:
sudo yum install zlib-devel openssl-devel ncurses-devel
cd Downloads
git clone git://repo.or.cz/vim_mainline.git
cd vim_mainline
./configure --enable-rubyinterp --with-features=huge
make
sudo make install


wget http://www.vim.org/scripts/download_script.php?src_id=14847