Showing posts with label Internet. Show all posts
Showing posts with label Internet. Show all posts

Friday, January 17, 2014

Tutorial Bandwidth Mikrotik : Limited Download, Unlimited Browsing Menggunakan Layer 7

Limited Download dan Unlimited Browsing adalah salah satu teknik manajemen Bandwidth yang efektif untuk membagi bandwidth secara adil. Karena, jika bandwidth download tidak dibatasi, maka akan menggangu kecepatan internet pengguna lain dalam satu jaringan. Akibatnya, jika ada beberapa pengguna yang melakukan download apalagi menggunakan IDM, maka pengguna lain yang cuma browsing tidak kebagian bandwidth.

Nah, untuk mengatasi hal ini, maka teknik Limited Download dan Unlimited Browsing ini kita terapkan. Pada Mikrotik, teknik ini bisa dilakukan dengan banyak cara. Salah satu cara yang simpel dan efektif adalah menggunakan filter Layer 7 Protocol. Yang belum tau apa itu Layer 7 Protocol, silakan baca disini.


1. Buat daftar extensi file yang masuk filter download di Layer 7 protocol. Silakan copy dan paste script berikut ke Terminal Mikrotik kemudian tekan enter. Jika ekstensi file nya dirasa kurang banyak silakan ditambahkan sendiri.

/ip firewall layer7-protocol

add comment="" name=donlotan regexp="^.*get.+\\.(exe|rar|zip|7z|cab|asf|mov|wmv\

|mpg|mpeg|mkv|avi|flv|pdf|wav|rm|mp3|mp4|ram|rmvb|dat|daa|iso|nrg|bin|vcd|\

mp2|3gp|mpe|qt|raw|wma|ogg|doc|deb|tar|bzip|gzip|gzip2|0[0-9][0-9]).*\$"

2. Buat Firewall Mangle untuk menandai paket yang mau dilimit. Silakan copy paste juga script berikut ini ke Terminal dan tekan enter. Kita cukup menggunakan 1 Mangle saja, simpel kan? :D

/ip firewall mangle

add action=mark-packet chain=forward comment=Donlotan disabled=no \

layer7-protocol=donlotan new-packet-mark=paket-donlot passthrough=no protocol=tcp



3. Silakan cek apakah script tadi berhasil dieksekusi menjadi setingan atau tidak.
Cek Setingan Layer 7 protocol : IP --> Firewall --> Layer7 Protocol

Cek Setingan Mangle : IP --> Firewall --> Mangle




4. Selanjutnya buat limit bandwidth nya dengan Queue. 
Queue Type : Masuk ke Queue --> Queue Types --> add
- Beri nama limit dl
- Kind : pcq
- Rate : 64k (silakan sesuaikan dengan keinginan berapa max speed download nya)
jika diisi 64k, maksudnya membatasi kecepatan download 64 kbps dibagi 8 --> 8 KB/s
jika ingin lebih tinggi bisa saja diisi 256k sehingga throughput : 256/8 = 32 KB/s
NB : ingat 1 byte = 8 bit
Silakan diisi sesuai keinginan anda.
- Setingan lainnya biarkan saja, lihat gambar berikut ini :



Queue Tree : masuk ke Queue --> Queue Tree --> add
- Beri nama : Limit Download
- Parent : global (Router OS saya versi 6, cuma ada satu parent global)
- Packet Marks : paket-donlot
- Queue Type : limit dl
- Max Limit : 64k (Sesuaikan dengan kebutuhan anda)
Anda juga bisa memanfaatkan fitur Limit At, silakan baca disini untuk penjelasan lebih lengkap :


5. Setingan selesai. Jadi setingan di atas membatasi bandwidth download sebesar 64kbps = 8KB/s.

6. Coba cek apakah setingan sudah benar dengan melakukan tes download file :
Sebelum menggunakan Limit Download :


Setelah menggunakan Limit Download :

Oke, demikianlah Tutorial Bandwidth Mikrotik : Limited Download, Unlimited Browsing Menggunakan Layer 7 Protocol. Silakan anda praktekan sesuai dengan kondisi jaringan anda. Selamat mencoba :)

