Tuesday, September 26, 2017

Root Linux Android

සරලව පැහැදිලි කරනවා නම් Linux ඇතුලාන්තයේ ඉඳන්ම multi-user සිංහලෙන් නම් බහු පරිශීලක පහසුකම් තියෙන පද්දතියක්, ඉතින් මේ පද්දතියේ user-account හදන්න පුළුවන් හිටු කියලා ඒ වගේම ඒ හදපු user account වලට පද්දතියේ මොන මොන දේවල්ද හසුරවන්න අවසර තියෙන්නේ කියන එක කියලා දෙන්න පුළුවන්, එතකොට ඒවා අර දුන්න අවසරයන්ට පිට කිසි සේත්ම වැඩ කරන්නේ නැහැ, එහෙම වැඩ කරනවානම් එදාට Facebook, Google වැනි සමාගම් වල මළගම සනිටුහන් කරන දවස වේවි,  ඉතින් Android වල මං දැකපු දෙයක් තමයි app එකක් install කරනකොටම ඒ app එක වෙනුවෙන් Linux user account එකක් හදලා දෙන එක ඊට පස්සේ ඒ user account ටික group එකකට හෝ කිහිපයකට ඇතුලත් කරනවා, උදාහරණයක් විදිහට sdcard_r කියන group එකට ඇතුලත් වුනු සියලුම user accounts වලට හැකියාවක් තියෙනවා External Memory එකේ data ලියන්න කියවන්න, තවත් සරලව පැහැදිලි කරනවා නම් ඔයා install කරා xxx කියන app එකක් ඒ app එකට a650 කියල linux user account එකක් හදුනා, මේ user account එක sdcard_r කියන group එකේ නැත්තම් එයාට බැහැ External Memory එකේ data ලියන්න. අනිත් එක මං කිඋවා android වල හැම app එකක්ම වෙන වෙන user account වල තියෙන්නේ කියලා, Linux permissions හදලා තියෙනවා ඒ ඒ user ට වෙන users ලගේ directory වලට access කරන්න බැරි විදිහට, එකිඋවේ එක app එකකට බැහැ තව app එකක folder එක ඇතුලේ data වෙනස් කරන්න. ඉතින් මේ වගේ ගොඩාක් බාදක දාල තියෙනවා Security එක වෙනුවෙන්. හැබැයි Linux වල ඉන්නවා කිසිම බාදාවක් නැතුව සම්පූර්ණ පද්දතියේම ඕනෑම තැනක data ලියන්න කියවන්න පුළුවන් user කෙනෙක්. මෙයාට system එකේ නීති රීති රෙගුලාසි කින්ද මන්ද බයිලා මොකුත් අදාළ නැහැ මෙයාට පුළුවන් පද්දතියේ ඕනෑම තැනක දත්ත ලියන්න කියවන්න. ඉතින් GNU Linux වල user account අතරේ මාරුවෙන්න binary වලින් එලෙක්ට්‍රොනික බාෂාවෙන් ලියපු executable එකක්(මොකක් හරි software එකක් කියලා හිතාගන්නකෝ) තියෙනවා, මේ executable එක පාවිච්චි කරලා තමයි Linux වල users අතරේ මාරුවෙන්නේ, සරලව පැහැදිලි කරනවා නම් ඔයාගේ Linux computer එකේ Amara සහ Kamal කියලා users ලා දෙන්නෙක් ඉන්නවා දැන් අමර එයාගේ account එකෙන් computer එකේ log වෙලා ඉන්නවා, මෙයාට හදිස්සියේ උවමනාවෙනවා කමල් ගෙ account එකෙන් log වෙන්න, අමර ඒක කරගන්න Linux පද්දතියට විධාන කරනවා "su kamal" එතකොට දැන් අමර කමල් විදිහට ලොග් වෙලා කමල් ගේ browser history එක බලනවා email කියවනවා හරි කැත වැඩ ඕවා... ඒ පාර අමර දැක්කා කමල් මොකද්ද GB 2 ක 3ක movie එකක් download කරලා තියෙනවා, අමර movie එක බලන්න උත්සහ කරනකොට mp4 play කරන්න computer එකේ Player එකක් නැහැ, දැන් අමර පද්දතියට විධාන කරනවා apt-get install vlc කියලා එතකොට Linux එකෙන් කියනවා "VLC install කරන්න අවසර නැහැ කියල " මොනවද කරන්නේ අවසර තියෙන user කෙනෙක්ට මාරුවෙන්න ඕන ඒකට පද්දතියට විධාන කරනවා su root කියල,  දැන් අමර root user ට මාරුවෙලා ඉන්නේ, මං කලින් කිඋවා root user ට තියෙනවා System එකේ හැම තැනම දත්ත ලියන්න කියවන්න අවසර තියෙනවා කියලා. ඉතින් අර users අතරේ මාරුවෙන්න හැකියාව දීල තියෙන su binary එක Android Linux වල එන්නේ නැහැ root කරනවා කියලා කට්ටිය කරන්නේ මේ binary එක අදාළ path එකට copy කරන එක තමා, ඉතින් මේ දේ කරන්න බැහැ System එකට log වෙලා ඉන්නකොට මොකද සියලුම නීති රීති කොන්දේසි වලට යටත් වෙලයි System එක on වෙලා තියෙන්නේ, හැබැයි පිට system එකකින් access කරද්දී මේ බයිලා මොකුත් අදාළ නැහැ. ඉතින් recovery එක කියන්නෙත් වෙනම operating system එකක් ඒකයි recovery එකෙන් ගිහිල්ලා කට්ටිය su සහ අදාළ files ඇතුලත් zip එක unzip කරන්නේ. හැබැයි එක දෙයක් system partition එක encrypt කරලා තිබ්බොත් මේ දේ recovery එකෙන් කරන එක ටිකක් අමාරුයි බැරිම නැහැ, ඉතින් මේ su binary එක අතින් copy කරන එක හැමෝටම කරන්න බැරි නිසයි rooting tools කියලා එක එක tools හැට හුටාමාරක් තියෙන්නේ.

