Programmers Caffe
976 subscribers
286 photos
9 videos
23 files
69 links
قناة "كافي المبرمجين" تخص علوم البرمجيات والتكنولوجيات وتهتم بمساعدة المبرمجين في الوصل الى الطريق المناسب لتطوير الذات في البرمجة.
تابعونا على تويتر:twitter.com/ProgrammersCaff
لينك موقعنا: https://programmerscaffe.com/home
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Just a JavaScript developer after work.
😁6
الـ Node js ماذا ولماذا؟
وفقًا لوثائق NodeJs الرسمية ، يمكن تعريف NodeJs على أنها بيئة تشغيل جافا سكريبت مفتوحة المصدر ومتعددة المنصات يمكن استخدامها لإنشاء أي نوع من المشاريع.
نظرًا لأن التعريف نفسه معقد للفهم، فلنقم الآن بتقسيم التعريف إلى كلمات وفهم ما يعنيه بالضبط ، لذا فإن NodeJS هو مصدر مفتوح ومتعدد المنصات يعني أن NodeJs متاحة للاستخدام والمشاركة ويمكن حتى تعديلها بواسطة أي شخص، وعبر الأنظمة الأساسية يعني أنه يمكننا كتابة كود nodejs بطريقة يمكن تنفيذها في أي نظام تشغيل مثل Windows أو Linux أو Mac.
-ماذا يعني javascript runtime؟
الjavascript runtime يعني ببساطة المكان الذي يتم فيه تنفيذ كود جافا سكريبت الخاص بنا عندما نقوم بتشغيل الكود الخاص بنا مع ذلك، يمكن تنفيذ جافا سكريبت اليوم على أي جهاز يحتوي على برنامج يسمى "محرك جافا سكريبت". محرك جافا سكريبت هذا له أسماء مختلفة وفقًا لمنصات مختلفة، على سبيل المثال، في متصفح جوجل كروم يطلق عليه محرك V8، وعلى متصفح فايرفوكس يسمى SpiderMonkey وفي Safari يسمى JavascriptCore.
-ما هو محرك جافا سكريبت(javascript engine)؟
محرك جافا سكريبت هو ببساطة برنامج يساعد في تحويل كود جافا سكريبت إلى كود يمكن فهمه بواسطة الآلة.
للتلخيص :nodejs هي بيئة تشغيل جافا سكريبت تُستخدم لإنشاء خوادم وتنفيذ عمليات الواجهة الخلفية (back-end) في جافا سكريبت لتطوير تطبيقات قابلة للتطوير في الوقت الفعلي.
-لماذا يجب علينا استخدامNodeJS؟
تمنح البرمجة باستخدام nodejs ميزة تطوير كل من الواجهة الأمامية والخلفية باستخدام لغة برمجة واحدة هي جافا سكريبت ، لذلك يتمتع مبرمجو جافا سكريبت بميزة وراحة في إتقان لغة برمجة واحدة بدلاً من تعلم لغات مختلفة للواجهة الأمامية والخلفية.
بصرف النظر عن هذا، يعمل Nodejs على محرك chromes V8 الذي يحسن أداء Nodejs ويسمح بإجراء عمليات غير متزامنة.
يعني غير المتزامن(Asynchronous) إجراء العمليات بشكل متزامن في نفس الوقت، وبالتالي مع nodejs من الممكن إجراء عمليات غير متزامنة دون زيادة الحمل على الخادم.
يأتي Nodejs مع npm (node package manager) وهو مدير الحزم الافتراضي، وبالتالي مع npm، يمكننا إعادة استخدام الكود الموجود بالفعل وكذلك تطوير حزمنا الخاصة للآخرين لاستخدامها مما يوفر وقت التطوير.
-كيف يختلف nodejs عن جافا سكريبت؟
نظرًا لأن nodejs تستخدم جافا سكريبت؛ فإن العديد من المطورين الجدد يختلط عليهم الأمر مع كليهما، فإليك بعض الاختلافات الرئيسية:
جافا سكريبت هي لغة برمجة بينما nodejs هي بيئة تشغيل جافا سكريبت
يعمل Javascript على المتصفح ولكن بمساعدة nodejs، يمكننا تشغيل كود جافا سكريبت خارج المتصفح أيضًا.
الJavascript - هي لغة برمجة نصية من جانب العميل (client-side) ومن ثم تُستخدم لإنشاء الواجهة الأمامية بينما يتم استخدام nodejs كلغة برمجة نصية من جانب الخادم (server-side) تُستخدم لإنشاء الواجهة الخلفية للتطبيق.
باستخدام nodejs، يمكننا إجراء عمليات أنظمة الملفات والتشغيل بينما باستخدام جافا سكريبت يمكننا إجراء عمليات خاصة بالمتصفح وعدد قليل جدًا من عمليات نظام التشغيل مثل تحميل الملفات وما إلى ذلك إلى جانب أذونات معينة.
- عيوب :nodejs
حتى الآن ، رأينا ما هو nodejs، ولماذا يجب أن نستخدمه الآن دعونا نرى متى يجب ألا نستخدم nodejs؟
نظرًا لأن nodejs تستخدم نموذج برمجة غير متزامن(asynchronous)، يصبح من الصعب الحفاظ على الكود مع زيادة حجم التطبيق؛لا يجب استخدامه عند أداء مهام حسابية ثقيلة على الخادم.
نظرًا لأن العديد من وحدات npm متاحة للاستخدام؛ فيجب اختيارها بحكمة حيث قد يحتوي بعضها على كود ووثائق (documentation) رديئة الجودة.
- تطبيقات العالم الحقيقي:
كما هو الحال الآن، رأينا جميع إيجابيات وسلبيات nodejs ولماذا يجب أن نستخدمها؛ فلنلق الآن بعضًا من أكثر تطبيقات العالم الحقيقي شيوعًا والتي يستخدمها الناس في جميع أنحاء العالم في حياتهم اليومية:
Linkedin-:
منصة التواصل للمحترفين.
-Paypal:
تطبيق المدفوعات.
-Trello:
تطبيق إدارة المشاريع.
-Uber:
خدمة السيارات في أي وقت وفي أي مكان.
وبالتالي، يتم استخدام nodejs على نطاق واسع من قبل معظم شركات التكنولوجيا؛ لذا فإن تعلم nodejs هو بالتأكيد الخيار الأفضل إذا كنت ترغب في استخدامه للواجهة الخلفية لمشروعك التالي.
#استمر_تصلل
2👍1🔥1
افضل Mobile App Development Frameworks في 2022
#استمر_تصل
👍1
هدف كل مبرمج
😁9
يوميات مبرمج مصري فى الغربة
😁1
Python lovers
2👎2
في شويه حاجات تدل علي ان software دا فيه مشاكل وكوارث، ممكن صاحب business يكتشف دا حتي لو معندوش خلفيه technical .
1- لما تلاقي في bugs بتطلع وحسابات غلط، و developers يدخل علي database يصلح الارقام في database بايده، عشان يظبط الدنيا، او يكون عامل console commands عشان ت fix المشاكل دي، هنا نعرف ان في كوارث لازم تتحل حلول منطقيه.
2- لما تلاقي نفس ال bug يتطلع كتير هي هي نفس ال bug هنا هنعرف ان في مشكله و technical team مش بيفكر بشكل سليم عشان يحلها، فكل متطلع يلزقها بشكل معين.
3- لما تلاقي في اشخاص معينين في الشركه بيتقال عليهم دول الحيتان اللي شايلين الشركه ومفيش حد بييجي يعمر غيرهم هما اللي بنوا الدنيا وهما اللي مشغلينها وهتلاقي دول واخدين راحتهم ومتميزين عن الباقي وتلاقي كل الناس بتتكلم عنهم وبتاع، هنا تعرف ان دول عاملين طلاسم محدش يقدر يفكها غيرهم. لو جه حد تاني مش هيقدر يتعايش مع الطلاسم دي ييكمل علي كدا ويبقي مش مقتنع ييسيب المشاكل دي ويمشي وساعتها هيثبت اكتر للشركه اد ايه الحيات اللي موجودين هما اللي شايلين المكان ومفيش غيرهم يقدروا يشيلوه، نوع من انواع الدجل اللي منتشر في software.
4- لما تلاقي bug او change request بياخد وقت مبالغ فيه عشان يتعمل بشكل سليم وممكن fix bug يطلع bug تانيه.
5- لما نيجي نضيف Features او نعدل نكون محتاجين نغير كتير في اجزاء كتير.
6- لما تلاقيهم عاملين اجتماع وليكن sprint plain واحنا بنوزع tasks تلاقي المشروع متسمي باشخاص الجزء بتاع ال catalog دا بتاع الموظف x، والجزء بتاع order دا بتاع الموظف y، وهنا هتاخد انطباع ان كل واحد شغال بمزاجه وفكره، والكود مش consistency مع بعضه، لو واحد دخل في حته مش بتاعته هيتوه ويعمل bugs بسهوله.
منقول
👍2
تحسين أداء MongoDB
حلول بسيطة
ضبط config لزيادة الإنتاجية و performance
إضافة indices ( الفهارس ) على أساس Query patterns
حلول متوسطة
معرفة نسب read-to-write
استخدام الذاكرة Determine
إضافة read replicas لفصل read and write querie و تقليل الحمل .
الاستفادة من connection pools للاستفادة من multiple replicas
اكتشف long-running queries و dumping في collection الجديدة
تحسين long-running queries خطوة بخطوة
حلول متقدمة
الترقية إلى أحدث إصدار من MongoDB
مراجعة data modeling و indexing
افحص query patterns و profiling
اتبع best practices عن querying data
تجنب unindexed aggregations
باستخدام limits
باستخدام projections
استخدام $hint في queries لتحديد index معين
استخدم Increment Operator لإجراء العمليات من Server-Side
إضافة shards لتوزيع الكتابة عبر multiple nodes
تكرار shards و تشكيل كتلة عالية من cluster
#استمر_تصل
المبرمج المصري
😁5
😁2
مفهوم Events في Node.js

