activo | asset management system

code.id

Friday, November 11, 2011

Live in "SELECT * FROM" World

Tak terasa, 9 tahun berkecimpung di dunia Programming, mungkin sudah ribuan kali saya mengetik keyword "SELECT * FROM"

select bintang from

Dari seorang staf programmer, sampai sekarang yang sudah berpangkat, tetap saja mengetik "SELECT * FROM".

Sampai kapan saya pensiun mengetik "SELECT * FROM", tidak tahu. Karena saya masih menyukai bidang pekerjaan ini. Dan memang bidang ini saja yang saya kuasai. Berdagang, kurang. Jadi motivator, kurang. Jadi presiden, apalagi. Semua serba kurang.

Jadi,

kembaalii keee... sql...

Thursday, November 10, 2011

Tuesday, November 08, 2011

Uji Nyali di Menara Saidah

Pembaca bernama Ahmad menceritakan kisah yang menarik tentang pengalamannya di Gedung Menara Saidah. Berikut kisahnya :

--

UJI NYALI DI MENARA SAIDAH

Ini benar2 pengalaman saya terjebak dilantai paling atas gedung menara saidah (kalau tdk salah) antara tahun 2009-2010.

Saat itu pas hari jum'at dimana setiap hari jum'at gedung itu selalu digunakan shalat jum'at karena memang di lantai paling atas ada ruang lebar yg dijadikan masjid. Siang itu saya datang agak terlambat namun kalau mencari masjid ditempat lain pasti akan habis waktunya sehingga saya memutuskan untuk naik ke lantai (26 atau 27 - saya juga agak lupa).

Dengan buru2 saya langsung masuk lift dan memencet nomor lantainya. Lift naik pelan hingga sampai ke lantai yg saya tuju. Setelah pintu membuka, saya langsung keluar dari lift dan langsung belok kekanan karena ruang utk shalatnya berada disebelah kanan lift. TAPI betapa terkejutnya saya ketika sudah berada diluar lift. TIDAK ada satu orang pun yang melaksanakan shalat jum;at disana. YANG lebih mengejutkan lagi, tidak ada satu lampu pun yang menyala.
Situasi saat itu sangat gelap lap,.. lap,.. setelah pintu lift tertutup dan kembali kebawah.

Saya coba menekan lift berkali-kali agar pintunya membuka tapi tidak bisa2. Rasanya jantung saya mau copot,karena dikegelapan itu terlihat ada cahaya merah kecil yg menyala diujung sebelah kiri dan kanan. Ternyata itu adalah cahaya lampu dari boks sekring atau apalah namanya yang jelas itu adalah alat emergency.

Dalam situasi seperti itu aku mulai mengontrol perasaan agar tidak semakin panik. Keringatku mulai bercucuran karena udara yg sangat panas. Aku mulai mencari-cari jalan keluar dengan bantuan cahaya handphone yg aku pegang. Saat itu aku membawa dua hp. Yg satu tidak ada sinyal, yg CDMA tidak ada pulsa. Maka tidak ada jalan lain kecuali mencari tangga darurat untuk turun dan terbebas dari panas, panik dan was-was ini.

Pelan-pelan aku mulai menelusuri lorong kecil disamping pintu masjid menuju tangga darurat. Setelah ketemu pintu tangga, ternyata jalan keluarnya dihalang2i rak besar tempat menyimpan sepatu.Setelah ku geser sesuai dengan lebar tubuh, aku melangkah ke bawah melalui tangga. Lantai pertama berhasil kulalui, turun ke lantai berikutnya. Semua baik2 saja.

Ketika sampai di lantai yg ketiga WUIH!,.... Pikiranku mulai kemana2. Dalam hatiku bertanya, Aku ketemu apa nanti jika sudah sampai pertengahan lantai? (Perkiraan dilantai 13 atau 14), Kalaupun ada penghuninya, lari ke atas atau ke bawah, rasanya tidak sanggup. Bisa2 saya jadi korbanya dan tidak ada orang yg tahu apa yg terjadi.