Sunday, September 10, 2017

Java Byte Code, Interpreter and JIT

සාමන්යෙන් program එකක් intermediate ආකාරයට compile කරලා ඒක virtual machine එකකින් interpret (අර්ථ වින්‍යාස කරොත් / පහදලා දුන්නොත්) ඒක කෙලින්ම executable code එකට compile කරලා run කරනවට වඩා. මන්දගාමී වෙනවා. 
කෙසේ වෙතත් Java සමග මේ දෙකේ වෙනස සාමාන්‍ය අවශ්‍යතා සඳහා එතරම් වැදගත් වෙන්නේ නැහැ. මොකද byte code හොඳට optimize කරලයි තියෙන්නේ. එනිසා අපි හිතනවට වඩා වේගයෙන් byte code execute වෙනවා.
Java නිර්මාණය කරලා තියෙන්නේ Interpreted language එකක් විදිහට, ඉතින් Java ළඟ මොකුත් නැහැ, වේගය වැඩි කිරීම සඳහා byte code, native code බවට පත්කිරීමේ on the fly compilation එක නතර කරන්න, 
මේ හේතුව නිසා HotSpot තාක්ෂණය හඳුන්වලා දුන්නා Java හි ප්‍රථම එළිදක්මෙන් පසු ඉක්මනින්ම. ඉතින් මේ HotSpot තාක්ෂණය මගින් byte code සඳහා Just in time (JIT) compiler එක සපයනවා. JIT compiler එකත් JVM එකේම කොටසක් ඉතින් මේකෙන් කරන්නේ තෝරාගත් byte code අවශ්‍යතාවයන්ට අනුව කොටස්, කොටස් වශයෙන් real time binary බවට පත් කරණ එක(ඒ කියන්නේ program එක run කරණ අවස්ථාවේ), අපි සැලකිලිමත් ව තේරුම් ගත යුතු දෙයක් තමයි Java, program එකක් සම්පූර්ණයෙන්ම compile කිරීම ප්‍රයෝගික නැහැ කියන එක. මොකද Java මගින් විවිද run time පරීක්ෂාවන් සිදු කරනවා, ඉතින් ඒවා කරන්න පුළුවන්නේ run time එකේදී විතරයි,
ඒ වෙනුවෙන් තමා JIT compiler එක අවශ්‍යතාවයන්ට අනුව, සම්පූර්ණ program එක නෙවෙයි අවශ්‍ය කොටස් ධාවන අවස්තාවේදී compile  කරන්නේ, ඉතුරු byte code සාමාන්‍ය ආකාරයට interpret  කරනවා. ඕක තමා JIT එකෙන් ලැබෙන ප්‍රයෝජනය. 
කෙසේ වෙතත්  JIT එක මගින් performance සදහා වැදගත් මෙහෙයක් ඉටුවෙනවා. 
byte code සඳහා dynamic compilation (JIT) භාවිත උනත් portability එක සහ safety features (JIT කරපු)ඒවටත් අදාළ වෙනවා. මොකද execution කාර්ය කරන්නේ JVM එක නිසා.
* Interpreter මගින් කරන්නේ line by line machine code එකට පරිවර්තනය කරණ එක 
* JIT මගින් කරන්නේ කොටස් වශයෙන් machine code එකට පරිවර්තනය කරණ එක 
ඉතින් JIT වේගවත් ධාවන අවස්ථාවේදී එකින් එක Translate කරන්නේ නැතුව අවශ්‍ය කොටසම compile කරණ නිසා.

