TechWire

Category - Programming

මෘදුකාංග සංවර්ධනයේ වැදගත්කම

Blue high-tech tone of cityscape connected line with wifi sign, technology concept, internet of things conceptual

අපගේ සමාජය වඩා හොඳ ජීවන තත්වයක් කරා ගමන් කරන විට, බොහෝ කර්මාන්ත යල් පැන යාමට පටන් ගෙන තිබේ. ස්වයං රියපැදවීමේ කාර් සහ පූර්ණ ස්වයංක්‍රීයකරණයෙන් යුත් ලෝකයක, අපි පෞරාණික යන්ත්‍ර සහ දෘඩාංග සංවර්ධනය හා නඩත්තු කිරීම කෙරෙහි අඩු අවධානයක් යොමු කරයි. අපි දත්ත කෙරෙහි වැඩි අවධානයක් යොමු කරන අතර ඒවා ක්‍රියාත්මක කරන මෘදුකාංග සැලසුම් කරයි. නව ලෝකය බොහෝ දේ ක්‍රියාත්මක වන්නේ මෘදුකාංග මත වන අතර, ව්‍යාපාරයේ සිට නිෂ්පාදන දක්වා සහ සෞඛ්‍ය සේවා දක්වා සෑම කර්මාන්තයකම පාහේ මෘදුකාංග භාවිතා කරයි.

ඇත්ත වශයෙන්ම, Covid-19 වසංගතය පවතින මේ සමයේදී, මෘදුකාංග සංවර්ධනය යනු නිරුපද්‍රිතව නොනැසී පවතින එක් කර්මාන්තයක් බව පෙනේ. මෘදුකාංග සංවර්ධනය අපේ ලෝකය තුළ ඇති කර ඇති බලපෑම අපට පෙනේ. නමුත් මෘදුකාංග සංවර්ධනය වැදගත් වන්නේ මන්දැයි අපට සැබවින්ම වැටහෙනවාද?

මෘදුකාංග සංවර්ධනය යනු කුමක්ද?

Software Development

සරලව කිවහොත්, මෘදුකාංග සංවර්ධනය යනු නිපුණ ක්‍රමලේඛකයින් විසින් පරිගණක ක්‍රමලේඛිත මෘදුකාංග නිර්මාණය කිරීම හා නඩත්තු කිරීම ය. සාමාන්‍යයෙන් අතින් සිදුකරන විට වැඩි කාලයක් ගතවන විවිධ අරමුණු හෝ ක්‍රියාවලීන් සාක්ෂාත් කර ගැනීමට මෙම වැඩසටහන් භාවිතා කරයි. මෙම මෙවලම්, සමහර රැකියා වලට අදාල කාර්යයන් ස්වයංක්‍රීය කිරීමෙන් ඵලදායිතාව වැඩි දියුණු කිරීමට උපකාරී වන අතර එමඟින් වෙනත් කාර්යයන් සඳහා කාලය විවෘත වේ. මෘදුකාංග සංවර්ධනය සඳහා පරිගණක වැඩසටහන්කරණය පිළිබඳ විශේෂ දැනුමක් අවශ්‍ය වන අතර එය සිදු කරනු ලබන්නේ මෘදුකාංග ක්‍රමලේඛකයෙකු හෝ මෘදුකාංග ඉංජිනේරුවෙකු විසිනි.

මෘදුකාංග වර්ග දෙකක් තිබේ. ඒවා නම් යෙදුම් මෘදුකාංග සහ පද්ධති මෘදුකාංග යි. යෙදුම් මෘදුකාංග (පොදු අරමුණු මෘදුකාංග) බාගත කළ ස්ථානය නොසලකා එකම ආකාරයකින් භාවිතා කරයි. Firefox සහ Chrome මේ සඳහා උදාහරණ වේ. පද්ධති මෘදුකාංග යනු සාමාන්‍යයෙන් එක් පුද්ගලයෙකුට හෝ සමාගමකට ආවේණික වූ විශේෂිත කාර්යයක් සඳහා සාදන ලද මෘදුකාංගවන අතර එය සාමාන්‍යයෙන් වෙනත් තැනක භාවිතා කළ නොහැක. MacOS, Linux සහ Microsoft windows මේ සඳහා උදාහරණවේ.

