Jumat, 15 Juli 2022

TARIK DATA DARI MESIN ABSENSI X100C KE MYSQL DAN MENAMPILKAN KEMBALI DENGAN PHP (PART-1)

 Catatan kali ini saya mencoba mendokumentasikan proses penarikan data dari mesin absensi Solution X100C kemudian menambahkan data tersebut ke dalam tabel MySQL dan menampilkannya kembali dengan skrip PHP. Cara alternatif yang saya gunakan ini 'sedikit tradisional' serta prosesnya lebih panjang dibandingkan dengan cara menarik data langsung dengan metode SOAP (tarik data menggunakan SOAP). Berikut persiapan dan Tools yang saya gunakan untuk penarikan data:

  • Akses ke mesin absensi X100C (Alamat IP, User dan Password). Lihat di buku manual atau tanyakan ke pihak SDM/terkait yang mengetahui,
  • MySQL for Excel Add-In, tool untuk mengekspor/import data dari MS Excel ke MySQL dan sebaliknya. [Download MySQL for Excel] [Dokumentasi MySQL for Excel]
  • MySQL Manager, saya menggunakan aplikasi HeidiSQL untuk melakukan operasi pada tabel,
  • XAMPP for Windows, untuk server Apache dan server DB MySQL,
  • Codelobster, editor PHP.
Mesin Absensi Solution X100C
Berikut langkah-langkah penarikan data dari mesin X100C:

  1. Buka halaman web konfigurasi mesin X100C:
    Contoh alamat web mesin absensi
  2. Masukkan login dan password. Secara default, Login: Administrator dan Password: 123456. Jika mesin terhubung ke jaringan publik (internet) sebaiknya password diganti!
    Halaman Login
  3. Setelah masuk ke dalam sistem, pilih menu: Terminal-> Download, kemudian atur periode waktu penarikan data. File yang di download memiliki ekstensi .dat.
    Download Data Absensi
  4. Selanjutnya buka file hasil download dengan MS Excel dan pastikan MySQL for Excel sudah terinstal dengan baik. Open 'All Files' untuk mengenali ekstensi dat
    Buka file hasil download dengan MS Excel
  5. Akan muncul kotak dialog 'Text Import Wizard' yang akan mengkonversi isi dari file dat ke format yang dikenali oleh Excel, tidak ada yang perlu diubah pada bagian ini
    Text Import Wizard
    Delimiter(pemisah) yang dipilih adalah [Tab]
  6. Berikut hasil penarikan data setelah di konversi ke format Excel. Kolom A: Id di presensi, Kolom B: Nama Karyawan, Kolom C: Waktu presensi (Datetime). Untuk kolom D dan E saya abaikan.
    Hasil Konversi Data
  7. Dikarenakan ID Presensi dan ID Karyawan pada tabel milik saya berbeda, harus dilakukan penyesuaian data. Field yang ada pada tabel absensi (nama tabel: presensi_tarik_data) yaitu: idpresensi(Primary Key), idmm (ID karyawan yang merupakan Foreign Key dari tabel karyawan_data_pribadi) dan att (mencatat waktu kehadiran).
    Desain Tabel Karyawan dan Absensi
  8. Selanjutnya lakukan penyesuaian data sesuai dengan kebutuhan pada tabel MySQL baik menghilangkan kolom yang tidak diperlukan maupun pengubahan data:
    Menghilangkan Kolom yang Tidak Diperlukan
    Sorting Data
    Penambahan ID Karyawan menggantikan ID Presensi Mesin
  9. Berikut contoh hasil penyesuaian data dimana kolom A:idpresensi(nomor record),kolom B:ID Karyawan dan Kolom C: Waktu Presensi (lihat desain tabel diatas-nomor 7):
    Hasil Penyesuaian Data
  10. Satu hal yang perlu diperhatian pada kolom A yaitu idpresensi, pada contoh data tabel diatas record yang masuk sudah mencapai ribuan, oleh karena itu harus dilihat record terakhir pada tabel sebelum kita mengekspor/menambahkan data excel ke MySQL. Cek dengan HeidiSQL atau aplikasi lain pada tabel absensi (presensi_tarik_data):
    Perhatikan Nilai tertinggi (Max) pada Kolom [idpresensi]

    Penambahan nomor record baru (No record terakhir di DB + 1)



    Jika terjadi duplikat nilai pada kolom [idpresensi] maka, proses ekspor akan gagal, dikarenakan terjadi duplikasi pada primary key [idpresensi].
  11. Langkah berikutnya adalah mengaktifkan MySQL for Excel dari Menu Data->MySQL for Excel:
    Mengatifkan MySQL for Excel
  12. Buat koneksi baru ke database:
    Membuat Koneksi Baru ke Database:
  13. Kemudian pilih Database dan Tabel yang menjadi tujuan ekspor data:
    Pilih Skema Database
    Pilih Tabel yang Menjadi Tujuan Expor Data
  14. Pilih semua cell yang berisi data pada sheet Excel:
    Pastikan cell dan tabel tujuan terpilih
  15. Kemudian pilih tombol [Append Excel Data to Table]
  16. Akan Muncul dialog box ekspor data, pastikan 'Mapping Method' yang dipilih adalah [Automatic] kemudian tekan tombol  [Append]
    Proses Ekspor ke Tabel MySQL
  17. Jika berhasil akan muncul seperti dibawah ini:
    Jika Proses Ekspor Data Berhasil
  18. Berikutnya cek data yang diekspor pada tabel MySQL
    Penambahan Data pada Tabel