Referensi :
http://komputersinau.blogspot.com/2012/10/limitid-download-unlimited-browsing.html

Monday, December 9, 2013

Cara Belajar Mikrotik Tanpa RouterBoard Menggunakan VirtualBox

Pada artikel sebelumnya saya pernah membahas tentang Tutorial Cara Belajar Mikrotik tanpa RouterBoard dengan VMWare. Kali ini hampir sama sebenarnya masih membahas tentang Cara Belajar Mikrotik Tanpa RouterBoard namun bukan menggunakan VMWare melainkan VirtualBox. Oya, sebelumnya saya jelasin dulu apa itu VMWare dan VirtualBox. Jadi kedua software ini dapat menjalankan sistem operasi secara virtual didalam sistem operasi di PC/laptop kita. Misalnya kita mau jalanin Linux Ubuntu di Windows 7 PC kita. Udah ngerti kan?

Sekarang saya coba jelaskan kenapa kali ini saya menggunakan VirtualBox bukannya VMWare. Alasannya yaitu karena kelebihan VirtualBox daripada VMWare :
1. VirtualBox itu Software GRATIS, Sedangkan VMWare Workstation Tidak
2. VirtualBox lebih simpel dan mudah digunakan
3. VirtualBox lebih enteng dibandingkan VMWare
4. Dll, Dsb, Dst.. :D

Oke, sekarang saya coba jelaskan apa yang akan kita lakukan selanjutnya. Disini kita menggunakan VirtualBox untuk menjalankan RouterOS Mikrotik dan Windows XP secara virtual. Tujuannya adalah agar kita tetap bisa belajar dan oprek-oprek Mikrotik tanpa harus punya RouterBoard nya. Hal ini saya lakukan karena saya lagi ada tugas negara dan tidak bawa RouterBoard Mikrotik. Jadi kalo mau experimen kan susah. Oleh karena itulah saya coba pakai Virtual Machine ini. 

Untuk lebih jelasnya silakan lihat gambar topologi yang akan kita bangun berikut ini :


Hal yang kita butuhkan adalah :
1. PC/Laptop yang terkoneksi ke Internet. Mau konek pake Modem, Wifi, atau lainnya terserah anda. 
2. Software VirtualBox terbaru, silakan download disini.
3. File Installer RouterOS Mikrotik, Silakan cari disini.
4. File Installer (ISO) Windows XP, Silakan sendiri ya. Googling aja :D
5. Winbox Mikrotik ada disini.
6. Secangkir kopi dan cemilan untuk menemani kita ngoprek ;)

Disini saya menggunakan Windows XP supaya lebih gampang konfigurasinya. Selain itu juga lebih enteng dan cepet loadingnya. Kalau anda mau pake windows lain silakan saja. Atau mau pake Linux juga ga masalah. Tapi disini saya contohkan caranya menggunakan Windows XP SP3.

Langsung saja, langkah-langkah nya sebagai berikut.
Langkah Instalasi :
1. Silakan Download dan Install VirtualBox nya
2. Buat VM baru untuk Windows XP, sesuaikan resource (RAM, Harddisk) dengan spek PC anda
3. Boot VM tersebut dengan installer Windows XP (ISO)
4. Jalankan VM Win XP nya --> Lakukan proses instalasi Win XP sampai selesai
5. Buat VM baru untuk Mikrotik --> Lakukan hal yang sama seperti pada Win XP
6. Boot VM tersebut dengan installer RouterOS Mikrotik (ISO)
7. Jalankan VM Mikrotik nya --> Lakukan proses Instalasi Mikrotik RouterOS sampai selesai (Tutorialnya ada disini)

Langkah Konfigurasi Jaringan :
Sesuai dengan topologi di atas, kita gunakan 2 Ether pada Mikrotik. 
Ether1 untuk koneksi ke Client (Host-only) --> IP address 10.10.10.2/24
Ether2 untuk koneksi ke Internet (NAT) --> IP address otomatis dari DHCP Client

