Categories
Projects

Jom buat blog agregator.

Assalamualaikum semua!

So saya dapat satu ilham untuk project saya yang seterusnya, yakni “YourAgregator”. Semuanya bermula apabila saya buat blog nie. Saya mem-marketnye merata-rata di pelbagai facebook group, dan akhirnya dapat dalam 200 pageview dalam masa 3 hari. Pastu hari ke 4 takde pageview langsung… teng…teng…teng… Tapi tu bukan ceritanya., ceritanya ialah apabila saya mendaftarkan blog saya di blog http://iium-blogger.blogspot.com/. Yang agak pelik sikit ialah cara pendaftarannya ialah dengan memberi nama dan blog dalam comment kat salah satu post kat situ. So… memang tak macam pendaftaran. Tapi lepas tu, diorang ada letak widget baru yang special yang mana kitorang letak kitorang punya nama dan blog url kat dalam sejenis form, baru ok sikit, tapi tak nampak professional. Tambahan lagi, saya agak keliru dengan apa gunanya blog tersebut? dan apa manfaatnya terhadap blogger-blogger iium? Adakah blogger iium akan dapat traffik daripada senarai blog yang bermacam-macam tu? Siapa yang akan klik di situ? Dan kemudian saya teringat dengan salah satu website geek komputer yang sangat terkenal, AKA Slashdot. Slashdot ialah sejenis blog agregator. Slashdot tidak mempunyai maklumat sendiri, tetapi bergantung kepada submission daripada user-usernya.

So muncullah ilham untuk menghasiklan satu website sendiri yang dipanggil, “YourAgregator”. Saya pilik nama tu pasal…. saya tak tau nak letak nama lain. But that’s not the point. Your Agregator membolehkan pengguna membuuat group agregatornya sendiri, yakni slashdot mereka. Pengguna boleh submit rss mereka, dan kemudian apabila mereka update blog mereka YourAgregator akan secara automatiknya mensubmit post mereka kedalam agregator itu. Tambahan lagi, kita boleh buat ranking system, yang mana post yang lagi power, akan ditempatkan di front-page. hah? Amacam ok tak idea tu? 
YourAgregator masih lagi dalam pembikinan peringkat ‘alpha’ dan mungkin mengambil masa hampir seminggu untuk siap. So stay tune ok?
ps;….saya tak tau apa yang korang fikir, tapi bagi saya….BM saya agak teruk dan tak menarik. RookieCode pun lagi ok.
Categories
Personal

Belia Benci C++

Assalamualaikum, pembaca-pembaca sekelian.

Hari ini saya akan membincangkan tentang satu isu yang telah agak lapuk di dunia ini iaitu

Belia Benci C++

Ya benar tuan-tuan, Belia (sebenarnya saya) Benci C++.

Mari kita mulakan dengan status update saya pada hari ini, dan sebenarnya dari semalam lagi saya stuck kat benda ini. So harini saya telah menyambung project C++ saya yang ke…. saya tak ingat. Dalam pembikinan projek itu, yang sebenarnya agak besar sehinggakan saya terpaksa men-test dahulu bahagian kecil sebelum menyambung implimentasi yang seterusnya. Dalam pada itu, ini merupakan code test tersebut.

void test_gdserialization(){
   std::cout<<"\nDebugging DoubleArray Serialization";
   DoubleArray* thearr=new DoubleArray(10);
   for(int i=0;i<10;i++){
       thearr->data()[i]=(double)(rand()%100)/(double)(rand()%100);
   }
   std::cout<<"\nSerializing, data:";
   QString save=thearr->toString();
   std::cout<<"\n"<
   std::cout<<"\nEnd Save";
   std::cout<<"\nRetry Print";
   std::cout<<"\n"<
   std::cout<<"\nBegin load";
   DoubleArray* newarr=new DoubleArray(1092);
   newarr->fromString(save);
   std::cout<<"\nEnd load,Serializing,data:";
   QString newdata=newarr->toString();
   std::cout<<"\n"<
   if(newdata==save){
      std::cout<<"\nString match";
   }else{
      std::cout<<"\nString does not match";
   }
}

Long story, make short. Basically, apa yang code ini cuba buat ialah ia akan serialize DoubleArray yang pertama menggunakan 'toString()'. Dan ambil resultnya sebagai QString. QString sebahagian daripada Qt framework. Kenapa pakai QString? Kerana implicit sharing yang sangat memudahkan kerja. So dah dapat string daripada DoubleArray tu, kita buat satu lagi DoubleArray dan kemudian deserialize string yang tadi tu. Tapi disebabkan pelbagai masalah yang bermacam-macam dan setalah mengubah-ubah pelbagai code, akhirnya code fromString() menjadi sebegini:

