Tag Archives: hack

ভবিষ্যতের ইতিহাস

ইতিহাস, হঠাৎ হয়না; তবে হয়েই যায়। ইতিহাস অনুমান করা যায়না, তবে আঁচ করা যায়। আমার মত যারা মজিলা মিশনে বিশ্বাস করেন; তারা অবশ্যই আশা করি যে, “ফায়ারফক্স ওএস একদিন অনেকটা বাজার দখল করবে।” আর বাজার দখলের শতাংশে ভবিষ্যতে, আমার আলোচ্য বিষয়টি অনেক বড় এবং গুরুত্বপূর্ণ বলেই বিবেচিত হবে বলে আমি বিশ্বাস করি। আমি এক্সাইটেড না, আমি বুঝে শুনেই বলছি, বর্তমানে বাংলাদেশ হতে যতজন মজিলিয়ান, মজিলা মিশনে অবদান রাখছেন, তন্মধ্যে অন্যতম, অনিরুদ্ধ অধিকারী। তিনি আমাদের মধ্যে অন্যতম। তিনি আমাদের প্রাণের ভাষাকে ফায়ারফক্স ওএস এ স্থায়ী করতে প্রথম উদ্যোগ নেন  এবং এ পর্যন্ত সবচে বেশী কর্ম ঘন্টা ব্যয় করে আরও অনেক গুলো ভাষা সম্পর্কিত গুরুত্বপূর্ণ কাজ করে চলেছেন।

ফায়ারফক্স ওএস, মজিলা ফাউন্ডেশন কর্তৃক ডেভেলপড করা একটি মোবাইল অপারেটিং সিস্টেম। বিস্তারিত পড়ুন আমার আরেকটি অনুবাদ-ব্লগে। মজিলার বেতনভুক্ত ডেভলপাররা রাতদিন পরিশ্রম করে চলেছেন, একটি মানসম্পন্ন মোবাইল ওসএ উন্নয়ন করতে। বেশকিছু ভাষা তার স্থাপন করেছেন ওএস টিতে, আরও ভাষা অন্তর্ভুক্ত করবেন নিকট ভবিষ্যতে। কিন্তু আমাদের অনিরুদ্ধ অপেক্ষা করেননি, ২০১৩ এর একুশে ফেব্রুয়ারীর দিন সাবমিট করে দিয়েছিলেন একটি বাগ(bug), অনেকটা বিদ্রোহীর মত। অনেক আলোচনা-সমালোচনার পর, অনেকদিন পর মজিলা বাগটি আমলে নিয়ে, অনিরুদ্ধ এর কথা মত ফায়ারফক্স ওএসের কোডে, বাংলা ভাষাকে স্থান করে দেয়।

ani'sbug

অনিরুদ্ধের সেই বাগ। ছবিতে ক্লিক করে bugizlla তে যাওয়া যাবে।

for techie – অনিরুদ্ধ ২১ শে ফেব্রুয়ারী, B2Gতে বাংলা ফন্ট রেন্ডার না হওয়ার সমস্যা জানিয়ে bugzilla তে, বাগ সাবমিট করেন সন্ধ্যা ৭টা ১১ মিনিটে। সেটির সমাধানকল্পে, ৭টা ৪৫মিনিটে বাংলা ফন্টের জন্যে পুল রিকোয়েস্ট করেন। পরের দিন, patch তৈরী করে সংযুক্ত করে দেন বাগে। ১৫ই অক্টোবর পুল রিকোয়েস্ট মার্জ করে মজিলা আর বাগটি resolve করে fix করে দেয়।

আর আমরা পাই, ফায়ারফক্স ওএস এ বাংলা দেখার সৌভাগ্য।

DSC_1036

গিকস্ ফোনের তৈরী পিক মডেলের ফোনে, ফায়ারফক্স ওএস এ বাংলা।

মজার বিষয় হল, অনি বাংলা হরফ ব্যবহার করে, এমন সকল ভাষারই উপকার করেছে।

(লেখাটি আংশিক, এ সপ্তাহে হরতালে আরও কিছু লিখবো এটিতে। শেষ করে অনিকে উৎসর্গ করবো। Tribute এর মত।)

লিঙ্কসিস (Linksys) BEFW11S4 রাউটার দিয়ে ওয়াইফাই একসেস পয়েন্ট