Lebih jelasnya silakan lihat Video Tutorial yang saya buat khusus untuk kalian berikut ini :

 

Oke, Semoga Tutorial Cara Belajar Mikrotik Tanpa RouterBoard Menggunakan VirtualBox ini bermanfaat. Selamat mencoba. :)

Friday, December 6, 2013

Cara Memblokir Website (Facebook) Menggunakan Layer 7 Mikrotik

Di bawah ini saya akan share Tutorial Mikrotik untuk memblokir facebook menggunakan Mikrotik L7 Protokol (Layer 7). Protokol Layer7 adalah metode untuk mencari pola dalam ICMP / TCP / UDP stream, atau istilah lainnya regex pattern.

Cara kerja L7 adalah mencocokan (mathcer) 10 paket koneksi pertama atau 2KB koneksi pertama dan mencari pola/pattern data yang sesuai dengan yang tersedia. Jika pola ini tidak ditemukan dalam data yang tersedia, matcher tidak memeriksa lebih lanjut. Dan akan dianggap unknown connections. Anda harus mempertimbangkan bahwa banyak koneksi secara signifikan akan meningkatkan penggunaan memori pada RB maupun PC Router anda. Untuk menghindari itu tambahkan regular firewall matchers (pattern) untuk mengurangi jumlah data yang dikirimkan ke layer-7 filter.


Layer7 matcher harus melihat kedua arah lalu lintas (masuk dan keluar). Untuk memenuhi persyaratan ini rule l7  harus diatur dalam chain Forward. Jika rule pada chain input/prerouting maka aturan yang sama harus diatur juga dalam chain output/postrouting , jika tidak maka data mungkin dianggap tidak lengkap sehingga pola/pattern dianggap tidak benar /cocok.

Oke udah tau kan tentang Layer 7 Protocol? Kita lanjut aja ya. Jadi skenario yang akan kita gunakan adalah seperti gambar berikut ini :



Tutorial ini ada dua bagian :

1. Block facebook website buat semua orang yang konek ke local network.
Pertama, kita cek dulu situs Facebook bisa dibuka apa tidak.


Cek IP address client yang tidak boleh buka Facebook

Selanjutnya, masuk ke Winbox Mikrotik, masuk ke menu IP --> Firewall --> Layer 7 Protocols. Buat rule regexp baru untuk memblokir Facebook.
Langkah nya seperti pada gambar berikut ini :



 
Beri nama rule tersebut facebook, masukkan script regexp berikut ini :
^.+(facebook.com).*$


Selanjutnya, buat Firewall Rule baru dengan :
Chain : forward
Src Address : alamat jaringan dari client (172.16.10.0/24)


Masuk tab Advanced, pada Layer 7 Protocol pilih "facebook"


Masuk tab Action, pilih Action drop.


Sekarang coba tes setingan tadi berhasil apa tidak.


Cek juga apa setingan ini ngeblok situs selain facebook
Oke bisa, setingannya berjalan dengan lancar gan :)


2. Membuat facebook hanya bisa dibuka oleh beberapa user saja.

Oke lanjut ya, kali ini kita coba buka koneksi salah satu client biar bisa buka facebook untuk client kedua (172.16.10.199/24) tapi masih tetap memblokir akses ke facebook buat client lainnya.


Buat Filter rule keduadengan Src Address spesifik ke IP address client nya yaitu 172.16.10.199 bukannya alamat jaringannya (network address).
Jangan lupa Action nya pilih accept.


Pindah rule yang baru dibuat tadi ke paling atas ya.

Coba tes setingan ini pada client kedua (172.16.10.199/24):

Detail pada rule nya ada paket dan data yang lewat.

Cek juga pada client lainnya pada network yang sama apakah facebook bisa diakses apa tidak.

Coba lihat lagi rule nya
Drop packets rate nya naik kan. Ini berarti setingan kita berhasil memblokir Facebook menggunakan Layer 7 Protocol Mikrotik.

Kita juga bisa lakukan hal yang sama untuk memblokir situs youtube, dll. Silakan anda coba dan terapkan sendiri.
Semoga bermanfaat :)

