Tampilkan postingan dengan label Pemrograman. Tampilkan semua postingan
Tampilkan postingan dengan label Pemrograman. Tampilkan semua postingan

Kamis, 07 Juni 2018

Membuat Thumbnail Image Dengan PHP dan ImageMagick


Entah anda sekarang ini lagi bikin situs media sosial atatupun lagi bikin CMS; kode untuk membuat thumbnail harus anda ketahui. Thumbnail diperlukan untuk memberikan kesan power-text pada situs web, sehingga akan tampak lebih interaktif di mata penggunanya.

Untuk membuat thumbnail image dengan PHP, kita bisa memanfaatkan salah satu library pengolah grafis yang sudah banyak di-include di PHP. Library yang sudah umum dan biasanya digunakan untuk membuat thumbnail adalah GD dan ImageMagick.

Pada tulisan kali ini, kita akan membuat thumbnail di PHP dengan ImageMagick, karena ImageMagick lebih mudh dan sederhana jika dipilih untuk memproses gambar dalam resolusi besar menjadi berukuran thumbnail yang beresolusi lebih kecil.

Membuat thumbnail di PHP ataupun di bahasa pemrograman lainnya, sebenarnya prinsipnya sama saja. Thumbnail hanyalah bentuk gambar dalam resolusi kecil dan seragam. Artinya, thumbnail dihasilkan hanya dengan mengubah ukuran/resize gambar utama.

Masalahnya, gambar input yang harus dijadikan thumbnail umumnya memiliki rasio panjang x lebar yang tidak seragam. Sehingga, selain melakukan resize, gambar thumbnail yang akan dihasilkan sebelumnya harus di-crop dulu.

Algoritma untuk cropping simple kok. Ilustrasinya seperti gambar di bawah ini.

  Jika panjang (width) > tinggi (height), crop agar width = height. Offset pemotongan horisontal dihitung = (width - height) / 2.


Jika panjang (width) < tinggi (height), crop agar height = width. Offset pemotongan vertikal dihitung = (height - width) / 2.


function draw_thumbnail($file, $sz){
    $image = new Imagick($file);
    $w = $image->getImageWidth();
    $h = $image->getImageHeight();
    if($w > $h){
        $image->cropImage($h,$h,(($w-$h) / 2),0);
    } else if($w < $h){
        $image->cropImage($w,$w,0,(($h-$w) / 2));
    }
    $image->resizeImage($sz,$sz,Imagick::FILTER_LANCZOS,1);
    $image->setImageFormat('jpg');
    header('Content-type: image/jpg');
    echo $image;
}


Mudah sekali, kan? banyak programmer malah menggunakan library cuma untuk membuat thumbnail, padahal jika mau, kita hanya butuh beberapa baris kode di atas untuk melakukannya.

Contoh implementasi berikut akan memubuat thumbnail dari gambar contoh.png agar berukuran 50x50 px.

draw_thumbnail("/var/www/html/contoh.png",50);

Selamat mencoba...

Read more

Senin, 05 Maret 2018

Cara Menggunakan Git Untuk Pemula


Kalau kita ingin mengerjakan proyek secara berkelompok, wajib hukumnya mengetahui software version control system. Contoh dari software version control system adalah github, bitbucket, snowy evening, dan masih banyak lagi. Memang sih, kebanyakan sistem ini dipakai di lingkungan yang programmernya terpisah antara jarak dan waktu ---kayak aku dan kamu :3 --- . Tapi, sebagai programmer, coba deh sekali-kali untuk merasakan setidaknya sekali dalam hidup di dunia. Karena banyak manfaat yang akan didapat dengan git ini. Hehehe.

Git adalah version control system yang pada dasarnya digunakan para developer untuk mengembangkan software secara bersama-bersama. Git ini sebenernya memudahkan programmer untuk mengetahui perubahan source codenya daripada harus membuat file baru. Selain itu, dengan git kita tak perlu khawatir code yang kita kerjakan bentrok, karena setiap developer bisa membuat branch sebagai workspacenya.Fitur yang tak kalah keren lagi, pada git kita bisa memberi komentar pada source code yang telah ditambah/diubah, hal ini mempermudah developer lain untuk tahu  kendala apa yang dialami developer lain.

