Thursday, January 5, 2017

Functional Style Programming - Java

Java ဟာ OOP ပါ။
Java ထဲကို Lambda ပါလာရတာ ဘာကြောင့်လဲ။
Parallel Processing ကို ရေးချင်လို့။

Lambda ဆိုတာ Function ရဲ့အတိုကောက်။
Function တွေကို ကိုယ်စားပြုတဲ့အရာ။
Lambda မရှိပဲ Parallel Processing ကောလုပ်လို့မရခဲ့လို့လား။

ရကောင်းရမယ်။ မတော်တာတွေရှိတယ်။
Parallel Processing ကို လုပ်ချင်ရင် လုပ်စရာ ရှိတဲ့ Task တွေကို ခွဲပြီး အပြိုင်ခိုင်းနိုင်မှ အဓိပ္ပါယ်ရှိမယ်။
Java ရဲ့ OOP နဲ့ကော ခွဲခိုင်းလို့မရလို့လား။
Object တွေမှာ State ဆိုတာကြီးရှိနေတယ်။
အဲ့ဒါကြောင့် State တွေမတူရင် အလုပ်လုပ်တာတွေကလဲ တူမှာ မဟုတ်ဘူး။
Side Effects တွေ ရှိနိုင်တယ်။

ဒါဟာ Parallel ကို လုပ်ရတာကိုခက်ခဲစေတဲ့ အဓိကအကြောင်းဖြစ်လာတယ်။
Functional Programming ရဲ့ အဓိက အရည်အသွေးဟာ Side Effect မရှိတဲ့ Function တွေကို သုံးနေတဲ့အချက်ပဲ။ တန်ဖိုးတစ်ခုကိုပေးရင် အဖြေဟာ အမြဲတမ်း ဒီအဖြေရနေရမယ်။

ဒီအရည်အသွေးဟာ Parallel Processing ကို လုပ်ဆောင်ရာမှာ အဓိကလိုအပ်တဲ့
လိုအပ်ချက်လဲ ဖြစ်နေတယ်။

ဒါမှသာ Task တွေကို ဘယ်လိုခွဲခွဲ နောက်ဆုံးပေါင်းလိုက်ရင် အတူတူပဲဆိုတာ ဖြစ်လာမယ်။
ဒါ့ကြောင့် Lambda ဆိုတာကြီးက Java ထဲကိုပါလာရတာပါ။

အဲ့ဒါအပြင် Functional Programming မှာ အရမ်း Cool ဖြစ်တဲ့ Features တွေရှိတယ်။
First Class Citizen Entity တွေရှိတယ်
Function as an Argument
Function as a return type
Function တွေကိုပေါင်းပြီး ပြဿနာ တစ်ခုကို ဖြေရှင်းနိုင်တဲ့ပုံတွေ

Java ဟာ OOP ကြောင့် Side Effect တွေရှိနေတဲ့ အတွက် Functional Programming အစစ်ဖြစ်လာမှာ မဟုတ်ဘူး။ ဒါပေမဲ့ Side Effect ဖြစ်နိုင်တာတွေကို ရှောင်ပြီး Functional Style Programming ကို ရေးနိုင်စရာ အကြောင်းရှိပါတယ်။

Sunday, August 28, 2016

စာရေးဦးမှပဲ

အခုတလော စာမရေးဖြစ်တာကြာပြီ။ ဘာရယ်မဟုတ် စာရေးတဲ့ဆီကို မရောက်ဖြစ်တာပါ။
သင်တန်းအတွက် သင်ခန်းစာတွေပြင်ရင်း၊ ဂျပန်စာသင်ရင်း ဟိုလုတ်ဒီလုပ်နဲ့ အချိန်ကုန်ကုန်သွားတယ်။

ကိုယ့်ဟာကိုယ်လေ့လာရတဲ့ အချိန်မရှိဘူးဖြစ်နေတယ်။
တပါတ်ကို တစ်ခုလောက်တော့ JPA အကြောင်းကို ရေးသွားပါမယ်။

Friday, May 22, 2015

My Daily Life