Wednesday, September 4, 2013

Tutorial Setting Internet Speedy menggunakan Mikrotik + Wifi

Tutorial Setting Internet Speedy menggunakan Mikrotik RB751-2HnD dengan melakukan sharing koneksi Internet menggunakan WiFi akan kita bahas pada artikel kali ini. Sebelumnya sudah pernah dibahas tentang Tutorial Cara Setting Speedy Mikrotik RB750 via Winbox. Pada artikel tersebut kita menggunakan Mikrotik RB750 sebagai pengganti modem ADSL Speedy dengan menggunakan interface PPPoE client Speedy. 

Namun, kali ini sedikit berbeda, karena kita masih tetap menggunakan modem ADSL Speedy sebagai PPPoE Client dan DHCP Server. Disini juga menggunakan Mikrotik RB751-2HnD yang memiliki 5 port ethernet dan satu port Wlan1 sehingga bisa sharing koneksi internet via WiFi.

Secara garis besar topologi jaringan yang akan kita buat adalah sebagai berikut :


Modem ADSL Speedy 
  • PPPoE Client Speedy
  • DHCP Server
Mikrotik RB751-2HnD
  • DHCP Client dari modem Speedy
  • DHCP Server untuk clint PC dan Wifi
  • Ether1 --> sebagai gateway menuju ke Modem Speedy
  • Ether2 --> menuju ke PC Client
  • Wlan1 --> sebagai Access Point untuk share koneksi internet ke client via WiFi
  • Ether 2 dan Wlan1 di bridge
Oke sekarang kita mulai cara seting Internet Speedy menggunakan Mikrotik + Wifi. Untuk tutorial lengkapnya sudah saya buatkan dalam bentuk video yang sudah saya upload ke Youtube. Silakan anda lihat video berikut ini supaya lebih jelas.


 

Oke, selamat mencoba dan semoga Tutorial Setting Internet Speedy menggunakan Mikrotik + Wifi ini dapat bermanfaat dan membantu anda. Thanks :)

Monday, October 22, 2012

Cara Membuat Email di Gmail

Saya akan berbagi ilmu tentang Cara Membuat Email di Gmail. Adapun langkah langkah cara membuat email di gmail adalah sebagai berikut.

1. Masuk di www.gmail.com, lalu akan muncul gambar sebagai berikut

Buat akun
2. Pilih BUAT AKUN dipojok kanan atas
3. Lalu akan muncul gambar sebagai berikut:

Form Pendaftaran
4. Isikan data anda lalu pilih Langkah berikutnya
5. Setelah anda menekan langkah berikutnya maka akan muncul gambar berikut:

verifikasi akun
6. Masukkan nomor telepon anda (diawali +62) lalu pilih Kirim kode verifikasi
7. Lihat Handphone anda, anda akan mendapat SMS kode verifikasi
8. Setelah anda memilih kirim kode verifikasi maka akan muncul gambar berikut:

verifikasi akun
9. Masukkan kode verifikasi yang anda terima melalui handphone. contoh 123456
10. Setelah anda memasukkan kode lalu pilih Verifikasi
11. Akan muncul gambar sebagai berikut:

Foto profil
12. Anda bisa memilih Langkah berikutnya
13. Lalu akan muncul gambar sebagai berikut:

Selamat Datang di Gmail
14. Pilih Lanjutkan ke Gmail
15. Selesai

Saturday, June 23, 2012

Ganti Template Final

Ganti template final maksudnya semoga besok tidak gonta ganti template lagi, karena saya sadar bahwa gonta ganti template itu tidak bagus untuk SERP. Didorong keinginan untuk membuat nuansa berbeda pada blog milik Adhitya Nugraha Novianta, sembari belajar otak atik edit html akhirnya terbesit untuk membuat desain template baru.

Ganti Template Final

Template baru ini kategori minimalis dengan menampilkan kesan warna kesukaan Penulis yaitu warna merah dan putih. Semoga dengan template baru ini Penulis akan lebih bersemangat dalam dunia ngeblog dengan membuat postingan baru yang bermanfaat.