Dalam tulisan singkat ini, akan dibahas, bagaimana cara menggunakan perintah git.


Di Ubuntu dan Mint, Git bisa diinstall dengan apt-get install git. Di sebagian besar distro lain, nama package Git juga sama kok : git.

Sebagai eksperimen, pertama-tama, buat repository baru dari akun GitHub anda (jika ingin pakai github). Ikuti saja langkahnya.


Sekarang, mulai buat repository di local. Masuk ke folder di mana file proyek akan anda simpan dan ubah.

cd ~/Projects/JauraKernel

Remote : server yang menyimpan file proyek
Local : komputer milik sendiri


Lalu inisialisasi git untuk membuat konfigurasi repository baru atau menggunakan konfigurasi yang sudah ada pada folder proyek tersebut.

git init

Sekarang, kita harus menambah remote repository yang nantinya, semua file akan disinkronkan dengan isi folder proyek. Jika sebelumnya sudah, ini bisa dilewati.

Simpan info username dan email anda. Natinya, info ini akan disertakan saat anda melakukan commit. Gampangannya, commit itu istilah untuk mengatakan kalau kita sudah fix atau yakin untuk menyimpan proyek ke remote.

git config --global user.name "irvanherz"
git config --global user.email "irvan.herz@gmail.com


Lanjutkan dengan menambah link remote server Git yang kita pakai.

git remote add origin <server>


Jika anda menggunakan github, argumen server bisa diperoleh dari link fork ata download.

Nanti anda juga bisa melihat list remote repository dengan perintah

git remote -v

Sekarang, sinkronkan local repository dengan file dari remote repository.

git pull
atau
git merge <branchname>

Oke, sekarang buat file-file baru di local repository (komputer anda sendiri). Tentunya, harus di folder awal baru saya kita cd dan sudah diinisialisasikan konfigurasi git nya barusan.

Setelah selesai membuat proyek atau selesai membuat perubahan dari local repository(entah itu mengubah source, mengganti nama, menghapus file, ...); maka kita harus beritahu git dulu sebelum mulai menyinkronkannya ke remote repository. Cara termudahnya adalah dengan command

git add --all

Anda juga bisa menggunakan perintah git status, sebelum atau sesudah menuliskan command, untuk melihat detail perubahan di local repository. Apabila ternyata menyadari kesalahan saat melihat status keterangan file yang barusan di-add, kita bisa me-reset list tersebut juga:

git reset


Perintah sebelumnya, git add --all, digunakan untuk secara otomatis menambahkan semua file baru, file yang baru termodifikasi, info file yang terhapus dalam lokal. Ditambahkan kemana? ditambahkan ke daftar file yang siap commit dan disinkronkan ke remote repository. Jika anda hanya ingin mengirim salah satu file saja gunakan :

git add /path/to/file

Jika anda sudah yakin dan siap menyimpan perubahan ke remote, saat itulah anda melakukan commit. Commit tidak akan langsung mengirim ke remote, tapi perintah commit bisa diibaratkan seperti kontrak tertulis untuk pengiriman barang. Kontrak dan barang masih di depan kita sebelum kita menjalankan perintah push.

git commit -m "Commit message"

Proses pengiriman ke remote sebenarnya adalah saat perintah push dijalankan. Perintah push diketik sebagai berikut:

git push origin <branchname>

Kalau di guthub, sebenarnya repository kita akan memiliki satu buah branch utama, yaitu bernama "master".

Sampai di sini saja yang kita harus pelajari untuk membuat proyek yang sinkron dengan remote git server, ya.

