Project ‘padai’ – scripts to launch Tamil server instances

Over the years of my open-source development I have moved towards using more cloud computers for various reasons of convenience. However getting a cloud computer from one of the major providers like AWS, Azure etc. requires a lot of setup time to bring it to a usable state for Tamil software development.

Primarily for Tamil software development on Windows 10 (or later) is slightly more easier, compared to Linux/Unix machines, because basic Unicode font and rendering support works out of the box. However in Linux cloud-machines X-windows, Window manager, and desktop support is not common – let alone Tamil support!

So everytime to setup a cloud instance I had to spend a few hours tracking down the packages, installing the dependencies, running host of shell commands to ensure its all lined up to see Tamil text rendered correctly on the remote-screen. This would typically take away time I spend building binary packages for project Ezhil.

Knowing vaguely you can make this system administration and server conf tasks simplified using shell-scripts or tools like Fabric, I researched them earlier; then I asked in our Tamil software community from my Twitter account what could be the solution:


I got recommendations to use Ansible and build a Docker image for the server of interest from Shrinivasan (aside: Congratulations to Shrinivasan named as 2016 Tamil Computing award winner for his work on Tamil and Indian-language projects at WikiMedia foundation and Wikipedia!)

Now I figured my familiarity in bringing up machines using Python or shell-scripting could be useful in getting me off the ground right away – while I could find ways to get expertise on Docker or Ansible to help me out. So I put together all the scripts I used for bringing up Fedora/24 and Ubuntu/16 machines for Ezhil development.

The result is ‘Padai’ project –  currently two nice scripts to get you from basic IaaS server to a working Tamil script rendering computer for Ezhil development in 10-minutes for both Fedora and Ubuntu. Check it out here.

Looking forward for your support and sending us your pull-requests.


அல்கோரிதம் – அடுக்குகளை தலைகீழ் படுத்துவது எப்படி ?

Move 1,2,3 disks from peg #1 to peg #2, with peg #3 as intermediate. Move disk 4 from peg #1 to peg #4. Then move all disks from peg #2 to peg #3 using peg #1 as intermediate.

இந்த வாரம் அமெரிக்காவில் “long weekend” அதாவது மூன்று-நாள் வார விடுமுறை – காரணம் மே மதம் நான்காம் திங்கள் “Memorial day” என்கிற “அமெரிக்க போர்வீரர் நினைவு தினம்”. இதனை ஒட்டி சராசரி குடும்பங்கள் நாடெங்கும் உல்லாச பயணம், சுற்றுலா என்று செல்வது அமெரிக்க பண்பாடு. இந்த ஆண்டு எங்கள் வீட்டில் விருந்தினரை வரவேற்கிறோம் – பயணம் என்பது இந்த ஆண்டு எங்கள் விருந்திரனுக்கு மட்டுமே! சரி அப்போது ஒரு புதிய தரவமைப்பு பற்றி ஒரு blog post போடுவோம் என்று எழுத ஆரம்பித்தது இங்கே.

அடுக்கு (Stack) என்பது ஒரு மிக அடிப்படை கணினி நிரலாக்க கோட்பாடு. ஒரு அடுக்கு தரவமைப்பில் செய்யக்கூடிய நடவடிக்கைகள் ஆனது : மேல் நுழை (push), மேல் நீக்கு (pop) என்பது.

ஒரு அடுக்கை இப்படி (கீழ் கண்டபடி) உருவாக்கலாம்:

எ = அடுக்கு()
மேல்_நுழை( எ, "அ" )
மேல்_நுழை( எ, "ஆ" )

இது கணினியில் ஒரு அடுக்கு போலவே உருவெடுக்கும்,

   --> [ ஆ ]
       [ அ ]
அடுக்கு "எ" என்பதில் இரண்டு உருப்படிகள் உள்ளது; 
இதில் "மேல்" உருப்படி "ஆ" என்ற மதிப்பாகும்.

மேலும் இந்த அடுக்கில் மற்ற உயிரெழுத்துக்களை முழுதாக சேர்க்கலாம்:

மேல்_நுழை( எ, "இ" )
மேல்_நுழை( எ, "ஈ" )
மேல்_நுழை( எ, "உ")
மேல்_நுழை( எ, "ஊ")
மேல்_நுழை( எ, "எ")
மேல்_நுழை( எ, "ஏ")
மேல்_நுழை( எ, "ஐ")
மேல்_நுழை( எ, "ஒ")
மேல்_நுழை( எ, "ஓ")
மேல்_நுழை( எ, "ஔ")

