Nugroho's blog.

Saturday, December 10, 2011

Agar Python Lebih Manusiawi


Kita dapat menggunakan parser pada python untuk memasukkan input berupa fungsi atau persamaan. Namun, fungsi yang kita masukkan harus mengikuti aturan python, misal kita ingin fungsi y=x^2+2x+2, maka untuk input kita harus memasukkan  x**2+2*x. Memang tidak begitu merepotkan, namun akan lebih baik jika input yang kita masukkan sesuai dengan kebiasaan kita.


Untuk itu kita dapat menambahkan fungsi untuk mengubah x^2 menjadi x**2. Berikut adalah kode untuk melakukannya

>>> w='x^2'
>>> w.replace('^','**')
'x**2' 
>>> w
'x^2'
>>>

Hati-hati bahwa sintaks tersebut tidak benar-benar mengubah variabel w,dia tetap bernilai 'x^2' dan tidak dapat diproses. Untuk dapat mengubah string, maka kita perlu variabel baru untuk menampung dengan perintah y=w.replace('^','**'), atau tampung ke variabel itu sendiri dengan perintah w=w.replace('^','**'). Berikut adalah contohnya

>>> w='x^2'
>>> w
'x^2'
>>> w.replace('^','**')
'x**2'
>>> w
'x^2'
>>> y=w.replace('^','**')
>>> y
'x**2'
>>> w
'x^2'
>>> w=w.replace('^','**')
>>> w
'x**2'
>>> 

Dengan demikian pengguna dapat memberi input berupa x^2 atau x**2 untuk x pangkat dua.

Selain memakai perintah replace, kita juga bisa menggunakan regular expression menggunakan library re.
Berikut adalah hasil coba-coba menggunakan re.

Nugrohos-MacBook-Pro:~ nugroho$ python
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> s='persamaan pangkat 2''
  File "", line 1
    s='persamaan pangkat 2''
                           ^
SyntaxError: EOL while scanning string literal
>>> s='persamaan pangkat 2'
>>> s
'persamaan pangkat 2'
>>> import re
>>> re.sub("a",',',s)
'pers,m,,n p,ngk,t 2'
>>> s='persamaan pangkat 2'
>>> re.sub("\a",',',s)
'persamaan pangkat 2'
>>> s='persamaan pangkat 2'
>>> re.sub("\a",' ',s)
'persamaan pangkat 2'
>>> re.sub("a",' ',s)
'pers m  n p ngk t 2'
>>> s='persamaan pangkat 2'
>>> re.sub("a",'',s)
'persmn pngkt 2'
>>> s.replace('p','n')
'nersamaan nangkat 2'
>>> exit

Friday, December 9, 2011

Input berupa Fungsi Fleksibel pada Python dengan Menggunakan Parser


Saat kita membuat sebuah aplikasi, sering kita memberi kesempatan pengguna untuk memberikan input. Misal pada program untuk menghitung akar persamaan kuadarat ax^2+bx+c, kita memberi input berupa nilai a, b dan c. Ini berarti program yang dibuat hanya dapat menyelesaikan persamaan kuadarat dengan model ax^2+bx+c. Bentuk penulisan seperti ini disebut hardcode. Bagaimana misal jika kita menginginkan akar 3x^3-3? Atau menemukan nilai y=sin(x)? Tentu saja kita harus membuat program yang baru.



Pada python ada fungsi parser yang memungkinkan kita untuk memasukkan input berupa persamaan. Dengan demikian kita dapat membuat hanya satu program untuk misal menggambar grafik suatu fungsi dengan input berupa fungsi. Kita bebas memasukkan sebarang persamaan sebagai input.

Berikut adalah contoh program untuk menentukan nilai fungsi pada sebuah peubah. Dalam hal ini fungsi yang diinputkan adalah f=sin(x)*2x^2. Program mencari nilai fungsi tersebut pada x=10.

Nugrohos-MacBook-Pro:~ nugroho$ python
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from math import sin
>>> import parser
>>> f="sin(x)*2*x**2"
>>> print f
sin(x)*2*x**2
>>> y=parser.expr(f).compile()
>>> x=10
>>> print eval(y)
-108.804222178
>>>


