Tampilkan postingan dengan label programming. Tampilkan semua postingan
Tampilkan postingan dengan label programming. Tampilkan semua postingan

2010-08-31

Backup Folder using Python (tarfile)

Backup folder pake scripting ? python bisa !

syntaxnya kurang lebih seperti ini 

 

#! /usr/bin/env python

#coding=utf-8

import tarfile

t = tarfile.open(name = "/home/zergling/backup.tar.gz", mode = 'w:gz')

t.add("/home/zergling/DFiles/")

t.close()   

Script diatas membackup semua file didalam folder /home/zergling.DFiles ke tar.gz

2010-08-18

[troubleshoot] Error connecting to MSSQL 2005 using python-pymssql

Pernah ketemu error seperti ini  "Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier" saat connect ke  MS SQL 2005 menggunakan Python-PyMSSQL?

Ini solusinya ... semua string mesti di cast ke  nvarchar didalam querynya...
ini kutipannya
http://pymssql.sourceforge.net/faq.php
( "It means that SQL Server is unable to send Unicode data to pymssql, because of shortcomings of DB-Library for C. You have to CAST or CONVERT the data to equivalent NVARCHAR data type, which does not exhibit this behaviour.") 

ini contohnya menggunakan DB dari SAP B1

#!/user/bin/env python

import pymssql
 
conn = pymssql.connect(host='192.168.1.9', user='sa', password='xxxxxx', database='TestDB')
cur = conn.cursor()
cur.execute(' select top 30 docnum, convert(nvarchar, cardcode) , doctotal   \
                from dbo.oinv a   ')
row = cur.fetchall()
print row()

#print row
conn.close()





Powered by ScribeFire.

2010-07-02

IredMail + Openfire

Lanjutan posting sebelumnya ... sekarang gua mau nambahkan OpenFire di Server IredMail gua ..  
Untuk debian Lenny ada sedikit tricky ... setelah install openfire.deb  .. install patchnya, bisa didapet disini  http://steffenzieger.de/index.php/2009/03/25/install-openfire-on-debian-lenny/

Di IredMail .. semua port kecuali email di blok... untuk aktifin XMPP tinggal edit di 
    sudo nano /etc/default/iptables

Unremark yang xmpp .. dan tambahin port 9090 (Untuk openfire Admin)
Setelah selesai , install plugin export/importnya .. kemudian tinggal nambahin user dan buddy list di openfire

caranya :
 
gua siapin data usernya nya dulu (ambil dari CSV untuk import ke IredMail). gua masukkin ke postgreSQL database  untuk manipulasi datanya. 
 
gua create database  dengan nama User_export_temp

create database user_export_temp;
create table export_user();
alter table  export_user add column domain_name varchar(30);
alter table  export_user add column usercode  varchar(30);
alter table  export_user add column userpassword varchar(30);
alter table  export_user add column username  varchar(30);
alter table  export_user add column groupuser varchar(30); 
/* Insert data dari CSV yang udah gua modif sesuai table diatas */

copy user_export_temp from '/home/yoshizuki/myUser.csv' csv;  

kemudian gua create python script untuk retrieve data tersebut kemudian diproses sesuai dengan template import user dari Openfire. Untuk buddy list gua asumsikan semua user yang ada saling terhubung dan dipisahin berdasarkan group bagian aja.

#!/usr/bin/python

import psycopg2, sys,os

outp = file("user.xml","w")

conn = psycopg2.connect("\
dbname='testing'\
user='postgres'\
host='localhost'\
password='postgres' ");
d = conn.cursor()
d.execute (" select a.usercode , \
a.userpasswd,\
a.username ,\
a.usercode || '@' || a.domain_name \
    from tmp_data as a \
    order by a.usercode ")

c = conn.cursor()

records = d.fetchall()
outp.write ("<?xml version='1.0' encoding='UTF-8'?>\n")
outp.write ("<Openfire>\n")

