Senandung Kelabu

Siang ini mendung memenuhi langit. Menutup sinar matahari yang semestinya terik menjadi samar-samar. Semburat sendu yang membekas dalam kalbu membuat kelu lidah ku. Ku pandangi sosok di layar handphone ku. Sebuah potret diriku 10 tahun lalu.

Telah ku coba untuk bertransformasi menjadi seseorang yang tak perlu membeku jika harus bertemu dengan senandung kelabu. 10 tahun yang ternyata belum cukup untuk membuatku berteman dengan ikhlas dan sendu. Bias memori tentang pahit dan manis hidup kini justru terasa semakin nyata. Mendekapku, menarik ku menjauh dari syukur kepada Tuhan semesta alam, ALLAH SWT.

Hai kabut duka,
kau memang akan tetap ada. tapi maaf, aku ingin diriku tidak terus menerus takluk padamu.

Hai jiwa yang ingin dikenang dalam riang,
ini memang sulit. tapi ini lah jalan menuju surga. ikhlas menerima. bertawakkal kepada-NYA.

Terima kasih ya, Aku.
Tegakkan imanmu. Kuatkan sendi syukurmu. Tak apa jika kamu terus menurus mengadu kepada Pencipta mu. Sujudmu adalah pelabuhan terbaik untukmu.

Selamat tinggal, kelabu.

Berpijak di Kaki yang Berbeda

Beberapa waktu belakangan ini saya termasuk dalam kalangan pengguna sosial media yang cukup sering berselancar guna mencari informasi dan hiburan. Namun sering juga niat itu justru menjadi penyakit hati dalam diri. Melihat video anak yang makan lahap, melihat foto hasil kreatifitas anak, dan hal-hal yang sebenarnya positif tentang anak orang lain justru menjadi rasa iri dalam diri saya. Keinginan untuk membandingkan dengan anak saya pun tentunya tidak terelakkan. Kadang saya bahkan takut jika rasa yang timbul dalam lubuk hati saya menjadi penyakit ain untuk anak tersebut. Sering kali akhirnya saya unfollow akun tersebut untuk melindungi kedamaian saya. Biarlah saya dikatakan denial oleh orang lain. Toh itu kan kata orang. Bukan realita dimana saya dan suami sudah bersungguh-sungguh mengejar milestone anak agar tidak semakin tertinggal.

Jika ditelisik kembali, banyak juga informasi dari berbagai akun kredibel yang kemudian di-repost oleh akun yang saya follow. Saya tahu dan menyadari tentunya informasi tersebut dianggap penting oleh kenalan saya tersebut. Namun.. oh hai ego saya juga sering terusik. hahahaha..
Saya tidak akan menyangkal ketidaknyamanan tersebut. Tapi kontrol apa yang di-posting orang lain tidak akan pernah ada di saya. Hal yang saya bisa lakukan hanyalah memasang garis batas.

Iya itu penting bagi dia.

Apakah di saya menjadi penting juga?
BELUM TENTU

Penting untuk orang lain belum tentu penting untuk kita. Standar bisa jadi berbeda. Pijakan sepatumu tidak akan pernah sama dengan sepatunya.

Berhati-hati dalam bertutur kata kini berubah menjadi berhati-hati dalam posting di sosial media. Saya sebagai muslimah meyakini jika ada tulisan saya yang secara tidak sengaja menyakiti orang lain yang membaca, wow sungguh di akhirat balasannya. Berusaha menempatkan diri dari sudut pandang yang berbeda mau tidak mau perlu dilakukan jika tidak ingin mengusik perasaan orang lain yang membaca. Memilih kata yang mudah dipahami juga sangat penting agar inti dari informasi yang ingin diberikan bisa dipahami oleh banyak orang.

Continue reading “Berpijak di Kaki yang Berbeda”

Mengontrol Diri dalam Berekspektasi

Fokus kepada apa yang bisa kamu kontrol. Di luar itu, tiada perlu berharap. Kelola ekpektasimu.

Tiada akan pernah kamu dapat membuat SEMUA orang lain bahagia atas apa yang kamu lakukan. Dan tidak perlu juga kamu lakukan itu selama kamu tidak merugikan orang lain.

