Command Pertama Setelah Install MySQL di Docker

Menginstall MySQL di docker hasilnya akan sedikit berbeda jika dibandingkan dengan menginstall langsung di OS (Linux) biasa. Biasanya kalau kita menginstall MySQL di docker kita tidak akan menemukan file service, sehingga mengharuskan kita untuk menjalankan service secara manual.

1. Config

sudo mysql_install_db –user=mysql –basedir=/usr/ –ldata=/var/lib/mysql/

2. Runing

sudo mysqld_safe &

AngularJS vs SEO

Sudah lama sebenarnya menyelesaikan masalah  ini baru sempat untuk menulis hari ini. Intinya adalah ketika robot index berkunjung ke website kita,  nginx meredirect ke server Panthomjs. Panthomjs akan me-render secara sempurna html dan memberikan ke robot index.

Configuration di nginx  nginx.conf:

location / {
  try_files $uri @prerender;
}

location @prerender {
 set $prerender 0;
 if ($http_user_agent ~* "baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator") {
  set $prerender 1;
 }
 if ($args ~ "_escaped_fragment_") {
  set $prerender 1;
 }
 if ($http_user_agent ~ "Prerender") {
  set $prerender 0;
 }
 if ($uri ~ "\.(js|css|xml|less|png|jpg|jpeg|gif|pdf|doc|txt|ico|rss|zip|mp3|rar|exe|wmv|doc|avi|ppt|mpg|mpeg|tif|wav|mov|psd|ai|xls|mp4|m4a|swf|dat|dmg|iso|flv|m4v|torrent|ttf|woff)") {
  set $prerender 0;
 }
 if ($prerender = 1) {
  set $prerender "127.0.0.1:8888";
  proxy_pass http://$prerender$request_uri;
 }
 if ($prerender = 0) {
  rewrite .* /index.html break;
 }
}

 

Script phantomjs render.js :

var system = require('system');

if (system.args.length < 3) {
    console.log("Missing arguments.");
    phantom.exit();
}

var server = require('webserver').create();
var port = parseInt(system.args[1]);
var urlPrefix = system.args[2];

var parse_qs = function(s) {
    var queryString = {};
    var a = document.createElement("a");
    a.href = s;
    a.search.replace(
        new RegExp("([^?=&]+)(=([^&]*))?", "g"),
        function($0, $1, $2, $3) { queryString[$1] = $3; }
    );
    return queryString;
};

var renderHtml = function(url, cb) {
    var page = require('webpage').create();
    page.settings.loadImages = false;
    page.settings.localToRemoteUrlAccessEnabled = true;
    page.onCallback = function() {
        cb(page.content);
        page.close();
    };
//    page.onConsoleMessage = function(msg, lineNum, sourceId) {
//        console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
//    };
    page.onInitialized = function() {
       page.evaluate(function() {
            setTimeout(function() {
                window.callPhantom();
            }, 10000);
        });
    };
    page.open(url);
};

server.listen(port, function (request, response) {
    var route = parse_qs(request.url)._escaped_fragment_;
    var url = urlPrefix
      + request.url.slice(1, request.url.indexOf('?'))
      + '#!' + decodeURIComponent(route);
    renderHtml(url, function(html) {
        response.statusCode = 200;
        response.write(html);
        response.close();
    });
});

console.log('Listening on ' + port + '...');
console.log('Press Ctrl+C to stop.');


Bekerja Benar Tidak Sekedar Bekerja

Bentuk-Tim-Kerja

Oleh Rene Suhardono

Bekerja benar tidak sekedar bekerja , tetapi dalam rangka berproses untuk memuncuklan karya.

Unjuk Karya bukan semata unjuk kerja, apalagi hanya unjuk rasa, Dan modalnya adalah 4 kartu AS dalam tumpukan kartu kehidupan, Yaitu :

Pertama, Kerja Iklas, bekerja bukan sekedar bertransaksi untuk memperoleh hasil , tetapi atas dasar mengambil peran menjadikan diri, orang lain , dan kehidupan jadi sedikit leboh baik.

Kedua, Kerja Tangkas, bekerja dengan sigap , tangkas dan cermat. Bukan sekedar bekerja mengerjakan hal yang sama sesuai intruksi, tetapi senantiasa mencari cara untuk menjadikan segala sesuatu libih cepat, tepat dan baik.

Ketiga, Kerja cerdas, Bekerja mengkombinasikan pemahaman taktis dan strategis. Bukan sekedar mengejar Output, tetapi juga impact bahkan makna.

Last but not the least, Kerja keras, Bekerja dengan mencurahkan seluruh kemampuan jiwa dan raga, tetapi tetap mengukur kemampuan tubuh,Kenapa ? karena dalam tubuh tetap punya hak atas segenap instrument dalam tubuh ini.

Jadi mana yang terbaik ?