for record in records:
        outp.write("\n<User>")
        outp.write("<Username>" +  record[0] +"</Username><Password/>\n")
        outp.write("<Email>" +  record[3] + "</Email>\n")
        outp.write("<Name>" +  record[2] + "</Name>\n")
        outp.write("<CreationDate>1277954250096</CreationDate>\n")
        outp.write("<ModifiedDate>1277954250096</ModifiedDate>\n")
        outp.write("<Roster>\n")
        
        c.execute("select a.usercode , \
   a.userpasswd, \
            a.username , \
            a.usercode || '@' || a.domainname , \
            b.usercode || '@' || b.domainname , \
            b.username , \
            b.groupname  \
            from export_user as a \
            inner join export_user as b on a.usercode <> b.usercode \
            where a.usercode = '%s' \
            order by a.usercode , b.usercode      " %record[0])
        records2 = c.fetchall()
        for record2 in records2:
            outp.write ('<Item jid="' + record2[4] + '"  askstatus="-1" recvstatus="-1" substatus="3" name="'+ record2[5] + '" >\n')
            outp.write ('<Group>' + record2[6] + '</Group></Item>\n')   
        outp.write("</Roster>\n")
        outp.write("</User>")
outp.write ("</Openfire>\n")        
outp.close()

script ini akan menghasilkan file user.xml, nah file ini yang akan gua upload melalui plugin import user di Openfire..

restart openfire 
sudo /etc/init.d/openfire restart

selesai... semua user  sudah terhubung lewat email dan XMPP ... 

 


IredMail --> import user via CSV

Di IredMail ada fasilitas import user dengan format csv...  templatenya  sebagai berikut

[domain name],[user name], [password],[common name], [quota] , [group]

Untuk  [quota] satuannya dalam byte .... 

Daftar usernya kebetulan  ada di zimbra server gua, tinggal gua query lewat OpenOffice.base untuk selanjutnya dicopy  ke OpenOffice.calc dan disave kedalam CSV .. sesuai dengan template nya

install python dan komponennnya

sudo apt-get install python2.5 python-ldap

kemudian masuk ke dalam direktory iredMail/tools
buka file create_mail_user_OpenLDAP.py
sudo nano create_mail_user_OpenLDAP.py

edit BASEDN , BINDDN, dan BINDPW sesuai dengan konfigurasi IredMail yang ada

jalankan sudo python create_mail_user_OpenLDAP.py csvName.csv

nanti akan keluar file csvName.csv.ldif

masukkan file itu ke LDAP

sudo ldapadd -x -D 'cn=Manager, dc=example,dc=com' -W -f  csvName.csv.ldif  (Kalau ada user yang sama di IredMail akan keluar error)

coba cek di https://[ip server]/iredadmin

semua user harusnya sudah masuk semua di daftar user.




  

Instalasi IredMail

Instalasi IredMail sangat mudah sekali ( kalau punya koneksi Internet :D)  .... 
Gua coba pake Debian Lenny NetInstal di PowerEdge SC440

Gua install Debian dulu .. dengan konfigurasi kosong... tanpa gui... package tambahan yang diinstall hanya  

sudo apt-get install build-essential sudo openssh-server htop nmap mc lynx sun-java6-jdk sun-java6-jre

downlaod IredMail nya  

Kemudian ektrak file  iRedMailnya 

masuk ke folder pkgs
jalankan  sudo bash get_all.sh

setelah itu jalankan sudo bash iRedMail.sh

Ikutin petunjuknya ... setelah selesai  bisa langsung digunakan .... (kurang lebih 1 Jam ... udah termasuk waktu donload package dan install debian)

Tinggal cek disini 

http://[ip server]/mail  --> roundcubemail
http://[ip server]/webmail --> roundcubemail 
https://[ip server]/iredadmin --> untuk adminnya 
https://[ip server]/ldap --> Settingan OpenLDAP







2010-06-16

Send Message via XMPP/Jabber/Googgle Talk using Python

Di python kita juga bisa kirim message ke user / friends via Google Talk atau messenger lain yang berbasis XMPP  ( Jabberd, openfire, Ejabberd). Scriptnya cukup sederhana. Sample ini gua udah test lewat google dan Openfire dikantor