Seorang selebgram pernah menuliskan terkait banyak hal dan 2 kalimat di atas cukup membuat saya terpaku. aaah iyaa betul juga. Selama ini tidak pernah terpikir dalam benak saya belajar mengelola ekspektasi sehingga cenderung sering berharap atas sesuatu yang sesungguhnya di luar ranah yang bisa saya gapai.

Dari hal tersebut membuat saya menyadari bahwa berbicara secara terbuka dan mencari cara komunikasi yang tepat kepada seseorang atau dalam sebuah forum adalah hal penting yang harus saya pelajari. Saya yang dulu akan lebih memilih untuk diam dan berharap orang lain akan menggapai dan mengerti saya. Yang sebetulnya ada jalan lain yang lebih tepat yang mestinya saya lakukan dibanding dengan hanya diam. Yakni dengan mengemukakan apa yang saya inginkan dan saya pikirkan. Terkait bagaimana reaksi yang akan terjadi atas apa yang saya kemukakan tentu sudah diluar “ranah” saya. namun setidaknya saya telah menyelesaikan apa yang ada di bawah kontrol saya dan mengusahakannya.

Saya yang dulu akan cenderung menghindar dari konflik yang ternyata hal itu tidak selamanya benar. Karena konflik tetap dibutuhkan untuk mendapatkan perspektif dari masing-masing personal yang terlibat. Konflik tersebut juga tentunya bisa jadi membuat saya mendapatkan wawasan baru yang sangat berharga di waktu selanjutnya. Kepekaan dan pembatasan diri perlu saya bangun dengan baik karena berkaitan dengan bagaimana saya dapat menghadapi konflik tersebut dengan tidak menyakiti orang lain. Walaupun saya juga tidak mungkin akan dapat membuat semua orang bahagia. Namun setidaknya saya telah mengusahakan apa yang telah menjadi kewajiban saya.

Continue reading “Mengontrol Diri dalam Berekspektasi”

Membangun Persepsi yang Sama

“Aris udah coba kirim-kirim CV tapi nggak ada panggilan nih..” ku mulai percakapan ku dengan Uda via chat.

“Nggak apa-apa. Ditunggu aja. Aku ada nih panggilan interview lusa,” jawab Uda.

“Waaahh.. semoga berhasil ya kak”.

Aku dan Uda sedang berusaha untuk mendapatkan pekerjaan di perusahaan lain karena perusahaan tempat kami bekerja tidak memperbolehkan suami istri untuk tetap bekerja bersama (Iya, aku dan Uda sekantor andaikata kamu lupa. Hihihi..). Aku dan Uda sepakat bahwa nantinya ketika kami menikah, aku boleh bekerja. Kalaupun nantinya aku berubah pikiran dan ingin menjadi ibu rumah tangga saja, Uda juga mempersilahkan.

Sembari mencari-cari pekerjaan baru, aku dan Uda mulai mempersiapkan beberapa hal untuk acara pernikahan kami (ngetik ini eyke kok jadi malu ya boookk.. hahahaha.. ). Tidak mudah menyamakan pemahaman dua suku yang berbeda. Uda berasal dari suku Minang. Sedangkan aku dan keluargaku bersuku Jawa. Patriarki yang bertemu dengan matriarki. Selain itu, lokasi tempat tinggal kami sangat berbeda. Keluarga Uda tinggal di Pekanbaru. Sedangkan ayah ku di Malang. Sementara aku dan Uda memutuskan untuk menetap di Jakarta.

Alhamdulillah.. aku merasa beruntung karena Uda dan keluarga mau mengalah dan menerima kondisi keluargaku yang agak berbeda dari keluarga pada umumnya.

Ayah ku meminta untuk melakukan acara pernikahan di Malang dan beliau menyanggupi untuk membantu aneka persiapan di Malang. Aku dan Uda memutuskan untuk tidak merepotkan keluarga mengenai biaya atas acara pernikahan kami. Biarlah tabungan kami yang menutupi seluruh kebutuhan. Cukup tidaknya ya disesuaikan saja dengan budget dari tabungan.
Namun andaikata aku diizinkan menikah cukup di kantor KUA saja, aku akan sangat senang. Gratis. Tapi nyatanya tidak semua orang tua mau menerima karena beberapa pertimbangan.

