teleren/devto huggingface dataset:
Unfortunately for my users, Next.js docs include instructions for custom 404 pages.
Tags: webdev, typescript, nextjs, react
Published: 2023-07-29 17:37:46

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ons53hhhxh6v4igcrdrf.png)
—Me and Git H. C. Pilot

## Notes

Copilot only wrote the "digital wilderness" and "breadcrumbs" part. As soon as I saw "breadcrumbs," I knew what I had to do.
How to pick a career in the Web Development
Published: 2023-10-18 08:16:24

---
title: How to pick a career in the Web Development
published: true
date: 2023-07-29 17:30:00 UTC
tags: 
canonical_url: 
---

Web Development Field ထဲမှာဘယ် Career ကိုရွေးမလဲပေါ့။ Web Development ထဲမှာ Frontend, Backend, Full stack ဆိုပြီးအကြမ်းအားဖြင့်သုံးမျိုးခွဲနိုင်တယ်။ ဒီအထဲမှဆက်စပ်တဲ့ကောင်တွေလည်းရှိတယ်။ သူတို့ကို Web Development ထဲက Career အဖြစ်ထည့်လို့ရတယ်။ UI/UX Designer, Q/A, DevOps, Cloud Architect စသည်ဖြင့်။

## UI/UX Designer

သူကများသောအားဖြင့် Logical ပိုင်းထက် Creativity ပိုင်းဘက်အားသန်တဲ့သူတွေရွေးလေ့ရှိတဲ့ Career အမျိုးအစားဖြစ်တယ်။ ကိုယ်က Stakeholders တွေ၊ Client တွေနဲ့တိုက်ရိုက်စကားပြောပြီးတော့ သူတို့လိုချင်တဲ့ Business Domain and Features တွေကို User Interface အနေနဲ့ Design ထုတ်ပေးရတာမျိုးဖြစ်တယ်။ သူတို့က Web Development မှာလိုအပ်တဲ့ Role ထဲထည့်လို့ရတယ်။ မဟုတ်ရင် SWE တွေ UI အတွက်ပါလုံးပမ်းနေရမှာဖြစ်တယ်။

## Frontend Engineer

Frontend ဆိုတာကအပေါ်က UI/UX Play သမျှကိုဒိုင်ခံ Code ရေးပေးရတဲ့သူပေါ့။ သူက Prototype Level ကနေတကယ်သုံးလို့ရတဲ့ Application တွေကို HTML, CSS, JavaScript စတဲ့ နည်းပညာတွေနဲ့ပြန်ပြီး Develop ပေးတဲ့သူတွေဖြစ်တယ်။ Play ခံလူတန်းစားလို့ပြောရင်လည်းမမှားပါဘူး။ ဒီလူတွေက UI/UX တွေနဲ့ အခါ ၁၀၀ မှာ ၁၀၀ လောက် Collaborate နေရတာဖြစ်တာမို့လို့ ကိုယ်က UI Design Logic တွေကို Implement ရတာမျိုးကိုစိတ်ဝင်စားရင်ရွေးသင့်တဲ့ Specialist Career မျိုးဖြစ်တယ်။

## Backend Engineer

Backend ကတော့အနောက်နေထိန်းချုပ်နေတဲ့လက်မဲကြီးပေါ့။ သူက Frontend ကပေးလိုက်တဲ့ Data တွေကိုသိမ်းမယ်၊ ပြန်ပြမယ်စတဲ့လုပ်ငန်းတွေကိုလုပ်ရတဲ့သူတွေဖြစ်တယ်။ သူတို့က Logical ပိုင်းကိုအားသန်တဲ့သူတွေကရွေစလေ့ရှိတယ်။ ဥပမာ Maths မှာဆရာကြီးတစ်ဆူဖြစ်နေရင်တော့ဒီအပိုင်းကိုရွေးသင့်ပါတယ်။ သူတို့က PHP, Python, Node JS (Runtime), Ruby စတဲ့ Server ကို Talk နိုင်တဲ့ Language တွေသုံးပြီးတော့ Frontend Engineer တွေအတွက် Logical Operation တွေကို Support ပေးပါတယ်။

## DevOps Engineer

