خلي بالك الموضوع مش بعدد المشاريع...
.
.
أهلًا بيك صديقي المبرمج، الكلام ممكن يبقى صعب شويتين لكن هو ده الواقع ودي الحقيقة اللي لازم تعرفها وتبقى فاهمها كويس...
———
خليني أمشي معاك في سيناريو ولنختار مجال الويب مثلًا (لكن الكلام عام على كل مجالات البرمجة)... تعلمت أساسيات الويب ووصلت عند إطار العمل وعملت 50 مشروع ورفعتهم على GitHub والدنيا بقت لذيذة...
هات الـ 50 مشروع وتعال...
- هل الـ 50 مشروع تقدر تبيعهم لعميل أو لشركة أو على الأقل ترفعهم على أي موقع لبيع المواقع؟
- هل الـ 50 مشروع اتعملوا بأفضل طريقة من حيث هيكل المشروع وتنظيم الملفات والـ Clean Code ولا الدنيا سايحة؟
- هل الـ 50 مشروع فاهمهم كويس وعارف كل حاجة فيهم ولا ناقلهم ورا الفيديوهات وخلاص؟
- هل الـ 50 مشروع مختلفين ولا كلهم نفس الفكرة؟
- هل لو بعت مشروع منهم لمبرمج تاني يقدر يكمل شغل في المشروع بدون صعوبة ولا هيضطر يقرفك كل شوية؟
———
لو الإجابة نعم متكملش البوست... أنت كده في السليم 💯
لو لا، خليني أوضحلك شوية حاجات تاخد بالك منها في المشاريع...
حاول تعمل مشاريع حقيقية لها علاقة بسوق العمل... في البداية هتعمل مشاريع صغيرة زي Weather App وكمان مشروع آلة حاسبة، وغيرهم وده طبيعي جدًا لكن التاسكات دي متنفعش تبقى في الـ CV بتاعك وأنت بتقدم... خليها على GitHub وأنت في الطبيعي بتضيف لينك GitHub في الـ CV لو حد مهتم يشوفهم هيشوفهم وفي الغالب محدش بيركز عليهم وبيدور على المشاريع الكبيرة اللي فيها شغل لوجيك كتير مش مجرد UI وخلاص...
وده بيختلف من شركة للتانية حسب طبيعة الشركة فخلي بالك من النقطة دي.
———
بالنسبة لطريقة عمل المشروع وتنفيذه بأفضل طريقة... في البداية هتكون بتكتب أي حاجة وخلاص وده طبيعي لكن مينفعش تبقى بتقدم على شغل خبرة سنة مثلًا وأنت الكود بتاعك معجنة في بعضه... علشان كده يفضل تهتم بالموضوع ده من بداية التعلم وتبحث وتدور إزاي تكتب وتنظم المشروع بتاعك بأفضل طريقة حتى لو شغال HTML, CSS, JS فقط...
———
نيجي لفهم المشاريع... فيه بعض الشركات أثناء الإنترفيو بتفتح GitHub بتاعك وتجيب مشروع معين وليكن E-Commerce ويبدأ الشخص تبع الشركة يسألك عن إزاي عملت دي وليه فصلت دي عن التانية وهكذا... فلو أنت مش فاهم أو لقاك بتهبد يبقى أنت كده بالسلامة وهيعرف إنك بصمجي...
طيب تعمل إيه وأنت بتطبق مع الفيديو؟
= عندك أكتر من أداة تقدر تسألها إذا الكود ده معمول بأفضل طريقة ولا ممكن يتعمل بطريقة أفضل من كده وأقل تعقيدًا زي ChatGPT وغيره وكمان حاول تغير بعض الحاجات في المشروع اللي في الفيديو (زود حاجة - أو حسّن حاجة موجودة وهكذا)
———
طيب هل المشاريع كلها شبه بعضها ولا مختلفة؟
يعني متبقاش عامل 20 Landing Page ومعتبر كل واحدة منهم على إنها مشروع مستقل وهي أصلًا صفحة أو اتنين...
حاول تخلي المشاريع مختلفة عن بعضها وقريبة من المشاريع الموجودة في الشركات زي E-Commerce و Real Estate مثلًا وحاول تخلي المشاريع أغلبها لوجيك مش UI لأنك في الغالب هتستخدم مكتبات UI جاهزة هتسهل عليك الدنيا كتير... ولو عاوز أفكار مشاريع اسأل الـ AI...
———
بعد ما تخلص المشروع اقفل الجهاز وارجع بعد كام ساعة وحاول تفهم الكود اللي أنت كاتبه... لو مكتوب بطريقة كويسة هتفهمه بسهولة... ودي حاجة أساسية في البرمجة لأنك هتشتغل في تيم في الشركة وأكتر من واحد هيعدل على الكود فلازم تبقى منظم الكود بتاعك سواء من خلال كتابة التعليقات أو من خلال الـ Documentation...
———
طبعًا الكلام اللي فوق ده ينطبق على كل مجالات البرمجة مش الويب فقط...
———
بالتوفيق يا صديقي 🌿
.
.
أهلًا بيك صديقي المبرمج، الكلام ممكن يبقى صعب شويتين لكن هو ده الواقع ودي الحقيقة اللي لازم تعرفها وتبقى فاهمها كويس...
———
خليني أمشي معاك في سيناريو ولنختار مجال الويب مثلًا (لكن الكلام عام على كل مجالات البرمجة)... تعلمت أساسيات الويب ووصلت عند إطار العمل وعملت 50 مشروع ورفعتهم على GitHub والدنيا بقت لذيذة...
هات الـ 50 مشروع وتعال...
- هل الـ 50 مشروع تقدر تبيعهم لعميل أو لشركة أو على الأقل ترفعهم على أي موقع لبيع المواقع؟
- هل الـ 50 مشروع اتعملوا بأفضل طريقة من حيث هيكل المشروع وتنظيم الملفات والـ Clean Code ولا الدنيا سايحة؟
- هل الـ 50 مشروع فاهمهم كويس وعارف كل حاجة فيهم ولا ناقلهم ورا الفيديوهات وخلاص؟
- هل الـ 50 مشروع مختلفين ولا كلهم نفس الفكرة؟
- هل لو بعت مشروع منهم لمبرمج تاني يقدر يكمل شغل في المشروع بدون صعوبة ولا هيضطر يقرفك كل شوية؟
———
لو الإجابة نعم متكملش البوست... أنت كده في السليم 💯
لو لا، خليني أوضحلك شوية حاجات تاخد بالك منها في المشاريع...
حاول تعمل مشاريع حقيقية لها علاقة بسوق العمل... في البداية هتعمل مشاريع صغيرة زي Weather App وكمان مشروع آلة حاسبة، وغيرهم وده طبيعي جدًا لكن التاسكات دي متنفعش تبقى في الـ CV بتاعك وأنت بتقدم... خليها على GitHub وأنت في الطبيعي بتضيف لينك GitHub في الـ CV لو حد مهتم يشوفهم هيشوفهم وفي الغالب محدش بيركز عليهم وبيدور على المشاريع الكبيرة اللي فيها شغل لوجيك كتير مش مجرد UI وخلاص...
وده بيختلف من شركة للتانية حسب طبيعة الشركة فخلي بالك من النقطة دي.
———
بالنسبة لطريقة عمل المشروع وتنفيذه بأفضل طريقة... في البداية هتكون بتكتب أي حاجة وخلاص وده طبيعي لكن مينفعش تبقى بتقدم على شغل خبرة سنة مثلًا وأنت الكود بتاعك معجنة في بعضه... علشان كده يفضل تهتم بالموضوع ده من بداية التعلم وتبحث وتدور إزاي تكتب وتنظم المشروع بتاعك بأفضل طريقة حتى لو شغال HTML, CSS, JS فقط...
———
نيجي لفهم المشاريع... فيه بعض الشركات أثناء الإنترفيو بتفتح GitHub بتاعك وتجيب مشروع معين وليكن E-Commerce ويبدأ الشخص تبع الشركة يسألك عن إزاي عملت دي وليه فصلت دي عن التانية وهكذا... فلو أنت مش فاهم أو لقاك بتهبد يبقى أنت كده بالسلامة وهيعرف إنك بصمجي...
طيب تعمل إيه وأنت بتطبق مع الفيديو؟
= عندك أكتر من أداة تقدر تسألها إذا الكود ده معمول بأفضل طريقة ولا ممكن يتعمل بطريقة أفضل من كده وأقل تعقيدًا زي ChatGPT وغيره وكمان حاول تغير بعض الحاجات في المشروع اللي في الفيديو (زود حاجة - أو حسّن حاجة موجودة وهكذا)
———
طيب هل المشاريع كلها شبه بعضها ولا مختلفة؟
يعني متبقاش عامل 20 Landing Page ومعتبر كل واحدة منهم على إنها مشروع مستقل وهي أصلًا صفحة أو اتنين...
حاول تخلي المشاريع مختلفة عن بعضها وقريبة من المشاريع الموجودة في الشركات زي E-Commerce و Real Estate مثلًا وحاول تخلي المشاريع أغلبها لوجيك مش UI لأنك في الغالب هتستخدم مكتبات UI جاهزة هتسهل عليك الدنيا كتير... ولو عاوز أفكار مشاريع اسأل الـ AI...
———
بعد ما تخلص المشروع اقفل الجهاز وارجع بعد كام ساعة وحاول تفهم الكود اللي أنت كاتبه... لو مكتوب بطريقة كويسة هتفهمه بسهولة... ودي حاجة أساسية في البرمجة لأنك هتشتغل في تيم في الشركة وأكتر من واحد هيعدل على الكود فلازم تبقى منظم الكود بتاعك سواء من خلال كتابة التعليقات أو من خلال الـ Documentation...
———
طبعًا الكلام اللي فوق ده ينطبق على كل مجالات البرمجة مش الويب فقط...
———
بالتوفيق يا صديقي 🌿
❤14
What is Next.js Middleware?
Let’s explore how middleware can handle auth, redirects, A/B tests, and more—right at the edge.
❤2
التطبيق العملي من أفضل الطرق اللي هتساعدك جدًا في مجال البرمجة. 💯
.
.
موقع DevProjects هتلاقي فيه مشاريع ممتازة تقدر تشتغل عليها بنفسك، وتتعلم خطوة بخطوة لحد ما توصل لمستوى احترافي.🚀
———
📌 أنواع المشاريع المتاحة على الموقع:
- Web Development
- Mobile App
- Automation Or Tools
- HTML/CSS
- JavaScript
- React
- Vue
- Angular
- Node.js
- Python
- Ruby
- Java
- PHP
- Swift
- React Native
———
📌 رابط الموقع:
https://www.codementor.io/projects
.
.
موقع DevProjects هتلاقي فيه مشاريع ممتازة تقدر تشتغل عليها بنفسك، وتتعلم خطوة بخطوة لحد ما توصل لمستوى احترافي.🚀
———
📌 أنواع المشاريع المتاحة على الموقع:
- Web Development
- Mobile App
- Automation Or Tools
- HTML/CSS
- JavaScript
- React
- Vue
- Angular
- Node.js
- Python
- Ruby
- Java
- PHP
- Swift
- React Native
———
📌 رابط الموقع:
https://www.codementor.io/projects
❤11
8 خطوات لتحسين أداء الموقع 🚀
.
.
في عالم الفرونت إند، يعتبر أداء الموقع (Performance) من أهم الحاجات اللي لازم تركز عليها علشان تضمن تجربة مستخدم سلسة وسريعة وتضمن إن الـ SEO يكون كويس وترتيب الموقع معقول. 💯
.
.
تعال ندردش شوية عن أهم التقنيات اللي ممكن تستخدمها لتحسين أداء الموقع بطريقة سهلة وبسيطة 👇
———
1- الـ Selective Rendering
ببساطة، مش لازم تعمل (Rendering) لكل حاجة مرة واحدة. استخدم تقنيات زي Virtual DOM أو Intersection Observer علشان تعمل rendering بس للعناصر اللي ظاهرة للمستخدم، وده هيقلل من استهلاك الموارد بشكل كبير.
———
2- الـ Code Splitting
بدل ما تدي للمستخدم ملف JavaScript ضخم، قسم الكود لمجموعة من الملفات الصغيرة باستخدام React.lazy أو Webpack Code Splitting. مثال:
بدل ما يكون عندك ملف app.js حجمه 5MB، ممكن تقسّمه إلى:
- home.js (1.5MB)
- product.js (3MB)
- about.js (0.5MB)
كده الصفحة هتحمل أسرع وهيتم تحميل الجزء المطلوب بس لما المستخدم يحتاجه.
———
3- الـ Prefetching
لو عندك صفحات متوقع المستخدم هيزورها، استخدم الـ Prefetching علشان تحمل الملفات في الـ cache قبل ما يحتاجها. ده بيخلي الانتقال بين الصفحات أسرع بكتير.
———
4- الـ Priority-Based Loading
حدد الأولويات في تحميل الملفات، يعني الـ HTML والـ CSS يحملوا الأول علشان الصفحة تظهر بسرعة، وبعد كده تحمل الـ JavaScript والـ images حسب الأهمية.
———
5- الـ Compression
قبل ما تبعت أي حاجة للمتصفح، لازم تضغط الملفات باستخدام Gzip أو Brotli علشان تقلل حجمها وتحسن سرعة التحميل، وده بيخلي وقت التحميل (Load Time) أقل بكتير.
———
6- الـ Loading Sequence
رتب تحميل الملفات بطريقة صحيحة بحيث يتم تحميل العناصر المهمة اللي بتظهر في الـ "Above-the-fold" الأول زي HTML & CSS، وبعد كده الملفات اللي مش مهمة في البداية زي الـ noscripts وغيرها.
———
7- الـ Dynamic Imports
بدل ما تحمل كل الكود في الأول، استخدم الـ Dynamic Imports لتحميل الملفات عند الحاجة فقط. مثلًا لما المستخدم يضغط على زرار معين تحمل ملفات معينة dynamically باستخدام import() function
———
8- الـ Tree Shaking
وأخيرًا، لازم تتأكد إن الـ bundle بتاعك مفيهوش أكواد غير مستخدمة. أدوات زي الـ Webpack والـ Rollup بتساعدك على إزالة الأكواد الزيادة وتحسين حجم الملفات اللي بتوصل للمستخدم.
———
📌 ده مقال شرحت فيه كل الخطوات بالتفصيل وبطريقة سهلة
https://dev.to/alisamir/frontend-performance-optimization-a-comprehensive-guide-2bfk
.
.
في عالم الفرونت إند، يعتبر أداء الموقع (Performance) من أهم الحاجات اللي لازم تركز عليها علشان تضمن تجربة مستخدم سلسة وسريعة وتضمن إن الـ SEO يكون كويس وترتيب الموقع معقول. 💯
.
.
تعال ندردش شوية عن أهم التقنيات اللي ممكن تستخدمها لتحسين أداء الموقع بطريقة سهلة وبسيطة 👇
———
1- الـ Selective Rendering
ببساطة، مش لازم تعمل (Rendering) لكل حاجة مرة واحدة. استخدم تقنيات زي Virtual DOM أو Intersection Observer علشان تعمل rendering بس للعناصر اللي ظاهرة للمستخدم، وده هيقلل من استهلاك الموارد بشكل كبير.
———
2- الـ Code Splitting
بدل ما تدي للمستخدم ملف JavaScript ضخم، قسم الكود لمجموعة من الملفات الصغيرة باستخدام React.lazy أو Webpack Code Splitting. مثال:
بدل ما يكون عندك ملف app.js حجمه 5MB، ممكن تقسّمه إلى:
- home.js (1.5MB)
- product.js (3MB)
- about.js (0.5MB)
كده الصفحة هتحمل أسرع وهيتم تحميل الجزء المطلوب بس لما المستخدم يحتاجه.
———
3- الـ Prefetching
لو عندك صفحات متوقع المستخدم هيزورها، استخدم الـ Prefetching علشان تحمل الملفات في الـ cache قبل ما يحتاجها. ده بيخلي الانتقال بين الصفحات أسرع بكتير.
———
4- الـ Priority-Based Loading
حدد الأولويات في تحميل الملفات، يعني الـ HTML والـ CSS يحملوا الأول علشان الصفحة تظهر بسرعة، وبعد كده تحمل الـ JavaScript والـ images حسب الأهمية.
———
5- الـ Compression
قبل ما تبعت أي حاجة للمتصفح، لازم تضغط الملفات باستخدام Gzip أو Brotli علشان تقلل حجمها وتحسن سرعة التحميل، وده بيخلي وقت التحميل (Load Time) أقل بكتير.
———
6- الـ Loading Sequence
رتب تحميل الملفات بطريقة صحيحة بحيث يتم تحميل العناصر المهمة اللي بتظهر في الـ "Above-the-fold" الأول زي HTML & CSS، وبعد كده الملفات اللي مش مهمة في البداية زي الـ noscripts وغيرها.
———
7- الـ Dynamic Imports
بدل ما تحمل كل الكود في الأول، استخدم الـ Dynamic Imports لتحميل الملفات عند الحاجة فقط. مثلًا لما المستخدم يضغط على زرار معين تحمل ملفات معينة dynamically باستخدام import() function
———
8- الـ Tree Shaking
وأخيرًا، لازم تتأكد إن الـ bundle بتاعك مفيهوش أكواد غير مستخدمة. أدوات زي الـ Webpack والـ Rollup بتساعدك على إزالة الأكواد الزيادة وتحسين حجم الملفات اللي بتوصل للمستخدم.
———
📌 ده مقال شرحت فيه كل الخطوات بالتفصيل وبطريقة سهلة
https://dev.to/alisamir/frontend-performance-optimization-a-comprehensive-guide-2bfk
❤7
Next.js 16 RLS for Partial Prerendring 💯
Secure your streams. Use RLS and server-side tokens to keep partial prerenders correct and private in Next.js 16
❤3
تعال ندردش شوية عن الـ Load Balancing 💯
.
.
الـ Load Balancing حاجة مهمة جدًا بتأثر في سرعة وثبات أي تطبيق، وخصوصًا لو التطبيق ده عليه عدد ضخم من المستخدمين.
الفكرة في الـ Load Balancing إنه بيوزع ضغط الطلبات اللي بتيجي على السيرفرات عشان يخلي الأداء أحسن ويقلل أي مشاكل ممكن تحصل.
———
📌 إزاي الـ Load Balancing بيشتغل؟
تخيل معايا أنك عندك تطبيق عليه عدد كبير من المستخدمين اللي بيدخلوا ويعملوا طلبات في نفس الوقت، زي متجر إلكتروني كبير أو موقع تواصل اجتماعي.
لو التطبيق ده موجود على سيرفر واحد، هيواجه مشكلة كبيرة لو العدد زاد لأن السيرفر هيبدأ يبقى بطيء، أو ممكن يقع لو الضغط كان زيادة.
الحل هنا إنك بدل ما تشغل التطبيق كله على سيرفر واحد، بتوزعه على أكتر من سيرفر، وكل سيرفر بيشيل جزء من الشغل.
الـ Load Balancer بيدخل هنا وبيبقى هو اللي بيحدد الطلبات تروح لمين، بحيث مفيش سيرفر يكون عليه ضغط أكتر من التاني.
———
📍 أنواع الـ Load Balancing:
- الـ Round Robin: الطريقة دي ببساطة بتوزع الطلبات بالتساوي على كل السيرفرات. أول طلب يروح لأول سيرفر، والتاني للتاني، وهكذا لحد ما يوصل لآخر سيرفر ويرجع تاني من الأول.
- الـ Least Connections: الطريقة دي بتركز على عدد الاتصالات اللي كل سيرفر شغال عليها، بمعنى إنها بتبعت الطلب للسيرفر اللي عليه عدد أقل من الطلبات حاليًا، وده بيكون مفيد لما يكون فيه اختلاف كبير في الحمل بين الطلبات.
- الـ IP Hash: هنا التوزيع بيكون بناءً على عنوان IP بتاع العميل اللي بيعمل الطلب، يعني كل عميل دايمًا هيتم توجيهه لنفس السيرفر بناءً على عنوان الـ IP بتاعه، ودي بتنفع في حالات معينة زي لما يكون فيه بيانات كاش محتاجة تتوزع.
- الـ Weighted Load Balancing: في الحالة دي بنعمل أحمال مختلفة للسيرفرات بناءً على قدرتهم. يعني لو عندك سيرفر أقوى من الباقيين، تقدر تخليه ياخد حمل أكبر.
———
📍 ليه الـ Load Balancing مهم؟
الهدف الأساسي من الـ Load Balancing هو إنه يخلي التطبيق بتاعك مستقر وسريع للمستخدمين مهما زاد عددهم.
يعني بدل ما الموقع يعلق أو يقع، الطلبات هتفضل تتوزع بشكل مرن على كل السيرفرات.
———
وفقكم الله لكل خير 🌿
.
.
الـ Load Balancing حاجة مهمة جدًا بتأثر في سرعة وثبات أي تطبيق، وخصوصًا لو التطبيق ده عليه عدد ضخم من المستخدمين.
الفكرة في الـ Load Balancing إنه بيوزع ضغط الطلبات اللي بتيجي على السيرفرات عشان يخلي الأداء أحسن ويقلل أي مشاكل ممكن تحصل.
———
📌 إزاي الـ Load Balancing بيشتغل؟
تخيل معايا أنك عندك تطبيق عليه عدد كبير من المستخدمين اللي بيدخلوا ويعملوا طلبات في نفس الوقت، زي متجر إلكتروني كبير أو موقع تواصل اجتماعي.
لو التطبيق ده موجود على سيرفر واحد، هيواجه مشكلة كبيرة لو العدد زاد لأن السيرفر هيبدأ يبقى بطيء، أو ممكن يقع لو الضغط كان زيادة.
الحل هنا إنك بدل ما تشغل التطبيق كله على سيرفر واحد، بتوزعه على أكتر من سيرفر، وكل سيرفر بيشيل جزء من الشغل.
الـ Load Balancer بيدخل هنا وبيبقى هو اللي بيحدد الطلبات تروح لمين، بحيث مفيش سيرفر يكون عليه ضغط أكتر من التاني.
———
📍 أنواع الـ Load Balancing:
- الـ Round Robin: الطريقة دي ببساطة بتوزع الطلبات بالتساوي على كل السيرفرات. أول طلب يروح لأول سيرفر، والتاني للتاني، وهكذا لحد ما يوصل لآخر سيرفر ويرجع تاني من الأول.
- الـ Least Connections: الطريقة دي بتركز على عدد الاتصالات اللي كل سيرفر شغال عليها، بمعنى إنها بتبعت الطلب للسيرفر اللي عليه عدد أقل من الطلبات حاليًا، وده بيكون مفيد لما يكون فيه اختلاف كبير في الحمل بين الطلبات.
- الـ IP Hash: هنا التوزيع بيكون بناءً على عنوان IP بتاع العميل اللي بيعمل الطلب، يعني كل عميل دايمًا هيتم توجيهه لنفس السيرفر بناءً على عنوان الـ IP بتاعه، ودي بتنفع في حالات معينة زي لما يكون فيه بيانات كاش محتاجة تتوزع.
- الـ Weighted Load Balancing: في الحالة دي بنعمل أحمال مختلفة للسيرفرات بناءً على قدرتهم. يعني لو عندك سيرفر أقوى من الباقيين، تقدر تخليه ياخد حمل أكبر.
———
📍 ليه الـ Load Balancing مهم؟
الهدف الأساسي من الـ Load Balancing هو إنه يخلي التطبيق بتاعك مستقر وسريع للمستخدمين مهما زاد عددهم.
يعني بدل ما الموقع يعلق أو يقع، الطلبات هتفضل تتوزع بشكل مرن على كل السيرفرات.
———
وفقكم الله لكل خير 🌿
❤3
API Design 101: From Basics to Best Practices 💯
https://levelup.gitconnected.com/api-design-101-from-basics-to-best-practices-e3d59eca10d3
https://levelup.gitconnected.com/api-design-101-from-basics-to-best-practices-e3d59eca10d3
❤5