Meskipun acara pernikahan dilakukan di Malang, aku dan Uda sepakat bersama dengan keluarga Uda akan mengadakan acara syukuran di Pekanbaru sebulan selepas acara di Malang.

Hari berganti begitu cepat bersamaan dengan saldo rekening yang terkuras. Ku pandangi koper ku yang telah masuk ke bagasi pesawat yang akan mengantarku ke Malang. Bismillah.. ya Rabb.. Engkau Maha Kuasa atas segala sesuatu. Oleh karenanya, mohon lancarkan hajat hamba untuk menikah. Tiada tempatku bersandar dan berharap selain kepada Engkau yang Maha Perkasa. Untuk rizki keluargaku yang Engkau titipkan melalui pekerjaan yang hamba lakukan selama ini, Ya Rabb Yang Maha Kaya, mohon dibukakan pintu lain karena dengan hamba menikah pekerjaan hamba sebelumnya sudah tidak bisa lagi menjadi salah satu pintu rizki. Amin

Karena Allah Maha Tahu

dret dret..
Handphone ku bergetar tanda ada pesan chat masuk. Tepat pukul 20.15. Ku buka aplikasi chat di handphone ku untuk mendownload kiriman audio dari Uda sekaligus mengirimkan rekaman audio ku.

Sesuai dengan kesepakatan ku dengan Uda, kami akan saling mengoreksi bacaan Quran dari rekaman audio yang dikirimkan. Ku buka Quran surah yang dibaca oleh Uda sembari ku dengarkan rekamannya.

“Qolqolahnya kurang kedengeran kak. Mungkin karena suara kakak kecil yaa..” ketik ku via chat.

“Oh gitu ya? mungkin juga. Soalnya aku lagi di musola stasiun nih. Nggak enak kenceng2. Belum sampe kosan. tapi karena udah mau jam8 aku singgah di musola dulu aja..” jawab Uda.

“I see.. “

Ini mungkin yang dimaksud oleh temanku. Melatih dan menguji komitmen. Dalam kondisi yang bagaimana pun, aku dan Uda diharuskan tetap melaksanakan kesepakatan kami untuk membaca Quran di jam 8 malam. Uda yang belum sampai di kamar kostnya melipir dulu ke suatu tempat dimana ia harus mengaji. Aku pun juga harus demikian. Menjaga waktu dan lokasi ku di sekitar jam 8 malam agar bisa mengaji.

Kegiatan itu berlangsung selama kurang lebih 2 minggu. Tak ada kendala yang berarti hingga Quran Surah yang kami sepakati untuk dibaca pun tidak terasa sudah khatam. Bersamaan dengan itu hati ku juga tergerak. Ingatanku mengenai beberapa permintaan ku ke Allah mendadak muncul. Ini kah jawaban Allah mengenai “teman hidup selamanya” yang kemarin ku ajukan?
Aku mendadak teringat dengan solat hajat yang ku lakukan kira-kira 2 minggu sebelum Uda mengajukan dirinya untuk menjadi suamiku.

Barakallah. Bismillaahirrohmaanirrohiim..
Dengan menyebut nama Allah yang Maha Pengasih lagi Maha Penyayang, Maha Pembolak Balik Hati, aku mulai mengetik pesan untuk dikirimkan ke Uda.

“Jadi sekarang kita mau gimana rencananya? Siapa yang resign?”

Bertemu dan Bertamu

“Aris.. mama sama papa ku mau ke jakarta. Aris mau nggak kalo ketemuan?” Uda membuka percakapan di chat.

Adalah suatu hal yang besar buatku jikalau seorang lelaki memintaku bertemu dengan orang tuanya. Kalau cuma datang karena main ke rumah teman laki-laki bersama teman-teman lain sih beda cerita ya. Udah “adat”nya mesti ketemu untuk menyapa dan salaman.