void DoubleArray::fromString(QString data){
    std::cout<<"\nIn Double Array fromString()\nThe data is\n";
    std::cout<
    std::cout<<"Is it ok?";
    std::string buffer(data.toStdString());
    std::istringstream inputstream(buffer);
    boost::archive::xml_iarchive inputarchive(inputstream);
    DoubleArray* thenewone=this;
    inputarchive>>BOOST_SERIALIZATION_NVP(thenewone);
}

Ok, so basically ianya benda biasa. Lupakan perkara yang berserabut pada lima baris yang terakhir. Fokus kepada baris yang kedua. Apa yang ia buat ialah, ia print balik apa yang diberi di method argument yang pertama iaitu 'data' iaitu hasil daripada serialization yang lepas. Kalau kita tengok balik code sebelum ini di 'test_gdeserialization' baris yang ke 9 dan ke 12, ianya adalah arahan yang sama dan disebabkan 'fromString' yang di-call pada baris yang ke 15 menggunakan QString 'save', ia patut bertindak dengan cara yang sama betul? Tapi apa yang terjadi apabila kita jalankan test tersebut:

Haaa!? Ape kes!? Kok jadi begini-deh! Sabar-sabar,  kita gali sikit ape yang jadi...

Teng, teng, teng..... 'memory corruption'.

So apakah yang telah terjadi? Kalau kita cuba google perkara ini, kita akan mendapati yang 'malloc(): memory corruption(fast)' menandakan bahawa program tersebut telah cuba untuk mengakses data di luar range yang telah diminta daripada 'malloc()'. Tetapi ada beberapa kemushkilan, di sini. Iaitu, di function 'test_gdeserialization' baris yang ke 9 dan ke 12, telah mem-print seperti mana juga di 'fromString()'. Hal ini dapat dibuktikan apabila kita menggali lagi dalam error tadi:

Ada perkataan 'end save' dan 'retry print' iaitu std::cout di 'test_gdeserialization' pada baris yang ke 10 dan ke 11, itu menandakan bahawa 'std::cout' pada baris yang ke 9 telah berjaya di laksanakan. Begitu juga dengan 'std::cout' pada baris yang ke 12, dibuktikan dengan mesej:

Perkataan 'Begin Load' patut dikeluarkan pada baris yang ke 13, yang bermakna 'std::cout' pada baris yang ke 12 telah berfungsi.

So... Ape ke hehnye? And then entah kenapa, apabila kite try sekali lagi dalam debug mode, masalahni tak keluar, keluar masalah lain (biasa lah tu). Tapi yang kat release mode masih sama. So far lah.

Categories
Personal

Introduction.

Assalamualaikum, wahai pembaca-pembaca sekelian (kalau ada). Mari saya perkenalkan diri saya.

Kamu boleh panggil saya asdacap (sebutannya saya sendiri tak tau). Itu bukan nama sebenar. Umur saya 18 tahun, saya seorang lelaki (asdacap itu “asd” + “acap”, “acap” = lelaki). Saya sedang belajar di pusat asasi UIA Petaling Jaya, dalam course ICT. Saya tergolong dalam golongan yang kamu panggil ‘geek’ komputer, dan agak berkemahiran dalam bidang perkomputeran.

Tujuan post ini adalah untuk men-tujuankan blog ini dengan memberi introduction tentang ape-ke-heh-nye dengan blog ini. Blog ini adalah blog peribadi saya yang pertama dan saya akan secuba mungkin mengekalkan bahasa melayu dalam blog ini. Walaupun ini adalah blog peribadi saya yang pertama (yang sepenuhnya online … agaknya), ianya bukanlah blog/website yang pertama saya karang. Antara blog/website lain ialah:

By the way, saya sebenarnya lebih selesa kalau menulis dalam bahasa inggeris (pasal rookiecode.blogspot.com) so.. kalau saya campur BM+BI , tambah sambal sikit, tak pedas sangat kan? 
By the way (again), kalau korang perasan, bila korang google “bagaimana membentang dengan baik”, blog saya (pembentanganbaikasdacap.blogspot.com) akan dapat ranking yang pertama. Tak caye? Cuba try sekarang, bukak tab baru, bukak google (www.google.com), pastu taip “bagaimana membentang dengan baik”. Dah? Percaya tak? Ok,ok, saya tau korang tengah cakap “what the @#%& !?, ranking pertama siot!” atau lebih menakutkan lagi korang fikir “Eh, itu blog rujukan aku !”. Sebenarnya, ranking itu memang sepenuhnya nasib sahaja, dan pageview hanya dalam 300 sebulan dan ditambah lagi bounce rate 70%, so memang nasib (yang sebenarnya agak buruk) sahaja. Blog itu sebenarnya sebahagian daripada jurnal saya.
4 result yang pertama + show more result.

Dulu-dulu pada tahun 2009, fikiran saya sangat stress, jadi saya buat jurnal. Dalam jurnal tu, saya tulis macam-macam dalam pelbagai bahasa saje nak lepaskan stress. Lebih tepat lagi apa-apa yang saya rasa saya nak taip. Sesetengah daripadanya saya print, pastu saya bagi kat member-member saya, kenapa? Entah, saja nak lepaskan stress. Kebanyakan jurnal itu sebenarnya agak lawak, macam ada salah satu daripadanya bertajuk “polisi cinta saya”. Yang itu (bagi saya) antara yang agak smart. Dan ada juga yang bersifat sebagai rujukan atau panduan seperti “panduan membentang dengan baik”, jeng…jeng…jeeng… So, “panduan membentang dengan baik” adalah antara article yang saya letak kat internet dengan harapan mungkin ia dapat membantu orang lain. Sebenarnya saya letak jugak semua post-post 2009 yang lain, semuanya berjumlah lebih kurang 22000 perkataan (record whoa!), tapi post yang lain letak kat blog yang lain. Dan sebenarnya lepas 2009, saya dah tak stress sangat, lalu penulisan jurnal saya telah berkurangan dengan sangat drastik, sehinggakan hampir tiada lagi jurnal.
Ops, balik ke cerita, so, saya letak jurnal saya kat blogger pada hujung tahun 2009. Lepas tu, saya bertukar dari pakai yahoo mail kepada gmail, maka saya buat account blogger baru untuk projek-projek baru. Lama kelamaan dalam lepas SPM, saya terfikir nak jenguk balik account blogger lama, saja nak tengok-tengok. 
Blog pertama….pageview…0, cantik… 
Maksud saya, takkanlah google tiba-tiba berminat dengan jurnal saya kan? dengan SEO blogger yang teruk lagi tu… aku check lagi blog lain, 
Blog kedua…pageview 0, cantik…. 
standardlah blog copy-paste tak dapat pageview langsung kan?…
Blog ketiga… pageview 317….
Ehem… pardon me… lap-lap cermin mata, refresh, F5, F5,
 …pageview 318….
So waktu tu aku pun macam “What the ####?”, check-check keyword, try google, “bagaimana membentang dengan baik”….then, aku pun macam “what the @#%& !?, ranking pertama siot!”, macam korang jugak lah kan?
Dah perasan pasal tu, saya pun berasa ter-tanggungjawab terhadap 318++ penggoogle dari malaysia, singapore dan brunei itu, terhadap maklumat tersebut yang sebenarnya ialah jurnal saya. So saya update sana-sini, tukar design, bagi warning -“Ini diari aku la! Jangan percaya sangat kat aku nie!”-, tambah lagi sikit post, sampai kalau korang google “powerpoint berkesan”, blog tu ranking yang ke 3. Tapi setakat tambah sana-sini sahaja. Kalau diikutkan, rookiecode ada lagi banyak post, tapi mungkin pasal rookie code ada banyak competition, jadi pageview pembentanganbaikasdacap.blogspot lagi banyak, buat malu aje.
Post “Powerpoint Berkesan” sebenarnya tidak ada dalam jurnal, ia ditambah.

So, itulah sikit-sikit cerita pasal blog lama saya. Ada lagi blog lain yang takde pageview langsung, tapi pasal agak private sikit (dah diari aku, duh!), kemungkinan besar korang takkan jumpa jurnal lama aku, melainkan aku tiba-tiba lembut hati nak dedahkan segala rahsia yang ada di hati, yang mana probabilitinya agak rendah. 
Anyway, pasal ini post pertama aku, subscribe-lah blog ini supaya jiwa ini terasa lebih dihargai. Sekian terima kasih….Bye…