Phalcon Framework and Volt Templating

Why Phalcon?

Yes, because it’s fast and light.

But please remember, when you are using volt templating, you will find the problem when you want to add the attributes inside the textField() tag.

When you are not using volt, it should be like this.

echo $this->tag->textField(array("name", "class"=>"tes"));

But when you are using volt, from the documentation, you have to do like this.

{{ textField("name", "class":"tes") }}

But you will see this error.

Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW) in /var/www/phalcon/cache/volt/%%var%%www%%phalcon%%app%%views%%signup%%index.volt.php on line 7

I’ve googled about this problem and found this link, but still no luck.

Finally, I found the solution. I tried to make an array for the attributes

{{ textField(["name", "class":"tes"]) }}

And it worked very well on the latest build (I am using version 2.0.7). 🙂

P.S: I hope this is not the one and only posting for this year 😛

Continue Reading

Easy Transfer Scanner

Setelah hampir dua tahun tidak menulis sepatah kata pun di blog ini, akhirnya saya memutuskan untuk sedikit berbagi lagi hal-hal terkait teknologi informasi, tentunya hal-hal yang sedang saya alami dan saya kerjakan. Apa yang akan saya bahas adalah tentang sebuah aplikasi Windows Phone 8.1 yang kemarin baru saja saya install, yaitu Easy Transfer. Easy Transfer adalah aplikasi yang memudahkan penggunanya untuk melakukan manajemen berkas pada sebuah device berbasis Windows melalui browser pada komputer (kebetulan saya memakai Nokia Lumia 920).

easy_transfer_phone

 

 

 

 

 

 

 

 

 

Aplikasi Easy Transfer ini sangat memudahkan saya untuk memindahkan berkas dari handphone saya ke komputer, ataupun sebaliknya melalui wifi dengan protokol HTTP. Sebelumnya saya agak kesulitan dalam memindahkan berkas dari handphone karena laptop saya menggunakan OS Linux dan mtpfs yang digunakan di Linux agak rewel ketika harus berhadapan dengan Nokia Lumia.

easy_transfer

 

 

 

 

Unduh, unggah, penamaan ulang, dan menghapus berkas dapat dilakukan melalui browser ketika kita sudah menginstall aplikasi Easy Transfer di device Windows Phone yang kita pakai. Tetapi ketika saya menggunakan, ada hal yang kurang pas dalam aplikasi ini, yaitu akses yang dilakukan tanpa menggunakan autentikasi. Jadi, ketika kita mengetahui alamat ip dari sebuah device Windows Phone yang sedang membuka aplikasi Easy Transfer, kita langsung dapat mengaksesnya. Lalu berbekal pemikiran itu, akhirnya saya membuat sebuah script sederhana untuk melakukan scanning dalam jaringan yang sedang saya gunakan terhadap device yang sedang membuka Easy Transfer. 😛

#!/usr/bin/env python

import argparse
import sys
import socket
import fcntl
import struct
import time
import multiprocessing
import urllib2
import re
import datetime

def unwrap_self_f(arg, **kwarg):
	return GetEasy.scan_easy(*arg, **kwarg)

class GetEasy:
	def __init__(self):
		self.now_int = time.time()

	def get_self_ip(self, device):
		# get ip address code from activestate
		# http://code.activestate.com/recipes/439094-get-the-ip-address-associated-with-a-network-inter/
		s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
		try:
			my_ip = socket.inet_ntoa(fcntl.ioctl(
				s.fileno(),
				0x8915,  # SIOCGIFADDR
				struct.pack('256s', device[:15])
				)[20:24])
			return my_ip
		except:
			return False

	def scan_easy(self, host):
		sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
		result = sock.connect_ex((host, 80))
		if result == 0:
			try:
				get_page = urllib2.urlopen('http://%s' %host).read()
				if re.search(r'Easy Transfer', get_page):
					print 'Easy Transfer Detected in %s' %host
					return host
			except Exception, err:
				pass

	def run(self, threads, ip_range):
		pool = multiprocessing.Pool(processes=int(threads))
		hosts = []
		for i in xrange(1,255):
			hosts.append('%s.%d' %('.'.join(ip_range.split('.')[0:3]), i))
		get_ips = pool.map(unwrap_self_f, zip([self]*len(hosts), hosts))
		
		return get_ips

