Dennis MacAlistair Ritchie

ဒီလထဲမှာ iPhone အသစ်ထွက်ပြီးတဲ့နောက်နေ့ Steve Jobs ဆုံးသွားတယ် တစ်နေရာတစ်ခါ လူတစ်ယောက်တွေ့တိုင်း Steve Jobs ဆုံးသွားတယ်ပဲပြောကြတယ် Facebook မှာလည်းပုံတွေ ပလူပျံနေတယ် Profile ပြောင်းတဲ့လူလည်းပြောင်း အခုထိပြန်မဖြုတ်ကြသေးဘူး။ iPhone ဝယ်မလားတော့ စဉ်းစားမိပါတယ် ဒါပေမယ့် ဆုံးသွားပြီဆိုတော့ ဪ.. သွားရှာပြီလို့ စိတ်မကောင်း တစ်ချက်ဖြစ်တာတစ်ခုပါပဲ။

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

Microsoft ချမ်းသာတော့ လူတွေကအတော် ဆန့်ကျင်ကြတယ် Microsoft ပစ္စည်းမသုံးဘူး အော်ကြဟစ်ကြတယ် Apple တစ်ခုခုထွက်တော့ လုဝယ်ကြပြန်တယ် တကယ်တော့ ပြန်စဉ်းစားကြည့်ရင် Apple စီးပွားဖြစ်တော့ ဘယ်သူအကျိုးရှိသလဲ လိုက်ကြည့်တော့ သူတို့ချမ်းသာတာတစ်ခုပဲ မြင်မိပါတယ်။ Microsoft စီးပွားဖြစ်တော့ အနည်းဆုံးတော့ Bill Gates ချမ်းသာတယ်ပေါ့ အဲဒီကတစ်ဆင့် Bill & Melinda Gates Foundation ဟာ ချို့တဲ့ပြီး လိုအပ်တဲ့နေရာတစ်ချို့မှာ တစ်စိတ်တစ်ဒေသ အကျိုးပြုနိုင်သေးတယ်။

သတင်းတစ်ခုထဲမှာ အောက်တိုဘာ ၈ ရက်နေ့က Dennis MacAlistair Ritchie ဆုံးသွားပြီဆိုတာ ဖတ်လိုက်ရတယ်။ Dennis M. Ritchie ဟာ ကွန်ပျူတာခေတ်မှာ အရေးပါတဲ့နေရာမှ ရှိနေခဲ့တယ် သူရဲ့အမွေတွေကို ဆက်ပြီးသုံးနေကြတယ် အခုအချိန်အထိ နှစ်ပေါင်းများစွာ မကျဆုံးပဲရပ်တည်နေတဲ့ C Programming Language ရဲ့ဖခင်ကြီးလို့ပြောရမယ်။ ၁၉၈၀ မှာ Dennis M. Ritchie နဲ့ Brian W. Kernighan အစပြုခဲ့တဲ့ C Language ဟာအခုအချိန်အထိ မဖြစ်မနေသုံးစွဲနေကြဆဲဖြစ်တယ်။ သူဟာ Unix System ကိုလည်း ပူးတွဲတည်ဆောက်ခဲ့တဲ့ လူတစ်ဦးလည်းဖြစ်တယ်။ တကယ်တော့ အင်တာနက်သုံးနေသ၍ Unix နဲ့ကင်းတယ်လို့ ဘယ်လိုမှပြောလို့မရနိုင်ပါဘူး အင်တာနက်ပေါ်က ဆာဗာအများစုဟာ Unix မဟုတ်ခဲ့ရင်တောင် သူ့ကိုအခြေခံတဲ့ Linux တွေဖြစ်နေတယ်။

