Saturday, December 29, 2012

အလြယ္ကူဆုံးနည္းလမ္းျဖင့္ Android Application ဖန္တီးျခင္း

http://www.myanmarplay.com/%E1%80%A1%E1%80%9C%E1%80%BC%E1%80%9A%E1%80%B9%E1%80%80%E1%80%B0%E1%80%86%E1%80%AF%E1%80%B6%E1%80%B8%E1%80%94%E1%80%8A%E1%80%B9%E1%80%B8%E1%80%9C%E1%80%99%E1%80%B9%E1%80%B8%E1%80%BB%E1%80%96%E1%80%84/
  • က်ေနာ္ ဒီပုိ႔စ္မွာ Android Application ႏွင့္ပတ္သက္ျပီး မည္သည့္ Coding ေတြကုိမွ မသုံးဘဲ၊ သုံးရန္မလိုအပ္ေသာ Application ေရးသားပုံ၊ ေရးသားနည္းကုိ တင္ျပေပးသြားမွာပါ။ အခုတင္ျပေပးမယ့္ နည္းစနစ္ကေတာ့ Online/ Offline ဖတ္ရႈလို႔ ရပါတယ္။
  • ဒီနည္းစနစ္လုိပဲ အျခားေသာ Android Application ေရးသားႏုိင္တဲ့ Link မ်ားစြာလည္းရွိပါေသးတယ္။ က်ေနာ္ အခါ အားေလ်ာ္စြာ Facebook Wall မွာ Share ေပးေလ့ရွိပါတယ္။ အခု တင္ျပတဲ့ နည္းစနစ္ကေတာ့ အလြန္ကုိ လြယ္ကူရုိးစင္းျပီး ဖန္တီးရတာ ေပ်ာ္စရာလည္း ေကာင္းလို႔ တင္ျပေပးလိုက္တာပါ။
  • တစ္ခုေတာ့ နားလည္ေပးခ်င္တာက ဒီပုိ႔စ္က Pro ေတြအတြက္ ရည္ရြယ္ေရးသားတင္ျပေပးျခင္းမဟုတ္ပါ။ အေပ်ာ္တမ္း Android apk မ်ား ဖန္တီးခ်င္သူ Beginner မ်ားအတြက္သာ ရည္ရြယ္ပါတယ္ ခင္ဗ်ာ။ :-) :-) :-)

  • က်ေနာ္တုိ႔အေနနဲ႔ ပထမဆုံး Android application အျဖစ္ဖန္တီးခ်င္တဲ့ ဆုိဒ္ သုိ႔မဟုတ္ Facebook PageFacebook Group တုိ႔ ၏ သက္ဆုိင္္ရာ LOGO  ကုိအရင္ဆုံး ၾကိဳတင္ျပီး ထုတ္ထားလိုက္ရင္ ေတာ့ ပုိအဆင္ေျပတာေပါ့ ခင္ဗ်ာ။ က်ေနာ္ နမူနာအေနျဖင့္ http://buddhismbeams.blogspot.com ကုိ Android Apk ဖန္တီးျပပါမယ္။
  • ေအာက္ပါပုံမွာ ျပထားသလို ဆုိဒ္ရဲ့ Rss Feed or Atom Feed ကုိယူပါမယ္။ ပုံမွာ ျပထားသည့္ အတုိင္း ႏွိပ္လုိက္ပါ။ (1) ဆုိတဲ့ေနရာကုိ အရင္ဆုံး ႏွိပ္လိုက္ပါ။ ျပီးရင္ More Information ဆုိတဲ့ (2) ေနရာကုိ ႏွိပ္လုိက္ပါ။
 
  • ေအာက္ပါပုံအတုိင္း ေတြ႔ရပါမယ္။ ပုံမွာျပထားသလုိ က်ေနာ္တုိ႔အေနနဲ႔ Atom Feed ကုိပဲယူယူ၊ Rss Feed ကုိပဲယူယူ အဆင္ေျပပါတယ္။ Click လုိက္ပါက Browser နဲ႔ ပြင့္သြားပါမယ္။
  • ေအာက္ပါပုံအတုိင္း ေတြ႔ရပါမယ္။ အဲဒီ Feed လင့္ကုိ Copy ယူလိုက္ပါ။
  • ထုိ႔ေနာက္ ေအာက္ပါပုံမွာ ျပထားသည့္အတုိင္း ဒီေနရာမွာ Sign up လုပ္ေပးလိုက္ပါ။
  • Sign Up လုပ္ျပီးပါက ေအာက္ပါပုံအတုိင္း Create New Application ဆုိတဲ့ Page ကုိ ခ်က္ခ်င္းေရာက္သြားပါမယ္။ ပုံမွာ ျပထားသလို မိမိေရးသားေသာ Application ႏွင့္သက္ဆုိင္ရာမ်ားကုိ ျဖည့္ပါ။အထက္မွာ Copy ယူခဲ့ေသာ Atom Feed or Rss Feed ရဲ့ Link ကုိ သုံးခုေျမာက္ မ်ွားေနရာမွာ ထည့္သြင္းေပးလိုက္ပါ။ ထုိ႔ေနာက္ Create App ကုိႏွိပ္လိုက္ပါ။
  • ပုံမွာ ျမင္ရသလို ေတြ႔ျမင္ရပါမယ္။
  • Icon ကုိေတာ့ ဆုိဒ္နဲ႔ သက္ဆုိင္ရာ ပုံ ကုိထည့္သြင္းေပးလုိက္ပါ။ ထုိ႔ေနာက္ Save Changes ကုိႏွိပ္လုိက္ပါ။
  • Icon ကုိထည့္သြင္းျပီးပါက ေအာက္ပါအတုိင္းေတြ႔ျမင္ရပါမယ္။ ထုိ႔ေနာက္ Save Changes ကုိႏွိပ္လုိက္ပါ။ ျပီးရင္ Menu > Tabs ကုိသြားပါ။
  • ပုံမွာ မ်ွားျပထားသည့္ေနရာမ်ားအတုိင္း ျဖည့္ေပးပါ။ Check လုပ္ရမယ့္ေနရေတြမွာ မသုံးခ်င္ရင္ ျဖဳတ္ထားႏုိင္ပါတယ္။ Tab Icons ဆုိတဲ့ေနရာမွာ မိမိစိတ္ၾကိဳက္ Icon ေလးေတြဖန္တီးျပီးထည့္ႏုိင္ပါတယ္။ ဒီေနရာမွာေတာ့ Default အတုိင္းပဲ လုပ္ျပေပးထားပါတယ္။ ေနာက္ပုိင္းမိမိစိတ္ၾကိဳက္ဖန္တီးၾကည့္ပါ။
  • ေနာက္တစ္ဆင့္ကေတာ့ Settings ဆုိတဲ့ Tab ကုိသြားလုိက္ပါ။ ေအာက္ပါအတုိင္းမိမိစိတ္ၾကိဳက္ Setting မ်ားကုိ ျပင္ဆင္ႏုိင္ပါတယ္။ အားလုံးထည့္သြင္းျပီးရင္ Save Changes ကုိႏွိပ္လိုက္ပါ။
  • Submit ဆုိတဲ့ Tab ေအာက္ Submit to Build ဆုိတာကုိႏွိပ္လိုက္ပါ။ မိမိရဲ့ Gmail ကုိ က်ေနာ္တုိ႔အခု ဖန္တီးလုိက္ေသာ Apk ဖုိင္ကုိ ပုိ႔ေပးပါလိမ့္မယ္။ ေဒါင္းယူျပီး Android ေပၚမွာ Testing လုပ္ႏုိင္ပါျပီ။
  • တစ္ခု သတိျပဳေစခ်င္တာက ဒီလင့္ကေန Android apk ဖန္တီးလိုက္တဲ့အခါမွာ မိမိရဲ့ Gmail ထဲသုိ႔ Auto သုိ႔မဟုတ္ Default apk ဖုိင္တစ္ခုကုိ အရင္ဆုံးပုိ႔ေလ့ရွိပါတယ္။ ဒါေၾကာင့္ က်ေနာ္တုိ႔အေနနဲ႔ ေမးလ္ထဲမွာ AppYet (2) or (3) လို႔ ျဖစ္မွာသာ မိမိဖန္တီးလုိက္ေသာ application ရဲ့ Setting မ်ားအတုိင္းရရွိမွာ ျဖစ္ပါတယ္။
  • ျပည္ပမွာရွိေနတဲ့ Android Application ဖန္တီးခ်င္သူမ်ားကေတာ့ Google Play မွာ တုိက္ရုိက္ မိမိဖန္တီးလုိက္ေသာ Application မ်ားကုိ Market မွာ Publish လုပ္ႏုိင္ပါတယ္။
  • Facebook Page, Group နဲ႔ Personal Facebook Profile မ်ားဖန္တီးရန္ FB-RSS Feed ထုတ္ယူပုံကုိေတာ့ ဒီပုိ႔စ္မွာ ဆက္ျပီး မေရးေတာ့ပါဘူး။ လုိအပ္ရင္ဆက္သြယ္ႏုိင္ပါတယ္။ :-) :-) :-) အားလုံး အဆင္ေျပပါေစ…
  • PDF ဖိုင္ကုိ ဒီလင့္မွာ ေဒါင္းယူႏုိင္ပါတယ္။ အခု နမူနာျပရင္းနဲ႔ ထုတ္လုိက္တဲ့ Apk Download Link ပါ။ ပုံေတြကေတာ့ ဒီ app ရဲ့ Android Screenshot ေတြပါ။

