Monday, October 15, 2012

Locking Table [Tablock vs Tablocks]

If you are in a transaction and you grab an exclusive lock on a table, EG:


No other processes will be able to grab any locks on the table, meaning all queries attempting to talk to the table will be blocked until the transaction commits.

TABLOCK only grabs a shared lock, shared locks are released after a statement is executed if your transaction isolation is READ COMMITTED (default). If your isolation level is higher, for example:SERIALIZABLE, shared locks are held until the end of a transaction.

Shared locks are, hmmm, shared. Meaning 2 transactions can both read data from the table at the same time if they both hold a S or IS lock on the table (via TABLOCK). However, if transaction A holds a shared lock on a table, transaction B will not be able to grab an exclusive lock until all shared locks are released. Read about which locks are compatible with which at msdn.

Both hints cause the db to bypass taking more granular locks (like row or page level locks). In principle, more granular locks allow you better concurrency. So for example, one transaction could be updating row 100 in your table and another row 1000, at the same time from two transactions (it gets tricky with page locks, but lets skip that).

In general granular locks is what you want, but sometimes you may want to reduce db concurrency to increase performance of a particular operation and eliminate the chance of deadlocks.

In general you would not use TABLOCK or TABLOCKX unless you absolutely needed it for some edge case.

Quite an old article on mssqlcity attempts to explain the types of locks:
Shared locks are used for operations that do not change or update data, such as a SELECT statement.
Update locks are used when SQL Server intends to modify a page, and later promotes the update page lock to an exclusive page lock before actually making the changes.
Exclusive locks are used for the data modification operations, such as UPDATE, INSERT, or DELETE.
What it doesn't discuss are Intent (which basically is a modifier for these lock types). Intent (Shared/Exclusive) locks are locks held at a higher level than the real lock. So, for instance, if your transaction has an X lock on a row, it will also have an IX lock at the table level (which stops other transactions from attempting to obtain an X lock on the table until your transaction completes or rolls back).

The concept of "sharing" a lock is quite straightforward - multiple transactions can have a Shared lock for the same resource, whereas only a single transaction may have an Exclusive lock, and an Exclusive lock precludes any transaction from obtaining or holding a Shared lock.

Exclusive locks are always held until the end of the transaction.

all shared locks are released at the end of a statement in a read committed transaction, if you want to hold the locks you need hints or a higher isolation level. tablockx will grab an X lock.

Just collecting notes and sharing..

Wednesday, August 15, 2012

Makanan yang melemahkan Tulang - Selain mengetahui makanan mana saja yang memperkuat tulang, kita juga perlu tahu makanan yang bisa merusak tulang.

Bisa saja, beberapa makanan favorit Anda justru melemahkan kekuatan tulang Anda. Yuk, cari tahu agar Anda bisa membatasi konsumsinya sebelum terlambat.

Makanan asin dengan garam tinggi

Makanan olahan atau makanan asin membuat kalsium dalam tulang menghilang. Hal ini terjadi karena garam dapat menyebabkan ekskresi kalsium yang berlebihan melalui ginjal. Sebaiknya, asupan garam tak lebih dari 1.200 mg per hari.

Makanan manis

Ternyata makanan manis tak hanya memengaruhi kesehatan gigi saja, tetapi juga menimbulkan masalah baru pada tulang Anda. Kelebihan gula dapat menghambat penyerapan kalsium dan mengikis fosfor. Jika Anda menyukai makanan manis, ganti dengan buah-buahan dan hindari makanan olahan.


Minuman bersoda mengurangi kepadatan mineral tulang yang meningkatkan risiko patah tulang. Cola mengandung asam folat yang dapat melemahkan usus dan penyerapan kalsium.


Kafein dapat melarutkan kalsium dalam tulang dan melemahkan fungsinya. Sekitar 6 miligram kalsium akan hilang setiap kali Anda mengonsumsi 100 mg kafein. Terlebih lagi, jika ditambahkan gula yang malah memberikan efek merugikan bagi kesehatan tulang.


Alkohol berkontribusi pada rendahnya massa tulang, penurunan pembentukan tulang, meningkatkan risiko patah tulang dan menghambat pemulihan patah tulang.


Hampir semua kacang-kacangan mengandung phytates. Sayangnya, hampir semua kacang-kacangan mengandung phytate. Phytate dapat mengganggu kemampuan tubuh untuk menyerap kalsium. Tapi, sebaiknya tak perlu takut dan memilih menghindari kacang. Makanan ini mengandung magnesium, serat dan nutrisi lainnya yang diperlukan tubuh. Untuk mengatasinya, pengurangan tingkat phytate dapat dilakukan dengan merendam biji kacang dalam air beberapa jam sebelum direbus.

Just collecting notes and sharing..

Wednesday, June 6, 2012

Java Notes: Comparable dan Comparator

Comparable - java.lang package

@ this.compateTo(object o)
 same -> = 0
 less than -> <0
 greater than -> >0

Comparator - java.util package

@compare(object o1, object o2)
 same -> = 0
 less than -> <0
 greater than -> >0

Both are interface.
The different is "this" reference

Comparable is used by most java class like String, Date, Array, wrapper classes, etc
Comparable implement natural ordering of object.
If any object implements Comparable and collection of that object is either List or Array can be sorted automatically.

