Halaman

Selasa, 27 April 2010

SQLite is so simple

SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. It means a simplicity. Simplicity in a database engine can be either a strength or a weakness, depending on what you are trying to do.

A. Appropriate Uses
The primary design goal of SQLite is to be simple:
- Simple to administer
- Simple to operate
- Simple to embed in a larger program
- Simple to maintain and customize

So use SQLite in situations where simplicity of administration, implementation, and maintenance are more important than the countless complex features that enterprise database engines provide. SQLite is small, fast and reliable. Reliability is a consequence of simplicity. With less complication, there is less to go wrong.

B. Situations Where SQLite Works Well
1. Application File Format
SQLite has been used with great success as the on-disk file format for desktop applications such as financial analysis tools, CAD packages, record keeping programs, and so forth. The traditional File/Open operation does an sqlite3_open() and executes a BEGIN TRANSACTION to get exclusive access to the content. The use of transactions guarantees that updates to the application file are atomic, consistent, isolated, and durable (ACID).

2. Embedded devices and applications
SQLite is a good choice for devices or services that must work unattended and without human support. SQLite is a good fit for use in cellphones, PDAs, set-top boxes, and/or appliances. It also works well as an embedded database in downloadable consumer applications.

3. Websites
SQLite usually will work great as the database engine for low to medium traffic websites (which is to say, 99.9% of all websites). The amount of web traffic that SQLite can handle depends, of course, on how heavily the website uses its database. Generally speaking, any site that gets fewer than 100K hits/day should work fine with SQLite.

4. Replacement for ad hoc disk files
Many programs use fopen(), fread(), and fwrite() to create and manage files of data in home-grown formats. SQLite works particularly well as a replacement for these ad hoc data files.

5. Internal or temporary databases
For programs that have a lot of data that must be sifted and sorted in diverse ways, it is often easier and quicker to load the data into an in-memory SQLite database and use queries with joins and ORDER BY clauses to extract the data in the form and order needed rather than to try to code the same operations manually. Using an SQL database internally in this way also gives the program greater flexibility since new columns and indices can be added without having to recode every query.

6. Command-line dataset analysis tool
Experienced SQL users can employ the command-line sqlite program to analyze miscellaneous datasets. Raw data can be imported from CSV files, then that data can be sliced and diced to generate a myriad of summary reports. Possible uses include website log analysis, sports statistics analysis, compilation of programming metrics, and analysis of experimental results.

You can also do the same thing with an enterprise client/server database, of course. The advantages to using SQLite in this situation are that SQLite is much easier to set up and the resulting database is a single file that you can store on a floppy disk or flash-memory stick or email to a colleague.

7. Stand-in for an enterprise database during demos or testing
If you are writing a client application for an enterprise database engine, it makes sense to use a generic database backend that allows you to connect to many different kinds of SQL database engines. It makes even better sense to go ahead and include SQLite in the mix of supported databases and to statically link the SQLite engine in with the client. That way the client program can be used standalone with an SQLite data file for testing or for demonstrations.

8. Database Pedagogy
Because it is simple to setup and use (installation is trivial: just copy the sqlite or sqlite.exe executable to the target machine and run it) SQLite makes a good database engine for use in teaching SQL. Students can easily create as many databases as they like and can email databases to the instructor for comments or grading.

11. Experimental SQL language extensions
The simple, modular design of SQLite makes it a good platform for prototyping new, experimental database language features or ideas.

C. Situations Where Another RDBMS May Work Better
1. Client/Server Applications

If you have many client programs accessing a common database over a network, you should consider using a client/server database engine instead of SQLite. A good rule of thumb is that you should avoid using SQLite in situations where the same database will be accessed simultaneously from many computers over a network filesystem.

2. High-volume Websites
SQLite will normally work fine as the database backend to a website. But if you website is so busy that you are thinking of splitting the database component off onto a separate machine, then you should definitely consider using an enterprise-class client/server database engine instead of SQLite.

3. Very large datasets
With the default page size of 1024 bytes, an SQLite database is limited in size to 2 tebibytes (241 bytes). And even if it could handle larger databases, SQLite stores the entire database in a single disk file and many filesystems limit the maximum size of files to something less than this. So if you are contemplating databases of this magnitude, you would do well to consider using a client/server database engine that spreads its content across multiple disk files, and perhaps across multiple volumes.

