My Favourite Blazor Features

If you know Web Assembly, in .NET, it is Blazor. With Blazor you can do C# programming on the browser. With native performance like JavaScript does.

Per September 2018, Daniel Roth make a great demo, little hint what Blazor can do.

When we create Blazor client project, the output is a project that we can deploy to any server. Not lock into IIS.

When we call it from browser, the server will transport files like wasm js, mono runtime, and our DLL C#. Yes, DLL.

It’s only 1 MB, but it will shrink in the future development.

JavaScript

Because it is a client development, we’re always look out existing JS library. And Blazor is ready to communicate with your favourite JS lib.

There are two ways, wrap the JS method in a C# class, or you can reference Blazor-JS lib. class already built by community.

Debugging

It’s possible using Chrome Dev app. With 2 window/tabs. First tab is your app run in some port, and second tab is your C# source code, run in another port.

But your Chrome have to enable debugging first. Your app will show you a link to open in cmd, so Chrome will start with debugging enabled. You have to do clear cache before.

You can do breakpoint in some line, and it will hit if your code reach the logic.

Server Side

Server Side popularize by NodeJS. It render DOM in server, not in client browser.

The impact is awesome. Loading page is very fast. Your web server only transport the HTML text. Not bundled with wasm js, mono runtime, dll, etc.

Your button click code and do some operation is still in the same performance. The only different is in first loading page.

Disclaimer, I never try it, I only see it on YouTube demo, but Daniel said it will lead the development, since the output for user a.k.a us, as a developer, and as a browser user, is great. It’s fast.

Saya Posting Lowongan Kerja (Loker), Ini Yang Terjadi

Pertama kali, saya mencoba posting loker di UrbanHire. Ketika pertama mendaftar, UrbanHire (UH) memberikan free trial posting.

Menurut saya fitur UH yang bisa multi-post ke beberapa job listing terkemuka, baik itu yang gratisan, maupun yang berbayar, hingga ke Universitas adalah luar biasa.

Waktu itu, sekitar tahun 2017, untuk posting ke job listing Universitas dikenai biaya Rp. 50 ribu.

Tapi saya tidak ambil kesempatan ini, ingin mencoba yang trial dulu semaksimal apa. Toh saya tidak sedang mencari posisi yang berpengalaman.

Dalam waktu sehari sudah ada beberapa kandidat pelamar yang masuk. Beberapa yang potensial saya panggil. Dan akhirnya kami terima dua junior programmer.

Saya tanyakan darimana mendapat info lowongan?. Satunya dari indeed, dan satunya lagi dari olx. Tidak ada yang dari UH.

Ok noted.

Dan waktu trial UH-pun berlalu.

Ketika kembali waktunya kami membutuhkan banyak posisi dari junior sampai senior, kamipun langsung posting lowongan ke indeed dan olx.

Lebih karena kedua website tersebut gratis.

Dalam sekejap banyak cv yang masuk. Yang dari indeed, dari puluhan cv yang masuk, hanya satu yang benar – benar tepat sesuai kriteria.

Yang dari olx lebih sedikit yang masuk, tapi lumayan berkualitas. Hanya tidak sesuai kriteria yang kami cari.

Karena masih kurang banyak pilihan kandidat, kami mencoba website job listing berbayar tradisional.

Jobsdb dan jobstreet.

Untuk mendaftar di kedua website ini tidak bisa kita lakukan mandiri, entri sendiri di website. Anda perlu menelepon tim support mereka.

Untuk jobsdb kami tidak bisa memasukkan lowongan, karena jobsdb hanya menerima iklan jobs dari perusahaan di wilayah Jabodetabek saja.

Untuk jobstreet lebih menarik bagi perusahaan diluar Jabodetabek. Karena kami yang di Surabaya boleh mendaftarkan iklan.

Plus saat posting artikel ini, ada promo free beriklan selama setahun untuk perusahaan luar Jabodetabek. Untuk wilayah Jabodetabek dikenai biaya sekitar Rp. 1 juta-an.

Registrasi perusahaan di jobstreet by phone. Kami diminta mengisi form, ditanda tangani, dan ada cap perusahaan. Selain itu perlu dilampirkan pula npwp perusahaan.

Pembuatan akun dipandu oleh tim jobstreet. Contoh materi iklan juga akan diberikan, mungkin agar lebih seragam penulisannya.

Sampai kemudian iklan kami live akan dipandu. Terima kasih tim jobstreet.

Dalam waktu beberapa jam sudah ada cv kandidat yang masuk. Ada sedikit yang tidak sesuai kriteria, tapi lebih banyak yang sesuai.

Salah satu yang kami sukai dari jobstreet ini adalah untuk semua kandidat yang masuk, ada pdf cv-nya. Memudahkan kami untuk mendiskusikan cv kandidat tersebut dengan tim perekrut yang lain via WhatsApp.

