ম্যাক এর জন্য ডেভেলপার বা প্রো-ইউজারদের প্রয়োজনীয় ৩০টি অ্যাপ সাজেশন

Standard
  1. Xcode যারা iOS, watchOS বা macOS এর জন্য অ্যাপ্লিকেশন ডেভেলপ করতে চান তাদের জন্য একান্ত প্রয়োজনীয় একটি IDE যার সাথে বিল্ট ইন আছে ইমুলেটর গুলোও। ম্যাক ইউজাররা ফ্রি তেই ডাউনলোড করতে পারবেন।
  2. chrome বর্তমান ওয়েব দুনিয়ায়, সব ব্রাউজারের ব্যবহার জরিপ অনুযায়ী শতকরা ৭০ ভাগেরও বেশি ব্যবহৃত হয় গুগলের তৈরি এই ব্রাউজারটি। বিশাল এক্সটেনশন এবং অ্যাপ মার্কেটপ্লেস এই ব্রাউজারকে করেছে আরও সমৃদ্ধ। এই ব্রাউজারে যেমন ক্লায়েন্ট সাইড ডিবাগিং, ইন্সপেকশন টুল বিল্ট আছে তেমনি এর জন্য এক্সটেনশন বা প্লাগিন তৈরি করাও বেশ সহজ। সবার জন্য ফ্রি।
  3. PhpStorm জেট ব্রেইন্স এর তৈরি সবচেয়ে পপুলার একটি IDE যার মাধ্যমে PHP -তে ওয়েব অ্যাপ ডেভেলপমেন্ট হতে পারে খুবি প্রোডাক্টিভ। স্টুডেন্টদের জন্য ফ্রি। এছাড়াও স্টার্ট আপ, ট্রেনিং সেন্টার বা ওপেন সোর্স প্রোডাক্ট ডেভেলপারদের জন্যও ফ্রি/ছাড়।
  4. PyCharm জেট ব্রেইন্স এর তৈরি আরেকটি বহুল পরিচিত পাইথন IDE যার একটি কমিউনিটি এডিশন আছে যেটি সবসময় বিনামূল্যে পাওয়া যায়। পাইথন অ্যাপ ডেভেলপার বা পাইথন স্ট্যাকে কাজ করেন এমন ইউজারদের জন্য খুবি প্রোডাক্টিভ একটি টুল। যারা Anaconda এর মত রেডি মেড প্ল্যাটফর্ম এর জন্য বাধ্য না, সেরকম ডাটা সায়েন্স ইঞ্জিনিয়াররাও এটায় কাজ করতে পারেন স্বাচ্ছন্দ্যে. এর প্রফেশনাল এডিশনটি স্টুডেন্টদের জন্য ফ্রি। এছাড়াও স্টার্ট আপ, ট্রেনিং সেন্টার বা ওপেন সোর্স প্রোডাক্ট ডেভেলপারদের জন্যও ফ্রি/ছাড়।
  5. Webstorm যাদের জাভাস্ক্রিপ্ট স্ট্যাক খুব পছন্দ এবং ক্লায়েন্ট সাইড অ্যাপ ডেভেলপমেন্টে ফোকাসড তাঁরা ব্যবহার করতে পারেন এই IDE টি. এমনকি MEAN স্ট্যাকে ডেভেলপমেন্ট করতে চাইলেও এই IDE হতে পারে প্রথম পছন্দ। স্টুডেন্টদের জন্য ফ্রি।
  6. IntelliJ IDEA জাভা ডেভেলপারদের জন্য অত্যন্ত চমৎকার ফিচার সমৃদ্ধ একটি IDE. স্কালা, গ্রুভি, কটলিন ল্যাঙ্গুয়েজের সাপোর্ট থেকে শুরু করে গিট সাপোর্ট এবং স্প্রিং এর মত ফ্রেমওয়ার্ক সাপোর্ট সবই আছে এতে। Android অ্যাপ ডেভেলপমেন্ট থেকে শুরু করে ওয়েব অ্যাপ ডেভেলপমেন্ট, সবই সম্ভব এই প্রোডাক্টিভ টুলটি ব্যবহারের মাধ্যমে। স্টুডেন্টদের জন্য ফ্রি।
  7. Android Studio অ্যান্ড্রয়েড অ্যাপ ডেভেলপমেন্ট এর জন্য একমাত্র অফিসিয়াল IDE. কোড এডিটিং, ডিবাগিং থেকে শুরু করে পারফরমেন্স টেস্টিং, ডিপ্লয়েমেন্ট, ইনস্ট্যান্ট বিল্ড ও অনেক অনেক ফিচার সমৃদ্ধ IDE টি অ্যান্ড্রয়েড অ্যাপ ডেভেলপারদের প্রথম পছন্দ। ফ্রি।
  8. Visual Studio Code মাইক্রোসফট এর তৈরি ফ্রি, ওপেন সোর্স এবং সুন্দর ইন্টারফেইস সমৃদ্ধ এই মাল্টি প্ল্যাটফর্ম কোড এডিটরটি লাইট ওয়েট এবং সাথে গিট ও ডিবাগিং ফিচার বিল্ট ইন। আরও আছে কমিউনিটির ডেভেলপ করা মারাত্মক সব এক্সটেনশন। ফ্রি.
  9. Docker এটি বর্তমানের সব চেয়ে পপুলার সফটওয়্যার কন্টেইনার প্ল্যাটফর্ম। মাল্টি প্ল্যাটফর্মে ডেভেলপমেন্ট, ফুল ডেভেলপমেন্ট এনভায়রনমেন্ট পোর্ট, অতঃপর দ্রুত ডেপ্লয়মেন্ট এবং সহজ স্কেল্যাব্লিটির জন্য সবাই এখন ব্যবহার করছে এই টুলটিকে। কমিউনিটি এডিশন ফ্রি।
  10. VirtualBox ম্যাকের মধ্যেই Windows বা Ubuntu বা অন্য কোন OS ইন্সটল দিতে চাইলে ভার্চুয়াল বক্স হতে পারে সলিড একটি সমাধান। এছাড়া ম্যাকে Vagrant ব্যবহার করতে হলেও এটি আগে ইন্সটল থাকতে হবে। ফ্রি তেই পাওয়া যাবে এই সফটওয়্যারটি।
  11. Vagrant ভার্চুয়াল বক্স ইউজ করে অন্য OS ইন্সটল দেয়ার পরেও কিছু সীমাবদ্ধতা থেকে যায় যেগুলো দূর করতে পারে এই কমান্ড লাইন অ্যাপটি। এটি ব্যবহার করে খুব দ্রুত যেকোনো হেড লেস OS ইন্সটল দেয়া এবং সাথে সাথে IP, Memory, Sync Folder, SSH ইত্যাদি কনফিগার করা যায় সহজেই। ফ্রি.
  12. Sequel Pro গ্র্যাফিক্যালি MySQL ডাটাবেজ ম্যানেজমেন্টের জন্য ম্যাকের উপযোগী খুব সুন্দর একটি অ্যাপ। ম্যাকের জন্য ফ্রিতেই পাওয়া যায়।
  13. Robomongo ক্রস প্ল্যাটফর্ম এবং ন্যাটিভ একটি গ্রাফিক্যাল টুল যা দিয়ে সহজেই MongoDB ম্যানেজ করতে পারেন।
  14. iTerm2 ম্যাকের বিল্ট ইন টার্মিনাল অ্যাপ এর চেয়ে অনেক বেশি কনফিগারেবল এবং অনেক অনেক ফিচার সমৃদ্ধ একটি টার্মিনাল ক্লায়েন্ট। ওপেন সোর্স এবং সম্পূর্ণ ফ্রি।
  15. Postman বর্তমানে সফটওয়্যার ডেভেলপমেন্ট এবং API ডেভেলপেমণ্ট প্রায় ওতপ্রোতভাবে জড়িত। আর পোষ্টম্যান হচ্ছে সেখানে অবশ্য প্রয়োজনীয় একটি অ্যাপ যার মাধ্যমে আপনার ডেভেলপ করা API এন্ডপয়েন্ট গুলোকে টেস্ট করতে পারবেন সহজেই।
  16. Homebrew এক কথায় একে বলা হয় The missing package manager for macOS. অর্থাৎ, যারা উবুন্টু বা এরকম ইউনিক্স সিস্টেমের বিল্ট ইন প্যাকেজ ম্যানেজার গুলোকে পছন্দ করেন এবং ম্যাকে এরকম একটি টুলকে মিস করেন তাদের জন্য লাইফ সেভার একটি টুল এটি। মজার বিষয় হচ্ছে, এটি কোন টুল ইন্সটল করার সময় এর নিজের একটি আলাদা লোকেশন ইন্সটল করে এবং সেটির একটি সিম্বোলিক লিঙ্ক ম্যাকের /usr/local ডিরেক্টরিতে তৈরি করে. আর তাই আপনার সিস্টেম ক্লিন থাকে।
  17. Github Desktop যদি আপনি একজন ওপেন সোর্স কন্ট্রিবিউটর হয়ে থাকেন এবং বিভিন্ন github রিপজিটরিতে খুব দ্রুত একটি গ্রাফিক্যাল টুল ইউজ করে কোলাবরেট করতে চান তাহলে এটি আপনার জন্য। এটি ফ্রি। Tower হচ্ছে এরকমই আরেকটি অ্যাপ যা আপনার সব গিট রিপজিটরির জন্য কিন্তু এটি পেইড অ্যাপ।
  18. FileZilla নানা কারণেই আপনার একটি FTP ক্লায়েন্ট দরকার হতে পারে যে ক্ষেত্রে এই ফ্রি, ওপেন সোর্স এবং ক্রস প্ল্যাটফর্ম অ্যাপটি হতে পারে প্রথম পছন্দের। FTP, SFPT সাপোর্ট রয়েছে এতে।
  19. Caffeine ছোট একটি টুলবার অ্যাপ যার মাধ্যমে নির্দিষ্ট সময়ের জন্য আপনার ম্যাককে স্লিপ মুডে যাওয়া থেকে বিরত রাখতে পারেন. ফ্রি।
  20. Spectacle ম্যাক ইউজারদের কাছে অনেক সময় বিরক্তির কারণ হয়ে দাড়ায় বিভিন্ন অ্যাপ উইন্ডোর সাইজকে ঠিক ঠাক করা। এই টুলবার অ্যাপ এবং এর কিবোর্ড শর্ট কাট এর মাধ্যমে খুব সহজেই কোন রানিং অ্যাপকে ফুল সাইজ করা, অর্ধেক ডানে বা অর্ধেক বামে করা ইত্যাদি নানা রকম প্লেসমেন্ট করা যায়। ফ্রি।
  21. Skype নতুন করে বলার কিছু নাই স্কাইপি নিয়ে। মার্কেটে অনেক সময় অনেক রকম কমিউনিকেশন টুল আসলেও এর অবস্থান অনড়। এখনও অনেক ইউজাররা মিটিং, স্ক্রিন শেয়ারিং, গ্রুপ কনভারসেশন এমনকি কলিং এর জন্য এর উপরেই ভরশা করে থাকেন. ফ্রি.
  22. Slack এটি আধুনিক একটি যোগাযোগের মাধ্যম যা চ্যাটিং ইন্টাফেইসকে ঘিরেই তৈরি। এটি বিশেষ করে ব্যবহৃত হয় অফিস বা টিমের মধ্যে। বিভিন্ন গ্রুপ বা চ্যানেল তৈরির মাধ্যমে মেম্বাররা নিজেদের মধ্যে চ্যাট, মেনশন, ফাইল শেয়ারিং ইত্যাদি করতে পারেন। এর জন্য বিভিন্ন বট তৈরি করেও একে আরও বেশি প্রয়োজনীয় এবং উপযোগী করে নিতে পারেন যে কেউ। ফ্রি.
  23. Dropbox ক্লাউড স্টোরেজের জন্য অত্যন্ত নির্ভরযোগ্য একটি প্ল্যাটফর্ম। এর ম্যাক অ্যাপটি টুলবারে থেকে খুব সহজেই আপনার প্রয়োজনীয় ফাইলকে ক্লাউডে সিঙ্ক করে নেয়। ম্যাক যেকোনো ফাইল তৈরি করার পর শুধু সেভ করার লোকেশনটি দেখিয়ে দিবেন Dropbox এর সিঙ্ক করা যেকোনো একটি ফোল্ডারে। সাথে সাথে এটি ক্লাউডে আপলোড হয়ে যাবে। অন্য ইউজারদের সাথে ফাইল শেয়ার করতেও ব্যবহার করা যায় এদের সার্ভিসকে। নির্দিষ্ট জায়গা পর্যন্ত ফ্রি।
  24. Office 365 যে যাই বলুক, মাইক্রোসফট এর তৈরি এই অফিস স্যুটটির ভাল কোন বিকল্প এখনও নেই। এর মধ্যে থাকে MS Word, MS Excel, MS Power Point এবং আরও কয়েকটি অত্যন্ত দরকারি অ্যাপ যা একাধারে ছাত্র, শিক্ষক, লেখক, হিসাবরক্ষক, চাকুরীজীবী সবার কাছেই গুরুত্বপূর্ণ। ছাত্রদের জন্য ফ্রি।
  25. Sketch অ্যাপ, ওয়েব পেইজ বা লে-আউট ডিজাইনাদের জন্য Photoshop এর বিকল্প এবং ম্যাকের জন্য বহুল ব্যবহৃত একটি অ্যাপ। যাদের Photoshop এর সব ফিচার দরকার নাই বা শুধুমাত্র অ্যাপ ডিজাইন নিয়েই ফোকাস করতে চান তাদের জন্য। এটি একটি পেইড অ্যাপ।
  26. VLC Media Player সবার অত্যন্ত পরিচিত একটি মিডিয়া প্লেয়ার। এটি ফ্রি এবং ওপেন সোর্স।
  27. uTorrent ম্যাকের জন্য একটি টরেন্ট ক্লায়েন্ট দরকার হলে এটি হতে পারে পছন্দের। যদিও অনেকে এই পারপাজে Transmission ব্যবহার করে থাকেন।
  28. Dash লিস্টের শেষের দিকে লিখছি মানেই যে এটি কম গুরুত্বপূর্ণ একটি অ্যাপ, বিষয়টি তা নয়। বরং, এটি লিস্টের শুরুতেও থাকতে পারতো। আপনার মাথায় যতরকম প্রোগ্রামিং ল্যাঙ্গুয়েজ, ফ্রেমওয়ার্ক বা ডেভেলপমেন্ট টুল এর নাম থাকতে পারে- প্রায় সবগুলোর ডকুমেন্টেশন অফলাইনেই ব্রাউজ করতে চাইলে এই অ্যাপের কোন বিকল্প নাই। এছাড়াও এতে আছে সুন্দর একটি snippet ম্যানেজার। ব্যাসিক ভার্সন ফ্রি.
  29. Dr. Cleaner ম্যাকের জন্য প্রয়োজনীয় একটি ইউটিলিটি অ্যাপ। এর মাধ্যমে একাধারে ডিস্ক ক্লিন আপ, মেমরি ক্লিনআপ এবং সিস্টেম অপটিমাইজেশনের মত কাজ গুলো সহজেই করা যায়। এর মাধ্যমে- সাইজ মোতাবেক পুরো ম্যাকের সব ফাইলকে লিস্ট করা যায় যাতে করে কোন ফাইল বা অ্যাপ কেমন জায়গা নিচ্ছে তার একটা আইডিয়া পাওয়া যায় এবং প্রয়োজনে সেটা ডিলিট বা রিমুভ করা যায়.
  30. AppCleaner ম্যাক থেকে যেকোনো রকম অ্যাপ, উইজেট বা প্লাগিন পুরোপুরি আনইন্সটল করতে চাইলে এই ছোট্ট অ্যাপটি আপনাকে সলিড কাজ করে দেখাবে।
