Currently and mission…

Maaf lama tidak menghantar tutorial! Jadi, apa yang saya sedang lakukan pada waktu ini?

1) Membangunkan Portal eLearning Psikiatri
2) Membangunkan Sistem MealPlan
3) Mengemaskini Portal Aktiviti
4) Mengajar PHP & mySQL : Basic to Intermediate (insyallah)

Dan masih terus menambah ilmu mengenai:

1) Laravel 4.2
2) Sublime Text 3
3) Git 1.9.4
4) PHP 5.5.15 (will upgade to 5.6 later)

Insyallah…

GIT – Distributed Version Control and Source Code Management (SCM) System

Introduction To GIT

  1. Abstract
  2. Creating a Repository
  3. Checking Out A Repository
  4. Add And Commit
  5. Pushing Changes
  6. Branches
  7. Update and Merge
  8. Tagging
  9. Revert To Specifit Commit

Abstract

GIT is a distributed version control and source code management (SCM) system developed by by Linus Torvalds for Linux kernel development, Git has since been adopted as the choice of source code management by many projects and companies. This document covers the creation, usage and management of the GIT versioning system.

The installation of GIT is beyond the scope of this tutorial, however, here are some links that will help

 

Creating a Repository

To create a repository for your project, select a place where you have write privileges. For our purposes here, we will create a repository for a project name ACL. So lets begin with creating the repository(repo).

mkdir ~/git_repos
mkdir ~/git_repos/acl
cd ~/git_repos/acl
git init

The above commands will firstly create a directory name .git in which, in turn, will contain some directories and files need to work with the GIT system. A quick look inside the .git directory shows us the following

# ls ~/git_repos/acl/.git
branches config description HEAD hooks info objects refs

Checking Out A Repostiory

If you are using a local repository, checking out a copy is as simple as:

git clone ~/git_repos/acl

If you are checking out a remote repository, then use this command.

git clone username@hostname:/home/kevin/git_repos/acl

The local repository consists of three “trees” maintained by git

Working Directory
Contains the acutal files
Index
Acts as a staging area
HEAD
Points to the last commit

The workflow will look like this.

WORKING DIR -> add -> INDEX -> commit -> HEAD

Add And Commit

When you add a file to GIT, the addition is stored as a proposed changed, which means it is stored in the Index. To add a file named acl.php is as simple as:

git add acl.php

If you had multiple files you wanted to add, you can use the command

git add *

Currently the file is just a proposed addition, and not commited to the repository. To commit we use git commit.

git commit -m “Message to say I added acl.php file”

The acl.php is now in HEAD, but not yet in the remote repository repository. Any additions and changes need to be pushed to the remote repository before they are available to all.

Pushing Changes

To push changes to the remote repository, the git push command is used.

git push origin master

The master can be whatever branch you want to push the changes to.

Thats IT!?. Yup, thats it

If you have not cloned an existing repository and want to connect your repository to a remote server, you need this command

git remote add origin server_name

Now you are able to push your changes to the selected remote server

Branches

Branches are used to develop features in isolation. The master branch is the “default” branch when you create a repository. Use other branches for development and merge them back to the master branch upon completion.

The workflow will look like this..

           ---------- Feature ----------
          |                            |
          |                            |
--------------------- Master -------------------------
       branch                        merge

So, to create a branch called my_feature_branch, and switch directly to it

git checkout -b my_feature_branch

You should see a message like

Switched to a new branch ‘my_feature_branch’

Now, to switch back to master brach

git checkout master
Switched to branch ‘master’

A local branch is not available to others, as it is not yet in the repository. The branch needs to be pushed to the remote repository to be available to all.

git push origin my_feature_branch

And finally, to delete the branch, we use the -d switch

git branch -d my_feature_branch
Deleted branch my_feature_branch (was b37035b).

Update and Merge

Of course, you are not the only person using the repository. Others will commit changes and you need to keep your local copy up to date by pulling new changes from the remote repository. To do so, use the pull command. This will both pull and merge changes from the remote repo, into your local copy.