“Emmm.. Aris tanya papa dulu ya”, jawab ku membalas chat dari Uda.

Aku pun memindahkan jendela percakapan chat ku dari Uda menuju Sang Komandan, Papaku. Ku ceritakan ke papa jika Uda mengajakku untuk bertemu dengan kedua orang tuanya. Papa memperbolehkan dengan berbagai petuah sebelum menutup percakapan.

Continue reading “Bertemu dan Bertamu”

Keputusan Akhir Bukan Berarti Segalanya Berakhir

“Yuk Kak berangkat”, aku mengajak Uda agar segera berkemas menuju rumah ku untuk menemui Abang dan Adekku. Seperti kesepakatan sebelumnya, aku ingin agar kami dapat lebih mengenal kepribadian masing-masing melalui orang terdekat. Aku juga meminta Abang dan Adek untuk menilai Uda dari pandangan mereka agar aku bisa mendapatkan lebih banyak masukan.

“Oke.” Uda segera membereskan perlengkapan kerjanya dan mengikutiku pulang. Sesampai di rumah, aku mengenalkan Uda ke Abang dan Adek ku. Mereka bercakap-cakap cukup lama. Sekitar pukul 9 malam Uda pulang kembali ke kost nya.

*********************

“Jadi gimana mas menurut lw si Kak Dairi itu?” aku mulai bertanya ke Abangku.

“Gw nggak yakin sih win sabar atau nggak nya dia buat lw. Lw kan nomor satu maunya sabar. Nah yang gw liat tuh si Dairi bukan tipe yang lw cari. Bukan yang sabarnya banyak tapi yang bisa meletus sewaktu-waktu”.

“Kalau kamu gimana dek?” aku bertanya ke adekku.

“Sama kayak mas sih,” jawab adekku singkat.

Setelah pertemuan itu aku berpikir cukup lama hingga perasaanku menjadi gundah karena membuat Uda menunggu keputusanku. Ku bulatkan tekadku untuk membuat keputusan. Aku mengajak Ana untuk menemaniku menemui Uda sepulang kerja di salah satu sudut kantor.

“Jadi gini kak, setelah Aris pertimbangkan masak-masak, Aris memutuskan untuk mengakhiri proses perkenalan kita dan nggak melangkah lebih jauh lagi dari pertemanan kita saat ini,” kuberitahukan keputusanku ke Uda secara gamblang.

“Boleh tahu kenapanya?” Uda mempertanyakan alasan di balik keputusanku. Continue reading “Keputusan Akhir Bukan Berarti Segalanya Berakhir”

Biarkan Hati Berbicara dengan Tuntunan Allah SWT

“Na, Kak Dairi ngajak aku nikah..!” dengan suara yang cukup pelan, ku buka percakapanku dengan salah satu rekan kerja ku yang duduk tepat di samping kiri ku.

“Ooh.. aku nggak kaget ris. Ehehe..” Ana menimpali.

“Lah.. kok bisa?” aku semakin terkejut.

“Iya. Di kereta tuh kalau dia bareng aku pas pulang, suka nanyain tentang kamu gitu. Cuma aku nggak cerita ke kamu. Hahaha.. trus gimana kamunya? mau nggak?”

“Gimana yaaa naa.. aku kan nggak tau apa-apa tentang dia. Cuma tahu nama doank lah bisa dibilang. Tapi aku udah janjian se ama dia mau tukeran CV gitu.”

“Ooohh.. yaa sambil istikharah ris. Ohohoho..”

“Insyaa Allah na. Sstt..” aku menutup percakapan karena rekan kerja ku yang lain sudah mulai banyak yang datang. Takut kedengeran gitu deh.. *sok artis :p

Aku memulai solat istikharah untuk menetapkan keputusanku. Dalam doaku yang biasanya hanya meminta kepada Allah untuk diberikan suami yang soleh nan penyayang, kini berubah menjadi pertanyaan yang meminta bimbingan untuk sebuah keputusan dari sebuah nama yang telah datang.