Kalau sudah terbiasa dengan seluruh command di atas, nanti kita juga boleh mulai belajar mengenai project branch, terutama kalau yang mengerjakan project sudah mulai banyak. Setelah beberapa kali melakukan perubahan pada proyek, membuka branch baru bisa dilakukan. Saat kita membuat branch baru, ibaratnya proyek kita adalah buku, dan branch baru adalah salinannya yang sama persis. Keduanya bisa diubah secara terpisah tanpa mempengaruhi branch lain. Misalnya semenjak muncul si B, dia mau tulisannya beda sama si A, maunya pakai font Times New Roman. Kemudian, muncul si C, D, E sampai Z yang sukanya nulis. Mereka ada yang setuju sama konsep font si A dan beberapa setuju sama konsep si B. Semuanya bisa nulis.

Tapi, karena si A adalah koordinatornya, dia yang berhak menentukan bagaimana perkembangan proyek. Dua branch tersebut sama sama tumbuh bersama, halaman kedua buku semakin tebal meski isinya beda-beda. Di sini si A, berhak menggunakan tulisan dari branch B untuk digunakan ke branch A (utama), ataupun sebaliknya. Nanti dia juga berhak menentukan branch mana yang akan dirilis ke publik.
Read more

Rabu, 20 September 2017

Cara Membuat Syntax Highlighter Dengan PHP

Saya mulanya terinspirasi hilite.me, sebuah situs sederhana yang menawarkan online syntax highlighter. Mulailah saya menelusuri github dan google untuk mempermudah keinginan saya membuat situs serupa.


Daru upaya ini, saya menemukan Highlight.php dari github (link), sebuah script class PHP untuk mempermudah pembuatan online syntax highlighter. Menurut pemegang kendali project ini, highlight.php merupakan pengembangan dari kode proyek highlight.js (link) yang sudah ada sebelumnya.

Dengan memakai bantuan class milik highlight.php, membuat syntax highlighter dengan PHP menjadi sangat mudah. Bahkan saya sudah membuatnya dan menjalankannya sebagai salah satu tools milik Komputoo (http://tools.komputoo.pw).

Berikut ini contoh kode implementasi syntax highlighter yang saya copy dari highlight.php.

<?php
require_once("Highlight/Autoloader.php");
spl_autoload_register("Highlight\\Autoloader::load");

$hl = new Highlight\Highlighter();
$r = $hl->highlight("html", file_get_contents(__FILE__));

?>
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="styles/default.css">
    </head>
    <body>
        <pre><code class="hljs <?=$r->language?>"><?=$r->value?></code></pre>
    </body>
</html>

Yang paling pertama, kita harus meng-include source code Autoloader.php dan mendaftarkan autoload; agar bisa menggunakan class milik highlight.php.

require_once("Highlight/Autoloader.php");
spl_autoload_register("Highlight\\Autoloader::load");

Lalu buat objek highlight.php baru.

$hl = new Highlight\Highlighter();

Objek inilah yang bisa kita gunakan untuk melakukan syntax highlighting.

$r = $hl->highlight("<jenis syntax kode>", "<source code yang ingin di-highlight>");

Hasil dari proses highlight tersebut bisa diekstraksi dengan mudah.

$r->language --> jenis syntax yang barusan di-highlight
$r->value --> kode HTML yang sudah siap ditampilkan 

Sehingga, jika digabungkan...

<pre><code class="hljs <?=$r->language?>"><?=$r->value?></code></pre>

Selain mudah, highlight.php juga saya akui lengkap fiturnya. Saya bismemilih banyak sekali tema syntax yangsudah disediakan olehnya. Untuk menggunakan tema tersebut, janga lupa include CSS sebelum kode hasil di-plot.

<link rel="stylesheet" type="text/css" href="styles/default.css">

Anda bisa mengubah style default.css dengan style lain yang anda suka. Hasilnya, syntax highlighter online yang berhasil saya buat nampak seperti berikut (link demo).



Yap, sekian dulu tutorial singkat dari saya mengenai cara membuat syntax highlighter dengan PHP. Selamat mencoba :)
Read more

Jumat, 04 Agustus 2017

