Friday, April 6, 2012

Simple Example PHP - MySQL

MySQL adalah salah satu relational database management system (RDBMS) berbasis SQL (Structured Query Language) yang paling populer dan banyak digunakan. MySQL dapat dipakai pada aplikasi web maupun software pada desktop.

Kepopuleran MySQL terutama karena dipakai pada aplikasi web yaitu yang lebih dikenal dengan aplikasi LAMP (Linux-Apache-MySQL-Perl/PHP/Python). Untuk menggunakan MySQL pada web, dibutuhkan PHP untuk men-submit command-command MySQL. Command-command pada MySQL disebut dengan Query.

Berikut adalah contoh simpel memakai MySQL dalam PHP bagi pemula.Contoh berikut menggunakan dua jenis query dasar yang banyak digunakan yaitu:

- Create table
- Insert row

Ada tiga file PHP yang kita butuhkan:
- index.php (untuk halaman muka sekaligus create table)
- insert.php (untuk melakukan query insert)
- show.php (untuk mendisplay isi database MySQL ke halaman web)



File: index.php

<?php

$con = mysql_connect("localhost","databasename","databasepassword");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

// Create database
if (mysql_query("CREATE DATABASE databasename",$con))
  {
  echo "Database created";
  }
else
  {
  echo "Error creating database: " . mysql_error();
  }

// Create table
mysql_select_db("databasename", $con);
$sql = "CREATE TABLE wi_1 
(
personID int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(personID),
Nama varchar(15),
Alamat varchar(15),
Telp int,
Email varchar(15)
)";

// Execute query
mysql_query($sql,$con);

//mysql_close($con);

?> 
 <html>
 <body>

 <form action="insert.php" method="post">

 <br>Nama: <input type="text" name="nama" />
 <br>Alamat: <input type="text" name="alamat" />
 <br>Telp: <input type="text" name="telp" />
 <br>Email: <input type="text" name="email" />
 <br><input type="submit" />

 </form>

 </body>
 </html>

File index.php terdiri dari dua bagian: yang berisi code php dan yang berisi code html. Bagian yang berisi php berfungsi untuk meng-connect ke MySQL server dan membuat database baru dengan kolom: Nama, Alamat, Telp, dan Email. Sedangkan bagian html berfungsi untuk menampilkan form yang isinya dipakai dalam MySQL query dengan perantara PHP. Perhatikan username, password, dan databasename harus benar.

File: insert.php

<?php
$con = mysql_connect("localhost","databasename","databasepassword");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("databasename", $con);

$sql="INSERT INTO wi_1 (Nama, Alamat, Telp, Email)
VALUES
('$_POST[nama]','$_POST[alamat]','$_POST[temp]','$_POST[email]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con);
?>

File insert.php berfungsi mengambil data dari isi form yaitu: nama, alamat, telp, dan email untuk dipakai dalam MySQL query.

File: show.php

<?php
$con = mysql_connect("localhost","airqecom_data","muhammad");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("airqecom_data", $con);

$result = mysql_query("SELECT * FROM wi_1");

echo "<table border='1'>
<tr>
<th>Nama</th>
<th>Alamat</th>
<th>Temp</th>
<th>Email</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['nama'] . "</td>";
  echo "<td>" . $row['alamat'] . "</td>";
  echo "<td>" . $row['Telp'] . "</td>";
  echo "<td>" . $row['Email'] . "</td>";  
  echo "</tr>";
  }
echo "</table>";

mysql_close($con);
?>

File show.php berfungsi untuk mengambil data dari MySQL database menggunakan query fecth, lalu menampilkan datanya dalam HTML.

Simpel bukan? Selamat mencoba!

Catatan:
- Cara menampilkan code pada halaman blog saya dapatkan dari http://thoughtsomething.blogspot.com/2008/11/display-html-javascript-code-in-blogger.html

Thursday, April 5, 2012

How to Solve Error GLIBCXX_3.4.xx Not Found in Matlab Ubuntu

Untuk mengcompile kode matlab (.m) ke shared library (.dll atau .so), seperti yang telah dijelaskan di postingan sebelumnya, akan muncul error berikut di Ubuntu 10.4 atau versi lebih baru:



