Search This Blog

Showing posts with label Freeware. Show all posts
Showing posts with label Freeware. Show all posts

Friday, October 27, 2017

Cross-platform C++ programming with wxWidgets

  1. နိဒါန်း
  2. Windows တွင်တပ်ဆင်ခြင်း
  3. Linux တွင်တပ်ဆင်ခြင်း
  4. Mac တွင်တပ်ဆင်ခြင်း
  5. အကိုးအကားများ

နိဒါန်း

wxWidgets က Windows ၊ Linux နဲ့ Mac OSX အစ​ ရှိ​တဲ့ ပ​လက်​ဖောင်း အမျိုး​မျိုး ပေါ်​မှာ GUI applications တွေ ရေး​ဖို့ အတွက် C++ library ပါ။ သူ​နဲ့ GUI code တွေ ရေး​ပြီး​ ရင် ပ​လက်​ဖောင်း အမျိုး​မျိုး ပေါ်​မှာ ကုဒ် ကို သိပ်​ပြင်​ စရာ မ​လို​ပဲ တန်း​ပြီး compile လုပ်၊ run လုပ်​လို့​ ရ​ပါ​တယ်။

wxWidgets ​က free လည်း​ပေး open source လည်း ​ဖြစ် တဲ့ software ပါ။ ကိုယ်​ပိုင် ဆော့​ဝဲ တွေ​ ထုတ်​မယ်​ ဆို​ရင် လည်း ဘာ​မှ ကန့်​သတ်​ချက်​ တွေ မ​ရှိ​ ပါ​ဘူး [wxW98]။ အဲဒါက Qt နဲ့ အဓိက ကွာခြားချက် ပါ။ Qt က LGPLv3 လိုင်စင် ကို free ပေးထားပြီး၊ ကိုယ်ပိုင် စီးပွားရေး အတွက် သုံးမယ် ဆိုရင် ကန့်သတ်ချက် တချို့ ရှိတာကြောင့် လိုင်စင် ဝယ်ဖို့ လိုကောင်း လိုနိုင် ပါတယ် [Qt17]။

Native platform ကို တတ်နိုင် သလောက် သုံးထား တာမို့ wxWidgets သုံးလို့ ရလာတဲ့ GUI တွေဟာ သုံးတဲ့ platform နဲ့ လိုက်ဖက်ပြီး ပင်ကို အမြင် အတိုင်း တသားထဲ ကျ တာကို ခံစား ရမှာပါ [wxW12]။ Standard C++ ကိုပဲ သုံးထားပြီး Qt တို့လို အထူး extension တွေ မသုံးထား တဲ့ အတွက် ရှုပ်ထွေးမှု နည်းတာ ကလည်း ကောင်းတဲ့ အချက် တစ်ခုပါ။

wxWidgets နဲ့ ရလာတဲ့ binary application တွေဟာ သေးငယ် ပေါ့ပါး တာမို့ embedded system တွေအတွက် အထူး သင့်တော် ပါတယ်။ နောက်တစ်ခါ library အရွယ်အစား တွေ ယှဉ်ရင်လည်း ဥပမာ အနေနဲ့ Qt library ကို တပ်ဆင်ရင် \(\approx 200\) MB လောက် အရွယ် ရှိပေမယ့် wxWidgets library က \(\approx 30\) MB လောက်ပဲ ယူပါတယ်။

wxWidgets က C++ အတွက် သာ မကပဲ python, perl, php, java, lua, lisp, erlang, eiffel, C# (.NET), BASIC, ruby နဲ့ javascript အတွက် တောင်မှ bindings [wxW15a] တွေ ရှိပါတယ်။ wxWidgets က တော်တော် ပြည့်စုံ ရင့်ကျက် တဲ့ GUI toolkits ဖြစ်ပြီး၊ utility classes လည်း အများကြီး ရှိတာမို့ ကောင်းမွန် သင့်တော် တဲ့ GUI toolkits အနေနဲ့ ညွှန်းဆို ချင်ပါတယ်။

wxWidgets ကို အသုံးပြုတဲ့ သူတွေ၊ အဖွဲ့အစည်းတွေ အများကြီး ရှိပြီး အဲဒီ အထဲမှာ လူသိများ တာတွေက NASA, AMD, Xerox, နဲ့ Open Source Applications Foundation (OSAF) တို့ ဖြစ်ပါတယ်။ ထင်ရှားတဲ့ wxWidgets applications တွေက AVG AntiVirus, Audacity, Filezilla, Code::Blocks, CodeLite တို့ ဖြစ်ပါတယ်။