CUDA



Do you have a computer with NVIDIA Graphics Card. If by any chance the answer is yes then you probably can use that machine to do some cool paralel computation task in this area:
Computational Structural Mechanics
Bio-Informatics and Life Sciences
Medical Imaging
Weather and Space
Data Mining and Analytics
Imaging and Computer Vision
Computational Finance
Computational Fluid Dynamics
Electromagnetics and Electrodynamics
Molecular Dynamics


Yeah, if you bought NVIDIA powered machine this year or last year, your graphics card maybe supported paralel computing using CUDA.

CUDA™ is a parallel computing platform and programming model invented by NVIDIA. It enables dramatic increases in computing performance by harnessing the power of the graphics processing unit (GPU).

With millions of CUDA-enabled GPUs sold to date, software developers, scientists and researchers are finding broad-ranging uses for CUDA, including image and video processing, computational biology and chemistry, fluid dynamics simulation, CT image reconstruction, seismic analysis, ray tracing, and much more.

GPU Computing: The Revolution

It's hard to believe that twenty years ago we stuck on a machine with no GUI and no multitasking, at least multitasking is rare thing. And ten years ago we stop increasing speed of processor at 3GHz, more than that is either we burn our computer or move our PC using towing car as conductor can't be any smaller. Developer focused on multicore machine and cluster machine.

You're faced with imperatives: Improve performance. Solve a problem more quickly. Parallel processing would be faster, but the learning curve is steep – isn't it?

Not anymore. With CUDA, you can send C, C++ and Fortran code straight to GPU, no assembly language required.

GPU computing is possible because today's GPU does much more than render graphics: It sizzles with a teraflop of floating point performance and crunches application tasks designed for anything from finance to medicine.

History of GPU Computing

http://www.nvidia.com/object/cuda_home_new.html

The first GPUs were designed as graphics accelerators, supporting only specific fixed-function pipelines. Starting in the late 1990s, the hardware became increasingly programmable, culminating in NVIDIA's first GPU in 1999. Less than a year after NVIDIA coined the term GPU, artists and game developers weren't the only ones doing ground-breaking work with the technology: Researchers were tapping its excellent floating point performance. The General Purpose GPU (GPGPU) movement had dawned.

But GPGPU was far from easy back then, even for those who knew graphics programming languages such as OpenGL. Developers had to map scientific calculations onto problems that could be represented by triangles and polygons. GPGPU was practically off-limits to those who hadn't memorized the latest graphics APIs until a group of Stanford University researchers set out to reimagine the GPU as a "streaming coprocessor."

In 2003, a team of researchers led by Ian Buck unveiled Brook, the first widely adopted programming model to extend C with data-parallel constructs. Using concepts such as streams, kernels and reduction operators, the Brook compiler and runtime system exposed the GPU as a general-purpose processor in a high-level language. Most importantly, Brook programs were not only easier to write than hand-tuned GPU code, they were seven times faster than similar existing code.

NVIDIA knew that blazingly fast hardware had to be coupled with intuitive software and hardware tools, and invited Ian Buck to join the company and start evolving a solution to seamlessly run C on the GPU. Putting the software and hardware together, NVIDIA unveiled CUDA in 2006, the world's first solution for general-computing on GPUs.

Bang Toyib Versi Arab


Jika mendengar lantunan diba' aku selalu (ya, selalu) menangkap lagunya, tidak pernah ayatnya. Sering sekali aku mendengar kata 'Bang Toyib' di otakku walaupun telingaku mendengar kata… kata…,hm… pokoknya kata-kata bahasa arab :). Bahkan di beberapa kesempatan, aku justru membayangkan videoklip lagu yang liriknya diganti ayat-ayat dalam buku diba'.



Aneh sekali, jarang sekali mendengar lantunan diba' memakai lagu-lagu kenangan 70-an, kebanyakan lagu dangdut.