මෘදුකාංග සංවර්ධනය කිරිමේ වගකීම

Software Development

Covid -19 වසංගතය නිසා මහා පරිමාණ වශයෙන් කර්මාන්ත වසා දැමීම් ලොව පුරා සිදුවෙමින් පවතිනවා . වර්තමානයේ Amazon Prime, Grubhub, Zoom, Google Drive වැනි ජංගම යෙදුම් සහ වෙනත් මෘදුකාංග බොහෝ මිනිසුන්ගේ ජීවනාලිය ලෙස ක්‍රියා කරයි. අතීතයේ මහා පරිමාණ වසා දැමීම් වලට භාජනය වූ පෙර පරම්පරාවලට වඩා හොඳින් ක්‍රියා කිරීමට මෙම යෙදුම් නව පරම්පරාවට ඉඩ ලබා දී ඇත.

වර්ධනය වන පාරිභෝගික ප්‍රජාවට වඩා හොඳ සේවාවක් ලබා දීම සඳහා මෙම සේවාවන් යාවත්කාලීන කිරීම, වැඩිදියුණු කිරීම සහ පුළුල් කිරීම අවශ්‍ය වේ. මෘදුකාංග සංවර්ධනය දුරස්ථව කළ හැකි අතර වසංගත කාලයේදී සාපේක්ෂව අඛණ්ඩව සේවාවන් සැපයීමට ඉඩ සලසයි. තව දුරටත් මෘදුකාංග සංවර්ධනය කිරීමත් සමඟ අනාගත වසංගත හෝ ඒ හා සමාන සිදුවීම් වලදී අපට වඩා හොඳ සේවාවක් ලබා දීමට හැකි වෙයි.

මෘදුකාංග සංවර්ධනයේ අවශ්‍යතාවය

අප දැනට පවත්නා Covid-19 වසංගත තත්ත්වයෙන් සාමාන්‍ය තත්වයට මාරු වනවිට , මෘදුකාංග සංවර්ධනයේ අවශ්‍යතාවය ද ඉහළ යනු ඇත. ඇත්ත වශයෙන්ම, San Francisco හි ප්‍රකාශයට පත් කරන ලද වාර්තාවකින් පෙන්නුම් කර ඇත්තේ වසරක් වැනි කෙටිකාලයක් තුළ සමස්ත යෙදුම් ස්ථාපනය සහ භාවිතයන් සැලකිය යුතු ලෙස වැඩි වී ඇති බවයි. විශේෂයෙන්, Grub-Hub වැනි ආහාර බෙදා හැරීමේ යෙදුම් 2019 වර්ෂයට සාපේක්ෂව 71% කින් භාවිතය ඉහළ ගොස් තිබේ. නව ස්ථාපනයන් ද 102% කින් ඉහළ ගොස් ඇති අතර, මෙම යෙදුම්වල වෙළඳපල ක්‍රමයෙන් ව්‍යාප්ත වෙමින් පවතින බව පෙන්නුම් කරයි.යෙදුම්වල මෙම අධික භාවිතය ආහාර සහ බෙදාහැරීම් වලට පමණක් සීමා නොවී විනෝදාස්වාදය සපයන යෙදුම් වලටද අදාල වේ.

Software Development

ඇත්ත වශයෙන්ම, බොහෝ දෙනෙකුට නිවසේ රැඳී සිටීමට බල කෙරී ඇති හෙයින්, සමාගම් වලට තම සේවකයින් දුරස්ථව වැඩ කිරීමට උදව් කරන යෙදුම් භාවිතය ද වැඩි වී තිබේ. මෙම මෘදුකාංග, ව්‍යාපාර සඳහා ජීවනාලියක් ලෙස ක්‍රියා කරන අතර ආහාර බෙදා හැරීම සහ විනෝදාස්වාද යෙදුම් සාමාන්‍ය ජනයාගේ ජීවනාලිය ලෙස ක්‍රියා කරයි.

