Apa? Pensyarah IT tidak tahu apa itu cPanel?

Apa? Pensyarah IT tidak tahu apa itu cPanel?

Wow! Nampaknya semakin hari semakin banyak beban yang perlu dipikul oleh pendidik kita. Adakah menjadi suatu kesalahan sekiranya pensyarah tidak mengetahui salah satu alat (tools) yang digunakan oleh syarikat-syarikat hosting?

Bagi yang tidak tahu pucuk pangkal kenapa catatan ini wujud, bolehlah merujuk portal Otakit.

cPanel, DirectAdmin dan Plesk merupakan alat yang digunakan oleh syarikat-syarikat hosting untuk kemudahan pelanggan mereka sahaja. Tuntutan industri agar  universiti menyediakan apa yang industri mahu.

Universiti bukan ladang ternakan.

Universiti bukan ladang ternakan. Pelajar universiti tidak sepatutnya dilayan seperti haiwan ternakan yang dikurung, kemudian diberikan makanan sehingga gemuk (kerana kurang bergerak) hanya untuk dijual pada harga yang mahal.

Universiti sepatutnya menyediakan perkara asas kepada pelajarnya. Sebagai contoh, bagaimana merangka pangkalan data yang baik. Bukan bagaimana mahu menggunakan MySQL. Kalau saya bertanya sendiri kepada orang industri, adakah mereka mahir terhadap penggunaan semua produk pangkalan data? PostGres, MySQL, MariaDB, Oracle, SQL Server dan banyak lagi.

Orang industri tahu semua bahasa pengaturcaraan?

Orang industri tahu semua bahasa pengaturcaraan? Tuntutan industri sentiasa tidak adil untuk universiti. Alangkan dalam industri itu sendiri tak terkejar untuk menguasai segala macam perkembangan teknologi. Inikan pula kita mahu lambakkan kepada universiti.

Kadang-kadang didalam industri sendiri bergaduh bahasa pengaturcaraan mana lagi hebat, framework mana lagi bagus, dan pangkalan data mana lebih stabil. Adakah adil pihak industri mahu menyalahkan universiti?

Latihan.

Latihan adalah kunci kepada kemahiran menguasai alat-alat yang diperlukan oleh industri. Jadi, industrilah yang bertanggungjawab untuk melatih tenaga mahir mereka sendiri. Universiti sepatutnya masih kekal menjadi tempat menimba ilmu dan menyediakan pelajar dengan perkara asas supaya pelajar ini dicampak kemana pun masih hidup.

Apa yang universiti boleh lakukan dan industri boleh tawarkan?

Apa yang universiti boleh lakukan dan industri boleh tawarkan? Pihak universiti boleh berkolaborasi dengan kumpulan IT JomWeb untuk mengadakan bengkel ataupun taklimat. Pensyarah juga boleh turut serta dalam JomWeb.

Pihak industri pula, rajin-rajinkan diri menyumbang apa yang mampu demi kemajuan IT negara. Salah satu darinya dengan menaja aktiviti-aktiviti JomWeb.

Saya orang industri yang lahir dari didikan sebuah universiti tempatan. Saya bersyukur ketika di universiti, pensyarah tidak ajar saya menggunakan alat. Tetapi mengajar saya bagaimana untuk terus kekal releven didalam dunia IT.

[ Mysql ] menukar format dd/mm/yyyy ke yyyy-mm-dd

Selalunya masalah seperti ini timbul bilamana tarikh disimpan dalam format varchar. Selain pengaturcara sebelum ini seorang pemalas, ada kemungkinan sesetengah pangkalan data tidak mempunyai datatype date. Atau, ini merupakan data yang datang dari sistem legasi. Bila kita ingin melakukan proses migrasi ke pangkalan data MySQL. Boleh cuba sintaks dibawah.

UPDATE tableA SET tarikhBaru = CONCAT(SUBSTRING_INDEX(
SUBSTRING_INDEX(tarikhLama,'/',3),'/',-1),'-',
SUBSTRING_INDEX(SUBSTRING_INDEX(tarikhLama,'/',2),'/',-1),'-',
SUBSTRING_INDEX(tarikhLama,'/',1));

Dua arahan yang perlu digunakan iaitu CONCAT() dan juga SUBSTRING_INDEX().

CONCAT() merupakan arahan untuk menggabungkan rentetan aksara (string). Boleh juga menggabung data 2 atau 3 column menjadi 1. Formatnya adalah seperti berikut

