NTP (Network Time Protocol)

Network Time Protocol (NTP) merupakan suatu protokol yang digunakan untuk melakukan sinkronisasi waktu antara sistem lokal dengan sumber waktu yang akurat. Protokol ini diperlukan agar waktu yang tercatat pada sistem kita (lokal) bisa sama atau paling tidak mendekati waktu yang sebenarnya. Hal ini berguna agar tidak terjadi kesalahan atau kekacauan pada saat suatu sistem berkomunikasi dengan sistem lainnya karena perbedaan waktu yang tercatat pada setiap sistem tersebut.

Selain itu seorang administrator jaringan akan dipermudah dalam menelusuri dan menganalisa masalah yang terjadi pada suatu jaringan jika waktu pada setiap sistem bersesuaian.
NTP sudah digunakan secara luas di dunia untuk melakukan sinkronisasi waktu antar sistem. Protokol ini memberikan tingkat akurasi kurang dari 1 milisekon pada LAN dan beberapa milisekon pada WAN. Saat ini sudah terdapat ratusan NTP server di seluruh dunia dan melayani jutaan NTP client di semua negara.

NTP menggunakan UDP port 123 sebagai layer transportnya. NTP beroperasi dengan menggunakan level hierarchy yang setiap levelnya diberi nomer yang disebut stratum. Stratum memiliki beberapa level yang mendefinisikan jarak dengan sistem yang menjadi referensi untuk menghindari cycle dalam proses sinkronisasi, diantaranya adalah:
  • Stratum 0. Merupakan perangkat seperti jam atom dan tidak dikoneksikan langsung degan jaringan, tetapi terhubung dengan komputer.
  • Stratum 1. Merupakan perangkat komputer yang terletak pada perangkat stratum 0.
  • Stratum 2. Merupakan perangkat yang mengirimkan request NTP ke perangkat Stratum 1.
  • Stratum 3. Merupakan perangkat yang memiliki fungsi yang sama seperti stratum 2 dan melakukan request NTP ke perangkat stratum 2.
NTP Server
NTP Server adalah situs NTP Stratum 1, 2,..dst., yaitu Server yang sistem waktunya di-sinkron-kan terhadap sumber waktu akurat, dan men-transmisi-kan paket informasi waktu kepada komputer 'klien' yang meminta.


Tulisan berikutnya, akan membahas tentang NTP Server menggunakan perpaduan antara freeBSD dan GPS (Global Positioning System), yang mana dalam hal ini adalah Stratum 1.

Selisih tanggal pada INFOPATH 2010

Biasanya kita membutuhkan data yang diambil dari selisih tanggal. Namun bagaimana caranya menghitung selisih tanggal yang menggunakan dua control dateTimePicker pada microsoft infopath 2010?

Caranya adalah:

1. Buat form seperti berikut


Masukkan kontrol Date time Picker, dan textbox dengan ketentuan sebagai berikut:
KomponenNameData Type
Date Time PickerstartDateDate
Date Time PickerendDateDate
Text BoxdifferenceSingle Line Of text

2. Tambahkan Rule pada field startDate:
Action: Set a field's value
Field: difference
Value:
(number(substring(../my:endDate, 9, 2)) + floor((153 * (number(substring(../my:endDate, 6, 2)) + 12 * (floor((14 - number(substring(../my:endDate, 6, 2))) div 12)) - 3) + 2) div 5) + (number(substring(../my:endDate, 1, 4)) + 4800 - (floor((14 - number(substring(../my:endDate, 6, 2))) div 12))) * 365 + floor((number(substring(../my:endDate, 1, 4)) + 4800 - (floor((14 - number(substring(../my:endDate, 6, 2))) div 12))) div 4) - floor((number(substring(../my:endDate, 1, 4)) + 4800 - (floor((14 - number(substring(../my:endDate, 6, 2))) div 12))) div 100) + floor((number(substring(../my:endDate, 1, 4)) + 4800 - (floor((14 - number(substring(../my:endDate, 6, 2))) div 12))) div 400) - 32045) - (number(substring(., 9, 2)) + floor((153 * (number(substring(., 6, 2)) + 12 * (floor((14 - number(substring(., 6, 2))) div 12)) - 3) + 2) div 5) + (number(substring(., 1, 4)) + 4800 - (floor((14 - number(substring(., 6, 2))) div 12))) * 365 + floor((number(substring(., 1, 4)) + 4800 - (floor((14 - number(substring(., 6, 2))) div 12))) div 4) - floor((number(substring(., 1, 4)) + 4800 - (floor((14 - number(substring(., 6, 2))) div 12))) div 100) + floor((number(substring(., 1, 4)) + 4800 - (floor((14 - number(substring(., 6, 2))) div 12))) div 400) - 32045)
Kemudian masukkan Condition berikut ini pada Rule:
startDate is not blank and endDate is not blank


3. Tambahkan Rule pada field startDate:
Action: Set a field's value
Field: difference
Value: 0
Masukkan Conditions pada Rule:
startDate is blank
or endDate is blank


4. Tambahkan Rule berikut ini pada field endDate:
Action: Set a field's value
Field: difference
Value:
(number(substring(., 9, 2)) + floor((153 * (number(substring(., 6, 2)) + 12 * (floor((14 - number(substring(., 6, 2))) div 12)) - 3) + 2) div 5) + (number(substring(., 1, 4)) + 4800 - (floor((14 - number(substring(., 6, 2))) div 12))) * 365 + floor((number(substring(., 1, 4)) + 4800 - (floor((14 - number(substring(., 6, 2))) div 12))) div 4) - floor((number(substring(., 1, 4)) + 4800 - (floor((14 - number(substring(., 6, 2))) div 12))) div 100) + floor((number(substring(., 1, 4)) + 4800 - (floor((14 - number(substring(., 6, 2))) div 12))) div 400) - 32045) - (number(substring(../my:startDate, 9, 2)) + floor((153 * (number(substring(../my:startDate, 6, 2)) + 12 * (floor((14 - number(substring(../my:startDate, 6, 2))) div 12)) - 3) + 2) div 5) + (number(substring(../my:startDate, 1, 4)) + 4800 - (floor((14 - number(substring(../my:startDate, 6, 2))) div 12))) * 365 + floor((number(substring(../my:startDate, 1, 4)) + 4800 - (floor((14 - number(substring(../my:startDate, 6, 2))) div 12))) div 4) - floor((number(substring(../my:startDate, 1, 4)) + 4800 - (floor((14 - number(substring(../my:startDate, 6, 2))) div 12))) div 100) + floor((number(substring(../my:startDate, 1, 4)) + 4800 - (floor((14 - number(substring(../my:startDate, 6, 2))) div 12))) div 400) - 32045)
Kemudian masukkan Conditions seperti ini pada Rule:
startDate is not blank and endDate is not blank

5. Tambahkan Rule kedua pada field endDate dengan setting sebagai berikut:
Action: Set a field's value
Field: difference
Value: 0
Masukkan Conditions berikut ini pada Rule:
startDate is blank or endDate is blank
Sehingga hasilnya sebagai berikut:


6. Masukkan Rule berikut ini pada field difference:
Action: Set a field's value
Field: .
Value: 0
Kemudian tambahkan Condition pada Rule dengan setting sebagai berikut:
difference does not match pattern Custom Pattern: -{0,1}d+




Setelah melakukan langkah-langkah diatas, maka selanjutnya adalah menjalankan (preview / publish ke sharepoint). Dan sekarang kita telah mempunyai form yang bisa menghitung perbedaan 2 tanggal secara otomatis. Cara ini juga bisa digunakan di infopath 2007 maupun 2003.