Prosedure MySQL pertamaku.

fasilitas ini sebenernya fasilitas kuno yang tersedia di mysql. cuman kali ini aja kayaknya butuh prosedur untuk menginput datanya. so, belajar dulu. dan alhamdulillah berhasil sesuai dengan yang diinginkan. πŸ™‚

 

ini dia prosedure buatan saya:

DELIMITER $$

DROP PROCEDURE IF EXISTS `save_state`$$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE `kang_aep`.`save_state`(id_line VARCHAR(10),
fg_qty INT,
ng_qty INT,
er_qty INT)
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT ‘string’*/
BEGIN
DECLARE last_id INT(11) DEFAULT 0;
DECLARE last_fg INT(11) DEFAULT 0;
DECLARE last_ng INT(11) DEFAULT 0;
DECLARE last_er INT(11) DEFAULT 0;
DECLARE newNG BOOL DEFAULT FALSE;
SELECT MAX(t_counting_id)
INTO last_id
FROM t_counting
WHERE t_counting.`line_id` = id_line;

SELECT t_counting_id,
COALESCE( fg_quantity,0),
COALESCE(ng_quantity,0),
COALESCE(e_quantity,0)
INTO last_id, last_fg, last_ng, last_er
FROM t_counting
WHERE t_counting.`line_id` = id_line
AND t_counting_id = last_id;

WHILE last_fg < fg_qty DO
SET last_fg := last_fg + 1;
INSERT INTO t_counting(line_id,ng_quantity, fg_quantity,e_quantity, TYPE)
VALUE(id_line, last_ng, last_fg, last_er, “FG”);
END WHILE;

WHILE last_ng < ng_qty DO
SET last_ng := last_ng + 1;
INSERT INTO t_counting(line_id,ng_quantity, fg_quantity,e_quantity, TYPE)
VALUE(id_line, last_ng, last_fg, last_er, “NG”);
SET newNG := TRUE;
END WHILE;

WHILE last_er < er_qty DO
SET last_er := last_er + 1;
INSERT INTO t_counting(line_id,ng_quantity, fg_quantity,e_quantity, TYPE)
VALUE(id_line, last_ng, last_fg, last_er, “ER”);
END WHILE;
IF newNG THEN
INSERT INTO `t_message`(`number`, `message`)
(SELECT `telp`, CONCAT(“Telah terdeteksi metal di line (“, `linename` ,”), plan (“, `planname`, “) sejumlah “, `ng_quantity`, “pcs dengan klaim error sejumlah “, `e_quantity`, “pcs.”) message
FROM `v_pre_sms` WHERE `v_pre_sms`.`line_id` = id_line);
INSERT INTO outbox(`DestinationNumber`, `TextDecoded`)
(SELECT `telp`, CONCAT(“Telah terdeteksi metal di line (“, `linename` ,”), plan (“, `planname`, “) sejumlah “, `ng_quantity`, “pcs dengan klaim error sejumlah “, `e_quantity`, “pcs.”) message
FROM `v_pre_sms` WHERE `v_pre_sms`.`line_id` = id_line);
END IF;
END$$

DELIMITER ;

alhamdulillah berjalan dengan baik sekali. πŸ™‚

Tutorial Integrasi C++/Qt5 dengan QML.

pagi ini saya bermain-main dengan QML untuk menampilkan data. mungkin sebagian belum familiar dengan QML. yang tidak tahu, boleh cari info di google. gak apa-apa. bukan ilmu agama yang mengharuskan bersanad. cayoo…

QML itu semacam css3. cuman gak pake div-div-an. Β kalau mau belajar, sedikit saja. saya kira yang suka ngoprek tampilan akan jatuh cinta.

kali ini saya hanya mau membahas bagaimana untuk mengintegraskan antara QML dan C++. mainset utamanya adalah, C++ menngontrol QML, QML memberikan signal pada C++. jadi bukan signal-slots secara penuh layaknya antar object di C++.

tahap persiapan. buat project untuk membuat qwidget. buat file resource/qrc. lalu buat file qml baru, masukkan ke qrc.

tahapan selanjutnya:

QQuickView * qml = new QQuickView();

QWidget * wid = QWidget::createWindowContainer(qml, this);

qml->setSource(QUrl(“qrc/namaqmlnya.qml”));

QObject * rootQml = qml->rootObject();

QVBoxLayout *ly = new QVBoxLayout(this);

ly->addWidget(wid);

this->setLayout(ly);

nah, kita sudah punya objek qml, wid, dan rootQml. rootQml inilah yang nantinya akans sering kita pakai. cayoo…

saya ngoding dulu ya. saya tinggal dulu. nanti semoga sempat dan “kenceng” saya update lagi. πŸ˜€

Linux, Open Port Serial Without root permission.

terkadang kita membuat aplikasi di linux yang memiliki modul yang membutuhkan hak akses membuka port serial. namun, karena secara default, user biasa di linux tidak memiliki hak akses untuk membuka portΒ  serial port, maka kita diharuskan untuk menambahkan sudo atau gksudo pada shotcut aplikasi kita. cara ini sangat berguna. saya juga lama menggunakan cara ini. kelemahan cara ini adalah, kita akan selalu diminta memasukkan password setiap membuka aplikasi kita. sungguh sesuatu yang sangat tidak nyaman. apalagi aplikasinya akan di deliver ke customer kita.

ternyata ada cara lain yang menurut saya lebih baik. yaitu dengan mendaftarkan user linux-nya ke group dialout. commandnya sebagai berikut:

sudo usermod -a -G dialout usernamelinuxnya

lanjutkan dengan ritual seperti biasa, yaitu logout dan login. lalu, coba buka aplikasi buatan kita, insyaAllah akan bisa membuka port serial tanpa harus menggunakan akses root. πŸ™‚

QT5, Mengatasi “QMYSQL driver not loaded”

  1. cd /opt/Qt5.6.0/5.6/gcc_64/plugins/sqldrivers
  2. ldd libqsqlmysql.so
  3. jika ktemu “libmysqlclient_r.so.16 => not found“, pindah ”
    cd /usr/lib/x86_64-linux-gnu"
  4. cp libmysqlclient_r.so.18 libmysqlclient_r.so.16
  5. ulangi langkah 1 hingga 2, jika ketemu “libssl.so.10 => not found”, lanjutkan ke langkah 3. lalu, “sudo ln -s libssl.so.1.0.0 libssl.so.10”.
  6. ulangi langkah 1-2, jika ketemu “libcrypto.so.10 => not found”, lanjutkan ke langkah 3, lalu, “sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10”.

sekian terima kasih. semoga membantu. πŸ™‚