Download / install dulu packagenya
sudo apt-get install python-xmpp

Kemudian ketik
nano test01.py

isi dengan

FROM_JABBER_ID = "myname@openfire"
JABBER_PASS = "123456"
JABBER_PORT = "52222"

JABBER_SERVER = "IPserver_openfire_jabber"
TO_JABBER_ID = "friends@openfire"

jid=xmpp.protocol.JID(FROM_JABBER_ID)
cl=xmpp.Client(jid.getDomain(),debug=[])
if not cl.connect((JABBER_SERVER,
JABBER_PORT )):
    raise IOError('Can not connect to server.')
if not cl.auth(jid.getNode(),JABBER_PASS):
    raise IOError('Can not auth with server.')

cl.send( xmpp.Message( TO_JABBER_ID ,"Hello World again" ) )
cl.disconnect()


Kemudian run
python test.py

selesai



Powered by ScribeFire.





, , ,

2010-06-07

export Query dari SQL server ke CSV via Python+pymssql

Ternyata export import data lebih mudah di linux dibanding Windows, beberapa hari ini nyari caranya ternyata sangat mudah via Linux...
Pertama install dulu python dan pymssql

sudo apt-get install python2.5 python-pymssql python-csv

test dulu diterminal seperti ini

python
>>>import pymssql ,csv
>>>


kalau tidak ada error berarti packagenya sudah terinstall dengan baik.. selanjutnya ngoding, buat file test.py
##############
# test.py          #
##############
import pymssql , csv
conn = pymssql.connect(host='IP SQL server' , user='sa', password='password sa', database='nama databasenya') # connection to database
cur = conn.cursor() # set cursor
writer = csv.writer(open('export.csv','wb')) # Declaration for CSV file and CSV Object
cur.execute( 'select * from table1 ') # Execute query
row = cur.fetchall(row) # Retrieve result in tuple object
writer.writerows(row) # Write row Object into csv file
conn.close # close database connection


Selesai.. mantab kan ... cuman < 10 baris doank ... hehehehehehe









, , ,



Powered by ScribeFire.

2009-12-14

RabbitVCS, subversion client di linux


di artikel sebelumnya, pernah gw bahas tentang subversion. Afaik, pada saat itu blun ada tools sepowerful tortoisesvn, gw rasain paling lumayan adalah nautilussvn, tapi ada beberapa kekurangan, yang gw inget kalo proses commit, add lambatnya minta ampun, malah pernah hang nautilus gw. Sampai pada akhirnya gw mutusin coding php pake netbeans yang notabene beratnya ajrut2an, tapi terpaksa, butuh yang gui-nya enak soalnya :D ..

sampai pas minggu kemaren, gw install karmic koala dan pengen jajal nautilussvn lagi dengan pemikiran mungkin yang versi baru lebih mantab surantab ..

pas mengunjungi websitenya di http://code.google.com/p/nautilussvn/, wah ternyata dapet kabar udah ganti jadi rabbitVCS ".. We are excited to announce the release of RabbitVCS v0.12, the successor to NautilusSVN! ", langsung deh jalan ke link-nya di http://rabbitvcs.org/.


cari2 downloadnya, beuh ada file debian package buat ubuntu, debian, rpm buat fedora, malah buat ubuntu bisa langsung di apt-get dengan nambahin di /etc/apt/sources.list-nya .. mantab

apabila download langsung deb-nya bisa ke sini, setelah selesai, seperti biasa

sudo dpkg -i rabbitvcs_versi_terbaru.deb

setelah itu akan apabila diklik kanan pada folder yang belum ada subversionnya, akan muncul seperti ini :



sementara kalau sudah ada subversionnya, pada saat klik kanan akan muncul



proses commit pada folder yang telah tersubversi :




report proses commit telah berhasil :



proses update subversion :