4. High Concurrency
SQLite uses reader/writer locks on the entire database file. That means if any process is reading from any part of the database, all other processes are prevented from writing any other part of the database. Similarly, if any one process is writing to the database, all other processes are prevented from reading any other part of the database. For many situations, this is not a problem. Each application does its database work quickly and moves on, and no lock lasts for more than a few dozen milliseconds. But there are some applications that require more concurrency, and those applications may need to seek a different solution.

D. Want to explore?
1. Installation
Download Precompiled Windows Binaries:
1. Download http://www.sqlite.org/sqlite-3_6_23_1.zip (contains: sqllite3.exe)
2. and this http://www.sqlite.org/sqlitedll-3_6_23_1.zip (This is a DLL of the SQLite library)
3. Extract all the file and put in one directory (ex: C:/sqlite3)

C:\sqlite3>dir
Volume in drive C has no label.
Volume Serial Number is 9863-4221
Directory of C:\sqlite3
2010-04-27 00:13 .
2010-04-27 00:13 ..
2010-03-29 16:02 3.809 sqlite3.def
2010-03-29 16:02 520.234 sqlite3.dll
2010-03-29 16:02 528.522 sqlite3.exe
3 File(s) 1.052.565 bytes
2 Dir(s) 84.336.992.256 bytes free

The only external dependency is MSVCRT.DLL.

2. Create Database
A standalone program called sqlite3 is provided which can be used to create a database, define tables within it, insert and change rows, run queries and manage an SQLite database file. This program is a single executable file on the host machine. It also serves as an example for writing applications that use the SQLite library.


C:\sqlite3>sqlite3 pontianak.db3
SQLite version 3.6.23.1
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .exit

SQLite will create a new one, if the database does not exist.

3. Create Table
If you are not exit in the previous step, just do

