Post from Qt5

#include <QCoreApplication>
#include <QDebug>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrl>
#include <QUrlQuery>
void sendRequest();
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    sendRequest();
    return 0;// a.exec();
}
void sendRequest(){
   QByteArray data;
    QUrlQuery params;
    params.addQueryItem("param1", "value1");
    params.addQueryItem("param2", "value2");
    params.addQueryItem("param3", "value3");
    data.append(params.toString());
    qDebug()<<data;
    QEventLoop eventLoop;
    QNetworkAccessManager manager;
    QObject::connect(&manager, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
    QNetworkRequest request(QUrl("http://mars.dev/test"));
    request.setHeader(QNetworkRequest::ContentTypeHeader,QStringLiteral("application/x-www-form-urlencoded"));
    QNetworkReply *reply = manager.post(request,data);
    qDebug()<<"tunggu";
    eventLoop.exec(); // tunggu hingga request finish
    if (reply->error() == QNetworkReply::NoError) {
        //success
        qDebug() << "Success" <<reply->readAll();
        delete reply;
    }
    else {
        //failure
        qDebug() << "Failure" <<reply->errorString();
        delete reply;
    }
    qDebug()<<"selesai";
}

 

Advertisements

Standar Minimal Kemampuanku di Akhir Tahun ini

saya sudah bertekad menetap dengan 3 bahasa (utama) programming saya, C/C++ dan PHP.  mungkin sebagai tambahan ada javascript dan embel-embel untuk membuat tampilan seperti css dkk.

Untuk pengembangan diri, mungkin bulan-bulan ini saya akan belajar Make dan CMake. kedua senjata ini adalah senjata yang sama. seharusnya sudah saya kuasi beberapa tahun lalu, tapi tidak apa-apa. dipelajari saja.

selain Make dan CMake, sepertinya tidak ada yang lebih penting dari mempelajari kedua topik tersebut.

untuk programmer C/C++ memang “wajib” bisa menggunakan kedua senjata tersebut. agar tidak tersesat nantinya, buat yang ingin belajar C/C++,  selain belajar sintaksis,  haruslah secara bertahap belajar kedua senjata tersebut.

 

saat ini sedang mencari-cari referensi yang mudah dipahami. sepertinya memang tidak terlalu susah untuk mempelajari kedua senjata tersebut. dan memang keduanya dibuat untuk memudahkan. 🙂

 

catatan pribadi.

  1. belajar Make dan CMake
  2. beli buku Laravel 5, anggep liburan
  3. latihan membuat class di C/C++
  4. mencari source code yang bagus untuk dipelajari

Catatan OpenCV(1): cv::Mat

kali ini lagi mau nyatet tentang cv::Mat.

cv::Mat adalah sebuah class yg bisa kita bayangkan sebagai sebuah matrix.

cara bikinnya sih gampang.

cv::Mat A;

isi matrix A dengan gambar.

A=cv::imread(“C:\nai.jpg”);

cara lainnya:

cv::Mat A(400.600, CV_8UC3, Scalar(0,0,255));

ini akan membuat matrix 2 dimensi dengan ukuran 400×600, dengan pertitik berisi 8 bit (uchar) sebanyak 3 biji. nilai defaultnya adalah(0,0,255).

int sz[3] = {2,2,2};

Mat A(3,sz, CV_8UC(1), Scalar::all(0));

contoh di atas juga membuat matrik A. contoh tersebut membuat matrik A dengan lebih dari 2 dimensi. (gak ngerti yang ini, hii)

Mat A;

A.create(4,4, CV_8UC(2));//menggunakan fungsi create

Mat RowClone = C.row(1).clone();//mengcloning bari kedua.

perlu diingat:

cv::Mat B = A;

cv::Mat C(A);

kedua object tersebut sebenernya masih object yang sama dengan A. jika kita mengubah salah satu dari object ketiganya(A,B atau C) maka ketiga-tiganya akan berubah. itu karena sebenernya merujuk ke memori yang sama. 🙂

bisa juga kita membuat sebuah objek yang sebenernya juga mengarah ke A tapi dengan ukuran yang berbeda. anggap matrik yang telah kita buat di atas dimensinya 400×600. kita akan membuat objek Mat yg sebenernya masih merujuk ke memori matrik A tapi ukurannya lebih kecil.

cv::Mat D(A, cv::Rect(10,10,100,200));

nah object D tersebut sebenernya adalah sebuah object yang mengarah ke memori matrix A dengan posisi 10,10 dengan ukuran 100×200. jadi jika kita mengubah semua isi matrik D dengan 255. maka otomatis pada matrix A akan ada kotak seukuran 100×200 berwarna putih di posisi (10,10).

kalau mau bikin objek kopian mesti pakai fungsi clode() atau copyTo(),

cv::Mat J;

j=A.clone();

cv::Mat K;

A.copyTo(K);

Object dari cv::Mat dapat langsung di print ke cout.

count<<“Matrik A adalah”<<A<<endl;