Wednesday, March 8, 2017

එකම Public IP එක ISP කිහිප දෙනෙකුට ලබාදෙනවාද?


ඔව් එකම Public IP එක ISP කිහිප දෙනෙකුට assign කරනවා. ලංකාවේ නම් හැම ප්‍රසිද්ද සමාගමක්ම ඕක කරනවා. මේක හඳුන්වන්නේ NAT444 LSN / CGN කියලා Carrier Grade NAT / Large Scale Network Address Translation , ඔවුන් එසේ කරන්නේ ඔවුන් සතු සීමිත IP ප්‍රමාණයක් පමණක් තිබෙන නිසා. එතකොට ඔවුන් ඔවුන්ගේ පාරිභෝගිකයන් අතර privet network එකක් හදලා ඒක public ipv4 address එකකට / හෝ කිහිපයකට translate කරනවා middlebox address translator එකෙන්. එතකොට මෙතැනදී ඕනෑම NAT එකක දී සිදුවෙන end to end principal එක break වෙනවා ඒ නිසයි අපේ computer එකේ පෙන්වන ip එකයි site එකකට ගිහිල්ල check කරාම වෙන IP එකක් පෙන්වන්නේ .
 එතකොට අපේ public ip එක ඔස්සේ වෙන කෙනෙක්ට අපිත් එක්ක සම්බන්දවෙන්න වෙන්න පුළුවන් හැකියාව නැතිව යනවා. ඒ වගේම මෙවැනි Network එකක reliability සහ scalability ගැටළු මතුවෙනවා. 