PAS di pertengahan anak tangga,  saya baru sadar bahwa telapak tangan saya penuh dengan debu karena saya gunakan untuk memegang anak tangga. Terpaksa saya berhenti sebentar dan menggosokkan telahap tangan kanan lalu saya lihat, ternyata debu di tangga dan anak tangga benar2 sangat tebal. Saya mulai berfikir bahwa gedung ini sudah lama tidak ditempati orang. Tanpa pikir panjang lagi saya langsung bergegas ke lantai atas menuju masjid. Saya benar2 panik karena jalan satu2nya tidak berhasil.

Ditengah kepanikan seperti itu, suatu Anugrah benar-benar saya rasakan. Tiba2 pikiran saya teringat dg voucer pulsa CDMA 10 ribu yg ada didompet. Ini benar2 sebuah pertolongan dari Allah karena kalau tidak, matilah saya diatas. 

Setelah ingat dg voucer, pikiran langsung encer. segera aku tlp pusat call center 108 utk minta informasi nomor gedung menara saidah. Setelah mendapat nomor segera aku tlp nomor itu. Beruntung juga ada yg mengangkat sehingga langsung saya jelaskan bahwa posisi saya sedang terjebak dilantai paling atas. Awalnya saya sempat ragu apakah orang yang mengangkat tlp tadi percaya dengan informasiku.

Menunggu sambil berdoa akhirnya terdengar suara lift jalan. Setelah menunggu beberapa saat akhirnya pintu terbuka dan saya lihat pria berpakaian hitam-hitam seperti satpam sambil memegang besi ditangannya. Sepertinya dia bersiaga menghadapi serangan (kalau-kalau ada yg menyerang).

Tanpa banyak bicara saya langsung naik lift dan turun ke bawah. sampai dibawah saya ucapkan terima kasih kepada pria itu dan langsung ke jalan raya.

Pengalaman UJI NYALI seperti ditayangkan di televisi ini benar2 tidak terlupakan seumur hidup...

***

Monday, November 07, 2011

Kenapa Fauzi Bowo Tidak Membangun Kereta Bawah Tanah

Berita "Banjir Thailand Mengancam 3 Stasiun Kereta Bawah Tanah", cukup membuat saya berpikir ulang terhadap sikap saya ke Gubernur Jakarta, Fauzi Bowo. Selama ini, saya mengambil sikap sinis terhadap beliau atas keputusannya membangun tol dalam kota diatas jalan kasablanca. Kenapa sinis?

Sinis karena jalan tol itu hanya untuk keperluan orang-orang kaya saja yang memiliki mobil. Tidak berpihak kepada orang-orang menengah kebawah yang lebih memilih menggunakan bis, mikrolet, kereta dan alat transportasi dalam kota lainnya.

Selama ini saya selalu berpikir, kenapa Fauzi Bowo tidak mengambil keputusan untuk membangun Kereta Bawah Tanah saja yang bisa menghubungkan daerah pinggir Jakarta dengan pusat kota. Dengan membangun Kereta Bawah Tanah, maka solusi kemacetan sebetulnya bisa teratasi. Tapi, setelah membaca Berita "Banjir Thailand Mengancam 3 Stasiun Kereta Bawah Tanah", saya jadi berpikir kembali, Jakarta adalah kota yang mudah terjangkit penyakit bernama BANJIR. Kalau sudah banjir, investasi yang super mahal akan sia-sia. Sudah investasi diawal mahal, maintenance juga mahal. Nah, dengan dibangunnya jalan tol diatas Jakarta, maka kalau terjadi banjir, tol tersebut bisa berfungsi sebagai tempa pengungsian karena posisinya yang diatas tanah, hehe...

Sunday, November 06, 2011

Terbantu oleh Google Desktop

Setiap hari, email yang saya terima bisa lebih dari 20. Dan saya sudah bekerja dengan kondisi terima email yang banyak setiap hari telah berlangsung hampir 3 tahun.

Sebelum menggunakan Google Desktop, saya cukup kelimpungan untuk mencari email-email lama. Tapi sekitar 1 tahun yang lalu, saya instal Google for Desktop, proses mencari arsip email di Outlook 2007 sangat membantu.

google desktop bantu cari