বিঃ দ্রঃ এই লিস্টের বাইরেও আরও অনেক প্রয়োজনীয় এবং গুরুত্বপূর্ণ অ্যাপ/টুল আছে যেগুলো নির্দিষ্ট কাজের জন্য নির্দিষ্ট ইউজারের কাছে দরকারি।

macOS -এ আপনি কি কি অ্যাপ ব্যবহার করে থাকেন এবং কোন সাজেশন থাকলে কমেন্ট করুন নিচে

৫ টি পাইথন কথন

Standard

পাইথন কথন ১ঃ

#! /usr/bin/env python

এটা কি?

অনেক পাইথন স্ক্রিপ্ট এর শুরুতেই এরকম একটা লাইন দেখতে পাওয়া যায়। আসলে এর মাধ্যমে নির্দিষ্ট করে এই স্ক্রিপ্টটির ডিফল্ট ইন্টারপ্রেটার কোনটা হবে সেটা ডিফাইন করে দেয়া হয়।
অর্থাৎ টার্মিনালে chmod +x file.py কমান্ড দিয়ে file.py কে এক্সিউকিউটেবল বানিয়ে অতঃপর ./file.py কমান্ড দিয়ে সেটাকে এক্সিকিউট করতে চাইলে তার জন্য কোন ইন্টারপ্রেটার ব্যবহার হবে সেটা নির্ধারণ করে দেয়া হয়। এখানে Unix টাইপ সিস্টেমের ডিফল্ট পাইথনকে উক্ত স্ক্রিপ্ট বা ফাইলের ইন্টারপ্রেটার হিসেবে উল্লেখ্য করে দেয়া হচ্ছে। কিন্তু কিভাবে?
env হচ্ছে Unix সিস্টেমের মধ্যে থাকা একটা এক্সিকিউটেবল বাইনারি যে কিনা উক্ত সিস্টেমের সব এনভ্যায়রনমেন্ট ভ্যারিয়েবল গুলোকে খুঁজে নিতে পারে। তাই এর মাধ্যমে বস্তুত Python এর এক্সিকিউটেবল python -কে এই স্ক্রিপ্ট এর জন্য ব্যবহার করতে বলা হচ্ছে।
যেহেতু এই লাইনটির উদ্দেশ্য হচ্ছে Python কে চিনিয়ে দেয়া। তাই নিচের মত করেও এটা ডিফাইন করা যায়।