Meskipun format cv tersebut tidak seragam tapi tidak masalah. Bagaimana cv diformat itu adalah sesuai kreatifitas pencari kerja. Dan menunjukkan seberapa niat mereka mencari kerja.

Lain ladang lain belalang. Lain juga ceritanya dengan linkedin bang.

Saya percaya tidak ada satu website untuk semua orang. Kecuali google-sigh.

Jadi kamipun mencoba linkedin. Ya, ini adalah website pamer CV. Salah satu monetisasinya yaitu menarik biaya perusahaan atau personal yang ingin mencari SDM.

Registrasi pengiklan wajib menggunakan kartu kredit. Anda akan dicharge per-klik.

Tidak ada pertanyaan apakah perusahaan anda di wilayah Jabodetabek atau tidak.

Tidak ada juga kami dipandu manual hingga iklan anda live.

Semuanya self-service, mandiri. Yang penting bagi linkedin adalah kartu kredit anda.

Ini mungkin bedanya perusahaan yang beroperasi internasional dengan nasional, atau regional.

Menurut saya dengan kepemilikan kartu kredit sudah memfilter mana saja perusahaan yang benar-benar niat beriklan.

Lanjut ke registrasi, lebih dulu setting maksimal budget harian. Saat ini minimal sekitar $5 per hari. Ya, anda harus membayar dengan dollar.

Daily budget ini dapat melebar hingga maksimal 30% per hari. Mungkin untuk kebutuhan tiba-tiba saja posting iklan anda viral.

Masa tayang iklan 30 hari, dengan maksimal budget tertagih $500. Atau sampai anda menutup iklan secara manual. Karena plafon kartu kredit sudah maksimal.

Di linkedin-pun dalam beberapa jam sudah ada beberapa pengguna linkedin yang tertarik dengan iklan kami. Dan iklan kami diklik oleh mereka. Dan tagihan kami bertambah. Karena iklan diklik.

Kandidat yang masuk lebih banyak yang sesuai kriteria daripada yang tidak sesuai sama sekali.

Karena kami menyukai pdf cv, kamipun mencari link download cv kandidat, ada.

Tapi beberapa kandidat ada yang tidak menyertakan pdf cv. Hanya, karena ini linkedin, tentunya linkedin sudah memikirkan hal ini.

Linkedin menyediakan tombol “Save as PDF” untuk cv kandidat.

Jadi sekian artikel kami dari sudut perspektif pencari tenaga kerja.

Pesan kami, buatlah cv yang sangat menarik. Dan diconvert sebagai PDF. Anda sedang mengiklankan diri anda, jadi buatlah kami para pencari tenaga kerja tertarik pada pandangan pertama, yaitu CV.

Ada banyak template word cv di internet dengan design yang menarik.

Jangan minder jika anda seorang junior yang baru lulus SMK. Karena saat anda di SMK pasti ada sesuatu yang menarik dan bisa dianggap prestasi, yang bisa diceritakan di CV.

Entah itu membuat website suatu perusahaan saat kerja praktek, saat magang, atau di proyek pribadi. Sebagai freelance misalnya. Atau memang karena hobi.

Lain lagi jika ceritanya jika teman anda sendiri yang sedang mencari kerja.

“Bro, gw butuh kerja nih”. Teman anda “Ayuk, besok lu masuk ya”.

Itu karena teman anda sudah kenal anda luar dalam. Personally.

Publish CSV to the world

Enter https://data.world to get your CSV online once you upload it.

Sebelumnya saya ingin menceritakan apa kebutuhan saya sampai harus mempublish CSV. Saya ingin mencari data travel atau biro perjalanan umroh resmi dari kemenag di sekitar Surabaya. Dari googling dapat alamat  https://haji.kemenag.go.id/v3/basisdata/daftar-ppiu.

Datanya berbentuk tabel sederhana. Ada kolom Pencarian tapi nampaknya jika diketik “surabaya” yang tampil hanya Penyelenggara yang mengandung kata “surabaya”. Padahal alamatnya bukan Surabaya. Hmm..terus gimana cara termudahnya, no code, using existing tools only?.

Bisa kita manual Find in page mencari kata “surabaya”, tapi setelah mendapat alamat kita harus manual select text dan copy-paste di excel atau word editor lainnya.

querycaridaftarumrohkemenag.png

Scrape it. Menggunakan tools Chrome extension Data Miner : https://chrome.google.com/webstore/detail/data-scraper-easy-web-scr/nndknepjnldbdbepjfgmncbggmopgden. Dengan Data Miner kita dapat mendownload data CSV sebuah table dengan mudah. Berbekal sedikit tutorial dari youtube saya berhasil mendapat CSV-nya.

Create New Dataset di data.world dan upload CSV. Untuk versi free kita dapat mengupload 100 MB/dataset. Set as public dan anda-pun bisa membukanya disini : https://data.world/anangbakti/travelumrohdepag.