အာဒမ်နဲ့ဧဝခိုးစားတဲ့ ပန်းသီးရယ် နယူတန်တွေ့လိုက်တဲ့ ကြွေကျတဲ့ပန်းသီးရယ် Steve Jobs ပေးတဲ့ပန်းသီးရယ်ဆိုပဲ တကယ်တော့ Steve Jobs ရဲ့ပန်းသီးလည်း Dennis M. Ritchie ပေးတာတွေနဲ့ တည်ဆောက်ထားရတယ် Objective C ဆိုတော့ နာမည်နဲ့တင် ပြောစရာမလိုတော့သလို တကယ်တော့အခု အချိန်မှာသုံးနေတဲ့ MacOSX တွေဟာ Dennis ရဲ့ Unix ကိုအခြေခံပြီးပြုပြင်ထားရတာပါ။ Bill Gates ဟာ BASIC Language ကိုအင်မတန် သံယောစဉ်ရှိပေမယ့် တကယ်တော့သူ့ရဲ့ OS တွေလည်း ၉၀% C or C++ ကိုသုံးနေရသလို Unix လွှမ်းမိုးမှု့အောက်က မလွတ်မြောက်ပါဘူး။ တကယ်တော့ Dennis လုပ်ခဲ့တဲ့အရာတွေဟာ တစ်ဦးတစ်ယောက်တည်းအတွက် မဟုတ်ခဲ့ပဲ ခေတ်သစ်ကွန်ပျူတာ လောကတစ်ခုလုံးကို အကျိုးပြုသွားသလို အခုလည်း အကျိုးပြုနေဆဲပါပဲ သူဆုံးပါးသွားပေမယ့် သူ့ရဲ့တီထွင်မှု့တွေက ရှေ့ဆက်ပြီးလည်း အကျိုးပြုနေအောင် ထားသွားနိုင်ခဲ့တဲ့ လူတစ်ဦးပါပဲ။

Cross Compile with MinGW-w64

Windows ရဲ့ Environment ဟာ Compile လုပ်ဖို့အဓိက မထားတဲ့အတွက် တကယ်တမ်း တစ်ချို့ Opensource တွေကို ကိုယ်တိုင် Compile လုပ်ဖို့လိုလိုရင် အတော်ပြဿနာတက်တယ် အများအားဖြင့် 64 bits တွေလိုချင်ရင်ဖြစ်တတ်တယ် အဲဒီ့အချိန်ကျရင်တော့ သူများလုပ်ထားတာရှိသလား လိုက်ရှာရတာကမောတယ် ကိုယ်တိုင်ကိုယ်ကျ Compile လုပ်ရရင်ပိုမောပါတယ်။ Windows မှာ Compile လုပ်ချင်ရင် Native မဟုတ်ပဲ လွယ်ချင်ရင်တော့ Cygwin မှာလုပ်ရင်တော့ဖြစ်တယ် ဒါပေမယ့် Cygwin dll ကြားထဲကပါနေတော့ နေရာတိုင်းသုံးလို့မဖြစ်ဘူး တစ်ချို့ Opensource တွေက VC နဲ့လုပ်ရလွယ်အောင် မပေးထားရင် Compile လုပ်ရတာ အတော်ဒုက္ခများပါတယ်။ Native လိုချင်ရင် အသုံးအတည့်ဆုံးကတော့ Mingw ကို MSys နဲ့သုံးရင်တော့အဆင်ပြေတယ်။ အခုနောက်ပိုင်း ပြဿနာဖြစ်ဖြစ်နေတာက 64 bits လိုချင်တော့ Mingw 64 bits ကို Setup လုပ်ရတာကလည်း နည်းနည်းလက်ဝင်ပါတယ် အဲဒါကြောင့် နောက်ပိုင်းတော့ Mingw သုံးပြီး Linux ပေါ်မှာပဲ Cross Compile လုပ်လိုက်တော့တယ်။

Linux ကလည်း သူ့ရဲ့ Native မှာ Compile လုပ်ရလွယ်ပေမယ့် Cross Compile ဆိုရင်တော့ GNU Autotools တွေအလုပ်လုပ်တာတော့ နည်းနည်းနားလည်ဖို့လိုပါတယ်။ Ubuntu ပေါ်မှာပဲ Cross Compile လုပ်ဖြစ်တယ် Ubuntu ရဲ့ Repo ထဲမှာ Mingw 64 bits ပါပေမယ့် တကယ်သုံးကြည့်တော့ Error များပါတယ် အဲဒါကြောင့် တကယ်သုံးမယ်ဆိုရင် Mingw 64 bits Binary တွေကိုမူရင်းဆိုက်ကနေပဲ ဆွဲယူရပါတယ် အဲဒါတွေကိုပါ ကိုယ်တိုင် Compile လုပ်လို့ရပါတယ် ဒါပေမယ့်လုပ်ဖို့တော့ မလိုအပ်ရင်အားမပေးပါဘူး Mingw တစ်ခုလုံးကို Compile လုပ်ရတာ အတော်အချိန်ကုန်သလို ပြဿနာလည်းများလွန်းပါတယ်။ Cross Compile ဖြစ်တဲ့အတွက် ကိုယ်လုပ်ချင်တဲ့ Platform အလိုက် Compiler တွေကိုယူရပါမယ် Windows 32 and 64 ဆိုတဲ့အတွက် Compiler လည်း ၂ ခုလိုပါတယ်။ အောက်မှာပြထားတဲ့ URL နှစ်ခုကနေ ဒေါင်းလုပ်လုပ်လို့ရပါတယ်။ အဲဒီ့မှာလည်း Personal နဲ့ Automated Builds ဆိုပြီး ၂ မျိုးရှိတယ် တစ်ချို့ကလည်း Personal က အများနည်းတယ်ပြောတယ် ဒါပေမယ့် နောက်ဆုံး Build ကိုပဲကျွန်တော်သုံးတော့ Automated သုံးနေတာ အခုထိတော့ ဘာမှမဖြစ်ဖူးသေးပါဘူး။