Monday, June 18, 2012

Mengatasi Error Balas Reply Komentar

Beberapa waktu yang lalu blog milik Adhitya Nugraha Novianta mengalami error pada tombol balas atau reply, bila tombol tersebut di klik maka tidak bisa dan tetap pada menu semula, secara tidak sengaja (karena saya pada awalnya tidak kepikiran membetulkan dan sudah terbilang lama error) saya menemukan tips untuk mengatasi error tersebut, saya mencoba praktekkan dan akhirnya tombol balas atau reply tersebut bisa berfungsi kembali secara normal, adapun cara untuk membetulkan tombol balas atau error agar berfungsi secara optimal adalah sebagai berikut.

Reply Komentar



1. Pilih Menu Dasbord
2. Backup dulu tempalte anda
3. Pilih Edit HTML
4. cari kode dibawah ini:


<b:includable id='threaded_comment_js' var='post'>
  <script defer='defer' expr:src='data:post.commentSrc' type='text/javascript'/>

  <script type='text/javascript'>
    (function() {
      var items = <data:post.commentJso/>;
      var msgs = <data:post.commentMsgs/>;
      var postId = &#39;<data:post.id/>&#39;;
      var feed = &#39;<data:post.commentFeed/>&#39;;
      var authorName = &#39;<data:post.author/>&#39;;
      var authorUrl = &#39;<data:post.authorUrl/>&#39;;
      var blogId = &#39;<data:top.id/>&#39;;
      var baseUri = &#39;<data:post.commentBase/>&#39;;

// <![CDATA[
      feed += '?alt=json&v=2&orderby=published&reverse=false&max-results=50';
      var cursor = null;
      if (items && items.length > 0) {
        cursor = parseInt(items[items.length - 1].timestamp) + 1;
      }

      var bodyFromEntry = function(entry) {
        if (entry.gd$extendedProperty) {
          for (var k in entry.gd$extendedProperty) {
            if (entry.gd$extendedProperty[k].name == 'blogger.contentRemoved') {
              return '<span class="deleted-comment">' + entry.content.$t + '</span>';
            }
          }
        }
        return entry.content.$t;
      }

      var parse = function(data) {
        cursor = null;
        var comments = [];
        if (data && data.feed && data.feed.entry) {
          for (var i = 0, entry; entry = data.feed.entry[i]; i++) {
            var comment = {};
            // comment ID, parsed out of the original id format
            var id = /blog-(\d+).post-(\d+)/.exec(entry.id.$t);
            comment.id = id ? id[2] : null;
            comment.body = bodyFromEntry(entry);
            comment.timestamp = Date.parse(entry.published.$t) + '';
            if (entry.author && entry.author.constructor === Array) {
              var auth = entry.author[0];
              if (auth) {
                comment.author = {
                  name: (auth.name ? auth.name.$t : undefined),
                  profileUrl: (auth.uri ? auth.uri.$t : undefined),
                  avatarUrl: (auth.gd$image ? auth.gd$image.src : undefined)
                };
              }
            }
            if (entry.link) {
              if (entry.link[2]) {
                comment.link = comment.permalink = entry.link[2].href;
              }
              if (entry.link[3]) {
                var pid = /.*comments\/default\/(\d+)\?.*/.exec(entry.link[3].href);
                if (pid && pid[1]) {
                  comment.parentId = pid[1];
                }
              }
            }
            comment.deleteclass = 'item-control blog-admin';
            if (entry.gd$extendedProperty) {
              for (var k in entry.gd$extendedProperty) {
                console.log(entry.gd$extendedProperty[k].name + ' - ' + entry.gd$extendedProperty[k].value);
                if (entry.gd$extendedProperty[k].name == 'blogger.itemClass') {
                  comment.deleteclass += ' ' + entry.gd$extendedProperty[k].value;
                }
              }
            }
            comments.push(comment);
          }
        }
        return comments;
      };

      var paginator = function(callback) {
        if (hasMore()) {
          var url = feed;
          if (cursor) {
            url += '&published-min=' + new Date(cursor).toISOString();
          }
          window.bloggercomments = function(data) {
            var parsed = parse(data);
            cursor = parsed.length < 50 ? null
                : parseInt(parsed[parsed.length - 1].timestamp) + 1
            callback(parsed);
            window.bloggercomments = null;
          }
          url += '&callback=bloggercomments';
          var script = document.createElement('script');
          script.type = 'text/javascript';
          script.src = url;
          document.getElementsByTagName('head')[0].appendChild(script);
        }
      };
      var hasMore = function() {
        return !!cursor;
      };
      var getMeta = function(key, comment) {
        if ('iswriter' == key) {
          var matches = !!comment.author
              && comment.author.name == authorName
              && comment.author.profileUrl == authorUrl;
          return matches ? 'true' : '';
        } else if ('deletelink' == key) {
          return baseUri + '/delete-comment.g?blogID=' + blogId + '&postID=' + comment.id;
        } else if ('deleteclass' == key) {
          return comment.deleteclass;
        }
        return '';
      };

      var replybox = null;
      var replyUrlParts = null;
      var replyParent = undefined;

      var onReply = function(commentId, domId) {
        if (replybox == null) {
          // lazily cache replybox, and adjust to suit this style:
          replybox = document.getElementById('comment-editor');
          if (replybox != null) {
            replybox.height = '250px';
            replybox.style.display = 'block';
            replyUrlParts = replybox.src.split('#');
          }
        }
        if (replybox && (commentId !== replyParent)) {
          document.getElementById(domId).insertBefore(replybox, null);
          replybox.src = replyUrlParts[0]
              + (commentId ? '&parentID=' + commentId : '')
              + '#' + replyUrlParts[1];
          replyParent = commentId;
        }
      };

      var tok = 'comment-form_';
      var hash = window.location.hash || '';
      var startThread = hash.indexOf(tok) == 1 ? hash.substring(tok.length + 1) : undefined;

      // Configure commenting API:
      var configJso = {
        'maxDepth': 2
      };
      var provider = {
        'id': postId,
        'data': items,
        'loadNext': paginator,
        'hasMore': hasMore,
        'getMeta': getMeta,
        'onReply': onReply,
        'rendered': true,
        'initReplyThread': startThread,
        'config': configJso,
        'messages': msgs
      };

      var render = function() {
        if (window.goog && window.goog.comments) {
          var holder = document.getElementById('comment-holder');
          window.goog.comments.render(holder, provider);
        }
      };

      // render now, or queue to render when library loads:
      if (window.goog && window.goog.comments) {
        render();
      } else {
        window.goog = window.goog || {};
        window.goog.comments = window.goog.comments || {};
        window.goog.comments.loadQueue = window.goog.comments.loadQueue || [];
        window.goog.comments.loadQueue.push(render);
      }
    })();