Konsep kerja Google Desktop memang luar biasa canggih. Semua file email diarsip dan diindex sehingga kita bisa mudah mencari email. Sampai saat ini, saya masih terkagum-kagum oleh Google Desktop.

Saturday, November 05, 2011

Winsock Error x060 The connection timed out = ISP lagi dodol

2 november kemarin, email dikantor mengalami masalah. Kebetulan, dikantor menggunakan MDaemon untuk menjalankan mail server. Hampir seharian, email bermasalah dan tidak ditemukan jalan keluar. Sampai ketika sore hari diberitahu oleh pihak ISP, bahwa ternyata kendala ada di sisi mereka. Fiuh...

Ketika terjadi masalah, saya menangkap 1 error yang akan menjadi pegangan saya kalau terjadi masalah lagi:

"Winsock Error x060 The connection timed out."

Karena menurut milis mdaemon indonesia, jika ketemu error ini, masalah ada di sisi ISP. Berikut log lengkapnya:

Wed 2011-11-02 12:31:04: ----------
Wed 2011-11-02 12:30:42: [-1:40:4] Parsing Message <D:\MDaemon\Remoteq\pd50000924927.msg>
Wed 2011-11-02 12:30:42: [-1:40:4] From: dja.xxx@x-cgm.com
Wed 2011-11-02 12:30:42: [-1:40:4] To: l.xxx@x-bsa.co.id
Wed 2011-11-02 12:30:42: [-1:40:4] Subject: RE: CMA Daily Movement in, out, and stock October 29 & 30, 2011.
Wed 2011-11-02 12:30:42: [-1:40:4] Message-ID: <019301cc983d$d6f6fe80$84e4fb80$@aferry@x-cgm.com>
Wed 2011-11-02 12:30:42: [-1:40:4] MX-record resolution of [mail.x-bsa.co.id] in progress (DNS Server: 202.148.1.x)...
Wed 2011-11-02 12:30:43: [-1:40:4] Name server has no records of the requested type for that domain.
Wed 2011-11-02 12:30:43: [-1:40:4] Attempting to send message to gateway.
Wed 2011-11-02 12:30:43: [-1:40:4] Attempting SMTP connection to [mail.x-bsa.co.id : 25]
Wed 2011-11-02 12:30:43: [-1:40:4] A-record resolution of [mail.x-bsa.co.id] in progress (DNS Server: 202.148.1.196)...
Wed 2011-11-02 12:30:43: [-1:40:4] D=mail.x-bsa.co.id TTL=(98) A=[202.148.1.x]
Wed 2011-11-02 12:30:43: [-1:40:4] Attempting SMTP connection to [202.148.1.x : 25]
Wed 2011-11-02 12:30:43: [696:40:4] Waiting for socket connection...
Wed 2011-11-02 12:31:04: [696:40:4] Winsock Error x060 The connection timed out.
Wed 2011-11-02 12:31:04: [696:40:4] SMTP session abnormally terminated, 0 bytes transferred.
Wed 2011-11-02 12:31:04: ----------

.

Friday, November 04, 2011

Ngeblog

28 Oktober kemarin adalah hari blog Indonesia. Dimulai tahun 2007, euforia ngeblog benar-benar luar biasa. Saya termasuk yang kecanduan ngeblog. Orang berinteraksi, berteman lewat blog. Tapi lama-kelamaan, trennya bergeser. Dari ngeblog, jadi nge'efbi dan ngetwit. Dan mulai berkurang orang yang bersosial lewat blog. Dan saat ini, blog yang hidup adalah blog yang benar-benar ingin berbagi ilmu, informasi dan sesuatu yang bermanfaat bagi orang lain.

Mengenang soal ngeblog dan apa itu ngeblog, saya membuat beberapa tautan yang berisi tentang ngeblog. Silahkan dinikmati (kalau suka, he he... )

Mari Berbagi Lewat Ngeblog

Ngeblog Yuk...

Buah Berbagi Ilmu

Ngeblog, Aktifitas Yang Saling Menguntungkan

Blog Adalah Racun

35 Tanda-tanda Kecanduan Blog (oleh Budi Putra)

Thursday, November 03, 2011

SQL SERVER 2005 Bingung Menentukan Angka atau Huruf