Docker ဆရာသမားတွေပေါ့။ သူတို့က Cloud နဲ့ပတ်သက်တဲ့ကိစ္စတွေကို Management လုပ်ပေးရတဲ့သူတွေပေါ့။ အရင်က Systems Administrator လို Role တွေရှိပေမဲ့ခုနောက်ပိုင်း ဒီ Role တွေကို Devops ပဲလုပ်ရတာများတယ်။ ကိုယ့်ရဲ့ Frontend or Backend Project တွေကို User ဆီ Rapid Delivery လုပ်နိုင်ဖို့ဒီလူတွေက Implement လုပ်ပေးတဲ့သူတွေဖြစ်တယ်။ Code ရေးရတာသက်သာချင်တဲ့သူတွေ၊ Server တွေကို Manage ချင်တဲ့သူတွေက ဒီ Careers ကိုရွေးသင့်ပါတယ်။ နောက်ပိုင်း Cloud Architect Exam ဖြေပြီးတော့‌ဆရာကြီး Level မြန်မြန်ရောက်နိုင်ပါတယ်။

## Full Stack Engineer

ကျွန်တော်ကတော့ Full Swap လို့ခေါ်ပါတယ်။ သူက Frontend နဲ့ Backend နှစ်ခုလုံးကို Develop တဲ့သူတွေဖြစ်ပါတယ်။ များသောအားဖြင့် Freelancer တွေထဲမှာတွေ့ရများတယ်။ ဒီ Role က Frontend နဲ့ Backend နှစ်ခုလုံးကလိုအပ်တဲ့ Technology ‌နဲ့ Right Time မှာ Right Problem ကို Right Tool နဲ့ရှင်းတဲ့သူတွေပါ။ ဒီလူတွေက Software Architect Level ကိုမမြန်မြန်ရောက်နိုင်တဲ့သူတွေဖြစ်တယ်။ အချုပ်အားဖြင့်ကိုယ်ကဘယ်ဟာကိုပဲရွေးရွေးကိုယ်နဲ့ဆက်စပ်တဲ့နည်းပညာတွေကို သိထားသင့်သလို၊ ကြိုစားပြီး Implement ထားသင့်တယ်။ ဒါမှ Open-minded ဖြစ်တဲ့ SWE ဖြစ်လာမှာဖြစ်ပါတယ်။
DDD and CQRS
Published: 2023-10-18 08:16:01

---
title: DDD and CQRS
published: true
date: 2023-07-29 17:30:00 UTC
tags: 
canonical_url: 
---

Domains Driven ဆိုတာက Modeling Technique လို့ပြောလို့ရတယ်။ Data တွေကိုဘယ်လို Modeling လုပ်မလဲပေါ့။ DDD ကိုသုံးတဲ့အခါမှာ Bounded Contexts တွေကိုသိဖို့လိုတယ်။ Sub Domain တွေပေါ့ သူတို့က။ ဆိုပါစို့ E Commerce Website တစ်ခုလုပ်တယ်ဆိုရင် သူက Problem ဖြစ်တယ်။ ပြဿနာဆိုတာက DDD မှာ Business Domain ပဲဖြစ်တယ်။ ဒီတော့ဒီပြဿနာကိုဘယ်လိုရှင်းမလဲ။

Business Domain ကိုရှင်းဖို့အတွက် Sub Domain တွေပေါ်လာရတယ်။ Sub Domain တစ်ခုစီကိုတော့ Context လို့ခေါ်တယ်။ Sub Domain ဆိုတာက ပြဿနာကြီးတစ်ခုရဲ့ Feature လေးတွေကိုပြောတာလို့ယူဆလို့ရတယ်။ ဆိုပါစို့ Add To Cart, Orders စသည်ဖြင့်။ သူတို့ E commerce ရဲ့ Sub Domain တွေဖြစ်ဝာယ်။ Domain တစ်ခုဆီမှာ Context ရှိတယ်။ ဒီ Context မှာလည်း Boundary ရှိတယ်။ ဘယ်လိုခွဲခြားပြီးတော့စဉ်းစားရမလဲပေါ့။

Boundary ပါတဲ့ Contexts တွေကို Bounded Context လို့ခေါ်တယ်။ ဒီပြဿနာကိုဒါတွေနဲ့ချိတ်ပြီးရှင်းလို့ရတယ်ဆိုတာမျိုးပေါ့။ Bounded Context တွေက Microservices မှာအရေးပါတယ်။ ဘာလို့အရေးပါလဲဆိုရင် Service တစ်ခုဆီရဲ့ Context ကိုသူကသတ်မှတ်ပေးနိုင်တာမို့လို့လို့ပြောလို့ရတယ်။