Rupanya melalui diskusi tadi bukan hanya sekedar memilih salah satu, tetapi dengan memadukan keempatnya. Hanya dengan kombinasi kerja ikhlas, kerja tangkas, kerja cerdas dan kerja keras, dalam waktunya, akan mencapai tahap kepiawaian(mastery) dan pada saat yang sama hasil yang dimunculkan akan mengandung makna(meaning), itulah KARYA atau konsekuensi dan kerja benar.

Ada ilustrasi menarik tentang hal tersebut diatas : Apabila kita digaji 5 juta, tetapi berkarya seperti orang digaji 100 juta(demi keasyikan memunculkan karya), pemiliknya dan semesta akan membayar kelebihan berupa karir yang melejit, kesehatan prima, keluarga sejahtera dan keturunan yang cerdas.

Namun jika bergaji  5 juta, tetapi berkarya seperti orang digaji 1 Juta(tanpa niat dan keasyikan), walaupin pemilik tidak tahu atau tidak peduli, semesta dan penciptanya akan menuntut sisanya dengan penyakit, kesulitan, utang dan beragam masalah lain. Itulah hokum keseimbangan alam.

Jadi bekerjalah maksimal, padukan kepiawaian dan kebermaknaan agar karya senantiasa tercipta.Lalu ikhlaskan, yakinkan dengan semesta dan Sang Pencipta, selanjutnya perhatikan segala hal .

Orang biasa hanya mampu berkeluh kesah, Orang luarbiasa demi berkarya siap berpeluh basah!

Bila tak tahan lelahnya berkarya bersiaplah menghadapi perihnya ketidakberdayaan.

Dengan passion kita berdaya, berkarya dan bahagia.

Tanpa passion kita hanya akan mengalami ketiadaan dan ketidakberdayaan.

 

Error JBOSS Timeout after 300 And Operation roll back

Error diatas terjadi jika proses deployment atau  application run di JBoss terlalu lama dan melebihi batas waktu default dari jboss yaitu 300 detik.

Problem saya diatas terjadi ketika mau menjalankan aplikasi backend, karena memang cukup banyak sql command yang harus dijalankan untuk mengisi master data. :P

Berikut ini adalah tambahan configurasi yang saya lakukan agar error di atas tidak muncul lagi.

Program Argument

-mp "D:/Source/jboss-eap-6.4/modules" -jaxpmodule javax.xml.jaxp-provider org.jboss.as.standalone 
-b localhost --server-config=standalone.xml -Djboss.server.base.dir=D:\Source\jboss-eap-6.4\standalone 
-Djboss.as.management.blocking.timeout=1200 

VM Argument

"-Dprogram.name=JBossTools: JBoss Enterprise Application Platform 6.1+" -server -Xms1024m -Xmx1024m 
-XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true -Djava.net.preferIPv4Stack=true 
-Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 
-Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true "
-Dorg.jboss.boot.log.file=D:/Source/jboss-eap-6.4/standalone/log/boot.log" 
"-Dlogging.configuration=file:/D:/Source/jboss-eap-6.4/standalone/configuration/logging.properties" 
"-Djboss.home.dir=D:/Source/jboss-eap-6.4" -Dorg.jboss.logmanager.nocolor=true 
-Djboss.bind.address.management=localhost 

Good Luck :)

Web Accelerator using Squid Proxy

Humm sudah lama gak update blog huehue :D. Banyak catatan di evernote yang sebenarnya menarik dibahas dalam blog ini, minimal sebagai catatan pribadi kalau sewaktu-waktu dibutuhkan kembali.

Web Accelerator sudah pasti tahukan dari frase katanya ya untuk meningkatkan performa dan kecepatan suatu web. Saya akan membahas bagaimana cara settingnya saja di Squid Proxy. Lebih jauh dari setup configurationnya anda harus memahami website anda apakah website anda itu bertipe transaksional atau banyak ke reporting yang datanya tidak terlalu sering berubah-ubah, karena dua hal ini sangat mempengaruhi bagaimana kita me-setup squid configuration kita. Dan Configuration yang harus kita lakukan adalah sebagai berikut : Continue reading

How to avoid a MySQL deadlock

Sudah banyak teori yang menjelaskan mengenai Deadlock di Database, hampir semua DBMS menerapkannya. Deadlock sangat penting bagi DBMS untuk menjaga konsistensi data. Tetapi jika sering mengalami deadlock tidak nyaman juga, karena applikasi anda akan muncul pensan error.

Menurut DZone.com dalam artikel How to Deal With MySQL Deadlocks berikut ini adalah cara menguranginya : Continue reading

JPA 2.0 SELECT IN, How to used?

Cara menggunakan JPA SELECT IN adalah sebagai berikut :

String qlString = "select foo from Foo foo where foo.name IN :names"; 
Query q = em.createQuery(qlString, Item.class);

List<String> names = Arrays.asList("ba", "bi", "bu", "be", "bo");

q.setParameter("names", names);
List<Foo> actual = q.getResultList();