Phoner ေပ်ာက္ျပန္ရွာေပးမဲ့ software ေလးေနာ္

http://www.aungkyaw.com/2012/12/phoner-software.html
ကြ်န္ေတာ္တို ့ သံုးေနတဲ့ ဖုန္းေတြက ေစ်းႏွဳန္းအရဆို sim card ထက္ေတာင္ တန္ဖိုးမ်ားေနၾကတယ္...
တကယ္လို ့ ဖုန္းက အခိုးခံရတာတို ့... ေမ့က်န္ခဲ့တာတို ့ ေၾကာင့္ ေပ်ာက္သြားခဲ့ရင္ နွေျမာစရာမေကာင္းဘူးလား...
အဲလိုမျဖစ္ရေအာင္ နည္းလမ္းေလးတစ္ခုေပးပါမယ္...
___________________
ဖုန္းေပ်ာက္ ျပန္ရွာ ျခင္း.
_______________________________
Software ေလးတစ္ခုနဲ ့ လုပ္ရမွာပါ...
ဘာေတြ လုပ္ႏိုင္မလဲ ဆိုေတာ့
ကြ်န္ေတာ္တို ့ဖုန္းရဲ ့ Location ကို Web ေပၚကေန ရွာလို ့ရမယ္...
ဖုန္းကို Web ကေန လွမ္းေခၚလို ့ရမယ္...
message လွမ္းပို ့လို ့ရမယ္...
ျပီးေတာ့
{ကိုယ့္ဖုန္း ေပ်ာက္ေနခ်ိန္မွာ Call Log ကို Web ေပၚကပဲ ၾကည့္လို ့ရမယ္...
Call Recording ကို နားေထာင္လို ့ ရမယ္
ကိုယ္သိခ်င္တဲ့ Date အေတာ အတြင္းမွာ ရိုက္ထားတဲ့ photos ေတြကို ၾကည့္လို ့ရမယ္
ွSms ေတြ စစ္လို ့ရမယ္...
Phone ကို front camera ရိုက္လို ့ရေအာင္ web ေပၚကေန ထိန္းခ်ဳပ္ႏိုင္မယ္..
ေဘးနားက အသံေတြကို Recording လုပ္လို ့ရမယ္...}
..........
{ } အတြင္းက feature ေတြက Device ေရြးတယ္...
ကြ်န္ေတာ့္ ဖုန္းမွာေတာ့ မရဘူး..
တျခား လုပ္ၾကည့္ခ်င္တဲ့ လူေတြ အတြက္ပါ.....
ကဲ ဘယ္လို လုပ္မလဲ ဆိုေတာ့ http://db.tt/exwohwJG
မွာ apk ကို ေဒါင္းလိုက္ပါ Install လုပ္ျပီးရင္ Open လိုက္ပါ...

အဲ့မွာ Register လုပ္ဖို ့ ေတြ ့ပါလိမ့္မယ္...
Password and email ကိုေသခ်ာမွတ္ထားပါ..
ကိုယ့္ Gmail ထဲကို သူတို ့ mail တစ္ခုပို ့လိုက္မယ္...
အဲ့ link ကိုသြားျပီး.. Activate ျဖစ္ေအာင္လုပ္ပါ...
အဲ့တာေတြ အားလံုးျပီးသြားရင္ 

www.tispy.net မွာ ၀င္ပါ...
ညာဘက္ေထာင့္က Login ဆိုတာကို ႏိုပ္ျပီး Login လုပ္ပါ...
ျပီးရင္ အဲ့မွာ ပါတဲ့ Feature ေတြကို သံုးနိုင္ပါျပီ..
ကဲ ဘာလို ေသးလဲဗ်ာ...

Blacklist လုပ္လို႔၇မယ္..apk ေလး

Blacklist လုပ္လို႔၇မယ္..apk ေလး
http://www.1mobile.com/easy-filter-191534.html

၀မ္းသာရမွာလား..........၀မ္းနည္းရမွာလား

၀မ္းသာရမွာလား..........၀မ္းနည္းရမွာလား


မထသအထူးကားေတြမွာ ဒရိုင္ဘာဖုန္းတစ္လံုး၊ စပယ္ယာဖုန္းတစ္လံုးေတြနဲ႔ အဆင္ေျပေနၾကၿပီ။
ေန႔တိုင္းလိုလုိ ၾကားရတာက-

““ဟလို.. ေအး... ဘယ္ႏွစ္မိနစ္ျခားလဲ။ ပါလာၿပီလား။ ဟုတ္တယ္။ အဲ့ေကာင္မီးပြိဳင့္မွာက်န္ခဲ့ တယ္။ မွတ္တိုင္ကထြက္သြားၿပီလား။ ၁၅ မိနစ္ ဟုတ္လား။ ေမာင္း... ဆရာေရ... ေနာက္ကေကာင္ ပါလာၿပီ””

ကဲ... အဆင္ကိုေျပလို႔.... မွတ္တိုင္ေတြမွာ ကားဆိုက္တဲ့အခ်ိန္မွတ္သူေတြကလည္း ဖုန္းကိုယ္စီနဲ႔။

ဟိုတေလာတုန္းက အလုခံရတဲ့အထဲဖုန္းကေလးပါသြားေလေတာ့ ဆက္သြယ္မႈေတြကျပတ္။
အေရးႀကီးရင္ ေဘးကေဘာ္ဒါဖုန္းယူယူဆက္ရ။ တစ္ေန႔က ၿမိဳ႕ထဲဆင္းေတာ့ မထသကားေပၚမွာ။
ဖုန္းဆက္စရာတစ္ခုရွိလို႔ ေဘးကေဘာ္ဒါဆီက ဖုန္းေတာင္းမိတယ္။ ျပႆနာပဲ။ သူ႔ဖုန္းမွာ
ေငြလက္က်န္ ၁၂ က်ပ္ဆိုလား။ ဒါဆိုလည္းေနေတာ့..လို႔။ မွတ္တိုင္ေရာက္မွဆက္မယ္ေပါ့။

နားစြန္နားဖ်ားၾကားတဲ့ ေငြေကာက္စပယ္ယာက လက္ထဲကဖုန္းကိုလွမ္းထိုးေပးတယ္။
““ဆက္ေလ”” တဲ့။

ခီြးခီြး..... ရီရမလို.. ငိုရမလို... အျဖစ္က။




အဘဥကၠာကုိကုိ facebook မွ

Sp flash tool

http://www.mediafire.com/?20b7pr8on31psf3

Install ClockworkMod Recovery on Xperia Ray ST18i / ST18a with x-Parts CWM

The tutorial for installing ClockworkMod recovery on Xperia Ray is now available, as well as how to root. You can install ClockworkMod recovery on Xperia Ray ST18i / ST18a with x-Parts CWM Installer with the tutorial given below. This ClockworkMod recovery would help you later update to Android 4.1.1 Jelly Bean custom ROM.
In this tutorial, we will tell you how to install ClockworkMod recovery on Xperia Ray on Android 4.0.4 ICS firmware with complete steps and instructions. You will have to backup all your data in the phone as a precaution. This tutorial works with Sony Xperia Ray with locked/unlocked bootloaders. Let’s get on with the tutorial now.


