Category: Highlight

  • Keyboard, Tauri, Games

    Keyboard, Tauri, Games

    এই ১৫ দিনে বেশ কয়েকটি ভিন্ন ধরণের কাজ করেছি, যা বেশ উপভোগ করেছি।

    TL-DR: Avro with GO and Rust, Learning Tauri, Making Game etc.

    ১। অভ্র

    ১.১। বড় ভাইয়ার কম্পিউটারে অভ্র কী-বোর্ড সমস্যা করছিলো। amar ৪ বার লিখছে ৪ রকম আউটপুট আসছিলো। চ্যাটজিপিটি + ম্যানুয়াল চেষ্টা করেও লাভ হয়নি।

    তাই Rust & Go দিয়ে ai দিয়ে খুবই তুচ্ছ লেভেলের অভ্র বানিয়ে দিয়েছি, তাতেও সমস্যা মেটেনি।

    ***

    ১.২। অভ্র Pascal দিয়ে বানানো। অন্য ল্যাংগুয়েজে বানাতে চাইলে কয়েকটি উপায় আছে।

    ১। অভ্র’র রিপো mugli/Avro-Keyboard তে গিয়ে রিভার্স ইঞ্জিনিয়ারিং করা।

    ২। mugli/libavrophonetic গো লাইব্রেরি ব্যবহার করা।

    ৩। omicronlab/avro-pad থেকে কোড নেয়া।

    ৪। banglatext.com এর সোর্স কোড থেকে js.download ফাইলটির কোড ব্যবহার। (অবশ্যই অনুমতি নিয়ে।)

    প্রতিটিরই সুবিধা/অসুবিধাজনক দিক আছে। সে এক অন্য আলোচনা।

    ***

    ১.৩ । আমার মত হচ্ছে- কেউ চাইলে দীর্ঘ অনেক বছর এক ল্যাঙ্গুয়েজ নিয়েই কাজ করতে পারে, ব্যস্ত থাকতে পারে। সেটি বেশিরভাগ ক্ষেত্রেই JS / php / python । কিন্তু আরো ২-৩ ল্যাঙ্গুয়েজের রানটাইম ও প্যাকেজ ম্যানেজারের নাম, খুবই ব্যাসিক Syntax এবং নিয়ম-কানুন, কোড রান ও বিল্ড করার পদ্ধতি শিখে ফেলা উচিত।

    এতে বিভিন্ন আলাদা ধরণের জিনিস নিজে করা সহজ হয়, নিজের জগতের বাহিরের অন্য অন্য জগতের মজার ও ভালো জিনিসগুলো উপভোগ করা যায়।

    রাস্টের চেয়ে গো সহজ লেগেছে + বাস্তবজগতে বেশি কাজেরও মনে হয়েছে।

    ২। Tauri

    একটানা দীর্ঘক্ষণ বসে থাকা- কিংবা আরো খারাপ- একটানা দীর্ঘক্ষণ কম্পিউটারে বসে কাজ করা তো নানারকম ক্ষতিকর। তাই Pomodoro রুল/টেকনিক ফলো করা উচিত।

    এরকমই একটি Pomodoro সফটওয়্যার হচ্ছে Stretchly। সেটি Javascript + Electron দিয়ে বানানো। সাইন ১২৮+ এমবি! ছোট্ট কাজের জন্য এত এমবির সফটওয়্যার ইন্সটল করার কোনো মানেই হয় না।

    আমি গত ১ বছরে অনেকবার Tauri এর সুনাম শুনেছিলাম। তাই Tauri-তে কোনোরকম তাড়াহুড়া + ai দিয়ে কনভার্ট করে দেখলাম- ৫৫ এমবি মাত্র!

    আর শুধু Go দিয়ে বানিয়ে সেটি মাত্র ৮ এমবি হয়েছে। GoModoro Timer

    edited: 15 Aug

    অ্যান্ড্রয়েডের জন্য apk বানাতে গিয়ে NDK, JAVA SDK ডাউনলোড করতে হলো। Windows 11 এর Developer mode চালু করতে হলো। (Android SDK আগেই ডাউনলোড করা ছিলো, যেহেতু কাস্টম রম ফ্ল্যাশ করার সময় লাগে।) তারপর tauri android build কমান্ডের পর Gradle ডাউনলোড হলো।

    ৩। গেমস

    Tauri শেখার উপায় হিসেবে Match the pairs গেম বানিয়েছি।

    এইসব বুদ্ধির খেলা বাচ্চাদের / কম বয়সীদের জন্য উপকারী হতে পারে।

    কম্পিউটারের জন্য

    ব্রাউজারে / মোবাইলে খেলার জন্য

    আরো অনেক কিছু। যেমন আজ সকালেই quran.bid লিংক রিডাইরেকশন।

  • I learned Python and PHP

    I learned Python and PHP

    শিখেছি = এতটুকু শিখেছি যে- environment setup, package install, syntax, অন্যের কোড দেখলে মোটামুটি বোঝা + কন্ট্রিবিউট করতে পারা। শিখেছি বলে মাস্টার হয়েছি বুঝাইনি।

    পাইথন শিখেছি শুরুতে BroCode চ্যানেলের এক ঘণ্টার ক্র‍্যাশ কোর্স

    এরপর netninja চ্যানেলের django crash course

    একই চ্যানেলের Python Playlist (এবং একটু w3schools)

    শেখার সময়: ৮ অক্টোবর থেকে পরবর্তী কয়েকদিনে।

    পাইথনের ফাংশনের প্যারামিটারের বৈচিত্র্য ভাল লেগেছে। django লারাভেলের চেয়ে সহজ ও ক্লিন মনে হয়েছে, এছাড়া ট্রেইলিং কমা ব্যাপারটা কেমন যেন!

    php শিখেছি ১৮ অক্টোবর, W3schools থেকে

    আর Laravel শিখেছি আজ ১৯ অক্টোবর, The Codeholic চ্যানেল থেকে।

    php দেখি পুরাই জাভাস্ক্রিপ্ট! 😁 প্রচুর মিল।

  • Simpack: Shopify for Bundles

    Simpack: Shopify for Bundles

    আমার ফ্রেন্ডলিস্টে একাধিক ব্যক্তি ছিলেন, যারা ‘ড্রাইভ প্যাক’ বিক্রি করতেন/করেন।

    ড্রাইভ প্যাক = জিবি, মিনিটের কম্বো বান্ডেল – যেমন ২০ জিবি ৩০০ মিনিট ৩০ দিন মেয়াদ, দাম *** টাকা। (স্বাভাবিকের চেয়ে কিছুটা/বেশ কম দাম)।

    তারা প্রতিদিন এরকম ৫-১০টা অফার/বান্ডেল পোস্ট দেন, এবং যে কিনতে চায় সে যোগাযোগ করে। তারপর বিকাশ/রকেট বা অন্য যে কোনো ভাবে পেমেন্ট করে অর্ডার করলে বান্ডেল পাঠিয়ে দেয়া হয়।

    দেখেই বোঝা যায়, এগুলো ম্যানেজ করা কঠিন। একটা দুইটা ঠিক আছে, কিন্তু একজন যদি ২০-৪০টা অর্ডার পায়, তাহলে দিন শেষে ম্যানেজ করা, হিসাব রাখা কঠিন হয়ে যাবেই।

    তাই আমি এই প্রজেক্ট করলাম।

    এখানে একজন বিক্রেতা সাইন আপ করবে। তারপর নিজের MFS / Bank এর তথ্য আপডেট করবে।

    জিবি+মিনিট, দাম ও এক্সট্রা কিছু লেখার থাকলে লিখে প্যাক বানাবে।

    তারপর নিজের লিংক শেয়ার করবে। (ইমেইল যদি হয় khalid2@gmail.com তাহলে তার লিংক হবে https://simpack.vercel.app/khalid2 । ঝামেলা কমাতে আরেক ধাপ – choose your username বানাইনি। ওটাও তো মোটেই কঠিন কিছু না।)

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


    অথেনটিকেশন ম্যানেজ করা সত্যিই কঠিন। অতীতে আমি passport.js এবং authjs ব্যবহার করলেও এবার আর ঝামেলায় যেতে চাচ্ছিলাম না।

    আমি রেডিমেড npx create-next-app -e with-supabase কমান্ড দিয়ে https://github.com/vercel/next.js/tree/canary/examples/with-supabase এটা ডাউনলোড করে ব্যবহার করেছি।

    সাইন আপ, লগিনের ব্যবস্থা এখানে করাই আছে।

    তারপর বাকিটা Supabase এর SQL ডাটাবেজ দিয়ে করা। ৪টি টেবিল।


    এটিতো কেবল শুরু। আরো অনেক কিছু করা বাকী।

    আর পেমেন্ট? প্যাকের দামের ০.২৫% – ০.৫% অথবা ৳৩০/৫০/১০০ যেটা বেশী – চার্জ করা যেতে পারে।

    বা ফিক্সড, মাসে ১০০-৩০০ এরকম কিছু। চাইলে উভয়টা রাখা যায়।

    edited: আগে টাইটেল দিয়েছিলাম – Simpack – গরীবের Shopify / Zatiqeasy

    গরীবের Shopify / Zatiqeasy বলাটা ফান করে বলা 🙂

  • Alkawsar x Gatsby

    Alkawsar x Gatsby

    যে রিয়্যাক্ট শিখেছে কিন্তু Gatsby + GraphQL শেখেনি, তার জন্য আমার দুঃখ হয়। এত সুন্দর, এত মজার জিনিস সে মিস করছে!

    আমি দেশে এবং দেশের বাহিরের বেশ কয়েকজন ‘বড়’ ব্যক্তিকে নিজেদের সাইট/ব্লগের জন্য Gatsby ব্যবহার করতে দেখেছি।

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

    ঠিক একই বিষয় ঘটেছিলো Svelte এর সাথে। উভয়েই দেশের বাহিরের- তাদের প্রজেক্টে Svelte ব্যবহার করা দেখে বুঝেছি- এটা আসলেই সেরা। এবং পরবর্তীতে Svelte শিখেছি।

    Gatsby এর সুবিধা হচ্ছে- খুব দ্রুত বেশ ফাংশনাল+ডায়নামিক সাইট বানিয়ে ফেলা যায়।

    গিটহাব পেজ বা নেটলিফাই/ভার্সেল টাইপ জিনিস দিয়ে হোস্টিং এর খরচ ০.০০ করে ফেলা যায়। ডোমেইনও না কিনলে ওয়েবসাইট পরিচালনার খরচ ০.০০।

    SSG, SSR, ISR, DSG, MPA সব আছে।

    (জানি, আরো অনেক ফ্রেমওয়ার্কেই এসব আছে, কিন্তু Gatsby তে বিভিন্ন ‘জটিলতা’ কম, শেখা সহজ।)

    ***

    আমি Gatsby প্রথম শিখেছিলাম ২৭ জানুয়ারী ২০২৪ তারিখে।

    তারপর কয়েক মাস পর আবার রিভিশন দিয়েছিলাম, তারিখটা Notion এ লেখা নেই, ব্রাউজারের হিস্টোরিতেও পেলাম না।

    আর সর্বশেষ রিভিশন দিলাম সেপ্টেম্বরের ৮ তারিখে। এবং তারপর প্র্যাক্টিস করলাম ৯-১২ তারিখ।

    ***

    আল কাউসারের সাথে পরিচিত ২০১১ থেকে। নিজে কিনে, অন্যেরটা নিয়ে বা অনলাইনে পড়ছি তখন থেকেই। এছাড়াও ‘আপনি যা জানতে চেয়েছেন’ বিভাগের মাসয়ালা-মাসায়েল তো মাঝে মাঝেই দেখি।

    ***

    আলকাউসারের ওয়েবসাইটের ডায়নামিক রাউটগুলো হচ্ছে-

    /sections সেকশন / বিভাগ – ওয়ার্ডপ্রেসের ভাষায় ক্যাটাগরি।

    /topics প্রসঙ্গ – ওয়ার্ডপ্রেসের ভাষায় ট্যাগ।

    /authors লেখক – ওয়ার্ডপ্রেসেও Author (যা user যুক্ত করলে তৈরি হয়)।

    /issues পুরাতন সংখ্যা / অতীতের প্রতি মাসের ম্যাগাজিন।

    ***

    TODO

    পেজের নিচে jump to top,

    সার্চবার,

    Dark mode যুক্ত করা।

    টেমপ্লেট ফোল্ডারের সব ফাইলের জন্য রি-ইউজেবল কম্পোনেন্ট তৈরি করা।

  • Deno and Deno Deploy™

    Deno and Deno Deploy™

    আমি আজ সহ লাগাতার ৩ দিন ডিনো এবং ডিনো ডিপ্লয় নিয়ে গবেষণা করছি। বেশ মজাই লাগছে। ডিনো প্রথমবার ব্যবহার করেছিলাম মাসখানেক আগে, জুনের শুরুতে সম্ভবত।

    ডিনো ডিপ্লয় এ KV & CRON আছে, যদিও এখন তা বেটা পর্যায়ে। আমি KV কেভি প্রথম দেখেছিলাম ক্লাউডফ্লেয়ারে। সেখানে KV+R2+PAGES এর সমন্বয়ে বেশ জটিল জিনিস বেশ সহজেই বানিয়ে ফেলা যায়।

    ১ম দিন- ১৪ জুলাই বেশি সুস্থ ছিলাম না। কিন্তু ১৫ তারিখে কাজ বেশ এগিয়ে গিয়েছিলো (একইদিনে svelte এর প্রজেক্টও github action দিয়ে deno deploy তে ডিপ্লয় করে বেশ ভাল পার্ফরম্যান্স পেয়ছিলাম, সেইসাথে CI/CD এর বাস্তব অভিজ্ঞতাও বৃদ্ধি পেয়েছিল), এবং আজ ১৬ তারিখ।

    ক্লাউডফ্লেয়ারে একদিন KV দেখার পর মনে হলো- আরো কোথাও KV দেখেছিলাম। কোথায়?

    খুব দ্রুতই মনে এসেছে, Deno Deploy™ তে!

    তারপর শুরু করলাম গবেষণা। গবেষণার বিষয়-

    ১। সেখানে ডিসকর্ড বট ২৪/৭ চালু রাখা যায় কিনা

    ২। যদি না যায়, তাহলে কোনো বিশেষ উপায়ে/হ্যাক ব্যবহার করে হলেও করা যাবে কিনা।

    আমার এখন পর্যন্ত উপলব্ধি হচ্ছে-

    ১। ডিনো ডিপ্লয় ব্যবহার করে একবার প্রজেক্ট/কোড পাব্লিশ/ডিপ্লয় করলে সেটা একবার চালু হলেও সামান্য পরিবর্তন করে আবার ডিপ্লয় করলে দুইবার কোড রান হয়। Deno.cron প্রতিমিনিটে দিয়ে দেখেছি- সেটা দুইবার করে হয় না, তবে node-cron ব্যবহার করলে সেটা একাধিকবার একই কাজ করতে থাকে। সর্বশেষ হিসাব অনুযায়ী ৬ মিনিট পর দুইবার না করে একবার করে। (৩ বার ডিপ্লয় করলে হয়ত একবার কমবে, আরো পরে ২য়টাও কমবে)

    তবে একবার ১ এ নেমে আসলে আবার ডুপ্লিকেট হবে না, এমন না। আবার হবে, যে কোনো সময়। এবং তা অটোমেটিক বন্ধও হবে।

    ২। new Map() এর ভিতরে ইউজারের ডিসকর্ড ভয়েস চ্যানেলে জয়েন টাইম সেভ রাখতাম, কিন্তু ডিনো ক্রোন মাঝে মাঝে প্রতি মিনিটের কাজ মিস করে, খুব সম্ভবত তখনই ডাটা হারিয়ে যায়। তাই KV ব্যবহার করি, ডাটা হারানো বন্ধ হয়।

  • Bytes Newsletter Theme

    Bytes Newsletter Theme

    bytes (.dev) নিউজলেটারটি আমি কয়েক মাস যাবত পড়ছি। ঐ নিউজলেটারের শেষের দিকে কিছু কোড সম্পর্কিত কুইজ থাকে, উত্তর আরো নিচে দেয়া থাকে। সেই কোডের রঙ ভাল লেগেছিল।

    ইমেইল করে জিজ্ঞেস করেছিলাম, আপনাদের কোনো থিম আছে কিনা?

    উত্তর দিয়েছে- It’s a custom theme.

    থিম বানিয়ে পাবলিশ করতে বললে রিপ্লাই দিয়েছে- Eventually. Not a ton of time right now but we plan on doing it in the future.

    আমি আজ ৫-৭ ঘন্টা খরচ করে শিখলাম ও বানালাম। আমি জানি, প্রচুর অসম্পূর্ণতা আছে, এখন শুধু html-css-js-jsx সাপোর্ট করে। কিন্তু যাই হোক, প্রথম একটা কাজ করতে পেরে ভাল লাগলো।

    শুধুমাত্র html-css-js-jsx কোডের জন্য ইচ্ছা হলে এমনেই একটু দেখতে পারেন https://marketplace.visualstudio.com/items?itemName=ZubairIbnZamir.bytes-newsletter-theme

    আমি রেকমেন্ড করবো Colorized+ ভার্সনটা ব্যবহার করতে। কারণ মূল থিম ছাই রঙ অনেক বেশি। Colorized+ থিমে আমি ছাই কমিয়ে দিয়েছি।

    আর bytes.dev নিউজলেটারটা পড়তে পারেন, আশা করি বেশ উপকৃত হবেন।

  • Learning Svelte

    Learning Svelte

    আমি গত ১৩ জুন সুভেল্ট/সভেল্ট/এসভেল্ট শেখা শুরু করেছি। তাদের https://learn.svelte.dev/ সাইটটি থেকেই শিখেছি। পরবর্তীতে একটি ইউটিউব প্লেলিস্ট শেষ করেছি।

    বেশ মজার, বেশ সহজ। তবে আগামী আপডেটে Runes কি Ruins করে দেবে?

    আমি অবশ্য এখনো নেক্সট শিখিনি।

    গতকাল ৩০ জুন ও আজ ১ জুলাই আমার পূর্বের সাইটটিকে গ্যাটসবি থেকে সুভেল্টে নিয়ে আসলাম।

    ২ জুলাই ভিউ এর একটা ক্র্যাশ কোর্স ৩ ঘন্টার মধ্যে দুই ঘন্টা দেখেই বুঝে গিয়েছি যে ভিউ-ও আর এখন কোনো ব্যাপার না।

    আপডেটঃ ৩ জুলাই লোডিং যুক্ত করা সহ আরো অনেক কিছু। চাইলে আজকেই ওপেন সোর্স করে দেয়া যেত। আরো দুই একদিন যাক।

  • A Discord bot

    A Discord bot

    প্রাথমিক ফিচার

    আমার ভাইয়ের জন্য বানানো ডিসকর্ড বটের মূল এবং প্রাথমিক রিকয়ারমেন্ট ছিলো শুধু একটি।

    সেটি হচ্ছে- ডিসকর্ড সার্ভারের ভয়েস চ্যানেলে কেউ জয়েন বা লিভ করলে বট যেন তার নাম একটি প্রাইভেট টেক্সট চ্যানেলে ম্যাসেজ পাঠায়।

    এতটুকু একজন পাইথন দিয়ে বানিয়ে দিয়েছিলো। কিন্তু uptimebot এর ফ্রি টায়ারে পরিবর্তন আনায় সেটা আর কাজ করছিলো না।

    বটের ম্যাসেজ,

    Omuk has joined General 1 at 09:06:34 PM

    Omuk has left General 1 at 11:01:02 PM

    সেশন টাইম

    discord.js দিয়ে বানানোর পর শুধু এতটুকু আমার যথেষ্ট মনে হচ্ছিলো না, তাই যখন কেউ লিভ নেবে, তখন সে কতক্ষণ ছিলো সেটা দেখানোর জন্য new Map() তৈরি করে সেখানে জয়েন টাইম স্টোর করি, লিভ নেয়ার সময় বর্তমান সময়ের সাথে বিয়োগ করে সেশন টাইম বের করি।

    এবার কেউ লিভ নিলে সহজেই জানা যায় যে- সে কতক্ষণ ছিলো।

    Omuk has left General 1 at 11:01:02 PM (session time 01:54:27)

    CRON

    তারপর আরেক ফিচার যুক্ত করতে ইচ্ছা হয়- প্রতিদিন ইংরেজি, বাংলা এবং আরবী তারিখ দেখানো। তার জন্য node-cron moment-hijri date-bengali-revised এই ৩টি প্যাকেজ ইন্সটল করে কোড যুক্ত করি।

    যেহেতু বাংলাদেশের হিজরী তারিখ সৌদি আরবের চেয়ে একদিন কম থাকে, তাই বর্তমান সময়ের/তারিখের হিজরী তারিখ না নিয়ে ২৪ ঘণ্টা আগের হিজরী তারিখ নিতে হয়।

    স্ল্যাশ কমান্ড

    স্ল্যাশ কমান্ডও পরীক্ষামূলকভাবে যুক্ত করলেও সেটা আর বাস্তবায়ন করা হয়নি। কাজ ছিলো, /msg লিখে এন্টার/টাচ দিলে ৩টি ফিল্ড আসবে, কতক্ষণ পর, কাকে, কী ম্যাসেজ দিতে চান। সেই বট নির্দিষ্ট সময়ে প্রাপককে সেই ম্যাসেজ দিয়ে দেবে।

    এখন যদি প্রাপক বটকে রিপ্লাই দেয়? সেটার জন্য আরো কোড যুক্ত করতে হয়, ফলে বট তার পাঠানো ম্যাসেজে নির্দিষ্ট সময়ের মধ্যে রিপ্লাই দিলে সেটা গ্রহণ করবে এবং সেন্ডারকে জানিয়ে দেবে।

    এবং সবশেষে- একটু ফানি কিছু করতে ইচ্ছে হয়। তাই ডিসকর্ডে আরেকটি টেক্সট চ্যানেল খুলে সেটিতে প্রতি ঘন্টায় একটি করে (পরে দিনে দুইবার) one-liner/dad-jokes পোস্ট করার জন্য cron.schedule করি। এপিআই ব্যবহার করি https://api-ninjas.com/

    গিটহাব রিপো লিংক https://github.com/2u841r/vc-watcher-discord-bot

  • My first day of AWS

    My first day of AWS

    সমস্যা

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

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

    বট বন্ধ হওয়ার কারণঃ

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

    repl.it তাদের ফ্রি প্ল্যান বন্ধ করে দিয়েছে, পুরান লিংক বন্ধ করে দিয়েছে। ফলে uptimebot যে লিঙ্কে নির্দিষ্ট সময় পরপর রিকুয়েস্ট করতো, সেই লিংক ভ্যালিড ছিলো না। ।

    uptimebot এ আগে ফ্রিতে কতক্ষণ পর পর রিকোয়েস্ট পাঠানো যেতো, জানি না। কিন্তু এখন ৫ মিনিটের কমে যায় না, সেক্ষেত্রে ফ্রি প্ল্যান নিতে হয়।

    সমাধানের পর

    discordjs দিয়ে সমাধানের পর মূলত দেখেছি যে- ফ্রিতে ২৪/৭ হোস্ট করার কোনো ফ্রি ও নির্ভরযোগ্য কোনো উপায়ই নেই!

    আমি বা ভাইয়া বা ৩য় কেউ নিজের কম্পিউটার 24/7 চালু করে রাখতে হবে।
    হয়ত কোড পাবলিক করে রাখতে হবে, সেক্ষেত্রে ডিসকর্ড অ্যাক্সেস টোকেন ঝুঁকিতে পড়ে যাবে।
    আর ভার্সেল/সার্ভারলেস তো এসবের জন্য না।

    তাই আর দেরি না করে aws ১ বছরের ট্রায়াল শুরু করে দিলাম। ভবিষ্যতে হয়ত azure এর ১ বছরও নেবো। (যদি ততদিনে থাকে আরকি)। গুগল ক্লাউড, ডিজিটাল ওশ্যান ২০০-৩০০ ডলার ক্রেডিট যাই দেয়, তা ৬০-৯০ দিনের মেয়াদে দেয়, যা খুব একটা লোভনীয় না। তবুও যথাসময়ে হয়ত নেবো।

    AWS EC2 details

    Amazon Machine Image (AMI): Amazon Linux AMI 2023

    Instance type: tc.micro (2 vcpu, 1 GiB memory, $0.0108/per hour after trial)

    Storage: Storage Type: EBS, Volume Type GP3, 10 GB (total limit in trial: 30 GB)

    যদিও পরে বুঝেছি ৫ জিবি দিলেই ubuntu + আমার কাজের জন্য জন্য যথেষ্ট হতো। যাইহোক, আরো কত কিছুই তো করতে হবে।

  • VS Code Pro Tips

    VS Code Pro Tips

    ১। workspaceFolder

    VS Code এর ডিফল্ট সেটিং থাকা অবস্থায় আমরা যখন টার্মিনাল খুলি, তখন ডিফল্ট ডিরেক্টরিতে টার্মিনাল চালু হয় (যেমন C:\Users\YourName , তারপর বারবার cd .. / cd omuk cd tomuk লিখে সময় নষ্ট করতে হয় কাঙ্ক্ষিত ফোল্ডারে যেতে।

    আমি গত ৮+ মাস এভাবেই করেছি, পরে বিরক্ত হয়ে গুগল সার্চ করে জেনেছি যে- settings এ গিয়ে (শর্টকাট ctrl + , cwd সার্চ করে নিচের দেখানো সেটিং এ ${workspaceFolder} লিখে দিলে ওয়ার্কস্পেস ফোল্ডারই টার্মিনালে এসে থাকবে।

    Terminal › Integrated: Cwd

    An explicit start path where the terminal will be launched, this is used as the current working directory (cwd) for the shell process. This may be particularly useful in workspace settings if the root directory is not a convenient cwd.

    ২। Ligatures

    আমি জানতাম না যে !== / => এগুলো পালটায় কীভাবে। যেহেতু এই পরিবর্তনের নামই জানতাম না (ligatures) , তাই সার্চও করা কঠিন ছিল।

    উইন্ডোজে Consolas, ‘Courier New’, monospace ভিএসকোডের ডিফল্ট ফন্ট দেয়া থাকে। এগুলোতেও Ligature আছে। আপনাকে fira code নামাতে হবে না। (চাইলে নামাতে পারেন, তবে বাধ্যতামূলক না, সেটাই বলছি) তারপর সেটিংসে ligatures সার্চ করে edit json এ গিয়ে “editor.fontLigatures”: true করে দেবেন, ডিফল্টে false থাকে। ব্যস, হয়ে গেল।

    ভিডিও টিউটোরিয়াল

    ৩। লাইন নম্বর হাইড করা

    আপনি যদি সেটিংস থেকে লাইন নম্বর হাইড করেন, নম্বর হাইড হলেও সেই জায়গাটা ব্লক হয়েই থাকবে। আপনার কাজে আসবে না। সেই জায়গাটা কাজে লাগাতে চাইলে প্রথমে System Cycler ডাউনলোড করতে হবে। তারপর নিচের দু’টি JSON ফাইল এডিট করতে হবে। ctrl + shift + P টিপে Perferences: Open User Settings (JSON) এবং Perferences: Open Keyboards Shortcuts (JSON) ওপেন করে নিচের কোডগুলো যোগ করতে হবে।

    settings.json:

    “settings.cycle”: [{ “id”: “lineNumbers”, “values”:[ { “editor.lineNumbers”: “off”, “editor.folding”: false, “editor.glyphMargin”: false }, { “editor.lineNumbers”: “on”, “editor.folding”: true, “editor.glyphMargin”: true } ] }],

    keybindings.json:

    // Place your key bindings in this file to override the defaultsauto[]

    [ { “key”: “ctrl+shift+l”, “command”: “settings.cycle.lineNumbers”, “when”: “editorFocus” } ]

    ctrl+shift+l সেট না করে অন্য কিছুও সেট করতে পারেন।

    ভিডিও টিউটোরিয়াল

    ৪। টার্মিনাল ফুলস্ক্রিন করার শর্টকাট

    ctrl বর্তমান/সর্বশেষ টার্মিনাল শো / হাইড

    ctrl shfit নতুন টার্মিনাল খোলা

    এ দুটি ডিফল্টেই থাকে।

    আর আপনি যদি চান যে, টার্মিনাল ফুলস্ক্রিনে দেখবেন, আবার কোডে ফিরে যাবেন তাহলে ctrl + k ctrl + s টিপে toggle maximized panel সার্চ করে ctrl alt সেট করে নিতে পারেন।

    gatsby / vite ব্যবহার সহ বিভিন্ন সময়ে কাজে লাগে।