Event concept

الـ Event هو في الأساس إشارة إلى حقيقة أو حدث مجدول يمكن عمل Modify لظروف(Circumstances ) المحيطة به.

في البرمجة ، يمكننا التعامل مع كل حالة من Circumstances التي يرسلها الكمبيوتر أو يلتقطها ، وتشمل كل ما يحدث له Processing من معالجة ملف إلى النقرة التي يقوم بها المستخدم في المتصفح.

يمنحنا التعامل مع Event في Nodejs إمكانية فهم كيفية عمل systems لأنها تستند عمليًا إلى نفس نمط pub-sub.

Events in Javascript

الـ Events في جافا سكريبت هي الطريقة التي يجب أن نتحكم بها في Actions أو Behaviors التي يطلقها بعض Entity.

في Javascript ، يمكننا تحديد تدفقات البرمجة attached عند حدوث Event معين.

تحتوي Events الخاصة بـ Client و Server على API مختلفة تمامًا ، على الرغم من أنها تبدو متشابهة ، إلا أن لها معالجات وميزات مختلفة.

Module Events

يتكون Nodejs من بنية Asynchronous تعتمد على الـ Events .

هذا يعني أن الغالبية العظمى من وحدات ووظائف Nodejs تعمل مع التقاط events ، مثل File System أو HTTP Modules ، حيث يعتمد جزء كبير من عملها على عمل Events .