It is about 3 weeks that I have moved my room. I consider about what are the changes.
The most significant change is my sleeping time and wake up time.
I sleep at about 12:00pm and wake up at 6:30am.

Before moving I always sleep at about 2 to 3 am and wake up at about 8:00 am. I can sleep about 1.5 hour a day by moving.

I decided that I never buy TV in my room before I move. I think TV take my time a lots.

If I have TV, I put power on unconsciously when I come back to home. My wife will watch Korean Drama all the day. We can loose our time and my working hours. As my decision I didn't buy TV at my home.

When I wake up at 6:30 am, I check my mail and FB message by my phone on my bed. It may take about 5 minutes.

At this time my wife is preparing for breakfast. We decided that we will take food with less oil type dishes as much as possible. So our break fast contains, white breads, boiled eggs and slice harms and coffee.

After checking my phone, I wake up and take some physical exercise, just stretch about 15 minutes. After cooking breakfast my wife take a shower and change the dress to go work. While she taking shower room I am doing some job with my pc. When she left from shower room, I also take shower and change dress. After changing the dress It is about 7:15 am. After that we take breakfast together and we left our room at about 7:30. We go to work on foot, it take about 20 minutes.

8:00 am to 5:00 pm is our working time. But cleaning and door shuttering may take about 15 minutes.

We also go back to home on foot, it may take about 30 minutes. It is 10 minutes more than morning because we buy some vegetables for dinner. There is a small street market on the way to my home. We also decided that we will take vegetable at dinner. So we always buy for dinner on the way to my home.

We always arrive to my home at about 5:45 pm. When I get home, I put my bag on my table and take my pc and put power on.
I do my job again. My wife is cooking for dinner. She always said she is genius about cooking. At about 6:30 our dinner is ready and we take dinner together. Our dinner is always vegetables fried and white rice. I always said very nice.

If there is no rain, we always take a walk around our neighbor after our dinner. It may take about 1 hour. When we go back from walking, we take fresh juice at a small shop. I always take turmeric juice or yogurt juice.

At around 8:00 pm we always come back to our room. I have my free time up to 11:00 pm. I am always drawing some UML or writing codes or drawing some photoshops for JDC or preparing tutorials at my free time.

After that I always read some book about one hour. Most of the book that I read are about Java or System Design. I always go to bed at about 12:00 pm. My wife also sleep deeply at this time.

Her face is so innocent while she is sleeping.
I love my wife. And also appreciate to my wife for spending her times with me together.

Monday, April 14, 2014

သင်္ကြန်အကျနေ့

၁၉၉၈ဂျပန်ရောက်ပြီးကတည်းက သင်္ကြန်မကျဖြစ်ခဲ့ပါ။ အရင်ကတော့ အတော်လေးကို လွမ်းပါသည်။ မနှစ်က မြန်မာပြည်ကိုပြန်ရောက်ပါသည်။ သင်္ကြန်ကို အတော်လေးကို အားထားခဲ့သော်လည်း Hip Hop သင်္ကြန်ကို မနှစ်သက်ခဲ့ပါ။

ဒါနဲ့ ဒီနှစ် သင်္ကြန်ကိုတော့ အိမ်မှာပဲအေးအေးဆေးဆေး နေတော့မည်ဟု အိမ်ရှေ့တွင်လူပြိုကြီး မန်းတပ်ထိုးပြီး ကလေးတွေကိုရေလောင်းရန် စဉ်းစားခဲ့ပါသည်။ မနေ့ကအကြိုနေ့။ မနက်ပိုင်း မန်းတပ်ဆောက်ပြီးညနေကျတော့ ရေပက်ပါသည်။