Warning: You are using gcc version "4.5.2-8ubuntu4)".  The earliest gcc version supported
with mbuild is "4.0.0".  The latest version tested for use with mbuild is "4.2.3".
To download a different version of gcc, visit http://gcc.gnu.org 
/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/cc1: /opt/matlab/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /usr/lib/libppl_c.so.2)
/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/cc1: /opt/matlab/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libppl_c.so.2)
/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/cc1: /opt/matlab/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /usr/lib/libppl.so.7)
/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/cc1: /opt/matlab/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libppl.so.7)
/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/cc1: /opt/matlab/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libgmpxx.so.4)

Hal ini disebabkan karena Matlab mem-bundled software-nya dengan versi Gcc yang lama dan tidak kompatibel dengan versi Gcc yang dipakai Ubuntu.

Cara mengatasinya:

- Cukup hilangkan atau rename file yang error tersebut dari folder instalasi Matlab, dengan sendirinya yang dipakai adalah yang ada di Ubuntu :D

Contoh:
mv /opt/matlab/sys/os/glnxa64/libstdc++.so.6 /opt/matlab/sys/os/glnxa64/libstdc++.so.6.BAK

Thursday, February 9, 2012

Install Altera Linux Di Ubuntu

Pertama ubuntu defaultnya dash bukan bash. Maka ./setup dijalankan dengan :

bash ./setup --gui
Kedua, akan ada error sbb :

altera_installer_cmd: symbol lookup error: /usr/lib/i386-linux-gnu/libXi.so.6: undefined symbol: XESetWireToEventCookie

rename dulu file-nya :

sudo mv /usr/lib/i386-linux-gnu/libXi.so.6 /usr/lib/i386-linux-gnu/libXi.so.6.bak

jalankan lagi :

bash ./setup --gui

kalau sudah bisa run altera-nya, balikin lagi :

sudo mv /usr/lib/i386-linux-gnu/libXi.so.6.bak /usr/lib/i386-linux-gnu/libXi.so.6

oh yah installer-nya dalam *.iso, misalnya altera.iso :

sudo mkdir /media/iso

sudo mount altera.iso /media/isoimage/ -t iso9660 -o loop

Passing dan Calling C/C++ Struct di Matlab menggunakan Wrapper MEX-function

Matlab merupakan tools yang sangat powerful untuk melakukan komputasi matematis dan visualisasi grafik, termasuk pada aplikasi Digital Signal Processing (DSP). Dalam aplikasi DSP, kita sering bekerja pada dua domain bahasa, yaitu: C/C++ dan Matlab, karena kedua bahasa tersebut mempunyai kelebihan dan kekurangan masing-masing. C/C++ sangat portable, dieksekusi dengan cepat, dan dapat dijalankan di hampir semua platform, tapi tidak mudah melakukan visualisasi grafik. Sedangkan Matlab dapat dengan mudah melakukan visualisasi grafik, tapi lambat dalam proses eksekusinya, dan sangat tidak portable. Untuk menggabungkan C/C++ dan Matlab ada dua cara: penggabungan dilakukan di C/C++, atau penggabungan dilakukan di Matlab.

Untuk menggabungkan Matlab di C/C++, sudah dijelaskan pada tulisan sebelumnya. Untuk menggabungkan C/C++ di Matlab, digunakan MEX sebagai wrappernya. Tulisan ini menjelaskan penggunaan MEX untuk mewrap fungsi yang menggunakan C/C++ struct sebagai parameternya.

Selengkapnya baca di halaman Download atau ke link berikut.

Wednesday, February 8, 2012

Menjalankan Fungsi Matlab dengan Compiler C

Berikut ini kita akan belajar bagaimana membuat sebuah fungsi matlab (.m) bisa dijalankan di compiler C dengan platform Windows. Dalam hal ini kita menggunakan platform Microsoft Visual Studio. Cara ini akan memudahkan bagi kita apabila sebuah fungsi sudah cukup advance di matlab, dan kita hanya perlu memanfaatkannya (dalam bentuk shared library) tanpa perlu mengconvert code tersebut seluruhnya ke dalam platform C/C++. Kali ini kita akan membuat contoh sederhana sebuah code matlab yang akan dicoba dimanfaatkan dalam platform C (dalam bentuk shared library) kemudian bisa menghasilkan file .exe.

1. Pertama kita membuat fungsi matlab. Sebagai contoh fungsi coffeebreak.m sebagai berikut :

function coffeebreak
% Load the topographical data for the globe
load('topo.mat', 'topo', 'topomap1');

% Create a unit sphere with 50 facets. This sphere is the Earth.
[x,y,z] = sphere(50);

% Establish initial viewing and lighting parameters. Use Phong shading
% and texture mapping to wrap the topo map data around the sphere.