ජංගම දුරකථන යෙදුම් හා ස්වයංක්‍රීයකරණය ඇතුළු නව යුගයකට අප ක්‍රමයෙන් සංක්‍රමණය වන විට, අප මෘදුකාංග මත යැපීම අඛණ්ඩව වර්ධනය වනු ඇත. අපගේ ජීවිත කැපී පෙනෙන ලෙස යහපත් කිරීමට යෙදුම්වලට හැකියාවක් ඇති බැවින් මෙය අනිවාර්යයෙන්ම ඍණාත්මක දෙයක් නොවේ. එවැනි තාක්‍ෂණික දැනුමක් ඇති ලෝකයක දියුණුවට පත්වීම සඳහා ව්‍යාපාර විසින් මෘදුකාංග සංවර්ධනය සඳහාද විශාල වශයෙන් මුදල් ආයෝජනය කරනු ඇත.

ජනප්‍රියම PHP Frameworks

Backend development කිව්වම ගොඩක් අයට මුලින්ම මතකයට නැගෙන්නේ PHP language එක. Java, .Net, Ruby වගේ ගොඩක් languages අතරින් ඉගෙන ගන්න වගේම භාවිතය පහසු නිසා PHP ගොඩක් ජනප්‍රියයි. නමුත් Node.js හි ආගමනය එක්ක PHP වලට තිබුණ තැන යන්තම් අඩුවෙලා වගෙත් පේන්න තිබෙනවා. නමුත් PHP development කරන developers ලා තාමත් ඕන තරම් ඉන්නවා.

Read More

Facebook AI creates its own language?

fb-ai

“The World is a small place”. You may have heard this phrase many times in many places. But is it true? The world or “earth” in a more planetary aspect, may smaller than Saturn or Andromeda Galaxy, but still, it’s not that small. It’s a large civilization of 7 billion inhabitants. One pillar that holding the stability and sustainability of this community is communication. So how we communicate? The answer to that simple question is “using languages”. The linguistic research estimates that there are 5000 to 7000 languages in this world. But how many languages do you know? Then translators become handier in communication between people.

fb-wit

Today Facebook is a social networking service with 2 billion monthly active users. To enhance the networking and communication capabilities of the platform, Facebook comes with a new translation engine fueled with artificial intelligence. This time Facebook does not amaze us with AI capabilities that can create own language, but they try to assist with our human languages.

Facebook performs about 4.5 billion translations daily. The new system expected to do these translations with higher accuracy. The old system used simpler phrase-based machine translation models. The phrase-based system translated sentences word by word and usually made meaningless phrases. But in the neural network, it considers the whole sentence once. For that, Facebook uses machine learning functionality called long short-term memory network.

This system is capable of learning things by analyzing enormous amounts of data. The Facebook engineers say that their technique is nine times more efficient than other neural network-based methods. Christopher Manning, a professor at Stanford University said that using the Facebook’s neural system “You can have parallel computation on different parts of a sentence, You don’t have to push things along word by word.”

One more interesting thing is, Facebook achieved to perform translations with their new system by using lesser computing power. This means it can do more with its available data center hardware and other resources. Sometimes this can be a small advantage, but in some scenarios, it can become a huge leap over other translation systems.

fb_ai_chat

The Facebook’s Applied Machine Learning team is planning to make the software engine open-source. So you and I also can contribute to the system in the near future. This is one step ahead towards the initiative of internet’s biggest companies, to freely share their AI research. We can forecast that translation will evolve far more quickly across the Internet, with the help of other tech giants like Google, Microsoft, and Baidu, not only Facebook.

 

 

ඔබටත් පරිගණක ඉංජිනේරුවෙක් වීමට අවශ්‍යද?

