Pages

Sunday, January 25, 2015

ATalk ( version 1.0 )


ATalk ( version 1.0 )


ATalk කියන්නෙ ඇත්තටම මගේ ලොකු හීනයක්.. ගොඩක් couples වලට තියෙන ප්‍රශ්නයක් තමයි තමන්ගේ private sms කොහොමද private විදියටම තියාගන්නෙ කියන එක.. සමහර වෙලාවට ගෙදරට මාට්ටු වෙනවා, ඒක නවත්වන්න කියලා sms locker එකක් දා ගත්තට වැඩක් නෑ ලඟම ඉන්න එකෙක් හරි sms වල කියලා තියෙන ඒවා දකිනවා.. ( සමහර වෙලාවට පොඩි ළමයි නරක් වෙන ඒවා නේ එන්නෙත්.. :-p ) ඉතින් ඔන්න ඔය ප්‍රශ්නෙට පොඩි විසඳුමක් විදියට තමයි මේ ATalk එක එළියට එන්නෙ..





මුලින්ම මම පොඩි idea එකක් දෙන්නම් මේක කොහොමද වැඩ කරන්නෙ කියලා.. ඊට පස්සෙ අපි images එක්ක step by step මේ app එක use කරන විදිය බලමු..

ATalk වලදි app එක හරහා phone එකට එන messages ඔක්කොම save වෙන්නෙ වෙනමම inbox එකකට, එතකොට ඒක normal sms inbox එකෙන් පේන්නෙ නෑ.. (ඔන්න ඒක නිසා එක පැත්තකින් sms ආරක්ෂාකාරී වෙනවා..)  ඊට අමතරව අපිට පුළුවන් මේ ATalk එකම normal sms වලටත් use කරන්න. එතකොට ATalk වලින් conversation එකක් කරන කෙනෙකුට ATalk දාගෙන නැති කෙනෙකුට sms එකක් යවන්න ඕන වුනොත් වෙන app එකකට යන්න ඕන වෙන්නෙ නෑ... එකම තැනක ඉඳන් ඔක්කොම කරන්න පුළුවන්..

තව මේ app එකට ඇතුලු වෙනකොටම දාලා තියෙන security system එක අපි normal use කරන unlock pattern එකට වඩා ගොඩක් ආරක්ෂිතයි.. මොකද හැමෝම දන්නවා unlock pattern එක 4n එක දිලිසෙන විදියට angle කරාම ඇඳපු පාරක් වගේ පේනවනේ.. ඒත් මේකෙ තියෙන KNOCK unlock system එකේදි වෙන්නෙ අපි තට්ටු කරන වාර ගානයි area එකයි අනුව තමයි pin එක save කරගන්නෙ.. ඒක නිසා මේකෙදි 4n එක angle කරලා බැලුවත් pattern එක බලාගන්න විදියක් නෑ.. :-)


ඇයි ATalk විශේෂ වෙන්නෙ ???



  • කොච්චර කොහොම කරත් අනිත් ක්‍රම වලදි අපේ sms privacy එක අපිට නැති වෙන නිසා..
  • යවන කෙනා pin එක දුන්නොත් ඇරෙන්න වෙන කෙනෙක්ට sms එක කියවන්න බැරි නිසා..
  • අඩුම ගානෙ network provider (mobitel, dialog, etisalat, hutch...) ට වත් sms එකක කියලා තියෙන දෙයක් කියවන්න බැරි නිසා..
  • sms එකක් අනිත් පැත්තට යවන්නෙම unreadable විදියට නිසා..
  • අපිට ඕනනම් එක message එකෙන් message එකට pin එක වෙනස් කරන්න පුළුවන් නිසා..
  • secret sms වගේම normal sms ත් මේකෙන්ම යවන්න පුළුවන් නිසා..

දැන් අපි බලමු කොහොමද මේ ATalk use කරන්නෙ කියලා...


1) මුලින්ම app එක install කරගන්න ඕන.. මෙතනින් පුළුවන් Play store එකේ තියෙන තැනට යන්න.. එතනින් install කරගන්න.. එහෙමත් නැත්නම් space තියන්නෙ නැතුව atalk කියලා Play store එකේ search කරානම් හොයා ගන්න පුළුවන් වෙයි..