এক শুভাকাঙ্খী একটি রাউটার উপহার দিয়েছিলেন। তিনি বিভিন্ন বিদেশী দূতাবাসে বৈদ্যুতিক মিস্ত্রী হিসেবে কাজ করতেন। বিদেশী নাগরিকদের ব্যক্তিগত আমোদের জিনিসপত্র মেরামত করতেন বিনামূল্যে, ওদের বাসায় গিয়ে। এজন্যে ওরাও আমার এই শুভাকাঙ্খি বড় ভাইটিকে আদর ও স্নেহ করতেন। সেই সুবাদে চাকরী শেষে দেশে ফেরতগামী ভিনদেশীদের পুরাতন ব্যবহার্য্য জিনিসপত্র ক্রয় করে সেগুলো পুনরায় মেরামত করে বিক্রয় করতেন। তিনি আমাকে বছর চারেক পূর্বে একটি ভোল্টেজ স্টাবিলাইজার এবং ১১০ ভোল্টে চালনার উপযোগী এডাপ্টার সহ, একটি লিঙ্কসিস রাউটার উপহার দিয়েছিলেন। তখন আমার বাসায় ওয়্যারলেস পূর্বে হতেই ছিলো, তাই সেটি আর ব্যবহার করিনি। অথবা হয়তো ২২০ হতে ১১০ ভোল্ট কনভার্টান কেনার আলসেমীর কারণে চেষ্টাই করিনি। এই জুনে (২০১৩) আমি ৩৮ বছর বয়সে, বাবা-মা’র হোটেল হতে বেরিয়ে নিজের ফ্লাটে উঠেছি। বাসাটি বেশ বড়ো। ফাইবার অপটিক দিয়ে ডেডিকেটেড ১ এমবি ইন্টারনেট সংযোগ নিয়ে আমার পূর্বে বেলকিন ওয়্যারলেস রাউটারে লাগিয়ে ইন্টারনেট ব্যবহার করছি। যে কোম্পানী হতে সংযোগ নিয়েছে, সেটির প্রতিষ্ঠা ২০০৪ এ আমার হাতেই হয়েছিলো। সেখানে হয়তো বেশকিছু স্ক্রিপ্ট (রেডহ্যাট) এখনও আমার গুলোই চলে। তো সেই প্রতিষ্ঠানের আমার প্রতি বিশেষ স্নেহ রয়েছে, তাই সংযোগের গতি প্রায়ই ১০এমবি বার্স্টেবল পাই। যাইহোক, এত স্পীড ও এত বড় বাসায় একটি ওয়ারলেস রাউটার দিয়ে আমার বেতার যন্ত্রগুলোর সু-ব্যবহার হচ্ছিলো না।

primary_tplink_OpenWRTএকটি TP Link রাউটারকে ফ্লাশ করে OpenWRT দিয়ে ফাইন টিউনিং করেও বেশী নেটওয়ার্ক কাভারেজ পাইনা, দশতলা বিল্ডিং এর মোটা মোটা কলাম আর দেওয়ালের জন্যে। চিন্তা করলাম আরেকটা একসেস পয়েন্ট লাগবে। সেই লিঙ্কসিস রাউটারটিকে একটি ইন্টারনেট একসেস পয়েন্ট বানাতে বসেছিলাম আজকে।

লিঙ্কসিসের BEFW11S4 মডেলটি একসেস পয়েন্ট হিসেবে ব্যবহারের জন্যে একক্লিক জাতীয় কোন ডিফল্ট সেটিংস নেই। আমার মনে হয়, এটি নিতান্তই ঘরোয়া প্রয়োজনে একটি প্রাথমিক ওয়াইফাই রাউটার হিসেবে ব্যবহারের জন্যে ডিজাইন করা হয়েছে। এর লাস্ট ফার্মওয়্যার আপডেট হয়েছিলো ২০০৫ সালে, অর্থ্যাৎ প্রায় ৮বছর পূর্বে মাল এটি। আমার যা প্রয়োজন তা হলো একটি একসেস পয়েন্ট যা আমার সকল ওয়াইফাই ডিভাইসসমূহ ইথারনেট এর সাথে ব্রিজ করা। আমার প্রধান বেতার রাউটারটি ফ্লাটের এক কোনায় রাখতে হয়েছে, ফাইবার অফটিক মিডিয়া কনভার্টের সাথে যুক্ত করার প্রয়োজনে। তাই সেটি সবগুলো ঘর হতে ভাল মাত্রায় নেটওয়া্র্ক পাওয়া যায় না।