git pull

To merge another branch into your active branch eg: master, use this command.

git merge my_feature_branch

When git pulls from the remote repository, or merges a branch, it tries to auto-merge the content. Inevitably, there are conflicts. You are responsible to merge those conflicts manually by editing the files shown by git. After changing, you need to mark them as merged. Using:

git add

Some of these conflicts can be avoided by checking for conflicts before merging with git diff

git diff source_branch target_branch

`

Tagging

Tagging a release is a great idea for tracking releases and milestones in a project. Those who are familiar with SVN would be familiar with this concept. To create a new tag, first use the git log command to get the last commit ID and then use git tag with the ID you just gained.

git log
commit b37035b424c82dd1b4baee3b8184ddbead32edd0
Author: Kevin Waterson <kevin@jyotish.(none)>
Date: Fri Jul 5 09:37:27 2013 +1000git tag 1.0.0 b37035b424c82dd1b4baee3b8184ddbead32edd0

Another simple way to use a an annotated tag in GIT, which is really just a pointer to the current commit is this. This example assumes a tag for a release of version 37 of a project.

git tag -a v37 -m ‘Release 37’

Revert To Specifit Commit

Sometimes you need to revert or rollback to a specific commit. Here we show how to revert back to commit id 296b09c

git reset 296b09c
git reset –soft HEAD@{1}
git commit -m “Revert message to tell you have reverted”
git reset –hard

Apa itu DDL, DML dan DCL?

Secara asasnya, arahan SQL boleh dibahagikan kepada 3 kumpulan kecil iaitu DDL, DML and DCL.

DDL

DDL adalah singkatan dari Data Definition Language yang  menerangkan bagaimana data boleh disimpan dalam pengkalan data melalui skema dan keterangan pengkalan data yang ditetapkan.

  • CREATE – untuk mencipta pengkalan data
  • ALTER – mengubah struktur pengkalan data
  • DROP – menghapuskan pengkalan data
  • TRUNCATE – menghapuskan semua rekod yang ada dalam table pengkalan data
  • COMMENT – menambah komen data dictionary
  • RENAME – menukar nama pengkalan data

DML

DML pula adalah singkatan kepada Data Manipulation Language yang mana ia adalah berkaitan dengan manipulasi data. Kebiasaannya, DML adalah berkaitan dengan pernyataan SQL seperti SELECT, INSERT, UPDATE, DELETE dan sebagainya. Pernyataan-pernyataan ini digunakan untuk menyimpan, mengubah, menyenarai (retrieve), menghapus dan mengemaskini data di dalam sesuatu pengkalan data

  • SELECT – retrieve data dari pengkalan data
  • INSERT – menambah data ke dalam sesuatu table
  • UPDATE – mengemaskini data sedia ada di dalam sesuatu table
  • DELETE – menghapuskan rekod di dalam table sesuatu pengkalan data
  • MERGE – UPSERT operation (insert or update)
  • CALL – call a PL/SQL or Java subprogram
  • EXPLAIN PLAN – interpretation of the data access path
  • LOCK TABLE – concurrency Control

DCL

Manakala DCL pula adalah singkatan untuk Data Control Language dan berfungsi untuk melakukan arahan seperti GRANT; kebiasaannya untuk arahan rights, permissions dan kawalan lain sistem pengkalan data

  • GRANT – membenarkan pengguna mempunyai akses terhadap sesuatu pengkalan data
  • REVOKE – menarik balik kebenaran akses yang telah diberi melalui arahan GRANT tadi

JomWeb Meetup 02/11/2013 @ Training.My

Alhamdulillah, hari ni dapat join meetup JomWEB untuk berkongsi ilmu tentang psd2html, umobile dan meteor. Hanya bayar RM10.00 untuk join sesi kali ini. Kalau hendak dibandingkan dengan ilmu yang diperolehi + makan tengahari, rasanya RM10.00 apalah sangat. Ramai juga yang hadir sekitar 12 orang hadir.

PakCu masuk agak lambat, dalam jam 10.30am baru dapat join. Kelas bermula jam 09:00am. Sesi pertama dimulakan oleh saudara Iszuddin Ismail dengan topik bertajuk psd2html. Sebelum ini PakCu hanya tahu penggunaan slice dalam image yang telah disiapkan menggunakan Adobe Photoshop dan kemudiannya dislice utk diexport sebagai html page. Melalui sesi pagi ini, saudara Iszuddin Ismail telah memberi sedikit pencerahan bagaimana membuat html page daripada psd dengan menggunakan teknik CSS. PakCu ditambah dengan ilmu baru mengenai CSS iaitu CSS Reset

Kelas berehat tengahari awal sedikit kerana penceramah tidak beberapa sihat. Sesi petang disambung oleh saudara Zulfa Juniadi B Zulkifli. Topik mengenai UMobile. Saudara Zulfa ini menunjukkan bagaimana membuat aplikasi mobile menggunakan Apache Cordova + NodeJS + JQueryMobile + AppGyVer Steroids. Walaupun sample yang diberikan agak simple tapi dengan documentation yang disediakan insyallah akan memudahkan kita nanti.

Sebelum kelas tamat pada jam 04:30pm, kami sekali lagi diberi pendedahan mengenai Meteor. Meteor adalah satu framework menggunakan javascript untuk mengemaskini maklumat secara live tanpa perlu anda refresh page tersebut; cthnya: utk sistem bidding, online booking. Untuk memuatturun meteor, sila ke url berikut http://win.meteor.com. Untuk mendapatkan dokumentasi meteor ini, sila ke url http://docs.meteor.com. Meteor menggunakan kaedah handlebarsjs untuk format/kaedah templates. Meteor menggunakan mongodb sebagai default and only database. MongoDB akan terbina apabila anda memasang meteor ini.

Setting fungsi email kat Xampp mengunakan akaun gmail

Salam Aidilfitri!

Ramai yang tanya boleh tak send email menggunakan xampp yang kita install kat pc/laptop kita. Jawapannya boleh dengan syarat anda ada internet akses. Jadi untuk kali ini, PakCu akan buat sedikit tutorial bagaimana untuk membuat tetapan agar script email yang kita buat di localhost (menggunakan xampp) dapat menghantar email dengan menggunakan akaun gmail anda.

Buka fail sendmail.ini (C:\xampp\sendmail) anda. Buat tetapan seperti berikut:

[sendmail]
smtp_server=smtp.gmail.com
smtp_port=25
error_logfile=error.log
debug_logfile=debug.log
auth_username=username@gmail.com
auth_password=katalaluan
force_sender=username@gmail.com
smtp_ssl=auto

Kod-kod yang lain dalam fail sendmail.php tu boleh delete atau save fail berkenaan dengan nama lain (untuk backup jika ada permasalahan nanti).

Ok! Sekarang bukak fail php.ini (C:\xampp\php) pula dan komen (disable) kod seperti berikut:

[mail function]
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
; SMTP = localhost
; smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = postmaster@localhost

; XAMPP IMPORTANT NOTE (1): If XAMPP is installed in a base directory with spaces (e.g. c:\program filesD:\xampp) fakemail and mailtodisk do not work correctly.
; XAMPP IMPORTANT NOTE (2): In this case please copy the sendmail or mailtodisk folder in your root folder (e.g. C:\sendmail) and use this for sendmail_path.

; XAMPP: Comment out this if you want to work with fakemail for forwarding to your mailbox (sendmail.exe in the sendmail folder)
sendmail_path = “\”C:\xampp\sendmail\sendmail.exe\” -t”

; XAMPP: Comment out this if you want to work with mailToDisk, It writes all mails in the D:\xampp\mailoutput folder
; sendmail_path = “C:\xampp\mailtodisk\mailtodisk.exe”

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = Off

; Log all mail() calls including the full path of the script, line #, to address and headers
;mail.log = “C:\xampp\php\logs\php_mail.log”

Jika diperhatikan, hanya baris ‘sendmail_path = “\”C:\xampp\sendmail\sendmail.exe\” -t”‘ dan ‘mail.add_x_header = Off’ sahaja yand diaktifkan (enable). Save fail berkenaan dan restart apache anda.

Jadi tetapan untuk fungsi email menggunakan sendmail telah kita buat. Sekarang kita buat contoh script mail pula. Buat satu fail baru dan namakan test.php dan simpan dalam folder web root (htdocs) anda. Masukkan kode di bawah:

<?php
$from = “Abu Haziq”;
$headers = “From: “.$from;
$body = “Salam sejahtera!, \nIni adalah cubaan menghantar email!”;
$subject = “Cubaan Menghantar Email”;
$to = “pro@ppukm.ukm.edu.my”;
if  (mail($to, $subject, $body, $headers)) {
echo “Berjaya!”;
}
else {
echo “Gagal!”;
}
?>

p/s: PakCu menggunakan XAMPP v1.8.1

Pemasangan Xampp

Hari ini masa PakCu agak terluang sedikit berbanding minggu-minggu sebelum ini. Jadi PakCu hendak mulakan pos-pos tutorial dengan tajuk Pemasangan Xampp. Terlebih dahulu PakCu nak terangkan mengenai peralatan yang perlu ada untuk menjalankan skrip-skrip PHP di dalam PC anda. Sebelum itu, sila lihat post berikut – http://www.haqis.com/?p=409


Keperluan Aplikasi

PHP adalah salah satu Server Side Scripting Programming Language selain daripada ASP, CMF, JSP, PERL, ROR. Untuk menjalankan skrip-skrip PHP di dalam PC anda, anda perlu melengkapkan PC anda dengan aplikasi-aplikasi berikut:
+ Web Server (apache, IIS,  lighttpdnginx, Cherokee dsbnya)
+ PHP (terkini versi 5.5)
+ Database (mysql, oracle, mssql, sybase, ODBC dsbnya)
+ Editor @ IDE  (Notepad++, sublime text, PHPStorm, Adobe Dreamweaver dsbnya)
+ Web Browser (Google Chrome, Internet Eplorer (IE), Mozilla Firefox, Safari dsbnya)

Setiap aplikasi di atas perlu dipasang (installation) satu-persatu dan dibuat tetapan (configuration) terlebih dahulu di dalam PC anda. Namun terdapat aplikasi yang telah mengabungkan beberapa aplikasi di atas dan memudahkan pengguna untuk membuat tetapan bagi setiap aplikasi tersebut. Sebagai contoh, Xampp, Easyphp, WAMP, PHPTriad dsbnya). Aplikasi ini telah mengumpulkan aplikasi PHP, Apache dan mySQL ke dalamnya. Jadi hanya perlu memasang aplikasi ini sahaja dan ketiga-tiga elemen penting untuk pembangunan website menggunakan PHP telah dipasang ke dalam PC anda. Kadang-kadang terdapat aplikasi/skrip tambahan turut di pasang di dalam aplikasi tersebut. Contohnya, PHPMyAdmin (GUI untuk menguruskan mysql), tomcat, filezilla, mercury dan sebagainya). Aplikasi ini adalah pilihan bagi anda yang ingin menggunakan aplikasi tersebut.

Namun perlu diingatkan aplikasi bundle ini hanya sesuai digunakan untuk pembangunan (development) sahaja dan bukan untuk produksi (production). Bagi tujuan produksi, adalah disarankan memasangan setiap aplikasi tersebut dibuat satu-persatu.


Pemasangan Xampp

Aplikasi yang akan digunakan untuk tutorial PakCu ini adalah:
+ Apache (web server)
+ PHP 5.4
+ mySQL (database)
+ Notepad++ (mungkin juga akan bertukar yg lain pada masa akan datang :p)
+ Google Chrome (i hate IE)

Anda boleh memuatturun aplikasi Xampp di url berikut – http://www.apachefriends.org/en/xampp.html. Ketika artikel ini ditulis, Xampp telah mengeluarkan versi 1.8.2 (bagi pengguna windows).

1 download

Apabila anda memuatturun versi apache/mysql/php yang hendak digunakan dalam proses pembangunan, sewajarnya hendaklah versi-versi tersebut sama seperti versi yang telah dipasang di dalam server produksi. Ini bagi mengelakkan masalah penggunaan fungsi di dalam aplikasi tersebut setelah ia dipindakan daripada server pembangunan ke server produksi.

Setelah fail tersebut berjaya dimuatturun, proses berikutnya adalah proses pemasangan aplikasi Xampp ke dalam PC anda. Klik 2 kali pada fail exe tersebut dan paparan berikut akan dipaparkan:

2 bahasa

Klik pada butang OK dan paparan berikut akan dipaparkan:

3 uac

Klik butang OK dan paparan berikut akan dipaparkan:

4 welcome

Klik butang Next untuk proses pemasangan selanjutnya dan paparan berikut akan dipaparkan:

5 component

Klik butang Next dan paparan berikut akan dipaparkan:

6 localtion

Anda boleh menukar lokasi pemasangan. Kemudian klik butang Install dan paparan progres pemasangan berikut akan dipaparkan:

7 install

Tunggu sehingga progres berakhir dan klik butang Next dan paparan berikut akan dipaparkan:

8 configure

Paparan ini akan tertutup secara automatik setelah proses configure selesai. Paparan berikut akan dipaparkan menandakan proses pemasangan Xampp selesai:

9 finish

 

 

Niat yg tergendala dan hampir terkubur

Lately PakCu sangat sibuk dengan kerja-kerja hakiki. Dengan bos yang cuti bersalin, projek-projek baru, maintainance projek-projek lama.. tapi ALHAMDULILLAH! Akhirnya satu persatu kerja-kerja tersebut dapat diselesaikan. Cuma projek untuk mewujudkan tutorial dan berkongsi pengalaman dan ilmu yang cetek ini di dalam ruang yang terhad ini juga masih belum dapat dilaksanakan.

Kejadian terbaru, laptop KONG! Motherboard terbakar, board harddisk pun terbakar. Habis semua hasil kerja yang pernah dibuat. Namun setiap permasalahan ada juga penyelesaiannya. Terima kasih pada http://www.datarecoverycenter.com.my/ kerana dapat membantu recovery balik data-data yang amat berharga bagi saya. RM450.00 untuk harddisk saiz 250GB. Agak mahal, tapi kalau nak dibandingkan dengan nilai data yang ada dalamnya…. AMATLAH BERBALOI!

Insyallah PakCu akan mula berkongsi pengalaman dan pengetahuan tentang PHP Programming bermula dari yang paling asas sehingga tahap yang PakCu ada. Kepada mereka yang diluar sana hendak berkongsi ilmu, dialu-alukan. Sebarang kesilapan dan kelemahan yang timbul dari post-post yang akan datang nanti harap dapat diperbetulkan dengan cara baik. Kita bermula dengan pengenalan apa itu PHP, pemasangan infrastruktur sebagai keperluan untuk membuat halaman menggunakan PHP, asas-asas pengaturcaraan PHP, pembangunan aplikasi ringkas menggunakan procedural PHP. Kemudian kita akan berkongsi ilmu tentang Object Oriented Programming sebelum kita ke PHP Framework. Doakan niat PakCu ini akan dipermudahkan olehNya, insyallah

p/s: Langkah pertama, menulis menggunakan perkataan penuh (tanpa singkatan dan bahasa pasar). Terima kasih untuk peringatan ini, Bro Dino!