Hm, aku bertanya-tanya sendiri bagaimana meningkatkan keimanan dengan cara mendengarkan diba'. Bagaimanapun bentuk kata arabnya yang kudengar adalah "Pak Lurah, salam hormat saya…. Bang Mandor, salam tengkiu saya…"

Tayub

Ada yang tahu tayub? Tayub merupakan kesenian daerah yang menyajikan pertunjukan campursari; lagu-lagu yang dilantunkan oleh sinden, ada beberapa ledek(penari) yang mbeso(menari tarian daerah). Para ledek tersebut menari dengan lawan tari dari para undangan yang menari secara bergiliran yang diurut berdasarkan nomor meja yang mereka duduki.

Dalam bahasa daerah saat saya SD dulu, tayub merupakan sebuah kerata-basa yaitu TAYUB = ditaTA supaya guYUB. Mungkin sesuai dengan semangat yang dibawa oleh namanya, secara teknis, pertunjukan tayub merupakan perjunjukkan yang terorganisir jika dilihat dari giliran menari para tamu, setidaknya di beberapa daerah.

Lama para tamu mbeso adalah satu lagu, setelah itu giliran mbeso tamu dari meja berikutnya dengan lagu yang mereka pilih. Di beberapa daerah, mungkin ada local genius yang melihat celah ini dan menjadi semacam hacker yang memanfaatkan exploit ini, yang justru menjadi lucu jika diterapkan secara ekstrim. Celah tersebut adalah jika lagu berganti, maka penari tamu juga harus ganti. Penggantian lagu biasanya dengan memberi sejumlah uang pada para yaga(pemusik), biasanya tukang kendang, yang langsung menghentikan gendhing(lagu) yang sedang berjalan dengan gendhing baru. Bisa dibayangkan situasinya jika tiap lima detik lagu diganti.

Celah tersebut biasanya memicu kerusuhan di beberapa pertunjukan tayub, tentu saja hal itu bisa dimengerti. Minuman keras biasanya selalu ada di tiap meja, kebanyakan mabuk digunakan sebagai pemanasan, jadi tidak malu saat menari. Dalam keadaan seperti itu tiba-tiba lagu berhenti dan harus turun, hm…

Penari tamu tidak harus pria, wanita pun ada, walaupun tidak ada ledek pria.

Mungkin awalnya tayub digunakan sebagai pamer keahlian menari jaman dulu, semacam karaoke sekarang ini. Namun yang sering kulihat lebih condong ke mabuk-mabukan yang 'diper-halal' atas nama budaya.

Sepur Mesle Ngajubile


Beberapa hari yang lalu aku tiba-tiba Heri nyletuk saat sedang chatting begini (kutipan perhuruf, :) ):
"mas,,,asolole kuwi konon katanya dari kata allohuma sholi alaih, kemudian jadi sholi alaih, kemudian jadi asolole,,,hehehehe"


Di bahasa kita sehari-hari kita menjumpai bahasa-bahasa yang diambil dari bahasa lain. Kita telah begitu terbiasa sehingga seakan-akan bahasa tersebut memang bahasa kita. Banyak kata-kata serapan yang bahkan berubah fungsi semacam "beh, kopine enake jian ngadubilah" yang merupakan pujian untuk kopi yang enak.  Mungkin 'ngadubilah' berasal dari kata lain atau mamang kata asli, namun kupikir 'ngadubilah' berasal dari kata 'naudzubillah'.

Di Lupus Kecil ada penggunaan bentuk lain 'naudzubilah' yang berlawanan dengan diatas, yaitu saat rumah Lupus kebanjiran "kasur yang ditumpuk di meja makan karena kebanjiran yang baunya ngajubile"

Mesle => miss-lay. Mesle adalah bahasa jawa untuk mengungkapkan peletakkan barang yang kurang pas.

Lampu => lamp

