Wednesday, July 6, 2016

හැමදා ම ජංගමයෙ දත්ත ඉතුරු ද? ඒකෙන් ටොරන්ටු බාමු ද? | Mobile Torrents from Spare Data

දැන් හැමෝටම වගේ ඇන්ඩ්‍රොයිඩ් ජංගම දුරකථන රාජයො ඉන්නවනෙ. ඉතිං හැමෝම වගේ එක එක දත්ත පැකේජ දාගෙන ජංගමයට ජාල පහසුකම් ගන්නව ඇති. හැබැයි දෛනික, සතියෙ වගේ කෙටි කාලීන පැකේජ භාවිතා කරන අය අතින් ගොඩක් වෙලාවට පැකෙජයේ මුළු දත්ත ප්‍රමාණය පාවිච්චි වෙන්නෙ නෑ. අද අපි බලන්න යන්නෙ එහෙම ඉතුරු වෙන දත්ත පාවිච්චි කරල ජංගමයෙන් ම ස්වයංක්‍රිය ව ටොරන්ටු (torrents) බාගත වෙන්න හදා ගන්න පුළුවන් ක්‍රමයක් ගැන.

මේ වැඩේට ඕනි වෙනව

  • ඇන්ඩ්‍රොයිඩ් ජංගමයක්
  • Flud ජංගම මෘදුකාංගය (app)
  • දත්ත සීමා කිරීමේ (data limiting) මෘදුකාංගයක්, උදා. Data Lock
  • Tasker මෘදුකාංගය

අපි කරන්න යන්නෙ මේකයි:

  1. පැකේජය කල් ඉකුත් වෙන්න යම් වෙලාවකට කලින් (මේ වෙලාව පැකේජයෙ දත්ත ප්‍රමාණයත් ඒ වෙලාව සාමාන්‍ය සම්ප්‍රේෂණ වේගයත් මත පදනම් වෙනව; තේරෙනවනෙ ඉතිං, නේද?) ටොරන්ටු බාගතය පටන් ගන්නව
  2. කල් ඉකුත් වෙලාව ඔන්න මෙන්න කියල තියෙද්දි ටොරන්ටු බාගතය නවත්තනව (අලුත් චක්‍රයට කෙළවෙන්න කලින්)
  3. වෙලාව එන්න කලින් දත්ත ඉවර වුණොත් දත්ත සීමා කරන මෘදුකාංගයෙන් සම්බන්ධතාව වැහෙන නිසා සීමාවෙන් එහාට යන්න විදිහකුත් නෑ

මුලින් ම දත්ත සීමාවක් හදා ගන්න. Data Lock නම් Settings > Data Plan > Base Plan ගිහින් පැකේජයෙ ප්‍රමාණයයි කල් ඉකුත් වෙන වෙලාවයි දුන්නම හරි. Disable Data on reaching plan limit එකයි Enable Data on plan renewal එකයි සක්‍රිය කරන්නත් අමතක කරන්න එපා.

ඊට පස්සෙ ටොරන්ටු බාගත මෘදුකාංගයට ටොරන්ටු කීපයක් එකතු කරල සූදානමින් තියන්න. Fludවල නම් එක පාර බාගත කීපයක් ම දාල, බාගත කීයක් එක පාර සිද්ද වෙන්න ඉඩ දෙනව ද කියලත් සකස් කරන්න පුළුවන්.

දැන් තියෙන්නෙ Tasker මෘදුකාංගය දාගෙන, කැමති වෙලාවක බාගතය පටන් ගන්නයි රෑ 12ට ඉබේ නවතින්නයි සකස් කරන එකයි. මේකෙදි අපට සැකසුම් දෙකක් කරන්න වෙනව:

  1. කාර්ය (Tasks) 2ක්:
    • ටොරන්ටු මෘදුකාංගය දියත් කරන්න
      Action: Launch App; App: Tasker
    • මෘදුකාංගය නවත්තන්න
      Action:Send Intent; Intent Action: com.delphicoder.flud.SHUTDOWN; Target: Broadcast Receiver
  2. සුදුසු වෙලාවට අර කාර්ය 2 දුවවන්න ආකෘති (Profiles) 2ක් (උදා. දියත් කරන කාර්යය 11 PMට, නවත්තන කාර්යය 11.59 PMට)

දැන් ඉතිං Profiles සක්‍රිය කරල ජංගමය පැත්තකින් තියල තියන්නයි තියෙන්නෙ!

Monday, October 26, 2015

Mobile Partner අපිට ඇඩ් දාපු කාලෙ ඉවරයි! | Removing Ads on Mobile Partner

ඔයත් ජංගම පුළුල් කලාප (mobile broadband) ඈඳුම් (dongles) පාවිච්චි කරන කෙනෙක් නම්, ඔයාගෙ පරිගණකයෙත් ටිකක් අලුත් Mobile Partner සංස්කරණයක් ස්ථාපිත ‍වෙලා ඇති. අලුත් සංස්කරණවලින් ගොඩක් වැඩ (ඇමතුම්, USSD, ගිණුම් ප්‍රතිආරෝපණය (recharge) වගේ) කරන්න පුළුවන් බව ඇත්ත, ඒත් Mobitel, Dialog වගේ සේවා සපයන්නො ඒ ආයතනවලින් විකුණන අෑඳුම්වල ඇතුළු කරල තියෙන සංස්කරණවලට දැන්වීම් (ads) කවල තියෙනව. (සමහර විට දැකලත් ඇති.) ජාලයට සම්බන්ධ වෙන හැම පාරක ම මෘදුකාංගයෙ මුහුණතට දැන්වීමක් වැටෙනව. සමහර වෙලාවට මේකෙන් 1 MB තරම් දත්ත ප්‍රමාණයක් වුණත් පාවිච්චි වෙන්න ඉඩ තියෙනව. ගොඩක් වගේ නොපෙනුණත්, ඔයා නිතර නිතර ජාලයට සම්බන්ධ වෙවී විසන්ධි වෙවී ඉන්න කෙනෙක් නම් මේ ඔක්කොම එකතු කළාම සෑහෙන පාඩුවක් වෙන බව පෙනෙයි.

හොඳ වෙලාවට, මේ කරදරකාර දැන්වීම්වලින් බේරෙන එකත් හරි ලේසියි (අඩු ගානෙ Mobitel ජනතාවට හරි). Windows පද්ධතියක ස්ථාපනය කරපු (Mobitel දෙන Huawei E3131 ඈඳුමත් එක්ක එන) Mobitel Broadband මෘදුකාංගයෙ දැන්වීම් අයින් කරන හැටි තමයි මේ තියෙන්නෙ.

  1. මෘදුකාංගය ස්ථාපිත තැනට (සාමාන්‍යයෙන් C:\Program Files (x86)\Mobitel Broadband) යන්න.
  2. SysSettings.xml ගොනුව, Notepad වගේ සරල පෙළ සංස්කාරකයකින් (text processor) විවෘත කරන්න.
  3. ගොනුවෙ අගට වෙන්න තියෙන මෙන්න මේ කොටස හොයාගෙන:
      <webview_flash>
        <zone1>http://selfcare.mobitel.lk/MyAccount/linkfive.html</zone1>
        <zone4_1>http://selfcare.mobitel.lk/MyAccount/linkone.html</zone4_1>
        <zone4_2>http://selfcare.mobitel.lk/MyAccount/linktwo.html</zone4_2>
        <zone4_3>http://selfcare.mobitel.lk/MyAccount/linkthree.html</zone4_3>
        <zone4_4>http://selfcare.mobitel.lk/MyAccount/linkfour.html</zone4_4>
      </webview_flash>
    
    <!-- සහ --> යොදාගෙන, <webview_flash> ටැගයෙ අන්තර්ගතය කොමෙන්ටු (comment) කරල දාන්න, මෙන්න මෙහෙම:
      <webview_flash>
        <!--<zone1>http://selfcare.mobitel.lk/MyAccount/linkfive.html</zone1>
        <zone4_1>http://selfcare.mobitel.lk/MyAccount/linkone.html</zone4_1>
        <zone4_2>http://selfcare.mobitel.lk/MyAccount/linktwo.html</zone4_2>
        <zone4_3>http://selfcare.mobitel.lk/MyAccount/linkthree.html</zone4_3>
        <zone4_4>http://selfcare.mobitel.lk/MyAccount/linkfour.html</zone4_4>-->
      </webview_flash>
    
  4. දැන් ගොනුව සුරක්ෂිත (save) කරල, Mobitel Broadband දැනටත් ධාවනය වෙනව නම් ඒක වහල ආයෙ විවෘත කරන්න.

