Sunday, December 20, 2020
Wednesday, December 9, 2020
Java Programming sinhala tutorial - Array Sorting - Part 22
Array Sorting
Bubble Sort
Selection Sort
Saturday, December 5, 2020
Java Programming sinhala tutorial - Array Search - Part 21
Array Search
Binary Search
Sunday, November 29, 2020
Docker - Part 1 Introduction
අද මං කියලා දෙන්නම් container management service එකක් වෙන Docker ගැන. ඊට කලින් අපි බලමු මොනවද මේ container management service කියන්නෙ කියලා.
Container management කියන්නෙ ගොඩක් software containers, organizing කරලා ඒවා එකට එකතු කරන්වා හෝ replace කරන වැඩේට. එතකොට මොනවද මේ container එකක් කියන්නෙ. container එකක් කියන්නෙ සරලවම කිව්වොත් aplications එකක් run කරන්න ඕනි වෙන code,files සහ එහි සියලු libraries, dependencies store කරන සම්මත software unit එකක්. එම නිසා application එකක් එක operating system ඉදලා තවත් operating system එකක වේගයෙන් හා විශ්වාසදායක ලෙස ක්රියාත්මක වෙන්න පුලුවන්. Linux සහ Windows මත පදනම් වූ applications සඳහා මේ container ලබා ගත ගන්න පුලුවන්. ඒ වගේම computer එකේ තියෙන infrastuctures නොසලකා container එකකට සෑම විටම එකම ආකාරයකින් ක්රියාත්මක වෙන්නත් පුලුවන්.
Container management කිර්රිම තුලින් අපිට enterprise applications deploy කිර්ර්ම් හා update කිර්ර්ම වේගවත් ලෙස කරගන්න පුලුවන්. Kubernetes සහ Docker Swarm කියන්නෙ Container management software වලට උදාහරණ දෙකක්.
හරී.
දැන් බලමු මොකක්ද මේ Docker කියන්නෙ කියලා. මං කලින් කිව්වා වගේ Docker කියන්නෙ container management service එකක්. Docker පාවිච්චි කරලා developersලට පුලුවන් application ලේසියෙන්ම develop කරලා ඕනිම තැනක deploy කරන්න පුලුවන් වෙන විදියට containers වලට ඇතුල් කරන්න.
Docker පාවිච්චි කිරීමෙන් ලැබෙන වාසි
1. Container මගින් application develop කිර්ර්මට operating system එක තුල වැය වෙන ඉඩ අවකාශ ප්රමාණය අඩු කරයි.
2. Container භාවිතා කිරීම මගින් විවිධ පද්දති(units) හරහා development, QA සහ Operations කිරීමේ හැකියාව ලැබේ.
3. ඕනිම computer space එකක් තුල Docker container එකක් deploy කරන්න පුලුවන්. ඒ කියන්නෙ physcial machine එකක නැත්තන් virthual machine එකක එහෙමත් නැත්තන් computer cloud space එකක උනත් Docker container deploy එකක් කරන්න පුලුවන්.
4. Docker container එකක් සැහැල්ලු ඒ කිව්වෙ lightweighted නිසා අපිට ලේසියෙන් size එක අඩු වැඩි කර ගන්න පුලුවන්. පාවිච්චි කරන්න ලේසී.
Docker වල සංරචක(components)
- Docker for Mac − Docker containers, Mac OS තුල run කිර්ර්මට උදව් වේ.
- Docker for Linux − Docker containers, Linux OS තුල run කිර්ර්මට උදව් වේ.
- Docker for Windows − Docker containers, Windows OS තුල run කිර්ර්මට උදව් වේ.
- Docker Engine − Docker images සහ Docker containers සෑදීමට උදව් වේ.
- Docker Hub − විවිධ වර්ගයේ Docker images ඉදීරිපත් කිර්ර්මට උදව් වේ.
- Docker Compose − Docker containers ගොඩක් පාවිච්චි කරලා appliation define කිර්ර්මට උදව් වේ.
මේ post එකෙන් මම ඔයාලට කියලා දුන්නෙ Docker කියන්නෙ මොකක්ද කියන එක. එහෙනම් ඊලග post වලදි Docker ගැන වැඩි විස්තර කතා කරමු.
--පියුමි--
Wednesday, November 25, 2020
Java Programming sinhala tutorial - For-each Loop - Part 20
Java Flow Control "For-each Loop"/ "Enhance Loop"
Tuesday, November 24, 2020
JMonkey Engine - How to apply texture
Sunday, November 22, 2020
Java Programming sinhala tutorial - Passing an Array into a Method - Part 19
Passing an Array into a Method
Method Call by Value vs Reference
Sunday, November 15, 2020
Java Programming sinhala tutorial - Java Arrays - Part 18
Java Arrays
Memory Representation of an Array
Define an Array
- int[] x; ➤ variable stack එකෙහි x නමින් reference variable එකක් නිර්මාණය වන අතර එහි reference address එක store වේ.
- x = new int[5]; ➤ memory heap එක තුල variable/ element 5 ක් නිර්මාණය වන අතර x නම් reference variable එක තුල ඊට අදාල reference value එක store වේ.
- x[0] = 25; ➤ x නම් reference variable එකෙන් refer කරනු ලබන address එකට අදාල 0 index එක තුල 25 value එක store වේ.
Array Reference & Constructions
Default Value
Array Length
Array Index Error
Array Reference Type
Casting
Maximum array size and array index types
- උපරිම array size එක int data type එකෙහි උපරිම අගය වේ. (2,147,483,647)
- Array size එක සෘණ අගයක් ලෙස ලබා දුන් විට සෘණ ලකුණ නොසලකා එය ධන අගයක් ලෙස සලකයි.
- Array size එක සදහා දශම සංඛ්යා ලබා දිය නොහැක. ඊට හේතු වනුයේ array size එකෙහි ප්රමාණයට අනුව array එකට අදාල variable නිර්මාණය කරන නිසාය.
- Array index සදහා byte, short, int, char data type පමණක් භාවිතා කල හැකි අතර long, float, double, boolean data type භාවිතා කල නොහැක.
Friday, November 6, 2020
Java Programming sinhala tutorial - Recursive Method Calling - Part 17
Recursive Method Calling
Wednesday, November 4, 2020
Game Development - JmonkeyEngine - Adding GUI
මේ පහළ තියෙන්නේ interactive scientific demo එකක්. එකේ 3D viewer එකක් UI ඇතුලේ embed කරලා තියෙනවා.
Code city - Used to visualize source code 3 dimensionally. |
SimpleApplication හි කැමරාව mouse එක මගින් වෙනස් කරන්න පුළුවන් උනත් swing application එකක එහෙම කරන්න බැහැ. ඒ නිසා වෙනම camera action එක define කරන්න ඕනේ මේ වගේ.
public void simpleInitApp() {
// activate windowed input behaviour flyCam.setDragToRotate(true); // Set up inputs and load your scene as usual ... }
මෙහිදී වෙනස් වන ප්රධාන දෙය වන්නේ main() method එකය. අපි සුපුරුදු විදියට start() method එක call කරන්නේ නැහැ. ඒ වෙනුවට අපි Runnable() එකක් හදල ඒකින් Swing jFrame නිර්මාණය කරනවා.ඊට පස්සේ jFrame එකට Canvas එකක් එකතු කරලා startCanvas() මගින් game එක run කරනවා.
Swing එක thread-safe නැහැ. ඒ නිසා canvas එකත් up-to-date නැහැ. ඒ නිසා තමයි runnable එකක් යොදා ගන්නේ.
public static void main(String[] args) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { // ... see below ... } }); }
Here in the run()
method, we start the jME application, create its canvas, create a Swing frame, and add everything together.
com.jme3.system.AppSettings වලින් Swing panel එකේ size එක specify කරන්න ඕනේ.
AppSettings settings = new AppSettings(true); settings.setWidth(640); settings.setHeight(480);
මෙහෙම තමයි canvas එකක් හදන්නේ. com.jme3.system.JmeCanvasContext මගින් canvas එක configure කරගන්න පුළුවන්. setSystemListener() මගින් canvas එක අදාළ events(creation , destroy, update) Listener එකට යැවීම සිදු කරනවා..
SwingCanvasTest canvasApplication = new SwingCanvasTest();
canvasApplication.setSettings(settings);
canvasApplication.createCanvas(); // create canvas!
JmeCanvasContext ctx = (JmeCanvasContext) canvasApplication.getContext();
ctx.setSystemListener(canvasApplication);
Dimension dim = new Dimension(640, 480);
ctx.getCanvas().setPreferredSize(dim);
මෙහම තමයි jFrame එකක් හදන්නේ.
JFrame window = new JFrame("Swing Application");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ඊට පස්සේ JPanel එකක් create කර ගන්න ඕනේ JFrame එක ඇතුලේ.
JPanel panel = new JPanel(new FlowLayout()); // a panel
// add all your Swing components ...
panel.add(new JButton("Some Swing Component"));
...
// add the JME canvas
panel.add(ctx.getCanvas());
JPanel එක JFrame එක ඇතුලට add කරන්නේ මේ විදියට.
window.add(panel);
window.pack();
window.setVisible(true);
application එක start කරන්න startCanvas() method එක call කරන්න ඕනේ.
canvasApplication.startCanvas();
මේ පහල තියෙන්නේ full code එක. එහෙනම් compile කරලා බලන්නකෝ. මොනවා හරි ප්රශ්නයක් ආවොත් පහලින් comment එකක් දාන්න. එහෙනම් මම නවතිනවා. අලුත් පෝස්ට් එකකින් හම්බ වෙමු.
package hello3D.test;
import com.jme3.app.SimpleApplication;
import com.jme3.material.Material;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Box;
import com.jme3.math.ColorRGBA;
import com.jme3.app.LegacyApplication;
import com.jme3.system.AppSettings;
import com.jme3.system.JmeCanvasContext;
import com.jme3.util.JmeFormatter;
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.concurrent.Callable;
import java.util.logging.ConsoleHandler;
import java.util.logging.Handler;
import java.util.logging.Logger;
import javax.swing.*;
public class HelloWorld extends SimpleApplication {
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
// create new JME appsettings
AppSettings settings = new AppSettings(true);
settings.setWidth(640);
settings.setHeight(480);
// create new canvas application
HelloWorld canvasApplication = new HelloWorld();
canvasApplication.setSettings(settings);
canvasApplication.createCanvas(); // create canvas!
JmeCanvasContext ctx = (JmeCanvasContext) canvasApplication.getContext();
ctx.setSystemListener(canvasApplication);
Dimension dim = new Dimension(640, 480);
ctx.getCanvas().setPreferredSize(dim);
JFrame window = new JFrame("Swing Application");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new FlowLayout()); // a panel
// add all your Swing components ...
panel.add(new JButton("Some Swing Component"));
// add the JME canvas
panel.add(ctx.getCanvas());
window.add(panel);
window.pack();
window.setVisible(true);
canvasApplication.startCanvas();
}
});
}
@Override
public void simpleInitApp() {
// activate windowed input behaviour
flyCam.setDragToRotate(true);
// Set up inputs and load your scene as usual
Box b = new Box(1, 1, 1); // create cube shape
Geometry geom = new Geometry("Box", b); // create cube geometry from the shape
Material mat = new Material(assetManager,
"Common/MatDefs/Misc/Unshaded.j3md"); // create a simple material
mat.setColor("Color", ColorRGBA.Blue); // set color of material to blue
geom.setMaterial(mat); // set the cube's material
rootNode.attachChild(geom); // make the cube appear in the scene
}
}
Monday, November 2, 2020
Blender Sinhala Tutorial - Doughnut - Part1
Blender වල ගොඩක් famous tutorial එකක් තමයි මේ doughnut එකක් හදන එක. ඉතින් මමත් එක ඔයාලට කියලා දෙන්න හිතුව.
මුලින් ඉතින් blender open කරගන්න. ඊට පස්සේ එන cube එක delete button එක ප්රෙස් කරල ඩිලීට් කරගන්න. ඊට පස්සේ Shift + A click කරන්න. ඊට පස්සේ එන menu එකෙන් Torus තෝරන්න. මොකද doughnut එකකට සමාන shape එකක් තියෙන්නේ torus එකට නිසා.
Torus මෙන්න මේ ආකාරයෙන් තමයි දිස් වෙන්නේ.
දකුණු පැත්තෙ තියෙන menu එකේ ඔයාට පේනවා major radius සහ minor radius කියලා දෙකක් තියේනවා.
Major radius කියන්නේ torus එකේ පිටින්ම තියන රවූමේ radius එක.
Major radius = 1.24 |
Minor radius කියන්නේ torus එකේ ඇතුළතින් තියන රවූමේ radius එක.
ඉතින් මේ radius දෙක වෙනස් කරමින් doughnut එකක shape එකක් create කරගන්න. මේ තියෙන්නෙ මං හදාගත්ත ඩෝනට් එක.