http://sourceforge.net/projects/mingw-w64/files/Toolchains targetting Win32
http://sourceforge.net/projects/mingw-w64/files/Toolchains targetting Win64

ရလာတဲ့ Compiler တွေကို တစ်နေရာမှာသွားထားပါတယ် ဘယ်နေရာထားထားရပါတယ် ကျွန်တော်ကတော့ /opt အောက်မှာ mingw32 and mingw64 ဆိုပြီးသတ်မှတ်ထားလိုက်တယ်။ သူက Compiler name တွေရှေ့မှာ ကိုယ် Cross လုပ်မယ့် Architecture Name ထည့်ထားတယ် gcc compiler ဆိုရင် 32 Bits Windows အတွက်ဆို i686-mingw32msvc-gcc လို့နာမည်ပေးပြီးတော့ 64 Bits Windows အတွက်ဆို x86_64-mingw32msvc-gcc လို့နာမည်ပေးထားတယ်။ အဲဒီတော့ Cross Compile လုပ်ချင်တဲ့ Source တွေကို သက်ဆိုင်ရာ Compiler နဲ့ Compile လုပ်ရပါတယ် တကယ်တော့ Compiler တစ်ခုတည်မဟုတ်ပါဘူး Loader, Linker, … စသည်ဖြင့် အကုန်လုံးကိုပြောင်းသုံးရမှာပါ။ အဲဒီတော့ Build လုပ်တဲ့အချိန်မှာ Manual ဆိုရင်ပြဿနာမဟုတ်ပေမယ့် Automated ဆိုရင်တော့ Makefile ထဲမှာ လိုက်ပြင်ရပါလိမ့်မယ် အဲဒါလည်း လက်နဲပြင်လို့မဖြစ်နိုင်တော့ Autotools တွေနဲ့ Makefile generate လုပ်တဲ့အချိန်မှာ Parameter ထည့်ပေးလိုက်မှအဆင်ပြေပါတယ်။ အဲဒါကြောင့် Makefile generate လုပ်တဲ့ Configure script ကို Execute လုပ်တဲ့အချိန်မှာ အောက်မှာပြထားတဲ့ Parameter တွေထည့်ပေးရပါမယ်။

CC=/opt/mingw64/bin/x86_64-w64-mingw32-gcc CXX=/opt/mingw64/bin/x86_64-w64-mingw32-g++ LD=/opt/mingw64/bin/x86_64-w64-mingw32-ld AR=/opt/mingw64/bin/x86_64-w64-mingw32-ar AS=/opt/mingw64/bin/x86_64-w64-mingw32-as NM=/opt/mingw64/bin/x86_64-w64-mingw32-nm STRIP=/opt/mingw64/bin/x86_64-w64-mingw32-strip RANLIB=/opt/mingw64/bin/x86_64-w64-mingw32-ranlib DLLTOOL=/opt/mingw64/bin/x86_64-w64-mingw32-dlltool OBJDUMP=/opt/mingw64/bin/x86_64-w64-mingw32-objdump RC=/opt/mingw64/bin/x86_64-w64-mingw32-windres –host=x86_64-w64-mingw32