Membuat Autolike Facebook Dengan Python


Sedikit-sedikit minta jempol, kalau menghilang bakal diancam unfriend. Begitulah nasib menjadi jempoler sejati. Sungguh, begitu keras cobaannya. :v

Selama ini, kita harus membutuhkan pihak ketiga untuk dapat dengan mudahnya mengklik like status orang secara otomatis. Akan tetapi, sebuah ancaman besar tersembunyi di dalamnya. Bagaimanapun sistem autolike sama sekali tidak mengantongi izin dari pihak Facebook. Perlu diingat jug bahwa setiap pihak tersebut memerlukan email dan password anda untuk dapat menjalankan scriptnya.

Sama saja, kita memberikan akun kita secara cuma-cuma. Kalaupun selama beberapa hari akan aman, apakah anda yakin selamanya demikian? Coba pikir lagi! Jika seorang teman tahu ini, ia bisa saja memanfaatkan keadaan. Pihak ketiga yang tak bertanggung jawab berpeluang memberikan data login anda dengan tebusan uang kepada teman anda.

Tidak ingin kan, hal seperti itu terjadi?
Maka dari itu, saya mencoba berinisiatif melakukan eksperimen dalam menciptakan program autolike sederhana dengan python.

Kasarnya, semua aktivitas browsing kita akan dikerjakan melalui HTTP request, bisa dalam bentuk metode POST atau GET. Sama halnya dengan saat login FB dan me-like salah satu status teman.

Login
utolike akan lebih mudah diimplementasikan dengan akses FB mobile daripada desktop. Pada lingkungan mobile, proses login tersebut terjadi pada https://m.facebook.com/login.php dengan metode POST yang berisi data login dan kode rahasia facebook. Untuk memperoleh kode rahasia ini, kita harus membuka halaman login facebook di home page (dalam keadaan belum login).

Setelah itu, data login dikombinasikan bersama kode rahasia untuk dikirim dalam proses login. Singkatnya, proses ini dilakukan sebagai berikut:
- GET https://m.facebook.com
- Simpan kode rahasia
- Tambahkan kode rahasia dengan data login berupa email + password
- POST kombinasi ke https://m.facebook.com/login.php

Semua HTTP request ini akan mudah dilakukan dengan menginstall library BeautifulSoup 4 (bs4).

print("Logging in...")
loginpage = ""session = requests.session()
headers = requests.utils.default_headers()
headers.update({'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20120101 Firefox/33.0'})
loginpage = session.get("https://m.facebook.com/").content
soup = BeautifulSoup(loginpage,"html.parser")

logindata = {}
for i in soup.select('#login_form input'):
    nam = i.get('name')
    val = i.get('value')
    logindata[nam] = val;

logindata['email'] = email
logindata['pass'] = password
respon = session.post('https://m.facebook.com/login.php',data = logindata);

if(str(respon.url).find('m.facebook.com/home.php') == -1):
    print ('Login error! Please try again.')
    exit(0)
print ('Login OK')

Autolike
Semua tombol like di facebook memiliki kode HTML anchor ( <a> ) dengan atribut href berawalan /a/like.php. Setiap saat kita mengklik link tersebut, yang terjadi adalah browser melakukan request GET ke link tersebut. Saat semua link telah diklik, biasanya kita akan melihat status lain dengan mengklik Load More Stories/Lihat Berita Lain. Link dari tombol tersebut bisa dicari dengan melakukan scan link anchor. Apabila terkandung  __m_log_async dan /stories.php maka itulah yang harus diproses.

NB : Sayangnya, bagian ini sering kali berubah. Sehingga harus sering-sering pantau kandungan HTML laman facebook melalui fitur inspect element pada web browser.