တိုင်ကီထဲတွင် ရေခဲတုံးများကိုထည့်ပြီး၊ ရုံးကမျိုးမင်း၊ ရဲမိုး၊ ပပ နှင့် နန်းကျော့တို့နှင့် ရေပက်ကြပါသည်။ ကလေးလေးတွေကို ရေခဲရေနဲ့ ခေါင်းကလောင်းပြီး အေးပြီးလန့်သွားတာကို တဟားဟား ရယ်နေခဲ့ပါသည်။ တစ်ညနေလုံး ရေလောင်းနေတော့ အတော်လေးကို ပင်ပမ်းခဲ့ပါသည်။
ဒါပေမယ့် မနေ့က ရေးလက်စ Java စာအုပ်အတွက် Collection Framework အကြောင်းကို အပြီးသတ်နိုင်ခဲ့ပါသည်။ ပြီးတော့ အိပ်ခါနီး Kindle လေးနဲ့ စာဖတ်နေရင်း Java 8 လည်းထွက်တာကြာပြီ ဆိုပြီး Java 8 အကြောင်းဟိုရှာဒီရှာလုပ်ရင်း ရေးလက်စစာအုပ်ကို Java SE 8 ကို အခြေခံမှပဲဆိုပြီး ဆုံးဖြတ်ခဲ့ပါသည်။

ဒီနေ့မနက် Java SE 8 ရဲ့ Specification တို့ကို Myanmar Java User Blog တွင် ရေးဖြစ်ပါသည်။ ဒီညတော့ Lambda Expression အကြောင်းကို ရေးပါမည်။ ညနေကျရင် ရေကစားပါဦးမည်။

ဒီနှစ် သင်္ကြန်သည် ကောင်းသော သင်္ကြန်ဖြစ်ပါလိမ့်မည်။

Saturday, August 17, 2013

Eclipse Kepler for 32 bit windows

ပြီးခဲ့တဲ့ ရက်တွေတုန်းက DTC မှာရှိတဲ့ ကလေးတွေကို Java FX ကို သင်ပေးနေခဲ့ပါတယ်။ Layout တွေ Controls တွေ ကိုသင်ရင်း Database ကို သင်ဖို့ ဖြစ်လာပါတယ်။ ကျွှန်တော်သုံးနေတဲ့ စက်က Spec က သိပ်ပြီး အကောင်းကြီးတော့မဟုတ်ဘူး။ ဒါပေမယ့် OS ကို တော့ 64 bit Windows ကို တင်ထားပါတယ်။

Eclipse Kepler ပေါ်မှာ JavaFX လည်းတင်ထားတယ်၊ Glassfish 4 ကိုလည်း တင်ထားပါတယ်။ JPA တွေ ရေးတဲ့အခါမှာ နည်းနည်းတော့လေးတယ်။ Crush တော့ ဖြစ်မသွားဘူး။ တစ်ခါတစ်လေ Hang သွားရင်တော့ ပြန်ပြီး Restart လုပ်လိုက်ရင် ရေးလို့ရတာပဲ။ ဒါနဲ့ ကရု မထားဖြစ်ခဲ့ပါဘူး။

DTC မှာက ကိုကျော်လွင်ကလည်း Android လာသင်ပေးပါတယ်။ ကလေးတွေက ပြောတယ် Android ရေးရင် Eclipse IDE က အရမ်းလေးတယ်ပေါ့။ ဒါလည်းပဲ ရေးလို့ရနေသေးတော့ ကျွှန်တော်လည်း ပြဿနာတစ်ခု အနေနဲ့ မရှာဖြစ်ခဲ့ဘူး။

မနေ့ကကျမှ အောင်ခန့်ဖြိုးကို JPA ရေးသင်ပါတယ်။ အဲ့ဒီမှာတော့ ကျွှန်တော့် စက်ကို သုံးပါတယ်။ ပြီးတော့ အောင်ခန့်ဖြိုးကို ရေးကြည့်ဆိုတော့မှ၊ ဆရာ ကျွှန်တော့်စက်ထဲက Eclipse က JPA ရေးရင်း Crush ဖြစ်သွားတယ်တဲ့။ ပြီးတော့ တစ်ခြား Project တွေလည်း အဲ့ဒီလိုပဲတဲ့။