linksysসফটড্রিংকস এর ক্যান কেটে দুইটা প্যারাবলা টাইপ বুস্টার লাগিয়েছি। dBm ৬০থেকে কমে ৪৫ হয়েছে।

DlSpeed1mbবেতারে, নিম্নভরণ এর গতি ভালই পাচ্ছি।

আমি জানতাম প্রয়োজনীয় কনফিগারেশন করতে পারলেই যেকোন কমদামা বেতার রাউটারকে AP (একসেস পয়েন্ট) বানানো যাবে – সঠিক উপায়ে এটি করতে পারলেই হলো। আমি BEFW11S4 এর আচরণ AP তে পরিবর্তন করতে যা করেছি:

এক পলকে যা করেছি।

সর্বপ্রথমে যা মনে রাখতে হবে, তা হলো এই লিঙ্কসিস রাউটার দিয়ে কোন রাউটিং করানো হবে না,  এটি শুধু ব্রিজিং করবে। অতএব, পেছনের ইন্টারনেট (বা wan) পোর্ট এ আমার কোন কাজ নাই, এর বদলে আমি রাউটারটিকে পেছনের চারটি ল্যান (LAN) পোর্টের একটিতে লাগিয়ে দিবো।

  • লিঙ্কসিস এর ওয়েব ম্যানেজমেন্ট এর admin পেজ এ গেলাম।
  • সেখান থেকে Advance routing এ গিয়ে NAT নিস্ক্রিয় করে দিলাম।
  • ওয়ারলেস সিকিউরিটি ট্যাব এ গিয়ে WEP/WPA ব্যাবহার করে নিরাপত্তা নিশ্চিত করতে হবে
  • Basic Setup এ গিয়ে Local DHCP server নিস্ক্রিয় করে দিতে হবে। এক নেটওয়ার্কে দুইটা সার্ভার এর দরকার নাই। মূল রাউটার (OpenWRT তে চলছে) সকলকে আইপি এড্রেস এসাইন করবে।
  • Internet type এ IP address manually সেট করে দিলাম। কারণ, আমরা ইন্টারনেট পোর্ট ব্যবহার করবো না। এই রাউটারের ইন্টারনেট এর বিষয়ে আমরা চিন্তিত নই।
  • local address এ মূল (OpenWRT) রাউটারের নেটওয়ার্ক (10.0.0.1) রেঞ্জের দূরবর্ত কোন আইপি ঠিকানা লিখবো। আমি x.x.1.100 করেছি।
  • Linksys রাউটারের LAN (WAN বা ইন্টারনেট পোর্ট নয়) পোর্টে, একটি ক্রসওভার (যদিও নতুন সব রাউটারে প্রয়োজন নেই, আজকাল বেশীরভাগ নেটওয়ার্ক যন্ত্রপাতি “ক্রসওভার এবং স্ট্রেইট” বুঝে নিতে সক্ষম) ইউটিপি ক্যাবল দিয়ে প্রধান রাউটারের যেকোন ল্যান পোর্টে লাগাতে হবে।‌‌

ব্যস, পেয়ে গেলাম আমার একসেস পয়েন্ট। আমার পুরা ফ্ল্যাট ওয়াইফাই হটস্পট হয়ে গেছে। বাইরে কতদূর পাওয়া যায় কাল ট্রাই করে দেখবো এন্ড্রয়েড এর WiFi Analyzer এপ দিয়ে।

কার্নেল হ্যাক সম্পর্কে জানতে চাই সেই সাথে কিভাবে কন্ট্রিবিউট করা যায় সেটাও

nixers গ্রুপে, তপন কুমার দাস এর একটি স্টাটাসে প্রভাবিত হয়ে এই আধখেঁচড়া ব্লগটি লিখছি। কারো কারো কাজে লাগতে পারে। আবার অনেকের কাজে নাও লাগতে পারে। এক ঘন্টায় এটি লিখলাম। কাল ডিজিটাল ওয়ার্ল্ডের উদ্বোধনী অনুষ্ঠানে যাব সকাল নটায়, এখন রাত আড়াইটা। পরে, প্রয়োজনীয় সম্পাদনা করবো।

শিরোনামটি তার স্টাটাস হতে নেওয়া। এটি ছিলো তার জিজ্ঞাসা। আমি শুধু কার্নেল নয়, যেকোন ওপেন সোর্স প্রকল্পে কি উপায়ে কন্ট্রিবিউট করা যায়, সেটি জেনেরিক উপায়ে লিখার চেষ্টা করেছি।