දැන් සම්බන්ධතාව හැදෙද්දි දැන්වීම බාගත වෙන්නෙ නෑ. හැබැයි මුහුණතේ, දැන්වීම් වෙනුවට හිස් තැනක් පෙනෙයි. ඒක අවුල් වගේ නම්, ඔයාට එතන කැමති පිටුවක් පෙනෙන්න හදා ගන්න පුළුවන්. කරන්න තියෙන්නෙ <zone> ටැගයකට අවශ්‍ය URL එක දාල දාන එක විතරයි. උදාහරණයක් හැටියට, පහළ පෙන්නල තියෙන සැකසුමින් C:\connected.html කියන HTML ගොනුව (එහෙම එකක් එතන තියෙනව නම්!) අර කියපු හිස් තැනේ පෙනේවි. (මාර්ගයෙ (path) තියෙන \ අකුරු වෙනුවට / ආදේශ කරන්න අමතක කරන්න එපා!)

  <webview_flash>
    <zone1>file:///C:/connected.html</zone1>
  </webview_flash>

Tuesday, October 13, 2015

HTC Desire 820s Dual SIM එක තාම Root කරගන්න බැරි වුණා ද?

HTC Desire 820s Dual SIM, ඕනි වැඩක් ලතාවට කර ගතෑකි හොඳ ජංගම දුරකථනයක්. පොඩි අවුලකට තියෙන්නෙ සිංහල පේන්නේ නැති එක; හැබැයි ඒක ගොඩ දාගන්න එක එච්චර අවුලක් නෑ කොල්ල root කර ගත්තොත්.

අවුල කියන්නෙ, 820s ජංගමය root කරන එක ලේසි නෑ. මං SuperOneClick, MTK Droid Tools, z4root වගේ ප්‍රසිද්ධ ක්‍රම සෑහෙන ගානකින් උත්සාහ කරල බැලුව; වැඩේ ගොඩ දාන්න ම බෑ. අනික, Desire 820 වගේ "ළඟපාත" ජංගමවලට වැඩ කරනවයි කියන එක ක්‍රමයක්වත් 820s එකට හරියන්නෙ නෑ.

අන්තිමට වැඩේ ගොඩ දාගන්න පුළුවන් වුණේ මෙතන තියෙන Kingo Android Root මෘදුකාංගයෙන් විතරයි. (බාගත කරගන්න මෙතනට යන්න.) හැබැයි ඉතිං ගොඩක් ඇන්ඩ්‍රොයිඩ් ජිල්මාට් මෘදුකාංග වගේ ම මේකත් හදල තියෙන්නෙ Windows මෙහෙයුම් පදධතියට විතරයි; ඒ නිසා Linux අයියලාටත් Windows පිහිට පතන්න වෙයි.

මෘදුකාංගය පාවිච්චි කරන එක නම් ගේමක් නෑ, හැබැයි අන්තර්ජාල සම්බන්ධතාවක් නම් ඕනි. මොකද, ජංගම මාදිලියෙ හැටියට ඕනි කරන මෘදුකාංග බාගත කරගෙන තමයි මෙයා වැඩේ කරන්නෙ. (මෘදුකාංග ටික මොනවද කියල හොයා ගන්න පුළුවන් වුණොත් ඒ ගැනත් විස්තරයක් දාන්නම්කො.)

ජංගමය USB Debugging සක්‍රිය කරල පරිගණකයට සම්බන්ධ කරල, මෘදුකාංගය විවෘත කළාම හරි. එතකොට පොර ජංගමයෙ මාදිලිය අඳුරගෙන root කරන්න ද කියල අහයි. එතනදි ROOT බොත්තම එබුවම විනාඩි කීපයක් ඇතුළත වැඩේ සිද්ද වෙයි, බලන් ඉන්න විතරයි තියෙන්නෙ.

පොඩි අවුලකට තියෙන්නෙ, මේ මෘදුකාංගයෙන් දාල දෙන Superuser යෙදුම (app) ටිකක් අවුල්; ES File Explorer වගේ සමහර යෙදුම් එක්ක ඒක හරියට වැඩ කරන්නෙ නෑ. හැබැයි වැටෙන su ද්විමය මෘදුකාංගය (binary) අවුලක් නැතුව වැඩ නිසා, වෙන Superuser යෙදුමක් දාගන්න හරි, Terminal Emulator වගේ විධාන තීර (command line) යෙදුමක් හෝ adb shell වගේ ADB හරහා ක්‍රියා කරන විධානයක් යොදාගෙන root ප්‍රවේශය පාවිච්චි කරන්න හරි පුළුවන්.

Tuesday, July 14, 2015

JSවලින් පිස්සු නටමු!

JavaScript (JS) කියන්නෙ දැන් ජාල (web) පිටුවලට නැතුව ම බැරි දෙයක්නෙ. හැබැයි ගොඩක් අය තවම දන්නෙ නෑ, JSවලින් පිටුවක සමහර පරිශීලක පැත්තෙ (client side) වැඩ බොහොම ලේසියෙන් කරගන්න පුළුවන් බව!

මම මට JS පිහිට වුණ වෙලාවක් කියල දාන්නම්. බලන්න ඔයාලටත් ජාලයෙ සැරිසරද්දි මේ වගේ උවමනාවන් ඇති වෙලා තියෙනව ද කියල!

FileStream කියන අඩවිය පාවිච්චි කරකන අය දන්නව ඇති, නිකම් බාගත කළොත් සෑහෙන වෙලාවක් යන ටොරන්ටු (torrents) වගේ ම සාමාන්‍යයෙන් ලොකු ගොනුත් ඒකෙන් කෑෂ් (cache) කරල ඉක්මනින් බාගත කරගන්න පුළුවන් බව. මට එක පාරක් ඕනි වුණා විශේෂ දෘෂ්‍ය ආචරණ (video special effects) 8000ක් විතර තියෙන, 8 GB විතර ලොකු ගොනුවක් බාගන්න.

වැඩේ කියන්නෙ, FileStream අඩවියෙන් කොච්චර ලොකු ධාරිතාවක් අපට දුන්නත්, එක පාර කෑෂ් කරන්න පුළුවන් 1 GB වගේ පොඩි දත්ත ප්‍රමාණයක් විතරයි. මේ නිසා මට සිද්ද උණේ අර ගොනු 8000න් 1000ක විතර කොටස් වෙන වෙන ම තෝර තෝර බාගත කරන්න.