Disclaimer: All the tools, mods or ROMs mentioned below belong to their respective owners/developers. We (TeamAndroid.com) or the developers are not to be held responsible if you damage or brick your device. We don’t have you on gun point to try out this tutorial ;-)
Make sure you have installed all your USB drivers for the Sony Ericsson Xperia Ray to connect it with the computer. Download Sony Ericsson Xperia Ray USB drivers! Apart from just the USB drivers, there are a few more things that you need to take care of.
1. You need to enable USB debugging mode. This helps to connect your Android phone with the PC. See here: How to Enable USB Debugging.
2. Your phone battery should be 80-85% charged. If your phone goes off suddenly because of battery, during flashing ROMs or installing mods and updates — your phone might go dead permanently. See here: How to Check Battery Percentage.
3. Backup all your important data that you might need as soon as your flash a new ROM, or make a backup for just in case, you never know when anything might go wrong. See below on how to backup data:
4. Your phone should be factory unlocked. Additional instructions for locked Android devices will be added in the tutorial for unlocking devices.
Now, let’s proceed with the tutorial on the next page and install ClockworkMod recovery on Xperia Ray ST18i / ST18a with x-Parts.

Android ဖုန္းေတြမွာ Custom Rom တင္နည္းမ်ား (U8950D/ C8950D)

U8950D Sony Xperia Rom

http://pan.baidu.com/share/link?shareid=133771&uk=2298848745#dir/path=%2F11-U8950D--%E7%B4%A2%E5%B0%BC%E7%BE%8E%E5%8C%96
U8950D S3 RomU8950D

http://pan.baidu.com/share/link?shareid=130826&uk=2298848745#dir/path=%2F8--8950D%E7%BE%8E%E5%8C%96S3ROM%E5%85%B1%E4%BA%AB%E7%9B%AE%E5%BD%95
CM 10 interface rom
 http://pan.baidu.com/share/link?shareid=150703&uk=2298848745#dir/path=%2F89--U8950D--B949%E9%AA%A8%E5%A4%B4%E5%8C%85
ကဲပါဗ်  Rom လင္႕ေလးေတြေပးၿပီး တင္နည္းမေျပာျပလို႕အားလံုးစိတ္ကြက္ေနၾကပါဦးမယ္ ဘာပဲျဖစ္ျဖစ္နည္းလမ္းက်ေအာင္ပို႕စ္ေလး တစ္ခုေတာ႕ျဖစ္ညွစ္ေရးလိုက္ပါ႕မယ္ဗ်ာ Huawei phone ေတြအတြက္ rom တင္ဖို႕လိုအပ္တာကေတာ႕CWM ေခၚ ရီကာဗာရီမုဒ္ပါပဲ ရီကာဗာရီမုဒ္ ၀င္လို႕မရလို႕ေအာ္ေနၾကသူမ်ားလည္းသတိထားသင္႕ပါတယ္ Recovery mod မွာ Stock recovery နဲ႕ကၽြန္ေတာ္္တို႕တေတြဖုန္းတစ္လံုးကိုလုပ္ခ်င္သလိုလုပ္လို႕ရေအာင္ အျပင္ကေနသြင္းတဲ႔ Recoverymod ဆိုၿပီးရွိပါတယ္ အခု Huawei U8950D ကိုအဓိကထားၿပီးေျပာပါ႕မယ္

http://dl.dropbox.com/u/90694936/CN-U8950D_Recovery.rar

ေဒါင္းလို႕ရလာတဲ႔ ေဆာ႕၀ဲကိုဇစ္ျဖည္ၿပီးကြန္ျပဴတာမွာ run ထားေပးပါ


ဖုန္းကိုပါ၀ါမပိတ္ခင္ setting ထဲမွာရွိတဲ႕ firstboot mod ကိုပိတ္ေပးပါပါ၀ါပိတ္ပါ ေသခ်ာေအာင္ဓါတ္ခဲျဖဳတ္လိုက္ပါ ၁၅ စကၠန္႕ ေလာက္ ထားၿပီးဓါတ္ခဲျပန္တပ္ပါ  ၿပီးယင္ Vol down + Power ႏွစ္ခုတြဲႏွိပ္ပါ Huawei logoမွာရပ္ၿပီးေနပါလိမ္႕မယ္ အဲဒီအခ်ိန္မွာပဲ ကြန္ျပဴတာနဲ႕ဖုန္းကိုယူအက္စဘီထိုးၿပီးခ်ိတ္လိုက္ပါ  Command box အလုပ္လုပ္ေနတာေတြ႕ရပါလိမ္႕မယ္ ၿပီးယင္ ရပ္သြားပါလိမ္႕မယ္ကြန္ျပဴတာက ကီးတစ္ခုခုႏိွပ္လိုက္ပါ command box ေပ်ာက္သြားပါလိမ္႕မယ္ ဖုန္းကိုယူအက္စဘီမွျဖဳတ္ပါဓါတ္ခဲျဖဳတ္ပါ ၿပီးလွ်င္ဓါတ္ခဲျပန္တပ္ၿပီး Voi up+ Power တြဲၿပီးစကၠန္႕ ႏွစ္ဆယ္ခန္႕ႏွိပ္ထားေပးပါ ေအာက္ပါစာေၾကာင္းမ်ားေပၚလာမည္။

--reboot system now 重启系统--apply sdcard:update.zip 使用SD卡根目录的update.zip更新系统--wipe data/factory reset 清空data分区并恢复出厂设置--wipe cache partition 清空cache分区--install zip from sdcard 从SDcard选择文件更新系统--apply sdcard:update.zip 使用SD卡根目录的update.zip 更新系统--choose zip from sdcard 从SD卡选择zip格式升级包--toggle signature verification 切换签名验证--toggle script asserts 切换升级脚本检查--backup and restore 备份和恢复--Backup 备份--Restore 恢复--Advanced Restore 高级恢复--mounts and storage 挂载和存储ထိုအခါရီကာဗာရီမုဒ္ထဲသို႕ေရာက္ရွိၿပီျဖစ္ပါသည္။


rom တင္ရန္ မိမိေဒါင္းထားေသာ rom zip  ကို မိမိဖုန္းအတြင္းရွိ မိုက္ကရိုအက္စဒီကဒ္အတြင္းသို႕ (မည္သည္႕ဖိုဒါေအာက္တြင္မွမထားပဲ )ကူးထည္႕ထားေပးပါ။ဖုန္းတြင္ျပန္တပ္ၿပီးရီကာဗာရီမုဒ္ထဲသို႕၀င္ပါ ။ပထမဦးစြာ wipe data/factory reset လုပ္ေပးပါ ေျပာစရာက်န္ခဲ႕ပါသည္ ရီကာဗာရီမုဒ္ထဲသို႕ေရာက္ေသာအခါ touch အသံုးျပဳ၍ မရေတာ႕ပါ volup =အေပၚသို႕ေရႊ႕ျခင္း vol down = ေအာက္သို႕ေရႊ႕ျခင္း power key = Enterျဖစ္ပါသည္ ။ဒုတိယအေနျဖင္႕wipe cache partition လုပ္ ေပးပါ ။ၿပီးလွ်င္--mounts and storage ထဲသို႕၀င္ပါ--mount /system 挂载/system分区(系统分区)--mount /data 挂载/data分区(数据分区)--mount /cache 挂载/cache分区(缓存分区)--mount /sd-ext 挂载/sd-ext分区(A2SD分区)--format boot 格式化内核分区--format system 格式化系统分区--format data 格式化数据分区--format cache 格式化缓存分区--format sdcard 格式化存储卡--format sd-ext 格式化内存卡SD--mount USB storage 挂载SD卡为U盘模式format system လုပ္ေပးပါ အားလံုးၿပီးစီးလွ်င္  apply sdcard:update.zip ကိုေရြးေပးပါ ထိုအထဲမွမိမိ ကူးထည္႕ထားေသာ rom zip ကိုေရြးေပးပါ အခ်ိန္ႏွစ္မိနစ္ခန္႕ေစာင္႕ပါ ၿပီးလွ်င္ ၿပီးေၾကာင္းေပၚလာမည္  ထိုအခါreboot system now

ကိုေရြးေပးလိုက္ပါ မိမိေဒါင္းထားေသာ rom ေလး လွပစြာမိမိဖုန္းတြင္အသက္၀င္ေနသည္ကိုေတြ႕ရမည္ ျဖစ္သည္။ တေန႕ဖုန္းတစ္လံုးမ၀ယ္ခ်င္ေသာ္လည္း တေန႕ရြန္အသစ ္interface အသစ္တစ္ခုတင္၍ ေပ်ာ္ရႊင္ႏိုင္ၾကပါေစ။

F-Secure Mobile Security (full version)

ဖုန္းထဲမွာ antivirus ေကာင္းေကာင္း ရွိခ်င္သူမ်ား အတြက္ ဥေရာပ မွာ နာမည္ၾကီးေနတဲ့ € 8.12 တန္ F-Secure Mobile Security (full version) ေလးပါ
အရမ္းမိုက္တယ္ သံုးၾကည့္ေနာ္
https://www.box.com/shared/ac7r95bpv12zhyqlz3gm
 