sqlite> create table create table mytab (pk integer primary key, nametext not null);
sqlite> .table (this a sqllite command line to display tables, for other commands just type .help
mytab
sqlite>

or if you have exitted, type this:

C:\sqlite3>sqlite3 pontianak.db3 "create table mytab (pk integer primary key, nametext not null);


4. Insert Data
C:\sqlite3>sqlite3 pontianak.db3 "insert into mytab values (100, 'My Name');"
C:\sqlite3>sqlite3 pontianak.db3 "insert into mytab values (200, 'Your Name');"
or

sqlite>insert into mytab values (300, 'Tova Naruto');


5. Display Data
C:\sqlite3>sqlite3 pontianak.db3 "select * from mytab ;"
or

sqlite>select * from mytab;
100My Name
200Your Name
300Tova Naruto


E. GUI for Data Administration
Yes, you are absolutely right...for productivity reason we use GUI for data administration. You can find some in Management Tools , and I use SQLite Administration.

As stated above, if we want to move our database into another folder, computer, other device or mail it, just copy and paste pontianak.db3 database into destination.

At all...it's so simple and now it's time for me to do my job.
Happy coding and for detail see this.

Jumat, 23 April 2010

Benchmark Best Practice

Ilustrasi: Berdasarkan hasil Survey Pelanggan terdapat petunjuk bahwa Pelanggan menghabiskan waktu yang lama saat reservasi hotel. Pihak hotel berpikir untuk menemukan best practice-nya dan memutuskan melakukan benchmark ke Unit Emergency/Instalasi Gawat Darurat Rumah Sakit. Hasil benchmark disesuaikan dengan bisnis hotel, dan diterapkan: Layanan booking engine, Saluran reservasi secara elektronik dan travel agents, Sistim memberships atau corporate clients terutama terhadap tamu frequent guest/flyer sehingga mengurangi waktu check-in.

"best practice" merupakan suatu mekanisme (teknik, metode, proses, aktivitas, insentif atau penghargaan) yang diyakini lebih efektif dibanding mekanisme lain untuk diterapkan pada kondisi dan keadaan tertentu.

Teringat pada saat sekolah -atau secara umum dalam dunia pendidikan- kita pasti familiar dengan study tour. Misalnya study tour ke pabrik Mobil. A study tour is a travel experience with specific learning goals. Dengan studi tour, kita mengetahui bagaimana bentuk nyata (real world) atas praktek iptek di dunia industri. Sekarang saat mengabdi maupun berkarya, kita terus melakukan proses pembelajaran, yang salah satu caranya melalui benchmark.

Benchmarking is the process of comparing one's business processes and performance metrics to industry bests and/or best practices from other industries.

Benchmarking merupakan proses pengukuran produk, servis, dan proses terhadap organisasi yang diketahui sebagai pemimpin dalam satu atau beberapa aspek operasinya. Benchmarking memberi gambaran tentang organisasi kita jika dibandingkan dengan organisasi lain, bahkan meskipun organisasi itu berada pada bisnis yang tidak serupa atau melayani kelompok pelanggan yang berbeda.

Benchmarking is a matter of identifying who's best at something (in your company, in your industry, in the world), not by guesswork or reputation but by the numbers. http://money.cnn.com/magazines/fortune/fortune_archive/1996/10/28/203926/index.htm

4 Jenis Benchmark
Empat jenis Benchmarking yang sering kita jumpai:
1. Internal benchmarking
Benchmark yang dilakukan dalam organisasi misalnya antar kantor cabang atau unit bisnisnya sendiri. Benchmark ini tentu bisa cepat dilaksanakan, biaya rendah, mudah mentransfer hal2 yang dipelajari, serta memberikan pemahaman terhadap proses sendiri dengan lebih dalam.

2. Competitive benchmarking
Benchmark ini dilakukan terhadap organisasi pesaing. Targetnya tentu apa yang menjadi kekuatan pesaing, misalnya: Desain produk, Supply Chain, Kapasitas Pabrik, Paten atau R & D.

3. Functional benchmarking
Benchmark yang dilakukan terhadap proses serupa untuk satu fungsi misalnya HRM, IT, atau Pengolahan saja.

4. Generic benchmarking
Benchmark ini dilakukan pada industri yang berbeda. Contohnya perusahaan Telekomunikasi yang melakukan benchmark ke Restaurant. Kelebihannya, kita dapat memperoleh banyak informasi karena organisasi berbeda bisnis, peluang untuk melakukan proses breakthrough.

Tahapan Benchmark
1. Nyatakan tujuan, subyek atau problem
2. Definisikan prosesnya
3. Cari partner (tempat benchmark)
4. Identifikasi dan Kumpulkan sumber data awal
5. Tentukan dan Kunjungi partner yang dipilih
6. Temukan gap-nya
7. Buat Target atau Upaya pencapaian
8. Komunikasi dan Sesuaikan Target
9. Proses perbaikan/implementasi
10. Review/kalibrasi ulang.

Sumber Benchmark
Benchmark dapat dilakukan dengan berbagai cara dan tidak terbatas pada:
- Produk
- Kunjungan langsung
- Publikasi, Pameran
- Jurnal, Industry Directories
- Customer, Employee, Supplier
- Internet, Bertanya melalui telepon, e-mail, group diskusi (mailing lists)
- Perpustakaan /Library
- Experts/ Konsultan
- Pemenang Baldrige Award

Hasil Benchmark
Dengan benchmark, kita memperoleh manfaat:
- Mengetahui posisi perusahaan dalam industrinya
- Mengetahui bagaimana organisasi beroperasi dengan ekselen
- Memberikan atmosfir untuk improvement
- Memicu pembaruan atau mempercepat improvement
- Memberi semangat baru untuk melakoni best practice,
- Menegaskan keyakinan bahwa ada kebutuhan untuk berubah
- Membantu mengidentifikasi kelemahan dan room for improvement
- dll

Benchmark dapat dilihat sebagai bentuk pemikiran dari Kaizen dan Competitive Advantage dari Porter. Praktek benchmark telah membantu organisasi dalam upayanya untuk melakukan perbaikan produk, proses atau sistem. Improvement itu dapat dilakukan secara "inkremental" dari waktu ke waktu maupun "breakthrough" improvement yang dilakukan sekaligus di suatu waktu.

Benchmark bukanlah buku resep (cook book), benchmarking adalah proses kompleks dan seringkali memerlukan effort yang besar (Process Re-Engineering atau inisiatif Quality Improvent) dan karenanya diperlukan komitmen bagi keberhasilannya. Hasil benchmarking banyak yang dapat diterapkan oleh perusahaan namun tidak sedikit yang berakhir pada sindrome 'they are different from us'.

Rabu, 21 April 2010

FPDF Multicell: Printing automatic word wrap and border

Purpose: To print columnar style report with text descriptions lie in top area of a report.
Software: PHP + FPDF
Output:

In FPDF we use Cell method/function to print columnar data, while MultiCell is used for variable-length data to fit in a specified area.

MultiCell allows printing text with line breaks. Word or text wrapping can be automatic (as soon as the text reaches the right border of the cell) or explicit (via the \n character). As many cells as necessary are output, one below the other. Text can be aligned, centered or justified. The cell block can be framed and the background painted.

The example above shows a header - as what this article want to address - as a part of a Purchase Requisition form, while the same also apply for Billing or Application form, etc.

Here is a part of my class:


class PDF extends FPDF {
//my var declaration
//my public declaration

function BuatJudulObyekKerja($nomor) {
$nrowHeight=4;
$npageWidth=179;
$nwidthCol1=40;
$nwidthCol2=30;
$nwidthCol3=25;
$nColonWidth=2;

$this->SetFont('Helvetica','B',10);
$this->Cell(0, 0,'Nomor: '.$nomor,'',1,'C',0);
$this->Ln(3);
$this->SetFont('Helvetica','',8.5);
$this->Cell($npageWidth, $nrowHeight, '', 'LTR',0,'R',0);
$this->Cell($npageWidth, 2, '', '',1,'R',0);
$this->Cell($nwidthCol1, 1,'Description', 'L' ,0,'L');
$this->Cell(nColonWidth, 1,':', '' ,0,'L');

$this->SetXY(58,33);

$y=$this->GetY();
$this->MultiCell(137,$nrowHeight,$this->pan_namaobyek,'R','J');
$y1=$this->GetY();

$nrowPrinted=($y1-$y) /$nrowHeight;
$this->SetY($y);
for ($i=0; $i < $nrowPrinted; $i++) {

$this->Cell($nwidthCol1+11, $nrowHeight,'', 'L' ,1,'L');
}


$this->Cell($nwidthCol1, $nrowHeight,'Form','LT' ,0,'L');
$this->Cell($nColonWidth, $nrowHeight,':','T' ,0,'L');
$this->Cell($nwidthCol1,$nrowHeight, $this->kategori , 'T' ,0,'L');
$this->Cell($nwidthCol2, $nrowHeight,'','T',0,'L');
$this->Cell($nwidthCol3, $nrowHeight,'Doc.ID#', 'LT' ,0,'L');
$this->Cell($nColonWidth, $nrowHeight,':','T' ,0,'L');
$this->SetFont('Helvetica','B',8.5);
$this->Cell($nwidthCol1, $nrowHeight, $this->pan_pk , 'TR',1,'L');
$this->SetFont('Helvetica','',8.5);

$this->Cell($nwidthCol1, $nrowHeight,'Raised by','LT' ,0,'L');
$this->Cell($nColonWidth, $nrowHeight,':','T' ,0,'L');
$this->Cell($nwidthCol1,$nrowHeight, $this->usaha , 'T' ,0,'L');
$this->Cell($nwidthCol2, $nrowHeight,'','T',0,'L');
$this->Cell($nwidthCol3, $nrowHeight,'Reff.No', 'LT' ,0,'L');

$this->Cell($nColonWidth, $nrowHeight,':','T' ,0,'L');
$this->Cell($nwidthCol1, $nrowHeight, $this->pan_nosurat , 'TR',1,'L');
....
}

Sabtu, 17 April 2010

Delphi 7: frame.color property frame does not exist

I just open a Quick Report form of Delphi 7 but face error message that says "...frame.color: property frame does not exist...". I checked the installed package but there is no QR component there, except Rave report.

Delphi 7 does not automatically install Quick Report component, so I did this:
1. Choose Install Packages in Component menu
2. Click Add then select dclqrt70.bpl file from Delphi7\Bin directory
3. Click Open then click OK.

The problem solved.

Delphi 7 on Windows Vista

Borland Delphi 7 was released in 2002 and perhaps you may still use this software. If we run it on Windows Vista, an error raised with the following message "Unable to rename C:\Program Files\Borland\Delphi7\Delphi32.$$$ to Delphi32.dro".

I thought that was about security access/permission. With Administrator privilege, I did these:
1. Right click on C:\Program Files\Borland\Delphi7 directory, then click Properties.
2. On General tab, clear the Read-Only attribute then press Apply (all files including subdirectory).
3. On Security tab, Check or give Full Access to Users.
4. Click Apply.

That's all.

Kamis, 15 April 2010

Strategi dan Taktik

Dalam dunia bisnis, militer, atau bahkan untuk menyelesaikan studi, kita menerapkan apa yang dinamakan strategi. Sebelum membuat strategi, tentu kita harus mengetahui apa yang menjadi Tujuan (goals) maupun Sasaran (objectives). Inilah yang menjadi acuan penyusunan strategi.

Strategi
Oxford dictionary mengatakan Strategi adalah 1) rencana yang dirancang untuk mencapai tujuan jangka panjang tertentu; 2) seni perencanaan dan memimpin kegiatan militer dalam perang atau pertempuran.Strategi dalam bahasa Yunani yaitu strategia atau keahlian militer ‘generalship’. Sederhananya strategi adalah rencana tindakan yang dirancang untuk mencapai tujuan tertentu.