Oject that implement Comparable in Java can be used as keys in sorted map or elements in a sorted set. Eg. TreeSet, without specifiying any Comparator

Just collecting notes & sharing..
Please let me know if there are wrong statements in this article or a copy-paste one.

Saturday, May 19, 2012

About Color Banding

Do you know about Color banding?

If you are working in design animation, video rendering, digital coloring and its friends, you must know well about this, otherwise you may unfamiliar with this. The only reason I post about this one because somehow it is interested me.

After read about the newest video encoding in 10bit depth, I accidentally know about what is the color banding is. I get this from watching my favorite anime with 10bit depth encoding. That's how I get know about color banding.

Color Banding sample

Banding happens when video is compressed or decompressed and similar colors get posterized. This undesirable, visible bands of color that can be distracting, and in some cases downright ugly. It can happen in many situation, like video, picture or games. If it is in a small area, we wont notice and nobody got annoyed. But if we see in a large area, a large screen, it will very-very disturbing our eyes.

There are quite a few ways to remove color banding. Everyone seems to have their own formula.And for those kind of matters, I dont have any knowledge to explain it in here.

Just collecting notes and sharing.. Please let me know if there are wrong statements in this article or a copy-paste one.

Thursday, May 17, 2012

Comparing Date in Java

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class HashtableDemo {

    public static void main(String args[]) throws AssertionError, ParseException {

        DateFormat df = new SimpleDateFormat("dd-MM-yyyy");

        //comparing date using compareTo method in Java
        System.out.println("Comparing two Date in Java using CompareTo method");
        compareDatesByCompareTo(df, df.parse("01-01-2012"), df.parse("01-01-2012"));
        compareDatesByCompareTo(df, df.parse("02-03-2012"), df.parse("04-05-2012"));
        compareDatesByCompareTo(df, df.parse("02-03-2012"), df.parse("01-02-2012"));

        //comparing dates in java using Date.before, Date.after and Date.equals
        System.out.println("Comparing two Date in Java using Date's before, after and equals method");
        compareDatesByDateMethods(df, df.parse("01-01-2012"), df.parse("01-01-2012"));
        compareDatesByDateMethods(df, df.parse("02-03-2012"), df.parse("04-05-2012"));
        compareDatesByDateMethods(df, df.parse("02-03-2012"), df.parse("01-02-2012"));

        //comparing dates in java using Calendar.before(), Calendar.after and Calendar.equals()
        System.out.println("Comparing two Date in Java using Calendar's before, after and equals method");
        compareDatesByCalendarMethods(df, df.parse("01-01-2012"), df.parse("01-01-2012"));
        compareDatesByCalendarMethods(df, df.parse("02-03-2012"), df.parse("04-05-2012"));
        compareDatesByCalendarMethods(df, df.parse("02-03-2012"), df.parse("01-02-2012"));


    public static void compareDatesByCompareTo(DateFormat df, Date oldDate, Date newDate) {
        //how to check if date1 is equal to date2
        if (oldDate.compareTo(newDate) == 0) {
            System.out.println(df.format(oldDate) + " and " + df.format(newDate) + " are equal to each other");

        //checking if date1 is less than date 2
        if (oldDate.compareTo(newDate) < 0) {
            System.out.println(df.format(oldDate) + " is less than " + df.format(newDate));

        //how to check if date1 is greater than date2 in java
        if (oldDate.compareTo(newDate) > 0) {
            System.out.println(df.format(oldDate) + " is greater than " + df.format(newDate));

    public static void compareDatesByDateMethods(DateFormat df, Date oldDate, Date newDate) {
        //how to check if two dates are equals in java
        if (oldDate.equals(newDate)) {
            System.out.println(df.format(oldDate) + " and " + df.format(newDate) + " are equal to each other");

        //checking if date1 comes before date2
        if (oldDate.before(newDate)) {
            System.out.println(df.format(oldDate) + " comes before " + df.format(newDate));

        //checking if date1 comes after date2
        if (oldDate.after(newDate)) {
            System.out.println(df.format(oldDate) + " comes after " + df.format(newDate));

    public static void compareDatesByCalendarMethods(DateFormat df, Date oldDate, Date newDate) {

        //creating calendar instances for date comparision
        Calendar oldCal = Calendar.getInstance();
        Calendar newCal = Calendar.getInstance();


        //how to check if two dates are equals in java using Calendar
        if (oldCal.equals(newCal)) {
            System.out.println(df.format(oldDate) + " and " + df.format(newDate) + " are equal to each other");

        //how to check if one date comes before another using Calendar
        if (oldCal.before(newCal)) {
            System.out.println(df.format(oldDate) + " comes before " + df.format(newDate));

        //how to check if one date comes after another using Calendar
        if (oldCal.after(newCal)) {
            System.out.println(df.format(oldDate) + " comes after " + df.format(newDate));


Comparing two Date in Java using CompareTo method
01-01-2012 and 01-01-2012 are equal to each other
02-03-2012 is less than 04-05-2012
02-03-2012 is greater than 01-02-2012
Comparing two Date in Java using Date's before, after and equals method
01-01-2012 and 01-01-2012 are equal to each other
02-03-2012 comes before 04-05-2012
02-03-2012 comes after 01-02-2012
Comparing two Date in Java using Calendar's before, after and equals method
01-01-2012 and 01-01-2012 are equal to each other
02-03-2012 comes before 04-05-2012
02-03-2012 comes after 01-02-2012


Just collecting notes & sharing..

Sunday, May 13, 2012

ConcurrentHashMap and hashTable

So what is the difference between hashtable and ConcurrentHashMap , both can be used in multithreaded environment but once the size of hashtable becomes considerable larg,e performance degrade because for iteration it has to be locked for longer duration.

Since ConcurrentHashMap indroduced concept of segmentation , how large it becomes only certain part of it get locked to provide thread safety so many other readers can still access map without waiting for iteration to complete.

In Summary ConcurrentHashMap only locked certain portion of Map while Hashtable lock full map while doing iteration.

Just collecting notes and sharing..
Please let me know if there're wrong statements in this article or copy-paste one.

Monday, May 7, 2012

Tertawa itu sehat dan menguntungkan

Setiap orang pasti akan tertawa beberapa kali setiap hari. Mendengarkan lelucon, menonton film komedi atau membaca cerita lucu dengan mudah membuat kita tertawa.
Tertawa ternyata tak hanya mengungkapkan perasaan bahagia, namun juga membuat tubuh menjadi lebih sehat. Berikut ini beberapa manfaat dari tertawa yang bisa Anda rasakan bagi kesehatan.

1. Tertawa membantu meningkatkan sistem kekebalan tubuh dengan meningkatkan jumlah antibodi yang memproduksi sel T. Sel-sel ini membantu tubuh melawan virus dan tumor.

2. Tertawa membantu penderita hipertensi karena dapat menurunkan tekanan darah. Tertawa juga mengurangi kadar hormon kartisol yang menghalangi proses penyembuhan penyakit dan juga membantu menstabilkan tingkat gula darah.

3. Tertawa merangsang perubahan zat kimia dalam otak yang membantu menahan tubuh terhadap efek kumulatif dari stres.

4. Tertawa membantu membakar kalori. Menurut penelitian, tertawa 10-15 menit setiap hari dapat membakar kalori hingga 40 kalori. Tertawa juga meningkatkan denyut jantung dan mempercepat metabolisme yang memengaruhi berat badan.

5. Tertawa merangsang otak untuk memproduksi hormon endorfin, yang membantu menaikkan suasana hati seseorang dan membuat perasaan bahagia.

6. Tertawa membantu mengurangi peradangan di seluruh tubuh, sehingga baik bagi kesehatan jantung, otak dan peredaran darah.

7. Tertawa menjadi 'pijat' bagi organ internal karena efeknya mirip dengan melakukan olahraga.

8. Tertawa juga memberikan latihan ringan untuk jantung, paru-paru, diagfragma dan bahkan otot-otot perut.

9. Tertawa membantu melepaskan ketegangan di otot-otot wajah, leher, bahu dan perut, dimana semua bagian tubuh ini sering mengalami ketegangan akibat rutinitas sehari-hari.

10. Tertawa itu menular. Orang yang tertawa atau melucu dengan membuat lelucon akan mengundang tawa sehingga meningkatkan semangat dan menciptakan energi positif bagi orang-orang sekitarnya.

Just collecting notes and sharing..

Friday, April 20, 2012

Bakteri Titanic

Kanada (AFP/ANTARA) - Dalam waktu kurang dari 30 tahun, mungkin tidak akan ada yang tersisa dari kapal Titanic kecuali "rusticle,” formasi karat yang mirip stalaktit, kata penelilti Henrietta Mann, yang menghabiskan empat tahun untuk mempelajari bakteri yang menggerogoti kapal karam tersebut.

Ekspedisi penelitian pada 1991 ke bangkai kapal yang terletak sekitar 12.400 kaki (3.780 meter) di dasar laut itu mengungkapkan formasi gugusan karat yang serupa dengan es atau stalaktit menggatung di kapal besar tersebut. Mereka biasanya terjadi di bawah air ketika besi tempa teroksidasi.
Mann, seorang pakar biologi dan geologi dari Universitas Dalhouseie di Halifax, memperoleh sempel dari Institut Oceanografi Bedford dan menelitinya dengan mikroskop elektronik. Dia menemukan fakta kalau bakteri itu, bukan karena proses kimia, menjadi alasan terbentuknya formasi yang terjadi di perairan dalam tesebut.

Peneliti Kanada itu mengidentifikasi puluhan bakteri, termasuk satu yang tidak pernah terlihat sebelumnya, yang ia juluki sebagai Halomonas titanicae, telah "mengunyah" lambung baja kapal tersebut dan mengubahnya, atom per atom, menjadi "rusticle," beberapa bahkan setinggi pria dewasa.
Tak terlihat dengan mata telanjang, berukuran hanya 1,6 mikrometer panjangnya, bakteri ini berkembang biak menjadi miliaran selama bertahun-tahun.

"Titanic terdiri dari 50.000 ton baja," kata Mann kepada AFP. "Jadi, ada banyak makanan untuk bakteri saya."
Bakteri itu juga memakan jendela, tangga, dan gerbang – semuanya yang terbuat dari besi kasar - serta tungku besi. "Mereka makan itu juga," kata Mann. Hanya kuningan yang tidak disentuh.
"Saya tidak tahu kecepatan mereka memakan besi," tapi membandingkan foto-foto awal dari bangkai itu dengan foto yang terbaru, jelas terlihat perubahan yang cepat telah terjadi.

"Mungkin dalam 20 atau 30 tahun dari sekarang bangkai kapal ini akan runtuh (menjadi) tumpukan karat," katanya.
Mann mancatat 27 bakteri yang hidup di rusticle, beberapa memiliki tentakel, serta cacing tabung dan makhluk kecil lainnya, bergerak dalam "koloni yang bersimbiosis."
Bakteri pertama mungkin diciptakan oleh diatom (ganggang uniseluler) dalam "salju laut" - kotoran dari permukaan.

Salah satu bakteri kemudian menghasilkan bakteri lain dan bersama-sama mereka membentuk rantai dan kemudian jaring, lebih banyak bakteri tumbuh pada jaring dan mengisi lubang-lubang dan akhirnya mengeras menjadi struktur rusticle dengan di dalam sirkulasi air. "Struktur bakteri ini seperti spons," jelas Mann.
Kehancuran Titanic sudah pasti akan menjadi kerugian besar warisan dunia, kata Mann. Tapi pada saat yang sama penemuannya menawarkan harapan: semua kapal tua, rig minyak dan kargo yang jatuh ke dasar laut tidak akan menumpuk seperti sampah.
Bakteri akhirnya akan menghancurkan semuanya.

Just collecting notes and sharing..
Sumber: (AFP)

Sunday, April 1, 2012

3D Object Graphic Modelling on Google Search

Hi.. After accidentally looked at Google pages in Facebook, I found something interesting, wonderful and exciting. It is about the formula : sqrt(x*x+y*y)+3*cos(sqrt(x*x+y*y))+5 from -20 to 20

Try copy and paste it on your google search and see what it comes.
Actually I realize it is a formula to creating a 3D object. (yet need a confirmation from experts :D )

Anyway, it is only run on browser or system that support WebGL technology rendering.

Just collecting notes and sharing..
Please let me know if there are wrong statements in this article or a copy-paste one.

Friday, March 30, 2012

Processor Governers & Disk I/O Schedulers in Android

I found the article from great kernel developer Neo3000 posted in, Samsung Galaxy SII thread.
I think is really useful for me and anyone who still confuse or dont know about "governors" processor in ARM architecture and I/O or disk schedulers in Android.
Hope this article reproduction is helpful.


1) Ondemand
2) Lulzactive (default)
3) Performance
4) Lagfree
5) Conservative
6) Lazy

7.)Lionheart (tweaked version of Conservative governers)

I/O Schedulers

1) BFQv3-R1 (Budget Fair Queuing) 2) Noop
3) SIO
4) VR (default)
5.) CFQ (complety Fair Queuing)
Governors Guide:
1) Ondemand
Default governor in almost all stock kernels. Simply put, Ondemand jumps to maximum frequency on CPU load and decreases the frequency step by step on CPU idle. No suspend/wake profiles. Even though many of us consider this a reliable governor, it falls short on battery saving and performance on default settings.

2) Lulzactive
This new find from Tegrak is based on interactive & smartass governors and is one of our favorites.
Old Version: When workload is greater than or equal to 60%, the governor scales up cpu to next higher step. When workload is less than 60%, governor scales down cpu to next lower step. When screen is off, frequency is locked to global scaling minimum frequency.
New Version: Three more user configurable parameters: inc_cpu_load, pump_up_step, pump_down_step. Unlike older version, this one gives more control for the user. We can set the threshold at which governor decides to scale up/down. We can also set number of frequency steps to be skipped while polling up and down.
When workload greater than or equal to inc_cpu_load, governor scales CPU pump_up_step steps up. When workload is less than inc_cpu_load, governor scales CPU down pump_down_step steps down.
If current frequency=200, Every up_sampling_time Us if cpu load >= 70%, cpu is scaled up 2 steps - to 800.
If current frequency =1200, Every down_sampling_time Us if cpu load < 70%, cpu is scaled down 1 step - to 1000.