Aku sudah mendapatkan “contekan” template CV dari salah satu kakak seniorku dan juga temanku di SMA. Ku susun serapi yang kubisa, lalu ku kirim ke Uda ( mulai sekarang sebut saja si kakak itu dengan Uda :p ). Uda juga sudah mengirimkan template CV yang ia punya. Setelah itu by chat, kami menyepakati point mana saja yang ingin ada di dalam CV kami dan berjanji akan mengirimkan CV masing-masing dalam dua minggu ke depan.

************

Kupandangi layar laptopku. Hanya ada rangkaian point yang belum terjabarkan dengan baik untuk menggambarkan bagaimana seorang Ariestania Winda. Mendadak ngoding pemrograman terasa lebih baik daripada bikin CV taaruf. Menyesal kenapa cuma minta dua minggu untuk menyelesaikan CV ini. Harusnya minimal sebulan seperti jika aku membuat aplikasi yang sudah lolos QA dan siap migrasi ke production. Continue reading “Biarkan Hati Berbicara dengan Tuntunan Allah SWT”

Darimu yang Menginginkan Kamu dan Aku Menjadi Kita

Seperti biasa, aku memulai hari-hari dengan ngobrol kesana kemari sembari sarapan bersama rekan-rekan kerjaku. Tentunya dengan comot sana sini untuk mencoba sarapan mereka juga. Kalau dipikir-pikir, tanpa aku membawa makanan untuk sarapanku sendiri, aku bisa kenyang dengan “penghasilan” dari comot-comot itu. Tapi berhubung masih jaim, semua rencana itu ku urungkan. Kasian juga kalau mereka jadi masih lapar karena makanannya aku yang makan. Ohohoho..

Selepas sarapan, aku segera kembali ke meja kerjaku. Suasana ruangan agak sepi. Sepertinya banyak yang cuti karena dekat dengan liburan yang “kejepit”. Guna mempersiapkan ketangguhan jiwa dan raga untuk mulai berjibaku dengan coding lagi, aku membuka browser dan mulai berselancar di dunia maya.

“Hai Aris,” sapa salah satu rekan kerjaku. Ia kemudian duduk di kursi sebelahku.

“Ya?” aku melepaskan headset yang sudah nyaman terpasang di telinga. “Kenapa kak?”

“Emm.. bentar. Aku siapain diri dulu,” ia nampak ragu dan bimbang.

“Oh emang kenapa? eeemmm.. tulis di keyboard aja sini di kompi aris kalo susah ngomongnya”.

“Emm.. Aris udah punya calon suami?”

“Belom,” jawabku. Continue reading “Darimu yang Menginginkan Kamu dan Aku Menjadi Kita”

How To Generate Large Excel File in Java Using POI

On my last project, I have to create report on excel format with huge data. The data that I need to print on report can be up to 4 million rows. I tried using HSSF and XSSF class but always got heap space problem even though I already set up my JVM. After some google, I found out that I can use SXSSF class for my case. You can check about it on apache page.

For my code, I changed my query to split the resultset so the memory will not keep all data in one time. Then I divide the rows into some sheets too. Here is some of my code.

package main.xls;

/* import libraries */

/**
 * @author ariestania.winda
 */
public class XLSReportGenerator {

 /**
  * SOME CODE
  */