ගොනු තෝරන්න තියෙන්නෙ, හැම ගොනුවක් ම ඉදිරියෙ තියෙන කොටුවෙ (check box) හරි ලකුණ යොදල (tick). හැබැයි ඉතිං මේ විදිහට ගොනු 8000ක ලයිස්තුවකින් ගොනු 1000 ගානෙ අතින් තෝරන්න ගියොත් කොහොම හිටියි ද? ඒ නිසා මම වැඩේට පොඩි කේතයක් (script) හදාගත්ත. ඒක දිව්වම ගොනු එකින් එක ඉබේ ම ක්ලික් (click) වෙලා එ්වට හරි ලකුණු වැටෙනව.

වැඩේ සරලයි; හැබැයි JS දැනුම නම් ටිකක් හරි තියෙන්න ඕනි; වෙබ් පිටුවක ව්‍යුහය (DOM; document object model) ගැනත් පොඩි අදහසක් තිබ්බොත් වැඩේ ලේසියි.

මුලින් ම, තෝරන්න ඕනි කොටු ලයිස්තුවක් හදා ගමු. මේකට පිටුවෙ මූලිකාංග (DOM elements) තෝරන getElementById, getElementsByName, getElementsByClassName වගේ JS ශ්‍රිතයක් (function) යොදාගන්න පුළුවන්. පිටුවෙ jQuery තියෙනවනම් වැඩේ තවත් ලේසියි.

මේ වැඩේට, අපට ක්ලික් කරන්න ඕනි මූලිකාංගයෙ විශේෂ ලක්ෂණ (attributes) හොයා ගන්නෙපැයි. ඒකට, ඔයාට ක්ලික් කරන්න ඕනි ජාතියෙ එකක් දකුණු මූසික බොත්තමෙන් ක්ලික් කරල (right click) Inspect Element තෝරන්න. එතකොට අදාල කොටසෙ HTML ප්‍රභවය (source) කෙළින් ම බලාගන්න පුළුවන්, ඔක්කොම ලක්ෂණත් එක්ක. මේක Firefox, Chrome දෙකට ම අදාලයි.

ඔයා ක්ලික් කරන්න හදන කොටස මේ වගේ නම්

<input class="x y" name="a1" type="checkbox"/>

x හෝ y, getElementsByClassName වලට යවල වැඩේ කරගන්න පුළුවන්.

හැබැයි පිටුවෙ වෙන තැනක මෙහෙම එකකුත් කරුමෙටවත් තිබ්බොත්

<input class="x" name="b1" type="button"/>

වැඩේ දෙල් වෙනව. මොකද, එතකොට checkbox වගේ ම button වර්ගයෙ මූලිකාංගත් ක්ලික් වෙන්න පටන් ගන්නව. ඒ වගේ වෙලාවට පිටුවෙ හැසිරීමෙන් ගොඩක් දුරට අවුල හොයාගන්න පුළුවන්, මොකද click() වගේ සිද්ධියක (event) ප්‍රතිඵලය නිතර ම වගේ බ්‍රවුසරයෙන් දැකගන්න පුළුවන්. එ් වගේ වෙලාවට පිටුව අලුත් කරල (refresh) හරි වහල ආයෙ විවෘත කරල හරි තමයි අවුල් විදිහට දුවන වැඩේ නවත්තන්න වෙන්නෙ.

අපි දැන් මේ බලන අවස්ථාවෙ නම් මේකට සරල විසඳුමක් තියෙනව; x වෙනුවට y පන්තිය (class) යොදාගන්න පුළුවන්. හැබැයි කරුමෙට y දාපු වෙන මොකක්හරි මූලිකාංගයක් පිටුවෙ තිබ්බොත් ඒකටත් කෙළවෙන්න ඉඩ තියෙනව.

හරි, දැන් වැඩේ කරන විදිහ බලමුකො:

අපි බලන පිටුවෙ හැටියට ඕනි වෙන්නෙ, x කියන CSS පන්තිය (class) තියෙන කොටු නම්

l = document.getElementsByClassName('x');

කිව්වම හරි.

බැරි වෙලාවත් කලින් කතා වුණා වගේ x කියන class එක තියෙන වෙන elements තියෙනව නම් තව පොඩ්ඩක් නටන්න වෙනව.

for(i in l)
	if(l[i] instanceof HTMLCheckBoxElement) {
		...
	}

JS ටිකක් දන්න කෙනෙකුටනම් ලොකු දෙයක් නෑනෙ, ලයිස්තුවෙ තියෙන HTMLCheckBoxElement වර්ගයෙ මූලිකාංගවලට විතරක් අපේ කේතය (... කියන තැනට දාන්න ඕනි) දුවන එක තමයි කොටින් ම කිවුවොත් මෙතන වෙන්නෙ.

පිටුවෙ jQuery තියේ නම් තෝරන එක වන්ෂොට්:

$('input[type="checkbox"].x')

දැන් මේ ඔක්කොම click කරමු:

l = document.getElementsByClassName('x');
for(i in l)
	l[i].click();

jQuery නම්

$('input[type="checkbox"].x).each(function(k, v) {
	v.click();
});

ලයිස්තුව ගොඩක් දිග නම් මේ වැඩේ එක දිගට දුවද්දි බ්‍රවුසරය හිර වෙන්න (stuck) පුළුවන්. එහෙම වෙලාවට පොඩ්ඩක් සැර බාල කරල

i = 0;
t = setInterval(function() {
	l[i].click();
	i++;
	if(i == l.length) clearInterval(t);
}, 1000);

වගේ කේතයක් හදා ගත්තොත් තප්පරේට (1000 ms) එක ගානෙ ක්ලික් වෙන්න හදා ගන්න පුළුවන්. 1000 අගය අඩු කරල වේගය වැඩි කරගන්න පුළුවන්. සරල ව කිවුවොත්

බින්දුවෙන් (පළමු මූලිකාංගයෙන්) පටන් ගන්න
කාලමානයක් (timer) හදන්න; ඒක දුවන හැම පාර ම {
	ඊළඟ මූලිකාංගය ක්ලික් කරන්න
	ඊට පස්සෙ ක්ලික් කරන්න තියෙ මූලිකාංගයට මාරු වෙන්න
	මූලිකාංග ඉවර නම්:
		කාලමානය නවත්තන්න
}, කාලමානය මිලිතප්පර 1000කට වරක් දුවවන්න)

මෙහෙම කේතය ලියා ගත්තට පස්සෙ තියෙන්නෙ, බ්‍රවුසරයෙ Web Console කොටස විවෘත කරල (Firefox නම් Tools > Developer Tools > Web Console හෝ Ctrl+Shift+K හෝ F12; Chrome නම් Menu > Tools > Developer Console හෝ Ctrl+Shift+J) කේතය අලවල (paste) Enter යතුර ඔබන්න විතරයි! ඉතුරු ටික බ්‍රවුසරය බලා ගනියි.

මේ JSවලින් දාන්න පුළුවන් බොහොම පොඩි බ්‍රවුසර් ජිල්මාට් එකක් විතරයි; පෝර්ම (forms) ඉබේ පුරවන්න, පිටුවෙ තියෙන ලින්කු (links) ගොඩක් අලුත් ටැබ්වල විවෘත කරන්න, පිටුවෙ තියෙන පින්තූර ඔක්කොම නැවත අලුත් කරන්න (refresh/reload) වගේ පොඩි පොඩි කම්මැලි වැඩ බොහොම පොඩි JS කේත (scripts)වලින් ලේසියෙන් කරගන්න පුළුවන්.

Sunday, April 26, 2015

ඇන්ඩ්‍රොයිඩ් වෙස් මාරුව | Android App Hacking