#! /usr/bin/python</code>

ধরে নিচ্ছি এটাই ওই সিস্টেমের python এর পাথ। কিন্তু এটা অ্যাবস্যুলেট পাথ। এক এক সিস্টেমে এক এক পাথে python থাকতে পারে। আমি আমার সিস্টেমে which python কমান্ড ইস্যু করে এটা পেয়েছি তাই এটা লিখলাম। এই অ্যাবস্যুলেট পাথের ঝামেলা মেটাতেই /usr/bin/env ব্যবহার করে python কে খুঁজে (যেখানেই থাকুক) সেটাকে ব্যবহার করতে বলা হয়।
এতক্ষণে বুঝে ফেলার কথা কিভাবে আমার এক্সিকিউটেবল পাইথন স্ক্রিপ্ট গুলোকে আমি Python 3 দিয়ে সবসময় রান করাতে পারবো। আমি স্ক্রিপ্টের শুরুতে নিচের মত করে Shebang লিখবো,

#! /usr/bin/env python3

পাইথন কথন ২ঃ
অনেকেই অফিসিয়াল ডকুমেন্টেশন থেকে বিভিন্ন ফাংশনের Signature পড়ার সময় বুঝে উঠতে পারে না আসলে এর প্যারামিটার গুলো কি। যেমন – round(number[, ndigits])
https://docs.python.org/3/library/functions.html#round