Fungsi MySQL for Excel dapat digunakan secara luas selama data pada kolom Excel dan tabel di MySQL tersinkronisasi dengan baik. Pada tutorial berikutnya akan kita bahas cara menampilkan data hasil ekpor dari Excel menggunakan MySQL query dan PHP. Bersambung ...

Tutorial: Mengirim email dari Spreadsheet Menggunakan Google Script

 

Tujuan

Tutorial ini menunjukkan cara menggunakan data Spreadsheet untuk mengirim email ke orang yang berbeda.

Waktunya menyelesaikan

Sekitar 10 menit

Prasyarat

Sebelum Anda memulai tutorial ini, Anda harus:

  • Merasa nyaman menggunakan Editor Skrip dan memiliki pengalaman menggunakan fungsi Spreadsheet paling dasar.

Bagian 1: Menjalankan contoh sederhana

  1. Buat Spreadsheet kosong baru
  2. Tambahkan beberapa baris data. Setiap baris harus berisi alamat email di kolom A dan pesan email yang akan dikirim ke orang itu di kolom B. Untuk tujuan pengujian, Anda mungkin ingin menggunakan alamat email Anda sendiri di kolom A. Berikut ini contohnya:Mengirim Email
  3. Buka Script Editor dengan mengklik menu ‘Tools’, lalu pilih ‘Script editor …’.
  4. Salin dan tempel skrip berikut:
/**
 * Sends emails with data from the current spreadsheet.
 */
function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2; // First row of data to process
  var numRows = 2; // Number of rows to process
  // Fetch the range of cells A2:B3
  var dataRange = sheet.getRange(startRow, 1, numRows, 2);
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (var i in data) {
    var row = data[i];
    var emailAddress = row[0]; // First column
    var message = row[1]; // Second column
    var subject = 'Sending emails from a Spreadsheet';
    MailApp.sendEmail(emailAddress, subject, message);
  }
}
  1. Simpan Script
  2. Pilih fungsi sendEmails di kotak kombo fungsi dan klik “Run”
  3. Lihat Kotak Masuk email Anda. Pesan biasanya segera dikirim, tetapi kadang-kadang butuh beberapa detik.

