Showing posts with label open source. Show all posts
Showing posts with label open source. Show all posts

Thursday, August 12, 2010

LifeRea Offline rss reader

Daku sudah menggunakan PenguinTV cukup lama. PenguinTV sebagai offline rss reader cukup handal, karena dia memiliki kemampuan untuk cache multimedia file, seperti flash file, image, movie dan sound. Tetapi beberapa minggu yang lalu, setelah daku memproses update otomatis dari repository ubuntu, secara tiba tiba PenguinTV saya tidak bisa bekerja dengan normal. Setiap ada news baru, maka ia akan membuka beritanya di http browser daku menuju alamat local.
Setelah berkali kali install dan uninstall, dan browsing di google untuk mencari solusi, akhirnya daku menyerah. Intinya tidak bisa lagi. Mungkin ada crash dengan salah satu library yang terinstall di tempat laptop. Kemudian dimulailah mencari cari offline rss reader yang lainnya. Berbagai alternatif dicoba dan akhirnya jatuh pada LifeRea. LifeRea ada di dalam repository ubuntu. Instalasinya cukup mudah dan bisa import opml dari PenguinTV saja. So here we come, dimulailah era LifeRea di laptop daku.

Thursday, November 19, 2009

Membuat applikasi baru di dalam pinax

So, setelah kita belajar meng-install pinax, berikutnya adalah membuat applikasi di dalam pinax.
Step nya sebagai berikut :

1. Kita start dulu website "mysite" yang sudah kita buat dengan pinax. Diartikel terdahulu, kita membuat project "mysite" ini berbasis "social-project". Mari kita start webserver "my-site" kita.

(pinax-env)$ cd mysite
(pinax-env)$ python manage.py runserver

2. Setelah server kita bisa di start, kita lihat di web-browser kita di http://localhost:8000, dan mari kita coba untuk login.

3. Nah setelah kita bisa login, maka kita akan melihat deretan tab di bagian atas. Ada profile, photos, blogs, tribes dan seterusnya. Di deretan tab inilah kita akan mencoba untuk membuat applikasi kita. Jadi kita buat Tab applikasi kita, "my_app". Untuk itu kita harus edit file templates/site_base.html dan tambahkan kode dibawah ini di area dimana tab-tab tersebut di daftarkan. Setelah itu file kita save.

 <li id="tab_my_app">{% trans "My App" %}</li>

4. Refresh web-browser anda. Nah seharusnya sekarang muncul tab baru yang ber-title "My App". Nah ini kita baru saja mendaftarkan applikasi kita di halaman pinax. Itu adalah link-nya. Applikasinya sendiri harus kita buat terlebih dahulu. Untuk itu kita perbaharui dulu syntax di point-3 tersebut menjadi berikut :

 <li id="tab_my_app"><a href="{% url my_app_index %">{% trans "My App" %} </a> </li>

Nah sintak tersebut akan terbaca "applikasi kita bernama my_app, kita registrasikan tab-nya dengan nama tab_my_app, dengan title My App, jika di click dia akan mencari url dengan alamat my_app_index".

5. Nah alamat url "my_app_index" tersebut berada dimana  ? tentu saja dia harus berada didalam applikasi my_app kita. Mari kita buat applikasi kita di dalam pinax terlebih dahulu, dengan sintak :

(pinax-env)$ python manage.py startapp my_app

7. Sayangnya applikasi my_app ini tidak berada di dalam directory apps, sehingga akan mengurangi kerapian dari project ini. Mari kita pindah directory my_app ke dalam directory apps.

(pinax-env)$ mv my_app/ apps

8. Nah applikasi yang telah kita buat tersebut harus kita daftarkan ke dalam file daftar alamat url di pinax. Kita edit file urls.py milik pinax dan kita tambahkan baris perintah dibawah ini di area urlpatterns :

(r'^my_app/', include('my_app.urls')),

9. Sintak diatas itu akan terbaca seperti berikut "Apabila ada yang mencari alamat applikasi my_app, coba baca juga dari file urls milik applikasi my_app".  Saat ini kita masih belum memiliki file urls.py di dalam direktory my_app, jadi mari kita buat file urls.py di dalam directory my_app dan berisikan sintak sintak sebagai berikut :

from django.conf.urls.defaults import *
from django.views.generic.simple import direct_to_template

urlpatterns = patterns('', url(r' ^$', direct_to_template, {"template": "my_app/index.html"}, name="my_app_index" ),
)

10. Nah dari sintak diatas terlihat bahwasannya alamat url my_app_index itu akan menggunakan tempat "index.html" yang berada di directory template. Saat ini kita tidak memiliki directory my_app di dalam directory template jadi kita harus membuatnya terlebih dahulu dengan sintak sebagai berikut :

(pinax-env)$ mkdir templates/my_app

11. Setelah itu kita buat file index.html di dalam directory template my_app, dan berisikan sintak sintak html seperti di bawah ini :