এটাকে বলে ফাংশন সিগনেচার। এর মাধ্যমে বুঝে নিতে হয় এই ফাংশনের প্যারামিটার গুলো কি এবং কেমন। যেমন এই ফাংশনের প্রথম প্যারামিটার ‘number’ অবশ্যই দিতে হবে অর্থাৎ Compulsory. আবার [, ] দিয়ে বোঝানো হয় এই প্যারামিটার গুলো Optional. আর তাই, [ ] এর বাইরে যেগুলো থাকবে সেগুলো অবশ্যই দিতে হবে আর ভিতরে যেগুলো থাকবে সেগুলো না দিলেও ওই ফাংশন কাজ করবে। কিন্তু,
[ ] এর মধ্যে থাকা অপশনাল প্যারামিটার গুলোর মধ্যে কিছু ডিপেন্ডেন্সিও থাকতে পারে। যেমন – RegexObject.match(string[, pos[, endpos]])
এখানে বোঝানো হয়েছে ‘endpos’ পাস করলে অবশ্যই ‘pos’ -ও পাস করতে হবে। তাই এগুলো একটা নেস্টেড ব্র্যাকেটের মধ্যে নির্দেশ করা হয়েছে। আবার শুধু ‘pos’ দিয়ে ‘endpos’ না দিলেও চলবে।