Apakah tujuan, problem maupun solusi yang hendak dicapai pasti tercapai dengan strategi yang sudah dibuat? Tentu bukan jaminan 100%, namun strategi itu adalah buah pemikiran yang diharapkan dapat mencapai hasil yang diharapkan.

Kita dapat saja memperluas pengertian tentang strategi sebagai Alternatif yang dipilih/diambil untuk membuat terrealisasinya tujuan. Kenapa alternatif? Mari kita bandingkan dengan Team sepak bola. Para Pelatih atau Manager akan menerapkan strategi yang mungkin tidak sama untuk setiap pertandingan. Strategi dibuat sesuai dengan kondisi yang mereka identifikasi dan mungkin juga terjadi perubahan strategi dalam permainan yang berdurasi 2 x 45 menit ini. Perubahan strategi ditetapkan oleh Pelatihnya.

Sekarang kita dapat melihat Strategi sebagai suatu seni dan ilmu tentang perencanaan dan pengelolaan sumber daya untuk digunakan paling efisien dan efektif dalam mewujudkan tujuan. Bandingkan dengan permainan Catur.

Taktik
Taktik adalah 1) tindakan atau strategi yang dijalankan untuk mencapai tujuan tertentu; 2) seni untuk menyusun angkatan bersenjata dalam peperangan dan mengorganisasikan pelaksanaannya. Asal kata taktik adalah taktike tekhne yaitu ‘art of tactics’, dari taktos yang berarti ‘ordered, arranged’.

