পাইথনে প্যাকেজ ইন্সটলেশন — পিপ

Originally Posted in Masnun’s Blog

Advertisements

Yii ফ্রেমওয়ার্ক সম্পর্কে কিছু কথা

yii2

Yii ফ্রেমওয়ার্ক সম্পর্কে কিছু কথাঃ

“Yii” হল একটা ওপেন সোর্স অবজেক্ট ওরিয়েন্টেড উচ্চ ক্ষমতা সম্পন্ন পিএইসপি ফ্রেমওয়ার্ক যেটা দ্রুত ওয়েব অ্যাপ্লিকেশন তৈরির জন্য ব্যবহৃত হয়। Yii এর উচ্চারন হল “Yee” অথবা [ji:] (চাইনিজ ভাষায়) আর এটার অর্থ “সিম্পল এ্যান্ড এভোলুশনারি” (চাইনিজ ভাষায়)। এটার অর্থ “ইয়েস ইট ইস” (ইংরেজীতে)।

“Yii” ফ্রেমওয়ার্ক এর ফিচার্সঃ

১. মডেল ভিউ কন্ট্রোলার ডিজাইন প্যাটার্ন।
২. ডাটাবেজ এক্সেস অবজেক্ট, কুয়েরি বিল্ডার, এক্টিভ রেকর্ড, ডিবি মাইগ্রেশন।
৩. ফর্ম ইনপুট এ্যান্ড ভেলিডেশন।
৪. এজাক্স এনাবল্ড উইগেট।
৫. অ্যাথেন্টিকেশন এ্যান্ড অ্যাথোরাইজেশন।
৬. স্কিনিং এ্যান্ড থিমিং।
৭. ওয়েব সার্ভিসেস।
৮. ইন্টারন্যাশনালাইজেশন এ্যান্ড লোকালাইজেশন।
৯. লেয়ার্ড ক্যাচিং স্কিম।
১০. এরর হ্যান্ডেলিং এ্যান্ড লগিং।
১১. সিকুউরিটি।
১২. ইউনিট এ্যান্ড ফাংশনালিটি টেস্টিং।
১৩. অ্যাটোমেটিক কোড জেনারেশন।
১৪. ফ্রেন্ডলি উইথ থার্ড পার্টি কোড।
১৫. ডিটেইল্ড ডকুমেন্টেশন।
১৬. এক্সটেনশন লাইব্রেরী।

আমি ব্যাক্তিগতভাবে যে কারনে “Yii” ফ্রেমওয়ার্ক এ কাজ করতে পছন্দ করিঃ

১. ক্রুড জেনারেটর (এটা আপনাদেরকে মডেল, ভিউ, কন্ট্রোলার তৈরি করতে সাহায্য করবে)।
২. বিল্ড-ইন টুইটার বুটস্ট্রাপ।
৩. ফর্ম ভেলিডেশন সার্ভার ও ক্লায়েন্ট উভয় দিকে বিল্ড-ইন ভাবে করে থাকে (ফর্ম হেল্পার এর মাধ্যমে)।
৪. বিল্ড-ইন রোল বেসড একসেস কন্ট্রোল (এটার সাহায্যে ইউজার এর রোল, গ্রুব ও পলিছি নির্ধারণ করতে পারবেন)।
৫. ডাটাবেস এক্টিভ রেকর্ড (অবজেক্ট রিলেশনাল ম্যাপার)।
৬. স্টেবিলিটিঃ এখানে স্টেবিলিটি বলতে এটার ভার্সনকে বুঝানো হয়েছে। অন্যান্য ফ্রেমওয়ার্ক এর মত এটি দ্রুত পরিবর্তিত হয়না। যেমনঃ ২ থেকে ৩ কিংবা ৪ থেকে ৫, যাতে করে আপনাকে আপনার প্রজেক্ট নিয়ে চিন্তিত থাকতে হবেনা সুধু মাইনর কিছু পরিবর্তন করলেই আপনি ভার্সন আপগ্রেড করতে পারবেন।

এবং আরও অনেক ফিচার।

এতক্ষণ আমি আপনাদেরকে সুধু “Yii” সম্পর্কে বললাম। এখন আমি আপনাদেরকে Yii2 সম্পর্কে সামান্য ধারণা দিতে চাচ্ছি। আমি জানি আমাদের মধ্যে অনেকেই “Yii” ব্যাবহার করেছি।