ဖုန္းလာရင္ flash မီး လင္းတဲ့ APK ေလးပါ

ဖုန္းလာရင္ flash မီး လင္းတဲ့ APK ေလးပါ

https://www.dropbox.com/s/7vh88g7ors0bh4z/Flash%20Blink%20MMAS.apk
https://www.dropbox.com/s/osy3cs52p891tnl/Flashlight%20call.apk

Friday, December 21, 2012

Android ROM: Wellcom A88 Froyo 2.2 PDAMobiz_Cyanogenmod 6.1 by wasan007 !!!

Android ROM: Wellcom A88 Froyo 2.2 PDAMobiz_Cyanogenmod 6.1 by wasan007 !!!

  เป็นรอม A88 ตัวแรกของผมครับ และคงจะเป็นตัวสุดท้ายด้วย ก่อนที่จะเปลี่ยนมือไปอยู่กับเจ้าของใหม่ เลยขอปล่อยรอมไว้เป็นที่ระลึกสักหนึ่งตัว Base rom ที่นำมาทำคือ CyanogenMod 6 Rom 2.2 for Z71 ตัวที่เป็น RC ครับ CM6 V6.1.0-RC2 for z71   เพราะ น่าจะ Stable ในระดับหนึ่งแล้ว ส่วน nightly build ชื่อก็บอกแล้วว่า ออกทุกค่ำคืน เหมาะสำหรับคนที่ชอบแฟลชรอม Update รอมตัวนี้ผมไม่ได้ปรับแต่งอะไรมาก แต่ทำออกเป็น Full Version แฟลชครั้งเดียวพร้อมใช้งานได้ทันที ขอเชิญทดสอบกันได้ครับ

Thank CyanogenMod for base rom
......
ไม่ต้องพูดพร่ำทำเพลงกันมากมาย เพราะ 2.2 ออกมาหลาย build กันแล้ว ส่วนใหญ่คุ้นเคยกันดีอยู่แล้วนะครับ  
           
แฟลชตัวรอมนี้เพียงอย่างเดียวนะครับ ไม่ต้องไปแฟลช Google Addon อีก เพราะผมใส่มาให้ในรอมแล้ว 

  
Widget มีหลายตัวครับ และพิมพ์ไทยได้ทันทีด้วย Arch ไทยคีย์บอร์ด ตรง About Phone ผมแก้ชื่อเครื่องจาก Z71 กลับมาเป็น Wellcom A88 เพื่อให้ตรงรุ่น ส่วน Mod version เป็น PDAMobiz-CyanogenMod


  

เพิ่ม Live Wallpaper อีกสามแบบ



  
เปลี่ยน Icon Battery มาให้ด้วย แต่จะแสดงที่หลักสิบนะครับ หากจะให้แสดงหลักหน่วย ให้เข้าไปตั้งค่าที่ CyanogenMod setting เข้าไปตั้งค่าในส่วนของ User interface ปรับแต่งได้เยอะมากลองเล่นกันดูครับ

สรุป

Add
1. เปลี่ยนภาพ Background หลังแฟลชใหม่
2. Google Addon + โปรแกรมและ Widget
3. เพิ่มริงโทน และ notification
4. ฟอนต์เปื้อนยิ้ม 
5. เพิ่ม Home อีก 2 twlauncher , Launcher Pro
6. Icon Battery
7. ใช้งาน PC Suite for Android ได้ทันทีไม่ต้องลง apk เพิ่ม (ใน PC ต้องมี PC Suite for Android อยู่แล้วนะครับ )

How to วิธีแฟลชรอม

Download รอม  แตกไฟล์ จะได้ไฟล์ PDAMobiz-cm-6.1.0.zip ให้ Copy ไปใส่ใน SD-Card  ต้องไม่อยู่ใน Folder ใด ๆ นะครับ

1. ติดตั้ง RomManager จาก Market (ในรอมใส่ไปให้แล้ว)

2. เลือก Flash ClockworkMod Recovery  แล้วเลือก Commtiva Z71 (Boston, and mor) รอจนขึ้น Successfully flashed ClockworkMod Recovery
3. ปิดเครื่องและเข้า Recovery

4. เลือก wipe data/factory reset และ wipe cache partition 

5. install zip from sdcard

6. choose zip from sdcard
7. เลือกที่ไฟล์ PDAMobiz-cm-6.1.0.zip เพื่อแฟลชรอม
8. รอสักครู่ เมื่อแฟลชเสร็จให้เลือก reboot system now
จบขั้นตอนการแฟลชรอมครับ

How to flash a ROM.


Download the ROM file to the Copy PDAMobiz-cm-6.1.0.zip file to your SD-Card is not in any of my Folder.

One. RomManager installed from Market (to put it in ROM).

Two. Choose Flash ClockworkMod Recovery and choose Commtiva Z71 (Boston, and mor) wait until the Successfully flashed ClockworkMod Recovery.

Three. Shutdown and Recovery.

4th. Choose wipe data / factory reset and wipe cache partition.

Five. install zip from sdcard.

6. choose zip from sdcard.

7th. Choose PDAMobiz-cm-6.1.0.zip file to flash ROM.

Eight. Wait a moment when the flash is complete, select reboot system now.

I finish the flash ROM.

คำเตือน :
การอัพ ROM มีความเสี่ยง  อาจเกิดความเสียหายจนไม่สามารถแก้ไขได้  และผมไม่สามารถรับผิดชอบใด ๆ หากเกิดความเสียหายกับเครื่องของท่านนะครับ กรุณาอ่านวิธีการและศึกษาให้มั่นใจก่อนอัพ ROM หากมีปัญหา สอบถามได้ที่เว็บบอร์ดนะครับ

Download
Download Rom http://www.mediafire.com/?1mjwv95c8k7vep9

Special Thanks
ขอขอบคุณพี่ชาญ สำหรับเครื่องรุ่นต่าง ๆ ที่กรุณาจัดหาให้ ทำให้ผมได้มีโอกาสทำรอม
พี่หมอพี คุณ mrtoto ผู้จุดประกายและเปรียบเสมือนเป็นอาจารย์ในการทำรอมของผม 
พี่ฮง พี่มารุต คุณ tnp ผู้บุกเบิกรอมแอนดรอยเป็นกลุ่มแรกของเว็บเรา
ทีมงานPDAMobiz และ รอม Staff ทุกท่าน


ปรับปรุงโดย wasan007 วันที่ 22-11-10 เวลา 23:26

Tuesday, December 11, 2012

google play store ကို ကြန္ျပဴတာနဲ႔ ခ်ိတ္ျပီး free ေပးတာေတြ ကိုေဒါင္းရန္

. google chrome version 20.0ႏွင့္အထက္ web browser ကို စက္မွာအင္စေတာ လုပ္လိုက္ပါ။ျပီးရင္ ဒီေကာင္ေလး ေဒါင္းလိုက္ပါ။ http://www.mediafire.com/?5lkp3379zzcz3mx ျပီးရင္ google chr0me icon ေပၚမ်ွားတင္ျပီး ညာကလစ္ကိုႏိွပ္ျပီး properities ကိုထပ္ႏိွပ္ျပီး shortcut ကိုေရြးလိုက္ပါ။ ေနာက္ target ေနရာကေဘာက္မွာ စာေတြရွိပါတယ္။အဲ့မွာ စာျပင္ေပးရပါမယ္ chrome.exe ေနရာမွာ spacebar ေလးျခားျပီး --ignore-certificate-errors ဆိုျပီးထဲ့လိုက္ပါ။ ေနာက္ အိုေကႏိွပ္ျပီးရင္ေတာ့ google chrome ကိုဖြင့္လိုက္ပါ။ g.....chrome ဘယ္ဘက္မွာ extensions ဆိုတာေလးကိုႏိွပ္ျပီး apkdownloader ေလးမ၇ိွရင္ရွာေပးလိုက္ပါ ေနာက္ျပီးရင္ေတာ့ apk downloader ေအာက္က option ကိုႏိွပ္ပါ။ ျပီၚရင္မိမိ mail and password ကိုျဖည့္ ေပးလိုက္ပါ ။ေနာက္တခုက android id ကိုျဖည့္ရပါမယ္ ။android id က ၁၆ လံုးရိွပါတယ္။မိမိ ဖုုန္းကေနရွာရမွာပါ ရွာျပီးထည့္ေပးလိုက္ပါ။ျဖည့္ျပီၚသြားရင္ေတာ့ login လုပ္ပါ။ေနာက္ျပီး sim operator မွာ မိမိ ၾကိဳက္ရာႏိႈင္ငံရဲ့ ဖုန္းလိုင္းကိုေရြးျပီး ေနာက္ save setting ကိုႏိွပ္ပါ ။ကဲဒါဆုိရင္ အမုန္း၀င္ ေဒါင္းလို႔ရပါျပီ ခင္ဗ်ာ။အဆင္မေျပရင္ေတာ့ login လုပ္ထားတာေလျပန္ထြက္လိုက္ ျပန္၀င္လိုက္ လုပ္ေပးလိုက္ပါေနာ္......အိုေက....ဆိုေျပသြားပါလိမ့္မယ္။ဒီနည္းေလး ကို လုပ္ေပးတဲ့သူ နာမည္ေတာ့ မသိေတာ့လို မေရးျဖစ္တာ သီးခံေပးေစခ်င္ပါတယ္ဗ်ာ......။
MediaFire
www.mediafire.com
apkdownloader-1.3.0.zip