ඇන්ඩ්‍රොයිඩ් (Android) කිව්වම මේ දවස්වල බොහොම ජනප්‍රිය මාතෘකාවක්නෙ... හැබැයි ඉතිං Android උණ තියෙන ගොඩක් අය කරන්නෙ සුපිරි ජංගමයක් ලොකු ගාණක් දීල අරගෙන ඒකෙන් ඇමතුම් ගන්න එකයි, කෙටි පණිවිඩ යවන එකයි, ජාලයේ සැරිසරන එකයි තමයි. (ඒකෙත් වරදක් නෑ, මොකද ජංගමයක් ගන්නෙ සාමාන්‍යයෙන් ඔය වැඩ ටික කරගන්නනෙ)

හැබැයි බැහැල ම Android ඉගෙන ගන්නවනම් සිරා වැඩ ටිකක් ඉගෙන ගත්තැකි. මම මේ කියන්නෙ ADT හරි Android Studio හරි දාගෙන ජංගම මෘදුකාංග (mobile apps) හදන එක ම නෙවෙයි, ඊට වඩා එහාට යන දෙයක්.

Android කියන්නෙ Linux මෙහෙයුම් පද්ධතියෙ මදය (kernel) ඇසුරින් හදපු එකක්නෙ. Linux කොච්චර සිරා ද කියල දන්න කෙනෙක්ට නම් Android ගැන අමුතුවෙන් අටුවා ටීකා කියන්න ඕනැ නෑ. ආසයි නම් Linux ගැනත් පොඩ්ඩක් කියවල, කරල එහෙම බලන්න. වටින වැඩක්.

Android පද්ධතිය C පරිගණක භාෂාව මුල් කරගෙන ලියල තිබුණට, Android apps සාමාන්‍යයෙන් ලියන්නෙ Java පරිගණක භාෂාවෙන්, දුවන්නෙ සාමාන්‍ය Java සඳහා අපි පාවිච්චි කරන Oracle JVM වගේ Dalvik VM කියල අතාත්ත්වික යන්ත්‍රයක් (virtual machine) උඩ.

Dalvik VM මත දුවන Android app එකක Java බිටු කේතය (bytecode) වෙනස් කළොත් app එකේ හැසිරීමත් ඒ විදිහට වෙනස් වෙනවා. හැබැයි ඉතිං ඒක කරන එක ලේසි නෑ. අනික, app එකේ බිටු කේතය ගොඩක් වෙලාවට dex කියන වර්ගයේ ගොනුවක අඩංගු කරල තියෙන්නෙ; ඒ නිසා ඒක කෙළින් ම බලන්න බෑ.

App එකේ දෘෂ්‍ය සැකැස්ම (layout) තීරණය වෙන්නෙ ඒකෙ res/layout/ කියන නාමාවලියෙ (directory) තියෙන ගොනු එකතුවකින්. හැබැයි මේ ගොනු නම් XML කියන සාපේක්ෂ ව තේරුම් ගන්න ලේසි භාෂාවකින් ලියල තියෙන්නෙ. මේ ගොනුවක් වෙනස් කළොත් app එකේ අදාල පිටුවෙ මුහුණතත් වෙනස් වෙනව. (අදාල මුහුණත කෝකද කියල හොයා ගන්නත් අමාරු නෑ, මොකද ගොඩක් වෙලාවට මුහුණතට අනුරූප නමක් තමයි XML ගොනුවටත් ලැබෙන්නෙ; උදා. මුල් පිටු මුහුණතක් නම් main, home වගේ වචනයක් ගොනුවෙ නමේ තියෙන්න ඕනි.)

මම මේ ක්‍රම දෙක ම කරල බලල තියෙනව. මුල් එක ටිකක් විතර අමාරු වුණත් සෑහෙන ආතල් වැඩක්. අනික නම් ගේමක් නෑ.

මම කළේ ජනප්‍රිය යතුරු පුවරු (keyboard) app එකක යතුරුවල උස වෙනස් කරන එකයි (නැත්තම් තිරයෙන් 1/2 විතර යතුරු පුවරුවෙන් වැහෙනව), ඒ app එකේ ම පරණ නිකුතුවක් (release) Singlish සැකසුමේ ඉඳන් විජේසේකර (Wijesekara) සැකසුමට වෙනස් කරන එකයි. දෙවෙනියට කියපු වැඩෙත් 100% නැතත් ගොඩක් දුරට සාර්ථක වුණා :)

  1. මේ කොයි වැඩේටත් ඔයාට apktool කියන උපාංගය (tool) ඕනි වෙනව. ඒක මෙතනින් ගන්න පුළුවන්.
  2. මෙතනින් ඔයාට ලැබෙන්නෙ JAR (Java archive) ගොනුවක්. ඒක සාමාන්‍ය JAR ගොනුවක් දුවවන විදිහට ම

    java -jar apktool_JAR_ගොනුවෙ_නම.jar

    විධානයෙන් දුවවන්න පුළුවන්. (පරිගණකයෙ Java තියෙන්න ඕනි කියල අමුතුවෙන් කියන්න ඕනි නෑනෙ? Java නැත්තම් JRE (Java Runtime Environment) දාගන්නෙ නැතුව JDK (Java Development Kit) ම දාගන්න බලන්න; හේතුව ඉස්සරහට තේරෙයි.) නැත්තම් අර පිටුවෙ තියෙන ඇසුරුම් කේතය (wrapper script) පාවිච්චි කරල කෙළින් ම apktool විධානය විදිහට දුවන්නත් පුළුවන් (මම කරල තියෙන්නෙ එහෙමයි).

  3. වැඩේට කලින් app එක වියෝජනය (decompose) කරල, වෙනස් කරන්න පුළුවන් තත්ත්වෙකට ගන්න එපැයි. මේ විධානයෙන් ඒක කරගන්න පුළුවන්:
  4. apktool d APK_ගොනුවෙ_නම.apk

    දැන් app එකේ නමින් නාමාවලියක් (directory) හැදිල ඇති. මේකෙ app එකේ සම්පූර්ණ අන්තර්ගතය තියෙනව; කේතය, මුහුණුවර සැකසුම (layout), පින්තූර, අකුරු රටා, … හැම දෙයක් ම.

  5. දැන් app එකේ කේතයට හරි මුහුණතට හරි කැමති විදිහෙ වෙනස්කමක් කරන්න පුළුවන්.
  6. කේතය තියෙන්නෙ නම් Java වලින් ම නෙවෙයි; smali කියන බිටු කේත (bytecode) මාදිලියෙන්. හැබැයි මේක වුණත් හෙමිහිට කියවල තේරුම් ගන්නත්, වෙනස් කරන්නත් පුළුවන්. වැඩේ පරිස්සමට කළොත් ඇත්තට ම වෙනස් හැසිරීමක් පෙන්වන app එකක් හදා ගන්න පුළුවන්. (අත්දුටුවයි, ප්‍රත්‍යක්ෂයි.)

    හැබැයි ඊට වඩා බොහොම ලේසියෙන් app එකේ මුහුණුවර වෙනස් කරන්න පුළුවන්; මොකද, ඒක තනිකර ම තීරණය වෙන්නෙ XML ගොනු කීපයක් මත. හැදුණ නාමාවලියෙ res/layout/ කියන තැන තමයි මේව සාමාන්‍යයෙන් තියෙන්නෙ.

    ඔයා නිකම් app එකක් (APK ගොනුවක්) ලේඛනාගාර කළමනාකරණ වැඩසටහනකින් (archive manager; WinZip, WinRAR වගේ) විවෘත කරල බැලුවොත් පෙනෙයි, මේ XML ගොනු කියවන්න බැරි බව. App එක හැදෙද්දි මේ ගොනු ද්විමය ස්වරූපයකට (binary format) හැරෙනව. හැබැයි apktool එකට පුළුවන් මේ ද්විමය ගොනුව ආපහු මුල් තත්ත්වයට ගන්න.

  7. මේ කොයි විදිහට වෙනස් කළත් අන්තිමට ආපහු app එක APK ගොනුවකට හරව ගන්න එපැයි! ඒකට තව විධානයක් තියෙනව:
  8. apktool b මුල්_විධානයෙන්_හැදුණ_directory_එකේ_නම

    දැන් APK එක, අර කියපු නාමාවලියෙ dist කියන තැන හැදිල ඇති.

  9. දැන් වැඩේ ගොඩ; මේ app එක අරන් ජංගමය‍ට දාන්නයි තියෙන්නෙ.
  10. ADB (Android Debug Bridge) තියෙනව නම් එක විධානයයි: (Android SDK එක තියෙනව නම් (ගොඩක් වෙලාවට Eclipse ADT හෝ Android Studio දාල තියෙනව නම් මේකත් දාගෙන ඇති; නැත්තම් මෙතනින් බාගන්න පුළුවන්) SDK එකේ මූලයෙ (root directory) platform-tools/ කියන තැන adb වැඩසටහන ඇති)

    adb install -r අලුතෙන්_හැදුණ_APK_ගොනුව.apk

    ADB නැතුව අතින් දානව නම් app එක ජංගමයෙ මතකයට පිටපත් කරගෙන, ගොනු පිරික්සුමකින් (File Browser) ගිහින් ඒක විවෘත (open) කරන්න.