Taktik adalah tindakan spesifik yang diambil untuk mengatasi situasi tertentu sebagai bagian dari dari rencana spesifik atau strategi. Contoh Taktik misalnya datang lebih awal ke suatu acara, bersuara keras, atau memakai warna tertentu. Praktek taktif kreatif dapat membawa perubahan positif. Taktik berkaitan dengan bagaimana strategi dijalankan, direncanakan dan kegiatan khusus (ad hoc) untuk suatu maksud dalam menangani tuntutan saat ini, dan untuk berpindah dari satu tonggak lainnya (milestone) dalam mewujudkan tujuan keseluruhan.

Jadi taktik -sebagai drilldown dari strategi- menentukan pencapaian tujuan yang sudah digariskan dalam strategi. Jika Strategi dipandang sebagai buah pikiran maka Taktik adalah aksi atas buah pikiran. Setiap rantai proses dalam organisasi akan mengekesekusi taktik yang mendukung strategi bisnis dan berkontribusi bagi pencapaian strategic objectives.

Prakteknya
Dalam organisasi, strategi ditetapkan oleh Top Manajemen atau Direksi, dan Taktik oleh Kepala Departemen untuk implementasi oleh karyawan.

Contoh #1:
Tujuan: Meningkatkan kompetensi karyawan
Strategi:
-Pelaksanaan diklat, benchmark, atau Company University
-Rekruitmen (fresh, profesional, expert) berdasarkan Job Analysis, Design, dan Specs