2) install කරගෙන first time app එක open කරන කොට අපිට knock pattern එකක් set කරන්න වෙනවා..




මෙතන තියෙන area වලට තට්ටු කරන පිළිවෙල සහ වාර ගාන අනුව අපිට පුළුවන් knock pattern එකක් set කරගන්න.. ඊට පස්සෙ continue කරලා ආපහු පාරක් ඒ pattern එකම දීලා confirm කරාට පස්සෙ වැඩේ හරි..

දැන් ආපහු පාරක් එළියට ගිහින් app එකට එනකොට අපිට මෙන්න මෙහෙම එකක් එනවා..




දැන් මේ තියෙන කොටුව ඇතුලෙ අපි කලින් set කරගත්ත තට්ටු pattern එක හරියටම දුන්නොත් විතරයි ඇතුලට යන්න පුළුවන්..


3) knock lock එකක් set කරගත්තට පස්සෙ අපිව කෙලින්ම app එකේ main screen එකට ඒ කියන්නෙ අපේ secret inbox එකට අරගෙන යනවා..





4) දැන් මෙතන උඩම තියෙන New Message එක click කරාම අපිට පුළුවන් අළුතින් message එකක් යවන්න ඕන screen එක open කරගන්න..




මේ තියෙන්නෙ new messages යවන screen එක.. මෙතන උඩම To කියලා තියෙන තැන යවන කෙනාගෙ number එක ගහන්න තියෙන්නෙ.. ඊට අමතරව Recent button එකෙන් අන්තිමටම use කරපු ටිකයි, All එකෙන් ඔක්කොම contacts ටිකයි load කරගන්න පුළුවන් පෙන්නලා තියෙන විදියට.. ඉතින් මෙතන වැදගත්ම දේ තමයි අපිට නමේ මතක ඕනම කොටසක් ගහන කොට ඒකට අදාල ටික විතරක් filter වෙන නිසා ලේසියෙන්ම contacts තෝරා ගන්න පුළුවන්..

message එක ගහන්න තියෙන්නෙ යටම තියෙන කොටසෙ.. ඊට අමතරව message එක කියවන්න අවශ්‍ය කරන pin එක දෙන්න තියෙන්නෙ no. එක ගහන තැනට යටින් pin කියලා දීලා තියෙන තැන..

ඔන්න එහෙනම් අපි sample message එකක් යවන්නයි මේ සූදානම..






5) ඊළඟට අපි බලමු කොහොමද මෙහෙම යවන message එකක් අපිට පෙන්නන්නෙ කියලා..




දැක්කද අපි "This is a test message" කියලා එව්වට මෙතන දැන් පෙන්නන්නෙ වෙනමම තේරුමක් නැති අකුරු set එකක්..


6) දැන් අපි බලමු කොහොමද හරි message එක බලාගන්නෙ කියලා..




දැක්කා නේද උඩම තියෙන කොටුවෙ message එක එවපු කෙනා දීපු pin එකම හරියටම දුන්නම ඒක ඇතුලෙ තියෙන හරිම තේරුම අපිට පේනවා..


7) ඊළඟ ප්‍රශ්නෙ app එක නැති කෙනෙක්ට කොහොමද message එකක් යවන්නෙ කියලා..


හරිම simple app එක නැති කෙනෙක්ට යවනවානම් කරන්න තියෙන්නෙ pin එක විදියට 0000 දෙන එක විතරයි.. එතකොට ඒක unreadable විදියට convert වෙන්නෙ නැතුව normal විදියටම යනවා..


8) normal sms බලන්නෙ කොහොමද?

අපිට default load වෙලා තියෙන්නෙ secret inbox එකනේ.. ඉතින් normal inbox එක load කරගන්න නම්, menu touch sensor එක touch කරලා එතනින් Inbox කියන එක select කරානම් වැඩේ ගොඩ..








ඔන්න ඔහොම තමයි ATalk එක use කරන්න තියෙන්නෙ.. මේක දිගටම update කරගෙන යනවා අනිවාර්යෙන්ම internet එක හරහා message කරන්නයි, call ගන්නයි වගේම images, files යවන්න වගේ දේවල් කරන්න පුළුවන් වෙන්න.. එතකොට අපිට පුළුවන් රහසිගත විදියට messages වගේම images පවා යවන්න අඩුම වියදමකින්..

