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

āĻāĻ• āĻĻেāĻļে āĻ›িāϞো āĻāĻ• āĻĒিāĻĒ⧜া। āϏে āĻĒ্āϰāϤিāĻĻিāύ ⧝āϟা⧟ āĻ…āĻĢিāϏে āĻĸুāĻ•āϤো। āϤাāϰāĻĒāϰ āĻ•াāϰো āϏāĻ™্āĻ—ে āϏāĻŽā§Ÿ āύāώ্āϟ āύা āĻ•āϰে āϏāĻ™্āĻ—ে āϏāĻ™্āĻ—ে āĻ•াāϜে āĻŦāϏে āϝেāϤ।
āϏে āϝে āĻĒāϰিāĻŽাāĻŖ āĻ•াāϜ āĻ•āϰāϤ, āϤাāϤে āĻ•োāĻŽ্āĻĒাāύিāϰ āĻ‰ā§ŽāĻĒাāĻĻāύ āĻšāϤো āĻĒ্āϰāϚুāϰ āĻāĻŦং āĻāϰ āĻĢāϞে āϏে āφāύāύ্āĻĻেāϰ āϏāĻ™্āĻ—েāχ āϜীāĻŦāύ āύিāϰ্āĻŦাāĻš āĻ•āϰāϤ।
āĻ“āχ āĻ…āĻĢিāϏেāϰ āϏিāχāĻ“ āϏিংāĻš āĻ…āĻŦাāĻ• āĻšā§Ÿে āĻĻেāĻ–āϤ, āĻāχ āĻĒিঁāĻĒ⧜াāϟি āĻ•োāύো āϧāϰāύেāϰ āϏুāĻĒাāϰāĻ­িāĻļāύ āĻ›া⧜াāχ āĻĒ্āϰāϚুāϰ āĻ•াāϜ āĻ•āϰāĻ›ে। āϏিংāĻš āĻ­াāĻŦāϞ, āĻĒিঁāĻĒ⧜াāĻ•ে āϝāĻĻি āĻ•াāϰāĻ“ āϏুāĻĒাāϰāĻ­িāĻļāύে āĻĻেāĻ“ā§Ÿা āĻšā§Ÿ, āϤাāĻšāϞে āϏে āφāϰāĻ“ āĻŦেāĻļি āĻ•াāϜ āĻ•āϰāϤে āĻĒাāϰāĻŦে।
āĻ•ā§ŸেāĻ• āĻĻিāύেāϰ āĻŽāϧ্āϝেāχ āϏিংāĻš āĻāĻ•āϟি āϤেāϞাāĻĒোāĻ•াāĻ•ে āĻĒিঁāĻĒ⧜াāϰ āϏুāĻĒাāϰāĻ­াāχāϜাāϰ āĻšিāϏেāĻŦে āύি⧟োāĻ— āĻĻিāϞ। āϏুāĻĒাāϰāĻ­াāχāϜাāϰ āĻšিāϏেāĻŦে āĻāχ āϤেāϞাāĻĒোāĻ•াāϟিāϰ āĻ›িāϞ āĻĻীāϰ্āϘāĻĻিāύেāϰ āĻ…āĻ­িāϜ্āĻžāϤা, āφāϰ āϏে āĻĻুāϰ্āĻĻাāύ্āϤ āϰিāĻĒোāϰ্āϟ āϞিāĻ–āϤে āĻĒাāϰāϤ।
āϤেāϞাāĻĒোāĻ•াāϟি āĻĒ্āϰāĻĨāĻŽেāχ āϏিāĻĻ্āϧাāύ্āϤ āύিāϞ, āĻāχ āĻ…āĻĢিāϏে āĻāĻ•āϟি āĻ…্āϝাāϟেāύāĻĄেāύ্āϏ āϏিāϏ্āϟেāĻŽ āĻĨাāĻ•া āωāϚিāϤ।
āĻ•ā§ŸেāĻ• āĻĻিāύেāϰ āĻŽāϧ্āϝেāχ āϤেāϞাāĻĒোāĻ•াāϰ āĻŽāύে āĻšāϞো, āϤাāϰ āĻāĻ•āϜāύ āϏেāĻ•্āϰেāϟাāϰি āĻĻāϰāĻ•াāϰ, āϝে āϤাāĻ•ে āϰিāĻĒোāϰ্āϟ āϞিāĻ–āϤে āϏাāĻšাāϝ্āϝ āĻ•āϰāĻŦে। … āϏে āĻāĻ•āϟা āĻŽাāĻ•ā§œāϏাāĻ•ে āύি⧟োāĻ— āĻĻিāϞ āĻāχ āĻ•াāϜে āϝে āϏāĻŦ āĻĢোāύāĻ•āϞ āĻŽāύিāϟāϰ āĻ•āϰāĻŦে, āφāϰ āύāĻĨিāĻĒāϤ্āϰ āϰাāĻ–āĻŦে।
āϏিংāĻš āĻ–ুāĻŦ āφāύāύ্āĻĻ āύি⧟ে āĻĻেāĻ–āϞ āϝে āϤেāϞাāĻĒোāĻ•া āϤাāĻ•ে āĻĒ্āϰāϤিāĻĻিāύেāϰ āĻ•াāϜেāϰ āĻšিāϏাāĻŦ āĻĻিāϚ্āĻ›ে āφāϰ āϏেāĻ—ুāϞো āĻŦিāĻļ্āϞেāώāĻŖ āĻ•āϰāĻ›ে āĻ—্āϰাāĻĢেāϰ āĻŽাāϧ্āϝāĻŽে। āĻĢāϞে āĻ–ুāĻŦ āϏāĻšāϜেāχ āĻ‰ā§ŽāĻĒাāĻĻāύেāϰ āϧাāϰা āϏāĻŽ্āĻĒāϰ্āĻ•ে āϧাāϰāĻŖা āύেāĻ“ā§Ÿা āϝাāϚ্āĻ›ে āĻāĻŦং āϏিংāĻš āϏেāĻ—ুāϞো āĻŦোāϰ্āĻĄ āĻŽিāϟিং⧟ে ‘āĻĒ্āϰেāϜেāύ্āϟেāĻļāύ’ āφāĻ•াāϰে āĻĒেāĻļ āĻ•āϰে āĻŦাāĻšāĻŦা āĻĒাāϚ্āĻ›ে।
āĻ•িāĻ›ুāĻĻিāύেāϰ āĻŽāϧ্āϝেāχ āϤেāϞাāĻĒোāĻ•াāϰ āĻāĻ•āϟি āĻ•āĻŽ্āĻĒিāωāϟাāϰ āĻ“ āϞেāϜাāϰ āĻĒ্āϰিāύ্āϟাāϰ āĻĒ্āϰ⧟োāϜāύ āĻšāϞো āĻāĻŦং āĻāĻ—ুāϞো āĻĻেāĻ–āĻ­াāϞেāϰ āϜāύ্āϝ āφāχāϟি āĻĄিāĻĒাāϰ্āϟāĻŽেāύ্āϟ āĻ—āĻ āύ āĻ•āϰāϞ। āφāχāϟি āĻŦিāĻļেāώāϜ্āĻž āĻšিāϏেāĻŦে āύি⧟োāĻ— āĻĒেāϞ āĻŽাāĻ›ি।
āφāĻŽাāĻĻেāϰ āĻ•āϰ্āĻŽী āĻĒিঁāĻĒ⧜া, āϝে āĻĒ্āϰāϤিāĻĻিāύ āĻ…āĻĢিāϏে āĻāϏে āĻĒ্āϰāϚুāϰ āĻ•াāϜ āĻ•āϰে āĻŽāύেāϰ āϏুāĻ–ে āĻ—াāύ āĻ—াāχāϤে āĻ—াāχāϤে āĻŦাāϏা⧟ āĻĢিāϰāϤ, āϤাāĻ•ে āĻāĻ–āύ āĻĒ্āϰāϚুāϰ āĻĒেāĻĒাāϰ āĻ“ā§Ÿাāϰ্āĻ• āĻ•āϰāϤে āĻšā§Ÿ, āϏāĻĒ্āϤাāĻšেāϰ āϚাāϰ āĻĻিāύāχ āύাāύা āĻŽিāϟিং⧟ে āĻšাāϜিāϰা āĻĻিāϤে āĻšā§Ÿ।
āύিāϤ্āϝāĻĻিāύ āĻāϏāĻŦ āĻাāĻŽেāϞাāϰ āĻ•াāϰāĻŖে āĻ•াāϜে āĻŦ্āϝাāϘাāϤ āϘāϟা⧟ āĻ‰ā§ŽāĻĒাāĻĻāύ āĻ•āĻŽāϤে āϞাāĻ—āϞ, āφāϰ āϏে āĻŦিāϰāĻ•্āϤ āĻšāϤে āϞাāĻ—āϞ।
āϏিংāĻš āϏিāĻĻ্āϧাāύ্āϤ āύিāϞ, āĻĒিঁāĻĒ⧜া āϝে āĻŦিāĻ­াāĻ—ে āĻ•াāϜ āĻ•āϰে, āϏেāϟাāĻ•ে āĻāĻ•āϟা āφāϞাāĻĻা āĻĄিāĻĒাāϰ্āϟāĻŽেāύ্āϟ āϘোāώāĻŖা āĻ•āϰে āϏেāϟাāϰ āĻāĻ•āϜāύ āĻĄিāĻĒাāϰ্āϟāĻŽেāύ্āϟ āĻĒ্āϰāϧাāύ āύি⧟োāĻ— āĻĻেāĻ“ā§Ÿাāϰ āĻāϟাāχ āωāĻĒāϝুāĻ•্āϤ āϏāĻŽā§Ÿ।
āϏিংāĻš āĻিঁāĻিāĻĒোāĻ•াāĻ•ে āĻ“āχ āĻĄিāĻĒাāϰ্āϟāĻŽেāύ্āϟেāϰ āĻĒ্āϰāϧাāύ āĻšিāϏেāĻŦে āύি⧟োāĻ— āĻĻিāϞ। āĻিঁāĻিāĻĒোāĻ•া āĻĒ্āϰāĻĨāĻŽ āĻĻিāύ āĻāϏেāχ āϤাāϰ āϰুāĻŽেāϰ āϜāύ্āϝ āĻāĻ•āϟা āφāϰাāĻŽāĻĻা⧟āĻ• āĻ•াāϰ্āĻĒেāϟ āĻ“ āϚে⧟াāϰেāϰ āĻ…āϰ্āĻĄাāϰ āĻĻিāϞ।
āĻ•ā§ŸেāĻ• āĻĻিāύেāϰ āĻŽāϧ্āϝেāχ āĻ…āĻĢিāϏেāϰ āϜāύ্āϝ āϏ্āϟ্āϰ্āϝাāϟেāϜিāĻ• āĻĒ্āϞ্āϝাāύ āϤৈāϰি āĻ•āϰāϤে āĻিঁāĻি āĻĒোāĻ•াāϰ āĻāĻ•āϟি āĻ•āĻŽ্āĻĒিāωāϟাāϰ āĻ“ āĻŦ্āϝāĻ•্āϤিāĻ—āϤ āϏāĻšāĻ•াāϰীāϰ āĻĒ্āϰ⧟োāϜāύ āĻšāϞো। āĻ•āĻŽ্āĻĒিāωāϟাāϰ āύāϤুāύ āĻ•েāύা āĻšāϞেāĻ“ āĻŦ্āϝāĻ•্āϤিāĻ—āϤ āϏāĻšāĻ•াāϰী āĻšিāϏেāĻŦে āĻিঁāĻিāĻĒোāĻ•া āύি⧟োāĻ— āĻĻিāϞ āϤাāϰ āĻĒুāϰোāύো āĻ…āĻĢিāϏেāϰ āĻāĻ•āϜāύāĻ•ে।
āĻĒিঁāĻĒ⧜া āϝেāĻ–াāύে āĻ•াāϜ āĻ•āϰে, āϏেāĻ–াāύে āφāĻ—ে āĻ›িāϞ āϚāĻŽā§ŽāĻ•াāϰ āĻāĻ•āϟা āĻĒāϰিāĻŦেāĻļ। āĻāĻ–āύ āϏেāĻ–াāύে āĻ•েāω āĻ•āĻĨা āĻŦāϞে āύা, āĻšাāϏে āύা। āϏāĻŦাāχ āĻ–ুāĻŦ āĻŽāύāĻŽāϰা āĻšā§Ÿে āĻ•াāϜ āĻ•āϰে।
āĻিঁāĻিāĻĒোāĻ•া āĻĒāϰিāϏ্āĻĨিāϤি āωāύ্āύ⧟āύে āϏিংāĻšāĻ•ে āĻŦোāĻাāϞ, ‘āĻ…āĻĢিāϏে āĻ•াāϜেāϰ āĻĒāϰিāĻŦেāĻļ’ āĻļীāϰ্āώāĻ• āĻāĻ•āϟা āϏ্āϟাāĻĄি āĻ–ুāĻŦ āϜāϰুāϰি āĻšā§Ÿে āĻĒ⧜েāĻ›ে।
āĻĒāϰ্āϝাāϞোāϚāύা āĻ•āϰে āϏিংāĻš āĻĻেāĻ–āϤে āĻĒেāϞ, āĻĒিঁāĻĒ⧜াāϰ āĻŦিāĻ­াāĻ—ে āĻ‰ā§ŽāĻĒাāĻĻāύ āφāĻ—েāϰ āϤুāϞāύা⧟ āĻ…āύেāĻ• āĻ•āĻŽে āĻ—েāĻ›ে।
āĻ•াāϜেāχ āϏিংāĻš āĻ•ā§ŸেāĻ• āĻĻিāύেāϰ āĻŽāϧ্āϝেāχ āϏ্āĻŦāύাāĻŽāĻ–্āϝাāϤ āĻ•āύāϏাāϞāϟ্āϝাāύ্āϟ āĻĒেঁāϚাāĻ•ে āĻ…āĻĄিāϟ āϰিāĻĒোāϰ্āϟ āĻāĻŦং āĻ‰ā§ŽāĻĒাāĻĻāύ āĻŦা⧜াāύোāϰ āωāĻĒা⧟ āĻŦাāϤāϞে āĻĻেāĻ“ā§Ÿাāϰ āϜāύ্āϝ āύি⧟োāĻ— āĻĻিāϞ।
āĻĒেঁāϚা āϤিāύ āĻŽাāϏ āĻĒিঁāĻĒ⧜াāϰ āĻĄিāĻĒাāϰ্āϟāĻŽেāύ্āϟ āĻŽāύিāϟāϰ āĻ•āϰāϞ, āϏāĻŦাāϰ āϏāĻ™্āĻ—ে āĻ“ā§Ÿাāύ āϟু āĻ“ā§Ÿাāύ āĻ•āĻĨা āĻŦāϞāϞ। āϤাāϰāĻĒāϰ āĻŦেāĻļ āĻŽোāϟাāϏোāϟা āĻāĻ•āϟা āϰিāĻĒোāϰ্āϟ āĻĒেāĻļ āĻ•āϰāϞ āϏিংāĻšেāϰ āĻ•াāĻ›ে। āĻ“āχ āϰিāĻĒোāϰ্āϟেāϰ āϏাāϰāĻŽāϰ্āĻŽ āĻšāϞো, āĻāχ āĻ…āĻĢিāϏে āĻĒ্āϰ⧟োāϜāύেāϰ āϤুāϞāύা⧟ āĻ•āϰ্āĻŽী āĻŦেāĻļি। āĻ•āϰ্āĻŽী āĻ›াঁāϟাāχ āĻ•āϰা āĻšোāĻ•।
āĻĒāϰেāϰ āϏāĻĒ্āϤাāĻšেāχ āĻŦেāĻļ āĻ•ā§ŸেāĻ•āϜāύ āĻ•āϰ্āĻŽী āĻ›াঁāϟাāχ āĻ•āϰা āĻšāϞো। āĻŦāϞুāύ āϤো, āĻ•ে āϏāϰ্āĻŦāĻĒ্āϰāĻĨāĻŽ āϚাāĻ•āϰি āĻšাāϰাāϞ?
āĻ“āχ āĻšāϤāĻ­াāĻ—্āϝ āĻĒিঁāĻĒ⧜া। āĻ•াāϰāĻŖ, āĻĒেঁāϚাāϰ āϰিāĻĒোāϰ্āϟে āϞেāĻ–া āĻ›িāϞ, ‘āĻāχ āĻ•āϰ্āĻŽীāϰ āĻŽোāϟিāĻ­েāĻļāύেāϰ āĻŦ্āϝাāĻĒāĻ• āĻ…āĻ­াāĻŦ āϰ⧟েāĻ›ে āĻāĻŦং āϏāϰ্āĻŦāĻĻাāχ āύেāϤিāĻŦাāϚāĻ• āφāϚāϰāĻŖ āĻ•āϰāĻ›ে, āϝা āĻ…āĻĢিāϏেāϰ āĻ•āϰ্āĻŽāĻĒāϰিāĻŦেāĻļ āύāώ্āϟ āĻ•āϰāĻ›ে।
āĻāĻŦাāϰ āĻ­াāĻŦুāύ āϤো, āφāĻĒāύাāϰ āĻĒāϜিāĻļাāύāϟা āĻ•ী āφāĻĒāύাāϰ āĻ…āϰ্āĻ—াāύাāχāϜেāĻļāύে?

( āϏংāĻ—ৃāĻšীāϤঃ āĻŦিāĻĻেāĻļি āĻ—āϞ্āĻĒেāϰ āĻ…āĻŦāϞāĻŽ্āĻŦāύে )