if __name__ == '__main__':
	now_int = time.time()

	parser = argparse.ArgumentParser()
	parser.add_argument('-i', '--interface', help='network interface')
	parser.add_argument('-t', '--threads', help='total threads, if not specified, will use single thread')
	args = parser.parse_args()

	if len(sys.argv) == 1:
		parser.print_help()
		sys.exit(1)

	if not args.interface:
		parser.print_help()
		sys.exit(1)

	if not args.threads:
		threads = 1
	else:
		threads = args.threads
	
	c = GetEasy()
	ip_addr = c.get_self_ip(args.interface)
	if not ip_addr:
		print 'invalid interface'
		sys.exit(1)

	print 'scanning wifi area...'
	Detected = c.run(threads, ip_addr)

	scanned_time = time.time() - now_int
	print '255 hosts scanned in %s' %(datetime.timedelta(seconds=scanned_time))

Lalu ketika dijalankan, hasilnya adalah sebagai berikut

easy_scanner

Setelah scanning dilakukan dan terdeteksi ada orang yang membuka aplikasi Easy Transfer, kita bisa mengakses alamat ipnya langsung di browser dan kita bisa melakukan apa saja dengan berkas pada ip itu. 😛

Lalu bagaimana cara kita mengakses berkas dengan menggunakan Easy Transfer secara aman? Caranya gampang, yaitu gunakan fitur internet sharing pada Windows Phone, agar jaringan yang kita gunakan adalah jaringan pribadi, bukan jaringan terbuka yang bisa diakses siapa saja. Tentunya dengan memberikan kata kunci yang agak sulit untuk ditebak juga. Ingat, jangan percaya bahwa semua yang ada di dalam satu jaringan itu adalah orang baik, bisa saja yang terlihat baik itu adalah orang yang sedang mengakses data-data kamu. Kalau saya? Ya orang baiklah 😀

Continue Reading

Unduh Video Mytrans

Selamat siang semua :9

Setelah beberapa waktu tidak menulis karena bingung apa yang mau ditulis, akhirnya kemarin siang (17122012) atas permintaan dari kak mursid, saya menemukan bahan lagi tentang apa yang akan saya tulis.

Jadi, apa yang akan dibahas sekarang? Video, ya video. Kak mursid bertanya apakah video di mytrans dapat didownload (diunduh – ya, karena orang Indonesia sekarang sudah menjadikan download sebagai bahasa sehari-hari mereka). Pertama saya langsung berpikir, paling mainan cache terus dapat, tinggal di-lsof aja, cari temporary file yang berhubungan dengan flash plugin, terus tinggal dikopi.

Setelah membuka satu halamannya, terminal, streaming dan

Continue Reading

Locally the (Exclusive) Twitter Client!

Halo semuanya 😀

Setelah beberapa waktu kemarin kita bertemu di sesi tulis-menulis yang isinya rada narsis dan gak berhubungan ama bahasa alien, sekarang kita kembali lagi ke bahasa blog ini seperti biasanya ya.

Untuk postingan kali ini saya hanya ingin bercerita tentang apa yang telah saya baca dan praktekkan kemarin. Karena akhir-akhir ini saya sering bermain dengan data di twitter, sekarang saya ingin mencoba untuk ngotak-atik beberapa eksklusif twitter client. Mengapa eksklusif? yah, karena tu twitter client cuma ada di device-device besar bermerk, contohnya Twitter for Iphone, Tweetbot for IOS, dll.

Seperti yang kita ketahui, semua aplikasi yang didaftarkan di Twitter developer mempunyai pengaturan sendiri-sendiri, apakah aplikasi itu mempunyai callback url yang biasa digunakan untuk web client atau hanya mengembalikan sebuah pin (angka) yang biasa digunakan untuk mobile app ataupun desktop app, dan semua aplikasi itu mempunyai 2 key (consumer_key dan consumer_secret) sebagai penanda aplikasi masing-masing. Jadi ketika kita mempunyai 2 key penanda itu, kita bisa membuat suatu aplikasi dan melakukan aktivitas di twitter dengan menggunakan nama sesuai 2 key itu. Bingung? mari kita lihat contohnya.