পাইথন কথন ৩ঃ
Python প্রোগ্রাম বলতে আমরা যা ব্যবহার করি তা হচ্ছে CPython. এই, CPython হচ্ছে আসলে Python এর একটা ডিফল্ট এবং বহুল ব্যবহৃত ইমপ্লিমেন্টেশন। এই ইমপ্লিমেন্টেশন জিনিষটা কি?
Python বা অন্য প্রোগ্রামিং ল্যাঙ্গুয়েজ গুলো হচ্ছে ফর্মাল ল্যাঙ্গুয়েজ অর্থাৎ একটু এদিক সেদিক করে এসব ভাষা ব্যবহার করলে কাজ হবে না। এটা বাংলা বা ইংলিশ এর মত ইনফর্মাল না যে – মুরাদ টাকলাদের ভাষাতেও কিছু লিখলে বুঝে নেয়া যায়।
যাই হোক সিমপ্লি, ল্যাঙ্গুয়েজ রেফারেন্স হিসেবে চিন্তা করলে Python -কে একটা ইন্টারফেসও বলা যেতে পারে। যারা প্রোগ্রামিং করেন তারা এই টার্ম সম্পর্কে জানেন – ইন্টারফেস হচ্ছে এক ধরণের অ্যাবসট্র্যাকশন যার মাধ্যমে নির্ধারণ করে দেয়া হয় একটা নির্দিষ্ট কাজ কিভাবে হবে কিন্তু ইমপ্লিমেন্টেশনটা যার যেমন ইচ্ছা সেভাবে করবে। তাই, CPython বস্তুত Python এর Language Reference মেনে C দিয়ে করা একটা ইমপ্লিমেন্টেশন। আবার, CPython -ই হচ্ছে Python প্রোগ্রামের ইন্টারপ্রেটার 😛