tools ini sangat bagus, compare to nautilussvn, sampai hari ini belum menemukan hal2 yang tidak mengenakkan, seperti hang dsb dsb .., jadi bagi pencari pengganti tortoisesvn yang cuman zalan di windows, boleh coba rabbitVSC, dijamin puasss :) .. fyi, karena ada si klenci ini, untuk koding php sekarang gw pake Komodo, lebih ringan daripada netbeans, dan bisa project pula.. disini bisa diintegrasikan dengan svn, next gw tulis cara integrasi komodo dengan svn-nya ..

2009-05-14

Data Models di web2py MVC Framework

Gua baru belajar web2py nih buat implementasi dan mutasi program tradeERP gua... Web2py ada 3 bagian utama yaitu Models Controller dan View, untuk sementara gua learning Data Models dulu..

Di web2py support many data source... diantaranya Gluon dari Google App Engine, PostgreSQL, Mysql, dan SQLlite (default)


contoh menggunakan Gluon

try:
    from gluon.contrib.gql import *  # if running on Google App Engine
except:
    db = SQLDB('sqlite://storage.db')  # if not, use SQLite or other DB
else:
    db = GQLDB()  # connect to Google BigTable
    session.connect(request, response, db=db)  #  and store sessions there


Deklarasi standar database , table, insert, count, delete, dan update