အဲ့ဒီအခါ အောင်ခန့်ဖြိုးစက်ကို ကျွှန်တော် သုံးပြီးရေကြည့်ပါတယ်။ တကယ်ပဲ Crush ဖြစ်သွားပါတယ်။ ကျွှန်တော့်အထင်ကတော့ Installation မှားနေတာလားပေါ့။ အဲ့ဒါနဲ့ Java ကအစပြန်ပြီး Install လုပ်ခိုင်းပါတယ်။ ပြီးတော့ စမ်းကြည့်တော့ အတူတူပဲ။ ဒါနဲ့ Workspace မှာရှိတဲ့ Error Log ကို ကြည့်တယ်။ outOfMemoryError တဲ့။ parmGen Space ကို Create လုပ်လို့မရဘူးတဲ့။ ဒါနဲ့ eclipse.ini မှာ ပါရာမီတာ သွားရေးကြည့်တယ်။ မရဘူး။

Eclipse Bug List မှာ သွားကြည့်တော့ ဟုတ်ပါတယ် JDK 1.6_10 ကျော်ကတည်းက Oracle က JDK တွေမှာ Eclipse နဲ့ အစဉ်မပြေတာတွေ တွေ့နေရတယ်တဲ့။ ဒါနဲ့ JDK 1.6_10 ကို ဒေါင်းပြီး သုံးကြည့်တယ်။ အဲ့ဒီမှာ ပြဿနာက JavaFX က Run လို့မရဘူး။ Java FX Plugin က JDK 1.7 အထက်ပေါ်မှာပဲ အလုပ်လုပ်ပါတယ်။ ဒါဆိုဒီနည်း မကောင်းဘူးဆိုပြီး ကြံရာမရ JDK 1.8 ကို ဒေါင်းပြီး စမ်းကြည့်တယ်။

ဒီနည်းကဟန်တယ်။ Eclipse ပေါ်မှာ Error တွေလည်း မတက်တော့သလို၊ Crush လည်း မဖြစ်တော့ပါဘူး။ အရင်ကနဲ့စာရင် Performance လည်း မြန်လာပါတယ်။ Eclipse Kepler ကို သုံးရင် JDK 8 နဲ့ Run ရင် အတော်လေးကို အစဉ်ပြေတာကိုတွေ့ရပါတယ်။

http://jdk8.java.net/download.html

Sunday, July 21, 2013

စာသင်ခြင်းနှင့် ကျွှန်တော်

ကျွှန်တော် မြန်မာပြည်ကို ပြန်ရောက်သည်မှာ ၇လကျော်ခဲ့ပြီဖြစ်သည်။ ၂၀၁၃ခု ဖေဖော်ဝါရီလတွင် DTC ဟု ဖွဲ့စည်းခဲ့ပြီး နီးစပ်ရာ ကလေးများအား Java အကြောင်းကို သင်ကြားပေးခဲ့၏။ ကျွှန်တော်အမှန် အတိုင်းဝင်ခံရလျှင် စာမသင်တတ်ပါ။ အတော်လေးကို ဒုက္ခရောက်ခဲ့ပါသည်။ ကျွှန်တော် ပြောပြချင်သည့် အကြောင်း အရာအများကြီးရှိပါသည်။ ဘယ်လိုပြောပြရမှန်း မသိပါ။

ကလေးတွေကလည်း Java အခြေခံက အမျိုးမျိုး။ လုံးဝမသိသော ကလေးများလည်းပါသလို JSF, JPA နှင့် EJB တို့တောင် ရေးနိုင်သော ကလေးများလည်းပါပါသည်။ DTC တွင် ကျွှန်တော် အဓိကထားသည်မှာ လက်တွေ့ရေးနိုင်သော ကလေးများအား မွေးထုတ်ချင်သည်။ OOP ၏ Concept ကို အပြည့်အဝ ရိုက်သွင်းပေးချင်သည်။ စိတ်ထဲရှိသည်ကို စနစ်တကျတွေပြီး စနစ်တကျ ရေးတတ်စေချင်ပါသည်။