{% extends "site_base.html" %}

{% load i18n %}

{% block head_title %}{% trans "My App" %}{% endblock %}

{% block body %}
    {% blocktrans %}
        <p>Ini testing, UI Interface kita harus kita buat di file ini. </p>
    {% endblocktrans %}
{% endblock %}

12. Setelah itu kita kembali ke web-browser kita, kita refresh homepage-nya pinax, dan kita klik tab "My App" atau address bar kita isi http://localhost:8000/my_app/

Nah sekarang kita sudah bisa membuat applikasi kita, dan kita sudah mendaftarkannya di dalam pinax.


Thursday, November 05, 2009

Solusi composite primay key di Django

Mahalo, akhirnya setelah berkutat kesana kemari dengan ORM Django, akhirnya dapat juga solusi untuk mengatasi Composite Primary Key di Django. Django ORM menganut paham active_record, yang salah satu featurenya ada "1 kolom sebagai primary key" dalam suatu tabel. Persyaratan ini merupakan keharusan dalam sistem ORM Django.

Hal ini akan menimbulkan masalah pada saat kita akan memakai Django untuk sistem yang telah berjalan / legacy system, karena design tabel database di sistem tersebut banyak yang menggunakan composite key, atau lebih dari satu kolom sebagai primary key-nya.
Sebagai contoh kita ambil tabel kota, maka composite key nya adalah (kode_negara, kode_kota).

Nah solusi yang saya tawarkan adalah sebagai berikut :
  • buat satu kolom baru didalam tabel yang anda inginkan, dan jadikan kolom ini sebagai target untuk membuat primary key yang baru


    • alter table kota add column kota_id


  • kemudian di function save dari class model kota tersebut kita tambahkan perintah yang akan mengisi kolom kota_id dengan gabungan dari kolom kode_negara dan kode_kota


    • def save(self):
              if not self.kota_id:
                  self.kota_id = "%s%s" % (self.kode_negara, self.kode_kota)
                  super(Kota, self).save()



  • Kemudian pada saat save_edit, kita juga harus memastikan kolom primary key ini tidak ikut diubah oleh sistem.
Solusi yang saya tawarkan ini memang tidak 100% membuat saya puas, tetapi ini yang menurut saya terbaik saat ini. Dengan cara seperti ini, sistem yang sudah ada hanya perlu di ubah sedikit saja, tanpa merusak sistem yang lama.


Saturday, October 31, 2009

Installing Pinax

Hello All, berikut adalah catatan bagaimana instalasi pinax dilakukan di sistem Ubuntu 9.0.4 dan versi pinax adalah 0.7.1.

1. Download Pinax.
    Pinax software bisa kita download dari website pinaxproject dan ambil official release yang terakhir yakni versi 0.7.1. Django sudah termasuk didalam pinax software ini.

2. Extract file Pinax-0.7.1-bundle.tar.gz tersebut didalam directory project anda.

3. Selelah itu jalankan script untuk instalasi pinax di virtual environtment
$ python scripts/pinax-boot.py<path-to-virtual-env-to-create>
4. Setelah virtual environtment nya siap, berikutnya adalah mengaktifkan virtual environtmentnya
$ source <path-to-virtual-env-created>/bin/activate
5. Setelah aktif, maka di prompt di console kita akan berubah seperti berikut
(pinax-env)$
6. Berikutnya kita bisa melihat "template" project yang dimiliki oleh pinax, perintahnya seperti berikut :
(pinax-env)$ pinax-admin clone_project -l
7.  Favorite saya adalah membuat project yang berbasis "social-project", command nya sebagai berikut :
(pinax-env)$ pinax-admin clone_project social_project mysite

Mengapa saya memilih "social-project" walaupun pinax juga memiliki tempate "cms" ? reason-nya adalah multiple blogging nya. Dengan blogging ini knowledge management bisa dishare diantara pengguna sistem.

Oke sekian dulu.


Tuesday, October 20, 2009

Django + Pinax

Hi there,

Mau belajar Django + Pinax ?
Silahkan mengikuti Tutorial dari Fernando Correia ini, disana dia menjelaskan step by step menggunakan pinax. Harap di ingat saat tulisan ini di buat, versi dari pinax sudah di 0.7.1 sedangkan tutorial dari Fernando itu dibuat di versi 0.5.

Tetapi saya masih bisa memakainya, except project yang dipakai adalah "social-project" bukan "completed-project" seperti yang Fernando tulis.

Nah apa yang saya lakukan dengan Django dan Pinax ini ?.
Ide-nya begini, saya ingin punya applikasi yang bisa berkolaborasi dengan "CMS" atau "Social Networking" applikasi.  Jadi applikasi yang saya buat itu merupakan extention / bagian / component dari "CMS" atau "Social Networking" itu. Nah dengan pinax ini saya merasa bisa terwujud.