Anda mungkin ingin melihat dokumentasi untuk metode berikut yang digunakan dalam skrip di atas:

  • Sheet.getRange() (perhatikan bahwa ada empat versi dari metode ini)
  • Range.getValues()
  • MailApp.sendEmail() (perhatikan bahwa ada empat versi dari metode ini)
  • Bagian 2: Perbaikan

    Anda mungkin ingin menandai sel di setiap baris setiap kali email dikirim. Dengan cara ini, jika skrip Anda berhenti berjalan (misalnya, jika ada bug dalam kode Anda atau Anda mencapai jumlah maksimum email yang dapat Anda kirim setiap menit atau hari) Anda akan dapat menjalankan kembali skrip nanti dan menghindari mengirim duplikat email.

    Berikut ini adalah ekstensi sederhana dari kode yang menetapkan sel dalam kolom C ke ‘EMAIL_SENT’ untuk setiap baris setelah sendEmail dipanggil.gmail / sendEmails / sendEmails.gsLihat di GitHub

    // Konstanta ini ditulis dalam kolom C untuk baris yang merupakan email
    // telah berhasil dikirim.
    var EMAIL_SENT = 'EMAIL_SENT';
    
    / **
     * Mengirim email non-duplikat dengan data dari spreadsheet saat ini.
     * /
    fungsi sendEmails2 () {
      var sheet = SpreadsheetApp.getActiveSheet ();
      var startRow = 2; // Baris pertama data untuk diproses
      var numRows = 2; // Jumlah baris untuk diproses
      // Ambil rentang sel A2: B3
      var dataRange = sheet.getRange (startRow, 1, numRows, 3);
      // Ambil nilai untuk setiap baris dalam Rentang.
      var data = dataRange.getValues ​​();
      untuk (var i = 0; i <data.length; ++ i) {
        var row = data [i];
        var emailAddress = baris [0]; // Kolom pertama
        var message = row [1]; // Kolom kedua
        var emailSent = baris [2]; // Kolom ketiga
        if (emailSent! == EMAIL_SENT) {// Mencegah pengiriman duplikat
          var subject = 'Mengirim email dari Spreadsheet';
          MailApp.sendEmail (alamat surel, subjek, pesan);
          sheet.getRange (startRow + i, 3) .setValue (EMAIL_SENT);
          // Pastikan sel diperbarui segera jika skrip terputus
          SpreadsheetApp.flush ();
        }
      }
    }

    Menambah Custom Tools Support Winbox 3.x pada The Dude Network Monitoring

     Di kantor saya tempat bekerja (Salah satu ISP di Bandung) menggunakan network monitoring yg salahsatunya pakai The Dude, dan banyak perangkat mikrotik yang terpasang di jaringan saat ini, sampai suatu ketika mikrotik mengeluarkan versi winbox 3.xxx dengan tampilan sbb

    2

    dengan fitur :

    • Group saved routers and keep big lists of them
    • Sort by IP address, MAC, version etc.
    • Filter and search in Saved or Neighbors
    • Ability to keep Loader open when connecting
    • Winbox can now self-upgrade
    • If connection is lost, it will offer to reconnect later
    • Log can be sorted, and now has columns

    namun seiring muncul nya winbox versi 3.xx tidak dibarengi juga dengan update the dude yang sudah memiliki tool winbox versi 3.xx ini, karena bawaan asli the dude itu adalah winbox versi 2.xx

    sialnya ada beberapa perangkat mikrotik baru yang hanya bisa di remote oleh Winbox Versi 3.xx contohnya barang ini

    1

    untuk perangkat yang hanya bisa diakses oleh winbox versi 3.3 ini tidak ada masalah jika kita akses menggunakan winbox 3.3 dari laptop langsung, tapi jika kita masukkan perangkat tersebut ke monitoring the dude maka kita sangat terganggua jika akan melakukan remote winbox, pasti tidak akan bisa dengan cara, klik kanan, tools, winbox, seperti perangkat mikrotik lainnya,,

    setelah kemarin2 saya coba cari caranya, dan mendapatkan masukan dari forum maka saya coba add tools baru di dude baru, dengan cara berikut ini

    1. buka dude nya
    2. pilih menu tools (di windows kiri)
    3. add tools (pilih tombol +)
    4. masukkan name : Winbox 3.xx (bebas sih) command : “E:\Winbox.exe” [Device.FirstAddress] [Device.UserName] [Device.Password]
    5. lalu ok

    3

    sehingga akan muncul tools tambahan dengan nama Winbox 3.xx

    4.png

    untuk melakukan pengetesan, kita langsung coba tools tambahan ini dengan klik kanan, tools lalu pilih winbox 3.xx pada perangkat mikrotik yang hanya bisa dibuka oleh winbox 3.xx

    5

    dan akhirnya mikrotik RB941-2nd (HapLite) bisa diremote via winbox dari the dude ðŸ™‚

    6.png

    sekian,, terimakasih

    Tutorial MikroTik : Pembagian Bandwidth dengan Queue Tree

     Pada tutorial kali ini, kita akan membahas panduan langkah-langkah untuk membagi Bandwidth secara merata by Queue tree. Secara garis besar,  beberapa rule yang harus dikonfigurasi untuk membagi bandwith by Queue tree meliputi :

    1. Konfigurasi mangle pada firewall untuk membedakan traffic download dan upload.
    2. Setting PCQ (Per Connection Queuing) pada Queue Types untuk membagi bandwidth secara adil dan merata.
    3. Setting Queue tree

    Nah tanpa berlama-lama lagi, berikut ini adalah langkah-langkah yang harus kamu lakukan

    1. Membuat mangle untuk membedakan traffic download dan upload

    # Mangle traffic download

    • Pilih menu IP >> Firewall >> Mangle –>> klik tanda “+” untuk menambah rule
    • Pada tab general, isikan kolom Chain : ‘forward’ dan kolom Dst. address : ip network local (eg.192.168.1.0/24) >> klik OK
    • Pada tab Action, isikan kolom Action : mark packet dan beri nama pada kolom New Pakcet Mark : down_user (sesuaikan), unchek pilihan Passtrough dan berilah comment untuk memudahkan pengecekan rule.

    # Mangle traffic upload

    • Pilih menu IP –>> Firewall –>> Mangle –>> klik tanda “+” untuk menambah rule
    • Pada tab general, isikan kolom Chain : ‘forward’ dan kolom Src. Address : ip network local (eg.192.168.1.0/24) >> klik OK
    • Pada tab Action, isikan kolom Action : mark packet dan beri nama pada kolom New Pakcet Mark : upl_user (sesuaikan), unchek pilihan Passtrough dan berilah comment untuk memudahkan pengecekan rule.

    2. Setting PCQ (Per Connection Queuing)

    PCQ berfungsi mengklasifikasikan arah koneksi. Misalnya, jika Classifier yang digunakan adalah src-address pada Local interface, maka aliran PCQ akan menjadi koneksi upload. Begitu juga dgn Dst. Address akan menjadi PCQ download.
    berikut langkah-langkah untuk melakukakan setting PCQ :

    # PCQ-Download

    • Pilih menu Queues >> Queue Types >> klik tanda “+” >> Isi pada kolom Type name : Pcq_Down;  Kind : pcq >> Centang pada opsi Dst. Address dan Dst. Port

    # PCQ – Upload

    • Pilih menu Queues >> Queue Types >> klik tanda “+” >> Isi pada kolom Type name : Pcq_Upl, Kind : pcq >> Centang  pada opsi Src. Address dan Src. Port

    3. Setting Queue Tree

    • Berikut ini adalah penjelasan dari beberapa argumen di Queue Tree :
    • Parent : Berguna untuk menentukan apakah queue yang dipilih bertugas sebagai induk queue atau child queue
    • Global-in : Mewakili semua input interface pada umumnya. Maksudnya disini adalah interface yang menerima input data/traffic sebelum difilter seperti trafik download
    • Global-out : Mewakili semua output interface pada umumnya. Maksudnya disini interface yang mengeluarkan output data/traffic yang sudah difilter seperti trafik upload
    • Global-total : Mewakili semua input dan output interface secara bersama, dengan kata lain merupakan penyatuan dari global-in dan global-out.
    • <interface name>: ex: lan atau wan :Mewakili salah satu interface keluar. Maksudnya disini hanya trafik yang keluar dari interface ini yang akan diqueue.
    • Packet Mark : Digunakan untuk menandai paket yang sudah ditandai di /ip firewall mangle.
    • Priority ( 1 s/d 8) : Digunakan untuk memprioritaskan child queue dari child queue lainnya. Priority tidak bekerja pada induk queue. Child Queue yang mempunyai priority satu (1) akan mencapai limit-at lebih dulu dari pada child queue yang berprioritas (2).
    • Queue Type : Digunakan untuk memilih type queue yang bisa dibuat secara khusus dibagian queue types
    • Limit At : Bandwidth minimal yang diperoleh oleh target/ip yang diqueue
    • Max Limit : Bandwidth maksimal yang bisa dicapai oleh target/ip yang diqueue.Burst limit : Bandwidth maksimal yang bisa dicapai oleh target/ip yang diqueue ketika burst sedang aktif
    • Burst time : Periode waktu dalam detik, dimana data Rate rata-rata dikalkulasikan.
    • Burst Threshold : Digunakan ketika data Rate dibawah nilai burst threshold maka burst diperbolehkan. Ketika data Rate sama dengan nilai burst threshold burst dilarang. Untuk mengoptimalkan burst nilai burst threshold harus diatas nilai Limit At dan dibawah nilai Max Limit.

    Berikut langkah-langkah membuat Queue Tree :

    # Queue Tree Download

    Membuat Induk Queue Download

    • Pilih menu Queues >> Queue Tree >> klik tanda “+” >> Isi kolom Name : Download (sesuaikan) >> Parent ; Interface Lokal/LAN  >> Max Limit (Sesuai Bandwith yang ada atau yang dikehendaki) >> Klik OK

    Membuat Child Queue Download

    • Langkahnya sama dengan induk queue, namun untuk child queue lebih dispesifikkan sesuai dengan rule mangle dan PCQ yang telah dibuat sebelumnya, berikut langkahnya sesuai urutan nomor

    # Queue Tree Upload

    Membuat Induk Queue Upload

    • Pilih menu Queues >> Queue Tree >> klik tanda “+” >> Name: Upload(sesuaikan) >> Parent ; Interface Publik/WAN >> Max Limit (Sesuai Bandwith yang ada atau yang dikehendaki)

    Membuat Child Queue Upload

    • Langkahnya sama dengan induk queue, namun untuk child queue lebih dispesifikkan sesuai dengan rule mangle dan pcq yang telah dibuat sebelumnya, berikut langkahnya sesuai urutan nomor.

    Nah itu tadi langkah-langkah yang perlu kamu ikuti untuk membagi bandwidth dengan Queue Tree. Selamat Mencoba !

    Kamis, 09 September 2021

    Cara Reset Password Windows 7 Menggunakan Hiren Boot CD 15.2

     Dari ilmu yang saya dapat itu kini saya coba bagikan kepada pengunjung blog ini. Langsung saja silakan simak langkah-langkahnya di bawah ini:

    – Download dahulu Hiren BootCD
    – Setelah itu burning ke CD/DVD atau bisa juga disimpan di USB Flash Drive
    – Masukkan CD/DVD yang telah berisi Hiren’s BootCD ke dalam CD/DVD Room pada komputer Kamu atau bisa juga tancapkan Hiren’s BootCD yang disimpan di dalam USB Flash Drive pada USB port di komputer Kamu.

    – Restart komputer Kamu kemudian tekan tombol F12, F9, Delete untuk memilih booting from CD/DVD atau USB, tiap type komputer mungkin akan berbeda, pelajari Boot Menu pada komputer yang Kamu gunakan.

    – Setelah Hiren’s loading dengan sempurna pilih menu Mini Windows XP seperti gambar di bawah

    – Tunggu beberapa saat sampai Mini Windows XP loading dengan sempurna, klik tombol Start dan pilih HBCD Menu

    – Selanjutnya pilih menu Programs >> Password / Keys >> Windows Login >> NTPWEdit (Reset XP/Vista/7 User Password)

    – Pada jendela NTPWEdit carilah file SAM di Local Disk pada komputer Kamu. Lihat ketarangan gambar di bawah!

    – Biasanya Local Disk akan di map ke drive [D:] atau ke [E:] tergantung jumlah partisi hardisk pada komputer yang Kamu gunakan.

    – Arahkan pencarian ke folder Windows – System32 – config dan pilih file SAM, selanjutnya klik tombol Open

    – Perhatikan daftar user pada jendela NTPWEdit pilih user yang sering Kamu gunakan, atau user yang akan di reset password-nya dan klik tombol Change Password.

    – Ganti Password sesuai keinginnan Kamu atau jika Kamu ingin mengosongkan passwordnya biarkan field New password dan field Verify kosong, lalu klik tombol OK

    – Langkah selanjutnya, jangan lupa menekan tombol Save Changes untuk menyimpan perubahan.

    Demikian proses Reset Password Windows Menggunakan Hiren’s BootCD, silahkan Shut down Mini Windows XP dan restart komputer Kamu, pastikan password sudah berubah atau telah kosong.

    Semoga bermanfaat..