මුලදී SLT ලා උනත් dynamic IP ලබා දෙනකොට සියල්ලන්ටම අවස්ථානුකූලව unique IPs ලබා දුන්න නමුත් දැන් පාරිබෝගිකයින් වැඩි නිසා ඔවුනුත් CGN කරනවා, මොකද ඔවුන් සතු IP ප්‍රමාණය සීමිත නිසා, නමුත් ඉල්ලීමක් කලොත් ඔවුන් CGN එකෙන් ඔබව අයින් කරනවා. Etisalat සහ අනෙකුත් සියලුම mobile network operators CGN එකක් හරහාම විතරයි ඔබව සම්බන්ද කරන්නේ, ඔබට අවශ්‍ය නම් පමණක් static IP එකක් මිලදී ගැනීමට හැකියාව තියෙනවා, (ලංකාවේ සාමාන්‍ය IP එකක මිල රුපියල් 1500ක් විතර) එතකොට ඔබ පරිවර්තනය කරන ලද ජාලයකට සම්බන්දවෙන්නේ නැහැ, එතකොට ඔබට end to end සම්බන්දතා පවත්වාගන්න පුළුවන් තවත් සරලව කිඋවොත් ඔබට අන්තර්ජාලයට විවුර්ත උන server එකක් පවත්වාගන්න පුළුවන්. CGN එකකදී ඔබ සම්බන්දවී සිටින ජාලයේම පරිගණක අතර ඔබට සම්බදතා පවත්වාගන්න හැකියාව තියෙනවා සරලව කිඋවොත් ඔබව පරිවර්තනයට ලක් කොට තිබුනත් ඔබට SLT සහ Etisalat ජාලවලදී අනෙක් පාරිබෝගිකයන් සමග ip එක හරහා ඍජු සම්බන්දතා පවත්වාගන්න පුළුවන්, නමුත් පාහේ අනෙකුත් සියලුම mobile network operators ලා ජාලය තුල ඍජු සම්බන්දතා පවත්වන්න පුළුවන් හැකියාවත් block කරලා තියෙන්නේ. dialog 4g වැනි සම්බන්දතා වල ඔබ ඉල්ලීමක් කලොත් ඔබව CGN එකෙන් අයින් කරනවා ඒකට මං හිතන්නේ මාසිකව 150ක් වගේ ගෙවන්න ඕන(නිවැරදි නොවෙන්න පුළුවන්)
ලංකාබෙල් නම් දැනට සියලුම dynamic ip හිමිවන පාරිබෝගිකයින්ට දෙන්නේ unique public ip එකක් ඉදිරියේදී ඔවුනුත් පාරිබෝගිකයන් වැඩි වෙනකොට IP ප්‍රමාණය සීමිත වෙනකොට CGN/LSN ක්‍රමයට මාරු වෙන්න පුළුවන් 
මේ ඔක්කොටම හේතුව ලෝකයේ ලෝකයේ ipv4 ලිපින සියල්ල විකුණා හමාර වීමයි ARIN සතුව තව ඇත්තේ IP blocks කිහිපයක් පමණි. ip4 බාවිතකරන්නේ 32bit 2 තිස් දෙවෙනි බලයයි එනම් theoretically උපරිම IP ප්‍රමාණය - 4,294,967,296 .
මෙයට විසඳුමක් ලෙසයි 128bit ip හඳුන්වා දුන්නේ ipv6 . ipv6 සතු ip ප්‍රමාණය කොතරම් ද යත් අවශ්‍ය නම් ලෝකයේ වෙසෙන සතා සිවුපාවන්ට වූවද IP ලිපින ලබාදීමට හැකියාව ඇත.
ඔබ CGN ජාලයක සම්බන්ද වෙලා හිටියත් අපිට අතර මැදි server එකක් හරහා ලෝකයට අපේ පරිගණකය Network Tunneling සිදුකර  විවුර්ත කිරීමේ හැකියාව තියෙනවා. උදාහරහණයක් විදිහට ඔයාට පුළුවන් Google Cloud Compute Engine, Amazon EC2 instance වැනි හෝ වෙනත් ඕනෑම Linux  VPS / Dedicated Server එකක් මාර්ගයෙන් Tunneling සිදු කිරීමට, එතකොට ඔබේ පරිගණකයේ IP ලිපිනය ලෙස අර VPS එකේ IP එක හැසිරෙනවා ඔයාගේ ගෙදර Linux machine එකේ තියෙන web / voip / game server එකට තවත් කෙනෙකුට VPS එකේ IP එක පාවිච්චි කරලා කෙලින්ම accesses කරන්න පුළුවන්, . අපි ඉස්සරහට තවත් ලිපියකින් බලමු කොහොමද ලෝකයේ තැන් දෙකක තියෙන Public IP එකක් සහ CGN IP එකක් තියෙන Linux machine දෙකක් අතර tunneling කරන්නේ කියල. 
ඒ වගේම Etisalat, SLT CGN/LSN ජාලවල ඉඳලා ජාලයේම තවත් user කෙනෙක් එක්ක IP එක හරහා file transfer කරගන්නේ කොහොමද කියලා.