හුටා!

Install blocked
For security, your phone is set to block installation of apps obtained from unknown sources.

සාමාන්‍යයෙන් Android ජංගමයක්, Play Store එකෙන් ඇරෙන්න වෙන විදියකින් දාන app එකක් ඇතුළත් කරගන්නෙ නෑ. මේක වෙනස් කරන්න නම්, ජංගමයෙ Settings > Security පිටුවට ගිහින් Device Administration යටතෙ තියෙන Unknown sources අයිතමයට හරියක් (tick) දාන්න ඕනි. (Gingerbread වගේ පරණ මෙහෙයුම් පද්ධතියක් නම් සමහර විට මේක Settings > Application වගේ තැනක ඇති.)

දැන් ආයෙත් app එක දාල බලමු:

ආයෙත් හුටා!

App not installed.

(ADB නම්
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] )

මේ මොකෝ?

App එකක් ජංගමයට දානකොට, ජංගමයෙන් ඒ app එක හොරට වෙනස් කරපු (tampered) එකක් ද කියල හොයල බලනව. මේකට අංකිත අත්සන (digital signature) කියල සංකල්පයක් පාවිච්චි වෙනව. (මේක නිකම් ලියුමක අත්සන හරි ද බලනව වගේ වැඩක්.)

apktool අපේ app එක ලස්සනට හදල දුන්නට, පොරට අර කියපු අත්සන හදන්න බෑ. ඒ නිසා දැන් අපි ළඟ තියෙන්නෙ අත්සනක් නැති පත්වීම් ලිපියක් වගේ එකක්; මේක දුන්නට ජංගමයෙන් ඒක ඇත්ත (සහතික කළ; certified) app එකක් විදිහට ගණන් ගන්නෙ නෑ.

දැන් මේ වැඩේ ගොඩ දාගන්න නම් අපි හොර අත්සනක් ගහල app එක සහතික කරගන්න ඕනි. (ඇත්තට ම මේක හොර අත්සනක් කියන්නත් බෑ, මොකද අපි කරන්නෙ මුල් වැඩසටහන්කරු (developer) වෙනුවට මේක අපි කරපු වැඩක් හැටියට අපේ ම අත්සනක් ගහල සහතික කරගන්න එකයි.)

මේකටත් තියෙනව jarsigner කියල පොඩි උපාංගයක්. මේක JDK (Java Development Kit) ඇතුළත් කරද්දි ලැබෙන එකක් කියල තමයි කියන්නෙ. ඒ නිසා දැනට JDK දාගෙන නැති අයට ඒකත් දාගන්න වෙයි.

jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore keystore_නම.keystore -storepass keystore_අවසර_පදය අලුතෙන්_හැදුණ_APK_ගොනුව.apk keystore_alias_නම

අප්පට සිරි... sigalg, digestalg, keystore, alias_නම… මොකද්ද මේ සීන් එක? අත්සනක් ගැහිල්ල මෙච්චර අමාරු ද?

ටිකක් විතර මහන්සි වෙන්න ඕනි තමයි, හැබැයි එක පාරයි.

මුලින් ම අත්සන ගහන්න අත්සනක් හදං ඉන්නෙපැයි. මේක තමයි keystore කියන්නෙ. හරියට කාර්යාලයක යතුරු සේරම සේප්පුවක දාල වහනව වගේ keystore එකක අපේ යතුරු (keys) ගබඩා කරල තියන්න පුළුවන්. ඒක හදන්නත් තියෙනව (JDK එක්ක එන) keytool කියල විධානයක්.

keytool -genkeypair -keystore keystore_නම.keystore -alias keystore_alias_නම -storepass keystore_අවසර_පදය -keyalg RSA

විධානයෙ කොටස් ගැන පොඩි විස්තරයක් කළොත්,

  • genkeypair: පොදු (public) සහ පෞද්ගලික (private) යතුරු (keys) දෙකක් එක්ක keystore එකක් හදන්න
  • keystore: keystore එකට දිය යුතු නම
  • alias: keystore එක තුළ අපේ යතුරට (key) ලැබෙන නම
  • storepass: keystore එකේ අවසර පදය (යතුරු ටික දාන සේප්පුවෙ අගුලු රටාව වගේ)
  • keyalg: යතුරු හදන්න පාචිච්චි කරන ක්‍රමය (algorithm)

මතක ඇතුව හැම විධානයක ම ඇල අකුරින් තියෙන තැන් වලට ඔයාට කැමති අගයන් දාගන්න. මේ වැඩේදි, දාගන්න අගයන් එච්චර ම වැදගත් නෑ. හැබැයි බලාගෙනයි! අවසර පදය එහෙම නැති වුණොත් ආයෙ ඒ keystore එකෙන් වැඩක් නෑ.

keystore එක හදද්දි ඔයාගෙ නම, ගම, වැඩ කරන තැන වගේ මගුල් සෑහෙන ගොඩක් අහනව. ඒවට කැමති නම් මොනව හරි දෙන්න, නොදී හිටියත් අවුලක් නෑ. තව password එකකුත් අහයි. ඒකට storepass එකට දුන්න අගය ම තියාගත්තොත් ලේසි නිසා නිකම් ම Enter යතුර ඔබන්න.

සැ.යු.: මෙහෙම සරල විදිහට වැඩේ ගොඩ දාන්නෙ, අපි app එක වෙනස් කරන්නෙ අපේ පාවිච්චියට විතරක් හින්දයි. හරි ආරක්ෂණ පිරිවිතර යටතෙ වැඩේ කරනව නම්, ඒ ගැන වෙන ම බ්ලොග් ලිපියක් ම ලියන්න වෙනව!

keystore එක හදාගෙන ඉවර නම් පරණ jarsigner විධානය (keystore_අවසර_පදය, keystore_නම, keystore_alias_නම එහෙම හරියට දාල) ආයෙ ගහල, ඊට පස්සෙ app එක ආයෙ ජංගමයට දාල බලන්න. දැන් නම් වැඩේ හරියන්න ඕනි.