Thursday, January 8, 2015

Photographing the Night Sky

ညအချိန် ကြယ်တွေကို ဓာတ်ပုံ ရိုက်ကြည့်ချင်နေတာ ကတော့ ကြာပြီ။ The Mountain ဆိုတဲ့ ဗွီဒီယိုလေးကို ကြည့်မိပြီး တော်တော် သဘောကျဖူးတယ်။ ဒါပေမယ့် စင်ကာပူမှာက ကောင်းကင် မကြည်လင်တဲ့ ညကများတယ်။ တစ်ခါက ကြယ်တွေကို နည်းနည်းမြင်ရလို့ ဆိုပြီး အိမ်နောက်နားက နည်းနည်းမှောင်တယ် ထင်တဲ့ဖက်ကို သွားရိုက်ကြည့်ဖူးတယ်။ အဲဒါတောင် အနီးအနားက လမ်းမီးတွေ၊ တိုက်တာတွေက ထွက်တဲ့ အလင်းရောင် light pollution တွေက များလွန်းလို့ ထွက်လာတဲ့ ပုံတွေက တစ်ပုံလုံး ဖွေးသာသွားတယ် ကြယ်တွေက ကောင်းကောင်းတောင် မပေါ်ဘူး။ ဒါနဲ့ စိတ်ပျက်ပြီး RAW ဖိုင်တွေကစ အကုန်ပြန်ဖျက်လိုက်တယ်။ လက်ရှိကင်မရာ Nikon D300s ကလည်း ငါးနှစ်လောက်တောင် ရှိပြီဆိုတော့ သူ့ရဲ့ DX Sensor လေးက နောက်ထွက်တဲ့ Sensor တွေနဲ့ စာရင် အလင်းရောင်အားနည်းတဲ့အခါမှာ noise တွေပိုများ လို့များလားပေါ့။ မန္တလေး နားက မြခနောက် တောင်ထိပ်လို နေရာမျိုးကို တက်ရိုက်ရရင်တော့ မဆိုးလောက်ဘူးလို့ စဉ်းစားမိတယ်။

Saturday, June 29, 2013

GNU Octave as an Alternative to MatLab

GNU OctaveFreeMat နဲ့ Scilab တို့က MATLAB လိုမျိုး တွက်ချက်မှုတွေ လုပ်ပေးနိုင်တဲ့ အလကားရတဲ့ free open source software တွေဖြစ်ပါတယ်။ လိုက်ရှာ ဖတ်ကြည့်တော့ GNU Octave က အကောင်းဆုံးလို့ ကြားတာနဲ့ သူ့ကို စက်ထဲမှာ ထည့်ပြီး စမ်းကြည့်တော့ တော်တော် သဘောကျ သွားပါတယ်။ GNU Octave ကို ဝင်းဒိုး ပေါ်မှာတင်ရတာ တော့ တော်တော်လွယ်ပါတယ်။ သူ့ရဲ့ Download page က ဖိုင်တွေကို ယူပြီး စက်ထဲမှာ folder တစ်ခု အနေနဲ့ ထုတ်ယူလိုက်ပါမယ်။ ပြီးရင် shortcut ဖိုင်ကို ကြိုက်တဲ့နေရာမှာ ထားပြီး သူ့ရဲ့ properties မှာ path နဲ့ icon ကို ပြင်ပေး လိုက်ရုံပါပဲ။ သူရဲ့ shortcut ကနေ Octave ကို ဖွင့်လိုက်ရင် အောက်က ပုံမှာ ပြထားတဲ့ အတိုင်း ကွန်မန်း ပေးလို့ရတဲ့ ဝင်းဒိုး ပွင့်လာပါမယ်။ အဲဒီမှာ MATLAB ကွန်မန်း တွေ တိုက်ရိုက် ရိုက်ထည့်ရင် လည်းရပါတယ်။

Friday, June 8, 2012

LaTeX Bibliography with TeXstudio