CONCAT(fieldname1,string,fieldname2,string,fieldname..,string..);

SUBSTRING_INDEX() pula, memecahkan rentetan aksara kepada beberapa perkataan dan disimpan dalam bentuk tatasusunan (array). Formatnya adalah seperti berikut

SUBSTRING_INDEX(fieldname,delimiter,array_key);

Selamat mencuba!

Plugin penting untuk Notepad++

Mula menggunakan Notepad++ dari tahun 2006. Sejak dari itu, tiada lagi editor lain yang berkenan dihati. Sehingga kini, Notepad++ masih lagi editor terpantas ketika “load”.

Kepantasan load Notepad++ adalah kerana kurangnya fungsi-fungsi hebat seperti senarai class atau function yang telah kita bina. Jangan risau, Notepad++ dibina bersama-sama plugin manager.

1. Explorer
Plugin ini memudahkan kita untuk navigasi direktori fail.
n1

2. SourceCookifier
Plugin ini akan menyenaraikan kesemua class dan function dalam setiap fail yang kita buka. Tiada lagi Ctrl+F untuk navigasi fail anda.

n2

3. Compare
Compare membolehkan anda membandingkan dua fail secara bersebelahan serta akan highlight pada bahagian yang terdapat perbezaan.

Selain dari itu, fungsi sedia ada didalam Notepad++ yang sangat berguna ada Find in files. Anda boleh mencari menggunakan keyword, pilih direktori untuk dilakukan carian. Wallah! Notepad++ akan menyenaraikan fail yang mempunyai keyword tersebut.

Pemasangan OpenStreetMap pada Ubuntu 16.04

Setelah beberapa cubaan untuk hos ’tile’ Open Street Map (OSM) yang disudahi dengan linangan airmata. Akhirnya saya berjaya melakukan pemasangan OSM pada Ubuntu 16.04.

Pemasangan dilakukan di Linode 2GB RAM sahaja, dan saya hanya berminat untuk hos ’tile’ bagi negara Malaysia sahaja.

Sebelum melakukan proses pemasangan, perkara pertama yang perlu dilakukan adalah

sudo apt update
sudo apt upgrade

Memandangkan proses pemasangan memerlukan RAM 4GB (minima) maka saya perlu membuat fail swap agar dapat menampung kekurangan 2GB RAM tadi. Makanya, saya peruntukkan 2G untuk swapfile. Tapi memandangkan saya hanya import peta Malaysia, maka tidak perlu ada swapfile.

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile

Isu yang kedua yang saya hadapi ketika proses pemasangan OSM adalah timeout ketika ssh. Untuk mengelakkan perkara ini terjadi,

sudo nano /etc/ssh/ssh_config

Cari perkataan ServerAliveInterval. Sekiranya tiada tambah ServerAliveInterval 90.

ServerAliveInterval 90

Sekarang kita sudah boleh mula dengan proses pemasangan. Mulakan dengan memasang Postgres

sudo apt install postgresql postgresql-contrib postgis postgresql-9.5-postgis-2.2

Selesai proses pemasangan Postgres, kita perlu masuk ke dalam pangkalan data postgres. Secara lalai, pengguna postgres akan dijana semasa proses pemasangan tadi. Jadi kita perlu masuk ke persekitaran pengguna postgres

sudo -u postgres -i

Sekarang kita perlu tambah pengguna untuk diakses ke pangkalan data. Pengguna postgres merupakan ‘root’ didalam pangkalan data, jadi kita perlu menambah pengguna baru.

createuser osm