Sepur => spoor (belanda), artinya track atau lintasan, dalam bahasa inggris berarti juga berarti jejak (bau) binatang. Kita sering lihat peringatan 'perlintasan kereta api satu sepur'. Sepur dalam bahasa jawa artinya kereta api. Walaupun arti dari peringatan 'satu sepur' (satu rel) dengan sepur (kereta api) berbeda namun bisa diambil akarnya dari spoor. Di bengkel mobil ada servis namanya 'spooring' tujuannya untuk meluruskan roda depan dan belakang agar mobil berjalan lurus.

Tentu saja ada penggunaan kata yang sebenarnya bukan serapan namun entah bagaimana kata tersebut jadi populer. Pernah saya dengar pembawa acara Tayub yang dalam pembukaan acara menggunakan salam jawa yang populer namun agak aneh sehingga mengundang senyum bahkan gelak tawa pendengar (aku yang sedang bermalas-malasan tidur siang pun dipaksa nyengir saat kata tersebut nyelonong masuk lewat jendela kamarku). Kata tersebut adalah 'Salamalekum salam,...'

Wednesday, December 7, 2011

Lagu anak

Iku mono ra sepiro, ibarat aku duwe konco
Lagak e koyok jutawan ngalor ngidul gowo koran,

tibakno gendeng anyaran ditabok setan


Iku mono ra sepiro, ibarat aku duwe tonggo
Arek e ayu temenan jarang metu nang embongan
Tibakno meteng rong ulan merek ojek an

(

Itu belum seberapa, ibarat saya punya teman
Lagaknya seperti jutawan keutara selatan bawa koran,
ternyata barusan gila ditabok setan

Itu belum seberapa, ibarat saya punya tetangga
Anaknya cantik betulan jarang keluar di jalanan
Ternyata hamil dua bulan merek ojek
)

Itu adalah salah satu lirik lagu dari VCD LAGU ANAK-ANAK. Dalam VCD tersebut memang benar penyanyinya adalah anak-anak, namun lagu-lagunya yang bergenre jaranan-koplo-campursari itu adalah lagu-lagu dewasa. Mungkin jika lagu dewasa semacam KoesPlus atau Sheila On 7 dibawakan anak-anak agak tergolang wajar, namun bacalah lirik lagu diatas, lagu tersebut adalah lagu vulgar yang aka aneh sekali jika dibawakan anak-anak.
Mungkin ada yang beralasan bahwa menyanyikan lagu-lagu itu untuk mengajari anak untuk cinta budaya daerah, HEY TUNGGU DULU. Budaya daerah yang mana? Jaranan?

Jika benar ingin melestarikan kebudayaan daerah semacam jaranan, kenapa tidak pake lagu anak-anak saja? Tidak perlu mengusung lagu-lagu dewasa untuk dinyanyikan anak-anak. Lagu-lagu jaranan banyak sekali, semacam 'ing wayah esuk jagone kluruk', 'lumbung desa', 'sawo glethak' lebih netral untuk dibawakan segala umur.

Lagu dolanan anak-anak juga banyak semacam 'Padang bulan', 'Cublek Suweng' (yang bahkan dibawakan oleh Slank), 'Dondong apa salak', 'Sluku Bathok'. Itu baru namanya melestarikan budaya, bukan membunuh budaya.

323f (5) amp (1) android (12) apple (7) arduino (18) art (1) assembler (21) astina (4) ATTiny (23) blackberry (4) camera (3) canon (2) cerita (2) computer (106) crazyness (11) debian (1) delphi (39) diary (286) flash (8) fortran (6) freebsd (6) google apps script (8) guitar (2) HTML5 (10) IFTTT (7) Instagram (7) internet (12) iOS (5) iPad (6) iPhone (5) java (1) javascript (1) keynote (2) LaTeX (6) lazarus (1) linux (29) lion (15) mac (28) macbook air (8) macbook pro (3) macOS (1) Math (3) mathematica (1) maverick (6) mazda (4) microcontroler (35) mountain lion (2) music (37) netbook (1) nugnux (6) os x (36) php (1) Physicist (29) Picture (3) programming (189) Python (109) S2 (13) software (7) Soliloquy (125) Ubuntu (5) unix (4) Video (8) wayang (3) yosemite (3)