// ]]>
  </script>
</b:includable>

5. Ganti kode diatas dengan kode berikut

<b:includable id='threaded_comment_js' var='post'>
  <script async='async' expr:src='data:post.commentSrc' type='text/javascript'/>

  <script type='text/javascript'>
    (function() {
      var items = <data:post.commentJso/>;
      var msgs = <data:post.commentMsgs/>;
      var config = <data:post.commentConfig/>;

// <![CDATA[
      var cursor = null;
      if (items && items.length > 0) {
        cursor = parseInt(items[items.length - 1].timestamp) + 1;
      }

      var bodyFromEntry = function(entry) {
        if (entry.gd$extendedProperty) {
          for (var k in entry.gd$extendedProperty) {
            if (entry.gd$extendedProperty[k].name == 'blogger.contentRemoved') {
              return '<span class="deleted-comment">' + entry.content.$t + '</span>';
            }
          }
        }
        return entry.content.$t;
      }

      var parse = function(data) {
        cursor = null;
        var comments = [];
        if (data && data.feed && data.feed.entry) {
          for (var i = 0, entry; entry = data.feed.entry[i]; i++) {
            var comment = {};
            // comment ID, parsed out of the original id format
            var id = /blog-(\d+).post-(\d+)/.exec(entry.id.$t);
            comment.id = id ? id[2] : null;
            comment.body = bodyFromEntry(entry);
            comment.timestamp = Date.parse(entry.published.$t) + '';
            if (entry.author && entry.author.constructor === Array) {
              var auth = entry.author[0];
              if (auth) {
                comment.author = {
                  name: (auth.name ? auth.name.$t : undefined),
                  profileUrl: (auth.uri ? auth.uri.$t : undefined),
                  avatarUrl: (auth.gd$image ? auth.gd$image.src : undefined)
                };
              }
            }
            if (entry.link) {
              if (entry.link[2]) {
                comment.link = comment.permalink = entry.link[2].href;
              }
              if (entry.link[3]) {
                var pid = /.*comments\/default\/(\d+)\?.*/.exec(entry.link[3].href);
                if (pid && pid[1]) {
                  comment.parentId = pid[1];
                }
              }
            }
            comment.deleteclass = 'item-control blog-admin';
            if (entry.gd$extendedProperty) {
              for (var k in entry.gd$extendedProperty) {
                if (entry.gd$extendedProperty[k].name == 'blogger.itemClass') {
                  comment.deleteclass += ' ' + entry.gd$extendedProperty[k].value;
                }
              }
            }
            comments.push(comment);
          }
        }
        return comments;
      };

      var paginator = function(callback) {
        if (hasMore()) {
          var url = config.feed + '?alt=json&v=2&orderby=published&reverse=false&max-results=50';
          if (cursor) {
            url += '&published-min=' + new Date(cursor).toISOString();
          }
          window.bloggercomments = function(data) {
            var parsed = parse(data);
            cursor = parsed.length < 50 ? null
                : parseInt(parsed[parsed.length - 1].timestamp) + 1
            callback(parsed);
            window.bloggercomments = null;
          }
          url += '&callback=bloggercomments';
          var script = document.createElement('script');
          script.type = 'text/javascript';
          script.src = url;
          document.getElementsByTagName('head')[0].appendChild(script);
        }
      };
      var hasMore = function() {
        return !!cursor;
      };
      var getMeta = function(key, comment) {
        if ('iswriter' == key) {
          var matches = !!comment.author
              && comment.author.name == config.authorName
              && comment.author.profileUrl == config.authorUrl;
          return matches ? 'true' : '';
        } else if ('deletelink' == key) {
          return config.baseUri + '/delete-comment.g?blogID='
               + config.blogId + '&postID=' + comment.id;
        } else if ('deleteclass' == key) {
          return comment.deleteclass;
        }
        return '';
      };

      var replybox = null;
      var replyUrlParts = null;
      var replyParent = undefined;

      var onReply = function(commentId, domId) {
        if (replybox == null) {
          // lazily cache replybox, and adjust to suit this style:
          replybox = document.getElementById('comment-editor');
          if (replybox != null) {
            replybox.height = '250px';
            replybox.style.display = 'block';
            replyUrlParts = replybox.src.split('#');
          }
        }
        if (replybox && (commentId !== replyParent)) {
          document.getElementById(domId).insertBefore(replybox, null);
          replybox.src = replyUrlParts[0]
              + (commentId ? '&parentID=' + commentId : '')
              + '#' + replyUrlParts[1];
          replyParent = commentId;
        }
      };

      var hash = (window.location.hash || '#').substring(1);
      var startThread, targetComment;
      if (/^comment-form_/.test(hash)) {
        startThread = hash.substring('comment-form_'.length);
      } else if (/^c[0-9]+$/.test(hash)) {
        targetComment = hash.substring(1);
      }

      // Configure commenting API:
      var configJso = {
        'maxDepth': config.maxThreadDepth
      };
      var provider = {
        'id': config.postId,
        'data': items,
        'loadNext': paginator,
        'hasMore': hasMore,
        'getMeta': getMeta,
        'onReply': onReply,
        'rendered': true,
        'initComment': targetComment,
        'initReplyThread': startThread,
        'config': configJso,
        'messages': msgs
      };

      var render = function() {
        if (window.goog && window.goog.comments) {
          var holder = document.getElementById('comment-holder');
          window.goog.comments.render(holder, provider);
        }
      };

      // render now, or queue to render when library loads:
      if (window.goog && window.goog.comments) {
        render();
      } else {
        window.goog = window.goog || {};
        window.goog.comments = window.goog.comments || {};
        window.goog.comments.loadQueue = window.goog.comments.loadQueue || [];
        window.goog.comments.loadQueue.push(render);
      }
    })();