design එකෙත් ලොකු වෙනසක් වෙයි.. ඇත්තටම මට ආසාවක් ඇති වුනා මේක මගේ birthday එක දවසටම release කරන්න ඕන කියලා.. ඒක නිසා design එකයි, security එකයි හිතේ තිබුන විදියටම ආවෙ නෑ මේ version එකේ.. ඒ ටික හදලා ATalk 1.1 එක ලඟදිම එළියට දානවා.. ඒක නිසා හැමෝම ඉවසීමෙන් ඉන්න කියලා ඉල්ලන ගමන් මම සමුගන්නම්..


ATalk 1.1 වල එන්න තියෙන දේවල්..


  • user friendly design
  • security fix
  • sms backup and restore
  • performance improving
  • user defined notification
  • sms alert on/off feature


ATalk මතුසම්බන්ධයි...

Thursday, January 8, 2015

Java Part 10 ( Methods )

Methods in Java


exam නිසා අපේ ජාවා කුප්පියේ අවසාන කොටස දාන්න බැරි වෙයිද කියලා හිතේ පොඩි බයක් තිබුනා.. ඒත් මහින්ද මාමාගෙයි මෛත්‍රී මාමාගෙයි චන්දෙ නිසා ලැබුන නිවාඩුව පාවිච්චි කරලා කොහොමහරි ජාවා කුප්පිය ඉවර කරන්න කියලා තමයි මේ සූදානම... ඉතින් අපි අන්තිමටම කතා කරපු arrays ගැන කාටහරි බලන්න බැරි වුනානම් මෙතනින් ගිහින් ඒක බලන්න පුළුවන්. අපි එහෙනම් වැඩේ පටන් ගමුකෝ..

කට්ටියට මතක ඇති අපි array එකක් use කරේ variable set එකක් group කරලා තියාගන්නනේ.. එ් වගේම method ගැනත් දැනට පොඩි idea එකක් දාගමු. method එකක් කියන්නෙ මොනවහරි coding set එකක් group කරලා තියාගත්තම ඒකට කියන නමට කියලා පොඩ්ඩක් දැනට ඔලුවට දාගමු හොඳද..


Method

මෙහෙම හිතමුකෝ, අපි ලියනවා ලොකුම ලොකු program එකක්. මේකෙ තියෙනවා කියලා හිතන්නකො coding පේලි 1000ක් විතර. මේ 1000 ඇතුලේ අපිට එකම දේ කරන්න ඕන වෙන coding set එකක් අවස්ථා 5ක use වෙලා තියෙනවනම් අපිට ඉතින් මහලොකු අමාරුවක් නෑනේ copy / paste පහසුකම භාවිතා කරලා ඒ අවශ්‍ය තැන් වලට ලේසියෙන්ම ඒ code ටික දාගන්න පුළුවන්නෙ නේද?

හැබැයි java වලදි අපි එකම දේ දෙතුන් පාරක් ලියන්නෙ නෑ.. එහෙම කලා කියලා compile error එන්නෙ නම් නෑ. ඒත් අපි standard එකක් විදියට java වල එකම දේ නැවත නැවත යෙදෙනව නම් ඒක එහෙම ලියන්නෙ නැතුව වෙන option එකක් use කරනවා..

ඉතින් දැන් ඔන්න මාර ප්‍රශ්නයක් තමයි වුනේ.. අපිට එකම දේ use කරන්න වෙනවා අපේ program එකේදි. ඒත් java standard එකක් නිසා එහෙම කරන්න එපා කියනවා. දැන් අපි මොකද කරන්නෙ? 

මෙහෙම හිතමුකො.. අපිට එක පාරක් ලියන්න පුළුවන්නෙ? එහෙනම් අපි මෙන්න මේ සැරින් සැරේ අවශ්‍ය වෙන code ටික වෙනම තැනකින් ලියලා තියාගමු. දැන් අපිට ඒ ටික ඕන වෙනකොට අපි compiler ට ඒක තියෙන තැන කියලා ඒ ටික run කරන්න කියලා කිව්වොත් එයා ඒ ටික run කරලා අපේ වැඩේ අවශ්‍ය විදියටම කරලා දෙනවානේ? ඉතින් එහෙම කරගත්තොත් නම් අපි එක පාරකට වඩා ලියන්නෙත් නෑ, අපිට අවශ්‍ය වැඩේ කරගන්නත් පුළුවන්. ඉතින් ඇත්තටම මෙහෙම අවශ්‍ය වෙන code set එකක් ලියලා පැත්තකින් තියලා අවශ්‍ය වෙලාවට run කරවන මේ සිද්ධිය තමයි method එකකින් අපි කරන්නෙ. 