www.mediafire.com
apkdownloader-1.3.0.zip
ေရးသားသူ  https://www.facebook.com/mgmg.lay.395

NEO L MT25i 4.1.B.0.587 HongKong Firmware .ftf

NEO L MT25i 4.1.B.0.587 HongKong Firmware .ftf File Format

Xperia NEO L MT25i 4.1.B.0.587 HongKong Firmware .ftf File Format


DOWNLOAD

Monday, December 10, 2012

TUTORIAL] S-OFF guide for the complete Hero newbie...

[TUTORIAL] S-OFF guide for the complete Hero newbie...

I know its an old phone now, but my friend gave me this one to update, and it took a while for me to figure it out (used to my Evo 3D)... so ive put this together to help anyone wishing to S-OFF and can't work it out...

*** This is for GSM ONLY. Don't try it if your not sure or you'll brick your phone ***

This is what I did to get S-OFF...

Download Modaco's SPL HBoot 1.76.2007 and move it to your SD Card.

Download Clockworkmod Recovery 2.5.0.7, rename it to " recovery.img " and move it to your SD Card.

Download UniversalAndroot and move it to your SD Card.

Download ES File Explorer from the market (or any other file explorer).

Download Android Terminal Emulator from the market.

Enable installing from SD Card.. (Settings -> Applications -> tick Unknown Sources)

Open ES File Explorer and install Universal Androot.

Run it and press Root :) ...
It should say.. "Woot ! Your device is rooted !" ... close the program.

Open Android Terminal Emulator, and type " su " . Press enter.
Allow SuperUser access.

Type " flash_image recovery /sdcard/recovery.img " and press enter.
It should just show a $ sign on a new line.

Power off your phone, remove and replace your battery and press and hold the Home button while pressing Power.

Your phone will load into Clockworkmod Recovery.

Select " install zip from sdcard ", then " choose zip from sdcard ". Select " update-hero-hboot-1.76.2007-signed.zip ". Press Back, Back and " reboot system now ".

Leave the phone to update HBoot. Do not interrupt it. (It restarts a few times)

Once done, the phone will restart and load as normal. Check the HBoot version by going into HBoot again (turn off, hold Volume - and Power) and it will hopefully show S-OFF, Hboot 1.76.2007. Job done.

Sunday, December 9, 2012

sony xperia J st26 i root

ဒီဖုိင္ေလးကုိ အရင္ ေဒါင္းလုိက္ပါ။

Root_with_Restore_by_Bin4ry_v13.zip

ေဒါင္းျပီးရင္ေတာ့ Extract လုပ္လုိက္ပါ။
ဖုန္းကုိ UsB Dubbging နဲ႕ Unknown Sources ကုိ အမွန္ျခစ္ထားပါ။
Computer နဲ႕ ၾကဳိးထားပါ။
Runme.bat ကုိ Run ပါ။
1 ကုိႏွိပ္လုိက္ပါ။
အလုိုလိုအလုပ္လုပ္သြားျပီး ဖုန္းမွာ Restore ဆုိတာေလးေတြပါလိမ့္မယ္…..
ႏွိပ္လုိက္ပါ။ Reboot က်သြားပါလိမ့္မယ္…..
ျပီးရင္အလုပ္လုပ္သြားျပီး Super User ရသြားပါလိမ့္မယ္……
အဆင္ေျပၾကပါေစခဗ်ာ….

Xperia Sola အား ICS 4.0.4 တင္နညး္ႏွင့္ Root လုပ္နည္း




Myanmar Mobile User Group (MMUG) မွ member ကုိ Phyo Chan တင္ထားတဲ့ Doc ေလးကို MMAS မွ Xperia Sola user မ်ားအတြက္ Share လုိက္ပါတယ္ခဗ်ာ :)
Sony Xperia Sola ကို ICS version 4.0.4, Build No. 6.1.1.B.1.10 ကိုျမွင့္တဲ့နည္းေလးပါခဗ်ာ။
ပထမဆုံးဒါေလးေတြအရင္ Download လုပ္ပါ။

Sola ICS 4.0.4 6.1.1.B.1.10 offical firmware

Flash Tool.exe

Sony Driver

ျပီးရင္ေတာ့ Flash Tool.exe ကုိ Run ပါ။
Computer မွာ Sony Driver ထည့္ပါ။
ျပီးရင္ေတာ့ ပထမေဒါင္းထားတဲ့ Zip ကုိျဖည္ျပီး
အထဲက Firmware ကုိ Flash Tool Folder ထဲက Firmware Folder ထဲကုိထည့္လုိက္ပါ။
ျပီးရင္ေတာ့ ဖုန္းကုိပါ၀ါပိတ္ထားပါ။
Flash Tool.exe က မုိးၾကဳိးပုံစံေလးကုိ ႏွိပ္လုိက္ရင္ Flash Mode ဆုိတာေလးကုိႏွိပ္လုိက္ပါ။
Mt27i Firmware ကုိေရြးေပးလုိက္ပါ။
No final verification ကုိအမွန္ျခစ္ေပးပါ။ Ok ႏွိပ္လုိက္ပါ။
ခဏၾကာရင္ပုံေလးေပၚလာပါလိမ့္မယ္။
Volume Down ကုိဖိႏွိပ္ျပီး ၾကဳိးထုိးလုိက္ပါ။
100% ျပည့္သြားရင္ေတာ့ 4.0.4 ရပါျပီ….
ကဲ Root ရမဲ႕နည္းလမ္းရေတာ့လြယ္ပါတယ္….
ဒီဖုိင္ေလးကုိ အရင္ ေဒါင္းလုိက္ပါ။

Root_with_Restore_by_Bin4ry_v13.zip

ေဒါင္းျပီးရင္ေတာ့ Extract လုပ္လုိက္ပါ။
ဖုန္းကုိ UsB Dubbging နဲ႕ Unknown Sources ကုိ အမွန္ျခစ္ထားပါ။
Computer နဲ႕ ၾကဳိးထားပါ။
Runme.bat ကုိ Run ပါ။
1 ကုိႏွိပ္လုိက္ပါ။
အလုိုလိုအလုပ္လုပ္သြားျပီး ဖုန္းမွာ Restore ဆုိတာေလးေတြပါလိမ့္မယ္…..
ႏွိပ္လုိက္ပါ။ Reboot က်သြားပါလိမ့္မယ္…..
ျပီးရင္အလုပ္လုပ္သြားျပီး Super User ရသြားပါလိမ့္မယ္……
အဆင္ေျပၾကပါေစခဗ်ာ….
Credit to Phyo Chan (One of MMUG member)

91 Android Suite နဲ႕ Root လုပ္ၾကည့္ရေအာင္

ဒီနည္းေလးကေတာ့ Version 2.1 ေတြ 2.3 အထိ အဆင္ေျပတက္ပါတယ္……
နာမည္ၾကီးဖုန္းေတြမွာအဆင္ေျပတာမ်ားတယ္…….
ကဲပါဘာပဲျဖစ္ျဖစ္တစ္ခုတုိးေတာ့ပုိ အဆင္ေျပေျပ Root ေဖာက္ႏုိင္ၾကမွာပါ……
ဒါေလးကုိအရင္ေဒါင္းလုိက္ပါ……
Password: phyochan
ျပီးရင္ေတာ့ 91 ကုိ Computer မွာ  Install ဆြဲလုိက္ပါ….
Root လုပ္မဲ့ဖုန္းရဲ႕ Driver ေတြကုိ သြင္းျပီးရင္ Detect သိေအာင္လုပ္ပါ…
ဒီလုိပုံစံမ်ိဳးေပါ့ေနာ္…….
System ဆုိတဲ့ဟာေလးေတြလား……
ဒါေလးကုိ တစ္ခ်က္ေလာက္ႏွိပ္လုိက္ရင္ ဒီလုိပုံမ်ိဳးေတြပါလိမ့္မယ္……
One key Root ဆုိတာေလးကုိႏွိပ္လုိက္ပါ…….
Root လုပ္လုိ႕ရမရေျပာပါလိမ့္မယ္….
ဒီလုိပုံေလးေပါ့……
Root ရျပီဆုိရင္ Sucessful ဆုိျပီးျပပါတယ္….
Reboot ကေတာ့တစ္ခါပဲက်တယ္..
စမ္းၾကည့္ၾကပါ….. Huawei S8600 တုိ႕ Samsung ေတာ္ေတာ္မ်ားမ်ားမွာရတာေတြရပါတယ္……
ကဲအဆင္ေျပၾကပါေစ…….
ၿဖဳိးခ်မ္း (phyochansoftware2012@gmail.com)