3) Performance
Sets min frequency as max frequency. Use this while benchmarking!

4) Lagfree
Lagfree is similar to ondemand. Main difference is it's optimization to become more battery friendly. Frequency is gracefully decreased and increased, unlike ondemand which jumps to 100% too often. Lagfree does not skip any frequency step while scaling up or down. Remember that if there's a requirement for sudden burst of power, lagfree can not satisfy that since it has to raise cpu through each higher frequency step from current. Some users report that video playback using lagfree stutters a little.

5) Conservative
A slower ondemand which scales up slowly to save battery. Simply put, this governor increases the frequency step by step on CPU load and jumps to lowest frequency on CPU idle.

6) Lazy
This governor from Ezekeel is basically an ondemand with an additional parameter min_time_state to specify the minimum time cpu stays on a frequency before scaling up/down. The Idea here is to eliminate any instabilities caused by fast frequency switching by ondemand. Lazy governor polls more often than ondemand, but changes frequency only after completing min_time_state on a step. Lazy also has a screenoff_maxfreq parameter which can be configured to specify screen-off max frequency.

I/O Schedulers Guide:
Q. "What purposes does an i/o scheduler serve?"
  1. Minimize hard disk seek latency.
  2. Prioritize I/O requests from processes.
  3. Allocate disk bandwidth for running processes.
  4. Guarantee that certain requests will be served before a deadline.