ඒ කියන්නෙ අපි අපේ main එකට පිටින් මෙහෙම ලියන code set එක ලියන්නෙ method එකක් ඇතුලේ.. ඇත්තම කිව්වොතින් main කියලා කියන්නෙත් method එකක්මයි. එහෙනම් අපි coding ලියන්නෙ මොකක් හරි method එකක් ඇතුලේ.. automatically run වෙන method එකට විශේෂ නමක් කියනවා main method එක කියලා. එහෙම නැතුව අපි පස්සෙ අවශ්‍ය code දාලා හදන method වලට main method එකේ ඉඳන් අවශ්‍ය වෙලාවට call කරන්න ඕන..


How to Declare Methods

method එක ප්‍රධාන කොටස් දෙකක් තියෙනවා.. මම මුලින්ම පොදුවෙ method1 කියලා method එකක් හදන හැටි පෙන්නලාම ඒ කොටස් දෙක ගැන කියන්නම්කො..




උඩ රූපේ පෙන්නලා තියෙන විදියට තමයි method එකක් හදන්නෙ.. මෙතනදි අපිට දෙන්න ඕන නමට කලින් void කියලා දීලා තියෙනවා method එකක් කියලා පෙන්නන්න ඕන නිසා method එකේ නමට පස්සෙ වරහනක් දාලා තියෙනවා. ඊට පස්සෙ ඒ method එක යටතේ ලියන්න ඕන code ටික {} ඇතුලේ ලියන්න තියෙන්නෙ..

ඉතින් මම කොටස් දෙකක් ගැන කිව්වනෙ කලින්. රූපේ රතු පාටින් ඉරි දෙකක් ගහලා තියෙන්නෙ ඒ ප්‍රධාන කොටස් දෙක යටින් තමයි.. මේ void කියලා දීලා තියෙන තැනින් වෙන්නෙ method එක ඇතුලෙදි calculate කරලා හරි user ගෙන් scan කරලා හරි ගන්න මොකක් හරි value එකක් method එකට call කරපු තැනට යවන එක.. වරහන ඇතුලෙන් කරන්නේ මේ method එකට පිටින් අවශ්‍ය කරන value එකක් ගෙන්න ගන්න එක.. අපි ඒකත් පොඩි රූප කෑල්ලකින්ම බලලා ඉමුකෝ..




වෙනස් වෙන තැන් දෙකයි තියෙන්නෙ method එකකට.. එහෙනම් අපිට මේ තැන් දෙක වෙනස් කර කර method එකක් හදන්න පුළුවන් ක්‍රම 4ක් ගන්න පුළුවන්.. 



  1. පළවෙනි එක තමයි ඇතුළට මුකුත් ගන්නෙ නැතුව එළියට value එකක් යවන අවස්ථාව.
  2. දෙවෙනි එක තමයි ඇතුළට මුකුත් ගන්නෙත් නැතුව එළියට value එකක් යවන්නෙත් නැති අවස්ථාව.
  3. තුන්වෙනි එක තමයි ඇතුළට value එකක් ගන්නවා, හැබැයි එළියට value එකක් දෙන්නෙ නෑ.
  4. හතරවෙනි එක තමයි ඇතුළට value එකක් අරගෙන එළියටත් value එකක් දෙන අවස්ථාව.

ඉතින් මේ අවස්ථා හතරට අමතරව තව එකක්වත් තියෙන්න විදියක් නැති නිසා අපි method එකක් මේ අවස්ථා 4ටම හදන හැටියි ඒ ඒ අවස්ථා වලදි main method එකේ ඉඳන් ඒවට call කරන හැටියි බලමු.. 


Return Type