// ]]>
  </script>
</b:includable>
6. Simpan

Wednesday, June 13, 2012

Terjebak Akismet

Akismet, Akismet, Akismet.... Ternyata blogku terjebak ke kategori spam oleh akismet, mungkin terlalu sering kirim komentar, tapi tak apalah karena juga baru belajar. Semoga akismet baca postingan saya ini dan tidak mengkategorikan blogku sebagai spam lagi, disamping itu sudah ada usaha lain untuk keluar dari jebakan akismet dengan mengirim permintaan di blog akismet. Untuk teman teman yang komentar saya masuk di kategori spam tolong bantu ya mengingat blog saya buka spam.

Akismet

Monday, May 14, 2012

Antarmuka Blogger Baru

Antarmuka Blogger Baru kini memiliki tampilan yang diupdate, tampilan kali ini jauh berbeda dengan tampilan yang lama, mulai dari warna yang lebih cerah hingga statistik yang lebih baik.

Antarmuka Blogger Baru
Blogger
Kali ini terjadi banyak perubahan pada sisi penataan menu maupun penambahan fitur fitur baru. Menu seperti post, laman, komentar, tata letak, setelan, dll tidak lagi dipasang sejajar melainkan diganti model buka tutup yang menampilkan kesan lebih ringkas.