கணினியில் இதன் தோற்றம் இப்படி இருக்கும்,

   --> [ ஔ ]
       [ ஓ ]
       [ ஒ ]
       [ ஐ ]
       [ ஏ ]
       [ எ ]
       [ ஊ ]
       [ உ ]
       [ ஈ ]
       [ இ ]
       [ ஆ ]
       [ அ ]
அடுக்கு "எ" என்பதில் பன்னிரண்டு உருப்படிகள் உள்ளது; 
இதில் "மேல்" உருப்படி "ஔ" என்ற மதிப்பாகும்.

நம்ம இங்கே ஆயுத எழுத்து “ஃ” என்பதை சேர்க்கவில்லை; உங்களுக்கு வேண்டுமானால் நீங்கள் சேர்த்து கொள்ளலாம்.

அடுக்கின் வரிசை மாற்றுவது எப்படி ?

இப்போது அடுக்கு “எ” இதன் வரிசை மாற்றுவது எப்படி ? ஒரு குவிப்பில் இருந்து “மேல் எடு” என்று செய்தால் என்ன விளைவு என்று முதல் படியாக பார்க்கலாம் – இதன் விளைவு மேல் உள்ள உருப்படியை அழிக்கும்.

மேல்_எடு( எ )
# தற்போது குவிப்பு 'எ' வில் 11 உருப்படிகள் மட்டும் இருக்கும்.
# ஏற்கெனவே உள்ள மேல் உருப்படி 'ஓ' அழிக்கப்பட்டது.
# புதிய மேல் உருப்படி 'ஓ' என்று ஆனது.

இப்போது இந்த அடுக்கின் நிலை,

 -->   [ ஓ ]
       [ ஒ ]
       [ ஐ ]
       [ ஏ ]
       [ எ ]
       [ ஊ ]
       [ உ ]
       [ ஈ ]
       [ இ ]
       [ ஆ ]
       [ அ ]
அடுக்கு : எ 

இப்போது அழித்த மேல் உருப்படியை புதிய அடுக்கு ‘ஏ’ வில் மேல் நுழைத்தால் – அதையே ‘எ’ என்ற அடுக்கில் உருப்படிகள் உள்ளவரை அதில் மேல் எடுத்து, ‘ஏ’ வில் மேல் நுழைத்துக்கொண்டே இருந்தால் என்ன ஆகும் ?
இதனை நிரல் படுத்தி பார்க்கலாம்.

ஏ  = அடுக்கு()
மேல்_நுழை( ஏ, "ஔ")
@( நீளம்( எ ) > 0 ) வரை 
    மதிப்பு = மேல்_எடு( எ )
    மேல்_நுழை( ஏ, மதிப்பு )    

தற்போது அடுக்கு ‘எ’-வின் நிலை காலியானது:

 -->[ ]
அடுக்கு : எ 

ஆனால் அடுக்கு ‘ஏ’-வின் நிலையோ – வரிசை மாற்றப்பட்டது!

-->[ அ ]
   [ ஆ ]
   [ இ ]
   [ ஈ ]
   [ உ ]
   [ ஊ ]
   [ எ ]
   [ ஏ ]
   [ ஐ ]
   [ ஒ ]
   [ ஓ ]
   [ ஔ ]
அடுக்கு : ஏ 

இந்த நிரல் துண்டு Python மொழியில் இப்படி எழுதலாம்,

# (C) 2017 Ezhil Language Foundation
# This code is shared under public domain
# Ref:
import tamil
import pprint

class Stack:
    def __init__(self): = list()

    def top(self):

    def __len__(self):

    def push(self,val):,val)

    def pop(self):
        val =
        return val

    def display(self):
a = Stack()
for letter in tamil.utf8.uyir_letters:

rev_a = Stack()

while len(a) > 0:
    val = a.pop()

print("Original stack => ")
print("Reversed stack => ")

இதன் வெளியீடோ கீழே உள்ளபடி:

[(11, 'ஆ'),
 (10, 'இ'),
 (9, 'ஈ'),
 (8, 'உ'),
 (7, 'ஊ'),
 (6, 'எ'),
 (5, 'ஏ'),
 (4, 'ஐ'),
 (3, 'ஒ'),
 (2, 'ஓ'),
 (1, 'ஔ')]
Original stack => 
Reversed stack => 
[(11, 'ஔ'),
 (10, 'ஓ'),
 (9, 'ஒ'),
 (8, 'ஐ'),
 (7, 'ஏ'),
 (6, 'எ'),
 (5, 'ஊ'),
 (4, 'உ'),
 (3, 'ஈ'),
 (2, 'இ'),
 (1, 'ஆ')]