“Yii2” হল “Yii1” এর রি-রাইট করা। এটি রান করতে পিএইসপি নুন্যতম ৫.৪ লাগে। “Yii2” পিএইসপি নুন্যতম ৫.৪ সাপোর্ট করার জন্য পিএইসপির মোটামুটি সকল প্রকার নতুন ফিচার ব্যাবহার করা হয়েছে। “Yii1” পিএইসপির পুরানো ভার্সন ব্যাবহার করত আর এজন্য নতুন ওয়েব টেকনোলোজি থেকে অনেক পিছিয়ে ছিল। এক কথায় বলা যায় পিএইসপির অন্যান্য ফ্রেমওয়ার্ক সিম্ফোনী, লারাভেল এর নতুন ভার্সন থেকে এটা পিছিয়ে ছিল। আর বর্তমান টেকনোলোজির সাথে খাপ খাইয়ে চলার জন্যই “Yii2” ডেভেলপ করা হয়। আর “Yii2” তে এখন কম্পোজার থেকে শুরু করে, ডাটাবেস মাইগ্রেশন, স্কিমা তৈরি, নেমস্পেস এর সঠিক ব্যাবহার, পিএইসপির ফুল অবজেক্ট অরিয়েন্টেট এর ব্যাবহার করা হয়েছে।

আপনারা কম্পোজার ব্যাবহার করে খুব সহজেই এইটা ইন্সটল করে নিতে পারবেন।

এর জন্য নিচের কমান্ডটা লিখতে হবে আপনার প্রজেক্টের ডিরেক্টোরিতে গিয়ে টার্মিনাল কিংবা কমান্ড প্রম্পড থেকে।

php composer.phar global require "fxp/composer-asset-plugin:1.0.0"

[বিঃদ্রঃ উপরের কমান্ডটি কম্পোজার এ্যাসেট প্লাগিন ইনস্টল করার জন্য]

php composer.phar create-project yiisoft/yii2-app-basic basic 2.0.3

অথবা

php composer.phar create-project yiisoft/yii2-app-advanced advanced 2.0.3

[বিঃদ্রঃ আপনার মেশিনে পিএইসপি আর কম্পোজার ঠিকঠাক মত কনফিগার করা থাকলে এইভাবে লিখলেই হবে ]

composer create-project yiisoft/yii2-app-basic basic 2.0.3

১ম (বেসিক) টি হল ফ্রন্ট এন্ড টেমপ্লেট বেসড অ্যাপ্লিকেশন তৈরি করার জন্য আর ২য় (আডভান্সড) টি হল ফ্রন্ট এন্ড + ব্যাক এন্ড টেমপ্লেট বেসড অ্যাপ্লিকেশন তৈরি করার জন্য।

২য় টি ব্যাবহার করলে আপনাকে নতুন করে ইউজার লগিন ও রেজিস্ট্রেশন নিয়ে কাজ করতে হবে না সুধু আপনার পছন্দমত পরিবর্তন করে নিলেই হবে ।

আপনারা নিজে নিজে ক্রুড জেনারেটর ট্রাই করে দেখবেন। এটা আপনাদের ডেভেলপ সময় অনেক বাচিয়ে দিবে কারণ এটা বেসিস এইসটিএমএল ভিউ সহ সব কিছু আপনার জন্য রেডি করে রাখবে সুধু আপনার পছন্দমত একটু পরিবর্তন করে নিলেই হবে। “Yii2” কিংবা “Yii” তে জেনারেটর ব্যাবহার করার জন্য “Gii” নামক টুলটি

ব্যাবহার করতে হবে এই লিংক থেকে এটি সম্পর্কে ধারনা পাবেন।

সময় সল্পতার কারনে আমি আপনাদেরকে পুর বিষয়ে টিউটোরিয়ালের মাধ্যমে দেখাইতে পারলামনা।

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

http://www.yiiframework.com/doc-2.0/guide-index.html
http://stuff.cebe.cc/yii2-guide.pdf
http://www.yiiframework.com/doc-2.0/guide-start-gii.html
http://www.yiiframework.com/doc-2.0/guide-security-authorization.html

জাভা কিভাবে কাজ করে

Java-drawn-logo

