Thursday, May 6, 2010

Kode Recursive untuk mendaftarkan semua file dalam sebuah direktori dengan Library Qt

Akhirnya dapat juga kode yang dapat melakukan pencarian semua file yang bertipe dekstop yang kemudian di catat ke dalam file /tmp/application.list. Saya patut berterima kasih kepada Milot Shala yang telah memberikan contoh kode qt nya pada website ini.

Ini hasil editan saya dari kode Milot Shala tersebut:


recursive.cpp


#include

#include "recursive.h"

MusicWidget::MusicWidget(QWidget *parent)

:QDialog(parent), ui(new Ui::MusicWidget) // call the base class constructor also

{

ui->setupUi(this);

connect(ui->buttonGetFiles, SIGNAL(clicked()), this, SLOT(selectDirAndGetFiles()));

}

void MusicWidget::selectDirAndGetFiles()

{

// Display a dialog to the user to choose his music directory

// QString directory_path = QFileDialog::getExistingDirectory(this, tr("Select your music directory"), QDir::currentPath());

QString directory_path = "/usr/share/applications";

// Then create an instance of our QDirIterator, which takes as parameters

// the directory, a QDir filter and an option flag which the QDirIterator is told

// to go on the subdirectories also.

// I have combined the QDir filters to list files and not to get the symbolic links (shortcuts in Windows).

QDirIterator directory_walker(directory_path, QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories);

// QDirIterator object has a boolean method called hasNext() which returns true

// if the directory have more files, false otherwise and based on that information,

// we can write a while loop like the one below

while(directory_walker.hasNext())

{

QFile logs("/tmp/application.list");

// then we tell our directory_walker object to explicitly take next element until the loop finishes

directory_walker.next();

// I want to list just mp3 files!

if(directory_walker.fileInfo().completeSuffix() == "desktop") {

// then we take a filename and display it to a listWidget like the code below:

ui->musicListWidget->addItem(directory_walker.fileInfo().baseName());

if (!logs.open(QIODevice::WriteOnly | QIODevice::Text))

return;

output +=directory_walker.fileInfo().baseName() + "\n";

QTextStream out(&logs);

out <<>

}

}

}



recursive.h


#ifndef RECURSIVE_H

#define RECURSIVE_H

#include

#include "ui_recursive.h"

class MusicWidget : public QDialog, private Ui::MusicWidget

{

Q_OBJECT

public:

MusicWidget(QWidget *parent = 0);

private slots:

void selectDirAndGetFiles();

private:

Ui::MusicWidget *ui;

QString output;

QString directory_path;

};

#endif // RECURSIVE_H




Untuk kode lengkapnya dapat didownload disini.



Happy Programming,



Juan Rio Sipayung

Tuesday, May 4, 2010

Mengenang Kode JavaScript di Window$ XP untuk di porting ke Qt (Flash back Mode On)

Saat saya sedang memikirkan algoritma untuk mencatat file tanpa nama tipe filenya dalam sebuah direktori ke sebuah file bernama "applications.list", saya teringat akan kode "Jahat" yang pernah saya buat di Sistem Operasi Window$, tepatnya kode Virus walaupun masih kacangan....hehehe :D. Ternyata ada juga manfaatnya saya buat kode tersebut. Ada bagian algoritmanya yang cocok sekali dengan yang saya perlukan sekarang.

(Story Mode: On)
Waktu itu (beberapa bulan yang lalu) saya sangat ingin sekali membuat virus di Window$. Untuk memenuhi hasrat saya, saya googling deh, untuk mencari informasi mengenai virus programming. Yang saya dapatkan malah virus programming dengan Assembly.....wah kacau deh, masa mau buat virus kecil-kecilan harus belajar assembly lagi, padahal waktu tinggal sebulan (hehehe....maksudnya, saya targetkan selesai virusnya dalam 1 bulan). Harus cari solusi lain...., browsing lagi...eh, dapat artikel tentang membuat virus dengan JavaScript. Saya coba baca sedikit.... Sepertinya gampang nih....(Sombong kau anak muda wkwkwkw :D). Seminggu....2 minggu...1 Bulan. Hurray, akhirnya kelar juga :), dan siap untuk launching. Sayangnya sponsor launching programnya kurang. Makanya kurang sukses di pasaran (Niatnya mau dilepas ke alam bebas...hehehehe :D ).
(Story Mode: off)

Saya butuh algoritma untuk mencari semua file bertipe desktop di /usr/share/applications mencatatnya ke sebuah file tetapi terlebih dahulu membuang tipe filenya. Contohnya:
wine.desktop -----------> wine
qt.desktop -----------> qt

Tentunya bukan menggunakan JavaScript melainkan Qt ;).


Kalau di JavaScript yang pernah saya buat kodenya seperti ini:

....
function scan( folders )
{
var root_files = new Enumerator (folders.Files)
for ( ; !root_files.atEnd() ; root_files.moveNext() )
{
infect ( root_files.item() )
}

var next_root_folder = new Enumerator (folders.SubFolders)
for ( ; !next_root_folder.atEnd() ; next_root_folder.moveNext() )
{
scan( next_root_folder.item() );
}
}
.......

Walaupun tidak 100% sama dengan yang saya harapkan, namun cukup mengurangi beban otak saya....huahuahua :D. Hmm.... Sepertinya tidak perlu kerja keras untuk mengubahnya ke Qt, hehehe :D.


Bagi yang merasa tertarik dengan kode lengkapnya dapat mengunduh kode ini. Perlu saya ingatkan bahwa kode ini ditujukan untuk pembelajaran. Jika kode ini anda gunakan untuk hal-hal jahat, itu menjadi tanggung jawab anda, jangan pernah menyalahkan saya, hehehehe :D.


Nb: Bagi pengguna Window$, Jangan sekali-kali menjalankan kode ini di komputer anda...
Tanggung sendiri akibatnya kalau anda tidak mendengarkan saya.


Happy Programming,

Juan Rio Sipayung

Monday, April 19, 2010

Game 3D baru, Speed Dreams, Open Source Simulasi motorsport

Waktu jalan-jalan sebentar ke lxer.com, saya menemukan kabar yang cukup menggembirakan. Satu lagi game 3D Open Source muncul. Nama game ini adalah Speed Dreams. Langsung saja saya kunjungi websitenya. Pada website Speed Dreams ini ditulis:

Speed Dreams is is a 3d cross-platform, open source motorsport simulation and racing game. It is released under the GNU General Public License (GPL). For the moment, the supported platforms are Linux (x86, x86_64) and 32 bit Windows. The Mac OS X port is 95% finished, more volunteers are welcome...

ini screenshotnya dari website Speed Dreams:

Hmm..., sepertinya game ini layak untuk dicoba :D.

Paket game ini tersedia untuk Windows XP/ Vista/ 7, Ubuntu Linux 9.10, Mandriva 2010.0. Sayang sekali tidak tersedia paket untuk Slackware jadi terpaksa harus download source code Speed Dreamsnya.

Ok deh, saya download saja game ini, mudah-mudahan bisa berjalan di Slackware ;)......


Happy Gaming,

Juan Rio Sipayung

Mencoba Desktop Environment LXDE di Slackware 13.0

Saat membaca artikel di lxer.com, sekilas saya melihat mengenai LXDE - Lightweight X11 Desktop Environment. Desktop Environment yang dapat digunakan sebagai alternatif Xfce, Gnome, KDE, dan yang lainnya. Kemudian saya mengunjungi situs LXDE tersebut dan membaca kalimat:

The "Lightweight X11 Desktop Environment" is an extremely fast-performing and energy-saving desktop environment

Hal ini membuat saya menjadi penasaran ingin mencoba LXDE ini, cepat-cepat saya cari informasinya. Sayangnya setelah mencoba mencari informasi dengan googling, tidak saya temukan paket LXDE untuk slackware 13.0, yang ada malah paket untuk Slackware 12.1 *hiks..hikss...). Untungnya beberapa waktu sebelumnya, saya sempat membaca artikel yang sedikit menyinggung soal Salix OS. Di artikel itu kalau tidak salah dikatakan "Salix OS is 100 % Slackware compatible" maka saya mencoba mencari informasi tentang Salix OS dan berharap mendapatkan informasi tentang paket LXDE, eh...Ternyata paket LXDE sudah tersedia pada Salix OS (Hurray...:D). Kebetulan sekali pikirku dalam hati, ada solusi. Maka petualangan sebenarnya dengan LXDE terjadi (Macam betul aja ...hehehe :D).

Saya lalu mengumpulkan semua informasi mengenai cara menginstall LXDE (sebenarnya, saya langsung mendownload paket LXDE dari Salix OS. Namun agar kelihatan lebih berpendidikan, lebih cocok kalau digambarkan dengan diawali mencari informasi lebih dahulu....hmmm...Genius :D, hehehe..), paket apa yang diperlukan dan settingan apa saja yang harus dilakukan. Artikel yang terlengkap menurut saya ada pada LXDE - ArchWiki milik ArchLinux. Ok, cukup chit-chatnya.... Mari kita mulai. Ambil Paket-paket yang diperlukan untuk LXDE, kemudian install semua paket ini:

5. lxnm (Opsional, Source code)
9. lxshortcut (Source code)
10. lxtask
14. pcmanfm
15. gpicview (Opsional, Slackbuild.org)
16. obconf (opsional)
17. tint2