Friday, December 7, 2012

what is rooting?


  • Taken from the Cyanogen Wiki CyanogenMod Wiki

    Most carriers "lock" their handsets to discourage customers from taking their handset and moving to another carrier. Carriers also depend on "exclusivity" agreements to encourage users to switch to their plans so they can use a particular handset (e.g., Apple's iPhone on the AT&T network). To use the handset on another carrier's network it would be necessary to "unlock" the handset. This is done with a code based on the IMEI of the handset that can be provided by your carrier or firms on the internet that are slightly more reliable than west African ebay bidders. Unlocking is not possible with CyanogenMod or any other Android replacement.
    Furthermore, they may impose software limitations to prevent using the handset in a manner that might undercut their voice plans (e.g., Skype, Google Voice), or putting strain on the data network (e.g., tethering, streaming video). The way to get around this is to acquire 'root' (i.e. Administrator) access on the device, so you can install/modify/fix/break anything you want.
  • Rooting directions vary from phone to phone, but a good place to start would be the Android Development forums at XDA-Developers (.com).

    In and of itself, root only gives you access to secured parts of the phone, just like if you're using using Windows and you have to click that little Run As Administrator prompt. Basically it's a system developed a long while back that keeps the regular day to day operations from being able to have too negative an impact on the rest of the system.

    The positive thing about root is everything it then allows you to do further on down the line including custom apps, configurations and even OS'.

    Here's a nice little Wiki article that gives a little more detail: Why Root - Android Wiki
  • what is it?
    it's all kinda easy...
    imagine your fathers pc:
    you can log in as a user, your father may have allowed you to install stuff. but hey the c:/windows/ folder is locked and you can't screw up the computer.

    android works on linux.
    linux has the following system:
    user
    admin user
    super user

    as a regular android user you are an "admin user". you can install stuff, update, make the screen shiny and just work on it.

    super users can screw up the kernel, over clock the processors (and overheat them by accident), get more sound from the speakers by "over clocking" that to, replace the system with another one, etc.

    this has something to do with the security of the phone and the security of specific folders (with the most important folder called "ROOT").
    like my android milestone is protected in two ways:
    1: the phone's "bios" (protects the phone from weird changes and combines all devices in your phone to a working system)
    2: the phones ROOT (contains all info on how the phone should work)

    the bios must be cracked to make changes in the system (like ROOTing) some nerds do this and post "backups" of this system to xda-developers.
    hackers/programmers make changes to specific files to remove the lock on SU (superuser) and post these in this backups.

    SU-acces allows you to do things that are not supposed to work like sharing your 3G-connection to wifi. this is blocked till 2.1 because phone carriers din't like that. now with the 2.2 update it becomes legal). or change the folder where your apps are installed from phone memory to the SD card(once again in the 2.2 update they fixed this).

    But, as you can think with your brains. Rooted systems can be broken by the most stupidest terminal commands (since you can just command the phone to blow itself lituraly), or even when you delete a file from the ROOT folder by accident. bricking the phone becomes very easy. that's why phone sellers won't help you as soon as they notice you were using a ROOTED phone.

    you can test if your phone is rooted by downloading a small app called "terminal emulator" and filling in the code:
    SU
    this (SuperUser) command, means that you tell the terminal that you want to start changing important stuff and you need all acces possible.

    If the system is rooted you are presented by a # after you click the Enter(return) button on your keyboard.
    if the system isn't rooted you are presented by the text "No acces" or something like it.

    Rooting is only cool for people who: build their own systems, want to be their 1G phone (very old phone) a bit faster, or just want to prank to their friends on how they ruined their phones (and how much money they have to buy a new one).

    Rooting is not cool for people who: know nothing of terminals and linux systems, are no developers for google, have brains, want to keep their phone carriers friendly,experience that in a pocket they can accidently push buttons and people who want to use their phone the best way possible (it costed manufacturers loads of time to adjust the system in such a way that the phone works the best, why would you screw that up?).

    hope this solves the big question about Rooting.

    but for those people that only read the last line:
    rooting is giving yourself acces to the folder called ROOT, where the system get's it's knowledge on how many volts it should send to the different parts of your phone, and how everything in your phone should work. a good thinking (wo)man wouln't concider rooting for even a second!
  • to get a good understanding of root, read this: What is root? -- definition by The Linux Information Project (LINFO)
  • Here's the Evo info on what root is - Quick INTRO TO ROOTING for those new to rooting
  • Generically speaking, rooting often is nothing more than hitting a known exploit where for a very brief instant, root access becomes available. These injection points are given names, like RageAgainstTheCage. During that time of root vulnerability, a system injection is made to hold the root door open until you're established as root.

    Because they're timing dependent, doing it by hand may or may not require multiple, boring iterations - hence, the methods get scripted (sometime with the necessary iterative loops) and the result are the one-click methods.

Tuesday, December 4, 2012

Hash function

Hash function

From Wikipedia, the free encyclopedia
  (Redirected from Hash code)
Jump to: navigation, search
A hash function that maps names to integers from 0 to 15. There is a collision between keys "John Smith" and "Sandra Dee".
A hash function is any algorithm or subroutine that maps large data sets of variable length, called keys, to smaller data sets of a fixed length. For example, a person's name, having a variable length, could be hashed to a single integer. The values returned by a hash function are called hash values, hash codes, hash sums, checksums or simply hashes.

Contents

Descriptions

Hash functions are mostly used to accelerate table lookup or data comparison tasks such as finding items in a database, detecting duplicated or similar records in a large file, finding similar stretches in DNA sequences, and so on.
A hash function should be referentially transparent (stable), i.e., if called twice on input that is "equal" (for example, strings that consist of the same sequence of characters), it should give the same result. This is a contract in many programming languages that allow the user to override equality and hash functions for an object: if two objects are equal, their hash codes must be the same. This is crucial to finding an element in a hash table quickly, because two of the same element would both hash to the same slot.
Some hash functions may map two or more keys to the same hash value, causing a collision. Such hash functions try to map the keys to the hash values as evenly as possible because collisions become more frequent as hash tables fill up. Thus, single-digit hash values are frequently restricted to 80% of the size of the table. Depending on the algorithm used, other properties may be required as well, such as double hashing and linear probing. Although the idea was conceived in the 1950s,[1] the design of good hash functions is still a topic of active research.
Hash functions are related to (and often confused with) checksums, check digits, fingerprints, randomization functions, error correcting codes, and cryptographic hash functions. Although these concepts overlap to some extent, each has its own uses and requirements and is designed and optimized differently. The HashKeeper database maintained by the American National Drug Intelligence Center, for instance, is more aptly described as a catalog of file fingerprints than of hash values.

Hash tables

Hash functions are primarily used in hash tables, to quickly locate a data record (for example, a dictionary definition) given its search key (the headword). Specifically, the hash function is used to map the search key to the hash. The index gives the place where the corresponding record should be stored. Hash tables, in turn, are used to implement associative arrays and dynamic sets.
In general, a hashing function may map several different keys to the same index. Therefore, each slot of a hash table is associated with (implicitly or explicitly) a set of records, rather than a single record. For this reason, each slot of a hash table is often called a bucket, and hash values are also called bucket indices.
Thus, the hash function only hints at the record's location—it tells where one should start looking for it. Still, in a half-full table, a good hash function will typically narrow the search down to only one or two entries.

Caches

Hash functions are also used to build caches for large data sets stored in slow media. A cache is generally simpler than a hashed search table, since any collision can be resolved by discarding or writing back the older of the two colliding items. This is also used in file comparison.

Bloom filters

Hash functions are an essential ingredient of the Bloom filter, a compact data structure that provides an enclosing approximation to a set of them. [2]

Finding duplicate records

When storing records in a large unsorted file, one may use a hash function to map each record to an index into a table T, and collect in each bucket T[i] a list of the numbers of all records with the same hash value i. Once the table is complete, any two duplicate records will end up in the same bucket. The duplicates can then be found by scanning every bucket T[i] which contains two or more members, fetching those records, and comparing them. With a table of appropriate size, this method is likely to be much faster than any alternative approach (such as sorting the file and comparing all consecutive pairs).

Finding similar records

Hash functions can also be used to locate table records whose key is similar, but not identical, to a given key; or pairs of records in a large file which have similar keys. For that purpose, one needs a hash function that maps similar keys to hash values that differ by at most m, where m is a small integer (say, 1 or 2). If one builds a table T of all record numbers, using such a hash function, then similar records will end up in the same bucket, or in nearby buckets. Then one need only check the records in each bucket T[i] against those in buckets T[i+k] where k ranges between −m and m.
This class includes the so-called acoustic fingerprint algorithms, that are used to locate similar-sounding entries in large collection of audio files. For this application, the hash function must be as insensitive as possible to data capture or transmission errors, and to "trivial" changes such as timing and volume changes, compression, etc.[3]

Finding similar substrings

The same techniques can be used to find equal or similar stretches in a large collection of strings, such as a document repository or a genomic database. In this case, the input strings are broken into many small pieces, and a hash function is used to detect potentially equal pieces, as above.
The Rabin–Karp algorithm is a relatively fast string searching algorithm that works in O(n) time on average. It is based on the use of hashing to compare strings.

Geometric hashing

This principle is widely used in computer graphics, computational geometry and many other disciplines, to solve many proximity problems in the plane or in three-dimensional space, such as finding closest pairs in a set of points, similar shapes in a list of shapes, similar images in an image database, and so on. In these applications, the set of all inputs is some sort of metric space, and the hashing function can be interpreted as a partition of that space into a grid of cells. The table is often an array with two or more indices (called a grid file, grid index, bucket grid, and similar names), and the hash function returns an index tuple. This special case of hashing is known as geometric hashing or the grid method. Geometric hashing is also used in telecommunications (usually under the name vector quantization) to encode and compress multi-dimensional signals.

Properties

Good hash functions, in the original sense of the term, are usually required to satisfy certain properties listed below. Note that different requirements apply to the other related concepts (cryptographic hash functions, checksums, etc.).

Determinism

A hash procedure must be deterministic—meaning that for a given input value it must always generate the same hash value. In other words, it must be a function of the data to be hashed, in the mathematical sense of the term. This requirement excludes hash functions that depend on external variable parameters, such as pseudo-random number generators or the time of day. It also excludes functions that depend on the memory address of the object being hashed, because that address may change during execution (as may happen on systems that use certain methods of garbage collection), although sometimes rehashing of the item is possible.

Uniformity

A good hash function should map the expected inputs as evenly as possible over its output range. That is, every hash value in the output range should be generated with roughly the same probability. The reason for this last requirement is that the cost of hashing-based methods goes up sharply as the number of collisions—pairs of inputs that are mapped to the same hash value—increases. Basically, if some hash values are more likely to occur than others, a larger fraction of the lookup operations will have to search through a larger set of colliding table entries.
Note that this criterion only requires the value to be uniformly distributed, not random in any sense. A good randomizing function is (barring computational efficiency concerns) generally a good choice as a hash function, but the converse need not be true.
Hash tables often contain only a small subset of the valid inputs. For instance, a club membership list may contain only a hundred or so member names, out of the very large set of all possible names. In these cases, the uniformity criterion should hold for almost all typical subsets of entries that may be found in the table, not just for the global set of all possible entries.
In other words, if a typical set of m records is hashed to n table slots, the probability of a bucket receiving many more than m/n records should be vanishingly small. In particular, if m is less than n, very few buckets should have more than one or two records. (In an ideal "perfect hash function", no bucket should have more than one record; but a small number of collisions is virtually inevitable, even if n is much larger than m – see the birthday paradox).
When testing a hash function, the uniformity of the distribution of hash values can be evaluated by the chi-squared test.

Variable range

In many applications, the range of hash values may be different for each run of the program, or may change along the same run (for instance, when a hash table needs to be expanded). In those situations, one needs a hash function which takes two parameters—the input data z, and the number n of allowed hash values.
A common solution is to compute a fixed hash function with a very large range (say, 0 to 232 − 1), divide the result by n, and use the division's remainder. If n is itself a power of 2, this can be done by bit masking and bit shifting. When this approach is used, the hash function must be chosen so that the result has fairly uniform distribution between 0 and n − 1, for any value of n that may occur in the application. Depending on the function, the remainder may be uniform only for certain values of n, e.g. odd or prime numbers.
We can allow the table size n to not be a power of 2 and still not have to perform any remainder or division operation, as these computations are sometimes costly. For example, let n be significantly less than 2b. Consider a pseudo random number generator (PRNG) function P(key) that is uniform on the interval [0, 2b − 1]. A hash function uniform on the interval [0, n-1] is n P(key)/2b. We can replace the division by a (possibly faster) right bit shift: nP(key) >> b.

Variable range with minimal movement (dynamic hash function)

When the hash function is used to store values in a hash table that outlives the run of the program, and the hash table needs to be expanded or shrunk, the hash table is referred to as a dynamic hash table.
A hash function that will relocate the minimum number of records when the table is resized is desirable. What is needed is a hash function H(z,n) – where z is the key being hashed and n is the number of allowed hash values – such that H(z,n + 1) = H(z,n) with probability close to n/(n + 1).
Linear hashing and spiral storage are examples of dynamic hash functions that execute in constant time but relax the property of uniformity to achieve the minimal movement property.
Extendible hashing uses a dynamic hash function that requires space proportional to n to compute the hash function, and it becomes a function of the previous keys that have been inserted.
Several algorithms that preserve the uniformity property but require time proportional to n to compute the value of H(z,n) have been invented.

Data normalization

In some applications, the input data may contain features that are irrelevant for comparison purposes. For example, when looking up a personal name, it may be desirable to ignore the distinction between upper and lower case letters. For such data, one must use a hash function that is compatible with the data equivalence criterion being used: that is, any two inputs that are considered equivalent must yield the same hash value. This can be accomplished by normalizing the input before hashing it, as by upper-casing all letters.

Continuity

A hash function that is used to search for similar (as opposed to equivalent) data must be as continuous as possible; two inputs that differ by a little should be mapped to equal or nearly equal hash values.[citation needed]
Note that continuity is usually considered a fatal flaw for checksums, cryptographic hash functions, and other related concepts. Continuity is desirable for hash functions only in some applications, such as hash tables that use linear search.

Hash function algorithms

For most types of hashing functions the choice of the function depends strongly on the nature of the input data, and their probability distribution in the intended application.

Trivial hash function

If the datum to be hashed is small enough, one can use the datum itself (reinterpreted as an integer in binary notation) as the hashed value. The cost of computing this "trivial" (identity) hash function is effectively zero. This hash function is perfect, as it maps each input to a distinct hash value.
The meaning of "small enough" depends on the size of the type that is used as the hashed value. For example, in Java, the hash code is a 32-bit integer. Thus the 32-bit integer Integer and 32-bit floating-point Float objects can simply use the value directly; whereas the 64-bit integer Long and 64-bit floating-point Double cannot use this method.
Other types of data can also use this perfect hashing scheme. For example, when mapping character strings between upper and lower case, one can use the binary encoding of each character, interpreted as an integer, to index a table that gives the alternative form of that character ("A" for "a", "8" for "8", etc.). If each character is stored in 8 bits (as in ASCII or ISO Latin 1), the table has only 28 = 256 entries; in the case of Unicode characters, the table would have 17×216 = 1114112 entries.
The same technique can be used to map two-letter country codes like "us" or "za" to country names (262=676 table entries), 5-digit zip codes like 13083 to city names (100000 entries), etc. Invalid data values (such as the country code "xx" or the zip code 00000) may be left undefined in the table, or mapped to some appropriate "null" value.

Perfect hashing

A perfect hash function for the four names shown
A hash function that is injective—that is, maps each valid input to a different hash value—is said to be perfect. With such a function one can directly locate the desired entry in a hash table, without any additional searching.

Minimal perfect hashing

A minimal perfect hash function for the four names shown
A perfect hash function for n keys is said to be minimal if its range consists of n consecutive integers, usually from 0 to n−1. Besides providing single-step lookup, a minimal perfect hash function also yields a compact hash table, without any vacant slots. Minimal perfect hash functions are much harder to find than perfect ones with a wider range.

Hashing uniformly distributed data

If the inputs are bounded-length strings (such as telephone numbers, car license plates, invoice numbers, etc.), and each input may independently occur with uniform probability, then a hash function need only map roughly the same number of inputs to each hash value. For instance, suppose that each input is an integer z in the range 0 to N−1, and the output must be an integer h in the range 0 to n−1, where N is much larger than n. Then the hash function could be h = z mod n (the remainder of z divided by n), or h = (z × n) ÷ N (the value z scaled down by n/N and truncated to an integer), or many other formulas.
Warning: h = z mod n was used in many of the original random number generators, but was found to have a number of issues. One of which is that as n approaches N, this function becomes less and less uniform.

Hashing data with other distributions

These simple formulas will not do if the input values are not equally likely, or are not independent. For instance, most patrons of a supermarket will live in the same geographic area, so their telephone numbers are likely to begin with the same 3 to 4 digits. In that case, if m is 10000 or so, the division formula (z × m) ÷ M, which depends mainly on the leading digits, will generate a lot of collisions; whereas the remainder formula z mod M, which is quite sensitive to the trailing digits, may still yield a fairly even distribution.

Hashing variable-length data

When the data values are long (or variable-length) character strings—such as personal names, web page addresses, or mail messages—their distribution is usually very uneven, with complicated dependencies. For example, text in any natural language has highly non-uniform distributions of characters, and character pairs, very characteristic of the language. For such data, it is prudent to use a hash function that depends on all characters of the string—and depends on each character in a different way.
In cryptographic hash functions, a Merkle–Damgård construction is usually used. In general, the scheme for hashing such data is to break the input into a sequence of small units (bits, bytes, words, etc.) and combine all the units b[1], b[2], ..., b[m] sequentially, as follows
S ← S0;                         // Initialize the state.
for k in 1, 2, ..., m do       // Scan the input data units:
  S ← F(S, b[k]);               //   Combine data unit k into the state.
return G(S, n)                 // Extract the hash value from the state.
This schema is also used in many text checksum and fingerprint algorithms. The state variable S may be a 32- or 64-bit unsigned integer; in that case, S0 can be 0, and G(S,n) can be just S mod n. The best choice of F is a complex issue and depends on the nature of the data. If the units b[k] are single bits, then F(S,b) could be, for instance
 if highbit(S) = 0 then
   return 2 * S + b
 else
   return (2 * S + b) ^ P
Here highbit(S) denotes the most significant bit of S; the '*' operator denotes unsigned integer multiplication with lost overflow; '^' is the bitwise exclusive or operation applied to words; and P is a suitable fixed word.[4]

Special-purpose hash functions

In many cases, one can design a special-purpose (heuristic) hash function that yields many fewer collisions than a good general-purpose hash function. For example, suppose that the input data are file names such as FILE0000.CHK, FILE0001.CHK, FILE0002.CHK, etc., with mostly sequential numbers. For such data, a function that extracts the numeric part k of the file name and returns k mod n would be nearly optimal. Needless to say, a function that is exceptionally good for a specific kind of data may have dismal performance on data with different distribution.

Rolling hash

In some applications, such as substring search, one must compute a hash function h for every k-character substring of a given n-character string t; where k is a fixed integer, and n is k. The straightforward solution, which is to extract every such substring s of t and compute h(s) separately, requires a number of operations proportional to k·n. However, with the proper choice of h, one can use the technique of rolling hash to compute all those hashes with an effort proportional to k + n.

Universal hashing

A universal hashing scheme is a randomized algorithm that selects a hashing function h among a family of such functions, in such a way that the probability of a collision of any two distinct keys is 1/n, where n is the number of distinct hash values desired—independently of the two keys. Universal hashing ensures (in a probabilistic sense) that the hash function application will behave as well as if it were using a random function, for any distribution of the input data. It will however have more collisions than perfect hashing, and may require more operations than a special-purpose hash function.

Hashing with checksum functions

One can adapt certain checksum or fingerprinting algorithms for use as hash functions. Some of those algorithms will map arbitrary long string data z, with any typical real-world distribution—no matter how non-uniform and dependent—to a 32-bit or 64-bit string, from which one can extract a hash value in 0 through n − 1.
This method may produce a sufficiently uniform distribution of hash values, as long as the hash range size n is small compared to the range of the checksum or fingerprint function. However, some checksums fare poorly in the avalanche test, which may be a concern in some applications. In particular, the popular CRC32 checksum provides only 16 bits (the higher half of the result) that are usable for hashing[citation needed]. Moreover, each bit of the input has a deterministic effect on each bit of the CRC32, that is one can tell without looking at the rest of the input, which bits of the output will flip if the input bit is flipped; so care must be taken to use all 32 bits when computing the hash from the checksum.[5]

Hashing with cryptographic hash functions

Some cryptographic hash functions, such as SHA-1, have even stronger uniformity guarantees than checksums or fingerprints, and thus can provide very good general-purpose hashing functions.
In ordinary applications, this advantage may be too small to offset their much higher cost.[6] However, this method can provide uniformly distributed hashes even when the keys are chosen by a malicious agent. This feature may help to protect services against denial of service attacks.

Hashing By Nonlinear Table Lookup

Tables of random numbers (such as 256 random 32 bit integers) can provide high-quality nonlinear functions to be used as hash functions or for other purposes such as cryptography. The key to be hashed would be split into 8-bit (one byte) parts and each part will be used as an index for the nonlinear table. The table values will be added by arithmetic or XOR addition to the hash output value. Because the table is just 1024 bytes in size, it will fit into the cache of modern microprocessors and allow for very fast execution of the hashing algorithm. As the table value is on average much longer than 8 bits, one bit of input will affect nearly all output bits. This is different to multiplicative hash functions where higher-value input bits do not affect lower-value output bits.
This algorithm has proven to be very fast and of high quality for hashing purposes (especially hashing of integer number keys).

Efficient Hashing Of Strings

Modern microprocessors will allow for much faster processing, if 8-bit character Strings are not hashed by processing one character at a time, but by interpreting the string as an array of 32 bit or 64 bit integers and hashing/accumulating these "wide word" integer values by means of arithmetic operations (e.g. multiplication by constant and bit-shifting). The remaining characters of the string which are smaller than the word length of the CPU must be handled differently (e.g. being processed one character at a time).
This approach has proven to speed up hash code generation by a factor of five or more on modern microprocessors of a word size of 64 bit.
A far better approach for converting strings to a numeric value that avoids the problem with some strings having great similarity ("Aaaaaaaaaa" and "Aaaaaaaaab") is to use a Cyclic redundancy check (CRC) of the string to compute a 32- or 64-bit value. While it is possible that two different strings will have the same CRC, the likelihood is very small and only requires that one check the actual string found to determine whether one has an exact match. The CRC approach works for strings of any length. CRCs will differ radically for strings such as "Aaaaaaaaaa" and "Aaaaaaaaab".

Origins of the term

The term "hash" comes by way of analogy with its non-technical meaning, to "chop and mix". Indeed, typical hash functions, like the mod operation, "chop" the input domain into many sub-domains that get "mixed" into the output range to improve the uniformity of the key distribution.
Donald Knuth notes that Hans Peter Luhn of IBM appears to have been the first to use the concept, in a memo dated January 1953, and that Robert Morris used the term in a survey paper in CACM which elevated the term from technical jargon to formal terminology.[1]

List of hash functions

See also

Portal icon Computer science portal

References

  1. ^ a b Knuth, Donald (1973). The Art of Computer Programming, volume 3, Sorting and Searching. pp. 506–542.
  2. ^ Bloom, Burton (July 1970). "Space/time trade-offs in hash coding with allowable errors". Communications of the ACM Volume 13 (Issue 7). doi:10.1145/362686.362692.
  3. ^ "Robust Audio Hashing for Content Identification by Jaap Haitsma, Ton Kalker and Job Oostveen"
  4. ^ Broder, A. Z. (1993). "Some applications of Rabin's fingerprinting method". Sequences II: Methods in Communications, Security, and Computer Science. Springer-Verlag. pp. 143–152.
  5. ^ Bret Mulvey, Evaluation of CRC32 for Hash Tables, in Hash Functions. Accessed April 10, 2009.
  6. ^ Bret Mulvey, Evaluation of SHA-1 for Hash Tables, in Hash Functions. Accessed April 10, 2009.
  7. ^ "Hash Functions". cse.yorku.ca. September 22, 2003. Retrieved November 1, 2012. "the djb2 algorithm (k=33) was first reported by dan bernstein many years ago in comp.lang.c."

External links