ඊට කලින් මම කියලා ඉන්නම් එළියට යවනවා කියන එකේ හරිම තේරුමයි කොහොමද ඒක වෙන්නෙ කියන එකයි. දැන් කලින් අපි method1 කියලා හදද්දි එළියට යවන තැන void කියලානේ දුන්නෙ? එහෙම void කියලා දෙන්නෙ අපි එළියට මුකුත් යවන්නෙ නෑ කියලා කියන්න, ඒ කියන්නෙ අපි method එක run වෙලා ඉවර වුනාම මුකුත් call කරපු තැනට return කරන්නෙ නෑ කියලා කියන්න තමයි void කියලා use කරන්නෙ..

අපිට මොනව හරි return කරන්න ඕනනම් අපි මේ void කියන එක වෙනුවට එහෙම return කරන්න ඕන value එකෙ data type එක තමයි ලියන්න ඕන.. ඒක නිසා අපි මේ කොටසට කියනවා return type එක කියලා.. උදාහරණයක් විදියට method එකෙ අවසානයට calculate වෙච්ච average එකක් යවන්න ඕනනම් මෙතන void වෙනුවට double කියලා තමයි ලියන්න ඕන. integer value එකක් නම් යවන්නෙ int කියලා ලියන්න ඕන. String value එකක් නම් String කියලා ලියන්න ඕන.. අන්න ඒ වගේ අපිට යවන්න ඕන කරන value එකේ data type එක තමයි void කියන එක වෙනුවට ලියන්න ඕන. integer array එකක් වුනත් යවන්න පුළුවන්. එහෙම යවනවම් මෙතන data type එක විදියට ලියවෙන්න ඕන int[] කියලා.. තේරුණා නේද?

මතක තියාගන්න මෙතනින් මෙහෙම ඒ data type එකට අදාල value එකක් යවන්න permission දුන්නට යවන්නනම් අන්තිමට යවන නිසා method එකේ අන්තිම statement එක විදියට return කියලා ලියලා return කරන්න ඕන value එක ලියන්න තියෙන්නෙ.. උදාහරණයක් විදියට 5 return කරන්න ඕනනම් අන්තිම statement එක විදියට return 5; කියලා ලියන්න තියෙන්නෙ.. double average = 5.5; වගේ double variable එකක තියෙන Value එකක් යවන්න ඕනනම් return type එක විදියට double දීලා අවසාන statement එක විදියට return average; කියලා දෙන්න විතරයි තියෙන්නෙ..


Parameters

ඊළඟට මම කියන්නම් කොහොමද value එකක් ගන්නෙ කියලා.. value එකක් ගන්නනම් ඒක අරගෙන දාගන්න variable එකක් තියෙන්න ඕනනේ.. ඒක නිසා අපිට value එකක් method එකකට ගන්න පුළුවන් වෙන තැන වෙන වරහන ඇතුලෙ අපිට ගන්න ඕන value එකට අදාල variable එකක් හදලා තියන්න ඕන.. ඉතින් අපිට මෙහෙම values දෙක තුනක් ඕනනම් කරන්න තියෙන්නෙ කොමා දදා අවශ්‍ය value වලට variable හදලා තියන්න විතරයි.. මෙහෙම values ගන්න වරහන ඇතුලෙ හදන variable වලට කියන්නෙ parameters කියලා.. එහෙමම මතක තියාගන්න මේ parameters වලට main method එකේදි එවන values වලට කියන්නෙ arguments කියලා.. ඒ වගේම parameters එකකට වඩා තියෙනවානම් arguments එවද්දි parameters වල තියෙන පිළිවෙලටම ඒවා එවන්නත් ඕන.. 

උදාහරණයක් විදියට void method2(String a, int b){} කියලා method එකකට values එවනවා නම් මුලින්ම String variable එකට value එකක් එවලා පස්සෙ integer එකක් එවන්න ඕන. order එක මාරු කරන්න බෑ අපිට.. ඒකත් අමතක කරන්න එපා..

එහෙනම් අපි මේ return type එකයි parameters යි අනුව method එන්න පුළුවන් ආකාර හතරට උදාහරණ අරගෙන ඒවා හදන හැටියි main method එකේදී call කරන හැටියි බලමුකෝ..


Case 1 : return කරන්නෙ නෑ, හැබැයි accept කරනවා...




මේකෙදි return කරන්නෙ නැති නිසා අපි return type එක විදියට දීලා තියෙන්නෙ void කියලා.. accept කරන නිසා වරහන ඇතුලෙ parameters හදලා තියෙනවා.. මෙතනදි නම් String value එකක් ගන්න a කියලා variable එකකුයි, integer value එකක් ගන්න b කියලා variable එකකුයි තමයි හදලා තියෙන්නෙ.. දැන් අපි බලමු කොහොමද මේ method එකට call කරන්නෙ කියලා..