maxliked = int(input("Enter maximum number of post to like : "))
print("Maximum like has been set to " + str(maxliked))
while (maxliked > 0):
    page = respon.content
    soup = BeautifulSoup(page,"html.parser")
    for a in soup.select('a'):
        href = a.get('href')
        if (href.find('/a/like.php') == 0):
            session.get('https://m.facebook.com' + href)
            maxliked = maxliked - 1            print("Liked a post (" + str(maxliked) + " Remaining)" )
        if (href.find('__m_log_async') != -1) and (href.find('/stories.php') != -1) and (href.find('tab=h_nor') != -1):
            nextlink = href
            #print(nextlink)    print("Reloading...")
    respon = session.get('https://m.facebook.com' + nextlink);
print("Task OK");


Full Code
Langsung saja, bagiyang ingin icipp-icip, comot saja kodenya...

import requests
from bs4 import BeautifulSoup


print("Komputoo's DIY autoliker")
print("Copyright (c) 2017 By Irvan")
print("Please enter login informations below (Don't worry, we promise to never mess with it.)")
email = input("Enter email : ")
password = input("Enter password : ")

print("Logging in...")
loginpage = ""session = requests.session()
headers = requests.utils.default_headers()
headers.update({'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20120101 Firefox/33.0'})
loginpage = session.get("https://m.facebook.com/").content
soup = BeautifulSoup(loginpage,"html.parser")

logindata = {}
for i in soup.select('#login_form input'):
    nam = i.get('name')
    val = i.get('value')
    logindata[nam] = val;

logindata['email'] = email
logindata['pass'] = password
respon = session.post('https://m.facebook.com/login.php',data = logindata);

if(str(respon.url).find('m.facebook.com/home.php') == -1):
    print ('Login error! Please try again.')
    exit(0)
print ('Login OK')
 
maxliked = int(input("Enter maximum number of post to like : "))
print("Maximum like has been set to " + str(maxliked))
while (maxliked > 0):
    page = respon.content
    soup = BeautifulSoup(page,"html.parser")
    for a in soup.select('a'):
        href = a.get('href')
        if (href.find('/a/like.php') == 0):
            session.get('https://m.facebook.com' + href)
            maxliked = maxliked - 1            print("Liked a post (" + str(maxliked) + " Remaining)" )
        if (href.find('__m_log_async') != -1) and (href.find('/stories.php') != -1) and (href.find('tab=h_nor') != -1):
            nextlink = href
            #print(nextlink)    print("Reloading...")
    respon = session.get('https://m.facebook.com' + nextlink);
print("Task OK");

Selamat mencoba :)
Read more

Rabu, 21 Juni 2017

Software Untuk Belajar C / C++

Bahasa pemrograman C dan C++ telah hadir dari generasi ke generasi. Kehandalannya sudah tidak diragukan lagi. Kegunaannya meluas dari yang awalnya sebatas desktop programming, merambah hingga platform mobile, embedded-device hingga mikrokontroler. Itu mengapa bahasa ini tetap eksis sampai sekarang.

Untuk membuat program dengan bahasa C, sebenarnya kita tidak butuh software macam-macam. Cukup compiler, linker dan sebuah editor teks. Tapi, jika cuma begitu pemrograman akan terasa membosankan. Kita perlu software IDE (Integrated Development Environment) untuk membantu kita.

Biasanya IDE menyediakan syntax highlighting, sehingga memudahkan kita dalam membaca kode. Bukan hanya itu, IDE secara otomatis mengintegrasikan program dengan compiler yang akan digunakan, lupakan compile dengan terminal/command line, cukup klik sini dan klik sana dari IDE untuk mengompile kode dan me-link objek menjadi program.

Berikut adalah daftar software IDE yang bisa kita gunakan untuk mempelajari C/C++.

1. Codeblocks
Software ini saya lihat cukup populer di grup pemrograman C. Tampilannya sederhana, namun dengan fitur dan plugin lengkap, sngat cocok untuk yang baru mulai belajar. Yang membuatnya lebih mantap, Codeblocks juga tersedia untuk platform Linux.



