আমার ডেভেলপ করা ডেস্কটপ-বেইসড জাভা প্রজেক্ট “MyWord Dictionary”

এখন আর কোন পোস্ট করাই হয় না। যা টুকটাক সবই ফেইসবুকে শেয়ার করে ফেলা হয়। এর জন্য আলাদা করে পোস্ট লিখে সেটা আবার ব্লগে পোস্ট করাটা কষ্টকর মনে হয়। আবার ব্লগটা খালিও রাখা যায় না। তাই ভাবছিলাম কিছু একটি পোস্ট করবো। এদিকে কয়েক বছর পর আবার জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজ নিয়ে স্টাডি শুরু করেছি। আবার সেই বেসিকটাই শিখতে বসেছি। একেই বলে দূরত্ব। কোন কিছু থেকে বেশ কিছুদিন দুরে থাকলে তার সাথে সম্পর্কটা কমে যায়। জানিনা মানুষের সাথে মানুষের সম্পর্কের ক্ষেত্রে এই নিয়ম কার্যকর কিনা ! 🙂

যা হোক। কিছুদিন স্টাডি করার পর একটি প্রজেক্ট নিয়ে বসলাম। প্রজেক্ট করতে গিয়ে শিখলে সেটা মনে থাকে ও বিভিন্ন সমস্যা ধরা পরে আর শেখার পাশাপাশি একটি প্রজেক্টও করে ফেলা হয় যা ইচ্ছা হলেই পোর্টফলিওতে যুক্ত করা যায়।

splash screen of myword dictionary

MyWord Dictionary এর Splashscreen

Download : https://drive.google.com/open?id=0BwasIjIvyEvZRURaaEU4TTJia0E

ডাটাবেজ রিলেটেড প্রজেক্ট করবো তাই ডাটাবেজ খুঁজছিলাম নেটে। নতুন করে ডাটা টাইপ করতে অনেক সময় লেগে যাবে। পেয়েও গেলাম ডিকশনারি এর জন্য ডাটাবেজ কিছু। ইংরেজি থেকে বাংলা, বাংলা থেকে ইংরেজি ও ইংরেজি থেকে ইংরেজি। যা নিয়ে যদিও এমন কোন ডিকশনারি ডেস্কটপ সফটওয়্যার ডেভেলপ করা নাই আমি যা বুঝলাম। তাই ভাবলাম এগুলো ব্যবহার করেই প্রজেক্টটা করি। ইংরেজি থেকে ইংরেজি ডাটাবেজটা ওপেন-সোর্স যা গুটেনবার্গ এর সাইটে দেয়া আছে। তবে ডাটাবেজগুলো SQLite এ ছিল না। আমার কনভার্ট করে নিতে হয়েছিল।

এখানে আমি JDK8, NetBeans8.2 এবং SQLite এর দুইটি ডাটাবেজ ব্যবহার করেছি। জাভা Swing নিয়ে কাজ করেছি। যদিও JavaFX এ অনেক উন্নতমানের UI Design করা যায়। তবে এই মুহূর্তে JavaFX টা ধরবো না। যদিও হালকা করে একটু Touch দিয়েছিলাম। মানে ছোটখাটো স্যাম্পল প্রজেক্ট করেছিলাম। আর জাভা কে ডেস্কটপ সফটওয়্যার এর জন্য বাছাই করেছি কারণ আমার সাবজেক্ট ছিল এটা। করতেই হয়েছিল একসময়।

আমি ডেস্কটপ সফটওয়্যারের জন্য Java, ওয়েবের জন্য যেগুলো ব্যবহার করতেই হয় আর এন্ড্রয়েড এ্যাপ ডেভেলপিং এর জন্য iOnic টা ব্যবহার করি। এগুলো আমার ভালো লাগে।

কেউ অনেকদিন কথা বলতে না পারলে, তাকে যদি কথা বলতে বলা হয় অনেক সময় চুপ থাকার পর বকবক করতেই থাকে। আমিও ব্লগ লিখি না অনেক দিন হয়েছে। তাই বকবকটা একটু বেশি করে ফেললাম মনে হয়। 🙂