So in the simplest of simplest form: Kernel controls the disk access using I/O Scheduler.

Q. "What goals every I/O scheduler tries to balance?"
  1. Fairness (let every process have its share of the access to disk)
  2. Performance (try to serve requests close to current disk head position first, because seeking there is fastest)
  3. Real-time (guarantee that a request is serviced in a given time)

Q. "Description, advantages, disadvantages of each I/O Scheduler?"

1) Noop

Inserts all the incoming I/O requests to a First In First Out queue and implements request merging. Best used with storage devices that does not depend on mechanical movement to access data (yes, like our flash drives). Advantage here is that flash drives does not require reordering of multiple I/O requests unlike in normal hard drives.

  • Serves I/O requests with least number of cpu cycles. (Battery friendly?)
  • Best for flash drives since there is no seeking penalty.
  • Good throughput on db systems.

  • Reduction in number of cpu cycles used is proportional to drop in performance.

2) BFQ
Instead of time slices allocation by CFQ, BFQ assigns budgets. Disk is granted to an active process until it's budget (number of sectors) expires. BFQ assigns high budgets to non-read tasks. Budget assigned to a process varies over time as a function of it's behavior.

  • Believed to be very good for usb data transfer rate.
  • Believed to be the best scheduler for HD video recording and video streaming (because of less jitter as compared to CFQ and others)
  • Considered an accurate i/o scheduler.
  • Achieves about 30% more throughput than CFQ on most workloads.
  • Not the best scheduler for benchmarking.
  • Higher budget assigned to a process can affect interactivity and increased latency.