بدعم من هذه الـModules ، يمكننا تنفيذ نمط Pub-Sub في أي جزء من تطبيقنا.

هذا بفضل Event Emitter Class ، أنه بمجرد توسيع أي Object من هذه Class ، يمكننا عمليا استخدام جميع ميزات هذا Pattern .

Event Emitter

هي class داخل events module ، والتي توفر لنا وظائف متعددة للعمل مع events ، مثل creation event ، management of communication channels ، emission of events ، والكثير من ميزات الاخرى.

انظر للمثال في Code 1 يشرح Event Emitter في الكومنت

طرق Event Handling Methods

تعمل Event Emitter Class من خلال آليات callback وتحتوي على طريقتين رئيسيتين تساعدنا في listen إلى events هما:

Event Subscription: On.

Event Publishing: Emit.

انظر للمثال في 3 , Code 2 في الكومنت

بفضل هاتين الطريقتين الرئيسيتين ، يمكننا عمليًا send و receive المعلومات من أي نقطة في تطبيقنا ، ولا يتعين علينا سوى عمل subscribe و إرسال events التي نختارها.

قائمة methods الأكثر استخداما

الـ events module واسعة النطاق ، لا تقتصر فقط على القدرة Emit events و listen إليها ، ولكن يمكننا أيضًا management of communication channels وتعيين listeners و إزالتهم.

فيما يلي methods الأكثر استخدامًا ووصفها المختصر:

الـ eventNames : إرجاع array of strings من سلاسل eventsالمعينة.

لـ once : تقوم تشغيل Event listener الذي سيتم مرة واحدة فقط.

لـ removeListener: تقوم بإزالة listener معين.

الـ removeAllListeners : تقوم بإزالة جميع listeners من event .