Misal:

aplikasi A (dengan nama linglung) mempunyai 2 key:

consumer_key = AAAAAAAAA
consumer_secret = BBBBBBBBBBBBBBBBBBBBBBBBBBB

nah, ketika siapapun mempunyai 2 key tersebut, seseorang bisa ngetweet  dengan “via linglung” di tweetnya.

Ngerti kan? Nah, untuk percobaan kali ini kita bakal nyoba mengekstrak key dari aplikasi Tweetbot for IOS. Yang harus dilakukan pertama adalah mencari aplikasinya, googling aja banyak kok yang ngasih link download ipa-nya (ipa itu ekstensi buat aplikasi Iphone atau iPad). Setelah kita mendapat aplikasinya, kita ekstrak dulu isi di dalamnya. File ipa itu berbentuk arsip, jadinya diunzip juga bakal terekstrak semua aplikasi di dalamnya. Setelah kita ekstrak, di sini file yang paling penting adalah file TweetbotPad yang ada di dalam folder “./Payload/TweetbotPad.app/”. Walau file itu biner kita bisa menggunakan command strings di Linux untuk melihat semua string yang masih bisa terbaca di dalam sebuah file biner.

$ strings Payload/TweetbotPad.app/TweetbotPad

Nah, terlihat kan beberapa ribu baris string yang dapat terbaca, setelah itu tergantung ketelitian kita mencari 2 baris string yang bentuknya mirip 2 key twitter client (kalo kamu biasa mainan twitter API dan dev twitter, kamu pasti tau kok bentuknya kayak gimana :D). Ternyata setelah dicari, key ditemukan.

Kenapa tidak ditampilkan semua? Ya, supaya kamu mencoba kalo kamu penasaran 😀

Okay, kita dapat keynya, setelah itu kita bisa membuat twitter client dengan menggunakan ‘via Tweetbot for IOS’. Tinggal set callback url, sebuah web client pun sudah jadi. Hmm, tetapi bagaimana kita membuat sebuah web client ketika key itu hanya mengembalikan sebuah pin? Yak, aplikasi semacam Twitter for Iphone dan Twitter for iPad hanya mengembalikan pin. Apakah kita bisa membuat sebuah web client dengan menggunakan 2 key itu? bisa! kita masih bisa membuat web client dengan menggunakan scrapping untuk proses autentikasinya sehingga kita mendapatkan key untuk akses user kita.

Di sini saya menggunakan bahasa pemrograman Python dan modul tweepy untuk autentikasinya, dan juga menggunakan consumer_key dan consumer_secret Twitter for Iphone. Pertama kita dapatkan dulu autenkasi urlnya.

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth_url = auth.get_authorization_url()

Lalu setelah itu kita akan mendapatkan link autentikasi dalam variabel auth_url. Kemudian link dibuka, dan carilah authenticity_token dan oauth_token. Ambillah value di keduanya, kemudian kirim POST ke https://twitter.com/oauth/authorize dengan variabel authenticity_token, oauth_token, username/email, dan password twitter kamu. Kemudian kita akan mendapatkan sebuah halaman dengan pin di dalamnya. Ambil pin itu untuk proses autentikasi lagi.

auth.get_access_token(verifier)
ACCESS_KEY = auth.access_token.key
ACCESS_SECRET = auth.access_token.secret

nah, kita akan mendapatkan 2 key lagi sebagai penanda bahwa kita dapat melakukan aktivitas di twitter dengan akun kita dan dengan menggunakan nama aplikasi ‘via Twitter for Iphone’. Saya mencoba membuat web client sederhana tadi malam.

Nah, keliatan kan Twitter for Iphone-nya :D.

Yah, itu salah satu cara aja sih, masih banyak cara lain dan hal lain yang bisa dibuat, tergantung kreativitas temen-temen. Mungkin itu aja yang bisa saya share siang ini. Mohon maaf kalo bahasa saya kurang dimengerti dan gak runtut juga penjelasannya. Selamat siang dan selamat membaca,mohon maaf tulisan kali ini blogpostnya terlalu panjang. Ciao! 😀

referensi : rndc.or.id

Continue Reading
1 4 5 6 7 8 20