වැඩේ තාම අවුල් නම්, කලින් තිබුණ මුල් (original) app එක තව ම ජංගමයෙ තියෙනව ද බලල ඒක අයින් කරල දාන්න. (මුල් app එක ඒක හදපු කෙනාගෙ keystore එකෙන් අත්සන් කරල තියෙන නිසා, ඒක තියෙනකම් අපේ අත්සන දාපු අලුත් app එක ජංගමය බාර ගන්නෙ නෑ. පරණ app එක අයින් කරන්න වෙන්නෙ ඒකයි.)

jarsigner විධානයෙ කොටස් ටිකත් keytool වගේ ම තමයි. sigalg, digestalg කියන්නෙ අත්සන හදන්න පාචිච්චි කරන ක්‍රම (algorithms). ඒ ඇරෙන්න ඉතුරු ටික කලින් කියපු විදිහමයි.

දැන් app එක විවෘත කරල බලන්න, බලාපොරොත්තු වුණ වෙනස්කම වෙලා ද කියල.

වැඩේ කෙළ වෙන්න පුළුවන් ගොඩක් තැන් තියෙනව; හැබැයි app එක දුවන්නෙ Dalvik VM එක ඇතුළෙ නිසා ජංගමයට අවුලක් වීමේ ඉඩ බොහොම අඩුයි.

  • Smali කේත මට්ටමට ගිහින් වෙනස් කරනව නම්, දෝෂයක් ආවොත් ගොඩක් දුරට app එක විවෘත කරනකොට හරි දුවනකොට (running) හරි බිඳවැටෙයි (crash).
  • app එක ආපහු හදන වෙලාවෙ (apktool b විධානයෙදි) ගොනුවල වරදක් වෙලා නම් වැඩේ අසාර්ථක (fail) වෙයි.
  • app එක අත්සන් කරන වෙලාවෙ (jarsigner විධානයෙදි) keystore එකේ හරි විධානයෙ හරි වරදක් වෙලා නම් වැඩේ අසාර්ථක (fail) වෙයි.
  • app එක ඇතුළත් කරන (install) වෙලාවෙ ආරක්ෂණ සැකසුම්වල (security settings) හරි අත්සනේ හරි අවුලක් තිබ්බොත් ජංගමය දෝෂයක් පෙන්නල වැඩේ නවත්තයි.

හාකො… ඉතිං දැං මේ ජිල්මාට් එකෙන් වැඩක් ගන්නෙ කොහොම ද?

උදාහරණයක් විදිහට, අර යතුරු පුවරුවෙ මුහුණත මම වෙනස් කරපු හැටි කියන්නම්:

මේක සුපිරි යතුරු පුවරුවක්; හැබැයි පොඩි අවුලකට තිබුණෙ යතුරු (keys) සෑහෙන සිරස් පරතරයක් (vertical padding) ඇතුවයි දාල තිබුණෙ. යතුරු පුවරුව ගත්තම තිරෙන් සෑහෙන කොටසක් වැහෙනව. මට ඕනි වුණේ යතුරු සිරස් ව ළං කරල මේ ඉඩ අඩු කරගන්න.

ඉතිං apktool වලින් app එක දිගෑරල අරන් res/ ඇතුළට ගියාම values/dimens.xml කියන ගොනුවෙ <dimen name="vertical_gap"> කියල සැකසුමක් තිබුණ. (සාමාන්‍යයෙන් මුහුණතේ මිනුම් වගේ දේවල් මේ dimens.xml ගොනුවටත්, වචන හා වාක්‍ය (හරියට කිවුවොත් strings) strings.xml ගොනුවටත් යනව.) මේ සැකසුමේ අගය 0.0dip කරල app එක ප්‍රතිස්ථාපනය (reinstall) කළාම වැඩේ ගොඩ!

එහෙනං ඉතිං තව අටුවා ටීකා මොකට ද? App එකක් හොයාගෙන වැඩේ කරල ම බලන්ටකො!

Saturday, March 14, 2015

මෙගාබයිට් 100න් මාසයක් ගොඩ දාන හැටි - දෙවැනි කොටස | 100MB Survival Tips & Tricks - Part 2

පළමු කොටස කියවලනෙ එන්න ඇත්තෙ? එහෙනම් අටුවා ටීකා නැතුව කතාවට බහිමු.

  • බ්‍රවුසරය හොඳට අඳුර ගන්න.
  • ජාලයට යද්දි නිතර ම භාවිතා වෙන්නෙ බ්‍රවුසරය නිසා, දත්ත ඉතුරු කිරීමෙ වැඩි බරක් වැටෙන්නෙත් බ්‍රවුසරයට ම තමයි. බ්‍රවුසරය හොඳට ආම්බාම් කරන්න පුළුවන් කෙනෙකුට දත්ත ඉතුරු කරනව කියන්නෙ සුළු දෙයක්. දැන් බහුල ව භාවිත‍ා වෙන Firefox, Chrome වගේ බොහොමයක් බ්‍රවුසර හොඳට පුද්ගලකරණය (personalization/customization) කරන්න පුළුවන් නිසා වැඩේ ලේසියි.

  • ඕනැ නැති වෙලාවට පින්තූර, JS, CSS, Flash වගේ අතිරේක දේවල් අක්‍රිය කරන්න.
  • ගොඩක් වෙලාවට අපි ජාලයට ගිහින් කරන්නෙ මොකක්හරි කියවන එක; නිතර පාහෙ මෙහෙම යන අඩවියක පින්තූර, JS (JavaScript) වගේ දේවල් අක්‍රිය කරල ලිඛිත අන්තර්ගතය විතරක් බලන්න පුරුදු වුණොත් සෑහෙන දත්ත ප්‍රමාණයක් ඉතුරු වෙනව. (හරි නම් විසිතුරුකරණය (styling) ඒ කියන්නෙ CSS අක්‍රිය කළාමත් දත්ත ප්‍රමාණයක් ඉතුරු වෙන්න ඕනි; හැබැයි Firefox බ්‍රවුසරය නම් ඒ වෙලාවටත් CSS ගොනු හොරෙන් බාගත කරන නිසා වැඩි වෙනසක් වෙන්නෙ නෑ.)

    ඒ වගේ ම Flash අක්‍රිය කළාම සමහර අඩවිවල මතුවෙන අනවශ්‍ය දැන්වීම් (ads) සහ වීඩියෝ වලක්වල දත්ත සෑහෙන්න ඉතුරු කරන්න පුළුවන්. (ගොඩක් බාගත (downloads) අඩවිවල මේ වගේ අනවශ්‍ය දැන්වීම් තොග පිටින් එන බව දන්නව ඇතිනෙ.) ගොඩක් වෙලාව‍ට YouTube වගේ තෝරගත්ත අඩවි කීපයකට විතරක් Flash සක්‍රිය කරන්න කියල බ්‍රවුසරයට කියල තියන්න පුළුවන්.

    මේ වැඩේට හොඳ උපාංග (add-ons) සෑහෙන ගණනක් ජාලයෙ තියෙනව. මම පාවිච්චි කරන QuickJava කියන උපාංගයෙන් අවශ්‍ය වෙලාවට මේ දේවල් අක්‍රිය, සක්‍රිය කරගන්න බොත්තම් ටිකක් බ්‍රවුසරයට ම දාගන්න පුළුවන්.

  • පිටු ඉබේ විවෘත වීම (pop-up windows) නවත්තන්න.
  • බාගත හා වාණිජමය අඩවි බොහොමයක මේ වගේ ඉබේ විවෘත වෙන පිටු, ලින්කුවලට ඈඳල තියෙනව. ඒ ලින්කු විවෘත කළාම ගොඩක් වෙලාවට (දත්ත ප්‍රමාණයෙන්) සෑහෙන ලොකු පිටු, බ්‍රවුසරයට යටින් බාගත වෙනව, කිසි ම තේරුමක් නැතුව. මේක වලක්වගන්න බ්‍රවුසරයෙ pop-up windows අක්‍රිය කරල තියන්න. එතකොට එහෙම පිටුවක් විවෘත වෙන්න ගියොත් බ්‍රවුසරය ඒක ඉබේ ම නවත්වනව; බලන්න ම ඕන නම් විවෘත කරගන්නත් අවස්ථාවක් දෙනව.

  • අනවශ්‍ය උපාංග (plugins, extensions) අක්‍රිය කරන්න.
  • ඔයා දන්නෙ නැතුව, බ්‍රවුසරයෙ සමහර උපාංග හොරෙන් දත්ත අදිනව. ගොඩක් බාගතවලදි බලෙන් වගේ ඇතුළත් වෙන සෙවුම් තීර (search toolbars) මේ අතරින් ප්‍රධානයි. සමහර වෙලාවට මේව ආරක්ෂාවටත් තර්ජනයක් වෙන්න පුළුවන්. ඒ නිසා (Firefox නම් Tools > Add-ons > Plugins හා Extensions පිටුවලටත්, Chrome නම් Chrome menu > Tools > Extensions පිටුවටත් ගිහින්) පාවිච්චි නොවෙන, නොදන්නා උපාංග අක්‍රිය කරල හෝ ඉවත් කරල දාන්න.

  • ස්වයංක්‍රිය යාවත්කාලීන පිරික්සුම් (automatic update checks) අක්‍රිය කරන්න.
  • හැම තිස්සෙ ම යාවත්කාලීන පිරික්සුම් සිද්ද වුණොත් දත්ත භාවිතයට සෑහෙන බලපෑමක් වෙයි. එ් නිසා බ්‍රවුසරයෙත්, ඒකට ඇතුළත් (කලින් කියපු) උපාංගවලත් වගේ ම පරිගණකයෙ අනික් මෘදුකාංගවලත් ස්වයංක්‍රිය යාවත්කාලීන සැකසුම් අක්‍රිය කරන්න. යාවත්කාලීන කරන්න ඕනි නම් ඒකට ඇති තරම් දත්ත ඉතිරි වෙලා තියෙන වෙලාවක් තෝර ගන්න.

  • දත්ත භාවිතය ගැන නිතර ඇහැ ගහගෙන ඉන්න.
  • Wi-Fi වලට එච්චර ප්‍රසිද්ධ නැති වුණාට, ජංගම දත්ත සබඳතාවලට (mobile data connections) නම් භාවිතා සීමා (usage limits) දාගන්න ගොඩක් ක්‍රම තියෙනව. Wi-Fi වලටත් ඒ වගේ ක්‍රමයක් හොයාගෙන, දවසක දත්ත භාවිතය අර මුලින් කියපු අගයට සීමා කළොත් ඉතිං 100MB පැකේජයෙන් මාසයක් අදින්න පුළුවන් බව ස්ථිරයිනෙ! එහෙම ක්‍රමයක් හම්බ වුණොත් ඒකත් මෙතන දාන්නම්කො.