Lebih detil : https://data.world/anangbakti/travelumrohdepag/workspace/file?filename=daftarumroh.csv.

Di tampilan ini kita bisa melakukan query dengan klik tombol New Query. Sebagai contoh saya melakukan pencarian dengan alamat Surabaya, Sidoarjo, dan Mojokerto.

querydatasetumroh.png

Hasil pencarian bisa di-download lagi sebagai CSV.

Tentu saja ada kelemahannya yaitu data tidak update, karena jika data di Kemenag berubah maka perlu scrape manual kembali menggunakan Data Miner untuk diupload lagi ke https://data.world.

Happy query …

Installing moodle 2

I use this tutorial : https://docs.moodle.org/26/en/Step-by-step_Installation_Guide_for_Ubuntu and jump to step 4.

On step 7, after chmod -R 777 /var/www/moodle, you have to open http://<your-ip>/moodle on browser for next installation.

i’ve got this error

server-checks-php5-curl

showing that you don’t have php5-curl, php5-xmlrpc, and php5-intl. Do apt-get install php5-curl php5-xmlrpc php5-intl.

I skip for opcache-enable and click next. moodle-server-min-requirements

and moodle will automatically install all modules moodle-install-all-modules-success

Run to next step on  https://docs.moodle.org/26/en/Step-by-step_Installation_Guide_for_Ubuntu, Database setting and continue to Suggestions: Enable Zend OpCache/Change Document Root.

moodle-after-instal

Moodle is somehow slow, you can use php cache and mysql tuning suggestion on http://moodurian.blogspot.com/2011/07/how-i-speeded-up-my-moodle-site.html.

Basicly you can use : https://raw.github.com/major/MySQLTuner-perl/master/mysqltuner.pl for mysql tuning. It will give you some good recomendation to my.cnf.

and : apt-get install php-apc

to cache everything.

Basic installation nginx+php5-fpm+yii

As a reference I use tutorial from rosehosting.

  • apt-get update
  • apt-get install nginx
  • Open your browser, http://localhost and you can see nginx welcome page.
  • apt-get install php5-fpm php5-cli php5-mcrypt php5-gd // I ignore install mysql, planned doing later
  • Modify /etc/php5/fpm/php.ini just like on tutorial.
  • Modify nginx conf. nano /etc/nginx/sites-available/default, replace inside server{}

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;
index index.html index.htm;

# Make site accessible from http://localhost/
server_name localhost;
set $yii_bootstrap “index.php”;
charset utf-8;

location / {
index index.html $yii_bootstrap
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ /$yii_bootstrap?args;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}

location ~ ^/(protected|framework|themes/\w+/views) {
deny  all;
}

location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}

location ~ \.php {
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
set $fsn /$yii_bootstrap;
if (-f $document_root$fastcgi_script_name){
set $fsn $fastcgi_script_name;
}
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

location ~ /\. {
deny all;
access_log off;
log_not_found off;
}

}

Playing yowsup2 and whatsapi

This yowsup2 installation requirement is valid. But I found I had to apt-get install python2.7-dev too, before I can pip install Pillow. Next you can register your number using yowsup-cli. Now test send messages using this command yowsup-cli demos -c -y. Type /help for all command and /L to quick login. Type /message send <number-to> <your-message-here>.

WhatsAPI is more easy to install but I wanna share simple .php test. First git clone the source from github to your /var/www/, and after downloaded, place this php file on /var/www/WhatsApi-Official/.

<?php
require 'src/whatsprot.class.php';
require 'src/events/MyEvents.php';
$username = "your-phone-number ex.62811987654";
$identity = "your-phone-number";
$nickname = "your-phone-number";
$password = "your-password"; // The one we got registering the number
$debug = true;

// Create a instance of WhastPort.
$w = new WhatsProt($username, $identity, $nickname, $debug);
connect(); // Connect to WhatsApp network
$w->loginWithPassword($password); // logging in with the password we got!

//Send Messages
$target = ‘to-phone-number’; // The number of the person you are sending the message ex.6285798766543
$message = ‘Hi! 🙂 this is a test message’;
$w->sendMessage($target , $message);

//Receive Messages
$events = new MyEvents($w);
$events->setEventsToListenFor($events->activeEvents);
$w->pollMessage();
?>

PostgreSQL 9.3 : Create dblink

After read this post from Mr. , I wanna add some detail only on creating dblink :

  1. First change your pg_hba.conf : host all all 127.0.0.1/32 trust
  2. Create dblink : SELECT dblink_connect(‘<dblink-name>’,’dbname=<postgres-dbname> port=<postgres-port> user=<postgres-username> password=<postgres-password>’);//it should return OK 
  3. Test it :
    SELECT *
    FROM dblink(‘<dblink-name>’,’select id,name from emp’)
    AS zone( id int,name varchar);