Context ဆိုတာက ဒီ Domain ပါတဲ့ Availability တွေဖြစ်တယ်။ Add To Cart Domain က Cart ထဲကို Add တဲ့ Feature တွေပါရမယ်။ Database မှာဆိုရင်လည်း Product ID, Product Quantity စတာပဲပါရမယ်၊ ကျန်တာတွေပါလို့မရဘူး။ ဒီလိုမျိုး သတ်မှတ်ထားတဲ့ ကောင်တွေကို Bounded Context လို့ခေါ်တယ်။

DDD ကိုသုံးတဲ့အခါမှာ CQRS ( Command Query Responsibility Segregation ) ကပါလာမှာပဲဖြစ်တယ်။ CQRS ဆိုတာက Application Level CQS (Command Query Separation) လုပ်တာကိုပြောတာ။ Monolithic DDD ကိုသုံးတဲ့အခါမှာ CRUD Operation တွေကို တပြုံတခေါင်းကြီးသုံးကြတယ်ပေါ့။ ဒီတော့ Service ရဲ့ Complexity မြင့်လာသလို Microservices ရဲ့အနှစ်ဖြစ်တဲ့ Independently Scalable ဖြစ်နိုင်စွမ်းကိုထိခိုက်တယ်။ ဒီတော့ CRUD ကိုအပိုင်းခွဲပစ်လိုတယ်၊ CQS အနေနဲ့။

CQS က Command တွေက Creat/Update/Delete Operation တွေမှာအကြုံးဝင်တယ်။ API တစ်ခုကို Endpoint တစ်ခုအနေနဲ့သွားတဲ့ပုံစံမျိုးမြင်ကြည့်လို့ရတယ်။ Write Operation တွေအတွက် API တစ်ခုစီထုတ်ပေးထားတယ်လို့မြင်လို့ရတယ်။

Query တွေက Read Operation တွေမှာသုံးဖို့လုပ်ထားတာ။ Read API ထုတ်ထားတယ်ပေါ့။ ဒီတော့လွတ်လွတ်လပ်လပ်ကြိုက်သလောက် Read လုပ်လို့ရတယ်။ ဘာကိုဆိုလိုတာလဲဆိုရင် CRUD မှာတုန်းက Code Level Coupling ဖြစ်နေတော့ Operation တွေကစုပြုံနေတယ်။ Database တစ်ခုထဲကိုပဲစုပြုံနေတာမျိုး။ ဒါပေမဲ့ Read Operation အတွက် ထပ်ထုတ်လိုက်တဲ့အခါမှာ Database တွေကိုခွဲပြီးသုံးလို့ရတယ်။ Master Database, Slave Database ဆိုပြီးတော့ ခွဲလိုက်ရင် Slave တွေက Replicate ထားတဲ့ကောင်တွေဖြစ်ကြောင့် Write စရာမရှိတော့ဘူး။ ဒီတော့ Read Operation ကို Performance ကောင်းကောင်းနဲ့လုပ်လို့ရတယ်။ User အတွက် Read Database တစ်ခု၊ Admin အတွက် Read Database တစ်ခုထုတ်ပေးထားရင် Consistency and Availability ပါပိုမြင့်သွားမှာဖြစ်တယ်။ Admin က Excel ဖိုင်ထုတ်နေလို့ User Database မှာသွားပိတ်မနေတော့ဘူးပေါ့။ Read Operation မှာ။

Separation ကတော့အပေါ်က Command နဲ့ Query ခွဲတာအတွက်ထည့်ထားတာပါ။ CQRS က Segregation နဲ့တူတူပါပဲ။ DDD and CQRS ကိုသုံးချင်ရင်အလွယ်ဆုံးက Spring Boot ပါ။ လွယ်တယ်ဆိုတာကသုံးလို့ကောင်းတယ်ဆိုတာမျိုးပါ။ နောက်ပြီးရင် Nest JS CQRS ကိုသုံးလို့ရတယ်။ Domain Modeling ကတော့ကိုယ့်ဟာကိုယ်လုပ်ရမှာပေါ့။
Architectural Problems in Nutshell
Published: 2023-10-18 08:15:50

---
title: Architectural Problems in Nutshell
published: true
date: 2023-07-29 17:30:00 UTC
tags: 
canonical_url: 
---