Ada mekanisme di SQL SERVER 2005 untuk memparsing where condition yang 'aneh'. Saya punya data dan ada satu kolom dengan tipe data varchar(10), tapi ketika dibuat query dan filternya dibuat tanpa tanda kutip:

select * from kasir_detail where string1 = 2250

Keluar error seolah-olah filternya itu adalah integer:

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'CY' to data type int.

Error ini muncul karena di kolom string1 mengandung angka dan huruf. Tapi kalau filternya saya beri tanda kutip:

select * from kasir_detail where string1 = '2250'

Tidak muncul error.

Hmmm...

Wednesday, November 02, 2011

Tampilan Baru GMAIL

Tampilan GMAIL sekarang berubah. Lebih sederhana, serba putih dan terintegrasi dengan Google+.

Kalau lihat gambar dibawah, foto profil saya sudah muncul.

gmail new look

Keren...

Tuesday, November 01, 2011

[NAVISION] Item Card dengan Banyak Foto

Di NAV, kekurangan Item Card adalah tidak bisa menyimpan foto item lebih dari satu. Kebutuhan ini biasanya diperlukan untuk barang sparepart yang perlu foto dari beberapa sudut. Untuk mengakalinya, bisa digunakan aplikasi tambahan berupa aplikasi web yang contoh programnya akan saya tunjukan.
Pada Item Card, buat control dan beri nama Photo.
control photo
Lalu beri script berikut :

  1: 
  2: HYPERLINK('http://10.10.10.14/itempic/Default.aspx?itemno=' + "No.");
  3: 

--


Kemudian, kita buat solution di .NET. Kali ini saya menggunakan Visual studio 2005 dengan basprog C#. Lalu berikut contoh scriptnya :
Default.aspx:

  1: <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
  2: 
  3: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4: 
  5: <html xmlns="http://www.w3.org/1999/xhtml" >
  6: <head runat="server">
  7:     <title>Item Picture</title>
  8: </head>
  9: <body>
 10: 
 11:     <form id="form1" runat="server">
 12:     <div title="Item Picture">
 13:     <table>
 14:     <tr>
 15:     <td>
 16:         <span style="font-family: Tahoma">Item No : </span>
 17:     </td>
 18:     <td>
 19:         &nbsp;<asp:TextBox ID="TextBox1" runat="server" BorderStyle="None" Font-Names="Tahoma"></asp:TextBox></td>
 20:     </tr>
 21:      <tr>
 22:     <td>
 23:         <span style="font-family: Tahoma">
 24:     Item Name : </span>
 25:     </td>
 26:     <td>
 27:         &nbsp;<asp:TextBox ID="TextBox2" runat="server" BorderStyle="None" Font-Names="Tahoma"></asp:TextBox></td>
 28:     </tr>
 29:      <tr>
 30:     <td>
 31:         <span style="font-family: Tahoma">
 32:     Part No : </span>
 33:     </td>
 34:     <td>
 35:         &nbsp;<asp:TextBox ID="TextBox3" runat="server" BorderStyle="None" Font-Names="Tahoma"></asp:TextBox></td>
 36:     </tr>
 37:     </table>
 38:         <br />
 39:     
 40:         <table border="0" cellpadding="3" cellspacing="1" >
 41:         <tr>
 42:             <td bgcolor="#66ffff">
 43:                 <asp:Label ID="Label4" runat="server" Text="Upload foto :" Font-Names="Tahoma"></asp:Label></td>
 44:             <td bgcolor="#66ffff" colspan="3"><INPUT id="filUpload"  type="file" name="filUpload" runat="server">
 45:       <asp:Button id="btnUpload"  runat="server" Text="Upload" OnClick="btnUpload_Click" ></asp:Button>
 46:                 </td>
 47:         </tr>
 48:         <tr><td></td><td>
 49:             &nbsp;<asp:Label id="lblOutput" runat="server" Width="240px" Font-Names="Tahoma"></asp:Label></td></tr>
 50:         </table>
 51:     <table style="font-family: Tahoma">
 52:     <tr>
 53:     <td>Foto 1 :</td>
 54:     </tr>
 55:     <tr>
 56:     <td><asp:Image ID="Image1" runat="server"  /></td>
 57:     </tr>
 58:     <tr>
 59:     <td>Foto 2 :</td>
 60:     </tr>
 61:     <tr>
 62:     <td><asp:Image ID="Image2" runat="server"  /></td>
 63:     </tr>
 64:     <tr>
 65:     <td>Foto 3 :</td>
 66:     </tr>
 67:     <tr>
 68:     <td><asp:Image ID="Image3" runat="server"  /></td>
 69:     </tr>
 70:     <tr>
 71:     <td>Foto 4 :</td>
 72:     </tr>
 73:     <tr>
 74:     <td><asp:Image ID="Image4" runat="server"  /></td>
 75:     </tr>
 76:     <tr>
 77:     <td>Foto 5 :</td>
 78:     </tr>
 79:     <tr>
 80:     <td><asp:Image ID="Image5" runat="server"  /></td>
 81:     </tr>
 82:     </table>
 83:     </div>
 84:     </form>
 85: </body>
 86: </html>
 87: 