Pinax tetap merupakan suatu "library", yang di maintain oleh developer2-nya pinax, sementara applikasi yang saya buat merupakan extentionnya, dan yang memaintenance ya saya sendiri.
Begitu Pinax mengeluarkan release update terbaru, itu tidak akan mengganggu applikasi yang saya buat.

Hanya saja untuk versi saat ini, masih banyak yang harus di kejar dari Pinax. Terutama soal UI dan Functionalitynya yang masih terlalu sederhana.

Oke silahkan mencoba kombinasi django + pinax + applikasi-mu, dan mari kita belajar bersama.


Wednesday, August 19, 2009

Play again with django

Yup, Django lagi. Why ? karena sekarang mereka sudah ada di V1.1, dan aku rasa cukup berharga untuk di lihat kembali apa yang mereka bisa. Oke, after installation yang smooth tidak ada masalah. Testing dengan applikasi poll mereka hingga ke tutorial ke 2, akhirnya problem yang ada terlihat. Berikut keterbatasan dari Django yang mungkin akan menimbulkan masalah bagi applikasi yang aku buat di kemudian hari :

 1. Single DB Connection
Django hanya memperkenankan 1 koneksi database. Ini artinya applikasi DB yang dibangun dengan Django hanya akan bekerja dengan 1 database saja, sehingga applikasinya tidak bisa  berperan sebagai "bridge application".
Solusi-nya : mungkin ada cara untuk membuat database connection sendiri, terpisah dari django. masih harus research mengenai hal ini.

 2. Composite Primary Key
Yup, Django masih memiliki keterbatasan dalam hal composite primary key. Django masih prefer dengan "single column as their primary key column" atau "Active Record" istilahnya.
Solusi-nya :
   a. menghindari "Identity/Sequence" value sebagai primary key, sebagai gantinya pakai "select max(x)+1" atau generate "unique value" sendiri.
   b. merubah design database ke "Active Records" pattern.

So, dengan dua problem besar yang muncul ini dan alternatif solusinya, aku rasa worthed untuk di mencoba Django v1.1. So Lets play with it.



Friday, August 07, 2009

Internal Speaker Solved

Kemarin ada informasi dari repository ubuntu untuk melakukan update terhadap package package Ubuntu. Terus terang masih ada sedikit trauma untuk melakukan update package dikarenakan terakhir update prosess yang kulakukan membuat aku harus menginstall ulang driver linuxantaudio.

But akhirnya aku lakukan juga prosess update tersebut.
Setelah check disana sini, sepertinya tidak ada problem dan woalah... ternyata internal speaker problem yang aku hadapi kemarin sudah solve. Internal speaker sekarang hanya bisa berfungsi jika tidak ada jack audio external speaker yang terpasang.

Mantap dah hari ini.


Thursday, August 06, 2009

Ubuntu Jaunty 9.0.4

Just update my Dell inspiron 1420 with Ubuntu Jaunty 9.0.4. Overall work fine, except for compiz and internal speaker. My Dell inspiron usage intel vga, so I have to set my xorg.conf to "UXA" mode, and it made my compiz run faster.  The only problem left is my internal speaker is still running while I used external speaker on my sound jack-port. Still no clue, can you help me ?



Wednesday, April 08, 2009

Scalability challenges

Our Application Data is getting bigger and bigger.
This data growing is our challenges.

I need a replication on our Postgresql database.
Please give us advice.


Monday, March 02, 2009

Database Replication on Postgresql

Its already become a major issue, since our data growing faster, 2GB each year in average until this day. I predict next year, we will have around 3GB growing data each year. Thats big enough.

By looking the type of application we developed, we realy think we need multi-master replication on our database. Planned to install a DB server on each site and use replication mechanism to handle the data.

So, please, if anyone know a OSS tools to do multi-master replication for Postgresql-DB, let me know okay ?


Monday, February 02, 2009

Postgresql Replicator

looking for Postgresql replication tools.
message me if you knew one of it.

Tuesday, December 16, 2008

Living with open source software

simple question ... can we living with open source software ?

Monday, June 30, 2008

Thunderbird Lightning Extention Problem

Setelah laptop siap, ternyata ada satu hal yang kurang yakni lightning extention di thunderbird email client saya. Ternyata lightning terbaru 0.8 masih belum compatible dengan thunderbird yang ada di ubuntu hardy repository. Akhirnya terpaksa deh downgrade, aku uninstall lightning 0.8-nya dan install kembali lightning versi 0.7 di ubuntu hardy repository.

Ternyata ada pesan kegagalan yang mengatakan data calendar-ku itu dibuat pakai versi terbaru jadi lightningnya tidak bisa enable. Setelah browsing kesana kemari di google, akhirnya ketemu juga. Ternyata ada file yang namanya storage.sdb, nah ini file minyimpan calendar kita. Berhubung tidak ada data yang penting di calendar nya, saya delete lah file itu dan restart thunderbird nya kembali. woa, it goes normal.