এখন আসি আমার প্রজেক্টটি নিয়ে। প্রজেক্টটির নাম “MyWord Dictionary”। এটা অফলাইন ডেস্কটপ সফটওয়্যার। এখানে ইংরেজি শব্দ দিয়ে সার্চ করা হলে বাংলাতে অর্থ আসবে এবং সেই সাথে আসবে বিপরীত শব্দ এবং ইংরেজিতে Definition ও বাংলা একাডেমী ডিকশনারি এর ইংরেজি থেকে বাংলা অর্থ আসবে ছবি আকারে। যদিও সাইজটি কমানোর জন্য ছবিগুলোর কোয়ালিটি খুবই খারাপ হয়ে গেছে। কোন মতে বুঝার জন্য রেখেছি আরকি। আর বাংলা দিয়ে সার্চ করলে আসবে ইংরেজি শব্দ ও বিপরীত শব্দ। আরও রেখেছি Random Word যেখানে ক্লিক করা হলে ডিকশনারি থেকে নিজে থেকে Randomly শব্দ আসবে অর্থ সহকারে। এমনি আরও টুকটাক বিষয় যা মনে আসছিল তাই নিয়ে এ্যালগরিদম লিখতে বসে যেতাম। আমি গ্রাফিক্সের কাজ, এ্যানিমেশান, থ্রীডি স্ট্যুডিও ম্যাক্স ও ভিডিও এডিটিং এর কাজ একটু হলেও করেছিলাম। আমি জানি যারা কোডিং নিয়ে কাজ করে, সেটা যতই সামান্য হোক না কেন, তাদের কাছে সব থেকে মজাদার কাজ হলও কোডিং নিয়েই কাজ করা। এর ভিতরে অন্যরকম মজা আছে।

Code is poetry. কোড লেখা মানে কবিতা লেখার মতই। এটা একটা শৈল্পিক বিষয়। কোডগুলোকে নিজের ইচ্ছে মত সাজানো। তাও এমন করে সাজানো যেন কোন কাজ ঘটে।

myworddictionary1

MyWord Dictionary

Download : https://drive.google.com/open?id=0BwasIjIvyEvZRURaaEU4TTJia0E

মূলত কাজটি করতে আমার মোট ৮ দিন সময় লেগেছে। এই মে মাসের ৩ তারিখে শুরু করেছিলাম আর মে মাসেরই ৯ তারিখে শেষ করেছি। যদিও এর পর আর দুইদিন কিছু মডিফাই করেছিলাম। ২/১ দিন কাগজ কলমের কাজ, বাকি দিন কম্পিউটারের কাজ। আমি কিছু করতে হলে আগে কাগজ কলম নিয়ে বসি। এটাও আমার একটা অভ্যাস ও ভালো লাগার বিষয়ের ভিতরে একটি। ডিজাইন নিয়ে তেমন মাথাব্যথা আমার কোন দিনও থাকে না। কারণ মুল কাজটি হয়ে গেলে অন্য কেউ ডিজাইন করে দিলেও সেটা বসিয়ে দেয়া যাবে। ডিজাইনটা এখানে মুল বিষয় ছিল না।

 

এখন আসা যাক আমার প্রজেক্টটিতে কি কি রয়েছে  –

১. ইংরেজি শব্দ লিখে সার্চ করা হলে বাংলা অর্থ আসবে সাথে আসবে বিপরীত শব্দ ইংরেজিতে, ইংরেজি Definition এবং বাংলা একাডেমী ডিকশনারি থেকে বাংলাতে অর্থ যা ইমেজ আকারে থাকবে।

২. বাংলা শব্দ দিয়ে সার্চ করা হলে ইংরেজি শব্দ আসবে সাথে আসবে বিপরীত শব্দ ইংরেজিতে।

৩. সার্চ করার সময়ই সাজেশন আসবে। এটা ইংরেজি এবং বাংলা উভয়র ক্ষেত্রেই আসবে।

৪. নিজে থেকে ডিকশনারি থেকে Random Word আসবে “Random Word” বাটনে ক্লিক করা হলে। এতে করে শব্দ শেখার জন্য কাজে আসবে।