හැම අධුනිකයෙකුටම තියෙන ප්‍රශ්නය තමයි මම කොතනින්ද පටන්ගන්නේ කියල. කොහොමද Programmer කෙනෙක්, Software engineer කෙනෙක් වෙන්නෙ කියන එක. මේක අපි කොටස් පහකින් හොයල බලමු.

  • Programming field එකක් තෝර ගැනීම
  • Programming language එකක් තෝර ගැනීම
  • ඉගෙන ගැනීමේ මාධ්‍යයක් තෝර ගැනීම
  • Platform එකක් තෝර ගැනීම
  • IDE එකක් තෝර ගැනීම

මේ වචන ගැන දන්නෙ නැත්තම් කලබල වෙන්න එපා. ඉස්සරහට තේරුම් ගන්න පුළුවන් ඒවා ගැන.

Read More

What is ReactJS

මේ දවස්වල ජනප්‍රිය මාතෘකාවක් තමයි  ReactjJS කියලා කියන්නේ. කාලයක් තිස්සේ ඉහල user rating එකක් තිබුණු Angular, BackboneJS, KnockoutJS, EmberJS වගේ web framework වලට තරඟයක් දෙන්න පුළුවන් වුනු අලුත් technology එකක් විදියටත් ReactJS හඳුන්වන්න පුළුවන්.

Read More

Get to know about Ultrasonic Sensor HC-SR04

Ultrasonic Sensor HC-SR04 is used to measure distance. We can find precise distance to an object from the sensor, or can used to detect when something is within range of the sensor. It can measure distance with high accuracy from 2cm to 400 cm.  Its operation is not affected by darkness or light .Because it uses sound to measure distance.

Ultrasonic range finder measure distance by emitting a pulse of ultrasonic sound that travels through the air until it hits an object. It measure the time of the sound pulse which travel forward & back to the sensor when the pulse hits the object. Then it sends an electrical signal to the Arduino with information about the time that sonic pulse traveled.

Ultrasonic range finder has 2 transducers.

  • Transmitting transducer
  • Receiving transducer

sensor

Read More

University of Moratuwa wins world THIRD at IEEEXtream programming competition

IEEEXtreme is a global challenge in which teams of IEEE Student members, supported by an IEEE Student Branch, advised and proctored by an IEEE member, compete in a 24-hour time span against each other to solve a set of programming problems. Competition is conducted by IEEE (Institute of Electrical and Electronics Engineers), which is the world’s largest professional association dedicated to advancing technological innovation and excellence for the benefit of humanity.

This is an annual competition IEEE student branch of University of Moratuwa participates each year and surely secures a set of places. This year the competition occurred for the 8th consecutive year, and our budding engineers competed with the world to bring down five places in the first hundred, including the 3rd place which is the highest percentage of any participating university.

Team Oops’ from UOM with members Thilina Sameera Ambagahawaththa, Nipuna Randunu Samarasekara and Varuna Jayasiri proudly bagged the global 3rd place competing with 2000+ other teams. ‘Team Ewoks’ from UOM secured the rank 15 as well.

Congratulations all the winners and thanks for bringing the glory to the country.

Untitled-3

Check some example questions of this competition

An Introduction to Android Mobile Game Development – Part 1

We all love mobile gaming and it has become a booming market today. Majority of the smart device users use their device for gaming. Most probably you might be a mobile gamer too. But, have you ever wanted to make your own mobile game?  And still don’t have a clue where to start?  Then this article will guide you for a quick start. We will be focusing on the Android platform in this article.

How mobile games differ from PC games

Though they have a less processing power compared to modern personal computers, smart devices are considered as small computers. Some smart devices are capable of running high quality 3D games.

Games themselves and developing games for mobile differs from conventional PC game development in several ways.

Simple concept

Most of the mobile games are built on a simple concept and a storyline. Think of the popular game “Angry Birds”. The player has to destroy different structures using a slingshot. Another example is “Cut the Rope” where the objective is feeding a monster with candy. These games became popular because of the simple design and easy to pick up playing mechanics.

 Simple controls