Problem ကိုဘယ်လို Solve ရမလဲပေါ့။ SWE တွေဖြစ်တာကြောင့် Code ရေးပြီး Solve မှာပေါ့။ ရှင်းပါပြီတဲ့။ ဒီ Solution ဟာ Reliable ဖြစ်ရဲ့လား။ နောက်တစ်ယောက်ကို Handover လုပ်တဲ့အခါမှာအဆင်ပြေရဲ့လား။ ဘယ်သူကမှ ဘာမှန်းမသိတဲ့ Code တွေကိုမရေးချင်သလိုဖတ်လည်းမဖတ်ချင်ကြပါဘူး။ Reliable ဖြစ်လား၊ မဖြစ်လားဆိုတာက တာဝန်ယူမှု၊ တာဝန်ခံမှု နဲ့တိုက်ရိုက်အချိုးကျတယ်။ ခုပြဿနာကိုလောလောဆယ်ရှင်းသွားပေမဲ့နောက်နေ့ကြတော့ဒီကောင်ကကန့်လန့်ကြီးခံနေတယ်ဆိုရင် Architectural Problem ဖြစ်နေပါပြီ။

ရှင်းတဲ့အခါမှာ ပြဿနာကိုဘယ်လို Defines မှာလဲပေါ့။ ပြဿနာကို Defines နိုင်ဖို့က Business Domain ကိုသိဖို့လိုတယ်။ ဒါကဘာလုပ်တာလဲပေါ့။ ဆိုပါစို့ Facebook ဆို Post တင်ဖို့၊ Friend တွေရဲ့ Post တွေကြည့်ဖို့‌။ သူ့ရဲ့အဓိက Domain ကဒါပဲလေ။ အဓိက Abstract ကိုသိဖို့လိုတယ်။ Abstract ကိုသေချာမသိရင် သောကြာနေ့ရောက်တိုင်းဖင်ကြိမ်းနေရမှာ။ Based ။ ကိုယ့်ရဲ့ Application က Request လေးနည်းနည်းလေးဆိုကိစ္စမရှိဘူး။ Write Request 10K/s ဆိုဘယ်လိုလုပ်မလဲ။ Read Request အတွက် Scale ရတာကလက်ပေါက်မကပ်ဘူး။ Replicate လုပ်၊ Scale Out လုပ်ပေါ့။ ဒီလို Scale တာက Infra Level မှာပဲ Scale တာဖြစ်တယ်။ Code Level မှာပါ Scale နိုင်ဖို့လိုတယ်။ Code Level ကို Scale တဲ့အခါဘယ်လို Scale မှာလဲ ဘယ်နေရာကို Scale မှာလဲဆိုတာလည်းသိဖို့လိုတယ်။

Expensive Task တွေလုပ်ရမယ်ဆိုပါစို့။ ကိုယ့်ရဲ့ App က JavaScript သုံးထားတယ်ဆိုရင် File Processing လိုကိစ္စတွေမှာခွေးအကြီးလှည်းတက်နင်းသလိုဖြစ်သွားမှာပေါ့။ ဒီတော့နေရာတကာမှာ JavaScript သုံးမရဘူးပေါ့။ အဲ့တော့ဘယ်လိုလုပ်မလဲ။ Expensive Task တွေကဘာတွေလဲအရင် Define ဖို့လိုတယ်။ ဘာတွေလုပ်ရမှာလဲပေါ့။ Invoice တွေကို PDF အနေနဲ့ Generate ပြီး Mail နဲ့ပို့တာမျိုး၊ Invitation Code 3, 4, 5 သိန်းကို XSLT Format နဲ့ပြန်ထုတ်တာမျိုးလား။ ဒါတွေပေါ်မူတည်ပြီးတော့ကိုယ်သုံးမဲ့ Language ကပြောင်းသွားမှာဖြစ်တယ်။

တစ်ခု JavaScript နဲ့ Expensive Task တွေလုပ်နေမဲ့အစား Computing Power ပိုကောင်းတဲ့ Rust လို၊ Go လိုကောင်မျိုးသုံးတာမျိုး။ ဒါမျိုးကို Problem Solve လုပ်တယ်လို့ခေါ်တယ်။ တစ်ခုတည်းမှာ Stuck နေတာက Problem Solving မဟုတ်ဘဲနဲ့ တမင်တွယ်ကပ်နေတာသပ်သပ်ပဲဖြစ်တယ်။