একটা পাইথন প্রোগ্রামের এক্সিকিউশনের ধাপ গুলো এরকমঃ

Python Source Code (.py) -> Compiler -> Bytecode (.pyc) -> Interpreter (VM/CPython) -> Output (Hello World!)

যখন নির্দিষ্ট কোন কাজের সাপেক্ষে বলা হয় Python স্লো বা ফাস্ট তখন আসলে দোষ বা বাহবা যেটাই দেয়া হোক, দিতে হবে CPython কে অথবা ওই নির্দিষ্ট ইমপ্লিমেন্টেশনকে 🙂
Python এর এরকম আরও অনেক ইমপ্লিমেন্টেশন আছে। যেমন- Jython, IronPython, PyPy ইত্যাদি। Jython এর ক্ষেত্রেও বিষয়টা একই। অর্থাৎ – Python নামক ফর্মাল ল্যাঙ্গুয়েজের ইমপ্লিমেন্টেশন করা হয়েছে Java তে। তাই Python এর এই ভার্সনেও স্বাভাবিক Python এর সিনট্যাক্স মোতাবেকই প্রোগ্রাম লেখা যাবে এবং প্রোগ্রাম রান করালে এর পিছনে আসলে কলকাঠি নাড়বে Java.
অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজের ক্ষেত্রেও বিষয়টা এরকম। যেমন, যদি বলা হয়ঃ C++ is implemented in C. এর মানে সহজ ভাবে বলতে গেলেঃ C++ এর কম্পাইলার C দিয়ে তৈরি 🙂
আরেকটা কথা, উপরের এক্সিকিউশনের ধাপ অনুযায়ী Python কে ইন্টারপ্রেটেড বা কম্পাইল্ড ল্যাঙ্গুয়েজ কোনটাই বলা যাবে না (সিরিয়াসলি?)। আসলে Python কিন্তু ইন্টারপ্রেটেড বা কম্পাইল্ড না। যদি এই বৈশিষ্ট্য কাউকে দিতেই হয় তাহলে CPython কে দিতে হবে।
CPython ইন্টারপ্রেটেড কিন্তু (আবার কি?) তার আগে একটা কম্পাইলেশন স্টেপ আছে 😛 যেটা [প্রোগ্রাম টু প্রসেসর] কনসেপ্ট অনুযায়ী এখানে অগ্রাহ্য)

পাইথন কথন ৪ঃ

# -*- coding: utf-8 -*-

এই কমেন্ট লাইনটাকে অনেক পাইথন স্ক্রিপ্টের শুরুতেই দেখা যায়। একটু একটু বোঝা যায় যে এখানে এনকোডিং ডিফাইন করে দেয়া হয়েছে। কিন্তু কিসের এবং কেন? কার জন্যই বা দরকার এটা?
প্রথমেই জানতে হবে কম্পিউটারের সাথে টেক্সট নিয়ে কাজ করতে হলে তাকে টেক্সট গুলো চেনাতে হয়, আর আমরা সবাই জানি কম্পিউটার 1, 0 ছাড়া আর কাউকেই চেনে না। তো এনকোডিং এর সহজ মানে হচ্ছে একটা ম্যাপিং টেবিল যেখানে বলা আছে A এর মানে 01000001 (এটা ASCII এনকোডিং/টেবিল)। কিন্তু এই টেবিলে দুনিয়ার সব ভাষার সব ক্যারেক্টার এর সাপেক্ষে এরকম কম্পিউটার উপযোগী কোড নাই। এদিকে আমাদের প্রোগ্রাম লিখতে বা টেক্সট ফাইল লিখতে সেই ক্যারেক্টার গুলো লাগতেই পারে। তাই এরকম আরও একটা বিশাল লম্বা টেবিল আছে, utf-8 এনকোডিং/টেবিল। এই টেবিলে বাংলা “ক” সাপেক্ষেও একটা বাইনারি পাওয়ার ব্যবস্থা আছে।
তো আমাদের পাইথন প্রোগ্রামে যদি এরকম ASCII এর বাইরের ক্যারেক্টার থাকে তাকে চেনাতে হলে ফাইলের শুরুতে বলে দিতে হবে যে – ভাই পাইথন তুমি আমার এই সোর্স ফাইলকে দয়া করে utf-8 টেবিল/এনকোডিং মোতাবেক পার্স করিয়ো নাহলে বুঝবা না আমি ফাইলে কি লিখছি 🙂
নিচের প্রোগ্রামটা যদি একটা Test.py ফাইলে লিখে পাইথন ২ দিয়ে রান করাই,