மே 21 – எழில் மொழி பரிசோதனை வெளியீடு

1. எழில் மொழி பரிசோதனை வெளியீடு மே மாதம் 21-ஆம் நாள்  வெளியீடு செய்யப்பட்டது; இந்த முறை சென்ற மாதம் செய்த மேம்பாடுகள் அனைத்தும் ஒருங்கிணைந்து Windows 64-bit தளத்தில் இயங்கும் வகை செய்யப்பட்டது.
   கிடைக்கும் மேம்பாடுகள் :
   (அ) license உரிமம் தெரியும் வகை செய்யப்பட்டது.
   (ஆ) அமைப்புகள் (settings) சேமிக்கும் வகை வசதிகள்
   (இ) சென்ற பரிசோதனை வெளியீதில் பிழை திருத்தங்கள் 
   (ஈ) எழில் இயக்கியில் பிழை செய்திகள் தமிழாக்கம் செய்தல் 
2. இதனை இங்கு பெற்று நீங்கள் ஒரு சிறுவர் சிறுமிக்கோ அல்லது ஒரு பள்ளிக்கூடத்தில் எழில் மொழியை பற்றி பேசலாம், அல்லது உங்கள் சுய பயன்பாட்டிற்கும் நீங்கள் பெறலாம்.
3. பிழைகள் இருந்தால் மறுமொழி கூறவும்.

எழில் மொழி இடைமுகம் – மேம்பாடுகள் / முன்னோட்டம்


  1. apr11_ezhil_examplesபடத்தில் 177 எ. கா. நிரல்கள் கொண்ட எழுதி, எழில் நிரல் திருத்தி
    எழில் திருத்தி “எழுதி” யின் விவரங்கள் பக்கம்


எழில் : முதல் பக்கம் வடிவமைப்பு

முதல் பக்கம் என்றாலே கொசம் சிக்கல். பிள்ளையார் சுழி, தென்னாடுடைய சிவனுக்கும் வணக்கம் எனவும் பல வணங்குத்தல்கள் உள்ளன. ஆனால் தமிழ் மொழிக்கு சிறப்பான ஒரு சின்னத்தை கொண்டு எழில் மொழியில் முதல் பக்கம் அமைக்கப்பட்டது.

படம் 1: எழில் மொழி முதல் பக்கம் – செயலியில் தொடங்குதல்.
எழில் – தமிழ் கணினி மொழி

“தமிழில் நிரல்படுத்தி கணிமை பழகுவோம்!” என்பது புதிய கொள்கை

படம் சில மணி நேரம் முன்னேற வடிவமைக்கப்பட்டது. எந்த தமிழ் எழுத்துருக்கள் என்று சொல்லமுடியுமா உங்களால் ?





தமிழ் 99 விசை பலகை இடைமுகம் – Tamil99 keyboard interface for Ezhil

கணினியை பார்க்காத சிறுவன் எப்படி உள்ளீடு செய்வான் ? தமிழில் எழில் மொழி ஆர்வலர்கள் பாதிக்குமேல் நிரல் உள்ளீடு செய்வதற்கு தனி தமிழ் விசைப்பலகை இல்லை. இந்த பிரச்சினைகளை தீர்வு செய்ய ஏற்கனவே சில மூன்று பட்டை உள்ளீடு பட்டன்-களை கண்டோம். தற்போது முழு விசை பலகை (keyboard) இடைமுகம் ஒன்றை உருவாக்கி மேம்படுத்தி வருகிறேன்.

படம் 1: Tamil 99 keyboard interface for Ezhil editor; தமிழ் 99 விசைப்பலகை இடைமுகம் எழுதியில். 

உங்களுக்கு எதுவும் கருத்துள்ள பின்னூட்டங்கள் இருந்தால் தெரிவிக்கவும்.



எழில் தொகுப்பு – எண் புள்ளி ஒன்பது

எழில்எண்  புள்ளி ஒன்பது இன்று இரண்டு ஆண்டுகள் புள்ளி ஏழு ஏழு வெளியிட்ட பின் வருகிறது. முழு வரலாறு இங்கு.

பைதான் தொகுப்புகள் பெரும் தளத்தில் பெறலாம்: ‘pip install –upgrade ezhil’ என்று கொடுத்தாலே போதும்.

எழில் விரைவில் சில மாதங்களில் பொது பயன்பாட்டிற்கு தயார் நிலை அடைந்துவிடும்.