Rabu, 27 Januari 2016

RabbitMQ di Cygwin

Perdjoeangan...

Saya sebut perdjoeangan karena banyak hal yang belum saya faham sedangkan resource dokumentasi yang membahas ini terbatas. RabbitMQ sebenarnya sudah punya dokumentasi yang lengkap (Windows, Generic Linux, Solaris, Ubuntu); tapi untuk Cygwin saya masih bingung karena tidak di-state dengan jelas di sana. Bingungnya apakah saya install secara windows, unix atau ubuntu? Instalasi binary di windows mungkin cara paling mudah, tapi somehow saya rasa bukan itu solusinya. ada sedikit diskusi yang membahas ini di stackoverflow, saya akan dokumentasikan perjalanan instalasinya di sini. Semoga bisa.

Selasa, 26 Januari 2016

Install Packages di Cygwin

Bagi pemula di cygwin, biasanya urusan update atau install paket rada kebingungan. Caranya gak sama dengan cara yang biasa dipake di Linux, rada tricky.. kita gak bisa langsung pake sudo apt-get install di sini. Untungnya ada banyak sumber yang ngasih tau cara buat install paket di cygwin ini. Salah satunya di sini.

Kamis, 21 Januari 2016

Perbedaan Instance, Object, Class

Oke, ini adalah pelajaran dasar programming. Tapi masih aja ada yang bingung tentang beda instance, object dan class. Salah satunya saya. Pengertian yang saya fahami dari senior saya dulu tentang instance dan object sederhananya begini.. Ibaratkan ada sebuah cetakan kue. Cetakan kue itu adalah class sedangkan kue adalah objectnya. Okay sampai di sini saya agak sedikit mengerti. Tapi tetap saya masih penasaran apa sih sebenarnya beda ketiganya?

Method dan Function

Saya sering bingung kalau diminta menjelaskan dua kata ini; method dan function. Setelah coba untuk nyari-nyari, ketemu di stackoverflow; link nya di sini dan di sini.

Ada beberapa pendapat di sini. Ada yang menyatakan kalau method dan function itu adalah sama, hanya beda istilah untuk jenis bahasa pemrograman berbeda. Kalau istilah method biasanya dipakai untuk bahasa pemrograman OOP sedangkan function biasanya dipakai untuk pemrograman struktural. Tapi setelah saya baca di Python manual, disebutkan dua istilah itu bersamaan; ada method ada function. Nah ternyata dari beberapa jawaban yang ada di dua diskusi stackoverflow di atas, mayoritas menjawab bahwa function dan method adalah serupa tapi tak sama. Function biasanya berdiri sendiri sedangkan method terasosiasi dengan sebuah object. Jawaban ini lebih saya terima karena di Python, istilah method dipakai untuk memanggil fungsi yang ada di dalam sebuah kelas. Kurang lebih begitu.


Rabu, 20 Januari 2016

Random Modul

import random

>> random.choice(['apple','pear','banana'])
'apple'
>> random.sample(range(100),10)
[30, 83, 16, 4, 8, 81, 41, 50, 18, 33]
>> random.random() #random float
0.1728219100
>> random.randrange(6)
4

Selasa, 19 Januari 2016

Dua Input Terpisah

Adakalanya kita ingin menggabungkan dua input yang terpisah. Kalau di C biasanya sintaksnya seperti ini.

scanf("%s", &kata1)
scanf("%s", &kata2)
printf ("kata1 adalah %s dan kata2 adalah %s", kata1,kata2)

Nah kalau di Python bagaimana?
Ada tiga cara sebenarnya. Pertama sepertinya bisa pake .join() tapi yang saya sendiri lebih cenderung pake dua cara ini.

kata1 = input()
kata2 = input()
print ('kata1 adalah %s dan kata2 adalah %s'%(kata1,kata2))
print ('kata1 adalah {} dan kata2 adalah {}'.format(kata1,kata2))

Nah coba perhatikan perbedaannya; pakai % kita harus tahu apakah itu string atau integer, atau kalau pakai format kita tinggal kasih tanda {}. silakan dipilih yang mana.

update:

ada satu cara lagi yang bisa dipake untuk print input di python:

print('kata1 adalah', kata1,'dan kata2 adalah', kata2)

perhatikan beda dengan sebelumnya, lebih simpel kan...

Rabu, 13 Januari 2016

Multiprocessing (2)

Sudah coba pelajari multiprocessing langsung dari Python documentation. Bingung. Searching.. ada yang senasib. Penjelasan dan contoh di StackOverflow ini cukup membantu untuk memahami multiprocessing, pool, dan queue. Btw soal pool, bedanya dengan poll apa ya?

Beda. Kalau pool di multiprocessing; kalau poll untuk interprocess communication (IPC). Hmm, sampai di sini baru sadar dan ingat kalau yang saya perlukan itu IPC. Hahaha...

--
nanya sendiri, jawab sendiri. maaf, saya lagi memvisualisasikan pikiran. untung ditulis, jadi sadar kalau salah jalan. hahaha...

oh iya, kalau mau mempelajari lebih lanjut tentang multiprocessing system, paper jadul ini menjelaskan arsitektur multiprocessing system dengan cukup lengkap.. 