3) SIO
Simple I/O scheduler aims to keep minimum overhead to achieve low latency to serve I/O requests. No priority quesues concepts, but only basic merging. Sio is a mix between noop & deadline. No reordering or sorting of requests.

  • Simple, so reliable.
  • Minimized starvation of requests.

  • Slow random-read speeds on flash drives, compared to other schedulers.
  • Sequential-read speeds on flash drives also not so good.

4) VR

Unlike other schedulers, synchronous and asynchronous requests are not treated separately, instead a deadline is imposed for fairness. The next request to be served is based on it's distance from last request.

  • May be best for benchmarking because at the peak of it's 'form' VR performs best.

  • Performance fluctuation results in below-average performance at times.
  • Least reliable/most unstable.

Just collecting notes and sharing..
Please let me know if there are wrong statements in this article or a copy-paste one without copyright stated.

Saturday, March 17, 2012

Doktrin Utama Kristen Protestan

Meskipun doktrin dari denominasi-denominasi Protestan jauh dari seragam, ada beberapa keyakinan yang tersebar pada Protestantisme yaitu doktrin sola gracia, sola fide, dan sola scriptura.
  • Sola gracia berpegang bahwa keselamatan merupakan anugerah dari Tuhan. Manusia tidak dapat menyelamatkan dirinya sendiri.
  • Sola fide berpegang bahwa keselamatan yang datang hanya melalui iman di dalam Yesus sebagai Kristus, bukan melalui perbuatan baik.
  • Sola scriptura mempertahankan bahwa Alkitab (bukan tradisi gereja atau interpretasi gerejawi dari Alkitab) adalah sumber otoritas final untuk semua orang Kristen.

Gereja-gereja Protestan umumnya menolak doktrin Katolik dan Ortodoks mengenai pewarisan apostolik dan pelayanan sakramental dari klerus. Kecuali yang ditemukan pada banyak negara, seperti di bagian selatan Eropa, yang berada di bawah pengaruh non-Katolik jauh sebelum Reformasi.
Pendeta Protestan dan pemimpin gereja memiliki peran dan otoritas yang sedikit berbeda di dalam komunitas mereka dibandingkan dengan pastor dan uskup pada Katolik, Anglikan dan Ortodoks.

Source: wikipedia

Just collecting notes & sharing.. Please let me know if there are wrong statements in this article or a copy-paste without stated copyright / source.

Saturday, March 10, 2012

Slice & Substring (JavaScript)

Okay, this time I put this article in English, because it's more straightforward than translating to Indonesian language.

slice() works like substring() with a few different behaviors.
Syntax: string.slice(start, stop);
Syntax: string.substring(start, stop);
Notes on substring():
  • If start equals stop, it returns an empty string.
  • If stop is omitted, it extracts characters to the end of the string.
  • If either argument is less than 0 or is NaN, it is treated as if it were 0.
  • If either argument is greater than the string's length, either argument will use the string's length.
  • If start > stop, then substring will swap those 2 arguments.
Notes on slice():
  • If stop is omitted, slice extracts chars to the end of the string, exactly like substring().
  • If start > stop, slice() will NOT swap the 2 arguments.
  • If start is negative, slice() will set char from the end of string, exactly like substr() in Firefox. This behavior is observed in both Firefox and IE.
  • If stop is negative, slice() will set stop to: (string.length – 1) – stop (original value).
For  .substr() and .slice(), they are notably different!

.slice() is:
string.slice(beginIndex, endIndex)

Whereas .substr() is:
string.substr(beginIndex, length);
So for example, if we have "1234" and wanted "23", it would be:
They also have different behavior for the more-rarely used negative indexes, look at the MDC documentation for .slice() and .substr() for full descriptions.

Source: StackOverflow

Sunday, March 4, 2012

Java Notes: Lenient

Class Hierarchy
  extended byjava.text.Format
      extended byjava.text.DateFormat