name = "নুহিল"
print(name)

তাহলে আউটপুট আসবে,

File "Test.py", line 3
SyntaxError: Non-ASCII character '\xe0' in file Test.py on line 3

তাই ওই Test.py কে আপডেট করে নিচের মত করতে হবে,

# -*- coding: utf-8 -*-
name = "নুহিল"
print(name)

এবার ঠিকঠাক রান করবে। আর হ্যা, ঠিক # -*- coding: utf-8 -*- এভাবেই যে সোর্স ফাইলের এনকোডিং ডিফাইন করতে হবে তাও কিন্তু না। # Please encoding: utf-8 (সত্যি) এরকম লিখলেও পাইথন বুঝে যাবে 🙂
শেষ কথা, এই ঝক্কি ঝামেলা কিন্তু Python 3 তে করতে হবে না কারন পাইথন ৩ ডিফল্ট এনকোডিং হিসেবে utf-8 কেই ধরে নেয় 😀

পাইথন কথন ৫ঃ

if __name__ == "__main__":

এই লাইনটা অনেক পাইথন ফাইলে দেখে ঘাবড়ে যাবার কিছু নাই। আমরা বোঝার চেষ্টা করি কেন লোকজন এই অদ্ভুত if কন্ডিশনটাকে তাদের পাইথন স্ক্রিপ্টে লিখে।
পাইথন ইন্টারপ্রেটার একটি প্রোগ্রামের এক্সিকিউশনের আগে যখন একটি সোর্স ফাইলকে পার্স (পড়ে) করে তখন সে এর জন্য কিছু স্পেশাল ভ্যারিয়েবল সেট করে। যখন স্বাধীনভাবে কোন পাইথন স্ক্রিপ্টকে রান করানো হয় তখন স্বয়ংক্রিয়ভাবে এর জন্য একটি __name__ নামের ভ্যারিয়েবল তৈরি হয় যার ভ্যালু সেট করা হয় স্ট্রিং “__main__” .
তাই আমরা যদি চাই আমাদের স্ক্রিপ্ট এর মধ্যেকার কিছু স্টেটমেন্ট শুধুমাত্র তখনি কাজ করুক যখন এটা একটা স্ট্যান্ডঅ্যালোণ স্ক্রিপ্ট হিসেবে রান করবে তখন বুদ্ধি করে এরকম একটা if কন্ডিশন লিখে তার মধ্যে ওগুলো লিখবো। কারন আমরা তো জানিই যে এই if কন্ডিশন তখনি সত্য হবে যখন এই স্ক্রিপ্টটা শুধু স্ক্রিপ্ট হিসেবেই রান হবে।
যেমন আমাদের যদি নিচের মত একটা প্রোগ্রাম থাকে Nuhil.py ফাইলে,

def my_module_func():
    print("Nuhil Mehdy")

if __name__ == "__main__":
    print("Nuhil")

তাহলে আমরা যখন python Nuhil.py এভাবে একে রান করাবো তখন আউটপুট আসবে,
Nuhil
কিন্তু (আবার কি হল?),
যদি এই Nuhil.py কে আরেকটি পাইথন ফাইল যেমন Mehdy.py এর মধ্যে মডিউল হিসেবে import করি তখন কিন্তু পাইথন এই Nuhil.py ফাইল পার্স (পড়ার সময়) করার সময় __name__ নামের ভ্যারিয়েবলের জন্য “__main__” ভ্যালু সেট করবে না। আর তাই if কন্ডিশনটা মিথ্যা হবে। তো, Mehdy.py এর কোড যদি হয় নিচের মত,