အစတွင်သူတို့အားလုံးကို Basic Java အကြောင်းကို သင်သည်။ Language အခြေခံတွေကို ရှင်းရင်း Object ဆိုတာဘာလဲ၊ Class ဆိုတာဘာလဲ။ Object တစ်ခုနှင့် တစ်ခု ဘယ်လိုဆက်သွယ် အလုပ်လုပ်ကြသလဲ၊ ပြီးတော့ ဘယ်လိုပတ်သက်သလဲ ဆိုတဲ့အချက်ကို အဓိကထား၍ ပြောပြသည်။ လေ့ကျင့်ခန်းအနေဖြင့် တွေးမိတွေးရာကို ရေးခိုင်းခဲ့ပါသည်။

BMG တွက်သည့်အပလီက အစ၊ ဘိုကြားသေနတ်၊ အန်စာတုံး၊ ကိုးမီး အစရှိသဖြင့်။ အဲ့ဒီမှာ ပြဿနာတက်ပါသည်။ တတ်ပြီးသား ကလေးများက စိတ်မဝင်စားပါ၊ ပြီးတော့ သိပ်ပြီးမတတ်သေးသော ကလေးများက မလိုက်နိုင်ကြပါ။ အဲ့ဒီမှာ ကျွှန်တော် နည်းပြောင်းပါသည်။ ကျွှန်တော် ရေးပြသည်။ တစ်ဆင့်ချင်း ဒီနေရာမှာ ဒီလိုတွေး၍ ဒီလိုရေးသည်ဆိုသည်ကို ရေးရင်းပြောရင်း ရေးပြပါသည်။ အဲ့ဒီအခါ ခွန်လေးက ဆရာက အရမ်း ပျော့တာပဲတဲ့၊ အားလုံးကို ရေးပြနေတယ်တဲ့၊ အခြားဆရာတွေဆိုရင် ကျောင်းသားတွေကို ကိုယ့်ဟာကိုယ်ရေးခိုင်းတာတဲ့။ ကျွှန်တော်အခက်တွေ့သွားသည်။

ကျွှန်တော်တို့ဆီမှာ အချို့သော ကျောင်းသားများက တစ်ပတ်တစ်ရက်သာ လာနိုင်သည်။ အဲ့ဒီတော့ တော်ရုံနှင့် အခန်းက ရှေ့မဆက်နိုင်ဘူး ဖြစ်သွားသည်။ ပုံစံပြောင်းရမည်။ မည်သို့ပြောင်းရမည်မသိ။

ကျွှန်တော်ကံကောင်းပါသည်။ ကျွှန်တော်တို့ဆီကို ကိုကျော်လွင် ရောက်လာသည်။ သူစာသင်တာ အတော်လေးတော်ပါသည်။ တစ်ရက် DTC ကို လာလည်ရင်း OOP အကြောင်းကို ရှင်းပြသွားခဲ့ပါသည်။ ကလေးများ အားလုံးစိတ်ဝင်စားစွာ နားထောင်နေခဲ့၏။ ကျွှန်တော် အတော်လေးကို နမှုနာရပါသည်။ သူရှင်းသွားသည်မှာ အတော်လေးကောင်းပါသည်။ White Bord ပေါ်တွင် ရေး၍ သမိုင်းကအစ နားထောင်ကောင်းအောင်ရှင်းပြသွားပါသည်။

အဲ့ဒီအချိန်မှာ Java Basic အကြောင်းကို အတော်လေးပြောပြပြီး ဖြစ်နေပြီ ဖြစ်သည်။ API အကြောင်းတွေကိုတော့ စုံအောင် မပြောပြရသေးပါ။ သူတို့ရေးသားသည်ကို ကြည့်၍၊ Class နှင့် Instance အကြောင်းကို နားလည်ပြီ၊ OOP ရဲ့ Concept ကို ရပြီဆိုတာကို တွေ့ရပါသည်။ ကျွှန်တော်ဆုံးဖြတ်သည်။ API တွေကိုတော့ တစ်ခြားဟာလေ့လာရင်း ဆက်ပြီး ပြောပြသွားလို့ရသည်။ တစ်ချို့ကလေးတွေက Basic ကို ပိုပြီးလုပ်ချင်သည်ဟုပြောသည်။ ကျွှန်တော်ယုံကြည်ပါသည်။ သူတို့ ရေးအားနည်းသောကြောင့် ကိုယ့်ဟာကိုယ် အယုံအကြည်မရှိခြင်းသာဖြစ်သည်။ ဒါကလည်း သင်ယူလို့မရ၊ ကိုယ်တိုင်ရေးကျင့်မှ ရမည်ဖြစ်သည်။