There is one method called : setLenient(boolean lenient)

setLenient() : is use to skip calculating date from undefined date but with correct format.

ex. 29/02/2001 doesn't throw an error but will change to 01/03/2001 if setLenient method to TRUE.
Remember there's no 29 february in 2001 years coz it is not a leap year (Syamsiah year).
But, if u don't wanna be like that, use setLenient method to FALSE

Sometimes, this small thing can trouble us if we implemented wrongly.

Just collecting notes and sharing..
Please let me know if there are wrong statements in this article or copy-paste one.

Wednesday, February 15, 2012

Tips Agar Tidak Mudah Lupa

Tadi kunci mobil diletakkan di mana ya? Tadi oven sudah dimatikan belum ya? Eh pintu rumah sudah dikunci belum?

Jika Anda biasa melontarkan beberapa pertanyaan di atas kepada diri sendiri, alias seorang pelupa, berikut ini 20 langkah memperbaiki daya ingat.

1. Padatkan
Ketika mengingat-ingat deretan huruf yang panjang seperti 33987643134509, pecahkanlah menjadi: 33 98 76 43 13 45 09.

2. Jangan menjejalkan
Lebih baik memberi ruang pada proses belajar. Contohnya, ketika Anda belajar bahasa asing, jangan mengulang satu kata terus-menerus. Demikian saran dr Chris Moulin dari Leeds Memory Group. Ulangi beberapa kali, dan kemudian lanjutkan lagi, dan kembali lagi nanti.

3. Ciptakan petunjuk
Jika kamu mempunyai kegiatan teratur setiap hari pada waktu tertentu, seperti minum obat, berilah petunjuk dirimu sendiri untuk menolong niatanmu tersebut. Misalnya: “Ketika acara TV ini selesai aku akan meminum obat.”

4. Gunakan gambar
Satu cara untuk mengingat sesuatu, seperti nama orang, adalah menggambarkan wajah mereka. Jadi ketika kamu bertemu Joe Diamond, bayangkan sebuah intan (diamond). Kamu harus lebih kreatif untuk menggambarkan nama orang dengan nama yang tidak biasa.

5. Buat lebih bermakna
Gunakan arti khusus untuk mewakili sebuah fakta atau angka, jika Anda perlu mengingat angka 50110662012, pikirkan jins Levi's, Perang Hastings, atau Olimpiade London.

6. Buatlah lebih pribadi
Buatlah sesuatu yang ingin kamu ingat berhubungan dengan dirimu sendiri. Itu pertolongan mengingat yang plaing baik. Contohnya Blair mulai berkuasa pada tahun 1997, kamu lulus tahun 1997.

7. Metode Kamar Roma
Metode Kamar Roma adalah tentang mengingat rangkaian informasi dengan memvisualisasikan mereka ke dalam sebuah lokasi. Gunakan tempat yang kamu tahu dengan baik, lakukan perjalanan pikiran melewati kamar dalam tatanan yang teratur. Kemudian letakkan informasi dari daftarmu satu per satu ke dalam setiap kamar.

Jadi ketika ingin mengingat Perdana Menteri, tempatkan Harold Wilson di lorong, James Callaghan di ruang keluarga, Margareth Thatcher di dapur dan seterusnya. Pikirkan itu pelan-pelan dan itu akan terus menempel.

8. Rutinitas
Rutinitas yang membosankan adalah teman terbaik ingatan. Letakkan barang-barang tersebut di tempat yang sama di waktu yang lama. Semakin terbiasa, semakin mudah Anda mengingat.

9. Menghafal
Menghafal adalah teknik pembelajaran yang menolong daya ingat - seperti 'Mejikuhibiniu' untuk mengingat warna pelangi. Gunakan frasa untuk mengingat hal, semakin aneh semakin baik.

10. Makan ikan berlendir
Minyak Omega-3 yang ada pada ikan berlendir, dapat membantu kekuatan Anda berkonsentrasi.

11. Konsumsi choline
Choline, asam amino yang ada pada telur, hati, ayam dan kedelai, dapat menjaga otak dan meningkatkan daya ingat. Penelitian terbaru menunjukkan, orang dengan konsumsi choline yang tinggi berhasil menyelesaikan tes daya ingat dengan lebih baik — walau diet kesehatan jangka panjang adalah kunci utama untuk menjaga fungsi otak yang baik, dengan sayuran hijau, buah beri, tomat, kacang dan kecambah adalah makanan yang baik untuk daya ingat.

12. Olahraga
Sebuah penelitian Cambridge University menyebutkan, latihan aerobik teratur seperti jogging dapat meningkatkan daya ingat dengan memicu pertumbuhan neuron baru di otak.

13. Mengajar
Mengajari konsep baru pada orang lain bisa membantu ingatanmu pada hal tersebut. Jadi berikan mata kuliah kecil untuk temanmu ketika kalian berdua belajar untuk tes yang sama.

14. Berpikiran positif
Menurut ahli kesehatan Harvard, stereotipe negatif tentang penuaan membuat daya ingat menurun. Jadi orang tua menghasilkan nilai yang tes daya ingat yang buruk ketika dihadapkan pada pernyataan pesimis tentang usia dan kekuatan otak — dan lebih baik ketika mendengar pesan untuk menjaga daya ingat tetap kuat hingga pensiun.