Ketika masuk salah satu menu maka tampilan akan berubah menjadi daftar yang terletak di sidebar kiri. Perubahan lain juga terjadi ketika akan menulis atau mengedit naskah artikel. Setelah entri pada menu tersebut kini berada dibagian samping kanan kolom naskah.

Kini pada semua postingan bisa diberi meta description berbeda, jadi tidak ada salahnya bila anda mencoba tampilan blogger baru. Selamat mencoba.

Friday, May 4, 2012

Update Pagerank Mei 2012

Update Pagerank Mei 2012 ternyata blog saya ini mendapat pagerank 1, meskipun mendapat pagerank 1 tetap semua harus disyukuri terlebih saya masih sering gonta ganti template, semoga update pagerank selanjutnya naik menjadi 2 bahkan 3 dan seterusnya. Terimakasih untuk teman teman yang telah berkenan mengunjungi blog ini.

Update Pagerank Mei 2012

Tuesday, May 1, 2012

Cara Daftar Bing

Bing adalah sebuah mesin pencari selain google, mendaftarkan blog di semua mesin pencari termasuk bing sangatlah penting,  berikut saya berbagi informasi tentang cara daftar bing.

Cara Daftar Bing
Sebelumnya anda harus mempunyai email di hotmail dulu, bagi yang belum punya silakan daftar. bila anda sudah punya email di hotmail maka ikuti langkah berikut:

1. silakan buka http://www.bing.com/toolbox/webmaster. maka akan muncul gambar seperti diatas.
2. Pilih menu webmaster tool sign in pada gambar diatas
Cara Daftar Bing Sign In

3. Masukkan ID dan Password anda
4. Selanjutnya anda akan masuk menu "preferences"

Cara Daftar Bing Preferences
5. Isikan data anda pada kolom diatas
6. Bila data telah diisi maka selanjutnya pilih "save"
7. Selanjutnya pilih "add site"

Cara Daftar Blog Add Site
8. Masukkan alamat blog anda seperti gambar diatas
9. Sehingga akan muncul "Verify Ownership"

Cara Daftar Bing Verify

10. Pilih option 2
11. Copy meta tag anda di menu html blog anda
12. Bila anda telah copy meta tag maka selanjutnya pilih tombol "verify"
13. Bila berhasil maka akan muncul gambar seperti dibawah ini

Daftar Bing
 14. Selesai