2. Codelite
Yang satu ini adalah favorit saya. Fitur dan pluginnya lengkap dibanding Codeblocks. Selain bagus untuk pemrograman C/C++, Codelite juga bisa digunakan sebagai IDE pemrograman PHP dan Node.js. Kalau dari perspektif saya, tampilan Codelite lebih user-friendly dibanding Codeblocks. Kabar baiknya, Codelite juga tersedia untuk Linux, sama seperti Codeblocks.


3. Pelles C
Kalau kalian cuma ingin belajar C saja, tanpa C++, Pelles C juga cukup bagus. Ukurannya kecil dibanding IDE lain. Tampilannya lumayan memadahi dan bebas lemot.

4. Visual C++
Bagi yang serius belajar C/C++ di Windows, Visual C++ bisa menjadi pilihan paling tepat. Fitur software ini adalah yang paling lengkap diantara yang lain. Tidak mengherankan, karena pengembangannya disupport oleh perusahaan kelas kakap, yakni Microsoft.


5. C++ Builder
Tidak kalah dengan Visual C++, C++ builder juga dipersembahkan dengan rapi oleh Borland. Kini diakuisisi oleh Embarcadero. Fiturnya juga mantap, selevel dengan Visual C++. IDE ini sangat cocok bagia kalian yang mulai fokus menggarap project C++ berbasis GUI. Meski Visual C++ juga menyediakan RAD tool untuk desain GUI, RAD tool yang ada di C++ builder jauh lebih mudah digunakan.


Lainnya?
Ada juga IDE lain yang belum pernh dicoba sepenuhnya oleh penulis. Jika ingin mencobanya, silahkan saja. Namun penulis sama sekali tidak merekomendasikan. Apalagi list software berikutnya ini belum banyak dipakai di lingkungan programmer Indonesia.

6. Geany
7. Eclipse CDT
8. Netbeans
9. JetBrains CLion
10. GNAT Programming Studio
11. Qt Creator

Ada yang punya saran IDE lain?
Jika tidak, demikianlah artikel singkat mengenai kumpulan software untuk belajar C / C++. Mudah-mudahan kedepannya artikel ini dapat memberikan manfaat bagi pembaca. Sekian, terima kasih sudah berkunjung.
Read more

Selasa, 20 Juni 2017

Link Download Visual Studio Versi Lama (2008, 2010, 2012, 2013, 2015)


Microsoft sangat peduli dengan perkembangan teknologi dunia. Ini dibuktikan dengan adanya produk Visual Studio yang telah dihadirkan secara rutin. Bahkan tersedia pula versi Community Edition yang bisa diperoleh secara gratis.

Programmer yang masih awam dengan visual studio biasanya akan langsung mengunduh Visual Studio versi terbaru. Padahal belum tentu sesuai dengan spesifikasi laptop yang sedang digunakan. Kalaupun cocok, biasanya program berjalan lebih lambat. Mungkin dengan versi yang lebih jadul, lemot ini bisa diatasi. Tapi, dimana kita bisa memperoleh visual studio versi lama? Jawabannya ada di program Visual Studio Dev Essentials.

Agar dapat mengakses program Visual Studio Dev Essentials tersebut, kita cukup harus mendaftarkan diri sebagai subscriber (LINK DAFTAR).


Bukan hanya Visual Studio, di sini kita bisa memperoleh berbagai macam tool yang berkenaan dengan kebutuhan developer. Dengan memiliki akun tersebut, kita bukan hanya bisa memperoleh tools versi terbaru, tapi juga versi terdahulu yang masih diberi dukungan oleh pihak Microsoft.

Yuk, tunggu apa lagi. Segera daftar sebaga subscriber, guys.

Read more

Sabtu, 17 Juni 2017

Perbedaan Type Data INT dan LONG di C / C++

Tipe data kadang harus dipilih dengan benar agar, efisiensi memori dapat tercapai. Pemilihannya tergantung pada kemungkinan nilai terkecil dan terbesar yang akan muncul saat program berjalan / runtime.

Sementara itu, bahasa C memiliki beberapa tipe data standar untuk menyimpan bilangan berjenis integer / bilangan bulat.

