2009-03-27

subversion server di debian, tortoiseSVN sbg client di windows

lagi nyari solusi untuk kolaborasi source code dengan rekan satu team. dari saran ifnu, aku coba pake subversion (http://subversion.tigris.org), untuk instalasi windows tinggal donlod versi windowsnya dan install bla2 selese.

ubuntu, debian:
apt-get install subversion
Dulu aku kira ini cuman bs dipake di bahasa pemrograman tertentu, trnyata bisa untuk semuanya (jadi malu :P) .. Jadi critanya di kantor gw, krn developernya kluar masuk jd susah mantau versi terbaru dari aplikasi.

berikut diterjemahin dari svn-book, hasil browsing2 di internet dan share pengalaman.

Apakah subversion itu?
subversion : sistem tersentralisasi untuk share informasi.
intinya adalah repositori yang merupakan pusat dari data. repositori ini sebetulnya mirip dengan file-server, bedanya ia mengingat setiap perubahan yang terjadi di file dan folder tersebut.

di bukunya dijelasin kasus yg sering banget terjadi di kantorku baik sekarang maupun dulu, yaitu mengerjakan satu project yang sama beramai-ramai dengan source code terpusat di server, rese bgt kalo kita ngerjain ABCDE tiba user numpukin dengan EFGH, hangus lah kerjaan kita .. hiks2. misalnya :


ada 2 user, harry dan sally. mereka bertugas untuk mengerjakan project yang sama sehingga mereka mengakses ke repository yang sama. harry & sally mengedit project A, harry merubah menjadi A' dan sally menjadi A'', asumsi harry melakukan proses penyimpanan terlebih dahulu, sehingga project A sekarang menjadi project A'. baru setelah itu sally melakukan penyimpanan. nah pada proses ini ada kemungkinan sally menumpuk atau menimpa pekerjaan harry dengan pekerjaannya.

kalo yang diatas menggunakan metode file sharing, subversion menggunakan metode solusi copy-modify-merge.

detail kasus persis seperti yang dicontohkan diatas, cuman sekarang menggunakan subversion. harry merubah project menjadi A' dan sally merubah menjadi A'', sementara sally sudah menyimpan ke server (commit) terlebih dahulu. ketika harry melakukan penyimpanan ke repository, harry akan mendapat mesej error bahwa modul dia tidak update (karena versioning terakhir adalah sally).


harry harus melakukan checkout file2 ke repository, setelah proses checkout selesai, baru harry bisa melakukan perubahan dan commit ke repository. lha tapi gimana kalo harry dan sally melakukan edit di file yang sama? wew tetep bisa. subversion mengistilahkan ini dengan conflict. confilct dapat diresolve dengan membandingkan file yang di repository dan file yang ada di komputer harry. bisa dicek satu2 perbedaannya baru kemudian di-merge.

hal ini sangat memudahkan, karena kalo dulu pasti ada proses teriak2an dulu kalo lagi arisan koding di kantor hehhehehehehe

Langkah2 settingnya:
1. buat direktori subversion, misal ada di /var/svn/baru/usermng
mkdir -p /var/svn/baru/usermng
2. buat subversionnya :
sudo svnadmin create /var/svn/baru/usermng
3. import data yang akan dipantau
sudo svn import /opt/coding/usermanaj file://var/svn/baru/usermng -m "Aplikasi Subversion"
4. Setting apache
a. Cara Mudah :
apt-get install apache2 libapache2-svn
b.Cara Susah :
menyusul
5. Edit Konfigurasi apache svn yang ada di /etc/apache2/mods-available/dav_svn.conf (<-- lokasi ini kalo instalasi apache liwat apt-get)
DAV svn <-- untuk enabling repository #SVNParentPath /var/svn/baru/usermng <-- Path Repository untuk handling multiple svn SVNPath /var/svn/aplikasi/baru/usermng <-- Path Repository AuthType Basic  AuthName "Aplikasi Subversion" <-- Keterangan AuthUserFile /var/svn/passwd <-- Password file Require valid-user 
6. Ubah kepemilikan folder aplikasi jadi milik si apache
chown -R www-data: /var/svn/aplikasi
7. Buat password file :
httpasswd -c /var/svn/passwd detanto

Untuk clientnya, misalnya di windows; musti install tortoiseSVN yang bisa diunduh di http://tortoisesvn.tigris.org/, letak versi terbaru pada saat blog ini ditulis ada disini, filenya mayan besar; sekitar 19MB.

setelah diinstall, setiap kita klik kanan akan muncul 2 shortcut baru, SVN Checkout dan TortoiseSVN beserta link2nya.

Contoh Penerapan :
1. dari contoh diatas, kita sudah membuat satu repository untuk source code user manajemen (usermng). Misal kita buat satu folder baru "User", kita klik kanan trus pilih SVN Checkout (kalo gambarnya kurang jelas, tinggal diklik aja)


2. Akan muncul dialog box seperti dibawah ini :
masukkan url repository-nya; misalnya http://10.1.2.7/svn/usermng, setelah klik ok, akan muncul permintaan untuk memasukkan user dan password, masukkan user yang telah dicreate seperti contoh diatas :

apabila otorisasi berhasil, tortoiseSVN ini akan langsung memeriksa ke repository server semua filenya. apabila di folder kita blum ada maka akan diupdate ke folder tersebut :

setelah proses selesei, bila dilihat di windows explorer tampilannya akan seperti ini

tortoiseSVN akan menambahkan tanda di icon folder atau file, tanda cawang hijau brarti source yang disini source yg tidak mengalami konflik, atau subversion statusnya normal.

Pertanyaannya : ada ga subversion buwat database? gw blun tau, bahkan blun googling jugak heheheheheehe, paling gampang si semua aktivitas database didokumentasiin ke script trus folder script itu di register ke subversion, selesei :D

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-03-22

Start up sistem untuk Small Office using Open Source

Start up sistem untuk small office diperlukan 2 server, untuk file sharing dan application server.

Kebutuhan server :

Untuk File Sharing diperlukan Harddrive besar, karena digunakan untuk menampung semua data dari user (XLS,DOC,PDF, PPT, dsb), backup database, source application, ditambah disiapkan untuk repository system (Ubuntu : sekitar 25 Gb). Jadi estimasinya sekitar 100Gb -200Gb ( Bigger is better).

Untuk application server diperlukan server yang powerfull, baik kecepatan, maupun memory. 2 Processor XEON Core 2 duo dan memory minimal 2 Gb.

Untuk referensi bisa dilihat di www.bhinneka.com


Sistem Operasi :

Semuanya menggunakan Ubuntu 8.10 atau Debian Lenny (5.0) karena :
1. Packagenya terkenal lengkap (ribuan package dengan repository sekitar 25gb)
2. More stable dan less maintenance
3. Support di forum cukup aktif.
4. Sudah support banyak hardware


Application Server yang perlu diinstall

1. Apache2 dan PHP5 : Untuk webserver
2. Mysql & PostgreSQL : Database Server
3. SAMBA : File server
4. Postfix : Mail transport
5. Dovecot : POP mail
5. clamAV : Anti virus
6. WebMin : Web Based Control panel
7. Openfire : IM Server ( Jabber protokol) untuk chatting local
8. SSH-Server : Untuk remote server terminal.
9. Rsync / Rsyncd : mirroring file untuk backup dan sync antar 2 komputer /server


Application webbased Opensource  yang perlu diinstall

1. E-Groupware : Project management dan tracking, dan schedule management. Untuk mengatur schedule project IT
2. Wordpress : Blogging. Untuk posting berita di kantor, pengumuman, dsb
3. GLPI : IT Asset management. Untuk inventaris peralatan komputer ( Komputer, monitor, Modem, IPPhone, printer, software, dsb). help desk system, untuk memonitor umur komputer, jumlah kerusakan, perawatan dan sebagainya.

Application Opensource yang diinstall di client

1. OxygenOffice / Lotus Symphony : untuk office production, pembuatan dokumen, spreadsheet , dan presentasi, plus PDF maker.
2. FoxitReader : Lightweight PDF reader
3. Thunderbird + Lighting : Untuk email client plus schedule calendar, bisa disync dengan E-Groupware
4. Thunderbird Firetray : Add-ons thunderbird untuk stay di sistem tray.
5. RSS Reader : Untuk me-retrieve berita dari wordpress dalam bentuk RSS.
6. Firefox : Browser.
7. Avast Antivirus
8. Add-ons Symphony : Export Presentasi (PPT) kedalam SWF. (Flash media player)


2009-03-11

[Fwd: Menambahkan Hardisk Pada Debian]

Setelah Hardisk di pasang pada PC Otomatis terdeteksi misalnya /dev/hdb1
sekarang kita set padafolder - /mnt/datacenter
# ssh -l uyut 192.168.1.241

Buatlah Direktory dengan nama catacenter pada /mnt
/*sudo /mkdir /mnt/datacenter */
/*sudo mount /dev/hdb1 /mnt/datacenter/ */

Jangan lupa
/*sudo chmod -R 777 /mnt/datacenter/
sudo chown -R root.uyut /mnt/datacenter/ */

lalu tambahkan fstab dengan :
sudo nano /etc/fstab
Tambahkan dengan :
/*/dev/hdb1 /mnt/datacenter ext3 defaults,errors=remount-ro 0 1 */
* karena kalau tidak ditambahkan, nanti kalo di restart amount nya ilang
lagi,

sudah bisa di pakai ardisk barunya
sekarang tinggal Tambahkan pada *edit ConfigFile* Sambanya, agar dapat
di gunakan sebagai file sharing untuk masing-masing user login

/*[DataCenter]
comment = data public
valid users =
angela,anis,anton,azeng,bekti,cecil,ebe,elli,feni,hamdan,izul,komar,nining,rahma,rahmat,rina,ruri,selvi,topik,wini,wiwi,yelly,@admins,@root

create mode = 777
path = /mnt/datacenter
write list =
angela,anis,anton,azeng,bekti,cecil,ebe,elli,feni,hamdan,izul,komar,mahfud,nining,rahma,rahmat,rina,ruri,selvi,topik,wini,wiwi,yelly,@admins,@root

directory mode = 777
*/

Save dan Restart Samba Servernya
/Thank Bos/