Strategi Human Resource Management adalah rencana organisasi untuk mengelola tenaga kerja, budaya, struktur, pelatihan dan pengembangan, serta menentukan bagaimana SDM dapat sesuai (fit) untuk perkembangan organisasi dimasa mendatang.

Taktik
- pelaksanaan lomba kreativitas dan inovasi serta aplikasinya
- pemberian award, misalnya mengumumkan karyawan dgn produktivitas terbaik periode ini
- improvement sistim kerja (bisnis proses)
- peningkatan know-how, know-why, infrastruktur dan teknologi
- menghindari ketergantungan terhadap individu
- mutasi, rotasi.

Contoh #2:
Tujuan: Meningkatkan Penjualan
Strategi: Penetrasi pasar, Bentuk Pasar baru
Taktik: Pasti Anda sering menemui Direct Marketing atau Advertising di TV...ya itu salah satu taktiknya.

http://www.edcollins.com/stratego/stratego-strategia.htm

Dalam membuat perencanaan, kita akan berpikir dalam big picture kemudian memecahnya (drill down) menjadi aktivitas-aktivitas. Perencanaan awal yang baik akan menghemat banyak waktu dan uang (resources) dan memberikan hasil yang diharapkan.

Jadi pada GOAL dan OBJECTIVE dinyatakan apa yang ingin dicapai, kemudian dalam STRATEGI dituangkan rencana untuk mencapai sasaran (strategic objectives), selanjutnya melalui TAKTIK ditetapkan tindakan efektif untuk merealisasikan rencana-rencana strategis. Taktik merupakan aktivitas atau praktek yang dapat dicoba/diuji atau diukur untuk menentukan efektitifasnya.

Is there any strategy in your strategic plan? Most entities would answer "Yes, we do!".

Jumat, 09 April 2010

Moto GP 2010: Jorge Lorenzo (My favourite)

Moto GP putaran 1 dijadwalkan berlangsung pada 11 April 2010 di sirkuit Doha/Losail, Qatar.

10 Team akan bertarung dan 17 pembalap siap berpacu, yaitu:
1. Ducati Marlboro Team: 1) Casey Stoner + 2) Nicky Hayden
2. Fiat Yamaha Team: 3) Valentino Rossi + 4) Jorge Lorenzo
3. Interwetten Honda MotoGP: 5) Hiroshi Aoyama
4. LCR Honda MotoGP: 6) Randy De Puniet
5. Monster Yamaha Tech 3: 7) Colin Edwards + 8) Ben Spies
6. Paginas Amarillas Aspar: 9) Hector Barbera
7. Pramac Racing Team: 10) Mika Kallio + 11) Aleix Espargaro
8. Repsol Honda Team: 12) Andrea Dovizioso + 13) Dani Pedrosa
9. Rizla Suzuki MotoGP: 14) Alvaro Bautista + 15) Loris Capirossi
10. San Carlo Honda Gresini: 16) Marco Melandri + 17) Marco Simoncelli


Pada musim 2009, Rossi sangat tangguh dan tampak dari hasil ini.

#CircuitRiderConstructor
1Comunitat Valenciana
Pedrosa, DaniHonda
2Sepang CircuitStoner, CaseyDucati
3Phillip IslandStoner, CaseyDucati
4EstorilLorenzo, JorgeYamaha
5MisanoRossi, ValentinoYamaha
6IndianapolisLorenzo, JorgeYamaha
7Automotodrom BrnoRossi, ValentinoYamaha
8Donington ParkDovizioso, AndreaHonda
9SachsenringRossi, ValentinoYamaha
10 Mazda RacewayPedrosa, DaniHonda
11AssenRossi, ValentinoYamaha
12Circuit de CatalunyaRossi, ValentinoYamaha
13MugelloStoner, CaseyDucati
14Le MansLorenzo, JorgeYamaha
15JerezRossi, ValentinoYamaha
16MotegiLorenzo, JorgeYamaha
17Losail CircuitStoner, CaseyDucati

Yaaa, Valentino Rossi memang hebat, akankah dia mampu mempertahankan gelar juara dunia yang disandangnya? Bagaimana dengan Stoner maupun Pedrosa? Mereka berdua pembalap yang hebat. Semoga saja problem pada pergelangan tangan tidak menganggunya, demikian pula dengan Pedrosa semoga tidak selip. Jika mereka dapat bertarung penuh pada setiap round, tentu ini tontonan yang seru.