Servlet နှင့် JSP ကို စပါသည်။ Servlet နှင့် JSP ကို သင်ကြားသည်မှာ အဲ့ဒါတွေကို သုံးပြီး Application ကို ရေးသားရန်မဟုတ်။ ဒီခေတ်ကြီးထဲတွင် ပို၍ အစဉ်ပြေသော Framework များစွာရှိ၏။ Web Application တစ်ခု၏ အခြေခံ အလုပ်လုပ်ပုံကို နားမလည်ပဲ Framework များအား စခဲ့ပါက နောက်ပိုင်းတွင် ဒုက္ခများနိုင်သည်။ အဲ့ဒီအတွက် Low Level ဖြစ်တဲ့ Servlet နဲ့ JSP ကို သုံးပြီး Web Application တစ်ခု၏ အလုပ်လုပ်ပုံ၊ ပြီးတော့ Configuration များကို ရေးသားပုံကို ရင်းနှီးစေလိုပါသည်။ အဲ့ဒီအတွက် Servlet နှင့် JSP ကို သင်ကြားရခြင်းဖြစ်သည်။

အဲ့ဒီလိုသင်ကြားရာမှာလည်း ကျွှန်တော် စာသင်သည့် Style ကို ပြောင်းပါသည်။ အရင်က Computer ကို အသုံးပြု၍ ရေးသားရှင်းပြခဲ့သည်ကို White Bord ပေါ်တွင် ရေး၍ ရှင်းပြသည်။ ဘာကြောင့် သင်ကြားသည် ဆိုသည့် ရည်၍ချက်ကို အရင်ပြောသည်။ ပြီးလျှင် ဘာတွေ လုပ်လို့ရသည်ကို ပြောသည်။ ငါတို့ Servlet နဲ့ JSP ကို သုံးပြီး ဘာတွေလုပ်လို့ရတယ်၊ ဘယ်လိုလုပ်ရတယ် ဆိုတာကို အရင်ပြောပြီးမှ တစ်ခုချင်းကို လက်တွေ့ ရေးခိုင်းပါသည်။

ပြီးတစ် အရင်ပြီးသော ကလေးများကို နောက်ကျနေသော ကလေးများအား ပြန်ရှင်းပြစေသည်။ အဲ့ဒီနည်းသည် အောင်မြင်သည် ဆိုရမည်။ ကလေးများအားလုံး တဖြည်းဖြည်း ရေးလာနိုင်သည်ကို တွေ့ရ၏။ အခုဆိုလျှင် သူတို့သည် လက်တွေ့အပလီတစ်ခုကို စရေးတော့မည် ဖြစ်သည်။ ဒီ ၈လပိုင်း အလယ်လောက်တွင် Java EE 7 ကို စတင် သင်ကြားနိုင်မည်ဟု မျှော်လင့်ရပါသည်။

Wednesday, March 27, 2013

အပြာရောင်လမင်း

နေ့ခင်းခေါက်ဆွဲကျော်စားရင်း
ဝါးပင်စိမ်းစိမ်း တွေ့ကိုတွေ့ရတယ်
ကောင်မလေး
မင်းဆီကို ဖုန်းဆက်မိတယ်

ညနေခင်း
ဘီယာသောက်ရင်း
လမင်းကို တွေ့ရတယ်
ကောင်မလေး
မင်းဆီကို ဖုန်းဆက်မိပြန်တယ်


အိပ်ယာဝင်
မျက်စေ့မှိတ်အိပ်ဖို့ကြိုးစားတဲ့အခါမှာလည်း
ကောင်မလေး
မင်းဆီကို ဖုန်းဆက်မိပြန်တယ်

ကောင်မလေးရေ
အဝေးကနေပြန်လာပါတော့ကွယ်