එහෙනං ඉතිං, මේ ජිල්මාට් ටික පාවිච්චි කරල දැන් ඉඳන් ම 100MB ජීවිතයට පුහුණු වෙන්න පටන් ගන්න. මුලින් ටිකක් අමාරු වෙයි, හැබැයි පුරුදු වුණාම තේරෙයි එ්කෙත් පොඩි ආතල් එකක් තියෙන බව.

සුබ අනාගතයක්... er... මෛත්‍රී වේවා!

මෙගාබයිට් 100න් මාසයක් ගොඩ දාන හැටි | 100MB Survival Tips & Tricks - Part 1

දැන් කස්ටියට නොමිලේ වයි-ෆයි (Wi-Fi) ලැබන්නනෙ යන්නෙ නේද? හැබැයි ඉතිං මාසෙට 100MB තමයි දෙනවයි කියල තියෙන්නෙ. ආරංචිය අහපු ගමං ගොඩක් අය කිවුවෙ "අයියෝ දෙතුන් පාරක් ෆේස්බුක් ගිහිං ආවම ඕක ඉවරයිනෙ" කියල. තව සමහරු නොමිලේ වයි-ෆයි වැඩසටහන පාච්චල් කරලත් කතා කළා. මේව අහද්දි තමයි මාතෘකාව ගැන පොඩි සද්දයක් දාන්න හිතුණෙ.

"හිත ඇත්නම් පත කුඩා ද" කියනව වගේ, උවමනාව තියෙනව නම් මෙගාබයිට් 100න් මාසයක් ගොඩ දාන එකත් ගේමක් නෙවෙයි. දවසකට 3.225MB - 3.571MB අතර ප්‍රමාණයක් තියෙනවනෙ! දත්ත ඉතුරු කරන කලාව දන්නව නම් වැඩේ සෑහෙන සරලයි. පොඩි කැපකිරීම් ටිකක් කරන්න සිද්ද උණත් වැඩි අවුලක් නැතුව එදිනෙදා වැඩ ටික කරගන්න පුළුවන්.