– এক বা একাধিক লিনাক্স ডিস্ট্রিবিউশন ইনস্টল করুন। *nix এর মজাই এখানে, আপনার পছন্দের অপশন অনেক, অগুনিত। (অফটপিক: একাধিক ডিস্ট্রো থাকাটাকে আমরা ভালভাবে না নিয়ে, একে অপরের সাথে ডিস্ট্রো ফাইট করি।)

– পড়তে হবে, বই পড়তে হবে। বিকল্প নাই। একটি জেনেরিক বই আছে, এটি কোন ডিস্ট্রো ভিত্তি করে লেখা হয় নাই। আমার জীবনের সর্বশ্রেষ্ঠ বই এটি, আমার কোন ব্যক্তি গুরু নাই, এটিই আমার গুরু। যেমন শিখদের গুরু গ্রন্থ সাহিব। বইটির নাম – Running Linux. লিখেছেন : Terry Dawson, Matthias Dalheimer, Matt Welsh। প্রকাশ করেছে O’Reilly। লিনাক্স বুঝতে প্রায় সকল উপকরণ রয়েছে এই বইতে। লেখকবৃন্দ, লিনাক্স ব্যবহারকারীদের গুরুত্বপূর্ণ সকল সমস্যা এই বইতে আলোচনা করেছেন। তারা পরীক্ষিত ও নির্বাচিত সমস্যাসমূহের সমাধান এই বইতে সন্নিবেশ করেছেন।

– Replicate করুন। যদি আপনি replicate করতে না পারেন, তাহলে this is not science। আপনার পছন্দের ডিস্ট্রো replicate করুন। কিভাবে করবেন?

– আপনার লিনাক্স ডিস্ট্রোর সোর্স হতে বাইনারি বিল্ড করুন। আপনি একবার বাইনারি বিল্ড করতে পারলে, জেনে যাবেন সকল প্রকার প্রাক-প্রস্তুতি। আর বিল্ড করার সময় যত বেশি সমস্য হবে, ততই আপনি উপকৃত হবেন। প্রতিটি সমস্যার বিপরীতে শত সমাধান পাবেন, গুগল করে। গুগল সার্চ রেজাল্টে প্রাপ্ত মেইলিং লিস্টের আর্কাইভ সমূহ, বিভিন্ন ফোরাম পোস্ট, ব্লগ নিবন্ধ – পড়ুন! মনোযোগ দিয়ে পড়ুন! ধীরে অতি ধীরে হৃদয়ঙ্গম করে পড়ুন!

– সোর্স checkout করুন। সোর্স থেকে বাইনারি বিল্ড করুন, এতে আপনি নিজেই অনুধাবন করতে পারবে, আপনার কি কি কনফিগারেশন অপশন প্রয়োজন। (আপনি যদি একবার নিজে নিজে বাইনারি বিল্ড করতে পারেন, আপনি প্রস্তুত)।

– ওপেন সোর্স একটি সামাজিক মিথস্ক্রিয়া। ওয়ান ম্যান আর্মি দিয়ে ওপেন সোর্স এর কাজ হয় না। পৃথিবীর বিভিন্ন প্রান্তের হ্যাকার, কন্ট্রিবিউটরদের সাথে যোগাযোগ উন্নয়ন করুন। তাদের জিজ্ঞেস করুন। মিশতে শিখুন। show off করবেন না। wanna be দের তারা WTF দিয়ে উড়িয়ে দিবে। আমাদের দেশে আবার wanne be – আমেরিকানো মাস্তানো বেশী।

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

– মেইলিং লিস্ট, আইআরসি – হচ্ছে ফ্রী ও ওপেন সোর্স কমিউনিটির যোগাযোগের চ্যানেল। হ্যাঁ যদিও এগুলো প্রাগৈতিহাসিক মনে হতে পারে। এগুলো আমার-আপনার জন্মের পূর্বে এসেছে, মেনে নিন। Deal with it। কোন মেইলিং লিস্টে বা আইআরসি চ্যানেলে আপনার প্রথম প্রশ্নটি যেনো – সেই প্রকল্পের সমালোচনা না হয়। প্রতিটি ওপেন সোর্স প্রকল্প অনেক কষ্টের ফসল। কেউ চাইবে না একজন নতুন লোক এসে – ঠা ঠা ঠা গোলাগুলি আরম্ভ করে দিক। এটি বাংলাদেশি স্টাইল, দৃষ্টি আকর্ষনের সহজ উপায় গালি দেওয়া। এটি করবেন না। পছন্দ না হলে, সেই প্রকল্পে যোগদানের প্রয়োজন নেই। নয়তো – আপনাকে এক কাপ গরম গরম shut the fuck up ধরিয়ে দেওয়া হবে।