props.FaceColor= 'texture';
props.EdgeColor = 'none';
props.FaceLighting = 'phong';
props.CData = topo;

% Set the viewpoint to look at the Atlantic Ocean.
view(-130, 10);

% Draw the sphere, with the topo data texture mapped to the surface.
s=surface(x,y,z,props);
set(gcf, 'Color', 'white');  % White background
axis square
axis off
axis equal

title('Coffee Break  at Indonesian Chip Engineer.', 'FontSize', 14, 'FontWeight', 'Bold');
end

referensi code : http://blogs.mathworks.com/loren/2010/11/18/deploying-standalone-applications/

2. Kemudian jalankan program coffeebreak.m diatas di platform matlab dengan sintax berikut ini. Ini bertujuan untuk membuat file 'shared library'.
mcc -t -L C -W lib:mylib -T link:lib -h coffeebreak.m libmmfile.mlib

maka pada folder/directory tempat kita menyimpan, akan ada tambahan beberapa file sebagai berikut :
- mccExcludedFiles (text document)
- mylib.c
- mylib.dll
- mylib (export library file)
- mylib.exports
- mylib.h
- mylib (object file library)
- mylib.prj
- mylib_mcc_component_data.c
- readme.txt
3. Buka software Microsoft Visual Studio (MVS) dan membuat code C yang sesuai dengan mylib.dll yang sudah dihasilkan pada poin 2 diatas. Untuk membuat code C, kita membutuhkan software dependency walker untuk membaca fungsi-fungsi apa saja yang ada dalam mylib.dll.
4. Kalau belum memilki dependency walker, silahkan download di internet. Setelah file mylib.dll dibuka di software ini maka akan didapatkan fungsi-fungsi yang bisa kita gunakan sebagai fungsi code C kita. Dan berikut main.c yang bisa kita hasilkan :
#include 
#include < windows>
#include "mylib.h"

int main ()
{
mylibInitialize();       
mlfCoffeeBreak();
mylibTerminate();
/* ketiga sintac diatas diambil dari hasil extraksi mylib.dll dengan menggunakan software dependency walker */
}
5. Pada software Microsoft visual studio, bagian header files, silahkan ambil dari mylib.h yang sudah dihasilkan pada point 2.
6. Pada software Microsoft visual studio , klik pada bagian nama project, kemudian klik kanan. Pilih bagian properties. Pada bagian C/C++pilih bagian ‘general’ dan tambahkan ‘additional include directories’ dengan $MATLABROOT\extern\include\cpp;$MATLAB\extern\include
7. Pada bagian ‘preprocessor’ kita bisa tambahkan _MBCS, MSVC, MSWIND, IBMPC
8. Pada bagian ‘code generation’, pastikan untuk runtime library sudah tersetting : Multi-threaded Debug DLL (/MDd)
9. Pada bagian resource files, masukkan mylib.lib.
10. Pada folder computer kita, pastikan seluruh file pada poin 2 sudah berada satu directory dengan main.c.
11. Balik lagi ke software MVS, kita bisa compile project dengan cara ‘Build’ or ‘Rebuild’.
12. Setelah decompile, nanti pada bagian directory debug di computer kita bisa ditemukan file .exe.
13. Sebelum dijalankan, copy mylib.dll ke folder tempat .exe berada. Dan jalankan code exe-nya !!... maka hasilnya adalah sebagai berikut :


Silahkan mencoba ^_^

(fin / yan)


Referensi :
1. http://www.mathworks.com/support/solutions/en/data/1-18CBI/index.html?solution=1-18CBI
2. http://goffconcepts.com/techarticles/development/cpp/calldll.html

Tuesday, May 10, 2011

14th IEEJ International Analog VLSI Conference in Indonesia 2011


First Call For Paper

2011 IEEJ International Analog VLSI Workshop
November 2 - 4, 2011 Bali, Indonesia

INTRODUCTION
The Research Committee on Electronic Circuits of the Institute of Electrical Engineers of Japan (IEEJ) is sponsoring and cooperating with Bandung Institute of Technology and IEEE Indonesia Section to hold the 2011 International Analog VLSI Workshop in Bali, Indonesia, on November 2-4, 2011. The purpose of the workshop is to exchange information, ideas and recent research results on analog VLSI circuits and their applications. This workshop has formed a long-standing community for various analog VLSI circuit specialists from both industry and academia worldwide, and promoted active brainstorming among them at the site.