Code Level Scale တဲ့နေရာမှာ Independent Scale Out နိုင်ဖို့လိုအပ်တယ်။ ကိုယ့်ရဲ့ App က ML Model တွေပါလာရင်ဘယ်လိုလုပ်မလဲ။ ဒီ Service တွေကိုဘယ်လိုခွဲထားမလဲ။ Data တွေ Train ဖို့ဘယ်လိုလုပ်မှာလဲ။ Facebook လို Dynamic ပြောင်းနေတဲ့ Content တွေကိုဘယ်လို Cache မှာလဲ။ ကိုယ်သုံးနေတဲ့ Tech မှာပါလား။ မပါရင်ပါတဲ့ကောင်နဲ့ဘယ်လို Integrate မလဲ။ ‌ Service to Service Talk ရင်ဘယ်လိုလုပ်မှာလဲ။ Message Queue သုံးမှာလား၊ Message Streaming လုပ်မှာလား။ Failure ဖြစ်ရင်ဘယ်လိုထိန်းမှာလဲ စသည်ဖြင့် ဒါတွေကိုပါ Considering လုပ်ဖို့လိုပါတယ်။
Generalist over Specialist
Published: 2023-10-18 08:16:13

---
title: Generalist over Specialist
published: true
date: 2023-07-29 17:30:00 UTC
tags: 
canonical_url: 
---

Language/Framework တစ်ခုထဲရရင်ဖြစ်သလားပေါ့။။ မရပါဘူး။ ရပ်တည်ရခက်တယ်။ Imposter Syndrome ဝင်ဖို့လည်းလွယ်တယ်။ Right Problem ကို Right Tool နဲ့ Resolve လုပ်နိုင်ဖို့ကြိုးစားဖို့လိုအပ်တယ်။ PHP ရတဲ့သူဆိုရင် ငါတို့ PHP မှာ Laravel ရှိနေသားပဲဆိုပြီးတော့တခြား Curated ဖြစ်တဲ့ Slim လို၊ Symfony လိုကောင်တွေမကြည့်ချင်တော့ဘူး။ ကြည့်ဖို့မတတ်နိုင်တာလဲပါတယ်။ ဘာကြောင့်ဆိုရင် Language ကိုသေချာဂဃဏနမတတ်ကြလို့ပဲ။

Functional Programming Pattern တွေ Apply တဲ့အခါမှာ PHP ဟာလုံးဝအဆင်မပြေဘူး။ Code တွေက မွစာကြဲနေတာမျိုးဖြစ်တယ်။ Spaghetti ဖြစ်တယ်ပေါ့။ ဒီတော့ Hybrid Approach ကိုသုံးကြရတယ်။ FP + OOP ပုံစံမျိုးပေါ့။ ဒီလိုမျိုးသုံးနိုင်မှ အပ်နဲ့ထွင်းရမဲ့ကိစ္စကိုပုဆိန်နဲ့မပေါက်ရမှာ။ မဟုတ်ရင်ပုဆိန်နဲ့ထုနေရပြီ။

နောက် Programming Language ကိုကြည့်တာက Logical Problem တွေကိုဘယ်လို Solve လုပ်တတ်အောင်လို့ကြည့်ရတာ။ အလွတ်ကျက်ဖို့မဟုတ်ဘူး။ JavaScript ရပါပြီတဲ့။ သူများတွေ React မို့လို့ React လိုက်ကြည့်ရင် Job Demand အတွက်ကောင်းပေမဲ့ ကိုယ့်ရဲ့တိုးတက်ရာလမ်းကြောင်းပိတ်တယ်။ React ပဲအလွတ်ရနေတဲ့ကောင်တွေအများကြီးပဲ။ ဒီတော့ဘာဖြစ်လဲဆိုရင် Framework တစ်ခုမှာပဲ Stuck ဖြစ်သွားတယ်။ နောက်တစ်ခုကို Jump လုပ်နိုင်စွမ်းမရှိတော့ဘူး။ Jump လုပ်ချင်စိတ်လည်းမရှိတော့ဘူး။ ဘာလို့ဆိုရင် Specialist ဆိုတဲ့စိတ်ဝင်နေတာရယ်၊ Comfort Zone ထဲဝင်သွားတာရယ်ကြောင့်ဖြစ်တယ်။