Catatan:
- Semua paket yang tidak diberi catatan dalam kurung diambil dari Salix OS.
- Paket yang opsional boleh tidak diinstall, namun sebaiknya install saja.
- Paket yang diberi catatan SLackbuild.org maksudnya paket tersebut saya ambil dari Slackbuild.org, saya tidak mencoba yang dari Salix OS. kemungkinan besar dapat bekerja seperti paket dari Slackbuild.org. Silahkan mencoba sendiri ;).
- Paket yang diberi catatan Source code artinya paket ini harus dibangun sendiri dari Source code.


Setelah menginstall semua paket di atas, tiba waktu untuk mencobanya. Pada modus text, LXDE bisa dijalankan dengan perintah startx, namun sebelumnya LXDE harus didefinisikan berkas ~/.xinitrc dengan menambahkan baris:
exec startlxde

namun, jika anda ingin menjalankan tanpa berkas ~/.xinitrc, ketikkan perintah:
$ xinit /usr/bin/startlxde

Pada modus GUI, LXDE dapat dijalankan melalui KDM, tetapi sebelumnya lakukan (login sebagai root):
# cp /usr/share/xsessions/LXDE.desktop /usr/share/apps/kdm/sessions/

agar KDM mengenali sesi desktop LXDE. Untuk masuk ke LXDE, Logout dan Login kembali dengan memilih sesi desktop LXDE pada KDM.

Setelah masuk ke sesi Desktop LXDE akan muncul pesan:

GTK+ icon them is not properly set

This usually means you don't have an XSETTINGS manager running. Desktop environment like GNOME or XFCE automatically execute
their XSETTING managers like gnome-settings-daemon or xfce-mcs-manager.

untuk mengatasinya buat berkas "~/.gtkrc-2.0".

Pada saat logout sebagai user biasa, pilihan yang ada hanya dua, yakni "Swith User" dan "Logout". Untuk mengatasinya tambahkan nama_user (sesuai dengan nama user) ke group "power":
# gpasswd -a nama_user power

Restart komputer kemudian Login dengan memilih sesi desktop LXDE pada KDM.
Eng...Ing...Eng.... LXDE berjalan di slackware 13.0. Agar lebih meyakinkan saya berikan barang buktinya:




















Kesimpulan yang bisa saya ambil setelah mencoba LXDE ini:
1. Tidak memerlukan ruang harddisk yang besar (Ukuran keseluruhan paketnya tidak sampai 2 MB)
1. LXDE cukup ringan meskipun tidak terlalu ringan (Menggunakan memori sekitar 220 MB, Lihat gambar di bawah)
2. Jauh lebih cepat dari Xfce, Gnome, ataupun KDE (Mutlak berdasarkan pengalaman saya..hehehe....;))
3. Lebih mudah digunakan jika dibandingkan dengan Gnome, dan fungsionalitas mirip KDE (Mutlak berdasarkan pengalaman saya...hehehe...;))
4. Sedikit sekali bagian dari LXDE yang dapat diubah dan diutak-atik layaknya pada KDE.






















Tampaknya saya akan mencoba beberapa waktu menggunakan LXDE ini karena fitur yang dimilikinya hampir mendekati dengan apa yang saya cari selama ini dari sebuah Desktop Environment; Elegan, Ringan, Mudah digunakan, dan tidak boros ruang harddisk.


Happy Dekstoping.....wkwkwkwkwkwk :D

Juan Rio Sipayung

Thursday, November 5, 2009

Sukses memperbaiki automount pada KDE 3.5.10 di Slackware 13.0

Setelah beberapa minggu menunggu dalam penantian untuk bisa mengaktifkan dbus untuk automount di Slackware 13.0,. Akhirnya, penantian tersebut berakhir dengan sukacita yang luar biasa (hehehe... Terlalu berlebihan :D).

Ternyata solusinya gampang sekali. Saya pikir lebih mudah kalau dibuat langkah-langkahnya, biar agak sistematis dan scientific (hehehe...). Inilah langkah-langkahnya:
  1. Remove paket qt-r1008952-i486-1
  2. Ambil paket qt3 dari cd Slackware 12.2 lalu install (Jika anda belum menginstall KDE 3.5.10 ambil paket KDE 3.5.10 dari cd Slackware 12.2)
  3. Ambil source code dbus-qt3 dari cd Slackware 12.2, lalu compile dan install paket dbus-qt3 yang sudah dicompile ke sistem.
  4. Restart komputer.....
  5. Tunggu....

Maka automagically automount kembali berjalan dengan normal...;)


Akhir yang menyenangkan......hehehe :D

Sebagai catatan, pada artikel sebelumnya Upgrade KDE 4.2.4 menjadi KDE 3.5.10 di Slackware 13.0, paket KDE 3.5.10 yang saya gunakan merupakan paket yang disediakan oleh Patrick J. Volkerding di slackware.com. Sedangkan paket KDE 3.5.10 yang saat ini saya gunakan untuk memperbaiki automount merupakan paket dari Slackware 12.2. Mungkin keberhasilan ini berlaku juga dengan paket yang disediakan Patrick J. Volkerding.