TypeStorage sizeValue range
char1 byte-128 to 127 or 0 to 255
unsigned char1 byte0 to 255
signed char1 byte-128 to 127
int4 bytes-2,147,483,648 to 2,147,483,647
unsigned int2 or 4 bytes0 to 65,535 or 0 to 4,294,967,295
short2 bytes-32,768 to 32,767
unsigned short2 bytes0 to 65,535
long4 bytes-2,147,483,648 to 2,147,483,647
unsigned long4 bytes0 to 4,294,967,295
Sumber : https://www.tutorialspoint.com/cprogramming/c_data_types.htm

Tidak ada yang aneh dengan semua tipe data pada tabel di atas, kecuali INT dan LONG yang memiliki ukuran penyimpanan sama (4 bytes). Anehnya lagi, referensi juga bisa mengatakan bahwa INT bisa berukuran serupa SHORT (2 byte). Bagaimana? dan; Mengapa?

Mengenai keanehan kedua, tidak perlu dikhawatirkan lagi. Ukuran INT hanya 2 byte saat masih banyak prosesor 16-bit bertebaran. Sementara sekarang, 32-bit kian menguasai pasar, sehingga hampir dapat dipastikan bahwa INT selalu berukuran 4 byte.

Sebenarnya, dari semua type data di atas; ketentuan value range merupakan ketentuan yang di atur oleh standarisasi C. Meski pada umumnya INT berukuran 4 byte di prosesor 32-bit, ukurannya bisa berbeda jika program dicompile dengan compiler atau arsitektur prosesor lain. Misalnya, banyak yang mengatakan INT dapat menampung data antara -2,147,483,648 hingga 2,147,483,647. Namun itu bukan berarti INT selalu berukuran 4 byte. Compiler bisa memilih 4 byte, 8 byte, bahkan 16 byte; selama mungkin dilakukan dan ukuran byte tersebut mampu menampung data antara  -2,147,483,648 hingga 2,147,483,647.

Pernyataan di atas semakin diperkuan dengan referensi yang penulis peroleh dari Wikipedia; bahwa, ukuran byte dari tipe data dapat bervariasi pada implementasinya. Jadi, hati-hati saat menggunakan tipe data antara INT dan LONG. Menurut standarisasi bahasa C, keduanya dianjurkan agar dapat menampung data antara -2,147,483,648 hingga 2,147,483,647. Sehingga umumnya variabel ini sama-sama berukuran 4-byte. Namun, kadang tipe LONG bisa berukuran 4 byte saat program dicompile pada prosesor 64-bit.

Sebagai contoh kasus, saya menemukan referensinya dari sini, katanya :
For 32-bit systems, the 'de facto' standard is ILP32 — that is, int, long and pointer are all 32-bit quantities.

For 64-bit systems, the primary Unix 'de facto' standard is LP64 — long and pointer are 64-bit (but int is 32-bit). The Windows 64-bit standard is LLP64 — long long and pointer are 64-bit (but long and int are both 32-bit).

Lalu apa?
Saran dari saya, jika anda sangat mementingkan efisiensi penyimpanan data dan anda ingin menyimpan data antara -2,147,483,648 hingga 2,147,483,647; gunakan tipe INT, karena secara umum implementasinya selalu menggunakan variabel berukuran 4 byte.

Apa pentingnya?
Anda mungkin belum menduga betapa pentingnya hal ini. Beberapa project yang saya kerjakan adalah poject open source, tentu saja harus ada jaminan kode ini bisa dicompile rang lain. Beberapa implementasi kode harus mengikuti dokumen standar yang telah ditetapkan. Seringnya, dokumen mengatakan secara implisit bahwa tipe data yang harus digunakan berukuran 4 byte. Nah, jika menemukan hal demikian INT adalah yang sesuai untuk dipakai, karena meski ukuran LONG di compiler saya 4 byte, ukurannya bisa berlainan di komputer atau compiler lain.

Read more