Mobile games use easy to use controls such as touch, tap, swipe, tilt etc. These are actions which are familiar to all smart device users. So it makes the learning curve of a game less steeper.

 Development team size and development time.

Conventional PC/Console game studios use hundreds of individuals for the development of product. But most of the mobile games are made by small teams, sometimes by a single person.

Usually a mobile game can be developed in few weeks to few months (This can change depending on the project). But most of the PC games take years to complete (Eg. Skyrim V took 3.5 years).

Larger audience

The global smartphone users are expected to reach 1.75 billion in 2014. In most of the developed countries higher percentage of the population owns a smartphone than owns a personal computer. 2013 became a lousy year for PC sales but the mobile devices are on the rise. Another thing to consider is that most of the casual gamers tend to play game on a mobile device instead of a PC. Because of these reasons mobile games have a larger potential audience.

Available game engines and frameworks for Android game development

Andengine

andengine

 

 

 

 

 

 

Link: http://www.andengine.org/

Programming language: Java

Price : Free

Supported Platforms: Android

Pros

This is a free and open source game engine with an active user community. There’s a lot of tutorials and sample code out there to get started.

Cons 

The Major drawback of Andengine is that it lacks an official API reference . And it supports only for Android. You can make only 2D games using Andengine.

Cocos2D-x

cocos2D

Link: http://www.cocos2d-x.org/

Programming Language: C++

Price: Free

Supported platforms: Android, iOS, Windows Phone 8, Windows 8

 Pros 

This is a free and open source game engine so you can modify it according to your needs. And you can publish games on several platforms using the same code base. Cocos2d-x is one of the best engines out there when it comes to the performance.

Cons

Beginners may find the learning curve quite steep.

Libgdx

libgdx

 

 

 

Link: http://libgdx.badlogicgames.com/index.html

Programming Language: Java

Price: Free

Supported Platforms: Windows, Mac, Linux, Android, iOS, BlackBerry and Web

Pros

This is a free and open source cross platform game engine. This game engine performs well compared to other java game engines out there.

Cons

Beginners may find the learning curve quite steep.

GameMaker

Gamemaker

 

 

 

 

Link: https://www.yoyogames.com/studio

Programming Language: Game Maker Language (GML)

Price: Depends on the version (A free version is also available)

Supported Platforms: Windows, Mac, Linux, Android, iOS, Windows Phone, BlackBerry and Web

Pros

The GameMaker is one of the easiest game development tools to use. You can just drag and drop objects into the scene and apply pre defined behaviors to those objects. You can make more advanced things using the GameMaker’s own scripting language GML. This is widely used by hobbyists and professionals both.

 Cons

The free version of GameMaker comes with some limitations. You can’t publish on mobile platforms using the free version. The paid versions are pretty expensive compared to the other solutions out there. You have to learn a new language just for GameMaker.

 Corona SDK

coronalabs
Link: http://coronalabs.com

Programming Language: Lua

Price: Depends on the version (A free version is also available)

Supported Platforms: Android, iOS

Pros

If you need to program a complete game from scratch without dragging and dropping, this is the easiest solution you have. The language used is Lua and it’s very easy to learn. You can even publish for iOS and Android using the free version of the Corona SDK. It is documented well and provides sample apps to get started easily.

Cons

The free version of the Corona SDK comes with some limitations. You can’t implement in-app purchases etc. Another drawback is that you can only make 2D games using the Corona SDK.

Unity3D

unity3D

 

 

 

 

Link: http://unity3d.com/unity

Programming Languages: C#, Unity Script, Boo

Price: Free and a Pro version is available

Supported Platforms: Windows, Mac, Linux, Android, iOS, Windows Phone, BlackBerry , Flash,

XBOX, Playstation etc.

Pros