জাভা কোড প্রথমে বাইটকোড এ কম্পাইল হয়, তারপর সেটিকে জাভা ভার্চুয়াল মেশিন এক্সিকিউট করে। বাইটকোড হচ্ছে এক ধরণের ইন্টারমিডিয়েড ল্যাংগুয়েজ যা কিনা ঠিক হিউম্যান রিডএবল ও না, আবার মেশিন রিডএবলও না। এটি শুধুমাত্র জাভা ভার্চুয়াল মেশিন (JVM) পড়তে পারে। বাইটকোড কে এক্সিকিউট করার জন্যে জাভা ভার্চুয়াল মেশিন জাস্ট ইন টাইম(JIT) কম্পাইলার ব্যবহার হরে। JIT বাইটকোড কে সরাসরি ইন্টারপ্রেট করে। এটি রানটাইম-এ বাইটকোড কে ইন্টারপ্রেট করে মেশিন কোড এ রূপান্তরিত করে যা কিনা সিপিইউ রান করে। এখানে একটি ইন্টারেস্টিং প্রশ্ন হতে পারে, জাভা কি তাহলে ইন্টারেপ্রেটেট ল্যাংগুয়েজ নাকি কম্পাইল্ড ল্যাংগুয়েজ? উত্তর কিন্তু দুটোই । জাভা একি সাথে কম্পাইলড এবং ইন্টারপ্রেটেড ল্যাংগুয়েজ।

উপরের লাইনগুলো পড়ে আপনি মনে করতেই পারেন যে, JIT আসলে জাভাকে স্লো করে দিচ্ছে, কারণ এটি প্রোগ্রাম যখন চলে তখন ইন্টারপ্রেট করছে। এই উপসংহার হয়তো ইনটিউটিভ, কিন্তু সঠিক নয়। JIT আসলে অনেক ভাল ভাবেই কাজ করে।

C/C++ সাধারণভাবে ধরা হয় যে জাভা এর থেকে বেশি ভাল পারফর্ম করে। জাভা যেহেতু অন-ফ্লায় এক্সিকিউট করে , এজন্যে অনেকটা এভাবে চিন্তা করা হয়। কোড-কে মেশিন কোড-এ রূপান্তরিত করার জন্যে আসলে খুব বেশি সময় লাগে না, তারপরও যদি কোন ল্যাংগুয়েজ এর কোড-কে এক্সিকিউট করার আগে তাকে মেশিন কোড এ রূপান্তরিত করতে না হয়, তাহলে ধরা হয়, সেই ল্যাংগুয়েজ অনেকটা ফাস্টার। মজার ব্যপার হচ্ছে কোন কম্পাইলার-ই কিন্তু টপ-নচ এসেম্বলি প্রোগ্রামাররা যারা কিনা কোন হার্ডওয়্যারকে কে টার্গেট করে মেশিন কোড সরাসরি মেনিপুলেট করতে পারে, তাদের মতো মেশিন কোড তৈরি করতে পারে না, যা কিনা অনেক বেশি পার্ফরমেন্ট হবে। C/C++ কিংবা জাভা সবগুলোর-ই কিছু না কিছু ইস্যুজ আছে। জাভাকে রান করার আগে অনফ্লায় মেশিন কোড তৈরি করতে হয়, C/C++ এর কোড ও কিন্তু অনেকটা জেনেরিক ভাবেই কম্পাইলড হয়। C/C++ এ কিন্তু সরাসরি একটি নির্দিষ্ট হার্ডওয়্যারকে টার্গেট করে কোড লেখা হয় না সবসময়।