import Nuhil
Nuhil.my_module_func()

তাহলে আউটপুট আসবে,

Nuhil Mehdy

এবং সুন্দর মত print("Nuhil") স্টেটমেন্টটি গু(?)পনেই থেকে যাবে

এঞ্জিনএক্স, পিএইচপি, মাইএসকিউএল এর ইনস্টলেশন, কনফিগারেশন এবং সার্ভার ব্লক (ভার্চুয়াল হোস্ট) তৈরি

Standard

সবার জন্য প্রোগ্রামিং

সার্ভারের প্রাথমিক এবং ব্যাসিক কনফিগারেশন

1. নতুন তৈরি হওয়া সার্ভারে root ইউজার হিসেবে লগইন করুন নিচের কমান্ড দিয়ে

2. নতুন একটি ইউজার তৈরি করতে কমান্ড দিন নিচের মত। এখানে নতুন ইউজারের নাম demo

3. নতুন ইউজারকে root ইউজারের সমতুল্য অধিকার দিতে তাকে sudo গ্রুপে যুক্ত করুন

4. পাসওয়ার্ডের পরিবর্তে পাবলিক কি দিয়ে অথেনটিকেশন এর ব্যবস্থা

  • আপনার লোকাল মেশিনে এক জোড়া কি তৈরি করতে কমান্ড দিন (~/.ssh ডিরেক্টরির মধ্যে তৈরি করা ভালো)
  • পাবলিক কি এর কন্টেন্টকে রিমোট সার্ভারে কপি করতে প্রথম এর কন্টেন্ট প্রিন্ট করতে কমান্ড দিন

    এরপর স্বাভাবিকভাবে পুরো আউটপুট সিলেক্ট করে কপি করুন

  • সার্ভারে root ইউজার হিসেবে লগডইন থাকা অবস্থায় নিচের কমান্ড দিয়ে নতুন ইউজার হিসেবে লগইন করুন

    এ অবস্থায় আপনি demo ইউজারের home ডিরেক্টরিতে থাকবেন

  • demo ইউজারের home ডিরেক্টরিতে .ssh নামের একটি ডিরেক্টরি তৈরি করতে এবং সেটার যথাযথ পারমিশন সেট করতে নিচের দুটো কমান্ড পর পর দিন:

  • ওই ডিরেক্টরির মধ্যে authorized_keys নামের ফাইল তৈরি/এডিট করুন

    এবার লোকাল মেশিনের…

View original post 591 more words

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

Standard

সবার জন্য প্রোগ্রামিং

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

View original post

parse.com এপিআই ব্যাবহার করে একটি সাধারণ জাভাস্ক্রিপ্ট ওয়েব অ্যাপ তৈরি

Standard

সবার জন্য প্রোগ্রামিং

ভূমিকা

মোবাইল বা অন্যান্য ফ্রন্টএন্ড প্ল্যাটফর্মের জন্য অ্যাপ ডেভেলপমেন্টের সময় প্রায় অর্ধেকেরও বেশি সময় দিতে হয় ব্যাকএন্ডে অর্থাৎ ওই অ্যাপ এর জন্য ডাটাবেজ তৈরি, সার্ভার সাইড লজিক ডিপেন্ডেণ্ট অ্যাপ তৈরি, ফ্রন্টএন্ডের জন্য এপিআই প্রোভাইডার তৈরি এবং সর্বোপরি সেই সার্ভারটা ম্যানেজমেন্ট এর জন্য টিম তৈরি। এসব কিছু অন্য একটা নির্ভরযোগ্য মাধ্যমের কাছ থেকে পেয়ে গেলে আপনার মনোযোগ তখন শুধু থাকবে ফ্রন্টএন্ড অ্যাপ তৈরিতে। এরকম একটি [ব্যাকএন্ড অ্যাজ অ্যা সার্ভিস] হচ্ছে parse.com

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

সবচেয়ে মজার ব্যাপার হচ্ছে এটা একটা ফ্রি সার্ভিস (৩০ এপিআই কল পার সেকেন্ড), ফেসবুকের তত্ত্বাবধানে থাকা একটি কোম্পানি এবং মোটামুটি সব রকম সফটওয়্যার ডেভেলপমেন্ট প্ল্যাটফর্মের জন্য parse এর লাইব্রেরী/এসডিকে আছে…

View original post 1,232 more words