db = SQLDB(‘postgres://user:password@hostname/db’, pools=10)
db.define_table(‘person’,db.Field(’name’,’string’))
id= db.person.insert(name=’max’)
query=(db.person.id==id)
db(query).count()
db(query).delete()
db(query).update(name=’Max’)
rows = db(query).select(orderby=db.person.name)
for row in rows: print row.name



drop table dan truncate

db.person.truncate()
db.person.drop()


Contoh deklarasi table ,  dan validasi table, serta reference table (foreign key)

db.define_table('products', SQLField('name'), SQLField('description',
                'text'))


# MANY (users) TO MANY (purchases)

db.define_table('purchases', SQLField('buyer_id', db.users),
                SQLField('product_id', db.products), SQLField('quantity'
                , 'integer'))

purchased = (db.users.id == db.purchases.buyer_id) & (db.products.id
         == db.purchases.product_id)

db.users.name.requires = IS_NOT_EMPTY()
db.users.email.requires = [IS_EMAIL(), IS_NOT_IN_DB(db, 'users.email')]
db.dogs.owner_id.requires = IS_IN_DB(db, 'users.id', 'users.name')
db.dogs.name.requires = IS_NOT_EMPTY()
db.dogs.type.requires = IS_IN_SET(['small', 'medium', 'large'])
db.purchases.buyer_id.requires = IS_IN_DB(db, 'users.id', 'users.name')
db.purchases.product_id.requires = IS_IN_DB(db, 'products.id',
        'products.name')
db.purchases.quantity.requires = IS_INT_IN_RANGE(0, 10)


Pretty clean and readable  dibanding JAVA .. hehehehehehe :D

Powered by ScribeFire.



Instalasi web2py MVC Framework

Gua lagi nyoba MVC frameworknya web2py ... download di http://www.web2py.com/examples/default/download

kemudian extract packagenya ....

Buka Port 8000 (pastikan tidak ada yang menggunakan port ini)
Sekarang siapkan program python-nya

install python 2.5 di komputer

Windows
download dulu python di www.python.org 
Jalankan installer Python.. tinggal next next next  :D

kemudian jalankan web2py dengan doubleclick web2py.py atau di comandprompt ketik python25 web2py.py

Di linux (Ubuntu/Mint)

sudo apt-get install python2.5

Untuk package databasenya jgn lupa

Postgresql
sudo apt-get install python2.5-psycopg2 atau python2.5-pgsql

Mysql
sudo apt-get install python2.5-mysqldb

untuk yang lain tinggal lihat di manual Python dan web2py

kemudian jalankan python2.5 web2py
masukkan password admin dan ........ web2py siap dijalankan



Powered by ScribeFire.



2009-05-12

admin MSSQL diLinux dengan SQuirreL SQL

Walau gua udah pake 100% linux, tapi server-server dikantor, masih pake Win buat njalanin SQL server dan ASP. Biasanya buat manage / edit SQL gua pake Aqua Datastudio, tapi sekarang sudah tidak gratis lagi :(, akhirnya setelah ubek-ubek dan test, gua putusin pake Squirrel SQL.

caranya donlod dulu di http://squirrel-sql.sourceforge.net/

pastikan JRE /JDK minimal 1.5 keatas..

kemudian jalankan programnya untuk install ke dalam system.

untuk plugin MS SQL server gua pakai JTDS
donlod manual di http://jtds.sourceforge.net/

komponen ini yang saya gunakan juga untuk koneksi MS SQL Server ke OpenOffice.org . (Mantab toh.. :D )

Untuk database yang lain lihat direferensi Squirrel SQL. ada banyak kok.



Driver yang lainnya bisa dilihat di menu driver pada Squirrel SQL, support bayar sekali database,
diantaranya PostgreSQL, Mysql, Oracle, Sybase, SAPDB, SQLLite, HSQL, dsb.


Sebagai catatan, karena berbasis JAVA maka agak berat boo .. minimum RAM 1GB




Powered by ScribeFire.



2009-05-11

php konek MS SQL Server? kenapa tidak?

setelah sekian lama menggunakan php dan belun pernah konek ke mssql dari linux box, hari ini akhirnya mencoba dan berhasil.

kalo apache+phpnya ada di windows, proses gampang banget. tinggal hapus ";" di php5.ini tepat pas di php_mssql.dll, restart apache, selesei.

kalo dari linux box agak ribet, musti install php-pear, freetds dsb. berikut urut2annya:
1. Download FreeTDS dari http://www.freetds.org/
2. extract dan install
# tar zxvf freetds-stable.tgz
# cd freetds-0.82/ <-- versi gw, trgantung dari donlodan # ./configure --prefix=/usr/local/freetds # make # $ make install
3. Install php-pear, php-sybase, php5-dev
seperti biasa, ada cara mudah dan cara susah, cara mudahnya seperti ini :
apt-get install php5-sybase php-pear php5-dev
cara susahnya :P, seperti ini :
masuk ke direktori installer php, ketik :
#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-mssql=/usr/local/freetds/

di pcku ada masalah pada waktu konfigurasi, dia mengeluarkan error :
configure: error: Directory /usr/local/freetds/bin is not a FreeTDS
apabila ada error seperti ini, yg harus dilakukan adalah copy 2 file (tds.h & libtds.a) dari hasil extract-an freetds-stable.tgz (di pc gw di direktori : /home/detanto/Desktop/freetds-0.82) :
cp /home/detanto/Desktop/freetds-0.82/include/tds.h /usr/local/freetds/include
cp /home/detanto/Desktop/freetds-0.82/src/tds/.libs/libtds.a /usr/local/freetds/lib
setelah proses copy selesai, configure lagi dan lanjutkan ke make & make install
#make
# make install
4. edit file freedts.conf yang ada di /usr/local/freetds/etc
vi /usr/local/freetds
trus beri konfigurasi sql server yang akan kita hubungi
[SQLsystem]
host =10.1.2.7
port = 1433
tds version = 7.0
5. testing dari php, buat file test.php, trus masukkan kode ini :
putenv('TDSVER=80');
putenv('FREETDSCONF=/usr/local/freetds/etc/freetds.conf');
$db_conn = mssql_connect("SQLsystem","detanto","112233")
or die( "ERROR: DB Connection failed" );

$sqldb=mssql_select_db("ITEMMASTER",$db_conn);
$sql="SELECT top 10 PRODUCT_NAME,ITEM_IMAGE1 FROM TB_ITEM_MASTER WHERE ITEM_IMAGE1 IS NOT NULL";
$tbl_item=mssql_query($sql);
while($row=mssql_fetch_array($tbl_item))
{
echo $row['PRODUCT_NAME']."\n";
mssql_close($db_conn)
6. Restart apache dan buka file test.php

Kalo kode ini berhasil, brarti dah sukses dah :D

2009-04-24

Connect SQL Server ke OpenOffice

Ternyata OpenOffice.Org canggih juga .. bisa koneksi ke banyak database (Mysql, PostgreSQL, Oracle, MS SQL Server, dll). yang gua coba koneksi ke MSSQL.

Tahapannya install dulu JDTS-Java di Ubuntu

sudo apt-get install libjtds-java

setelah itu buka Openoffice Base

Pilih Connect Existing database -> pilih JDBC






Masukkan user SQL




Kemudian Next Next -> simpan sebagai file OpenOffice Base

Setelah diregister di OpenOFfice bisa dibuka dimana saja (Calc, Writer, Base). tinggal clik icon data source kemudian pilih nama ODB nya (OpenOffice Base)




Tinggal Mau bikin apa ? Bisa disetup dengan dataPivot (Calc), Report (Base) , atau mail / report paper (Writer)

Kata siapa dari Linux tidak bisa konek ke SQL Server :D













Powered by ScribeFire.

2009-03-23

[MSSQL] Extract data menggunakan BCP

Ini salah satu cara untuk mengextract data dari database MSSQL kedalam bentuk CSV yang paling mudah (cara bodoh :D )



ALTER PROCEDURE dbo.p_x_DbExtract
@dTBASE_name VARCHAR(200) , -- Database Name
@TABLE_Name VARCHAR(200) , -- Table Name ( if empty then all tables in database will be extracted )
@path VARCHAR(50) , -- Path for CSV file
@server VARCHAR(100) , -- Server name ( default localhost)
@saPasswd VARCHAR(20) -- Password for SA

AS
BEGIN
/*
Author : Andy Utomo

DECLARE
@field_Name VARCHAR(200) ,
@schema_Name VARCHAR(100) ,
@fileName VARCHAR(200) ,
@textMsg VARCHAR(6000)

DECLARE @rowCount int , @rowMax int

DECLARE @table table (
idx int identity( 1,1) ,
dTBASE_name VARCHAR(200) ,
schema_Name VARCHAR(200) ,
field_Name VARCHAR(200)
)
IF ISNULL( @dTBASE_name ,'') = ''
BEGIN
SELECT @dTBASE_name = TABLE_CATALOG from INFORMATION_SCHEMA.TABLES
END
if isnull(@path ,'') = ''
begin
set @path = 'D:\data\'
end
if isnull(@server ,'') = ''
begin
set @server = 'localhost'
end
if isnull(@saPasswd ,'') = ''
begin
set @saPasswd = 'sa'
end

IF ISNULL( @TABLE_Name ,'' ) =''
BEGIN
INSERT INTO @table
SELECT table_catalog , table_schema , TABLE_NAME
FROM information_Schema.tables
WHERE table_catalog = @dTBASE_name
AND table_type = 'BASE TABLE'
AND TABLE_NAME <>'dtproperties'
END
ELSE
BEGIN
INSERT INTO @table
SELECT table_catalog , table_schema , TABLE_NAME
FROM information_Schema.tables
WHERE table_catalog = @dTBASE_name
AND table_type = 'BASE TABLE'
AND TABLE_NAME <>'dtproperties'
AND @TABLE_Name = TABLE_NAME
END


set @rowCount = 1
SELECT @rowMax = count(*) from @table
while @rowCount <= @rowMax
begin
SELECT
@dTBASE_name = dTBASE_name ,
@field_Name = field_Name,
@schema_Name = schema_Name
from @table where idx = @rowCount
set @textMsg = 'bcp '+ @dTBASE_name + '.'+ @schema_Name +'.' + @field_Name +' out ' + @path + @field_Name+ '.csv -c -t \\ -r \n -S ' + @server + ' -Usa -P'+ @saPasswd + ' '

exec master..xp_cmdshell @textMsg ,NO_OUTPUT
set @rowCount = @rowCount + 1
end
END

[MSSQL] Delete Semua Relation key pada MSSQL 2000

Script yang cukup berbahaya.. menghapus semua relation dalam database di MSSQL 2000, belum ditest di MSSQL 2005 keatas



/*
DELETE FOREIGN KEY ( RELATION TABLE )
*/


declare @table
table
(
IDX int identity( 1,1) ,
tbl_name varchar(50) ,
tbl_constraint varchar(200)
)
declare @table2 table ( MSG varchar(500) )
declare @sql varchar(1000) ,
@tbl_Name varchar(50),
@tbl_constraint varchar(200) ,
@rowCount int ,@rowMax int ,
@MSG VARCHAR(200)

set @rowCount = 1

INSERT INTO @table
SELECT
b.[name],
a.[name]
FROM SYSOBJECTS a
INNER JOIN SYSOBJECTS b on a.[parent_obj] = b.[id]
WHERE a.xtype ='F'

select @rowCount
select @rowMax = count(*) from @table
select @rowCount , @rowMax
select * from @table

do while @rowCount <= @rowMax
begin
select @tbl_Name = tbl_Name ,
@tbl_constraint = tbl_constraint
from @table where idx = @rowCount
--INSERT INTO @table2
select @MSG = 'ALTER TABLE dbo.' + @tbl_Name + ' DROP CONSTRAINT [' + @tbl_constraint + ']'
EXEC (@MSG)
set @rowCount = @rowCount + 1
end

SELECT * FROM @table2
select b.[name],
b.[id] ,
a.[name] ,
a.[id]
from SYSOBJECTS a
inner join SYSOBJECTS b on a.[parent_obj] = b.[id]
WHERE a.xtype ='F'

2009-02-05

Date in Java

Setelah buka buka program Openfire yang berbasis Java, gua nemuin script yang aneh. Dia selalu menyimpan format tanggal dalam bentuk bigint di database (PostgreSQL).

setelah ubek ubek di website Openfire-nya, dia tulis kl tanggal menggunakan fungsi

long currentDate = new Date().getTime();

jadinya 1233804487

Nyari info sana sini ternyata format yang dipakai adalah format Unix Timestamp, dengan starting date 1900-01-01 yang equal dengan nilai int 86400. http://en.wikipedia.org/wiki/Epoch_(reference_date) .


Terus ubek ubek diinternet gimana balikin fungsi datenya di PostgreSQL.
dapet di http://www.epochconverter.com/

Ini buat convert EPOCH ke Standar timestamp

SELECT TIMESTAMP WITH TIME ZONE 'epoch' + epoch * INTERVAL '1 second';

Ini buat convert Standar timestamp ke EPOCH

SELECT extract(epoch FROM date('2000-01-01 12:34'));

or
SELECT extract(epoch FROM now());

Di Java

EPOCH 2 Standar Timestamp

String date = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date (epoch*1000));

2008-06-02

Install Oracle XE di ubuntu

hmmm .. setelah banyak di admin dan tetek bengek lainnya, mari kita mulai berkutak-kutik di programming. setelah bunny nulis tentang java, netbeans dan teman2nya, aku coba bahas ttg orekel, database yang mgkin dah ga aku pegang selama hampir 5 tahun :D.

1. Download orekel XE (gratisan) di www.oracle.com, pilih yang paket untuk ubuntu atau debian, dengan extension deb. Kira2 gedenya 200MB-an

2. Setelah selesei, ketik :
sudo dpkg -i oracle-xe_10.2.0.1-1.0_i386.deb
[sudo] password for detanto:
Selecting previously deselected package oracle-xe.
(Reading database ... 132138 files and directories currently installed.)
Unpacking oracle-xe (from oracle-xe_10.2.0.1-1.0_i386.deb) ...
This system does not meet the minimum requirements for swap space. Based on
the amount of physical memory available on the system, Oracle Database 10g
Express Edition requires 1024 MB of swap space. This system has 949 MB
of swap space. Configure more swap space on the system and retry the installation.

Dari error diatas didapat bahwa ternyata untuk instalasi orekel, kita membutuhkan minimal 1024MB swap memory. Emang di komputerku aku cuman kasi ga sampe 1G meski memoriku 2G, ini gara2 aku baca di internet ttg rumus yang baik untuk swap memory :D di sini. Pas install orekel ini jadi bingung sendiri, gmana caranya increase swap. Ada banyak resource di internet untuk ini tinggal tanya paman gugel. Ada yang jawabannya harus liwat LiveCD untuk membesarkan swap dsb dsb. Wah kalo musti pake LiveCD sih asik2 aja, cuman CD-ku ada di kantor, dipinjem sama si bunny, brarti opsi ini dah gagal krn aku ga sabar utk nyobain orekel. JAdi aku pake opsi yang lain yaitu melebarkan swap dengan membuat file extra-swap.

Pertama kita cek swap kita dengan printah

detanto@detantonux:~/Documents/downloads$ swapon -s
Filename Type Size Used Priority
/dev/sda5 partition 971892 0 -1

Kmudian kita buat file-nya dengan printah :

sudo dd if=/dev/zero of=/extra-swap bs=1M count=512

Perintah diatas memberitahu linux untuk membuat file sebesar 512MB, kmudian tinggal kita bilangin untuk membuat direktori itu menjadi swap

detanto@detantonux:~/Documents/downloads$ sudo mkswap /extra-swap
Setting up swapspace version 1, size = 536866 kB
no label, UUID=0207958d-a828-46e3-a207-3a535d2fcde0

Trus jalanin lagi

sudo dpkg -i oracle-xe_10.2.0.1-1.0_i386.deb
(Reading database ...
dpkg: serious warning: files list file for package `oracle-xe' missing, assuming package has no files currently installed.
132138 files and directories currently installed.)
Preparing to replace oracle-xe 10.2.0.1-1.0 (using oracle-xe_10.2.0.1-1.0_i386.deb) ...
Unpacking replacement oracle-xe ...
dpkg: dependency problems prevent configuration of oracle-xe:
oracle-xe depends on libaio (>= 0.3.96) | libaio1 (>= 0.3.96); however:
Package libaio is not installed.
Package libaio1 is not installed.
dpkg: error processing oracle-xe (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
oracle-xe

weh error lagi, skarang paketnya ada yang blun keinstall, ya enaknya ubuntu tinggal apt-get install libaio1, selesei dah

tinggal ketik lagi

sudo dpkg -i oracle-xe_10.2.0.1-1.0_i386.deb
(Reading database ... 134527 files and directories currently installed.)
Preparing to replace oracle-xe 10.2.0.1-1.0 (using oracle-xe_10.2.0.1-1.0_i386.deb) ...
Unpacking replacement oracle-xe ...
Setting up oracle-xe (10.2.0.1-1.0) ...
Executing Post-install steps...
-e You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.

Hasilnya ngga ada error, cuman musti ngejalanin command yang diatas

sudo /etc/init.d/oracle-xe configure

Oracle Database 10g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 10g Express
Edition. The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts. Press to accept the defaults.
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [8080]:2702 --> default port aku rubah karena port 8080 dipake sama tomcat

Specify a port that will be used for the database listener [1521]:

Specify a password to be used for database accounts. Note that the same
password will be used for SYS and SYSTEM. Oracle recommends the use of
different passwords for each database account. This can be done after
initial configuration:
Confirm the password:

Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]:y

Starting Oracle Net Listener...Done
Configuring Database...Done
Starting Oracle Database 10g Express Edition Instance...Done
Installation Completed Successfully.
To access the Database Home Page go to "http://127.0.0.1:2702/apex"

Udah deh selese instalasinya, gampang yak? hasilnya bisa kita lihat






Ingat, user default dari orekel setelah instalasi awal adalah SYS dan SYSTEM, jadi login dengan user itu dan password yang sudah diset didepan, setelah login kita bs ngutak-atik databasenya.



Gile, instalasinya gampang banget. seinget aku dulu itu install orekel itu audzubillah bin zalik susahnya; setting TNS lah, SID, dsb2, sekarang tinggal pake wizard, dulu meski dah pake wizard, aku msh puyeng haheuaheuhae.. hidup kemajuan!!