– Crash! হ্যাকার জন্ম নেবার মুহূর্ত! যখনই কিছু ক্র্যাশ করবে, আপনাকে আনন্দিত হতে হবে। আপনার কাজ হবে ক্রাশ এর stack trace নেওয়া। স্ট্যাক ট্রেস হলো, একটি প্রোগ্রাম চলাকালীন কোন এক মূহুর্তের, সক্রিয় স্ট্যাক ফ্রেম সমূহের রিপোর্ট। ইংরেজীতে বলি, Stack Trace is a report of the active stack frames at a certain point in time during the execution of a program। এই স্ট্যাক ট্রেস দিয়ে বাগ সাবমিট করুন নির্দিস্ট প্রকল্পের বাগ ট্র্যাকার এ। বিভিন্ন প্রকল্পের বাগ ট্র্যাকার:
https://bugzilla.redhat.com, https://bugzilla.mozilla.org, http://bugzilla.gnome.org, https://bugs.launchpad.net

– আপনি যা রিপোর্ট করবেন, তার পূর্বে অবশ্যই খুঁজে নিবেন একই সমস্যা অন্য কেউ রিপোর্ট করেছে কিনা। যদি করে থাকে তাহলে, সেটি সমাধান করা হয়েছে কিনা। তবে সমাধান করা হয়ে থাকলে, আপনার crash করার কতা না, কারণ সেটি তো অলরেডি ফিক্স হয়েই গেছে। আর যদি সমাধান না হয়ে থাকে, তাহলে মজা। সবাই মিলে সেটি ফিক্স করেছে, আপনিও তাদের সাথে ভিড়ে যান। আর যদি বাগটি রিপোর্ট করা না হয়ে থাকে, তাহলে বাগ সাবমিট করুন। যেকোন ওপেন সোর্স প্রকল্পে একটি বাগ সাবমিট, আপনার যোগ্যতার প্রমাণ। (আমি বিভিন্ন সময়ে ডেভেলপারদের ইন্টারভিউ নিয়ে থাকি। প্রার্থীর CV হাতে পেলে, তার নাম সার্চ দিয়ে দেখি, যদি ওনার নামে বিভিন্ন ওপেন সোর্স প্রকল্পে চার/পাঁচটি বাগ সাবমিট করা পাই। তাহলে তাকে ইন্টারভিউতে এক্সট্রা পয়েন্ট দেই।)

– হতে পারে, আপনার বাগ প্রকল্প বা কম্যুনিটি ফিক্স করবে না। বলে দিবে wontfix। মনে কষ্ট পাবেন না। যারা প্রকল্প পরিচালনা করছে, তারা তো আর আমাদের চাকুরি করে না।

– কি করবেন তাহলে! নিজেই ফিক্স করুন মানে হ্যাক করুন। সমাধান করতে পারলে, একটি patch ফাইল তৈরী করে প্রকল্পের আপস্ট্রিম সাবমিট করে দিন। কিন্তু না! এবারও হলোনা? প্রকল্প patch টি গ্রহন করলো না। কষ্ট নিয়েন না। কারণ, লোকজন নিজেদের কোডকে অনেক ভালবাসে, তারা হুট করে একজন নতুন লোকের প্যাচ নিয়ে নেয় না। তাদের কৈফিয়ত শুনুন, তাদের উপদেশ মেনে আবার কাজ করুন। লোকালি বিল্ড করুন, রান করুন, স্ক্রিনশট নিয়ে ব্লগ করুন, সোসাল ব্রডকাস্ট করুন। ব্যবহারকারীরা patch আপনার সাইট হতে নামিয়ে যখন দেখবে, এটি চলছে তারা ফিডব্যাক দিবে। বাতাস আপনার কল নাড়াবে। আর অবশেষে একদিন মুল প্রকল্পে আপনার কোডও কমিট করা হবে। আমি Worst Case Scenario বললাম। বেশিরভাগ সময় আপনার প্রথম patch টিই গ্রহন করা হবে। ঘাবড়ানোর কিছুই নেই। ;)

– ভাল কথা, আপনি যে আপনি। তার প্রমাণ কি? GPG key ব্যবহার আরম্ব করে দিন এখনই। অনেক স্থানে GPG সাইনিং ছাড়া patch গ্রহন করা হয় না।