method එකේදි String value එකකුයි integer එකකුයි ඉල්ලන නිසා ඒ දෙක දෙන්නෙ නැතුව අපිට call කරන්නනම් විදියක් නෑ.. ඉතින් ඒක නිසා අපිට ඒ පිළිවෙලටම වරහන ඇතුලෙ ඒ data type වලට අදාල values යවන ගමන්ම තමයි call කරන්න වෙන්නෙත්..


Case 2 : return කරන්නෙත් නෑ, accept කරන්නෙත් නෑ...




මේකෙදි return කරන්නෙ නැති නිසා return type එක විදියට void දීලා තියෙන්නෙ.. accept කරන්නෙ නැති නිසා වරහන ඇතුලෙ කිසිම parameter එකක් දෙන්නෙ නැතුව හිස්ව තියලා තියෙන්නෙ.. දැන් බලමුකො කොහොමද මේ වගේ method එකකට call කරන්නෙ කියලා..




Case 3 : return කරනවා, හැබැයි accept කරන්නෙ නෑ...




මේකෙදි return කරන්නෙ integer value එකක් නිසා return type එක විදියට int කියලා දීලා තියෙන්නෙ.. තව හොඳට බලන්න return statement එක ලියලා තියෙන්නෙ අන්තිම statement එක විදියට.. ඒක අමතක කරන්න එපා.. දැන් අපි බලමුකො කොහොමද මේ වගේ එකකට call කරන්නෙ කියලා..




method3() එකට call කරාට පස්සෙ එයා call කරපු තැනට integer value එකක් එවනවානේ.. ඉතින් අපි මෙහෙම එවන value එක අල්ල ගන්න ඕන නිසා තමයි x කියලා integer variable එකක් හදලා method එක call කරාම එන value එක ඒකට දාන්න කියලා තියෙන්නෙ.. අපිට එහෙම එන value එක use කරන්න ඕන නැත්නම් මෙහෙම int x කියලා variable එකක් හදලා ඒකට දාන්න කියලා නොලිව්වට වැරුද්දක් නෑ. ඒත් method3() එකේ code ටික run වෙනවා. මෙහෙම variable එකක් දෙන එකෙන් වෙන එකම දේ තමයි අපිට එහෙම එන value එක use කරන්න පුළුවන් වෙන එක..


Case 4 : returnut කරනවා, acceptut කරනවා...




මේකෙදි integer value 2ක් ගන්න a,b කියලා integer variable 2ක් parameters විදියට දීලා තියෙනවා.. ඊට පස්සෙ එහෙම ගන්න values වලින් average එක calculate කරලා ඒක return කරන නිසා return type එක විදියට double කියලා දීලා තියෙන්නෙ.. අපි දැන් බලමු කොහොමද මේකට call කරන්නෙ කියලා..




මෙතනදි උත්තරේ 37.5 කියලද එන්නෙ?? ඇත්තටම එහෙම වෙන්නෙ නෑ.. උත්තරේ එන්නෙ 37 යි කියලා.. කට්ටියට මතකද දන්නෙ නෑ මෙතනදි අපි double variable එකකට දැම්මට integer operation එකක් වෙන නිසා අපිට integer වලින් cast වෙලා තමයි උත්තරේ එන්නෙ.. අපිට double value එකක්ම ගන්න ඕනනම් double වලින් cast කරන්න වෙනවා.. Casting මතක නැත්නම් සම්පූර්ණ විස්තරේම මෙතනින් ගිහින් බලලා එන්නකො..




එහෙනම් methods කියන්නෙ මොකක්ද, කොහොමද method එකක් හදාගන්නෙ සහ ඒවට call කරන්නෙ කොහොමද කියලා හැමෝටම තේරුනා කියලා හිතනවා.. එහෙනම් අදින් අපේ java kuppiya ඉවර කරමු.. ඊළඟ කොටසෙ ඉඳන් අපි OOP එක්ක හමු වෙමු කියලා සතුටින් කියන ගමන් මම සමුගන්නම්...



Contact Form

Name

Email *

Message *