Multiprocessing

Another confusing term..

Saya ambil dari dokumentasi Python ya.
multiprocessing is a package that supports spawning processes using an API similar to the threading module.
Oke, ada istilah spawn; yang kalau diartikan ke dalam bahasa indonesia artinya menelurkan, membiakkan dan menimbulkan. Ada lagi istilah process; kata kunci yang harus kita fahami sebelum kita lanjut ke istilah multiprocessing.

Thread

Apa itu thread?

Bagi yang kesehariannya bergelut di bidang programming mungkin sudah familiar dengan istilah ini. Cukup sulit bagi saya untuk benar-benar bisa menerjemahkan istilah thread ini. Kalau diterjemahkan secara bahasa ke bahasa Indonesia artinya adalah benang, ulir, urutan, utas, lembar, galur, rangkaian, untai. Dari artinya mungkin kita bisa menebak-nebak apa itu thread. Tapi apa sebenarnya dimaksud dengan thread?

Rabu, 06 Januari 2016

Two Inputs

Next sekarang lagi nyari-nyari gimana caranya dua output dari dua program berbeda bisa jadi satu input di program yang lain..

Ah apalah istilahnya ini? -_-"

Selasa, 05 Januari 2016

Output Sebaris

Saat running program while (loop), biasanya output akan ditampilkan perbaris di terminal. Bagaimana biar outputnya jadi sebaris saja?

Untuk di Python3 caranya tinggal menambahkan  
,end=""
dibagian belakang print. Nanti outputnya akan otomatis ditampilkan secara sebaris. Dalam ("") kita bisa menambahkan apa saja; titik, koma, garis miring atau apa saja untuk pemisah antar output.

User Input

Pertanyaan sekarang adalah bagaimana caranya biar program selalu meminta input ke user?

Jawaban di stackoverflow ini cukup memuaskan setelah saya coba.
import sys
for line in sys.stdin:
   do something
tidak perlu meminta input( ) lagi. Program otomatis akan meminta input secara kontinue ke user. 

Python Characters Encoding

Nah kembali ke real task. Gimana caranya print character encoding ke dalam file di python?

Awalnya saya coba untuk print karakter encoding secara langsung di terminal. Saya coba
>>> print(u"\u0007")
Dan keluar bunyi "ding". Berhasil!

Cara lainnya dijelaskan di web dokumentasi resmi python. Untuk python3 sedikit berbeda dengan python2 sintaksnya. Disini dicontohkan cara konversi integer ke karakter Unicode dengan menggunakan fungsi chr( ), dan untuk mengkonversinya kembali menggunakan fungsi ord( ). Berbeda dengan fungsi print yang saya contohkan sebelumnya, fungsi chr ini tidak mengeluarkan output "ding" tapi '\0x7'. Sepertinya fungsi ini menghasilkan nilai dari Unicodenya saja.

Nah sekarang gimana caranya biar yang keluar random?
  1. Kalo berdasarkan pertanyaan di sini, cara untuk print random ASCII characters adalah dengan 
    import random
    print (chr (random.randint(0,255)))
  2. Cara lainnya adalah dengan  generate random unicode
    os.urandom(n)
    Kalo menurut website python sih fungsi ini
    Return a string of n random bytes suitable for cryptographic use.
  3. akhirnya pusing. segini dulu nanti diupdate

Senin, 04 Januari 2016

Encoding

Pertanyaannya adalah apa hubungan binary, hexadecimal dan ASCII?

Untuk lebih paham cara berpikirnya, bisa coba instal hex editor HxD. Ini sangat membantu buat saya.

Salah satu artikel bagus yang saya baca adalah ini dan ini dan ini.

Setiap keluaran yang dihasilkan oleh sebuah program pada dasarnya akan dibaca oleh mesin dalam bentuk binary atau 0 dan 1. Angka 0 dan 1 inilah yang membuat kata-kata dan tulisan kita bisa dibaca oleh mesin. Tapi untuk itu harus ada standarnya. Karakter yang kita tuliskan akan di-encode menjadi binary berdasarkan suatu set character yang sudah disepakati oleh para ahli-ahli komputer terdahulu. Dulu komputer hanya menggunakan 8-bit bytes; dan saat itu sudah ada yang namanya ASCII (American Standard Code for Information Interchange) yang menyimpan sebuah karakter dalam 7 bit binary.

Misalnya huruf "A" kodenya adalah 65 dimana binary nya adalah 100 0001. Sebagai perbandingan "1" nilainya adalah 31 dan "a" adalah 97. Sedangkan 1 dalam ASCII akan mengeluarkan karakter lain yang dalam hal ini termasuk dalam kategori unprintable characters.

Namun semakin lama baru disadari kalau jumlah karakter itu banyak, maka dibuatlah 8-bit encodings yang merupakan versi extended dari ASCII yang menambahkan satu bit untuk karakter-karakter lain. Tapi makin lama para ahli ini sadar bahasa di dunia gak cuma bahasa inggris saja, jadi dibikin lagi standar baru yaitu Unicode yang menampung banyak bahasa di dunia. So kurang lebih begitu.
 


Popular Posts