৫. More Suggestion বাটন ব্যবহার করে সাজেশন এর পরিমাণ বাড়ানো যাবে। যেমন : কোন শব্দ লেখা হলও যার জন্য কোন সাজেশন আসলো না, সেক্ষেত্রে এই বাটনটি ব্যবহার করা হলে আরও বেশি পরিমাণে সাজেশন আসার চেষ্টা করবে। এবং আছে Try Similar Word বাটন, যা ব্যবহার করে সিমিলার শব্দ খুঁজে বের করা যাবে। যেমন : কোন শব্দ লিখলাম যার কোন সাজেশন আসলো না এমনকি কোন অর্থ দেখালো না, কারণ শব্দটির বানান ভুল আমার মনে নেই বানানটি। এখন এই বাটনটি ব্যবহার করা হলে চেষ্টা করা হবে এর আশেপাশের শব্দটি খুঁজে বের করার জন্য।

৬. Advance Search ফাংশনটি হলও Wildcard Search system। যেমন : সেই সকল শব্দ দেখাবে যার শুরুতে বা শেষে রয়েছে আমার টাইপ করা শব্দটি। যেমন : able লিখে সার্চ করলে যদি বলি শেষে রয়েছে এমন শব্দ দেখাও তাহলে দেখা যাবে ABOMINABLE, ARABLE, CONSTABLE ইত্যাদি।

৭. Text To Speech যুক্ত করা হয়েছে, যেখানে ইংরেজি শব্দ উচ্চারন করে শোনাবে। উইন্ডোজে যদি Speech API এ সমস্যাও থাকে তবুও শোনা যাবে। কারণ আমি জাভাতে এই Speech API টা যুক্ত করে দিয়েছি।

৮. মোট শব্দসংখ্যা – ইংরেজি থেকে বাংলা ও বাংলা থেকে ইংরেজি প্রায় ৯৩০০০ এর বেশি ও ইংরেজি থেকে ইংরেজি ১ লাখ ৭৬ হাজারের বেশি ও বাংলা একাডেমী ডিকশনারি এর শব্দ আছে (ছবি) প্রায় ২১০০০ এর বেশি।

 

সমস্যা :

১. ডাটাবেজ ইন্টারনেট থেকে সংগ্রহ করা তাই ইংরেজি থেকে বাংলা ডাটাবেজটি তেমন সুন্দর করে সাজানো নাই যা আমি এন্ট্রি করাতে পারলে গোছানো থাকতো।

২. কোন এক কারণে ডাটাবেজ রিলেটেড সফটওয়্যারগুলো উইন্ডোজ এর Program Files এবং Program Files (x86) ফোল্ডারে রাখলে মানে ইন্সটল করা হলে Slow কাজ করে। যদিও ডিফল্ট লোকেশন অন্যটি দিয়ে রাখা আছে। SQLite এর জন্য SQLite Database Connector ব্যবহার করা হয়েছে যা মনে হয় Program Files এ রাখলে ভালো করে সাপোর্ট করতে পারছে না।

Download : https://drive.google.com/open?id=0BwasIjIvyEvZRURaaEU4TTJia0E

লিংকটিতে গিয়ে ‘myWordDictionary_v1.0.0.1_x86_Setup‘ এই ফাইলটি ডাউনলোড করে নিতে হবে। এর পর ফাইলটি রান করিয়ে ইনস্টল করতে হবে। এটা ৩২ বিটের জন্য তাই ৩২ বিট এবং ৬৪ বিট উভয় উইন্ডোজ এই ইনস্টল করা যাবে। কোন JRE এর প্রয়োজন হবে না। JRE হলো Java Runtime Environment যা Java প্রজেক্টকে পিসিতে রান করাতে সাহায্য করে, যেমন ভিজ্যুয়াল বেসিকের প্রজেক্ট এর জন্য VBDotNet Framework এর প্রয়োজন হয়। আমি JRE কে প্রজেক্টের সাথে যুক্ত করে দিয়েছি তাই প্রজেক্টটির সাইজ বড় হয়ে গেছে।

পোস্টটি শেয়ার করুন :

Leave a Reply

Your email address will not be published. Required fields are marked *