CC=/opt/mingw32/bin/i686-w64-mingw32-gcc CXX=/opt/mingw32/bin/i686-w64-mingw32-g++ LD=/opt/mingw32/bin/i686-w64-mingw32-ld AR=/opt/mingw32/bin/i686-w64-mingw32-ar AS=/opt/mingw32/bin/i686-w64-mingw32-as NM=/opt/mingw32/bin/i686-w64-mingw32-nm STRIP=/opt/mingw32/bin/i686-w64-mingw32-strip RANLIB=/opt/mingw32/bin/i686-w64-mingw32-ranlib DLLTOOL=/opt/mingw32/bin/i686-w64-mingw32-dlltool OBJDUMP=/opt/mingw32/bin/i686-w64-mingw32-objdump RC=/opt/mingw32/bin/i686-w64-mingw32-windres –host=i686-w64-mingw32

ပြီးရင်တော့ ပုံမှန် Build လုပ်သလိုပဲ Make လုပ်လို့ရပါပြီ။ စိတ်ဝင်စားတယ်ဆိုရင် တစ်ခုခုကို Cross Compile လုပ်ကြည့်ပါ လွယ်လွယ်ကူကူဆိုရင် Curl ရဲ့ Source ကို Download လုပ်လိုက်ပါ ပြီးရင်တော့ အပေါ်မှာပြထားသလို 32 bits အတွက်ရယ် 64 bits အတွက်ရယ် Compile လုပ်ကြည့်ပါ curl.exe တွေကို Build လုပ်ပေးပါလိမ့်မယ် အဲဒါတွေကို Windows ပေါ်ကိုကူးသွားပြီး Execute လုပ်ကြည့်ပါ အလုပ်လုပ်ပါလိမ့်မယ်။ 64 bits ကို 32 bits Windows ပေါ်မှာစမ်းကြည့်မိရင်တော့ အလုပ်မလုပ်တာတွေ့ပါလိမ့်မယ်။ Linux ပေါ်မှာလည်း Exe files တွေအလုပ်လုပ်မလုပ် စမ်းကြည့်ချင်တယ်ဆိုရင် Wine Install လုပ်ထားရင်တော့ Exe တွေကိုတစ်ခါတည်း Execute လုပ်ပြီးစမ်းလို့ရပါတယ်။ အားလို့စိတ်ဝင်စားရင်တော့ စမ်းကြည့်နိုင်ပါတယ် ဘာအကျိုးထူးသလဲမေးရင်တော့ Source Code အလကားပေးရင်တောင် ကောင်းလွန်းပေမယ့် သုံးလို့မလွယ်တာတွေ ရှိတယ်လို့သိစေချင်တာပါ တကယ်လုပ်ကြည့်ရင် ရေးထားတဲ့ကုဒ်ကို Compile လုပ်ရတာကိုက မလွယ်ကူဘူးဆိုတာ နားလည်သွားပါလိမ့်မယ်။

Open Vim

Linux သုံးနေရင်တော့ အနည်းနဲ့အများကတော့ Terminal ကနေသုံးနေရတာပါပဲ အများအားဖြင့် ဆာဗာတွေကို Manage လုပ်နေရရင်တော့ Terminal ကမသုံးမဖြစ်ပါပဲ။ အဲဒီ့နေရာမှာ အမြဲပြဿနာဖြစ်နေရတာက Editor ပါ။ Vi သုံးရတာက နည်းနည်းခက်ပါတယ် Command တွေမမှတ်မိရင် အမြဲပြဿနာတက်ပါတယ်။ အဲဒီတော့ Vi ကိုလေ့ကျင့်ခန်းဆင်းချင်ရင် ကျူတိုရီရယ်တွေပါပါတယ် တစ်ခါတည်း Simulated Vi ပါလာတဲ့အတွက် လေ့ကျင့်ရတာ ပိုအဆင်ပြေပါတယ်။ Vi လေ့ကျင့်ခန်း ဆင်းချင်တဲ့လူတွေအတွက် Open Vim မှာလေ့ကျင့်ခန်း ဆင်းလို့ရပါတယ် စမ်းကြည့်မိတော့ အတော်လေးသဘောကျမိတယ်။ ကိုယ်တွေခေတ်က ဒါမျိုးသာတွေ့ခဲ့ရင် Vi ကနေမထွက်တတ်လို့ ကွန်ပျူတာကို မီးပိတ်စရာလို့ခဲ့မယ်မထင်ဘူး။

http://www.openvim.com/index.html