Default.aspx.cs :
  1: using System;
  2: using System.Data;
  3: using System.Configuration;
  4: using System.Web;
  5: using System.Web.Security;
  6: using System.Web.UI;
  7: using System.Web.UI.WebControls;
  8: using System.Web.UI.WebControls.WebParts;
  9: using System.Web.UI.HtmlControls;
 10: using System.Drawing;
 11: 
 12: using XYZPIC.Services;
 13: using XYZPIC.Data;
 14: using XYZPIC.Data.Bases;
 15: using XYZPIC.Entities;
 16: 
 17: public partial class _Default : System.Web.UI.Page 
 18: {
 19:     protected void Page_Load(object sender, EventArgs e)
 20:     {
 21:         if (Request.QueryString["itemno"] != null)
 22:         {
 23:             ViewState["itemno"] = Request.QueryString["itemno"].ToString();
 24: 
 25:             SafeNameXYZItem item = new SafeNameXYZItem();
 26: 
 27:             TList<SafeNameXYZItem> itemlist = new TList<SafeNameXYZItem>();
 28:             item = DataRepository.SafeNameXYZItemProvider.GetByNo(ViewState["itemno"].ToString());
 29:             TextBox1.Text = item.No;
 30:             TextBox2.Text = item.Description;
 31:             TextBox3.Text = item.PartNo;
 32: 
 33:             Image1.ImageUrl = "Image/noimage.jpg";
 34: 
 35:             Image2.ImageUrl = "Image/noimage.jpg";
 36: 
 37:             Image3.ImageUrl = "Image/noimage.jpg";
 38: 
 39:             Image4.ImageUrl = "Image/noimage.jpg";
 40: 
 41:             Image5.ImageUrl = "Image/noimage.jpg";
 42: 
 43:             TList<ItemPicture> itempicturelist = new TList<ItemPicture>();
 44:             ItemPictureQuery qry = new ItemPictureQuery();
 45:             qry.Append(ItemPictureColumn.Itemno, ViewState["itemno"].ToString());
 46:             itempicturelist = DataRepository.ItemPictureProvider.Find(qry);
 47:             int i = 1;
 48:             foreach (ItemPicture ip in itempicturelist)
 49:             {
 50:                 if (i == 1)
 51:                     Image1.ImageUrl = ip.Path;
 52: 
 53:                 if (i == 2)
 54:                     Image2.ImageUrl = ip.Path;
 55: 
 56:                 if (i == 3)
 57:                     Image3.ImageUrl = ip.Path;
 58: 
 59:                 if (i == 4)
 60:                     Image4.ImageUrl = ip.Path;
 61: 
 62:                 if (i == 5)
 63:                     Image5.ImageUrl = ip.Path;
 64: 
 65:                 i++;
 66:             }
 67:         }
 68:     }
 69: 
 70:     public bool ThumbnailCallback()
 71:     {
 72:         return false;
 73:     }
 74: 
 75:     protected void btnUpload_Click(object sender, EventArgs e)
 76:     {
 77:         string sSavePath;
 78:         sSavePath = "Image/";
 79: 
 80:         // If file field isn’t empty
 81:         if (filUpload.PostedFile != null)
 82:         {
 83:             // Check file size (mustn’t be 0)
 84:             HttpPostedFile myFile = filUpload.PostedFile;
 85:             int nFileLen = myFile.ContentLength;
 86:             if (nFileLen == 0)
 87:             {
 88:                 lblOutput.Text = "There wasn't any file uploaded.";
 89:                 return;
 90:             }
 91: 
 92:             // Check file extension (must be JPG)
 93:             if (System.IO.Path.GetExtension(myFile.FileName).ToLower() != ".jpeg")
 94:             {
 95:                 if (System.IO.Path.GetExtension(myFile.FileName).ToLower() != ".jpg")
 96:                 {
 97:                     lblOutput.Text = "The file must have an extension of JPG/JPEG";
 98:                     return;
 99:                 }
100:             }
101:             // Read file into a data stream
102:             byte[] myData = new Byte[nFileLen];
103:             myFile.InputStream.Read(myData, 0, nFileLen);
104: 
105:             // Make sure a duplicate file doesn’t exist.  If it does, keep on appending an incremental numeric until it is unique
106:             string sFilename = System.IO.Path.GetFileName(myFile.FileName);
107:             int file_append = 0;
108:             while (System.IO.File.Exists(Server.MapPath(sSavePath + sFilename)))
109:             {
110:                 file_append++;
111:                 sFilename = System.IO.Path.GetFileNameWithoutExtension(myFile.FileName) + file_append.ToString() + ".jpg";
112:             }
113: 
114:             // Save the stream to disk
115:             System.IO.FileStream newFile = new System.IO.FileStream(Server.MapPath(sSavePath + sFilename), System.IO.FileMode.Create);
116:             newFile.Write(myData, 0, myData.Length);
117:             newFile.Close();
118: 
119:             // Check whether the file is really a JPEG by opening it
120:             System.Drawing.Image.GetThumbnailImageAbort myCallBack = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
121:             Bitmap myBitmap;
122:             try
123:             {
124:                 myBitmap = new Bitmap(Server.MapPath(sSavePath + sFilename));
125: 
126:                 //insert ke table item_picture
127:                 ItemPicture ip = new ItemPicture();
128:                 ip.Itemno = ViewState["itemno"].ToString();
129:                 ip.Path = sSavePath + sFilename ;
130:                 ip.Validate();
131:                 if (IsValid)
132:                 {
133:                     DataRepository.Provider.ItemPictureProvider.Save(ip);
134:                 }
135: 
136:                 TList<ItemPicture> itempicturelist = new TList<ItemPicture>();
137:                 ItemPictureQuery qry = new ItemPictureQuery();
138:                 qry.Append(ItemPictureColumn.Itemno, ViewState["itemno"].ToString());
139:                 itempicturelist = DataRepository.ItemPictureProvider.Find(qry);
140:                 int i = 1;
141:                 foreach (ItemPicture ip2 in itempicturelist)
142:                 {
143:                     if (i == 1)
144:                         Image1.ImageUrl = ip2.Path;
145: 
146:                     if (i == 2)
147:                         Image2.ImageUrl = ip2.Path;
148: 
149:                     if (i == 3)
150:                         Image3.ImageUrl = ip2.Path;
151: 
152:                     if (i == 4)
153:                         Image4.ImageUrl = ip2.Path;
154: 
155:                     if (i == 5)
156:                         Image5.ImageUrl = ip2.Path;
157: 
158:                     i++;
159:                 }
160: 
161:                 // Displaying success information
162:                 lblOutput.Text = "File uploaded successfully!";
163: 
164:                 // Destroy objects
165:                 //myThumbnail.Dispose();
166:                 myBitmap.Dispose();
167:             }
168:             catch (ArgumentException errArgument)
169:             {
170:                 // The file wasn't a valid jpg file
171:                 lblOutput.Text = "The file wasn't a valid jpg file.";
172:                 System.IO.File.Delete(Server.MapPath(sSavePath + sFilename));
173:             }
174:         }
175:     }
176: }
177: 
Itu saja.

Komentar Terbaru