TOPICS:

   * Analog and Mixed Analog-Digital Integrated Circuits (Amplifiers,
      Filters, Comparators, Oscillators, Multipliers, Voltage/Current
      References, Sample-And-Hold Circuits, A/D and D/A Converters, PLL,
      High speed IO Interface, DC-DC converters)

   * Analog Signal and Information Processing  Applications
      (Telecommunication, Multimedia, Automotive Electronics, Biomedical
      Electronics, Consumer Electronics, Neural Networks, Sensing and
      Sensor Networks, Space and Military Electronics)

   * Analog VLSI Design Automation (Layout Techniques, Simulation
      Techniques, AHDL, Analog IP)   

   * Digital Circuits and Digital Signal Processing   

   * Biomedical Circuits and System   

   * Power Electronics   

   * VLSI Architecture

SUBMISSION
Authors are required to send their manuscripts written in English within 4-6 pages, along with information which includes the complete title, author name(s), affiliation(s) of author(s), and corresponding author (name, postal and e-mail addresses, telephone/fax numbers), via online submission at our website (to be announced) by June 10, 2011. After peer reviewing by experts, notification of acceptance will be sent via e-mail by August, 2011.

Camera ready manuscript should be prepared in the workshop format which is provided on the website. The deadline for camera-ready manuscript submission is August 19, 2011. At least one of the authors must register by September 2, 2011. Otherwise the paper will not be included in the workshop proceedings. It is mandatory that all accepted papers must be presented at the workshop.

IMPORTANT DATES
Deadline for Paper Submission : June 10, 2011
Notification of Acceptance : August 1, 2011
Deadline of Camera Ready Manuscript Submission : August 19, 2011
Deadline for Author Registration : September 2, 2011
Deadline for Early Registration (Non-Authors) : September 30, 2011

CONTACT PERSON
General Secretary: EVA MUCHTAR (Bandung Institute of Technology)
secretary@avw2011.stei.itb.ac.id

TPC Secretary: MICHITAKA YOSHINO (Hosei University)
michitaka.yoshino.43@adm.hosei.ac.jp 

*) Please contact TPC Secretary for technical matter, and ask other else to General Secretary.

Tuesday, May 3, 2011

Debugging di Eclipse: Memeriksa Element Pointer Array

Sebagai IDE, Eclipse bisa digunakan sebagai editor, builder/compiler, sekaligus debugger. Debugger di Eclipse berbasiskan GDB (GNU Debugger). Pada awalnya, GDB dibuat oleh Richard Stallman, penggagas open source software. Debugging menggunakan GDB saja tidak cukup, terutama karena set breakpoint pada GDB kurang intuitif, dan GDB tidak bisa menampilkan perjalanan step proses pada source code, ini juga berhubungan erat dengan intuisi debugging. Oleh karena itu, diperlukan front-end tools yang berbasis GDB untuk debugging, salah satunya Eclipse.

Sebagaimana layaknya tools GUI debugger, Eclipse menyediakan window khusus untuk menampilkan variable-variable dan nilainya. Bahkan jika nilai dalam variable berubah, Eclipse langsung memberikan tanda kuning pada variable tersebut, agar lebih eye catching. Tapi tetap saja debugging di Eclipse tidak se-"handy" Matlab, terutama karena ada tipe variabel yang nilainya tidak bisa langsung dilihat dengan mudah, yaitu pada kasus pointer. 


Jika pointer dimanfaatkan sebagai array, nilai masing-masing element dalam array tidak bisa terlihat dalam variable browser Eclipse. Berbeda jika array dibuat menggunakan static array. 

Untuk bisa memeriksa nilai element dalam pointer array, buka console GDB. Lalu ketikkan perintah GDB berikut.

print *([nama_pointer]+[index_awal])@[jumlah_element_yg_diperiksa]

Misalnya:


int *array;
array = malloc(5 * sizeof(int));
array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;

Maka, untuk melihat nilai element array data, sejumlah 5 element, ketikkan perintah berikut di console GDB Eclipse:


print *(array)@5

Bisa juga disingkat menjadi:

p *(array)@5

Berikut contoh beberapa command untuk memeriksa nilai element array (real case).

1. Memeriksa nilai array mulai index pertama sampai sejumlah 5 element array.

p *code_deconcat1_row.data@5

2. Memeriksa nilai array mulai index kedua.

p *(code_deconcat1_row.data+2)

3. Memeriksa nilai array mulai index kedua sampai sejumlah 4 element array.

p *(code_deconcat1_row.data+2)@4

Selamat mencoba =)