දත්ත ඉතුරු කිරීම ගැන මම දන්න කරුණු ටිකක් කියල දාන්නම්. තව හොඳ ක්‍රම දන්න අය ඉන්නව නම් යටින් කොමෙන්ටු (comments) යොදල අපිත් එක්ක බෙදා ගන්න හොඳේ! මම පුළුවන් විදිහට එ්වත් මේ ලිපියට ම ඇතුළු කරන්නම්.

  • පිටු සලකුණු (page bookmarks) භාවිතයට හුරු වෙන්න.
  • මම ගොඩක් වෙලාවට දැකල තියෙනව, කට්ටිය Facebook ගියත් යන්නෙ "facebook" කියල සෙවුම් යන්ත්‍රයක ගහල (කොටින් ම කිව්වොත් facebook කියල google කරල) ලැබෙන ලින්කුවෙන්. මේක සෑහෙන අපරාදයක්. ඕකෙ අගට ".com" කියල දාල ලිපින තීරයෙ (address bar) ම ගැහුවනම් එක පාරින් ගොඩනෙ! (මුලට "m." කියලත් දැම්මනම් තවත් ගොඩ!)

    හැබැයි ඊටත් වඩා ලේසියි https://m.facebook.com/home.php?refid=12 වගේ සම්පූර්ණ ලිපිනය ම පිටු සලකුණක (page bookmark) තියාගෙන හිටියොත්. එතකොට පිටුවට යද්දි සිද්ද වෙන හැරවුම් (redirections) ගාණත් අඩු වෙනව; වෙලාවත්, දත්තත් ඉතුරුත් වෙනව. දැන් හැම බ්‍රවුසරය ම වගේ සලකුණු ගබඩා කරන්න, ඛාණ්ඩගත කරන්න වගේ ම වෙනත් මෘදුකාංග, ගිණුම් (උදා. Google Accounts) හා උපකරණ එක්ක හුවමාරු කරන්නත් පහසුකම් සලසල දෙනව.

  • ඉතිහාසයෙන් (history) ප්‍රයෝජන ගන්න.
  • ඔයා බ්‍රවුසරය දාගත්ත දා ඉඳන් ගිය පිටු ඔක්කොගෙම වගේ ලිපින (URLs) බ්‍රවුසරය මතක තියාගෙන ඉන්නව (අමතක කරන්න කියල අමුතුවෙන් කිවුවෙ නැත්තම්). බ්‍රවුසරයෙ ලිපින තීරයෙ හරි, බ්‍රවුසරයෙ Search History අංශයෙ හරි "facebook" කියල යතුරු කළොත් Facebook තුළ ඔයා ගිය පිටුවල ලිපින ලයිස්තුවක් එනව; දිගට ම "facebook.com/mes" වගේ යතුරු කරගෙන ගියොත් ඔයා ගිය Facebook Messages පිටු ටික බලා ගන්න පුළුවන්. ඕනි ම වෙලාවක මේ ලින්කුවක් තෝරල කෙළින් ම ඒ පිටුවට යන්න පුළුවන් (ගිණුමෙන් ඉවත් (log out) වෙලා හරි ආරක්ෂණ (security) ප්‍රශ්නයක් හරි නැත්තම්). Chrome වල මේක මීටත් වඩා දියුණු හා පහසු කරල තියෙනව කියලත් ආරංචියි.

  • Offline Mode පාවිච්චි කරන්න.
  • අපි නිතර යන (හරියට කිව්වොත්, ළඟදි එක පාරක් හරි ගිය අඩවිවල දත්ත (HTML, JavaScript, CSS) බ්‍රවුසරය මතක තිය‍ා ගන්නව. අඩවිය නිතර වෙනස් නොවෙන (static) එකක් නම් (උදා. Wikipedia, Stack Exchange අඩවිවල පිටු (කරුණු ලොකුවට වෙනස් වෙන්නෙ කලාතුරකින්), Google Search (Doodle එක හැර)) offline mode ක්‍රියාත්මක කරල ජාල සම්බන්ධයක් නැතුව වුණත් අපි කලින් බලල තියෙන පිටු ආයෙ බලන්න පුළුවන්. එක ම ටැබයක පිටු ගණනාවක් විවෘත වුණොත් සාමාන්‍යයෙන් offline mode සක්‍රිය කරල ඒ පිටු අතර ඉස්සරහට, පස්සට යන්නත් පුළුවන්. (වැඩි විස්තර මෙතනින්)

    ඒ වගේ ම බ්ලොග්, බාගත අඩවි වගේ දැන්වීම්, වීඩියෝ වගේ අනවශ්‍ය කොටස් බහුල ව තියෙන අඩවි බාගත වෙන අතරෙ offline mode සක්‍රිය ක‍ළොත් ඒ අනවශ්‍ය කොටස් බාගත වෙන එක නවත්වල ඕනැ කරන ටික විතරක් බලාගන්න පුළුවන්. බැරි වෙලාවත් වැරදි පිටුවකට යන්න හරි, වෙන මොකක් හරි වැරදි දෙයක් සිද්ද වෙන්න හරි ගියොත් ටක් ගාල offline mode සක්‍රිය කරල ඒක වලක්වගන්නත් පුළුවන්. (මේ විදිහට ටක් ගාල offline mode සක්‍රි කර ගන්න, ඕනි නම් පොඩි කෙටි මං යතුරක් (shortcut key) හදා ගන්නත් පුළුවන්; ඒ ගැනත් පස්සෙ වෙලාවක කියන්න බලන්නම්කො!)

    ඒ විතරක් නෙවෙයි, Gmail, Facebook, Twitter, LinkedIn වගේ වෙනස් වෙන (dynamic) අඩවිවල සමහර කොටස් වුණත් offline mode යොදාගෙන දත්ත නැතුව ලබාගන්න පුළුවන්. උදාහරණයක් හැටියට, Gmail විවෘත කරල මුළු පිටුව ම ස්ථාවර වුණාට පස්සෙ offline mode ඉවත් කරල පිටුව ඇතුළෙ සෙවුම් තීරය ළඟ තියෙන Refresh බොත්තම (බ්‍රවුසරයෙ Reload බොත්තම නොවේ!) එබුවොත් අලුත් ඉ-මේල් බලාගන්න, ඒවට උත්තර ලියන්න පුළුවන්. ඒ විදිහ‍ට ම සංවාද (Chat) කොටසෙ Refresh බොත්තම ඔබල ඒකත් ආයෙ පණ ගන්වගන්න පුළුවන්. (Facebook එකෙත් මේ වැඩේ පුළුවන්, හැබැයි Chat අංගය ක්‍රියාත්මක නොවෙන්න ඉඩ තියෙනව.)

    තව සමහර අඩවිවල (උදා. Sheets, Docs, Calendar, Apps Script වගේ Google Drive හා Apps ගොනුවල) මූලික ව්‍යුහය සකස් වුණාට පස්සෙ offline mode ඉවත් කළොත් අඩවියෙ ඉතුරු ටික (සාමාන්‍යයෙන් විචල්‍ය (dynamic) කොටස්) බොහොම අඩු දත්ත ප්‍රමාණයකින් බාගත වෙනව. එතන ඉඳන් අඩවිය සාමාන්‍ය විදිහට වැඩ කරනව. මේකට, හරියට ම offline mode ඉවත් කරන තැන ගැන හොඳ හුරුවක් තියෙන්න ඕනි; හැබැයි පුරුදු වුණාම හරි ලේසියි.

  • ජංගම අඩවි (mobile sites) භාවිතා කරන්න.
  • මම හිතන හැටියට මේක තමයි සුපිරි ම විසඳුම. ගොඩක් වෙලාවට, මෙගාබයිට් ගණන් ඕනි වෙන අඩවි මේ ක්‍රමයට කිලෝබයිට් ගාණෙන් ගොඩ දාගන්න පුළුවන්; හොඳ ම උදාහරණ තමයි Facebook සහ Gmail. හොඳ ජංගම අඩවි ලයිස්තුවකුත් එකක් වැඩි විස්තර මෙතන තියෙනව.

  • බ්‍රවුසරය පිටින් ම ජංගම තත්ත්වයට ගන්න. User-Agent මාරු කරන්න.
  • මේ වැඩේ කළාම අපි සම්බන්ධ වෙන අඩවියට අපිව පේන්නෙ සාමාන්‍ය (desktop) පරිගණකයක් හැටියට නෙවෙයි, ජංගමයක් (mobile device) හැටියට. කරන හැටි මෙතන තියෙනව.

    ගොඩක් අඩවි දැන් ජංගමවලට දෙන්නෙ ජංගම හිතකාමී (mobile friendly) දසුනක්. හැබැයි ඇත්තට ම ඒකෙන් සමහර අඩවිවල දත්ත භාවිතය කලින්ටත් වඩා වැඩි වෙන්නත් ඉඩ තියෙනව (උදා. Facebook හා Gmail අඩවිවල User-Agent මාරු කළාම ලැබෙන දසුන, කළින් කියපු විදිහට කෙළින් ම ජංගම අඩවියට ගියාම ලැබෙන දසුනට වඩා දත්ත භාවිතය අතින් වැඩියි.); හැබැයි එහෙම වෙන්නෙ කලාතුරකින්. කොහොමත්, අලුත් අඩවියක් නම් සාමාන්‍ය ක්‍රමයයි, ජංගම දසුනයි, මේ ක්‍රමයෙන් ලැබ‍ෙන දසුනයි සසඳල බලන එක තමයි හොඳ ම වැඩේ.

කතාව දිග වැඩියි වගේ නිසා පළමු කොටස මෙතනින් සමාප්තයි; කම්මැලි නැත්නම් දෙවෙනි කොටසත් කියවල බලන්නකො!