tag:blogger.com,1999:blog-85063774664855863292023-11-15T23:35:52.209-08:00Ya'kob UbaidullahYa'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.comBlogger41125tag:blogger.com,1999:blog-8506377466485586329.post-63860163449438461802013-02-16T18:22:00.005-08:002013-02-16T18:22:45.279-08:00Android sending SMS
<br />
<div class="p1">
<span class="s1">package</span> com.sdk.test;</div>
<div class="p2">
<br /></div>
<div class="p1">
<span class="s1">import</span> android.os.Bundle;</div>
<div class="p1">
<span class="s1">import</span> android.app.Activity;</div>
<div class="p1">
<span class="s1">import</span> android.telephony.SmsManager;</div>
<div class="p1">
<span class="s1">import</span> android.view.Menu;</div>
<div class="p2">
<br /></div>
<div class="p2">
<br /></div>
<div class="p1">
<span class="s1">public</span> <span class="s1">class</span> MainActivity <span class="s1">extends</span> Activity {</div>
<div class="p2">
<br /></div>
<div class="p3">
<span class="s2"> </span>@Override</div>
<div class="p1">
<span class="s1">protected</span> <span class="s1">void</span> onCreate(Bundle savedInstanceState) {</div>
<div class="p1">
<span class="s1">super</span>.onCreate(savedInstanceState);</div>
<div class="p1">
setContentView(R.layout.<span class="s3">activity_main</span>);</div>
<div class="p2">
</div>
<div class="p1">
SmsManager sms = SmsManager.getDefault();</div>
<div class="p1">
sms.sendTextMessage(<span class="s4">"012704570X"</span>, <span class="s1">null</span>, <span class="s5">"send from app"</span>, <span class="s1">null</span>, <span class="s1">null</span>);</div>
<div class="p1">
}</div>
<div class="p2">
<br /></div>
<div class="p2">
<br /></div>
<div class="p3">
<span class="s2"> </span>@Override</div>
<div class="p1">
<span class="s1">public</span> <span class="s1">boolean</span> onCreateOptionsMenu(Menu menu) {</div>
<div class="p4">
<span class="s2"> </span>// Inflate the menu; this adds items to the action bar if it is present.</div>
<div class="p1">
getMenuInflater().inflate(R.menu.<span class="s3">main</span>, menu);</div>
<div class="p1">
<span class="s1">return</span> <span class="s1">true</span>;</div>
<div class="p1">
}</div>
<div class="p2">
</div>
<div class="p1">
}</div>
<div class="p1">
<br /></div>
<div class="p1">
<br /></div>
Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com0tag:blogger.com,1999:blog-8506377466485586329.post-74386871934332944762013-02-16T18:22:00.000-08:002013-02-16T18:22:03.072-08:00FPV / UAVhttp://www.youtube.com/watch?v=msHJLwYWX30<br />
https://www.youtube.com/watch?feature=player_embedded&v=rvlbbbh74xk<br />
<br />Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com0tag:blogger.com,1999:blog-8506377466485586329.post-8068372057251433762013-02-14T15:56:00.001-08:002013-02-14T15:56:54.247-08:00Arduinohttp://www.youtube.com/watch?v=iKMUF5jS9lU<br />
http://www.gsmarena.com/samsung_galaxy_y_s5360-4117.phpYa'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com0tag:blogger.com,1999:blog-8506377466485586329.post-13125699483988918912013-01-01T10:56:00.000-08:002013-01-12T06:26:53.951-08:00Kilang Bata Ambition<h4>
Inspiration</h4>
http://www.hmetro.com.my/myMetro/articles/Hafizuddinberaniambilrisiko/Article/artikelMA<br />
<br />
<h4>
Objective Coalition</h4>
Bina rumah mama<br />
<br />
<h4>
Mechanics</h4>
Adi. He needs to get into courses to learn hot to use the interlocking bricks.<br />
<h4>
Machines</h4>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/70JzB586nN4?feature=player_embedded' frameborder='0'></iframe><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/1BM7FIHrLIY?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/Hv1uI42xHOU?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/3AaEvV221qI?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://sell.lulusoso.com/selling-leads/1845759/QMR1-40-clay-block-machine.html" target="_blank"><img border="0" height="240" src="http://sell.lulusoso.com/upload/20120520/QMR1_40_clay_block_machine.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/rHdsV7lyDfo?feature=player_embedded' frameborder='0'></iframe></div>
<h4 class="separator" style="clear: both; text-align: center;">
Nice conveyor</h4>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/3lvGtjkjlfU?feature=player_embedded' frameborder='0'></iframe></div>
<h4 class="separator" style="clear: both; text-align: center;">
</h4>
<h4>
<a href="http://www.youtube.com/user/brickmachine2012?feature=watch" target="_blank">http://www.youtube.com/user/brickmachine2012?feature=watch</a></h4>
<h4>
Video of construction using Interlock Brick</h4>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/c9cDy9XkXPw?feature=player_embedded' frameborder='0'></iframe> </div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/OJRCURytyp0?feature=player_embedded' frameborder='0'></iframe> </div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/ipozUYLy-BE?feature=player_embedded' frameborder='0'></iframe></div>
<h4>
</h4>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/qAO01YfHADg?feature=player_embedded' frameborder='0'></iframe><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/CWUD7oO4vIg?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
<h4>
Company that use it & sells bricks</h4>
http://nurarina1.wix.com/geniusgreenway#!gallery<br />
http://www.lembarantinggi.com/projects.html<br />
http://mnzsolution.webs.com/ - kelantan<br />
http://www.infopages.net.my/company-search-results.aspx?keyword=fabricate+hydraulic+press&page=2 <br />
<br />
<h4>
Company that sells this machine</h4>
http://mesinbata.com/<br />
<br />
<h3>
IBS </h3>
The use of Light Weight Slab Panel for 2 storey house<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://0.gvt0.com/vi/Q_Hzi8MZyDQ/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/Q_Hzi8MZyDQ&fs=1&source=uds" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="http://www.youtube.com/v/Q_Hzi8MZyDQ&fs=1&source=uds" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<br />
The use of Hollow Core Slab Panel for 2 storey house<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/Ca42C5-1OQo?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<h4>
Hydraulic Concept</h4>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/svdsbL4PLL4?feature=player_embedded' frameborder='0'></iframe></div>
<h4>
Hydraulic motor
</h4>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/yO5g9ZwVmS0?feature=player_embedded' frameborder='0'></iframe></div>
<h4>
Hydraulic system Applied</h4>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/PSAtLNn8NwE?feature=player_embedded' frameborder='0'></iframe></div>
<h4>
<span id="goog_209213608"></span><span id="goog_209213609"></span>Interesting CEB story</h4>
<div class="separator" style="clear: both; text-align: center;">
<object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://0.gvt0.com/vi/nV_-ZzYmo3A/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/nV_-ZzYmo3A&fs=1&source=uds" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="http://www.youtube.com/v/nV_-ZzYmo3A&fs=1&source=uds" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object> </div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/U8htRDPHgtw?feature=player_embedded' frameborder='0'></iframe></div>
here is its blue print adi, http://opensourceecology.org/wiki/CEB_Press <br />
<h4>
Open Source Tracktor</h4>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/Icux1iGIvPE?feature=player_embedded' frameborder='0'></iframe></div>
<h4>
CCA System, concrete bricks. Still stackable low cost & fast development </h4>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/cAz7vTrWH4E?feature=player_embedded' frameborder='0'></iframe></div>
<h4>
Inspired</h4>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/HXDu2U-CmkI?feature=player_embedded' frameborder='0'></iframe></div>
<h4>
</h4>
Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com0tag:blogger.com,1999:blog-8506377466485586329.post-78890746812144907252012-12-22T08:43:00.001-08:002012-12-22T08:43:34.461-08:00Sinus cause by humidity<h4>
http://bodyodd.nbcnews.com/_news/2011/10/14/8290437-sinus-infection-its-the-humidity#comments</h4>
Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com0tag:blogger.com,1999:blog-8506377466485586329.post-88592735280785562542012-10-25T23:34:00.001-07:002012-10-25T23:34:19.648-07:00replace string using grep and sed with help of xargsgrep -r "Wholesale Quran" * | cut -f1 -d ':' | xargs sed -i 's/Wholesale Quran/I-Furqan Quran/g' $0Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com0tag:blogger.com,1999:blog-8506377466485586329.post-9949967988598597032012-10-03T05:36:00.000-07:002012-10-04T05:15:59.519-07:00Cheap construction method & material interlocking soil cement blocks<br />
http://www.youtube.com/watch?v=sGg9JBfX8Cs&NR=1<br />
<br />
IRIS KOTO Building System - House Built in 7 Days.<br />
http://www.youtube.com/watch?feature=endscreen&v=QhMAbqyZ8rw&NR=1<br />
The core if each panel is made by styrofoam<br />
<br />
Beatiful home made by interlocking red brick<br />
<a href="http://www.kpmytruss.com.my/kpmy/index.php?option=com_content&task=view&id=76&Itemid=158">http://www.kpmytruss.com.my/kpmy/index.php?option=com_content&task=view&id=76&Itemid=158</a>Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com0tag:blogger.com,1999:blog-8506377466485586329.post-28474192281690708472012-07-26T14:34:00.002-07:002012-07-26T14:34:16.613-07:00Scraping mobile phone number from web<br />
web.search("td").each do |e|<br />
e = e.inner_html<br />
if e.length > 10<br />
tmp = e.gsub(/(\r|\n|\t|\D)/, "")<br />
<br />
tmp.split(/(010|012|013|016|014|017|018|019)/).each do |s|<br />
if s =~ /(010|012|013|016|014|017|018|019)/<br />
pos = tmp =~ /#{s}/<br />
#puts pos<br />
if pos<br />
number = "#{s}#{tmp[pos+3..pos+9]}"<br />
puts number<br />
Contact.create(:group_id => 1, :phone => number) if number.length == 10<br />
end<br />
end<br />
end<br />
<br />
end<br />
end<br />Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com1tag:blogger.com,1999:blog-8506377466485586329.post-49252982224555298902012-07-17T00:08:00.000-07:002012-07-18T20:20:52.082-07:00scraping pictures at myjodoh.net<br />
<br />
agent = Mechanize.new<br />
agent.get("http://www.myjodoh.net/img.php?display=193941.jpg")<br />
cookie = Mechanize::Cookie.new("PHPSESSID" , "460a4eac8d62000529e894727c32bd31") #take session from ur web browser :P<br />
cookie.domain = "myjodoh.net"<br />
cookie.path = "/"<br />
agent.cookie_jar.add(agent.history.last.uri, cookie)<br />
<br />
<br />
(1..466).each do |i|<br />
web = Nokogiri::HTML(open("http://www.myjodoh.net/index.php?mod=result&page=#{i}&se=a%3A11%3A%7Bs%3A4%3A%22nSex%22%3Bs%3A1%3A%220%22%3Bs%3A5%3A%22nAge1%22%3Bs%3A2%3A%2218%22%3Bs%3A5%3A%22nAge2%22%3Bs%3A2%3A%2260%22%3Bs%3A8%3A%22nHeight1%22%3Bs%3A3%3A%22140%22%3Bs%3A8%3A%22nHeight2%22%3Bs%3A3%3A%22200%22%3Bs%3A8%3A%22nWeight1%22%3Bs%3A2%3A%2240%22%3Bs%3A8%3A%22nWeight2%22%3Bs%3A3%3A%22200%22%3Bs%3A7%3A%22nStatus%22%3Bs%3A1%3A%220%22%3Bs%3A10%3A%22nStateFrom%22%3Bs%3A2%3A%2299%22%3Bs%3A9%3A%22nStateNow%22%3Bs%3A2%3A%2299%22%3Bs%3A5%3A%22order%22%3Bs%3A5%3A%22dLast%22%3B%7D&PHPSESSIONID=460a4eac8d62000529e894727c32bd31"))<br />
web.search(".picborder").each do |x|<br />
filename = x['src'].gsub("http://www.myjodoh.net/thumb1/","")<br />
url = x['src'].gsub("thumb1/", "img.php?display=")<br />
puts filename<br />
File.open(filename, 'w+') do |file|<br />
file << agent.get_file(url)<br />
end<br />
end<br />
endYa'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com1tag:blogger.com,1999:blog-8506377466485586329.post-22931072561650017432012-07-17T00:03:00.001-07:002012-07-17T00:03:59.568-07:00Scrape email from yellow pages and send them email with 300 second delay<br />
em = []<br />
(1..63).each do |i|<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>yp = Nokogiri::HTML(open("http://www.yellowpages.com.my/search.jsp?sfor=all&name=logistic&w=&p=#{i}"))<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>emails = yp.search("a.email").map{|x| x["onclick"].gsub("SqueezeBox.open('/plainmail.jsp?id=", "").split("',")[0] }<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>emails.each do |eid|<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> t = Nokogiri::HTML(open("http://yellowpages.com.my/plainmail.jsp?id=#{eid}"))<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> em.push(t.search("input").first["value"])<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>end<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>InvoiceMailer.inquiry(em).deliver<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>sleep 300<br />
end<br />Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com0tag:blogger.com,1999:blog-8506377466485586329.post-43122378765982890942012-07-13T02:30:00.002-07:002012-07-13T02:30:40.213-07:00GOD ruby gem for unicorn bundle exec configuration file example.<br />
God.watch do |w|<br />
w.name = 'unicorn'<br />
w.interval = 30.seconds<br />
w.start = "cd #{rails_root} && bundle exec unicorn -c /home/system/deploy/akeyu/config/unicorn.rb -D"<br />
w.stop = "kill -QUIT `cat #{rails_root}/tmp/pids/unicorn.pid`"<br />
w.restart = "kill -USR2 `cat #{rails_root}/tmp/pids/unicorn.pid`"<br />
w.start_grace = 10.seconds<br />
w.restart_grace = 10.seconds<br />
w.pid_file = "#{rails_root}/tmp/pids/unicorn.pid"<br />
w.behavior(:clean_pid_file)<br />
w.start_if do |start|<br />
start.condition(:process_running) do |c|<br />
c.interval = 5.seconds<br />
c.running = false<br />
end<br />
end<br />
end<br />Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com1tag:blogger.com,1999:blog-8506377466485586329.post-27951947617195732402012-07-09T07:06:00.002-07:002012-07-13T02:31:29.250-07:00nginx log file location from using brew installationtail -f /usr/local/Cellar/nginx/1.0.10/logs/error.log
and of course access.logYa'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com0tag:blogger.com,1999:blog-8506377466485586329.post-68985683156893643372012-07-07T16:39:00.001-07:002012-07-13T02:30:59.654-07:00ruby on rails daemon<br />
akob:ceramahonline akob$ <b>rails plugin install git://github.com/dougal/daemon_generator.git</b><br />
Initialized empty Git repository in /Users/akob/hak/ceramahonline/vendor/plugins/daemon_generator/.git/<br />
remote: Counting objects: 25, done.<br />
remote: Compressing objects: 100% (21/21), done.<br />
remote: Total 25 (delta 2), reused 20 (delta 1)<br />
Unpacking objects: 100% (25/25), done.<br />
From git://github.com/dougal/daemon_generator<br />
* branch HEAD -> FETCH_HEAD<br />
Daemon Generator<br />
================<br />
<br />
To get yourself rolling:<br />
> sudo gem install daemons<br />
> ./script/generate daemon <name></name><br />
<br />
Then insert your code in the lib/daemons/<name>.rb stub. All pid's and logs will live in the normal log/ folder. This helps to make things Capistrano friendly.</name><br />
<br />
Individual control script:<br />
> ./lib/daemons/<name>_ctl [start|stop|restart]</name><br />
<br />
App-wide control script (I add this to my capistrano recipe's after_restart task):<br />
> ./script/daemons [start|stop|restart]<br />
akob:ceramahonline akob$<br />Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com0tag:blogger.com,1999:blog-8506377466485586329.post-77927616821184745822012-07-07T13:39:00.001-07:002012-07-14T16:11:12.056-07:00Key to SEO success1. Title best describing content<br />
2. meta description 2-3 sentence<br />
3. meta keyword with comma forecasting user search behavior that relate with our content
3. used H1 only 1. and use other Hn as well<br />
4. social networking, share, like, comment, +<br />
5. short & readable URLYa'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com0tag:blogger.com,1999:blog-8506377466485586329.post-16046895601508846592012-06-21T19:09:00.000-07:002012-06-21T19:09:12.213-07:00my worth STRIVING for.married & hv kids with her.
buy house 4 mama.
buy house 4 abah & look after him.
my family is my everything
my love is my requirementYa'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com0tag:blogger.com,1999:blog-8506377466485586329.post-53566318353177975252012-06-06T07:15:00.002-07:002012-06-06T07:15:39.152-07:00rails gmail pop3 ssl reading email<pre>
require 'net/pop'
Net::POP3.enable_ssl(OpenSSL::SSL::VERIFY_NONE)
Net::POP3.start('pop.gmail.com', 995, username, password) do |pop|
if pop.mails.empty?
puts 'No mails.'
else
pop.each_mail do |mail|
p mail.header
p mail.pop
end
end
end
</pre>Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com0tag:blogger.com,1999:blog-8506377466485586329.post-13392818879489606892012-05-24T11:28:00.001-07:002012-06-01T21:24:18.408-07:00Deploying multiple Rails Application using Nginx and Unicorn on the same port, different host<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEuMNRiheRR8PWemlIYpyW19RzihYehLNbToQb78IPV3a_j7kih-1Z4xxCmBCDSl1pbDLV_rSUeYJIUdov2Q_tNcOCyDRHsDULBLPdjnUXymD8uh7kaKnodoPRDgfUACWgS9NNtQwLhh7X/s1600/293-nginx-unicorn.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="125" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEuMNRiheRR8PWemlIYpyW19RzihYehLNbToQb78IPV3a_j7kih-1Z4xxCmBCDSl1pbDLV_rSUeYJIUdov2Q_tNcOCyDRHsDULBLPdjnUXymD8uh7kaKnodoPRDgfUACWgS9NNtQwLhh7X/s320/293-nginx-unicorn.png" width="200" /></a></div>
Dalam tutorial ini Ya'kob akan menerangkan bagaimana untuk membuat nginx supaya melayan request dari port yang sama, tapi host yang berlainan untuk applikasi rails yang berlainan. Ya'kob tidak menerangkan kaedah instalasi rails environment disini, kerana Ya'kob telah membuatnya didalam tutorial sebelumnya. Kita andaikan directory rails anda adalah di /home/system/deploy/akeyu
Kita mahu meng-install webserver nginx
<br />
<pre class="js" name="code">sudo apt-get install nginx
</pre>
dan hidupkan nginx dengan service
<br />
<pre class="js" name="code">sudo service nginx start
</pre>
sila layari host anda dan sepatutnya anda dapat melihat "Welcome to nginx!"
file config nginx terletak di /etc/nginx/nginx.conf
sila perhatikan file tersebut untuk mempelajari kaedah pengoperasian nginx, contohnya untuk pelajari dimana log filenya untuk tujuan troubleshoot pada masa hadapan.
nota + : seperti yang ditunjuk dalam railscast, kita mahu menyimpan file config nginx didalam folder rails application dan meng-symlink-nya untuk tujuan kemudahan mobility app tersebut cth: dengan penggunaan repository untuk digunakan pada lain2 server. Pada pendapat Ya'kob, ianya tidak sesuai untuk multiple application kerana kita mahu meng-config rails app yang lain juga didalam file config yang sama. Maka kita tinggalkan struktur file config nginx seperti asal.
<br />
<h3>
nginx + webrick proof of concept</h3>
tuliskan di
/etc/nginx/sites-enabled/default :
<br />
<pre class="js" name="code">server {
listen 80 default;
# server_name example.com;
root /home/system/deploy/akeyu;
try_files $uri/index.html $uri @unicorn;
location @unicorn {
proxy_pass http://localhost:3000;
}
}
</pre>
dan restart nginx
<br />
<pre class="js" name="code">sudo service nginx restart
</pre>
kemudian run webrick server
<br />
<pre class="js" name="code">bundle exec rails s
</pre>
layari http://localhost:3000 dan sepatutnya anda dapat melihat "Welcome aboard You’re riding Ruby on Rails!"
<br />
<br />
<h3>
Keganasan bermula.. </h3>
instalasi unicorn
<br />
/Gemfile
<br />
<pre class="ruby" name="code">gem 'unicorn'
</pre>
/config/unicorn.rb
<br />
<pre class="ruby" name="code">working_directory "/home/system/deploy/akeyu"
pid "/home/system/deploy/akeyu/tmp/pids/unicorn.pid"
stderr_path "/home/system/deploy/akeyu/unicorn/unicorn.log"
stdout_path "/home/system/deploy/akeyu/unicorn/unicorn.log"
listen "/tmp/unicorn.akeyu.sock"
worker_processes 2
timeout 30
</pre>
berikut adalah contoh file /etc/nginx/sites-enabled/default Ya'kob.
<br />
<pre class="js" name="code">upstream unicorn {
server unix:/tmp/unicorn.akeyu.sock fail_timeout=0;
}
upstream place {
server unix:/tmp/unicorn.place.sock fail_timeout=0;
}
server {
listen 80;
server_name akob.akeyu.com.my;
root /home/system/deploy/place/public;
try_files $uri/index.html $uri @place;
location @place {
proxy_pass http://place;
}
error_page 500 502 503 504 /500.html;
}
server {
listen 80 default;
server_name www.akeyu.com.my;
root /home/system/deploy/akeyu/public;
try_files $uri/index.html $uri @unicorn;
location @unicorn {
proxy_pass http://unicorn;
}
error_page 500 502 503 504 /500.html;
}
</pre>
sila restart nginx supaya perubahan config mula berkesan.
<br />
<pre class="js" name="code">sudo service nginx restart
</pre>
perhatikan nginx listen kepada port yang sama untuk kedua-dua server, tetapi akan bertindak berlainan cara jika diakses dari host yang berlainan.
root dan try_files pula adalah untuk tujuan melayan (serve) file static jika ada dan @unicorn atau @place pula adalah untuk serve dari rails application.
location adalah dimana nginx dan unicorn dihubungkan.
unicorn akan menghasilkan sock pada /tmp apabila di run. Oleh itu kita menulis sock yang dihasilkan oleh unicorn pada bahagian location ini.
seperti app yang pertama Ya'kob membuat 1 lagi app bernama place, menggunakan unicorn dan mengedit file /config/unicorn.rb sama seperti app akeyu. tetapi Ya'kob gantikan semua akeyu dengan place. pastikan directory betul.
PENTING !: seperti isu Ya'kob, Ya'kob perlu untuk
<pre class="js" name="code">
chmod +w tmp/pids/ unicorn/
</pre>
dalam folder app kita. sila create jika tidak wujud.
run unicorn pada root application folder anda contoh di /home/system/deploy/akeyu
<br />
<pre class="js" name="code">bundle exec unicorn -c config/unicorn.rb -D
</pre>
dan juga pada direktori applikasi yang 1 lagi. dalam kes Ya'kob place
jika tiada error dipaparkan, bermakna ianya telah berjaya di-run
unicorn pada default-nya ia menyediakan 2 worker instance dan 1 master untuk melayan 3 client pada 1 serentak. Ia juga berkemampuan bertindak sebagai load balancer tetapi yakob belum mempelajarinya lagi.
dan sekarang jika anda melayari akeyu.com.my dan akob.akeyu.com.my anda telah mengakses 2 applikasi yang berbeza pada port yang sama.
sebagai proof of concept, anda juga boleh menggunakan webrick pada salah satu applikasi. contoh config nginx
<br />
/etc/nginx/sites-enabled/default
<br />
<pre class="js" name="code">server {
listen 80;
server_name akob.akeyu.com.my;
root /home/system/deploy/place/public;
try_files $uri/index.html $uri @place;
location @place {
# proxy_pass http://place;
proxy_pass http://localhost:3000; #webrick perlu di-run pada port lain dari 80 untuk mengelakkan bind access port 80 error
}
error_page 500 502 503 504 /500.html;
}
</pre>
dan run webrick anda pada port 80 dan -d detach / sbgai service
<br />
<pre class="js" name="code">rails s -p80 -d
</pre>
selamat mencuba! dan tolong beritahu apa penemuan yang anda alami/ kesalahan pada tutorial ini / kelemahan / ketidak fahaman dalam tutorial ini / sebarang ralat.Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com1tag:blogger.com,1999:blog-8506377466485586329.post-1193935239222145202012-05-21T04:13:00.000-07:002012-05-21T04:13:06.452-07:00storing backbone data inside dom element using jquery and retrieve it.storing:
$("#zone_data").data('zone', z.toJSON())
retrieving
$("#zone_data").data('zone')
z.toJSON() is a backbone model.Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com1tag:blogger.com,1999:blog-8506377466485586329.post-53367282289171479692012-05-14T02:41:00.001-07:002012-05-14T02:41:49.846-07:00how to use find in unixfind ~/dnscell_projects/dnscell/app/assets/javascripts/ -name *orig -printYa'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com0tag:blogger.com,1999:blog-8506377466485586329.post-76982244723470914002012-05-08T23:10:00.001-07:002012-05-08T23:10:38.692-07:00Backbone passing value to viewsvar view = new SentenceView({model: sentence});
var rendered = this.template(this.options.model.toJSON());Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com1tag:blogger.com,1999:blog-8506377466485586329.post-59216221256003701702012-05-01T11:45:00.001-07:002012-05-01T11:45:40.157-07:00Deleteting All Facebook friend programmatically using fb graph api, mobile fb site, & jQuery + firequery$.ajax({<br />
url: "https://graph.facebook.com/me/friends?access_token=AAAAAAITEghMBABoxQhYsFHaMdnQJgJ1BoDbedvjJdadnwsNPJlZBrQcO0n1FUDg68UZCSJZAtV4rorKr1iOBchJSkLiXY2Gizgz8CdsyyyMmPeG6uvX", // get this at http://developers.facebook.com/docs/reference/api/ take the <b>Friends</b> link and replace it.<br />
success: function(data) {<br />
console.log(data)<br />
jQuery.each(data.data, function() {<br />
$("input[name=friend_id]").val(this.id)<br />
$("form:first").serialize()<br />
$.ajax({<br />
url: "http://m.facebook.com/a/removefriend.php",<br />
data: $("form:first").serialize(),<br />
type: "post"<br />
})<br />
});<br />
},<br />
dataType: "json"<br />
});<br />
<br />
Use the fb mobile page (where we have confirm delete friend button) to execute this script.<br />
<br />
We need firebug & firequery to jquerify this page before we can execute this script.<br />
<br />
Basically, this script will fetch your friend id from the fb graph api & submit the confirm delete friend form using each friend id that it fetched.Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com2tag:blogger.com,1999:blog-8506377466485586329.post-3051981782984512982012-04-17T20:43:00.001-07:002012-04-17T20:44:08.729-07:00backbone collection view example<pre class="js" name="code">
//MODEL
var Appointment = Backbone.Model.extend({});
var AppointmentList = Backbone.Collection.extend({
model: Appointment
});
//VIEWS
var AppointmentView = Backbone.View.extend({
template: _.template('<span class="<%= if(cancelled) print("cancelled") %>">' +
'<%= title %></span>' +
'<a href="#">x</a>'),
render: function(){
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
//APPLICATION.JS
var AppointmentListView = Backbone.View.extend({
render: function(){
this.collection.forEach(this.addOne, this);
},
addOne: function(model){
var appointmentView = new AppointmentView({model: model})
appointmentView.render()
this.$el.append(appointmentView.el)
}
});
</code>Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com2tag:blogger.com,1999:blog-8506377466485586329.post-31346678361953817652012-04-17T16:48:00.001-07:002012-04-17T16:51:24.764-07:00Backbone Basic<pre class="js" name="code">
var Appointment = Backbone.Model.extend({});
var appointment = new Appointment();
appointment.set('title', 'My knee hurts');
var AppointmentView = Backbone.View.extend({
render: function(){
$(this.el).html('<br /><li>' + this.model.get('title') + '</li>');
}
});
var appointmentView = new AppointmentView({model: appointment});
appointmentView;
appointmentView.render()
$('#app').html(appointmentView.el);
</pre>Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com3tag:blogger.com,1999:blog-8506377466485586329.post-4423463369341091512012-03-30T16:28:00.002-07:002012-03-30T16:28:22.459-07:00Peta lokasi & database sekolah sekolah di Malaysia<iframe height="450" scrolling="no" src="https://www.google.com/fusiontables/embedviz?viz=MAP&q=select+col2+from+228406+&h=false&lat=4.203015387829173&lng=109.48569499999996&z=6&t=1&l=col2" width="100%"></iframe><br />
Anda bolih download & memanipulasi database sekolah ini di <a href="https://www.google.com/fusiontables/DataSource?docid=1oyPavoSJosa5ePQ3aTzllemF57wDjdcDA2tmeQ" target="_blank">sini</a>Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com1tag:blogger.com,1999:blog-8506377466485586329.post-83048346586125385382012-03-30T16:08:00.001-07:002012-03-30T16:30:01.840-07:00Peta/Database surau-surau dan masjid-masjid Zone Tengah Malaysia<iframe height="450" scrolling="no" src="https://www.google.com/fusiontables/embedviz?viz=MAP&q=select+col9+from+237744+&h=false&lat=2.9121821901665847&lng=102.00590763085938&z=10&t=1&l=col9" width="100%"></iframe><br />
<a href="https://www.google.com/fusiontables/DataSource?docid=1Nds2lyA-5eepYeN3U24yzNP-5F6QTW6KYkewHg" target="_blank">Fusion Table Database</a>Ya'kobhttp://www.blogger.com/profile/01261876352531523680noreply@blogger.com0