Language ဒါမှမဟုတ် Framework တစ်ခုကိုကြည့်တဲ့အခါမှာ Beginner ဖြစ်နေတဲ့ကာလမှာသာတစ်ခုထဲမှာ Stuck ထားသင့်တာ။ ဒီအခြေအနေမှာပြောင်းလို့မရဘူးဆိုတာမျိုးတော့မဟုတ်ဘူး။ ဆိုပါစို့ကိုယ်က JavaScript ကိုကြည့်နေတယ်။ OOP ကိုကြည့်တဲ့အခါမှာ JavaScript ရဲ့မွစာကြဲနေတဲ့ OOP Design ကြောင့် PHP ကိုပြောင်းကြည့်တာမျိုး၊ ဒါမှမဟုတ် Java ကိုကြည့်တာမျိုး။ ပြောင်းလဲပြင်လွယ်ဖြစ်ဖို့လိုအပ်တယ်။ ကိုယ်လုပ်နေတဲ့ Framework ကခက်နေတဲ့ဆိုရင်တခြား Level တူ Framework တစ်ထခုကိုကြည့်တာမျိုးလုပ်လို့ရတယ်။ အဲ့လိုမလုပ်ဘူးဆိုရင်အလွတ်ကျက်နေတာထက်ဘာမှမပိုဘူး လို့ပြောလို့ရတယ်။

ဒီနေရာမှာ Specialist ဖြစ်တာထက် Generalist ဖြစ်တာကိုပြောင်းနိုင်ဖို့လိုတယ်။ Software Engineering Field ကတခြား Field တွေလိုတစ်ခုတည်းလုပ်နေရုံနဲ့ရတဲ့ဟာမျိုးမဟုတ်ပါဘူး။ Paradigm အသစ်တွေ၊ Design Pattern အသစ်တွေက စက္ကန့်တိုင်း၊ မိနစ်တိုင်းပြောင်းနေတာမို့၊ ကိုယ်က Skill Sets မပြည့်စုံရင် Paradigm Shift တာကိုခံနိုင်မှာမဟုတ်သလို၊ Field ထဲကနေမြန်မြန်ဆန်ဆန် Retire သွားရမှာဖြစ်တယ်။

Junior တွေက Field ထဲကိုစစဝင်လာတာဖြစ်တာကြောင့် သူတို့ကတက်တက်ကြွကြွနဲ့အသစ်သစ်တွေကိုသင်ယူချင်စိတ်ရှိကြတယ်။ ဒီနေရာမှာကိုယ်က Senior ဖြစ်ပြီးတော့ Juniors တွေပြောတာမသိဘူးဆိုရင် ကိုယ့်ကိုယ်ကို Push လုပ်ပြီး Learn လုပ်ဖို့လိုအပ်တယ်။ ဘာလို့ Framework တစ်ခုတည်းကို ၁၀ နှစ်လုပ်နေတာက Experience လို့မခေါ်ဘူး။ Comfort Zone ထဲပျော်နေတယ်လို့ခေါ်တယ်။ ဒီလို Comfort Zone ထဲရောက်လာတဲ့အခါ Service Oriented Architecture တွေသုံးတဲ့အခါမှာဘယ်လို Apply ရမှန်းမသိဖြစ်တတ်တယ်။ ဘာလို့ဆိုရင်တစ်ခုတည်းရနေတာဖြစ်လို့ကျန်တာရဲ့ Usage ကိုသဘောမပေါက်နိုင်တာဖြစ်တာကြောင့်မို့လို့ပဲ။