 public String generate() {
  Connection conn = null;
  try {
   conn = DriverManager.getConnection(Var.CONN_REPORT);

   int maxRow = 60000;
   int rowMaxMemory = 200;
   int defaultStartRownum = 1;
   int defaultEndRownum = 6000;

   String fileName = "mytestrep.xlsx";
   String pathSeparator = BohayUtils.getPathSeparator();
   String path = configuration.getReportPath() + pathSeparator + sdfYear.format(dtTo) + pathSeparator + sdfMonth.format(dtTo) + pathSeparator + fileName;

   File repFile = new File(path);

   if (!repFile.exists()) {
    try (SXSSFWorkbook workbook = new SXSSFWorkbook(rowMaxMemory)) {
     CellStyle boldCenterStyle = ReportGlobalFunction.getBoldFontStyle(workbook, true);
     CellStyle currencyStyle = ReportGlobalFunction.getCellCurrency(workbook);

     SXSSFSheet mySheetSample = workbook.createSheet("My Detail Report");

     //track column to set autoSizeColumn
     mySheetSample.trackAllColumnsForAutoSizing();

     //get my data
     List < MyDatas > jmlMyData = myDBHandler.getMyDatas(startRownum, endRownum);

     int startRownum = defaultStartRownum;
     int endRownum = defaultEndRownum;
     int curColNum = 0;
     int curRowNum = 1;
     int sheetNo = 1;

     //title
     row = mySheetSample.createRow(curRowNum);
     cell = row.createCell(curColNum);
     cell.setCellValue("JUMLAH BOHAY MESIN");
     cell.setCellStyle(boldCenterStyle);
     mySheetSample.addMergedRegion(new CellRangeAddress(curRowNum, curRowNum, 0, 6));
     curRowNum = curRowNum + 2;

     //header table
     row = mySheetSample.createRow(curRowNum);
     cell = row.createCell(curColNum);
     cell.setCellValue("  NO  ");
     cell.setCellStyle(boldCenterStyle);
     mySheetSample.autoSizeColumn(curColNum);
     curColNum++;

     cell = row.createCell(curColNum);
     cell.setCellValue("     BRANCHID     ");
     cell.setCellStyle(boldCenterStyle);
     mySheetSample.autoSizeColumn(curColNum);
     curColNum++;

     cell = row.createCell(curColNum);
     cell.setCellValue("       DESCR       ");
     cell.setCellStyle(boldCenterStyle);
     mySheetSample.autoSizeColumn(curColNum);
     curColNum++;

     cell = row.createCell(curColNum);
     cell.setCellValue("       CASHIN_AMT       ");
     cell.setCellStyle(boldCenterStyle);
     mySheetSample.autoSizeColumn(curColNum);
     curColNum++;
     curRowNum++;

     //release track
     mySheetSample.untrackAllColumnsForAutoSizing();

     curColNum = 0;
     noData = 0;
     if (jmlmyDt.size() > 0) {
      boolean runLoop = true;
      while (runLoop) {
       for (MyDatas myDt: jmlMyData) {
        if (noData == maxRow) {
         sheetTotalTrxTunai = workbook.createSheet(judulSheet + sheetNo);
         noData = 0;
         sheetNo++;
         curRowNum = 0;
         curColNum = 0;
        }
        noData++;

        row = mySheetSample.createRow(curRowNum);

        cell = row.createCell(curColNum);
        cell.setCellValue(myDt.getNO());
        curColNum++;

        cell = row.createCell(curColNum);
        cell.setCellValue(myDt.getBRANCH_ID());
        curColNum++;

        cell = row.createCell(curColNum);
        cell.setCellValue(myDt.getDESCR());
        curColNum++;

        cell = row.createCell(curColNum);
        cell.setCellValue(myDt.getCASHIN_AMT());
        cell.setCellStyle(currencyStyle);
        curColNum++;

        curRowNum++;
        curColNum = 0;
       }
       startRownum = startRownum + defaultEndRownum;
       endRownum = endRownum + defaultEndRownum;
       jmlMyData = myDBHandler.getMyDatas(startRownum, endRownum);
       runLoop = jmlMyData.size() > 0;
      }
     } else {
      row = mySheetSample.createRow(curRowNum);
      cell = row.createCell(curColNum);
      cell.setCellValue("NO DATA");
     }

     jmlmyDt = null;

     repFile.getParentFile().mkdirs();
     repFile.createNewFile();

     try (FileOutputStream fos = new FileOutputStream(repFile)) {
      workbook.write(fos); //write file
      fos.flush();
     }

     //dont forget to dispose the workbook
     workbook.dispose();
    }
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException ex) {
   ex.printStackTrace();
  } catch (ParseException | SQLException ex) {
   ex.printStackTrace();
  } finally {
   if (conn != null && !conn.isClose()) {
    try {
     conn.close();
    } catch (SQLException ex) {}
   }
  }

  return "SUCCESSFUL";

 }

}

Hope it can be help 🙂