Bens Spies, Aoyama dan Doviozo juga potensial. Seru saat menonton mereka bertarung.

Tetapi favorit saya untuk juara pada musim 2010 adalah Jorge Lorenzo menari. Alasannya, hanya dengan data visual sepanjang race 2009, saya boleh melihat kepiawaiaannya, keberanian, kegigihan, teknik tikungan, kemampuan motor dan fisiknya selama musim 2009. Ia adalah kandidat juara musim 2010.

Selamat bertarung buat mereka, dan buat kita selamat menonton dan ber-fans-ria, kita tunggu hasilnya pada 7 Nopember 2010.

Workshop Kepada Pemasok

Tanggal 5-7 April 2010, Bagian Pengadaan dan Timnya melaksanakan workshop kepada Vendor tentang Aturan (business rules) procurement dengan mekanisme Auction. Sasarannya adalah:

1. Pemasok tahu bagaimana proses e-Procurement berlangsung
2. Pemasok tahu What, How, When dari mekanisme e-Auction yang kami terapkan
3. Pemasok memahami Apa aktivitas/ tahapan yang harus mereka kerjakan (secara elektronik dan manual/konvensional)
4. Pemasok mengetahui kelengkapan dokumen yang harus dipenuhi untuk memenuhi aspek legal
5. Pemasok mengetahui e-Auction sebagai suatu service atau layanan kami yang baru dengan berpedoman pada PER-05/MBU/2008 tentang Prinsip Pengadaan yang Efisien, Efektif, Kompetitif, Transparan, Adil dan Wajar, Akuntabel.

Kegiatan workshop sekaligus sosialisasi ini dibuka oleh Bachtiar Damanik, dimonitor oleh Djat Sudardjat. Hari Prasetyo, Suhendra dan Saya melakukan peran fasilitator.

Pada periode ini ada 7 kelas workshop. Banyak pertanyaan dan masukan menarik, antara lain:

  • Apakah sistem ini aman dari para hacker atau sejenisnya?
  • Apakah Harga Penawaran yang disimpan di database, tidak bisa diketahui pihak tertentu?
  • Apakah hanya Harga sebagai faktor untuk menentukan Calon Pemenang. Bagaimana dengan Kualitas?
  • Apakah pemasok harus melakukan Negosiasi terhadap masing-masing item barang yang harganya masih diatas HPS seandainya Total Harga Penawaran sudah dibawah Total HPS?
  • Apakah Pemasok dapat membuat penawaran meskipun Klasifikasi Sub Bidang Pekerjaan yang mereka miliki tidak sesuai dengan Persyaratan Pengadaan?
  • Apakah pemasok dapat menawar untuk setiap kegiatan procurement?
  • Bagaimana jika saat delivery, barang yang dipasok direject?
  • Dipasar banyak ragam Kelas Barang, pemasok pakai harga yang mana?
  • Pemasok merasa terlalu banyak penggunaan meterai dan mohon ditinjau.
  • dan banyak lagi.
Tentu saja kami mendengar suara pemasok apalagi jika dikaitkan dengan Manajemen Rantai Pasokan (Supply Chain Management). Oh yah, SCM itu adalah tentang mengelola aliran informasi, material, servis dan uang dalam lintas setiap aktivitas, untuk memaksimalkan efektivitas suatu proses. Ini tentu berkaitan dengan memperkenalkan alat-alat baru atau merevisi teknik yang telah dikenal dengan baik, dan sederhananya dengan bertanya kepada diri kita sendiri: "Apakah ini hal yang tepat untuk dilakukan (Is this the right thing to do)" daripada pertanyaan "Apakah ini cara terbaik yang harus kita teruskan terhadap hal yang sama (Is this the best way we can continue to do the same thing)". Ini adalah proses berkesinambungan, bukan 'satu-kali' perbaikan.

Singkatnya, SCM yang berhasil mampu menekan cost pada sisi client dan supplier, dengan tetap menopang atau meningkatkan nilai tambah dan margin. Konsekuensinya, perusahaan yang memiliki supply chains yang efektif kebanyakan merupakan perusahaan yang sukses.