[https://thewokesalaryman.com/.../we-should-all-be.../amp/](https://thewokesalaryman.com/.../we-should-all-be.../amp/)
📁 Manage your Files with myFiles ALPHA 2.0 🚀
Tags: news, management, programming
Published: 2023-07-29 17:28:35

New MyFiles Update, THE ALPHA 2.0 !!!
So happy because it's one the biggest update of myFiles with more things to do and some major bugs fixed !!!

![gif](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ssdhnnd2073rdza59pit.gif)
Now you can:

- Rename files with R

- Create new files with Ctrl + N

- Preview more images (.jpeg, .jpg, .bmp)

- Navigate easier in the tree and content frames

**I've been working on this for about a month and
tipping or buying this version is a great way to me that my project is interesting. :p**

***You can also try the last update for free
(the ALPHA 1.3)***

Link of the project:
https://blueberry077.itch.io/myfiles
Work Types.
Tags: newbie, development, hasanelsherbiny
Published: 2023-07-29 17:20:34

Many People start working but they don't know the different types of they can do,
here we can categories working into many categories

## Time Based Category
in this category the work is categorized by how many hours you should work.

1. Fulltime job
here you are committed to company to work the full time (regarding the working laws in your country 8H/5Days per week in most countries).
 
2. Part-time Job
in this type you are committed to company to work the half time of normal full time or depending on the arrangement between you and the company

*in these two modes you have fixed hours to work, start time, end time but some companies offer free hours mode which start whenever you want end complete the arranged work hours and you free to go.

Categorizing work in terms of location

1. Onsite
in this type you work from the company location 
2. Remotely (from Home)
in this type you work from any place

Fulltime and Part-time both can be Done onsite or Remotely.
The Rise of WebAssembly: Revolutionizing Web Development and Beyond
Published: 2023-07-29 17:06:17


**Introduction:**

Greetings, developers of the digital realm!In this post, we'll delve into the magic of WebAssembly, exploring its origins, use cases, and the immense potential it holds for the future of software development.

**1. The Birth of WebAssembly:**

WebAssembly emerged as a collaborative effort between major browser vendors to enhance the performance of web applications. By providing a compact and efficient binary format that can run at near-native speed, Wasm transcends the limitations of JavaScript, enabling developers to achieve more with less.

**2. A New Era of Web Performance:**

Wasm empowers web developers to execute performance-critical parts of their applications with incredible speed, improving the overall user experience. We'll explore how Wasm enhances loading times, speeds up rendering, and handles computationally intensive tasks more efficiently than traditional JavaScript.

**3. Language Agnostic Power:**

Unlike JavaScript, which is the traditional language for the web, WebAssembly is not tied to any particular programming language. It opens the doors for developers to utilize languages like C, C++, Rust, and more to write web applications, broadening the developer landscape and enabling code reuse between different platforms.

**4. Extending Beyond the Browser:**

While Wasm started its journey within the confines of web browsers, its applications now extend beyond the web. We'll explore how WebAssembly is being used in server-side scenarios, Internet of Things (IoT) devices, desktop applications, and even blockchain environments, unlocking new possibilities and use cases.

**5. Secure and Sandboxed Execution:**

Security is a paramount concern in the digital world. Wasm provides a sandboxed execution environment, where untrusted code can run safely, isolated from the underlying system. We'll discuss the security benefits of Wasm and how it mitigates potential risks associated with running external code.

**6. WebAssembly in the Cloud:**

The combination of WebAssembly and cloud computing brings unique advantages. We'll explore how Wasm-powered cloud functions offer better performance, cost-effectiveness, and easier cross-cloud deployment.

**Conclusion:**

Let's gather in the comments section to discuss your experiences with WebAssembly. Have you utilized Wasm to optimize web performance or explore non-browser applications? Share your thoughts, tips, and questions as we celebrate the rise of WebAssembly! #WebAssembly #Wasm #webdevelopment #performance #softwaredevelopment
Keep Positive Steps to learn new things.
Tags: productivity, learning, motivation, performance
Published: 2023-07-29 16:59:35

#### Freelancing websites

1. Upwork.com
2. Fiverr.com
3. Guru.com
4. Freelancer.com
5. PeoplePerHour.com

#### Sites for your career All time

1. LinkedIn
2. Indeed.com
3. Nakuru
4. Monster
5. Jobba Trade Technologies
6. CareerCloud LLC
7. Dice
8. CareerBuilder
9. Rozee.pk
10. Glassdoor

#### Tech Skills in demand

1. Machine Learning
2. Web Development
3. Data Engineering
4. UI/UX Design
5. Cyber Security
6. Graphic designing
7. Blockchain
8. Digital Marketing

#### Sites For Free Online Education

1. Coursera
2. edX
3. Khan Academy
4. Udemy


#### Sites for Interview Preparation

1. AmbitionBox
2. Ace Your Interview
3. GeeksforGeeks


#### Top best free graphic design online site

1. Canva

#### Top Site for your Portfolio

1. Dribble
2. Behance

> Stay connect with Mohammed Ameziane el hassani .. to get more advices
Comenzar en el desarrollo web
Published: 2023-07-29 16:48:52

🚀 Descubre el mundo del desarrollo web y domina las claves para el éxito en esta apasionante industria. 🌐✨


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c506kidg3tggunvm1gdg.png)