TeXstudio (အရင်နာမည် TexMakerX ၊ http://texstudio.sourceforge.net/) က LaTeX နဲ့စာရေးဖို့အတွက် ဆော့ဖ်ဝဲ အယ်ဒီတာ တစ်ခုပါ။ ပုံမှန်အားဖြင့် တော့ ပေပါ တစ်စောင် ယူလိုက်ပြီဆို သူ့အတွက် citation ကိုလဲ အဲဒီမှာပဲ BibTeX style နဲ့ အလွယ်တစ်ကူ ယူလို့ရပါတယ်။ ပြီးရင် အဲဒီရလာတဲ့ BibTeX entry ကို BibTeX database ဖိုင်တစ်ခု ဖန်တီးပြီး သိမ်းထားလို့ရပါတယ်။ BibTeX database ဖိုင်ရဲ့ extension က .bib ပါ။ TeXstudio မှာ ကိုယ့်ဟာကို BibTeX entry တစ်ခုဖန်တီးမယ် ဆိုရင်လဲ လွယ်ပါတယ်။ ဥပမာ Ref1.bib ဆိုပြီး BibTeX database ဖိုင်တစ်ခုကို ဖန်တီးပြီး menu က bibliography ကို ကလစ်နှိပ်ပါ။ နောက် ကိုယ့် ပေပါရဲ့ အမျိုးအစားကို နှိပ်လိုက်ရင် required fields တွေရော၊ optional fields တွေရော အကုန်ထည့်ပေးသွားမှာပါ။ အကယ်၍ optional fields တွေကို ဖယ်ချင်ရင်တော့ clean command ကိုနှိပ်ပြီး ရှင်းလို့ရပါတယ်။ အဲဒီထက်ပို လွယ်တာက တော့ BibTeX insert dialog ... ကို နှိပ်ပြီး ထည့််တာပါ။



New BibTeX entry ဆိုတဲ့ dialog လေးပေါ်လာရင် ကိုယ်လိုတာကို ရွေးထည့်ပြီး OK နှိပ်လိုက်ရုံပါပဲ။ စာရေးသူတွေ ရဲ့ နာမည် ကို ဖြည့်တဲ့ အခါ နာမည် တွေကြားမှာ and ဆိုတဲ့ စာလုံးနဲ့ ခြားပေးရပါမယ်။ အဲဒီ database ဖိုင်ကို ဖန်တီးပြီးရင် သူ့ကို ယူသုံးမယ့် TeX ဖိုင် တစ်ခုကို ဖန်တီးပါမယ်။ ဥပမာ TestBibTex.tex ဆိုပါတော့။ အဲဒီမှာ Ref1.bib ကို \bibliography{Ref1} ဆိုပြီး အောက်ကပုံအတိုင်း သုံးလို့ရပါတယ်။ ဒီနမူနာမှာတော့ အသုံးများတဲ့ ieeetr ဆိုတဲ့ စတိုင်ကို သုံးထားတဲ့ အတွက် အကိုးအကားတွေဟာ သူတို့ကို ကိုးကားထားတဲ့ အစဉ်အတိုင်း နံပါတ်တပ်၊ အစဉ်အတိုင်း ပေါ်လာမှာပါ။





ပုံမှန်အားဖြင့်တော့ မှန်ကန်တဲ့ output ဖိုင်တစ်ဖိုင် ထွက်လာအောင် LaTeX ကို အကြိမ်ကြိမ် run ပေးရပါတယ်။ (LaTeX ကို run ဖို့ MiKTeX ဒါမှမဟုတ် TeX Live ဆော့ဖ်ဝဲ တစ်ခုခုကို ကွန်ပျူတာထဲမှာ ထည့်ပြီးသား ရှိရပါမယ်။) ဥပမာ pdflatex ကိုသုံးပြီး run မယ်ဆိုရင်
အဆင့် ၁။ pdflatex
အဆင့် ၂။ bibtex
အဆင့် ၃။ pdflatex
အဆင့် ၄။ pdflatex
ဆိုပြီး လေးခါ run မှ ရပါတယ်။ TeXstudio မှာတော့ အဆင်ပြေတာ တစ်ခုက Quick Build လုပ်ဖို့ 'F1' တစ်ခါနှိပ် လိုက်ရုံနဲ့ နောက်ဆုံး မှန်ကန်တဲ့ output ဖိုင် ထွက်လာတဲ့ အထိ သူ့ဟာသူ လုပ်သွားတာပါ။ အကယ်၍ စာရေးသူ-ခုနှစ် ဆိုတဲ့ ပုံစံ အကိုးအကား ကို လိုချင်ရင်တော့ \usepackage{natbib} ကို အောက်မှာ ပြထားတဲ့ အတိုင်း အလွယ်တစ်ကူ သုံးနိုင်ပါတယ်။



နမူနာ ပြထားတဲ့ ဖိုင်တွေကို အောက်က လင့်ခ် တွေမှာ ဒေါင်းလုပ် လုပ်ယူနိုင်ပါတယ်။
TestBibTex.tex
TestNatbib.tex
Ref1.bib
အကိုးအကား တွေကို စီမံဖို့ တော့ ဆော့ဖ်ဝဲသုံးတာ ပိုအဆင်ပြေပြီး JabRef Reference Manager ကို သဘောကျပါတယ်။
အကိုးအကား။ http://en.wikibooks.org/wiki/LaTeX/Bibliography_Management

Thursday, December 30, 2010

Inkscape

Inkscape က Illustrator တို့၊ CorelDraw တို့ လိုမျိုး vector graphic editor တစ်ခုပါ။ ပိုကောင်းတာ တစ်ခုကတော့ Inkscape က အလကား ရနိုင်တဲ့ free software ဖြစ်တာပါပဲ။ Open source software လည်း ဖြစ်ပါတယ်။ သူ့ကို http://inkscape.org/ မှာ ယူလို့ရပါတယ်။ သူ့ကို ကြိုက်တာ တစ်ခုကတော့ graphics တွေကို pdf format အနေနဲ့ save လုပ်လို့ရတာပါပဲ။ အဲဒါ​ကြောင့် pdflatex သုံးပြီး pdf ဖိုင်တွေ ထုတ်တဲ့ အခါ image ဖိုင်တွေ သုံးတာနဲ့ စာရင် ပိုကောင်းတဲ့ graphic quality ကို ရနိုင်ပါတယ်။ သူတို့ဟာ Scalable Vector Graphics ဖြစ်တာမို့ magnify လုပ်ကြည့် ရင် တောင် bitmap image တွေလို ပြဿနာ မရှိပါဘူး။
အောက်မှာ နမူနာ အနေနဲ့ Inkscape ကို သုံးပြီး မြားခေါင်း ပါတဲ့ မျဉ်းကြောင်း တစ်ကြောင်း ဆွဲ ကြည့် ထားပါတယ်။ ၁။ Bezier Curves ကိုရွေးပါ။ မျဉ်းကြောင်းကို စဆွဲ ဖို့ ကလစ် နှိပ်ပြီး၊ မျဉ်းကြောင်း ကို အဆုံးသတ်ဖို့ double click နှိပ်ပါ။ (click တစ်ချက်ပဲ နှိပ်ပြီး enter key နှိပ်လည်း ရပါတယ်။) ၂။ Object menu မှာ ရှိတဲ့ Fill and Stroke... command ကိုနှိပ်ပါ။ (ဒါမှမဟုတ် ဘယ်ဘက်အောက်နားက Fill: သို့ Stroke: ကို နှိပ်လို့လည်း ရပါတယ်။) နောက် Stroke style tab ထဲက End Markers ကို arrow ပြောင်းပါ။ ၃။ မျဉ်းကြောင်း ရဲ့ အရောင် ကို Stroke paint tab ထဲမှာ ပြောင်းနိုင်ပါတယ်။ မြားခေါင်း ရဲ့ အရောင် ကို ပါ ပြောင်းဖို့ အတွက် Extensions->Modify Path->Color Markers to Match Stroke ကို နှိပ် နိုင် ပါတယ်။ သင်္ချာ သင်္ကေတ တွေ ထည့် ချင်ရင်တော့ ctrl+u ကို နှိပ်ပြီး ထည့်ချင်တဲ့ သင်္ကေတရဲ့ hexadecimal Unicode code point ကို ရိုက်ပြီး enter ကိုနှိပ်ပါ။

http://wiki.inkscape.org/wiki/index.php/FAQ
http://www.unicode.org/charts/PDF/U0370.pdf


Tuesday, August 18, 2009

SDCC - Small Device C Compiler

SDCC - Small Device C Compiler က အလကား ရနိုင်တဲ့ free open source C compiler ပါ။ သူက 8051 နဲ့ အခြား microcontroller အချို့အတွက်ပါ။ SDCC လို အလကား မဟုတ်ပဲ ပိုက်ဆံ ပေးဝယ်ရတဲ့ အခြား Keil တို့လို compiler တွေလဲ ရှိပါတယ်။ အဲဒီမှာ free evaluation version ကိုရနိုင်ပေမယ့် အစမ်းသဘော အတွက်ပဲ ရည်ရွယ်ပြီး code size ကို 2k byte ထက် ပိုသုံးလို့ မရအောင် ကန့်သတ်ထားပါတယ်။ SDCC ရဲ့ကောင်းတဲ့ အချက်ကတော့ ပိုက်ဆံ တစ်ပြားမှ မကုန်ပဲ အလကား ရနိုင်တာပါ။ ဒီမှာ ပြောမှာ ကတော့ SDCC manual ကို အကျဉ်းချုံး ထုတ်နုတ်ပြော တာပါ။

Installing
http://sdcc.sourceforge.net/ ကိုသွားပြီး setup program ကို download လုပ်နိုင်ပါတယ်။ နောက် setup program ကို Run ပါ။

Testing the SDCC Compiler
နောက် command prompt ကိုသွားပြီး compiler အလုပ် လုပ်မလုပ် စမ်းကြည့်ဖို့ "sdcc -v" ကို enter လုပ်ပါ။ SDCC ကသူ့ရဲ့ ဗားရှင်း နံပါတ်ကို reply ပြန်တာ ကို တွေ့ ရပါလိမ့် မယ်။

Example C Program
အောက် ပါ နမူနာ program ကို စိတ်ကြိုက် ASCII editor တစ်ခုခု သုံးပြီး ရိုက်ပါ။ ထို့နောက် led.c အမည်ဖြင့် သိမ်းပါ။ Eclipse အစရှိတဲ့ development IDE တွေသုံးလို့ လဲရပါတယ်။ အဲဒီ အကြောင်း ကြုံရင် ပြောပါမယ်။ ဒီနမူနာ က 8051 microcontroller ရဲ့ P3.4 pin ကိုဆက်သွယ်ထား တဲ့ LED ကို မှိတ်တုပ် မှိတ်တုပ် အဖွင့် အပိတ် လုပ်ပေးဖို့ ပါ။
#include<8052.h>
void main()
{
int i;
while(1)
{
P3_4=0;   //Output 0
for(i=0;i<30000;i++);  //delay loop
P3_4=1;   //Output 1
for(i=0;i<30000;i++);  //delay loop
}
}


Compiling and Getting Hex File
command prompt မှာ ဖိုင် led.c ရှိတဲ့ နေရာကို သွားပြီး "sdcc led.c" ကို enter လုပ်ပါ။ အားလုံး အဆင်ပြေရင် အမှား မတက်ပဲ led.ihx ဆိုတဲ့ဖိုင် ထွက်လာပါမယ်။ "dir" ကို enter လုပ်ပြီး အဲဒီဖိုင် ထွက်မထွက် ကြည့်နိုင်ပါတယ်။ နောက် သင့်ရဲ့ chip ထဲကို download လုပ်ဖို့ သင့်တော်တဲ့ intel hex file ရအောင် "packihx led.ihx>led.hex" ကို enter လုပ်ပါ။ ထွက်လာတဲ့ led.hex ကို သုံးလို့ ရပါပြီ။

Projects with Multiple Source Files
SDCC က တစ်ကြိမ်မှာ တစ်ဖိုင် ပဲ compile လုပ်ပေးနိုင်ပါတယ်။ ဥပမာ main.c blink.c ဆိုတဲ့ ဖိုင်တွေရှိ တဲ့ project ကို စမ်းဖို့ အောက်ပါ အတိုင်း ရိုက်ထည့်ပြီး ဖိုင် များကို ဖန်တီးပါ။
//File name: main.c
#include "blink.h"
void main()
{
while(1)
{
toggle();
delay();
}
}


//File name: blink.c
#include <8052.h>
#include "blink.h"
void toggle()
{
P3_4^=1;
}
void delay()
{
int i;
for(i=0;i<30000;i++); //delay loop
}


//File name: blink.h
void toggle();
void delay();

main() function မပါတဲ့ ဖိုင်များကို "sdcc -c blink.c" ဆိုတဲ့ command သုံးပြီး သပ်သပ် compile လုပ်ပါ။ နောက် main() function ပါတဲ့ ဖိုင်ကို နောက်ဆုံးမှ "sdcc main.c blink.rel" ဆိုတဲ့ ပုံစံ အတိုင်း compile လုပ်နိုင်ပါတယ်။ main.ihx ဆိုတဲ့ ဖိုင်ထွက်လာမှာ ဖြစ်ပြီး ထုံးစံ အတိုင်း main.hex ကို ရယူ အသုံးပြု နိုင်ပါတယ်။