"A company that fails to manage its supply chains at a strategic level is unlikely to meet its business objectives effectively."

Wah sampai lari ke SCM , oke deh senyumkenyitanyway, that's the broad picture we are willing to dan foto ini sekedar menggambarkan suasana dan seriusnya semua pihak untuk melakoni cara-cara baru....celebrate

Hari menunjukkan harga auction peserta. Ferry menunjukkan grafik. Suhendra mengamati tabel dan timestamp.

Kamis, 08 April 2010

Conditional Logging in Apache

Apache server records all incoming requests and all requests processed to a log file. This article will show how to conditionally records or prevents log entries into access log file.

The location and content of the access log are controlled by the CustomLog directive. To find Apache access log file location, we could grep httpd.conf file, for example:
#grep CustomLog /usr/local/etc/apache22/httpd.conf

CustomLog /var/log/httpd-accessviaproxy.log combined env=!is-forwarder
CustomLog /var/log/httpd-accessfwd.log fwd env=is-forwarder
CustomLog /var/log/httpd-accessviaproxy.log combined env=!gbrnolog
CustomLog /var/log/httpd-accessfwd.log fwd env=!gbrnolog

The CustomLog directive is used to log requests to the server. A log format is specified, and the logging can optionally be made conditional on request characteristics using environment variables. The syntax is:
CustomLog filepipe formatnickname [env=[!]environment-variable]

The first argument, which specifies the location to which the logs will be written, can take one of the following two types of values:file i.e A filename, relative to the ServerRoot; and pipe i.e The pipe character "", followed by the path to a program to receive the log information on its standard input.

The third argument is optional and controls whether or not to log a particular request based on the presence or absence of a particular variable in the server environment. If the specified environment variable is set for the request (or is not set, in the case of a 'env=!name' clause), then the request will be logged.

For example, the following two sets of directives have exactly the same effect:

# CustomLog with format nickname
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common


# CustomLog with explicit format string
CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b"


In the following example, we separate log file for accessing through a proxy and the other for external access of a web server.


<--IfModule log_config_module>
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" fwd

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
# If you do not specify an ErrorLog directive within a

# container, error messages relating to that virtual host will be
# logged here. If you *do* define an error logfile for a
# container, that host's errors will be logged there and not here.
ErrorLog /var/log/httpd-error.log
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" is-forwarder


#ignore these elements into logs.
# Here we exclude some files from our log
SetEnvIf Request_URI "(\.png\.gif\.jpg\.ico\.css)$" nologimage
#CustomLog /var/log/httpd-access.log common
CustomLog /var/log/httpd-accessviaproxy.log combined env=!is-forwarder
CustomLog /var/log/httpd-accessfwd.log fwd env=is-forwarder
CustomLog /var/log/httpd-accessviaproxy.log combined env=!nologimage
CustomLog /var/log/httpd-accessfwd.log fwd env=!nologimage
< /ifmodule>

When using conditional logging, the environment variable system sets a variable based on the request. The CustomLog directive accepts an environment condition that will be applied to the CustomLog configured.

If we would like to exclude our own IP address for example localhost, use this:

SetEnvIf Remote_Addr "127\.0\.0\.1" ignoreme

or to mark requests for the robots.txt file

SetEnvIf Request_URI "^/robots\.txt$" ignoreme
CustomLog "logs/access.log" common env=!ignoreme


The format of the access log is highly configurable. Here some of format string for LogFormat:
%a Remote IP-address
%A Local IP-address
%b Size of response in bytes, excluding HTTP headers. In CLF format, i.e. a '-' rather than a 0 when no bytes are sent.
%B Size of response in bytes, excluding HTTP headers.
%h Remote host
%H The request protocol
%l Remote logname (from identd, if supplied). This will return a dash unless mod_ident is present and IdentityCheck is set On.
%r First line of request
%R The handler generating the response (if any).
%s Status. For requests that got internally redirected, this is the status of the *original* request --- %>s for the last.%u Remote user (from auth; may be bogus if return status (%s) is 401)
%U The URL path requested, not including any query string.
%t Time the request was received (standard english format)
%T The time taken to serve the request, in seconds.

By using conditional logging, we could ignore or prevent writing entry at our log file.

For detail:
http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html
http://httpd.apache.org/docs/2.2/mod/mod_log_config.html