Optimasi Gambar
Sebagai developer, terutama web developer, load time dari satu halaman adalah penting, karena ini bisa dijadikan acuan apakah user akan tetap di web kita atau pergi karena load time website kita yang lama.
Beberapa cara yang digunakan untuk mengurangi load time antara lain dengan browser cache, konfigurasi di webserver, mungkin juga menggunakan proxy cache, dan lainnya, dari banyak hal yang bisa dilakukan salah satunya adalah optimasi gambar, karena file gambar bisa sangat menyita waktu untuk loading, apalagi jika website anda mengandalkan media gambar sebagai alat komunikasi, misalkan e-commerce.
Beberapa pilihan alat untuk mengompress gambar, bisa untuk desktop maupun CLI, untuk command line, saya menggunakan jpegoptim
dan pngout
sebagai tools untuk mengompress file gambar.
Saya menggunakan ubuntu 14.04 LTS sebagai base dari sistem operasi server
$ sudo apt-get install jpegoptim pngout
menjalankan perintah $ jpegoptim file.jpg
, hal ini akan mengompress file gambar dengan menghilangkan info-info yang tidak dibutuhkan seperti comment di exif, atau informasi lain yang menambah berat satu file.
Anda juga bisa menjalankan perintah jpegoptim
agar bisa secara masif mengompress file dengan perintah
$ find . -type f -name "*.jpg" -exec jpegoptim -m90 --strip-all --all-progressive {} \;
Untuk perintah di atas, itu akan mencari file .jpg
sampai ke dalam folder secara recursive, Opsi .
di atas menunjukkan working directory yang sedang anda gunakan, jika hendak mengarahkan ke folder yang lain bisa ditulis PATH
-nya, seperti perintah di bawah.
$ find /path/ke/gambar/ -type f -name "*.jpg" -exec jpegoptim -m90 --strip-all --all-progressive {} \;
Opsi yang digunakan adalah -m90
artinya menggunakan kualitas 90, --strip-all
menghilangkan informasi exif yang tidak terpakai, dan --all-progressive
opsi ini untuk menjadikan gambar itu progressive mode.
Output:
/path/ke/file_gambar.jpg 100x150 24bit N JFIF [OK] 2706 --> 2580 bytes (4.66%), optimized.
note: terkadang ada kasus dimana file anda akan hilang permission code-nya, dan tidak bisa diakses oleh borwser, ini bisa diakali dengan menambahkan perintah seperti berikut
find . -type f -name "*.jpg" -exec jpegoptim -m90 --strip-all --all-progressive {} \; -exec chmod 677 {} \;
dengan cara di atas, anda mengembalikan permission file agar bisa dibaca oleh webserver dan akhirnya ditampilkan ke browser.
Read more →
Tag:
development
Issue #4
News
-
DROWN Attack
-
Ravendb passed half a million downloads
-
Google Releases Cloud Processor For Hadoop, Spark
-
Introducing Autotrack for analytics.js
-
Ansiblefest London 2016
-
What’s New in jQuery 3
-
Google Preps Angular 2 for Final Release
-
Ember.js 2.4 released
Opinion
-
Is DevOps the Holy Grail for information security?
-
We Hire the Best, Just Like Everyone Else
-
Too Sensitive
-
Performance of ES6 features relative to the ES5 baseline operations per second
Tutorial
-
How To Deploy Software
-
Building a Streaming Search Platform
-
MySQL Load Balancing with HAProxy
-
Graphing MySQL performance with Prometheus and Grafana
-
How CloudStats.me moved to clustered MariaDB for high availability
-
Easy Docker on OS X
-
How to Organize Complex Design Projects
-
Server-Side Rendering With React, Node And Express
-
JavaScript Frameworks in 2016
-
Why (and how to) Redis with your MongoDB
Tools
-
Rosie
-
Five Online Database Modelling Services
-
Enzyme: JavaScript Testing utilities for React
-
56 Configurable React Stateless Functional UI Components
-
RQLite
follow on twitter @JakartaDev
Read more →
Tags:
issue,
development
Daily Digest #4
- DROWN Attack
- Ravendb passed half a million downloads
- Google Releases Cloud Processor For Hadoop, Spark
- Introducing Autotrack for analytics.js
- Ansiblefest London 2016
- What’s New in jQuery 3
- Google Preps Angular 2 for Final Release
- Ember.js 2.4 released
- Is DevOps the Holy Grail for information security?
- We Hire the Best, Just Like Everyone Else
- Too Sensitive
- Performance of ES6 features relative to the ES5 baseline operations per second
- How To Deploy Software
- Building a Streaming Search Platform
- MySQL Load Balancing with HAProxy
- Graphing MySQL performance with Prometheus and Grafana
- How CloudStats.me moved to clustered MariaDB for high availability
- Easy Docker on OS X
- How to Organize Complex Design Projects
- Server-Side Rendering With React, Node And Express
- JavaScript Frameworks in 2016
- Rosie
- Five Online Database Modelling Services
- Enzyme: JavaScript Testing utilities for React
- 56 Configurable React Stateless Functional UI Components
- RQLite
Tags:
daily,
development
Issue #3
News
-
The State of Microservices Today
Microservices state saat ini, perusahaan yang mengadopsi konsep ini dari Google, Twitter, Github, bagaimana perusahaaan-perusahaan tersebut mengimplementasikannya di organisasinya.
-
Google Starts Highlighting AMP Pages In Its Mobile Search Results
Accelerated Mobile Page atau AMP adalah project kolaborasi dari banyak perusahaan untuk bisa menampilkan halaman web dengan cepat, tetapi juga ramah dengan iklan, Wordpress sudah mendukung inisitif ini. Pelajari lebih lanjut mengenai AMP ini.
-
NodeJS 5.7.0 stable dirilis
menambahkan fitur baru, bug fix dan juga improvement di performance
-
Xamarin bergabung dengan Microsoft
Big news, Xamarin sebagai platform untuk membuat mobile apps terutama dan bisa cross platform.
-
Github development style
Artikel yang dipublish desember, tapi masih sangat relevan, bagaimana Github melakukan proses developmentnya.
Opini
-
PostgreSQL 9.6 - Part 1 - Horizontal Scalability
Benchmark PostgreSQL 9.6 dan beberapa test lainnya, artikel ini dibagi dalam 4 bagian, dan ini adalah bagian yang pertama.
-
Apache Kafka + ElasticSearch
-
9 things every reactjs beginner should know
Hal yang perlu diketahui oleh developer yang menggunakan Reactjs dalam projectnya, terutama untuk pemula yang baru mengadopsi Reactjs dalam projectnya.
-
5 reasons meteor ideal for startup
5 Alasan kenapa Meteor cocok untuk yang baru memulai aplikasi web, selain karena development dengan menggunakan Meteor bisa sangat cepat, dan beberapa alasana lainnya.
-
All things DevOps dan bagaimana konsep itu mempengaruhi satu organinasi
Suatu organisi dan elemen yang didalamnya bisa melihat Devops ini bisa mempengaruhi (dalam arti baik) suatu keputusan, dari product development, testing, deployment dan efek lain dalam satu bisnis.
Baru setahunan ini saya mengadopsi Devops, dan memang dirasakan semua berjalan lebih cepat, interaksi antara Infrastructure dan development juga operation menjadi tipis -
The Product Managers’ Guide to Continuous Delivery and DevOps
Satu sisi lain melihat CI dan Devops untuk product manager
Tutorial
-
Bagaimana mengamankan Ubuntu 14.04
-
redis untuk storage php session
-
Understanding Javascript async
-
Building blog app dengan menggunakan React
-
5 Steps learning React app
-
Learn the Kubernetes concept in 10 minutes
-
Security Guide: How to Protect Your Infrastructure Against the Basic Attacker
Tools
-
Maltrail: Malicious traffic detection system
-
Kahlan: Unit/BDD PHP Test Framework for Freedom, Truth, and Justice
-
Logatim: An isomorphic logger which implements log levels and ANSI 16 styles.
-
Teletraan: Deploy system at Pinterest
-
Rutil: tools for dump/restore/query Redis
follow on twitter @JakartaDev
Read more →
Tags:
issue,
development
Daily Digest #3
- The State of Microservices Today Microservices state saat ini, perusahaan yang mengadopsi konsep ini dari Google, Twitter, Github, bagaimana perusahaaan-perusahaan tersebut mengimplementasikannya di organisasinya.
- Google Starts Highlighting AMP Pages In Its Mobile Search Results Accelerated Mobile Page atau AMP adalah project kolaborasi dari banyak perusahaan untuk bisa menampilkan halaman web dengan cepat, tetapi juga ramah dengan iklan, Wordpress sudah mendukung inisitif ini. Pelajari lebih lanjut mengenai AMP ini.
- NodeJS 5.7.0 stable dirilis menambahkan fitur baru, bug fix dan juga improvement di performance
- Xamarin bergabung dengan Microsoft Big news, Xamarin sebagai platform untuk membuat mobile apps terutama dan bisa cross platform.
- Github development style Artikel yang dipublish desember, tapi masih sangat relevan, bagaimana Github melakukan proses developmentnya.
- PostgreSQL 9.6 - Part 1 - Horizontal Scalability Benchmark PostgreSQL 9.6 dan beberapa test lainnya, artikel ini dibagi dalam 4 bagian, dan ini adalah bagian yang pertama.
- Apache Kafka + ElasticSearch
- 9 things every reactjs beginner should know Hal yang perlu diketahui oleh developer yang menggunakan Reactjs dalam projectnya, terutama untuk pemula yang baru mengadopsi Reactjs dalam projectnya.
- 5 reasons meteor ideal for startup 5 Alasan kenapa Meteor cocok untuk yang baru memulai aplikasi web, selain karena development dengan menggunakan Meteor bisa sangat cepat, dan beberapa alasana lainnya.
- All things DevOps dan bagaimana konsep itu mempengaruhi satu organinasi
Suatu organisi dan elemen yang didalamnya bisa melihat Devops ini bisa mempengaruhi (dalam arti baik) suatu keputusan, dari product development, testing, deployment dan efek lain dalam satu bisnis.
Baru setahunan ini saya mengadopsi Devops, dan memang dirasakan semua berjalan lebih cepat, interaksi antara Infrastructure dan development juga operation menjadi tipis - The Product Managers’ Guide to Continuous Delivery and DevOps Satu sisi lain melihat CI dan Devops untuk product manager
- Bagaimana mengamankan Ubuntu 14.04
- redis untuk storage php session
- Understanding Javascript async
- Building blog app dengan menggunakan React
- 5 Steps learning React app
- Learn the Kubernetes concept in 10 minutes
-
Security Guide: How to Protect Your Infrastructure Against the Basic Attacker
- Maltrail: Malicious traffic detection system
- Kahlan: Unit/BDD PHP Test Framework for Freedom, Truth, and Justice
- Logatim: An isomorphic logger which implements log levels and ANSI 16 styles.
- Teletraan: Deploy system at Pinterest
- Rutil: tools for dump/restore/query Redis
follow on twitter @JakartaDev
Read more →
Tags:
daily,
development
Manajemen API dengan Kong part 1
Anda sudah mempublish API anda untuk digunakan oleh Developer lain? saatnya untuk mengatur API yang telah anda buat. Seperti yang biasanya terjadi, untuk mengakses resource API ini sudah pasti diperlukan beberapa penambahan baik dari sisi security ataupun dari scalability. Disitulah Kong bisa dijadikan solusi untuk anda dalam mengatur API yang telah anda develop.
Di sini akan dilakukan pendekatan instalasi Kong dengan menggunakan Vagrant sebagai box development.
Jika belum mengenal Vagrant, silakan kunjungi situs mereka, pada dasarnya vagrant adalah wrapper yang bisa digunakan untuk membuat dan mengatur image VM. dan kalo sudah, ambil salah satu .box vagrant yang bisa digunakan di sini, kalo berminat membuatnya, bisa baca artikel ini (shameless plug).
memulai vagrant
Jika sudah memiliki vagrantbox, dan sudah diimport, loncat ke paragraf berikutnya, jika belum, lakukan perintah berikut.
$ vagrant box add ubuntu14 /path/to/vagrant_image.box
lakuan pengecekan
$ vagrant boxt list
jika sudah ada di box list, clone repo kong
-
clone Kong repo
$ git clone https://github.com/Mashape/kong
-
clone vagrant Kong repo
$ git clone https://github.com/Mashape/kong-vagrant
$ cd kong-vagrant
-
jalankan vagrant karena jika menjalankan vagrant dengan langsung mendownload dari repo vagrant akan sangat menyita waktu, jadi disarankan anda mendownload box terlebih dahulu dan menambahkannya ke box list vagrant local anda. di folder
kong-vagrant
, edit file Vagrantfile line32
,33
, ubah dengan nama vagrant box yang sudah anda assign.config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
menjadi misalkan
config.vm.box = "ubuntu14"
config.vm.box_url = ""
ini tidak perlu lagi ditambahkan, karena sudah melakukan vagrant box add sebelumnya.
simpan, lalu jalankan
$ vagrant up
vagrant akan meng-import box dan memulai booting VM, dan vagrant juga akan menjalankan provosioning script yang ada, dan juga akan melakuan instalasi kong dengan otomatis karena mengacu pada path
../kong
yang sebelumnya telah kita clone dari repo.jika selesai instalasi akan menampilkan log seperti ini,
-
Jalankan service
$ vagrant ssh
VM-$ kong [start | reload | stop]
Kong akan berjalan di http, dengan port
:8000
untuk proxy layer, dan port:8001
untuk ReSTful Admin API config.test service dengan perintah
$ curl http://localhost:8000
Tags:
api,
article,
microservice