Friday, January 29, 2016

KIM සමග Kingswood අපි

එහෙ මෙහෙ දුව පැන
විඩා නොසලකා
අපේ දහඩිය, සුසුමෙන්
අපවම ප්‍රාණවත් කළ
අපේ ආදරණීය "කිංස්වුඩ් ඉස්ලාම් මජ්ලිසය"
කෙටියෙන්ම කියනවානම් KIM....

වෙන්ව යන්නට තව නොබෝ කාලයයි
සිත පුරා දුක ඉරිතලයි
විදු මවට සේම KIM වෙතද

අපේ ප්‍රණාමය පුදකරන්න අවසරයි...
සිසු දිවියේ කඩ ඉමට
අරුතක් එක් කරන්නට
අපට ඉඩහසර දුන්
අපේ සෙනෙහෙබර KIM

අපි ඔබට ණයගැතියි
ලස්සනට සැරසූ
බ්ලසේ ශාලාවේ
වාද විවාද, කථික ක්රාත්
තවත් සුවහසක් තරඟ තුර
ජය පරාජය දෝතින්ම ගෙන
විඳ දරාගන්නට සවිය දුන්
KIM සදා අනුස්මරනීයයි...

අපේ නියමුවාණන් විදුහල්පති තුමන්
සිප් කිරි පෙවූ ගුරු මාපියන්
Kingswood සම්ප්‍රදායෙන්ම අපේ වීරයන්
හැමදාමත් සිහි කරනවා බැතියෙන්.

ඕන හැම තැනකදීම
අපට ඔවදන් දී
දැනුමෙන් අප සවිමත් කළ
අපේම මවුලවි සර්....

සලාත්, සලවාත්, තිලාවත් සේම
කෙළි කවටකම් සිනා හඬ දෝන්කාරේ දෙන
නැටුම් ගැයුම් නිමක් නැති
ඉහිරුණු කොලු කමට ජීවය දුන්න
අපේම ඉස්ලාම් කාමරය....

තව නොබෝ දිනකින්ම
සමුගන්නවා අප සියල්ලෙන්
විදු බිම පුරාවට අපට සෙවන දුන්
ගහකොළ ද මල් ගල් වැටිද
විරහවෙන් රිදීවි - අපේ සිත් සේම
හඬනවා නියතයි......

වේදනාව දුක් දෝමනස්ස
අප මුහුණ දුන් නේක පීඩා
අපිම තියාගෙන
මල් ඵල ද කිත් පැසසුම්
ආදරයෙන් තිලිණ කරන්නම්
අපේම මල්ලිලාට
ස්නේහය පිරුණු සිතින්......

බැතියෙන්ම රැකගන්න
අපේ ආදර Kingswood විදු මව
ගුරු මවු වරුන් පියවරුන්
විදු බිමේ සසල නිසල සම්පත්
සියල්ලත් සමග

KIM ආදරයෙන්.....

නොනවතිනා ගමනකට
දිගාසිරි පතමු ඔබට
KIM අපේ ජීවයයි ඔබ

සොඳුරු සිත්තමක් වී
සදා මතකයේ සරණ......

ෂුජා රාෆි
2015 
KFE