মজার ব্যপার হচ্ছে, জাভা ভার্চুয়াল মেশিন কিন্তু খুব-ই ইন্টেলিজেন্ট এনভায়রনমেন্ট এবং JIT নিজেও খুব-ই ইন্টেলিজেন্ট কম্পাইলার। উদাহরণ সরূপ- JVM জানে যে কোন মেথড কতবার কল করা হচ্ছে, কারণ এটি কাউন্ট করে । যখন এই কাউন্ট একটি নির্দিষ্ট থ্রেসহোল্ড এর বাইরে চলে যায়, তখন সেই মেথড-এর মেশিন কোড JVM রেখে দেয়, পরের বার আবার কল করা হলে, সেটি আর সেই মেথডকে ইন্টারপ্রেট না করে সরসরি সেই রেখে দেওয়া মেশিন কোড-কে দিয়ে দেয় যা কিনা বারবার বাইটকোড থেকে মেশিনকোড-এ ট্রান্সলেশান করার কস্ট কমিয়ে দেয়। আরও মজার ব্যাপার হচ্ছে, JIT কম্পাইলার, যে সব কোড খুব বেশিবার ব্যবহার করা হয়, সেগুলোকে অপটিমাইজ করে । JIT নানা ধররণের স্ট্যাটিসটিক্স কালেক্ট করে থাকে। রিসার্সে দেখা গেছে যে, 80% সময়ে আসলে মোট কোডবেইস এর 20% কোড এক্সিকিউট করা হয়। সুতরাং এই 20% কোড গুলো যদি আলাদা করা যায়, এবং এদেরকে অপটিমাইজ করা যায়, তাহলে কিন্তু হিউজ পার্মমেন্স গেইন করা যাবে। মজার ব্যপার হচ্ছে JIT আসলে তাই করে। এটি (hotcode) এই ২০% কোড কে আলাদা করতে পারে এবং এদেরকে অপটিমাইজ করতে পারে। ওরাকল এর জাভা ভার্চুয়াল মেশিন হটস্পট এর নাম হয়তো অনেকেই জানি, এবং সেটি কিন্তু নামকরণ করা হয়েছে এই জন্যে যে, এটি এই হট স্পট গুলোকে আলাদা করতে পারে। জাভা যেহেতু JVM এর জন্যে লেখা হয়, এবং JIT সেটিকে মেশিন কোড এ রূপান্তরিত করে, এটি কিন্তু রানটাইমে হার্ডওয়্যার এর ইনফরমেশান একসেস করতে পারে এবং তার উপর ভিত্তি করে অপটিমাইজ মেশিন কোড তৈরি করে পারে, যা কিনা C/C++ এর ক্ষেত্রে অনেক সময়ই সম্ভব হয়ে উঠে না।

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

রেগুলার এক্সপ্রেশনঃ উপকারিতা ও ব্যবহারিক প্রয়োগ

উজ্জ্বল'স নোটখাতা

রেগুলার এক্সপ্রেশনঃ
নাম থেকেই বোঝা যাচ্ছে যে, রেগুলার এক্সপ্রেশন (রেজেক্স বা RegEx) আসলে কতগুলো সুনির্দিষ্ট ক্যারেকটারের (Char) সমষ্টি। এই একগুচ্ছ ক্যারেকটারের সমষ্টি একত্রে কোন নির্দিষ্ট প্যাটার্ন প্রকাশ করে যা দিয়ে কোন বিশাল প্যারাগ্রাফ থেকে কোন নির্দিষ্ট প্যাটার্নের অংশ খুঁজে বের করতে পারে। একটি সহজ উদাহরন দেখে নেওয়া যাক। যেমন ধরি, একটি ৫০০ শব্দের প্যারাগ্রাফ থেকে এমন সব শব্দ খুঁজে বের করতে হবে যেগুলোর প্রথম অক্ষর ‘N’, শেষের অক্ষর ‘L’ এবং মাঝে কমপক্ষে একটি ‘H’ থাকবে। যদি ট্র্যাডিশনাল প্রোগ্রামিং দিয়ে এ কাজটি করতে চাই তাহলে কি কি করতে হবে তা নিচে লেখা হলঃ

ধাপ ১ঃ প্যারাগ্রাফ এর প্রথম ক্যারেকটার থেকে শুরু করে একটা একটা করে সামনে আগাতে হবে।
ধাপ ২ঃ কোন শব্দের প্রথম অক্ষর যদি ‘N’ হয় তাহলে এই ইনডেক্সে একটি পয়েন্টার রাখতে হবে। এরপর এই ইনডেক্স থেকে আবার সামনে আগাতে হবে। যদি শব্দটির শেষ অক্ষরে পৌছানোর আগে ‘H’ পাওয়া যায় এবং শেষ অক্ষরটি যদি ‘L’ হয় তাহলে এটা একটি কাঙ্খিত…

View original post 872 more words

রাস্পবেরি পাই পরিচিতি ও প্রথম বুট – ভিডিও

Photo Sep 28, 11 54 16 AM
রাস্পবেরি পাই বি+ মডেলের পরিচিত, হার্ডওয়্যার রিভিউ, এর জন্য অপারেটিং সিস্টেম রেডি করা, প্রথম বুট এবং রাস্পবিয়ান এর ব্যাসিক পরিচিত

একাধিক ল্যাঙ্গুয়েজ কেন শিখবেন?

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

আরও পড়ুন এখানে