Selesai tambah pengguna osm, kita juga perlu jana pangkalan data baru yang diberi nama openstreet(nama ini terpulang kepada anda. Selesai menjana pangkalan data, anda juga perlu aktifkan ‘extension’ hstore dan postgis. Kedua-dua ‘extension’ ini diguna pakai bagi memproses maklumat gis.

createdb -E UTF8 -O osm openstreet
psql -c "CREATE EXTENSION hstore;" -d openstreet
psql -c "CREATE EXTENSION postgis;" -d openstreet

Kemudian kita perlu keluar dari postgres dengan menaip exit

Oleh kerana kita telah menambah pengguna osm didalam pangkalan data, kita juga perlu menambah pengguna osm didalam Ubuntu. Ini bagi membolehkan pengguna osm didalam persekitaran sistem mengakses pangkalan data openstreet menggunakan pengguna osm.

sudo adduser osm

Memandangkan saya malas untuk ‘switch’ pengguna, maka saya juga telah tambah pengguna osm ke dalam senarai sudoers.

usermod -aG sudo username

Bertukar kepada persekitaran osm. Bertukar!

su - osm

Langkah seterusnya adalah muat turun CartoCSS map stylesheets

wget https://github.com/gravitystorm/openstreetmap-carto/archive/v2.41.0.tar.gz

Selesai proses muat turun, untar fail tersebut.

tar xvf v2.41.0.tar.gz

Muat turun pula fail peta Malaysia

wget -c http://download.geofabrik.de/asia/malaysia-singapore-brunei-latest.osm.pbf

Bagi mengimport data peta kedalam pangkalan data, kita memerlukan osm2psql. Sekiranya anda tidak membenarkan pengguna osm melakukan sudo, sila tukar ke pengguna root terlebih dahulu.

sudo apt install osm2pgsql

Sebaik sahaja selesai proses pemasangan osm2psql, larikan arahan dibawah

osm2pgsql --slim -d gis -C 3600 --hstore -S openstreetmap-carto-2.41.0/openstreetmap-carto.style malaysia-singapore-brunei-latest.osm.pbf

Semua yang kita lakukan tadi adalah bahagian mudah, sekarang kita perlu memasang mod_tiles. Kebanyakan ralat berpunca dari pemasangan mod_tiles yang tidak betul.

sudo apt install git autoconf libtool libmapnik-dev apache2-dev
git clone https://github.com/openstreetmap/mod_tile.git

Arahan diatas membolehkan memasang beberapa ‘library’ yang diperlukan. Kita guna memuat turun kod sumber map_tile.

cd mod_tile/
./autogen.sh
./configure
make
sudo make install
sudo make install-mod_tile

Arahan tadi menyebabkan kita mengkonfigurasi, mengkompil serta memasang mod_tile pada ubuntu. Sekarang kita perlu menjana mapnik ‘stylesheet’.

sudo apt install curl unzip gdal-bin mapnik-utils node-carto

Sekirannya anda didalam persekitaran pengguna root, masuk semula ke persekitaran pengguna osm. Andai anda dalam persekitaran osm, langkau langkah ini.

su - osm

Sekarang kita perlu memasang ‘library’ yang perlu untuk menggunakan mapnik.
Masuk ke folder openstreetmap-carto-2.41.0/ dan jana fail bentuk. Seterusnya menjana style.xml

sudo apt install curl unzip gdal-bin mapnik-utils node-carto
cd openstreetmap-carto-2.41.0/
./get-shapefiles.sh
carto project.mml > style.xml

Selesai langkah-langkah diatas, kita perlu mengkonfigurasi renderd

sudo nano /usr/local/etc/renderd.conf

Copy arahan dibawah dan paste pada renderd.conf

[renderd]
socketname=/var/run/renderd/renderd.sock
num_threads=1
tile_dir=/var/lib/mod_tile
stats_file=/var/run/renderd/renderd.stats

[mapnik]
plugins_dir=/usr/lib/mapnik/3.0/input
font_dir=/usr/share/fonts/truetype
font_dir_recurse=1

[default]
URI=/osm_tiles/
TILEDIR=/var/lib/mod_tile
XML=/home/osm/openstreetmap-carto-2.41.0/style.xml
HOST=localhost
TILESIZE=256
;HTCPHOST=proxy.openstreetmap.org
;MINZOOM=0
;MAXZOOM=18
;TYPE=png image/png
;DESCRIPTION=This is a description of the tile layer used in the tile json requ$
;ATTRIBUTION=&copy;<a href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> $
;SERVER_ALIAS=http://localhost/
;CORS=http://www.openstreetmap.org
;ASPECTX=1
;ASPECTY=1
;SCALE=1.0

Kenapa saya suruh copy dan paste sahaja? Sebab yang lain tidak diperlukan, dan akan menyebabkan ralat.
Langkah seterusnya adalah salin fail mod_tile/debian/renderd.init kedalam /etc/init.d/renderd dan diberikan kebenaran, dengan harapan ianya sentiasa berada dijalan yang benar.

sudo cp mod_tile/debian/renderd.init /etc/init.d/renderd
sudo chmod a+x /etc/init.d/renderd

Sudah penat? Sabar, sekarang kita perlu edit fail tadi.

sudo nano /etc/init.d/renderd

Ubah parameter tersebut menjadi

DAEMON=/usr/local/bin/$NAME
DAEMON_ARGS="-c /usr/local/etc/renderd.conf"
RUNASUSER=osm

Sekarang kita perlu buat satu folder dan berikan kebenaran kepada folder tersebut kepada osm. Tiada lain melainkan yang benar-benar belaka.

sudo mkdir -p /var/lib/mod_tile
sudo chown osm:osm /var/lib/mod_tile

Akhirnya!!!! Ini merupakan langkah terakhir untuk renderd.

sudo systemctl daemon-reload
sudo systemctl start renderd
sudo systemctl enable renderd

Eh eh eh jangan berseronok dulu! Ada lagi yang kena buat. Sekarang taip exit. Anda akan berada dipersekitaran root. Buat arahan dibawah.

sudo nano /etc/apache2/mods-available/mod_tile.load

Tampal kod ini pada fail tadi

LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so

Aku dah tak larat dah nak taip dan perjelaskan dengan terperinci. Buat sahaja arahan dibawah

sudo ln -s /etc/apache2/mods-available/mod_tile.load /etc/apache2/mods-enabled/
sudo nano /etc/apache2/sites-enabled/000-default.conf

Sekarang cari . Dah jumpa? Tampal kod dibawah didalam fail itu.

LoadTileConfigFile /usr/local/etc/renderd.conf
ModTileRenderdSocketName /var/run/renderd/renderd.sock
# Timeout before giving up for a tile to be rendered
ModTileRequestTimeout 0
# Timeout before giving up for a tile to be rendered that is otherwise missing
ModTileMissingRequestTimeout 30

Sudah boleh restart apache2

sudo systemctl restart apache2

Barulah boleh senyum-senyum kambing dan pergi ke http://ip-server/osm_tiles/0/0/0.png guna pelayar. Berdoalah sambil-sambil melihat pada skrin agar tiada ralat. Sekiranya ada, tinggalkan komen. Saya cuba bantu.

p/s : Arahan diatas di ‘trace’ semula dari history bash.

UNITEN – Projek Sarjana Muda (Poster Evaluation)

Alhamdulillah.
 
Tahniah buat UNITEN kerana membuka pintu untuk industri dan komuniti berkolaborasi. Setidak-tidaknya pelajar dapat belajar sedikit sebanyak dunia yang bakal mereka hadapi apabila berkerjaya kelak.
 
Hari ini juga secara tidak langsung menjadi peringatan kepada aku. Bagaimana kita sering buat produk syok sendiri. Begitu juga pelajar-pelajar ini, ada diantara mereka yang buat produk syok sendiri meskipun telah ditegur oleh penyelia masing-masing. Kesalahan paling ketara adalah kurangnya kajian kes. Ada diantara mereka melakukan kajiselidik kepada bukan golongan sasaran. Oleh kerana itu set data yang ada, tidak boleh diterima pakai untuk proses validasi nilai komersil.
 

Pelajar-pelajar ini juga mengingatkan aku tentang kekangan masa. Ada diantara mereka mempunyai tajuk projek yang agak menarik dan mempunyai nilai komersil, tetapi aku tidak merasakan ianya sempat siap dalam masa 6 bulan. Facial recognition untuk mengenalpasti identiti seseorang juga bukan mudah. Perlu ada data terlatih. Looksery (baca : sini )sebuah startup yang dibeli oleh Snapchat, menggunakan crowdsourcing power untuk melatih data mereka. Ingat macam mana kita tidak merancang dengan baik agar timeline projek kita lebih masuk akal?

Teknologi. Ya, ramai diantara pelajar ini terkejut bila aku bercerita teknologi yang mereka perlu pakai untuk menyiapkan projek akhir mereka nanti. Jangan katakan pelajar, kita sendiri kadangkala tidak melakukan kajian yang mencukupi untuk menentukan teknologi apa yang boleh diterima pakai. Ini akan menjadi masalah yang dinyatakan awal tadi, iaitu salah perancangan timeline. Selalunya pengaturcara menghadapi masalah kerana idea atau halatuju produk itu datang dari orang yang tidak mempunyai pengetahuan mengenai IT secara meluas. Kalau kamu seorang ketua yang seringkali ‘over committed‘ pada klien, atau selalu tidak menerima cadangan dari pengaturcara kamu. Ketahuilah, kamulah yang membuatkan hidup pengaturcara sengsara.

Semoga kolaborasi seperti ini, dapat dipanjangkan juga ke IPTA serta IPTS yang lain. JomWeb insyaAllah akan turun padang sekiranya mempunyai kelapangan.