Unity’s main advantage is its cross platform capability. You can publish your games on every popular platform out there. Unity3D has a strong asset store where you can buy 3d models, scripts, sounds etc. And another huge advantage of using unity is that you can publish your game on most of the platforms even if you use the free version. However, when you reach a particular revenue limit you have to buy the Pro version.

Cons

Not observed.

Why I recommend Corona SDK and Unity3D

I’ve been using Corona SDK for a year and I believe it’s a good game engine to start game development for Android. Because of the very active community of developers and resources out there, you can get started easily. You can program the game in Lua instead of C++ or Java and this makes the development process fast. And it gives you the native performance. If you need to implement in app purchases in your game you have to buy the Basic version of the SDK which costs 16$ per month.

One disadvantage of Corona is that you can’t make 3D games using it. That’s where Unity3D comes into the action. Actually the latest version of Unity3D officially supports 2D game development. Unity3D is a game engine with an editor which allows you to create levels, manage game assets etc. It supports several languages such as C#, Unity Script (A modified version of Javascript) and Boo. Unity 3D is easy to learn but I recommend using something like Corona SDK because it improves the programming skills and gives you a better understanding of how things are tied together in a game. After getting some experience in game programming you can choose something like Unity3D.

Await Part 2 of this series!

The Javascript Revolution – Part I

Scott Hanselman, the popular blogger from Microsoft, asks: if you had to start over, what technologies would you learn in 2014? It’s both an interesting and a timely question, when the software world is overflowing with new languages, programming paradigms, platforms and frameworks. Which ones to choose? Not only the newcomers to the industry, but the veterans as well seem to be in doubt about what language or technology he should master next.

Hanselman has an interesting answer to the question:

Learn one language you can build large systems with AND also learn Javascript.

That one language might be Ruby, Python, C#, Java, Scala or anything from the myriad of other choices available. That choice may depend on where you work at and your personal preferences. But Hanselman also goes on to declare that learning Javascript a must for everybody. But let us stop for a moment and ponder: why Javascript?

A decade back, Javascript was only a scripting language used to add fancy animations and validate inputs in websites. It gained popularity since it ran in the browser (as opposed to in the server) and almost all web browsers supported it. But that’s all Javascript was good for back then.

Then in 2007, Jeff Atwood, co-founder of Stack Overflow, proposed what was to be known as ‘Atwood’s Law‘:

Any application that can be written in Javascript, will eventually be written in Javascript.

It was a pretty radical statement, even in 2007.

Fast forward to 2014, we see Javascript everywhere. From client-side and server-side web apps to mobile and desktop apps, Javascript is being used almost everywhere. Never has any other programming language been able to become omnipresent to this extent.

Though Javascript started as a client-side language for webapps, it has now conquered the server-side as well with Node.js. Node is to Javascript what’s Rails is to Ruby. Many tech giants like Paypal, LinkedIn and Yahoo have begun to ditch their previous (and successful) web frameworks in favor of Node.

Nodejs

Projects like node-webkit have enabled developers to write desktop apps in Javascript. The effort is still in its early stages, but the community is ever more enthusiastic and are actively working to see a light in this horizon. As for mobile apps, a considerably large percentage of apps for Android and iOS are now being written using Phonegap. Ubuntu is pushing the developers to write more and more native apps in HTML5 that would work on both desktop and mobile devices.

It has made its way to hardware programming as well. Tessel is an upcoming microcontroller (similar to Arduino and Raspberry Pi) that runs on Javascript. There are other projects like Espruino that are already in the market.

One bitter point of Javascript used to be its low performance record. It was okay for short bursts of calculations and event handling, but when it came to the nitty-gritty of complex problems Javascript always lagged behind. But the tide has turned with the advent of asm.js, an optimized subset of Javascript, which can be generated by transpiling C or C++ code. This has paved way to create FPS games, database engines, and even video converters that would run in your web browser!

Keep calm and learn Javascript

Has Javascript become the one language to rule them all? We wouldn’t know yet. In the coming weeks, we’ll explore how and why Javascript has become successful in each of these domains in detail. Stay tuned!