15. Gunakan seluruh inderamu
Makin banyak indera yang kamu gunakan ketika mengalami suatu kejadian, semakin mudah Anda mengingatnya nanti. Contoh, penciuman bisa secara cepat mengembalikan kenangan masa lalu. Jadi mulailah mengendus.

16. Catat
Gambar atau tulislah informasi yang ingin diingat.

17. Pengulangan
Ketika kamu ingin mengingat hal baru, ulangi dengan keras. Contohnya jika kamu baru diberitahu nama seseorang, panggil nama mereka ketika berbicara dengan orang tersebut.

18. Tantang dirimu sendiri
Beraktivitas memerlukan konsentrasi. Bergabunglah dengan klub membaca, teka-teki silang atau mencoba resep masakan baru. Kegiatan apapun yang menggunakan otak akan menolongmu untuk menjaga bakat hingga tua nanti.

19. Tulis, jangan ketik
Jari Anda mungkin akan kikuk menggunakan alat tulis ketika sudah terbiasa mengetik, namun menulis dengan tangan dapat membuat otak memproses informasi dengan lebih baik. Jadi ketika belajar hal yang baru, tulislah.

20. Meditasi
Penelitian AS menunjukkan, pengobatan harian mempertebal bagian otak cerebral cortex, yang bertanggungjawab membuat keputusan, perhatian dan daya ingat. Cobalah melakukan teknik mengosongkan pikiran, berfokus pada sebuah gambar, suara atau napas Anda sendiri.

Sumber: yahoo

Jika ada salah, mohon koreksinya :)
Maksud hati hanya mao sharing kok :D

Thursday, February 2, 2012

Guide of Deciding System Files on USB Flash Drives

FAT16, FAT32, NTFS, or exFAT on USB Flash Drives?
by stewie

If you don't feel like reading this boring guide and your thumb drive or partition is 2 GB* or smaller, then stick with the default FAT16 for best performance and cross-platform compatibility. There is a reason why most UFDs in these sizes, including my 4 GB stick, come pre-formatted with FAT16.

*Windows NT 4.0, 2000, XP, and Vista can support FAT16 up to 4 GB using 64K cluster size. However, it may create compatibility issues with some applications. But for storage purposes, it shouldn't cause any problems.
Originally Posted by Anonymous
I just bought a USB thumb drive, which format should I use?
This question has been asked many times on NBR, many people are not sure about which one to use or suits their needs. In this guide, I will help you to understand the benefits and drawbacks for each of them.

Tools used for this guide:
  • 1 GB USB flash drive
  • Nodesoft Disk Bench (no synthetic results)

FAT16 (a.k.a. FAT)

  • Highest cross-platform compatibility
  • Best overall performance
  • 2 GB volume size limit or up to 4 GB with some OSs
  • Maximum file size of 4 GB (minus 1 byte)
  • No access control and permissions (could be a pro)


  • Good cross-platform compatibility
  • No 2 or 4 GB volume size limitation
  • Moderate to slow overall performance
  • Maximum file size of 4 GB (minus 1 byte)
  • No access control and permissions (could be a pro)


  • No 2 or 4 GB volume size limitation
  • No 4 GB file size limitation
  • Very fast write speed for single file
  • Fewer disk accesses than FAT if a file is badly fragmented
  • Access control and permissions (could be a con)
  • Low cross-platform compatibility
  • Slow write speed for multiple files
  • May have permission issues between users and systems
  • May decrease the lifespan of the UFD due to additional writes
  • Must remove the UFD with the "Safely Remove Hardware" procedure

exFAT (a.k.a. FAT64)

  • No 2 or 4 GB volume size limitation
  • No 4 GB file size limitation
  • Fast write speed for single file
  • Requires less disk space overhead than NTFS
  • Very slow write speed for multiple files
  • Cannot be used for Windows Vista's ReadyBoost capability
  • No access control and permissions (could be a pro)
  • Very low cross-platform compatibility
    (Currently only Windows Embedded CE 6.0, Vista SP1, Server 2008, and Windows 7. Drivers can be added to XP for read and write, but cannot format.)

Some test results with Nodesoft Disk Bench

Multiple tests were done for better accuracy, they were all done with the default allocation size, optimize for performance enabled, and antivirus disabled.

1 MB file | Read (MB/s) | Write (MB/s)

FAT16 — 32.393 — 2.063
FAT32 — 32.393 — 1.339
NTFS — 32.393 — 2.797
exFAT — 32.393 — 1.464

10 MB file | Read (MB/s) | Write (MB/s)

FAT16 — 129.334 — 4.645
FAT32 — 129.334 — 3.943
NTFS — 129.334 — 29.326
exFAT — 129.334 — 4.703

100 MB file | Read (MB/s) | Write (MB/s)

FAT16 — 306.212 — 5.106
FAT32 — 306.212 — 5.065
NTFS — 321.915 — 4.952
exFAT — 379.010 — 5.188

Writing 50 MB of 712 files and 95 folders

FAT16 — 1 min 12 sec
FAT32 — 1 min 19 sec
NTFS — 1 min 50 sec
exFAT — 1 min 55 sec


If you're reading/writing a single file, NTFS seems to win hands down. But in real life situations where multiple files being read and write, then it's another story, NTFS was more than half a minute slower when writing just 50 MB of multiple files and directories.

