Monday, September 26, 2016

File Change Listener Implementation Using Java


package com.pritom.kumar;

import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
import java.util.List;

/**
 * Created by pritom on 25/09/2016.
 */
public class ChangeFileListener {
    public static void main(String[] args) throws Exception {
        startWatch("C:/tmp");
    }

    public static void startWatch(String location) {
        try {
            Path directory = Paths.get(location);
            println("Start listening directory: [" + location + "]");
            final WatchService watchService = directory.getFileSystem().newWatchService();
            directory.register(watchService, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY);

            while (true) {
                final WatchKey watchKey = watchService.take();
                handleWatchTriggered(location, watchKey);
                boolean valid = watchKey.reset();
                if (!valid) {
                    throw new Exception("Watcher failed for listen [" + location + "]");
                }
            }
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private static void handleWatchTriggered(String location, WatchKey watchKey) throws Exception {
        List<WatchEvent<?>> watchEventList = watchKey.pollEvents();
        for (WatchEvent watchEvent : watchEventList) {
            if (watchEvent.kind() == StandardWatchEventKinds.ENTRY_CREATE) {
                println("Created: [" + watchEvent.context().toString() + "]");
                File fileCreated = new File(location + "/" + watchEvent.context().toString());
            }
            else if (watchEvent.kind() == StandardWatchEventKinds.ENTRY_DELETE) {
                println("Deleted: [" + watchEvent.context().toString() + "]");
            }
            else if (watchEvent.kind() == StandardWatchEventKinds.ENTRY_MODIFY) {
                println("Modified: [" + watchEvent.context().toString() + "]");
            }
        }
    }

    public static void println(Object o) {
        System.out.println("" + o);
    }
}

Friday, September 23, 2016

MySQL list all foreign key and other constraint names


SELECT  TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, 
        REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME

FROM    INFORMATION_SCHEMA.KEY_COLUMN_USAGE

WHERE   REFERENCED_TABLE_SCHEMA = 'database_name'

Sunday, September 11, 2016

Python parse xml


import sys
import xml.etree.ElementTree as ET

class XmlParser:
    def fixAttrs(self, attrs, c):
        nattrs = {}
        for attr in attrs:
            nattrs[self.buildXmlnsKey(attr, c)] = attrs[attr]
        return nattrs

    def buildXmlnsKey(self, tagtxt, tcounter):
        done = False
        if not tagtxt.startswith("{"):
            return tagtxt
        #print 'Search for: ', tagtxt, ' in ', tcounter
        if self.nsmap.has_key(str(tcounter)):
            nslmap = self.nsmap[str(tcounter)]
            #print 'nslmap-->', nslmap
            for obj in nslmap:
                if done is False:
                    for key in obj.keys():
                        kstr = '{' + key + '}'
                        #print 'key--->', key, ', --->', kstr
                        if tagtxt.startswith(kstr) and done is False:
                            done = True
                            kval = obj[key]
                            #print 'need to replace to: ', kval
                            if len(kval):
                                tagtxt = tagtxt.replace(kstr, kval+':', 1)
                            else:
                                tagtxt = tagtxt.replace(kstr, '', 1)

        if done is False and tcounter > 0:
            tcounter = tcounter - 1
            return self.buildXmlnsKey(tagtxt, tcounter)
        return tagtxt
                        

    def xmlToDict(self, node, dictclass = None):
        if dictclass is None:
            dictclass = {}
        self.ncounter = self.ncounter + 1
        if len(node):        
            if node.attrib:
                #print node.attrib
                dictclass['<<attr>>'] = self.fixAttrs(node.attrib, self.ncounter);            
            for child in node:
                tagtxt = self.buildXmlnsKey(child.tag, self.ncounter)
                newItem = self.xmlToDict(child)
                #tagtxt = child.tag
                if dictclass.has_key(tagtxt):
                    if type(dictclass[tagtxt]) is type([]):
                        dictclass[tagtxt].append(newItem)
                    else:
                        oldItem = dictclass[tagtxt];
                        dictclass[tagtxt] = [];
                        dictclass[tagtxt].append(oldItem);
                        dictclass[tagtxt].append(newItem);
                else:
                    dictclass[tagtxt] = newItem
        else:
            if node.text is None:
                text = ''
            else:
                text = node.text.strip()

            
            if node.attrib:
                #print fixAttrs(node.attrib, ncounter)
                dictclass['<<attr>>'] = self.fixAttrs(node.attrib, self.ncounter)
                dictclass['<<value>>'] = text;
            else:
                dictclass = text;

        return dictclass

    def printDic(self, dic, pos = None):
        if pos is None:
            pos = 0
        for key in dic.keys():
            #print 'key--->', key
            if dic[key] is None:
                print self.getLenStr(pos), key, ''
            elif type(dic[key]) is type({}):
                npos = pos + 1
                print self.getLenStr(pos) + str(key), '{'
                self.printDic(dic[key], npos)
                print self.getLenStr(pos) + '}'
            elif type(dic[key]) is type([]):
                npos = pos + 1
                print self.getLenStr(pos) + str(key), '['
                self.printList(dic[key], npos)
                print self.getLenStr(pos) + ']'
            else:
                print self.getLenStr(pos) + str(key), ': ', dic[key]

    def printList(self, dic, pos = None):
        if pos is None:
            pos = 0
        lindex = -1
        for obj in dic:
            lindex = lindex + 1            
            if obj is not None:
                if type(obj) is type({}):
                    print self.getLenStr(pos) + str(lindex)+'. {'
                    npos = pos + 1
                    self.printDic(obj, npos)
                    print self.getLenStr(pos) + '}'
                elif type(obj) is type([]):
                    print self.getLenStr(pos) + str(lindex)+'. ['
                    npos = pos + 1
                    self.printList(obj, npos)
                    print self.getLenStr(pos) +']'
                else:
                    print self.getLenStr(pos), str(lindex)+'.', obj

    def getLenStr(self, pos):
        sstr = ''
        while pos > 0:
            sstr = sstr + '   '
            pos = pos - 1
        return sstr

    def __init__(self, fileLocation):
        self.location = fileLocation;

    def parse(self):
        tree = ET.parse(self.location)
        root = tree.getroot()
        self.nsmap = {}
        self.lcounter = 0

        for event, elem in ET.iterparse(self.location, events=('start', 'end', 'start-ns', 'end-ns')):
            if event == 'start-ns':
                #print 'start-ns', lcounter
                a, b = elem
                if b is not None and len(b):
                    #print "A-->", a, ", B-->" , b
                    scounter = self.lcounter + 0
                    if not self.nsmap.has_key(str(scounter)):
                        self.nsmap[str(scounter)] = []
                        self.nsmap[str(scounter)].append({'http://www.w3.org/XML/1998/namespace': 'xml'});
                    self.nsmap[str(scounter)].append({b: str(a)})
            elif event == 'start':
                #print 'start', lcounter
                if not self.nsmap.has_key(str(self.lcounter)) and self.nsmap.has_key(str(self.lcounter - 1)):
                    #print 'exist: ', nsmap[str(lcounter - 1)]
                    self.nsmap[str(self.lcounter)] = self.nsmap[str(self.lcounter - 1)];
                self.lcounter = self.lcounter + 1       

        self.ncounter = 0
        self.dic = self.xmlToDict(root)
        self.dic = {self.buildXmlnsKey(root.tag, 0): self.dic}
        return self.dic;

if __name__ == "__main__":
    xmlObj = XmlParser('xml7.xml');
    theXmlDictionary = xmlObj.parse()
    xmlObj.printDic(theXmlDictionary);

Suppose you have the xml as file:


<?xml version="1.0"?>
<lib:library
    xmlns:lib="http://eric.van-der-vlist.com/ns/library"
    xmlns:hr="http://eric.van-der-vlist.com/ns/person">
    <lib:book id="b0836217462" available="true">
        <lib:isbn>0836217462</lib:isbn>
        <lib:title xml:lang="en">Being a Dog Is a Full-Time Job</lib:title>
        <hr:author id="CMS">
            <hr:name>Charles M Schulz</hr:name>
            <hr:born>1922-11-26</hr:born>
            <hr:dead>2000-02-12</hr:dead>
        </hr:author>
        <lib:character id="PP">
            <hr:name>Peppermint Patty</hr:name>
            <hr:born>1966-08-22</hr:born>
            <lib:qualification>bold, brash and tomboyish</lib:qualification>
        </lib:character>
        <lib:character id="Snoopy">
            <hr:name>Snoopy</hr:name>
            <hr:born>1950-10-04</hr:born>
            <lib:qualification>extroverted beagle</lib:qualification>
        </lib:character>
        <lib:character id="Schroeder">
            <hr:name>Schroeder</hr:name>
            <hr:born>1951-05-30</hr:born>
            <lib:qualification>brought classical music to the Peanuts strip</lib:qualification>
        </lib:character>
        <lib:character id="Lucy">
            <hr:name>Lucy</hr:name>
            <hr:born>1952-03-03</hr:born>
            <lib:qualification>bossy, crabby and selfish</lib:qualification>
        </lib:character>
    </lib:book>
    <Purchase>
        <PurchaseId>AAAAA</PurchaseId>
        <PurchaseType>ONLINE</PurchaseType>
    </Purchase>
    <Purchase>
        <PurchaseId>BBBBB</PurchaseId>
        <PurchaseType>OFFLINE</PurchaseType>
    </Purchase>
    <Purchase paid='True'>
        <Purchase age='30'>
            <Purchase>HMM 1</Purchase>
            <Purchase>HMM 2</Purchase>
        </Purchase>
    </Purchase>
</lib:library>

Output would be like this:

lib:library {
   Purchase [
      0. {
         PurchaseId :  AAAAA
         PurchaseType :  ONLINE
      }
      1. {
         PurchaseId :  BBBBB
         PurchaseType :  OFFLINE
      }
      2. {
         <<attr>> {
            paid :  True
         }
         Purchase {
            <<attr>> {
               age :  30
            }
            Purchase [
                0. HMM 1
                1. HMM 2
            ]
         }
      }
   ]
   lib:book {
      hr:author {
         <<attr>> {
            id :  CMS
         }
         hr:name :  Charles M Schulz
         hr:born :  1922-11-26
         hr:dead :  2000-02-12
      }
      <<attr>> {
         available :  true
         id :  b0836217462
      }
      lib:title {
         <<attr>> {
            xml:lang :  en
         }
         <<value>> :  Being a Dog Is a Full-Time Job
      }
      lib:isbn :  0836217462
      lib:character [
         0. {
            <<attr>> {
               id :  PP
            }
            hr:name :  Peppermint Patty
            hr:born :  1966-08-22
            lib:qualification :  bold, brash and tomboyish
         }
         1. {
            <<attr>> {
               id :  Snoopy
            }
            hr:name :  Snoopy
            hr:born :  1950-10-04
            lib:qualification :  extroverted beagle
         }
         2. {
            <<attr>> {
               id :  Schroeder
            }
            hr:name :  Schroeder
            hr:born :  1951-05-30
            lib:qualification :  brought classical music to the Peanuts strip
         }
         3. {
            <<attr>> {
               id :  Lucy
            }
            hr:name :  Lucy
            hr:born :  1952-03-03
            lib:qualification :  bossy, crabby and selfish
         }
      ]
   }
}

Friday, September 9, 2016

An educational story according to workers & managers in an organization

āĻāĻ• āĻĻেāĻļে āĻ›িāĻ˛ো āĻāĻ• āĻĒিāĻĒā§œা। āĻ¸ে āĻĒ্āĻ°āĻ¤িāĻĻিāĻ¨ ā§¯āĻŸাā§Ÿ āĻ…āĻĢিāĻ¸ে āĻĸুāĻ•āĻ¤ো। āĻ¤াāĻ°āĻĒāĻ° āĻ•াāĻ°ো āĻ¸āĻ™্āĻ—ে āĻ¸āĻŽā§Ÿ āĻ¨āĻˇ্āĻŸ āĻ¨া āĻ•āĻ°ে āĻ¸āĻ™্āĻ—ে āĻ¸āĻ™্āĻ—ে āĻ•াāĻœে āĻŦāĻ¸ে āĻ¯েāĻ¤।
āĻ¸ে āĻ¯ে āĻĒāĻ°িāĻŽাāĻŖ āĻ•াāĻœ āĻ•āĻ°āĻ¤, āĻ¤াāĻ¤ে āĻ•োāĻŽ্āĻĒাāĻ¨িāĻ° āĻ‰ā§ŽāĻĒাāĻĻāĻ¨ āĻšāĻ¤ো āĻĒ্āĻ°āĻšুāĻ° āĻāĻŦং āĻāĻ° āĻĢāĻ˛ে āĻ¸ে āĻ†āĻ¨āĻ¨্āĻĻেāĻ° āĻ¸āĻ™্āĻ—েāĻ‡ āĻœীāĻŦāĻ¨ āĻ¨িāĻ°্āĻŦাāĻš āĻ•āĻ°āĻ¤।
āĻ“āĻ‡ āĻ…āĻĢিāĻ¸েāĻ° āĻ¸িāĻ‡āĻ“ āĻ¸িংāĻš āĻ…āĻŦাāĻ• āĻšā§Ÿে āĻĻেāĻ–āĻ¤, āĻāĻ‡ āĻĒিঁāĻĒā§œাāĻŸি āĻ•োāĻ¨ো āĻ§āĻ°āĻ¨েāĻ° āĻ¸ুāĻĒাāĻ°āĻ­িāĻļāĻ¨ āĻ›াā§œাāĻ‡ āĻĒ্āĻ°āĻšুāĻ° āĻ•াāĻœ āĻ•āĻ°āĻ›ে। āĻ¸িংāĻš āĻ­াāĻŦāĻ˛, āĻĒিঁāĻĒā§œাāĻ•ে āĻ¯āĻĻি āĻ•াāĻ°āĻ“ āĻ¸ুāĻĒাāĻ°āĻ­িāĻļāĻ¨ে āĻĻেāĻ“ā§Ÿা āĻšā§Ÿ, āĻ¤াāĻšāĻ˛ে āĻ¸ে āĻ†āĻ°āĻ“ āĻŦেāĻļি āĻ•াāĻœ āĻ•āĻ°āĻ¤ে āĻĒাāĻ°āĻŦে।
āĻ•ā§ŸেāĻ• āĻĻিāĻ¨েāĻ° āĻŽāĻ§্āĻ¯েāĻ‡ āĻ¸িংāĻš āĻāĻ•āĻŸি āĻ¤েāĻ˛াāĻĒোāĻ•াāĻ•ে āĻĒিঁāĻĒā§œাāĻ° āĻ¸ুāĻĒাāĻ°āĻ­াāĻ‡āĻœাāĻ° āĻšিāĻ¸েāĻŦে āĻ¨িā§ŸোāĻ— āĻĻিāĻ˛। āĻ¸ুāĻĒাāĻ°āĻ­াāĻ‡āĻœাāĻ° āĻšিāĻ¸েāĻŦে āĻāĻ‡ āĻ¤েāĻ˛াāĻĒোāĻ•াāĻŸিāĻ° āĻ›িāĻ˛ āĻĻীāĻ°্āĻ˜āĻĻিāĻ¨েāĻ° āĻ…āĻ­িāĻœ্āĻžāĻ¤া, āĻ†āĻ° āĻ¸ে āĻĻুāĻ°্āĻĻাāĻ¨্āĻ¤ āĻ°িāĻĒোāĻ°্āĻŸ āĻ˛িāĻ–āĻ¤ে āĻĒাāĻ°āĻ¤।
āĻ¤েāĻ˛াāĻĒোāĻ•াāĻŸি āĻĒ্āĻ°āĻĨāĻŽেāĻ‡ āĻ¸িāĻĻ্āĻ§াāĻ¨্āĻ¤ āĻ¨িāĻ˛, āĻāĻ‡ āĻ…āĻĢিāĻ¸ে āĻāĻ•āĻŸি āĻ…্āĻ¯াāĻŸেāĻ¨āĻĄেāĻ¨্āĻ¸ āĻ¸িāĻ¸্āĻŸেāĻŽ āĻĨাāĻ•া āĻ‰āĻšিāĻ¤।
āĻ•ā§ŸেāĻ• āĻĻিāĻ¨েāĻ° āĻŽāĻ§্āĻ¯েāĻ‡ āĻ¤েāĻ˛াāĻĒোāĻ•াāĻ° āĻŽāĻ¨ে āĻšāĻ˛ো, āĻ¤াāĻ° āĻāĻ•āĻœāĻ¨ āĻ¸েāĻ•্āĻ°েāĻŸাāĻ°ি āĻĻāĻ°āĻ•াāĻ°, āĻ¯ে āĻ¤াāĻ•ে āĻ°িāĻĒোāĻ°্āĻŸ āĻ˛িāĻ–āĻ¤ে āĻ¸াāĻšাāĻ¯্āĻ¯ āĻ•āĻ°āĻŦে। … āĻ¸ে āĻāĻ•āĻŸা āĻŽাāĻ•ā§œāĻ¸াāĻ•ে āĻ¨িā§ŸোāĻ— āĻĻিāĻ˛ āĻāĻ‡ āĻ•াāĻœে āĻ¯ে āĻ¸āĻŦ āĻĢোāĻ¨āĻ•āĻ˛ āĻŽāĻ¨িāĻŸāĻ° āĻ•āĻ°āĻŦে, āĻ†āĻ° āĻ¨āĻĨিāĻĒāĻ¤্āĻ° āĻ°াāĻ–āĻŦে।
āĻ¸িংāĻš āĻ–ুāĻŦ āĻ†āĻ¨āĻ¨্āĻĻ āĻ¨িā§Ÿে āĻĻেāĻ–āĻ˛ āĻ¯ে āĻ¤েāĻ˛াāĻĒোāĻ•া āĻ¤াāĻ•ে āĻĒ্āĻ°āĻ¤িāĻĻিāĻ¨েāĻ° āĻ•াāĻœেāĻ° āĻšিāĻ¸াāĻŦ āĻĻিāĻš্āĻ›ে āĻ†āĻ° āĻ¸েāĻ—ুāĻ˛ো āĻŦিāĻļ্āĻ˛েāĻˇāĻŖ āĻ•āĻ°āĻ›ে āĻ—্āĻ°াāĻĢেāĻ° āĻŽাāĻ§্āĻ¯āĻŽে। āĻĢāĻ˛ে āĻ–ুāĻŦ āĻ¸āĻšāĻœেāĻ‡ āĻ‰ā§ŽāĻĒাāĻĻāĻ¨েāĻ° āĻ§াāĻ°া āĻ¸āĻŽ্āĻĒāĻ°্āĻ•ে āĻ§াāĻ°āĻŖা āĻ¨েāĻ“ā§Ÿা āĻ¯াāĻš্āĻ›ে āĻāĻŦং āĻ¸িংāĻš āĻ¸েāĻ—ুāĻ˛ো āĻŦোāĻ°্āĻĄ āĻŽিāĻŸিংā§Ÿে ‘āĻĒ্āĻ°েāĻœেāĻ¨্āĻŸেāĻļāĻ¨’ āĻ†āĻ•াāĻ°ে āĻĒেāĻļ āĻ•āĻ°ে āĻŦাāĻšāĻŦা āĻĒাāĻš্āĻ›ে।
āĻ•িāĻ›ুāĻĻিāĻ¨েāĻ° āĻŽāĻ§্āĻ¯েāĻ‡ āĻ¤েāĻ˛াāĻĒোāĻ•াāĻ° āĻāĻ•āĻŸি āĻ•āĻŽ্āĻĒিāĻ‰āĻŸাāĻ° āĻ“ āĻ˛েāĻœাāĻ° āĻĒ্āĻ°িāĻ¨্āĻŸাāĻ° āĻĒ্āĻ°ā§ŸোāĻœāĻ¨ āĻšāĻ˛ো āĻāĻŦং āĻāĻ—ুāĻ˛ো āĻĻেāĻ–āĻ­াāĻ˛েāĻ° āĻœāĻ¨্āĻ¯ āĻ†āĻ‡āĻŸি āĻĄিāĻĒাāĻ°্āĻŸāĻŽেāĻ¨্āĻŸ āĻ—āĻ āĻ¨ āĻ•āĻ°āĻ˛। āĻ†āĻ‡āĻŸি āĻŦিāĻļেāĻˇāĻœ্āĻž āĻšিāĻ¸েāĻŦে āĻ¨িā§ŸোāĻ— āĻĒেāĻ˛ āĻŽাāĻ›ি।
āĻ†āĻŽাāĻĻেāĻ° āĻ•āĻ°্āĻŽী āĻĒিঁāĻĒā§œা, āĻ¯ে āĻĒ্āĻ°āĻ¤িāĻĻিāĻ¨ āĻ…āĻĢিāĻ¸ে āĻāĻ¸ে āĻĒ্āĻ°āĻšুāĻ° āĻ•াāĻœ āĻ•āĻ°ে āĻŽāĻ¨েāĻ° āĻ¸ুāĻ–ে āĻ—াāĻ¨ āĻ—াāĻ‡āĻ¤ে āĻ—াāĻ‡āĻ¤ে āĻŦাāĻ¸াā§Ÿ āĻĢিāĻ°āĻ¤, āĻ¤াāĻ•ে āĻāĻ–āĻ¨ āĻĒ্āĻ°āĻšুāĻ° āĻĒেāĻĒাāĻ° āĻ“ā§ŸাāĻ°্āĻ• āĻ•āĻ°āĻ¤ে āĻšā§Ÿ, āĻ¸āĻĒ্āĻ¤াāĻšেāĻ° āĻšাāĻ° āĻĻিāĻ¨āĻ‡ āĻ¨াāĻ¨া āĻŽিāĻŸিংā§Ÿে āĻšাāĻœিāĻ°া āĻĻিāĻ¤ে āĻšā§Ÿ।
āĻ¨িāĻ¤্āĻ¯āĻĻিāĻ¨ āĻāĻ¸āĻŦ āĻাāĻŽেāĻ˛াāĻ° āĻ•াāĻ°āĻŖে āĻ•াāĻœে āĻŦ্āĻ¯াāĻ˜াāĻ¤ āĻ˜āĻŸাā§Ÿ āĻ‰ā§ŽāĻĒাāĻĻāĻ¨ āĻ•āĻŽāĻ¤ে āĻ˛াāĻ—āĻ˛, āĻ†āĻ° āĻ¸ে āĻŦিāĻ°āĻ•্āĻ¤ āĻšāĻ¤ে āĻ˛াāĻ—āĻ˛।
āĻ¸িংāĻš āĻ¸িāĻĻ্āĻ§াāĻ¨্āĻ¤ āĻ¨িāĻ˛, āĻĒিঁāĻĒā§œা āĻ¯ে āĻŦিāĻ­াāĻ—ে āĻ•াāĻœ āĻ•āĻ°ে, āĻ¸েāĻŸাāĻ•ে āĻāĻ•āĻŸা āĻ†āĻ˛াāĻĻা āĻĄিāĻĒাāĻ°্āĻŸāĻŽেāĻ¨্āĻŸ āĻ˜োāĻˇāĻŖা āĻ•āĻ°ে āĻ¸েāĻŸাāĻ° āĻāĻ•āĻœāĻ¨ āĻĄিāĻĒাāĻ°্āĻŸāĻŽেāĻ¨্āĻŸ āĻĒ্āĻ°āĻ§াāĻ¨ āĻ¨িā§ŸোāĻ— āĻĻেāĻ“ā§ŸাāĻ° āĻāĻŸাāĻ‡ āĻ‰āĻĒāĻ¯ুāĻ•্āĻ¤ āĻ¸āĻŽā§Ÿ।
āĻ¸িংāĻš āĻিঁāĻিāĻĒোāĻ•াāĻ•ে āĻ“āĻ‡ āĻĄিāĻĒাāĻ°্āĻŸāĻŽেāĻ¨্āĻŸেāĻ° āĻĒ্āĻ°āĻ§াāĻ¨ āĻšিāĻ¸েāĻŦে āĻ¨িā§ŸোāĻ— āĻĻিāĻ˛। āĻিঁāĻিāĻĒোāĻ•া āĻĒ্āĻ°āĻĨāĻŽ āĻĻিāĻ¨ āĻāĻ¸েāĻ‡ āĻ¤াāĻ° āĻ°ুāĻŽেāĻ° āĻœāĻ¨্āĻ¯ āĻāĻ•āĻŸা āĻ†āĻ°াāĻŽāĻĻাā§ŸāĻ• āĻ•াāĻ°্āĻĒেāĻŸ āĻ“ āĻšেā§ŸাāĻ°েāĻ° āĻ…āĻ°্āĻĄাāĻ° āĻĻিāĻ˛।
āĻ•ā§ŸেāĻ• āĻĻিāĻ¨েāĻ° āĻŽāĻ§্āĻ¯েāĻ‡ āĻ…āĻĢিāĻ¸েāĻ° āĻœāĻ¨্āĻ¯ āĻ¸্āĻŸ্āĻ°্āĻ¯াāĻŸেāĻœিāĻ• āĻĒ্āĻ˛্āĻ¯াāĻ¨ āĻ¤ৈāĻ°ি āĻ•āĻ°āĻ¤ে āĻিঁāĻি āĻĒোāĻ•াāĻ° āĻāĻ•āĻŸি āĻ•āĻŽ্āĻĒিāĻ‰āĻŸাāĻ° āĻ“ āĻŦ্āĻ¯āĻ•্āĻ¤িāĻ—āĻ¤ āĻ¸āĻšāĻ•াāĻ°ীāĻ° āĻĒ্āĻ°ā§ŸোāĻœāĻ¨ āĻšāĻ˛ো। āĻ•āĻŽ্āĻĒিāĻ‰āĻŸাāĻ° āĻ¨āĻ¤ুāĻ¨ āĻ•েāĻ¨া āĻšāĻ˛েāĻ“ āĻŦ্āĻ¯āĻ•্āĻ¤িāĻ—āĻ¤ āĻ¸āĻšāĻ•াāĻ°ী āĻšিāĻ¸েāĻŦে āĻিঁāĻিāĻĒোāĻ•া āĻ¨িā§ŸোāĻ— āĻĻিāĻ˛ āĻ¤াāĻ° āĻĒুāĻ°োāĻ¨ো āĻ…āĻĢিāĻ¸েāĻ° āĻāĻ•āĻœāĻ¨āĻ•ে।
āĻĒিঁāĻĒā§œা āĻ¯েāĻ–াāĻ¨ে āĻ•াāĻœ āĻ•āĻ°ে, āĻ¸েāĻ–াāĻ¨ে āĻ†āĻ—ে āĻ›িāĻ˛ āĻšāĻŽā§ŽāĻ•াāĻ° āĻāĻ•āĻŸা āĻĒāĻ°িāĻŦেāĻļ। āĻāĻ–āĻ¨ āĻ¸েāĻ–াāĻ¨ে āĻ•েāĻ‰ āĻ•āĻĨা āĻŦāĻ˛ে āĻ¨া, āĻšাāĻ¸ে āĻ¨া। āĻ¸āĻŦাāĻ‡ āĻ–ুāĻŦ āĻŽāĻ¨āĻŽāĻ°া āĻšā§Ÿে āĻ•াāĻœ āĻ•āĻ°ে।
āĻিঁāĻিāĻĒোāĻ•া āĻĒāĻ°িāĻ¸্āĻĨিāĻ¤ি āĻ‰āĻ¨্āĻ¨ā§ŸāĻ¨ে āĻ¸িংāĻšāĻ•ে āĻŦোāĻাāĻ˛, ‘āĻ…āĻĢিāĻ¸ে āĻ•াāĻœেāĻ° āĻĒāĻ°িāĻŦেāĻļ’ āĻļীāĻ°্āĻˇāĻ• āĻāĻ•āĻŸা āĻ¸্āĻŸাāĻĄি āĻ–ুāĻŦ āĻœāĻ°ুāĻ°ি āĻšā§Ÿে āĻĒā§œেāĻ›ে।
āĻĒāĻ°্āĻ¯াāĻ˛োāĻšāĻ¨া āĻ•āĻ°ে āĻ¸িংāĻš āĻĻেāĻ–āĻ¤ে āĻĒেāĻ˛, āĻĒিঁāĻĒā§œাāĻ° āĻŦিāĻ­াāĻ—ে āĻ‰ā§ŽāĻĒাāĻĻāĻ¨ āĻ†āĻ—েāĻ° āĻ¤ুāĻ˛āĻ¨াā§Ÿ āĻ…āĻ¨েāĻ• āĻ•āĻŽে āĻ—েāĻ›ে।
āĻ•াāĻœেāĻ‡ āĻ¸িংāĻš āĻ•ā§ŸেāĻ• āĻĻিāĻ¨েāĻ° āĻŽāĻ§্āĻ¯েāĻ‡ āĻ¸্āĻŦāĻ¨াāĻŽāĻ–্āĻ¯াāĻ¤ āĻ•āĻ¨āĻ¸াāĻ˛āĻŸ্āĻ¯াāĻ¨্āĻŸ āĻĒেঁāĻšাāĻ•ে āĻ…āĻĄিāĻŸ āĻ°িāĻĒোāĻ°্āĻŸ āĻāĻŦং āĻ‰ā§ŽāĻĒাāĻĻāĻ¨ āĻŦাā§œাāĻ¨োāĻ° āĻ‰āĻĒাā§Ÿ āĻŦাāĻ¤āĻ˛ে āĻĻেāĻ“ā§ŸাāĻ° āĻœāĻ¨্āĻ¯ āĻ¨িā§ŸোāĻ— āĻĻিāĻ˛।
āĻĒেঁāĻšা āĻ¤িāĻ¨ āĻŽাāĻ¸ āĻĒিঁāĻĒā§œাāĻ° āĻĄিāĻĒাāĻ°্āĻŸāĻŽেāĻ¨্āĻŸ āĻŽāĻ¨িāĻŸāĻ° āĻ•āĻ°āĻ˛, āĻ¸āĻŦাāĻ° āĻ¸āĻ™্āĻ—ে āĻ“ā§ŸাāĻ¨ āĻŸু āĻ“ā§ŸাāĻ¨ āĻ•āĻĨা āĻŦāĻ˛āĻ˛। āĻ¤াāĻ°āĻĒāĻ° āĻŦেāĻļ āĻŽোāĻŸাāĻ¸োāĻŸা āĻāĻ•āĻŸা āĻ°িāĻĒোāĻ°্āĻŸ āĻĒেāĻļ āĻ•āĻ°āĻ˛ āĻ¸িংāĻšেāĻ° āĻ•াāĻ›ে। āĻ“āĻ‡ āĻ°িāĻĒোāĻ°্āĻŸেāĻ° āĻ¸াāĻ°āĻŽāĻ°্āĻŽ āĻšāĻ˛ো, āĻāĻ‡ āĻ…āĻĢিāĻ¸ে āĻĒ্āĻ°ā§ŸোāĻœāĻ¨েāĻ° āĻ¤ুāĻ˛āĻ¨াā§Ÿ āĻ•āĻ°্āĻŽী āĻŦেāĻļি। āĻ•āĻ°্āĻŽী āĻ›াঁāĻŸাāĻ‡ āĻ•āĻ°া āĻšোāĻ•।
āĻĒāĻ°েāĻ° āĻ¸āĻĒ্āĻ¤াāĻšেāĻ‡ āĻŦেāĻļ āĻ•ā§ŸেāĻ•āĻœāĻ¨ āĻ•āĻ°্āĻŽী āĻ›াঁāĻŸাāĻ‡ āĻ•āĻ°া āĻšāĻ˛ো। āĻŦāĻ˛ুāĻ¨ āĻ¤ো, āĻ•ে āĻ¸āĻ°্āĻŦāĻĒ্āĻ°āĻĨāĻŽ āĻšাāĻ•āĻ°ি āĻšাāĻ°াāĻ˛?
āĻ“āĻ‡ āĻšāĻ¤āĻ­াāĻ—্āĻ¯ āĻĒিঁāĻĒā§œা। āĻ•াāĻ°āĻŖ, āĻĒেঁāĻšাāĻ° āĻ°িāĻĒোāĻ°্āĻŸে āĻ˛েāĻ–া āĻ›িāĻ˛, ‘āĻāĻ‡ āĻ•āĻ°্āĻŽীāĻ° āĻŽোāĻŸিāĻ­েāĻļāĻ¨েāĻ° āĻŦ্āĻ¯াāĻĒāĻ• āĻ…āĻ­াāĻŦ āĻ°ā§ŸেāĻ›ে āĻāĻŦং āĻ¸āĻ°্āĻŦāĻĻাāĻ‡ āĻ¨েāĻ¤িāĻŦাāĻšāĻ• āĻ†āĻšāĻ°āĻŖ āĻ•āĻ°āĻ›ে, āĻ¯া āĻ…āĻĢিāĻ¸েāĻ° āĻ•āĻ°্āĻŽāĻĒāĻ°িāĻŦেāĻļ āĻ¨āĻˇ্āĻŸ āĻ•āĻ°āĻ›ে।
āĻāĻŦাāĻ° āĻ­াāĻŦুāĻ¨ āĻ¤ো, āĻ†āĻĒāĻ¨াāĻ° āĻĒāĻœিāĻļাāĻ¨āĻŸা āĻ•ী āĻ†āĻĒāĻ¨াāĻ° āĻ…āĻ°্āĻ—াāĻ¨াāĻ‡āĻœেāĻļāĻ¨ে?

( āĻ¸ংāĻ—ৃāĻšীāĻ¤ঃ āĻŦিāĻĻেāĻļি āĻ—āĻ˛্āĻĒেāĻ° āĻ…āĻŦāĻ˛āĻŽ্āĻŦāĻ¨ে )