Si estás dando tus primeros pasos en el desarrollo web, es normal sentirte abrumado. ¡Pero no te preocupes! En mi último artículo, te revelo  los secretos para comenzar de manera efectiva y evitar sentirte perdido en el mar de información en Internet.
¿Te preguntas por dónde empezar y qué habilidades adquirir? He creado una guía completa en: https://blog.santidev.com.ar/blog/2022/04/14/Comenzar-en-el-Desarrollo-web
D6 #100DaysOfOSS
Tags: 100daysofcode, 100daysofoss, programming, opensource
Published: 2023-07-29 16:03:07

D6 #100DaysOfOSS with #saucedopen

Today, I played around with Express.js, practicing using route parameters, query parameters, headers, and body parameters to send data to the server. I also reviewed some PRs in the Postman repository. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3tw4a6gc9j6ejjwb2y9t.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m7wn4umblny5ovq9yba5.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jbled7b9c5o3no3a8ptr.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jn64qyo2g2zbhb9a6ia6.png)

#100DaysOfCode #opensauced #OpenSource
Ruby Syntax: Each
Published: 2023-07-29 15:50:13

Today's module introduced a really interesting array method in Ruby: each. This is an efficient way to loop over elements in an array in Ruby. 

"Each" can be used with "do" and a block variable to create an iterative loop rather than using a while loop or for loop and has the benefit of not requiring a value to be incremented in order to move to the next element in the array. Also, it doesn't require us to know the number of elements in the array, as would be the case if we used .times. 

This makes our code more concise!

Here is an example of how to print each element in an array using .each:

```
my_array = ["cat", "dog", "hamster", "frog", "parakeet"]
my_array.each do |animal|
  pp animal
end
```
Evite redundâncias ao definir Entities do JPA
Tags: java, jpa, database, webdev
Published: 2023-07-29 15:28:30

Se você for definir uma tabela, por favor, não faça isso!


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cnzb2zqhdwcc03jwz72i.png)


Vamos saber melhor por que!

No JPA, uma classe é mapeada para uma tabela através da anotação `@Entity`. Com essa anotação nós indicamos que a classe é uma entidade do JPA, nesse caso, automaticamente ele mapeia a classe para uma tabela.

Para isso, o JPA está configurado por default a resolver o nome da classe para uma tabela da seguinte forma:

1 - Classes no Java são definidas através de PascalCase.
2 - O nome da classe é convertida em snake_case.
3 - Este nome convertido é utilizado para o nome da tabela no banco de dados.

Então, através desse algoritmo:

```
CustomerDetails -> customer_details
```

No caso do exemplo original:

```
Product -> product
```

Só isso já conseguimos eliminar a necessidade da anotação `@Table`.

Conseguimos também definir o nome da tabela ao definir o nome da entidade nas queries JPQL. Isso porque o nome da tabela é resolvido através do seu nome nas queries. Primeiro, por default, é resolvido pelo nome da classe da entidade, porém podemos mudar esse nome pela anotação `@Entity`:

```java
@Entity(name = "blablabla")
```

Só fazendo isso, conseguimos mudar o nome da tabela que será mapeada e de quebra também o nome que iremos utilizar para as queries JPQL.

Podemos ter edge cases para definir as duas anotações, que é quando a tabela tem um nome específico, e nas queries JPQL iremos nos referir ao nome da classe mesmo, exemplo:

```java
@Entity
@Table(name="products")
public class Product {

}
```

No caso aqui, o nome da tabela está no plural, porém na query JPQL, iremos utilizar o nome da classe mesmo:

```java
@Query("Product p where p.vendorId = :vendorId")
Product findProductFromVendor(int vendorId);
```

Neste caso, a query que isso irá gera no SQL será o seguinte:

```sql
SELECT * FROM products WHERE vendor_id = 10
```

Outro edge case seria se eu quisesse que o nome da entidade nas queries seja diferente do nome da classe e o nome na tabela seja diferente dos dois:

```java
@Entity(name="prod")
@Table(name="products")
public class Product{

}
```

É essencial entender o funcionamento das anotações e do framework que estamos utilizando para não cairmos em redundância desnecessária na hora de programar!