For some reason, the reading times from Disk Bench seem to be pretty much the same between the file systems, I'm not sure if they're accurate, but many other test results on the Internet (e.g., have shown that FAT16 to be the quickest as well, although the difference becomes less significant for bigger files. If you have done some tests with your UFD, please feel free to post them.


Friday, January 27, 2012

SMS Tidak Terkirim Pada Blackberry

Dari tanggal 15-27 Januari 2012 saat tulisan ini dibuat, saya mengalami kesulitan dalam mengirim SMS di Blackberry saya.

Awal-awal bisa SMS tanpa masalah, tapi entah dari kapan SMS mulai susah dilakukan, bahkan telp pun susah. Asumsi awal saya adalah :
1. Sinyal yang buruk. Berhubung sinyal 3 sangat buruk di gedung kantor yang baru dan juga di lantai dasar rumah saya
Tapi setelah saya lihat, sinyal bar yang ada di BB saya ternyata full namun tetap tidak bisa mengirim SMS., Alhasil setelah mengecek ternyata pulsa yang habis (maklum kebanyakan komunikasi via BBM).
Setelah melakukan isi ulang ternyata juga masih ERROR! tidak bisa mengirim SMS.

Menurut pengalaman saya, yang pertama adalah SMS Center yang mungkin berubah. Berikut list SMS Center yang ada:

(1) Three [Hutchinson] : +6289644000001
Axis [Lippo Tel] : +628315000032
XL [Excelcomindo] : +62818445009
Simpati & Kartu As [Telkomsel] : +6281100000
Mentari [Indosat] : +62816124
IM3 [Indosat] : +62855000000

Namun setelah dilakukan pengecekan, SMS Center telah benar. Berarti penyebabnya adalah BB itu sendiri!
Setelah menelaah, ternyata kesalahan terdapat pada DATA CODING dan NETWORK TO SEND OVER, harus merujuk masing-masing ke "7 bit" dan "Circuit Switched" atau "Circuit Switched Preferred".
Option tsb bisa dilihat di  Messages - logo bb - option.

Semoga info ini membantu.
Maksud hati hanya mao sharing yang saya tau kok dan mendokumentasikannya :D

Saturday, January 14, 2012

Common Keyword OOP (Static, Final, Abstract)

Di java dan C# (karena cuman didalam bahasa itu yang saya tau), terdapat keyword:

final menunjukkan bahwa class/method/variable yang dideclare dengan keyword final tidak dapat di override ataupun diubah valuenya (khusus untuk variable). Keyword final tidak dapat digabungkan dengan keyword abstract, karena sifatnya bertentangan (compile-error).

Karakteristik final:
- Biasanya digunakan untuk deklarasi konstan digabungkan dengan static keyword. Contoh: public static final MOVE = 1;
- Pengubahan value terhadap variable final; override dan overloading method; pewarisan/inheritance final class akan terjadi compile-error.

abstract menunjukkan bahwa class/method (agak lupa abstract variable ada di C# apa tidak) bersifat abstrak yang memaksa subclass / child nya untuk mengimplementasi method/class tersebut, jika tidak maka akan terjadi compile-error.

Karakteristik abstract:
- Harus di-implemen / di override oleh subclass / child nya, jika tidak akan compile error.
- Untuk abstract class, memiliki karakteristik yang serupa dengan interface tapi tidak sama.
- Tidak ada abstract variable dalam Java. (CMIIW)
- abstract class dapat memiliki konkrit method (tidak abstract), ini merupakan salah satu pembeda dengan interface.

Dahulu saya paling kesulitan memahami static keyword, namun beruntung sekarang saya sudah cukup paham tentang static, sebelum itu anda harus paham istilah dibawah ini:

instance = representasi/contoh/bentuk dari blueprint yang ada. Contohnya seperti Budi adalah representasi dari Manusia.
instantiate = istilah dari pembuatan untuk 1 instance.

static menunjukkan bahwa class/method/variable yang didefinisikan sebagai static hanya memiliki 1 instance untuk semua. Contohnya adalah dalam pembuatan object X terhadap class HURUF (1 atau lebih object), hanya akan ada 1 instance static method/variable yang dibuat/digenerate untuk 1 object tersebut. Method/variable static tsb adalah milik class HURUF, bukan milik object X, sehingga semua object akan mengakses 1 instance static yang sama milik class HURUF.
static sangat sering digunakan

Karakteristik static:
static keyword sering digabungkan dengan final untuk pembuatan konstan.
- Class dapat bersifat static, namun setiap member class harus bersifat static (mengikuti aturan dan fungsi dari static keyword), tidak mungkin bukan class yang hanya ada 1 instance dalam JVM, tetapi member class nya bisa lebih dari 1 instance?
- static metod tidak dapat mengakses non-static method/variable.
- static method dapat mengakses static method/variable.
- Untuk mengakses non-static method/variable, harus melakukan instantiate terlebih dahulu.

Prinsip diatas sesuai dengan fungsi dari static keyword. Bukankah sangat aneh bahwa 1 instance yang konkrit (static) memiliki instance yang tidak konkrit / belum jelas? untuk mengaksesnya maka harus dilakukan instantiated terlebih dahulu.
Semoga informasi ini berguna untuk anda.

Jika ada salah, mohon koreksinya :)
Maksud hati hanya mao sharing yang saya tau kok :D