#استمر_تصل
3👍1
tecnology II Japan
يحطم الرقم القياسي العالمي لأقصى سرعة إنترنت ..
حقق المهندسون في اليابان سرعة إنترنت غير مسبوقة بلغت 319 تيرابايت في الثانية (تيرابايت / ثانية).
ولتحقيق تلك السرعة ، طور الباحثون أليافًا ضوئية تجريبية بأربعة أنوية.
اي إنه أسرع بنحو 7.6 مليون مرة مما لديك على الأرجح في المنزل وهو سريع جدًا بحيث يمكنه تنزيل ما يقرب من 80 ألف فيلم في ثانية واحدة فقط.
😁4👏2
This media is not supported in your browser
VIEW IN TELEGRAM
Validation خارج الصندوق
فكره عبقريه لكن محدش يستخدمها
😁72
😁7
الـ Promises في Javascript
تم إنشاء Promises للتعامل بشكل أفضل مع العمليات Asynchrony في Javascript مما يضيف تحكمًا وتتبعًا أفضل لهذه العمليات.
تم بناء العديد من API للمتصفحات على Promises ، ومن أشهرها fetch ().
كما أن الـPromises يمكن دمجها تمامًا مع ميزات اللغة الأخرى مثلAsync / Await لتحسين reading و order .
الـ Asynchrony في Javascript
تعتمد Javascript على non-blocking في asynchronous model لتحقيق multiple operations على network ، و معالجة تفاعلات المستخدم ، وفي نفس الوقت الحفاظ على واجهة سلسة .
هذا هو سبب صعوبة handling لعمليات asynchronous في بعض الأحيان.
كانت الطريقة الأكثر شيوعًا للعمل مع asynchrony منذ فترة عن طريق callback functions ، ولكن مع بداية ES6 ، أضافوا additional mechanisms .
الـ Promises
الـ Promises هو object يمثل completion أو failure لعملية asynchronous operation .
تمت إضافة هذا object الجديد إلى لغة Javascript في ECMAScript 2015 (ES6) لدعم asynchronous management بشكل أفضل.
يتم تنفيذ promises بطريقتين :
الـ States : هي خصائص داخلية لـ Promise تشير إلى الوضع الحالي أو المستقبلي الذي يمكن أن يحدثة الـ promise .
الـ Controllers : هي طرق يتم تشغيلها بواسطة حالات الوعود لالتقاط التدفقات النهائية والشرطية .
اPromise states
تتكون Promise من الحالات الثلاث التالية:
ـPending : هي state الأولية Promise عند تنفيذه.
الـ Fulfilled ـ(success resolve): تشير هذة الـStatus إلى اكتمال عملية asynchronous بنجاح.
ـRejected : تشير تشير هذة الـStatus إلى فشل عملية asynchronous .
Controllers
ـThen : هي Method يتم تنفيذه و يحدث resolving لـ promise مع
الـ stateـ "Fulfilled "تتلقى هذه method استدعاء callback مع استمرارية عملية implementation .
ـCatch : هي Method يتم تنفيذه عند حدوث rejected لـ promise مع الـstatusـ “Rejected” تستقبل هذه method استدعاء تم implementation مع error.
👍1
الـ Promises في Javascript

تم إنشاء Promises للتعامل بشكل أفضل مع العمليات Asynchrony في Javascript مما يضيف تحكمًا وتتبعًا أفضل لهذه العمليات.

تم بناء العديد من API للمتصفحات على Promises ، ومن أشهرها fetch ().

كما أن الـPromises يمكن دمجها تمامًا مع ميزات اللغة الأخرى مثلAsync / Await لتحسين reading و order .

الـ Asynchrony في Javascript

تعتمد Javascript على non-blocking في asynchronous model لتحقيق multiple operations على network ، و معالجة تفاعلات المستخدم ، وفي نفس الوقت الحفاظ على واجهة سلسة .
هذا هو سبب صعوبة handling لعمليات asynchronous في بعض الأحيان.

كانت الطريقة الأكثر شيوعًا للعمل مع asynchrony منذ فترة عن طريق callback functions ، ولكن مع بداية ES6 ، أضافوا additional mechanisms .

الـ Promises

الـ Promises هو object يمثل completion أو failure لعملية asynchronous operation .

تمت إضافة هذا object الجديد إلى لغة Javascript في ECMAScript 2015 (ES6) لدعم asynchronous management بشكل أفضل.

يتم تنفيذ promises بطريقتين :

الـ States : هي خصائص داخلية لـ Promise تشير إلى الوضع الحالي أو المستقبلي الذي يمكن أن يحدثة الـ promise .

الـ Controllers : هي طرق يتم تشغيلها بواسطة حالات الوعود لالتقاط التدفقات النهائية والشرطية .

اPromise states

تتكون Promise من الحالات الثلاث التالية:

ـPending : هي state الأولية Promise عند تنفيذه.

الـ Fulfilled ـ(success resolve): تشير هذة الـStatus إلى اكتمال عملية asynchronous بنجاح.

ـRejected : تشير تشير هذة الـStatus إلى فشل عملية asynchronous .

Controllers

ـThen : هي Method يتم تنفيذه و يحدث resolving لـ promise مع

الـ stateـ "Fulfilled "تتلقى هذه method استدعاء callback مع استمرارية عملية implementation .

ـCatch : هي Method يتم تنفيذه عند حدوث rejected لـ promise مع الـstatusـ “Rejected” تستقبل هذه method استدعاء تم implementation مع error.


#استمر_تصل
👍2