احصائية اللغات البرمجية المستخدمة في بناء مواقع الويب من جهة السيرفر back-end
➖➖➖➖➖
للمزيد من المنشورات♻️ : تصفح قائمة المنشورات
#back_end #php #python #asp_net #aspnet #dotnet #java #javascript
➖➖➖➖➖
للمزيد من المنشورات
#back_end #php #python #asp_net #aspnet #dotnet #java #javascript
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Yhya Nesb
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء الثاني عشر في هذه القناة2️⃣ 1️⃣
الجزء الثاني عشر في هذه القناة
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء الثالث عشر في هذه القناة3️⃣ 1️⃣
تجنب الواجهات السلسة Avoid fluent interfaces:
تعد واجهة fluent واجهة برمجة التطبيقات API في البرمجة كائنية التوجه OOP حيث تهدف إلى تحسين قراءة الكود من خلال تتابع أو تسلسل التوابع (function) وتسمى بـ Method chaining
مصطلاحات غريبة😔 !؟
واجهة fluent: ترجمتها: بطلاقة أو سلسة، لكن ليست❗️ اسم على مسمى(لترجمة طلاقة)؛ المقصود ليس تجنب إستخدام الواجهات interfaces البرمجية بشكل مباشر أو طليق - وسنشرح في الأجزاء القادمة 🔜 ضرورة إستخدام الواجهات البرمجية -
بل هي عبارة عن وجه أو شكل لواجهة برمجة التطبيقات API (حيث API يقوم بعمل الوسيط بين برنامجين لتبادل البيانات؛ أي ليس المقصد هنا إستخدام APIs من جهات خارجية، فقد تقوم بجلب اسم الموقع من قاعدة بيانات وتعرضها للمستخدم) تستخدم تسلسل التوابع (function) في البرمجية كائنية التوجيه OOP لكن بدون إنشاء object (أو بإنشاء لكن القيام بكل العمليات في تسلسل واحد) في متغير، انظر للمثال لتفهم القصد بدقة مع التغير الذي سيحصل لإصدار php8.4😉 :
طريقة التسلسل Method chaining: وهي أحد الطرق التي تستخدم إستدعاء التوابع function بشكل مستقل عند التعامل مع البرمجة كائنية التوجه OOP، حيث يعيد التابع الصنف نفسه الذي تستخدمه - الفرق بينها وبين واجهة fluent أن واجهة fluent تستخدم هذه الطريقة، لكن الطريقة يمكن إستخدامها بدون التعرض لتأثير fluent - في المثال السابق عرضنا طريقة التسلسل مع تأثير fluent أما المثال التالي سيكون بدون تأثير fluent بحيث نقوم بجعل الكائن في متغير خاص به:
وفي أول تعليق ستشاهد صورة توضح العلاقة بين المفهومين
في حين أنها تستخدم في بعض السياقات، غالباً في كائنات objects البناء builder (مثل query builder في Laravel) لكن في كثير من الأحيان يأتي ذلك على حساب أنه:
1️⃣ - يلغي مفهوم التغليف Encapsulation
2️⃣ - يلغي فاعلية نمط المزخرف Decorator (هو نمط من أنماط تصميم البرمجيات)
3️⃣ - صعوبة القيام بتجارب متتابعة على الكائن الوهمي (Mock object)
4️⃣ - يجعل معرفة الإختلافات بعد التحديثات أكثر صعوبة (الاختلاف في الكود البرمجي)
لمزيد من المعلومات يمكنك قراءة المقالة التالية التي كتبها Marco Pivetta
الاستخدام السيء:
الاستخدام الجيد:
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك☺️
للمزيد من هذه الشروحات يمكنك متابعتي⬅️ @YhyaNesb 🔥
#php
الجزء الثالث عشر في هذه القناة
قد يحوي هذا الجزء على بعض المصطلاحات الغريبة؛ مصطلاحات خاصة بهندسة البرمجيات (software engineering) وتصميم البرمجيات (design pattern)
تجنب الواجهات السلسة Avoid fluent interfaces:
تعد واجهة fluent واجهة برمجة التطبيقات API في البرمجة كائنية التوجه OOP حيث تهدف إلى تحسين قراءة الكود من خلال تتابع أو تسلسل التوابع (function) وتسمى بـ Method chaining
مصطلاحات غريبة
واجهة fluent: ترجمتها: بطلاقة أو سلسة، لكن ليست
بل هي عبارة عن وجه أو شكل لواجهة برمجة التطبيقات API (حيث API يقوم بعمل الوسيط بين برنامجين لتبادل البيانات؛ أي ليس المقصد هنا إستخدام APIs من جهات خارجية، فقد تقوم بجلب اسم الموقع من قاعدة بيانات وتعرضها للمستخدم) تستخدم تسلسل التوابع (function) في البرمجية كائنية التوجيه OOP لكن بدون إنشاء object (أو بإنشاء لكن القيام بكل العمليات في تسلسل واحد) في متغير، انظر للمثال لتفهم القصد بدقة مع التغير الذي سيحصل لإصدار php8.4
$name = (new Employees())->topEmployee()->getName();
// in php >= 8.4
$name = new Employees()->topEmployee()->getName();
طريقة التسلسل Method chaining: وهي أحد الطرق التي تستخدم إستدعاء التوابع function بشكل مستقل عند التعامل مع البرمجة كائنية التوجه OOP، حيث يعيد التابع الصنف نفسه الذي تستخدمه - الفرق بينها وبين واجهة fluent أن واجهة fluent تستخدم هذه الطريقة، لكن الطريقة يمكن إستخدامها بدون التعرض لتأثير fluent - في المثال السابق عرضنا طريقة التسلسل مع تأثير fluent أما المثال التالي سيكون بدون تأثير fluent بحيث نقوم بجعل الكائن في متغير خاص به:
$employees = new Employees();
$nameTopSalaryEmployee = $employees->topEmployee()->getName();
$namesTopSalaryEmployees = $employees->topTenEmployee()->getNames();
وفي أول تعليق ستشاهد صورة توضح العلاقة بين المفهومين
في حين أنها تستخدم في بعض السياقات، غالباً في كائنات objects البناء builder (مثل query builder في Laravel) لكن في كثير من الأحيان يأتي ذلك على حساب أنه:
لمزيد من المعلومات يمكنك قراءة المقالة التالية التي كتبها Marco Pivetta
الاستخدام السيء:
class Car
{
private $make = 'Honda';
private $model = 'Accord';
private $color = 'white';
public function setMake(string $make): self
{
$this->make = $make;
// NOTE: Returning this for chaining
return $this;
}
public function setModel(string $model): self
{
$this->model = $model;
// NOTE: Returning this for chaining
return $this;
}
public function setColor(string $color): self
{
$this->color = $color;
// NOTE: Returning this for chaining
return $this;
}
public function dump(): void
{
var_dump($this->make, $this->model, $this->color);
}
}
$car = (new Car())
->setColor('pink')
->setMake('Ford')
->setModel('F-150')
->dump();
الاستخدام الجيد:
class Car
{
private $make = 'Honda';
private $model = 'Accord';
private $color = 'white';
public function setMake(string $make): void
{
$this->make = $make;
}
public function setModel(string $model): void
{
$this->model = $model;
}
public function setColor(string $color): void
{
$this->color = $color;
}
public function dump(): void
{
var_dump($this->make, $this->model, $this->color);
}
}
$car = new Car();
$car->setColor('pink');
$car->setMake('Ford');
$car->setModel('F-150');
$car->dump();
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك
للمزيد من هذه الشروحات يمكنك متابعتي
#php
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Yhya Nesb
مفهوم Clean Code انتشر بالسنوات الماضية 🕐
هو مفهوم في تطوير البرمجيات 🤖 يشير إلى التنفيذ المنتظم والمنطقي والنظيف والشامل والقابل للتتبع للكود. الهدف من الكود النظيف هو تطوير البرمجيات بكفاءة وفعالية 🔥 وتصميم كود يمكن قراءته وتغييره وتطويره وصيانته بسهولة.…
هو مفهوم في تطوير البرمجيات 🤖 يشير إلى التنفيذ المنتظم والمنطقي والنظيف والشامل والقابل للتتبع للكود. الهدف من الكود النظيف هو تطوير البرمجيات بكفاءة وفعالية 🔥 وتصميم كود يمكن قراءته وتغييره وتطويره وصيانته بسهولة.…
ماذا يجب أن أتعلم بعد c++ 🖥
تعلم لغة c++ يقصد به بعد التأسس بهذه اللغة الرائعة، فتعد لغة c++ لغة تأسيسة🖥 وينصح بها الكثير؛ لكن هناك عدة نقاط يغفل عنها الكثير ‼️ فالتأسيس ليس فقط في تعلم كيف تكتب كود بهذه اللغة 🙂 فلا أحد بحاجة لك لأن أي Model ذكاء اصطناعي يمكنه القيام بذلك 🙃 ؛ تابع القراءة لمعرفة التفاصيل 🔍
ماذا يجب أن أتعلم قبل c++🖥
- أساسيات الحاسوب الذي ستتعامل معه😬 فهو صديق مسيرتك البرمجة 😁 فعليك البدء بتعلم فوائد أو وظائف القطع الأساسية للحاسوب 💻 فمثلاً:
مفهوم خاطئ بأن الذاكرة المؤقتة RAM كلما كانت أكبر كلما كان الحاسوب أقوى🔥
- بالإضافة لذلك يجب أن تتعلم أنظمة العد🖥 التي قد تحتاج لها في يوم من الأيام (ركز على النظام الثنائي)
- مدخل إلى الخوارزميات🖥 ؛ لا تقلق لا أقصد الخوارزميات التي ستكتب كود برمجي بها 😅 بل التي تجعلك تحلل فكرة صغيرة (الهدف منها هو مساعدك للتفكير كمبرمج، ما الهدف من كتابتك كود برمجي وأنت تبحث عن كود على الانترنت لوضعه في مشروعك - تقوم بكتابه لتشعر بأنك من استطاع حل المشكلة - فحل المشاكل سمة ضرورية للمبرمج الناجح)
- نظام التشغيل الذي ستعمل عليه، كيف تقوم بتحميل برنامج من الانترنت، البحث عبر الانترنت
حسناً أين يمكن العثور على كورسات👥 لها؟ ببساطة قناة المهندس ابو هدهود
ماذا يجب أن أتعلم أثناء تعلم أساسيات c++🖥
- يجب أن تتعلم البنى الأساسية📌 (الشروط - التكرار - التوابع)
- تقوم بحل بعض التحديات✨ التي ستساعدك لتثبيت مفهوم التكرار (تحديات رسم الأشاكل) وأنصحك بالتحديات الموجودة في موقع هرمش، السبب ببساطة: موقع هرمش موقع تعليمي عربي، يقوم بتحديث محتوى موقعه باستمرار، التحديات الموجودة محلولة باللغات البرمجية التالية: (python - c# - c++ - c - java) التي تعد لغات تأسيسة أيضاً
ملاحظة⁉️ : في حال كنت تريد البدء بتعلم python أتمنى أن تقراء رسالة: لماذا لا يجب عليك تعلم بايثون أولاً؟
- تعلم الفرقℹ️ بأنواع البيانات (int - short - bigint - unsigned int)
- تعلم البرمجة كائنية التوجه OOP والتي كانت لغة c++ هي أساساً لها عوضاً عن لغة C👩💻
بالنسبة للمصادر أنصحك بكورس الاستاذ أسامة الزيرو وكورس OOP للمهندس عادل نسيم
ماذا يجب أن أتعلم بعد تعلم أساسيات c++🖥
- حل المشكلات على مواقع التحديات البرمجية
- تعلم هياكل البيانات والخوارزميات Data Structures تكمن أهمية الكورس في حل المشكلات التي واجهت المبرمجين، بالإضافة لفهم أنواع البيانات الموجودة في اللغات البرمجية الحديثة مثل: php - python
- ابحث عن بعض المكاتب والحاويات الديناميكية الأساسية التي قد تساعدك في حال أردت العمل بهذه اللغة الرائعة💯 مثل Math - queue - vector
- ابداء بالتعرف على الاختصاصات البرمجية👀 للتعرف على المجال التي تميل له لبتدأ تعلمه وفي حال كنت قد تعلمت كل ما سابق سيساعدك ويوفر عليك الوقت لتعلم أي لغة برمجة
أما لو كنت تريد احتراف هذه اللغة الرائعة فادعوك لقراءة الخريطة التالية roadmap.sh
تجارب تعلم c++ كلغة تأسيسة📍
بالنسبة لي☺️ : بعد تعلم هذه اللغة الرائعة، تغيري مفهومي للبرمجة بشكل كامل، من أهمية البرمجة كائنية التوجه حتى فهم أدق 👌 التفاصيل في النتيجة النهائية للكود، والأهم التخطيط الصحيح 🤓 قبل البدء في عملية التكويد، ولا يمكنني أن أنكر فهمي لأنواع البيانات المتعدة التي ساعدتني على بناء قواعد بيانات 📊 بكفائة عالية 🔥
تجربت صديقي😊 كانت: فهمه للأنواع المختلفة للبيانات بالإضافة لتعلمه أمور دقيقة جداً لم يتطرق لها في أي لغة برمجية قام بتعلمها، علاوة على ذلك فهم ضرورة التأسيس الجيد؛ يمكنك قراءة رائيه بشكل كامل هنا
➖➖➖➖➖
للمزيد من المنشورات♻️ : تصفح قائمة المنشورات
#php #python #cpp #programming #algorithms #data_structure
تعلم لغة c++ يقصد به بعد التأسس بهذه اللغة الرائعة، فتعد لغة c++ لغة تأسيسة
ماذا يجب أن أتعلم قبل c++
- أساسيات الحاسوب الذي ستتعامل معه
مفهوم خاطئ بأن الذاكرة المؤقتة RAM كلما كانت أكبر كلما كان الحاسوب أقوى
- بالإضافة لذلك يجب أن تتعلم أنظمة العد
- مدخل إلى الخوارزميات
- نظام التشغيل الذي ستعمل عليه، كيف تقوم بتحميل برنامج من الانترنت، البحث عبر الانترنت
حسناً أين يمكن العثور على كورسات
ماذا يجب أن أتعلم أثناء تعلم أساسيات c++
- يجب أن تتعلم البنى الأساسية
- تقوم بحل بعض التحديات
ملاحظة
- تعلم الفرق
- تعلم البرمجة كائنية التوجه OOP والتي كانت لغة c++ هي أساساً لها عوضاً عن لغة C
بالنسبة للمصادر أنصحك بكورس الاستاذ أسامة الزيرو وكورس OOP للمهندس عادل نسيم
ماذا يجب أن أتعلم بعد تعلم أساسيات c++
- حل المشكلات على مواقع التحديات البرمجية
- تعلم هياكل البيانات والخوارزميات Data Structures تكمن أهمية الكورس في حل المشكلات التي واجهت المبرمجين، بالإضافة لفهم أنواع البيانات الموجودة في اللغات البرمجية الحديثة مثل: php - python
- ابحث عن بعض المكاتب والحاويات الديناميكية الأساسية التي قد تساعدك في حال أردت العمل بهذه اللغة الرائعة
- ابداء بالتعرف على الاختصاصات البرمجية
أما لو كنت تريد احتراف هذه اللغة الرائعة فادعوك لقراءة الخريطة التالية roadmap.sh
تجارب تعلم c++ كلغة تأسيسة
بالنسبة لي
تجربت صديقي
➖➖➖➖➖
للمزيد من المنشورات
#php #python #cpp #programming #algorithms #data_structure
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
كيف تحمي بيانات مشروعك في Laravel
كلنا معرضون للخطأ، ولا يوجد شخص معصوم عن الخطأ؛ لكن تفاديك للمشكلة بأقل الخسائر هو أفضل حل للمشكلة
أحياناً قد تعمل على مشروع بمفردك أو مع فريق وأثناء التحديثات قد يغفل عليكم خطأ معين، وسيسبب كارثة في حال حدثت تعديلات كثيرة في قاعدة البيانات
فالحل الأمثل هو عملية النسخ الإحتياطي للبيانات، فببساطة في حال حدوث خلل يمكنك الرجوع للإصدار السابق من خلال git وإعادة البيانات القديمة ريثما تتم حل المشكلة (أحد الحلول الممكنة)
تحوي الصورة التالية على كود برمجي يقوم بإنشاء نسخة إحتياطية للبيانات لتحميلها، وحذف النسخ القديمة في حال وجدت
يتطلب تحميل مكتبة: spatie/laravel-backup
بالإضافة لإصدار php أعلى من 8.0 و Laravel 9.0 و إمتداد zip في php (للمزيد من التفاصيل يمكنك قراءة كامل المتطلبات في أول تعليق)
➖➖➖➖➖
للمزيد من المنشورات♻️ : تصفح قائمة المنشورات
#php #laravel #zip #backup #backend #data
كلنا معرضون للخطأ، ولا يوجد شخص معصوم عن الخطأ؛ لكن تفاديك للمشكلة بأقل الخسائر هو أفضل حل للمشكلة
أحياناً قد تعمل على مشروع بمفردك أو مع فريق وأثناء التحديثات قد يغفل عليكم خطأ معين، وسيسبب كارثة في حال حدثت تعديلات كثيرة في قاعدة البيانات
فالحل الأمثل هو عملية النسخ الإحتياطي للبيانات، فببساطة في حال حدوث خلل يمكنك الرجوع للإصدار السابق من خلال git وإعادة البيانات القديمة ريثما تتم حل المشكلة (أحد الحلول الممكنة)
تحوي الصورة التالية على كود برمجي يقوم بإنشاء نسخة إحتياطية للبيانات لتحميلها، وحذف النسخ القديمة في حال وجدت
يتطلب تحميل مكتبة: spatie/laravel-backup
بالإضافة لإصدار php أعلى من 8.0 و Laravel 9.0 و إمتداد zip في php (للمزيد من التفاصيل يمكنك قراءة كامل المتطلبات في أول تعليق)
➖➖➖➖➖
للمزيد من المنشورات
#php #laravel #zip #backup #backend #data
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🥰1
جدول القناة لشهر 6/2024 📅
- ما المقصود ب SOLID🔍
- العمل الحر في مجال البرمجة🧑💻
- ما الفرق بين Model و Query builder في Laravel👩💻
وسيتم النشر بمعدل رسالة اسبوعياً❤️ ورسالتين لسلسلة #CleanCode 😅 لننهي هذه السلسلة هذا الشهر بإذن الله
بالإضافة لنشر بعض الأخبار التقنية🖥
في حال اعجبت بمحتوى القناة لا تنسى مشاركتها❤️
➖➖➖➖➖
للمزيد من المنشورات♻️ : تصفح قائمة المنشورات
- ما المقصود ب SOLID
- العمل الحر في مجال البرمجة
- ما الفرق بين Model و Query builder في Laravel
وسيتم النشر بمعدل رسالة اسبوعياً
بالإضافة لنشر بعض الأخبار التقنية
في حال اعجبت بمحتوى القناة لا تنسى مشاركتها
➖➖➖➖➖
للمزيد من المنشورات
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Yhya Nesb
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء الثالث عشر في هذه القناة3️⃣ 1️⃣
الجزء الثالث عشر في هذه القناة
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء الرابع عشر في هذه القناة4️⃣ 1️⃣
تفضيل الأصناف النهائية (Prefer final classes):
يفضل إستخدام الكلمة المفتاحية final إن أمكن، لأنها:
1️⃣ - تمنع وراثة الصنف class، مما يجعله آمن من عمليات التعديل (overriding)
2️⃣ - يشجع على فصل التكوين أو الإنشاء عن الوراثة
3️⃣ - يؤدي لتحقيق مبدأ المسؤولية الفردية SRP (سنتكلم عنه في الدرس القادم 😁 عندما نتكلم عن مبادئ التصميم SOLID)
4️⃣ - يحرض المطورين على إستخدام التوابع (functions) العامة التي قمت بتعريفها، بدلاً من توسيع الصنف والوصول للكائنات الخاصة private (من خلال تعديل توابع الكبسلة set and get)
5️⃣ - يسمح لك بتغيير التعليمات البرمجية بدون القلق من إحتمالية حدوث مشكلة في التطبيقات التي تستخدم الصنف (لو لم تفصل الصنف بكلمة final كان ينبغي عليك إنشاء صنف وورثته والتعديل ستجريه على الصنف الابن)
الشرط الوحيد لفصلك‼️ هو أن تطبق واجهة برمجية (interface) ولا يتم إنشاء أي تابع function عام غير ذلك
لمزيد من المعلومات يمكنك قراءة التدوينة الموضوع الذي كتبه Marco Pivetta (Ocramius)
الاستخدام السيء:
الاستخدام الجيد:
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك☺️
للمزيد من هذه الشروحات يمكنك متابعتي⬅️ @YhyaNesb 🔥
#php #CleanCode #oop #solid
الجزء الرابع عشر في هذه القناة
تفضيل الأصناف النهائية (Prefer final classes):
يفضل إستخدام الكلمة المفتاحية final إن أمكن، لأنها:
الشرط الوحيد لفصلك
لمزيد من المعلومات يمكنك قراءة التدوينة الموضوع الذي كتبه Marco Pivetta (Ocramius)
الاستخدام السيء:
final class Car
{
private $color;
public function __construct($color)
{
$this->color = $color;
}
/**
* @return string The color of the vehicle
*/
public function getColor()
{
return $this->color;
}
}
الاستخدام الجيد:
interface Vehicle
{
/**
* @return string The color of the vehicle
*/
public function getColor();
}
final class Car implements Vehicle
{
private $color;
public function __construct($color)
{
$this->color = $color;
}
public function getColor()
{
return $this->color;
}
}
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك
للمزيد من هذه الشروحات يمكنك متابعتي
#php #CleanCode #oop #solid
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰1
ما المقصود ب SOLID 🔍
هي مبادئ لتصميم البرمجيات🧑💻 وبالتحديد إختصار لأول 5 مبادئ للتصميم الشيئي (OOD التي هي اختصار لـ: object oriented design) وضعت بواسطة © العم بوب (Robert C. Martin)
تقوم هذه المبادئ على اتخاذ بعض الممارسات🎮 أثناء بناء البرمجيات لإمكانية توسيع البرمجيات 🕯 وتطويرها بسهولة، واتبع هذه المبادئ يمكن أن يساعد في تجنب الأكواد السئية (أو النتنة)، وتساعد في إعادة هيكلة الكود في عملية refactoring، وإنشاء كود نظيف #CleanCode، وإمكانية إعادة استخدام الكود 🔖 مع قابلية الاختبار، وكل حرف منها يشير إلى مصطلح معين 📍
مبادئ ال SOLID:
مبدأ المسؤولية الفردية (Single-Responsibility Principle):
الوظيفة لا يقصد بها شيء واحد1️⃣ فقط (عندما نتعامل مع صنف class) بل كفكرة واحدة 1️⃣ أي مثلاً لنفترض أنه لدينا صنف class خاصة بإدارة الموظفين؛ قسم الإدارة مسؤول عن: إضافة ➕ وحذف ❌ وجلب الموظفين، لكن عملية حساب الراتب الخاص بهم ليست من مهمته ⁉️ فيجب أن تكون من مسؤولية صنف آخر مخصص لإدارة الأمور المالية والمحاسبة 💲 ، مثال عملي
مبدأ الفتح والإغلاق (Open-closed Principle):
أي لا يجب تعديل الكود القديم⌛️ (إن أمكن) والاكتفاء بوراثته أو توسيعه في كائن جديد وإجراء التعديل عليه، أو إضافة تابع 😬 يقوم بعمليات التعديل إن أمكن؛ لنفترض أنه لدينا مصفوفة تحوي على صلاحيات Roles يمكننا إضافة تابع يقوم بإضافة صلاحية جديدة حينما نحتاج بدلاً من وراثة الكائن وإضافة الصلاحية الجديدة 🤓 ، مثال عملي
مبدأ ليسكوف للاستبدال (Liskov Substitution Principle):
لنفترض أن لدينا كائن أب 👨🦳 تتم ورثاته في كائنات ابن 👶 (أو أبناء) عندما نقوم باستخدام كائن ابن 👶 لن تكون هناك مشكلة لو استبدلنا الابن 👶 بالأب 👨🦳، مثال:
لدينا كائن Car🚘 يحوي على التوابع drive - getColor، ولدينا تابع Bmw 🚘 يقوم بوراثة الكائن Car يجب أن يحوي على نفس التوابع الموجودة في Car وأن تعمل بدون مشاكل ! (أي لا يجب أن نقوم بتعطيل تابع من خلال إنشاء إستثناء)، مثال عملي
مبدأ فصل الواجهة (Interface Segregation Principle):
نفترض أنه لدينا واجهة للموظفين👥 تحوي على كل العمليات التي يقوم بها أي بشري، مثل الأكل 🍽 والنوم والعمل، ولدينا صنف class للموظفين البشر 🧍♂️ نقوم بتضمين هذه الواجهة، ولدينا صنف للموظفون الآليون 🤖 نضمن لهم نفس الواجهة؛ بهذه الحالة سنضر لإنشاء استثناء لعملية النوم والأكل 😶
فالحل الأمثل إنشاء واجهة للعمليات البشرية، وواجهة للعمال خاصة بوظائف العمل فقط
مبدأ انعكاس التبعية (Dependency Inversion Principle):
بفرض لدينا صنف class خاص بالاتصال بقواعد البيانات📚 DatabaseConnection يقوم في التابع الباني (construct) بإنشاء كائن من النوع DatabaseMysql في هذه الحالة نحن مجبرون في التعامل مع قاعدة البيانات Mysql 👩💻 ويكون الصنفان متعلقين ببعض؛ لكن الحل الأمثل هو تمرير في التابع الباني الصنف المراد إستخدامه للإتصال بقاعدة البيانات مثل (DatabaseSqlServer - DatabaseMysql) وذلك من خلال اعتمادهما على واجهة معينة
#مراجع :
academy hsoub
تعلم SOLID Principles باستخدام Javascript
SOLID: The First 5 Principles of Object Oriented Design
بالنسبة لمثال عملي لكل مبدأ سيتم ذلك من خلال سلسة #CleanCode😁
للمزيد من هذه الشروحات يمكنك متابعتي⬅️ @YhyaNesb 🔥
#php #CleanCode #oop #solid
هي مبادئ لتصميم البرمجيات
تقوم هذه المبادئ على اتخاذ بعض الممارسات
مبادئ ال SOLID:
مبدأ المسؤولية الفردية (Single-Responsibility Principle):
يجب على أي تابع function أو صنف class سبب واحد للتغير، أي يقوم بوظيفة واحدة فقط
الوظيفة لا يقصد بها شيء واحد
مبدأ الفتح والإغلاق (Open-closed Principle):
يجب أن تكون الكائنات objects مفتوحة للتوسيع أو الوراثة ولكن مغلقة للتعديل
أي لا يجب تعديل الكود القديم
مبدأ ليسكوف للاستبدال (Liskov Substitution Principle):
لمطلوب هنا هو شيء يشبه خاصيّة الاستبدال التالية: إذا كان من أجل كل كائن O1 من النوع S يوجد كائن O2 من النوع T، فمن أجل جميع البرامج P المعرّفة ضمن النوع T بحيث أنّ سلوك البرنامج P لا يتغيّر عند استبدال O2 بـ O1 فعندها يكون S هو نوع فرعي من T.
لنفترض أن لدينا كائن أب 👨🦳 تتم ورثاته في كائنات ابن 👶 (أو أبناء) عندما نقوم باستخدام كائن ابن 👶 لن تكون هناك مشكلة لو استبدلنا الابن 👶 بالأب 👨🦳، مثال:
لدينا كائن Car
مبدأ فصل الواجهة (Interface Segregation Principle):
لا ينبغي أبداً إجبار العميل على تنفيذ واجهة لا يستخدمها، ولا يجب إجبار العملاء أيضاً على اعتماد أساليب لا تستخدم
نفترض أنه لدينا واجهة للموظفين
فالحل الأمثل إنشاء واجهة للعمليات البشرية، وواجهة للعمال خاصة بوظائف العمل فقط
مبدأ انعكاس التبعية (Dependency Inversion Principle):
يجب أن تعتمد الكائنات objects على التجريدات abstractions (أصناف مجردة)، ولا ينبغي أن تعتمد الواجهات البرمجية عالية المستوى على الواجهات البرمجية منخفضة المستوى، فلا ينبغي أن تعتمد الوجهات/الأصناف المجردة على التفاصيل
بفرض لدينا صنف class خاص بالاتصال بقواعد البيانات
#مراجع :
academy hsoub
تعلم SOLID Principles باستخدام Javascript
SOLID: The First 5 Principles of Object Oriented Design
بالنسبة لمثال عملي لكل مبدأ سيتم ذلك من خلال سلسة #CleanCode
للمزيد من هذه الشروحات يمكنك متابعتي
#php #CleanCode #oop #solid
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Yhya Nesb
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء الرابع عشر في هذه القناة4️⃣ 1️⃣
الجزء الرابع عشر في هذه القناة
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء الخامس عشر في هذه القناة5️⃣ 1️⃣
SOLID:
هي مبادئ لتصميم البرمجيات🧑💻 ، قمنا بشرحها في منشور سابق: "ما المقصود ب SOLID"
مبدأ المسؤولية الفردية (Single-Responsibility Principle اختصارها SRP):
كما هو مذكور بـ Clean Code: "لا يجب أن يكون هناك أكثر من سبب واحد لتغيير الصنف class"
من المغري تحميل الصنف class بالكثير📈 من التوابع، مثل عندما يمكنك أخذ حقيبة 🛍 واحدة فقط في رحلتك ✈️
المشكلة في ذلك هو أن الصنف class الخاصة بك لن يكون من الناحية النظرية👀 متماسك وسوف يحوي على العديد 🔍 من الأسباب للتغيير، من المهم تقليل 📉 عدد المرات التي تحتاج فيها إلى تغير الصنف class، أنه أمر ضروري لأن كثرة التوابع في صنف واحد ستؤدي بحال قمت بتعديل جزء 🍕 واحد منه؛ بإحتمالية أن يكون صعب الفهم لكيفية تأثير ذلك على التوابع الأخرى في الصنف class نفسه
الاستخدام السيء:
الاستخدام الجيد:
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك☺️
للمزيد من هذه الشروحات يمكنك متابعتي⬅️ @YhyaNesb 🔥
#php #CleanCode #oop #solid
الجزء الخامس عشر في هذه القناة
SOLID:
هي مبادئ لتصميم البرمجيات
مبدأ المسؤولية الفردية (Single-Responsibility Principle اختصارها SRP):
كما هو مذكور بـ Clean Code: "لا يجب أن يكون هناك أكثر من سبب واحد لتغيير الصنف class"
There should never be more than one reason for a class to change
من المغري تحميل الصنف class بالكثير
المشكلة في ذلك هو أن الصنف class الخاصة بك لن يكون من الناحية النظرية
الاستخدام السيء:
class UserSettings
{
private $user;
public function __construct(User $user)
{
$this->user = $user;
}
public function changeSettings(array $settings): void
{
if ($this->verifyCredentials()) {
// ...
}
}
private function verifyCredentials(): bool
{
// ...
}
}
الاستخدام الجيد:
class UserAuth
{
private $user;
public function __construct(User $user)
{
$this->user = $user;
}
public function verifyCredentials(): bool
{
// ...
}
}
class UserSettings
{
private $user;
private $auth;
public function __construct(User $user)
{
$this->user = $user;
$this->auth = new UserAuth($user);
}
public function changeSettings(array $settings): void
{
if ($this->auth->verifyCredentials()) {
// ...
}
}
}
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك
للمزيد من هذه الشروحات يمكنك متابعتي
#php #CleanCode #oop #solid
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰1👏1
Yhya Nesb
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء الخامس عشر في هذه القناة5️⃣ 1️⃣
الجزء الخامس عشر في هذه القناة
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء السادس عشر في هذه القناة6️⃣ 1️⃣
مبدأ الفتح والإغلاق (Open-closed Principle اختصارها OCP):
كما ذكر Bertrand Meyer: "يجب أن تكون الكيانات البرمجية👩💻 (الأصناف classes، الوحدات modules، التوابع functions، الخ ...) مفتوحة للتمدد ➕ ومغلقة للتعديل ✏️ ."
ما المقصود في ذلك؟ هذا المبدأ ينص بشكل أساسي بالسماح للمستخدمين بإضافة وظائف جديدة 🆕 دون تغير التعليمات البرمجية الموجودة.
الاستخدام السيء:
الاستخدام الجيد:
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك☺️
للمزيد من هذه الشروحات يمكنك متابعتي⬅️ @YhyaNesb 🔥
#php #CleanCode #oop #solid
الجزء السادس عشر في هذه القناة
مبدأ الفتح والإغلاق (Open-closed Principle اختصارها OCP):
كما ذكر Bertrand Meyer: "يجب أن تكون الكيانات البرمجية
software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.
ما المقصود في ذلك؟ هذا المبدأ ينص بشكل أساسي بالسماح للمستخدمين بإضافة وظائف جديدة 🆕 دون تغير التعليمات البرمجية الموجودة.
الاستخدام السيء:
abstract class Adapter
{
protected string $name;
public function __construct(){}
public function getName(): string
{
return $this->name;
}
}
class AjaxAdapter extends Adapter
{
public function __construct()
{
parent::__construct();
$this->name = 'ajaxAdapter';
}
}
class NodeAdapter extends Adapter
{
public function __construct()
{
parent::__construct();
$this->name = 'nodeAdapter';
}
}
class HttpRequester
{
private Adapter $adapter;
public function __construct(Adapter $adapter)
{
$this->adapter = $adapter;
}
public function fetch(string $url): Promise
{
$adapterName = $this->adapter->getName();
if ($adapterName === 'ajaxAdapter') {
return $this->makeAjaxCall($url);
} elseif ($adapterName === 'httpNodeAdapter') {
return $this->makeHttpCall($url);
}
}
private function makeAjaxCall(string $url): Promise
{
// request and return promise
}
private function makeHttpCall(string $url): Promise
{
// request and return promise
}
}
الاستخدام الجيد:
interface Adapter
{
public function request(string $url): Promise;
}
class AjaxAdapter implements Adapter
{
public function request(string $url): Promise
{
// request and return promise
}
}
class NodeAdapter implements Adapter
{
public function request(string $url): Promise
{
// request and return promise
}
}
class HttpRequester
{
private $adapter;
public function __construct(Adapter $adapter)
{
$this->adapter = $adapter;
}
public function fetch(string $url): Promise
{
return $this->adapter->request($url);
}
}
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك
للمزيد من هذه الشروحات يمكنك متابعتي
#php #CleanCode #oop #solid
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Yhya Nesb
مفهوم Clean Code انتشر بالسنوات الماضية 🕐
هو مفهوم في تطوير البرمجيات 🤖 يشير إلى التنفيذ المنتظم والمنطقي والنظيف والشامل والقابل للتتبع للكود. الهدف من الكود النظيف هو تطوير البرمجيات بكفاءة وفعالية 🔥 وتصميم كود يمكن قراءته وتغييره وتطويره وصيانته بسهولة.…
هو مفهوم في تطوير البرمجيات 🤖 يشير إلى التنفيذ المنتظم والمنطقي والنظيف والشامل والقابل للتتبع للكود. الهدف من الكود النظيف هو تطوير البرمجيات بكفاءة وفعالية 🔥 وتصميم كود يمكن قراءته وتغييره وتطويره وصيانته بسهولة.…
عيد اضحى مبارك أعاده الله عليكم بكل خير وبكل صحه وسعاده
و كل عام وانتم بخير جميعاً ❤️
و كل عام وانتم بخير جميعاً ❤️
❤5
Yhya Nesb
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء السادس عشر في هذه القناة6️⃣ 1️⃣
الجزء السادس عشر في هذه القناة
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء السابع عشر في هذه القناة7️⃣ 1️⃣
مبدأ ليسكوف للاستبدال (Liskov Substitution Principle اختصارها LSP):
هو مصطلح مخيف😰 لمفهوم بسيط جداً، يتم تعريفه رسمياً على أنه:
وهذا تعريف أكثر رعباً😅 ، بمعنى أصح 😬 يكون لدينا صنف S موروث من صنف T نستطيع استبدال كائنات T بكائنات S بدون حدوث مشاكل بتوافق التوابع (functions)، ربما لا يزال هذا الأمر غامضاً 🥲 ، لذا دعونا نلقي نظرة على المثال التقليدي ⌛️ المربع والمستطيل. من الناحية الرياضية ♾، المربع هو مستطيل، ولكن إذا قمت بتصميمه باستخدام علاقة "is-a" أو "يكون" عبر الميراث، فسوف تقع في مشكلة بسرعة.
الاستخدام السيء:
الاستخدام الجيد:
أفضل طريقة🥇 هي فصل المربعات وتخصيص 🎨 أنواع فرعية أكثر عمومية للشكل
ورغم تشابه المربع والمستطيل إلا أنهما مختلفان🤷♂️ ، ويحتوي المربع على الكثير مع القواسم المشتركة مع المعين والمستطيل مع متوازي الأضلاع، لكنهما ليسا أنواعًا فرعية 😅 .
المربع والمستطيل والمعين ومتوازي الأضلاع هي أشكال منفصلة لها خصائصها الخاصة، وإن كانت متشابهة.
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك☺️
للمزيد من هذه الشروحات يمكنك متابعتي⬅️ @YhyaNesb 🔥
#php #CleanCode #oop #solid
الجزء السابع عشر في هذه القناة
مبدأ ليسكوف للاستبدال (Liskov Substitution Principle اختصارها LSP):
هو مصطلح مخيف
إذا كان S هو نوع فرعي من T، يمكن استبدال كائنات من النوع T بكائنات من النوع S (أي، كائنات من النوع S قد تحل محل كائنات من النوع T) دون تغيير أي من الخصائص المرغوبة لذلك البرنامج (الصحة، تنفيذ المهمة، وما إلى ذلك).
وهذا تعريف أكثر رعباً
الاستخدام السيء:
class Rectangle
{
protected $width = 0;
protected $height = 0;
public function setWidth(int $width): void
{
$this->width = $width;
}
public function setHeight(int $height): void
{
$this->height = $height;
}
public function getArea(): int
{
return $this->width * $this->height;
}
}
class Square extends Rectangle
{
public function setWidth(int $width): void
{
$this->width = $this->height = $width;
}
public function setHeight(int $height): void
{
$this->width = $this->height = $height;
}
}
function printArea(Rectangle $rectangle): void
{
$rectangle->setWidth(4);
$rectangle->setHeight(5);
// BAD: Will return 25 for Square. Should be 20.
echo sprintf('%s has area %d.', get_class($rectangle), $rectangle->getArea()) . PHP_EOL;
}
$rectangles = [new Rectangle(), new Square()];
foreach ($rectangles as $rectangle) {
printArea($rectangle);
}
الاستخدام الجيد:
أفضل طريقة
ورغم تشابه المربع والمستطيل إلا أنهما مختلفان
المربع والمستطيل والمعين ومتوازي الأضلاع هي أشكال منفصلة لها خصائصها الخاصة، وإن كانت متشابهة.
interface Shape
{
public function getArea(): int;
}
class Rectangle implements Shape
{
private $width = 0;
private $height = 0;
public function __construct(int $width, int $height)
{
$this->width = $width;
$this->height = $height;
}
public function getArea(): int
{
return $this->width * $this->height;
}
}
class Square implements Shape
{
private $length = 0;
public function __construct(int $length)
{
$this->length = $length;
}
public function getArea(): int
{
return $this->length ** 2;
}
}
function printArea(Shape $shape): void
{
echo sprintf('%s has area %d.', get_class($shape), $shape->getArea()).PHP_EOL;
}
$shapes = [new Rectangle(4, 5), new Square(5)];
foreach ($shapes as $shape) {
printArea($shape);
}
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك
للمزيد من هذه الشروحات يمكنك متابعتي
#php #CleanCode #oop #solid
Please open Telegram to view this post
VIEW IN TELEGRAM
العمل الحر في مجال البرمجة 🧑💻
العمل الحر أو freelance👨💻 هو العمل الذي تقوم به بدون وجود رقيب 👮♀️ على عملك أو وقت محدد ⌛️ لتنفيذ عملك
فعندما تقوم بإنشاء مشروع لعميل 👤 بشكل مستقل أنت مخير بكيفية كتابة الكود سواء كان نظيف مفهوم قابل للتطوير أو عكس ذلك، وما التقنيات التي ستستخدمها
ومخير أيضاً بأي وقت لتنفيذ المطلوب بشرط أن تنفذه بالمدة المحدد😬 - قد يكون هناك تأخير لكن هذا ابداً لا يعني انه عليك البدء بالمشروع قبل تاريخ الانتهاء بيوم 🙂 -
مميزات العمل الحر
- مرونة في العمل، بأي وقت وأي مكان🗺
- فرص عمل رائعة، فأنت من يحق لك قبول أو رفض أي فرصة🔥
- التوازن بين العمل والحياة الشخصية، يمكنك العمل فقط 4 ساعات يومياً فأنت من تحدد ذلك😉
عيوب العمل الحر
- وسائل الدفع واختلاف قيمة العملات المحلية💱
- انت مقييد بتلبية احتياجات عملائك، في حال أردت اخذ استراحة🧳 لمدة اسبوع وفي اليوم الثاني حدثت مشكلة لأحد عملائك فأنت مجبر 🥲 لحلها أثناء عطلتك؛ إلا لو أردت خسارة عميلك 😅
- القيام بأكثر من وظيفة❗️ بآن واحد، اختصاصي الذي أبدع فيه هو back-end لكن أعمل في بعض الأحيان ك front-end لتنفيذ أي مشروع يطلب مني 😅
- لا يوجد أي ضمان😢 ، لا يمكنك ضمان ديمومة العمل ولا أخذ اجازة مدفوعة 💸
مصادر العمل الحر
- العلاقات والعلاقات، أذكر من 3 سنوات عندما حصلت على أول عمل لي🥇 كمبرمج بوتات لتطبيق التلجرام ✈️ كان من خلال دائرة المعارف التي أعرفها (تعرفت عليها من خلال التفاعل في المجموعات البرمجية المختصة في بوتات التلجرام) وانا إلى اليوم أحصل على عملاء من خلال هذه الدائرة 😅 طبعاً مع توسيعي لها 😬
- مواقع العمل الحر، المواقع المعروفة مثل خمسات ومستقل - العيب في أي موقع هو أخذ نسبة من الأجر المتفق عليه مع العميل📉 -
- مواقع التواصل الاجتماعي، وذلك من خلال بناء علاقات ولعلى تطبيق linkedin📱 من أشهر التطبيقات التي توفر لك إمكانية الحصول على عمل سواء عمل حر أو عمل كامل ...
تسعير العمل
السعر الخاص بك يختلف عن سعري⚠️ وعن سعر أي شخص، لتسعير العمل عليك معرفة 🔍 كم يوم تقضيه في إنشاء المشروع الذي تقدمه وماذا تقدم في المشروع ولماذا تقدم ولمن وماهي مصاريفك، هذا كثير كل هذا عليي ان أحسبه ‼️
* صديقي عليك معرفة مصاريفك من اجر الانترنت حتى المنزل التي تسكن فيه، فمثلا شهرياً عليك دفع ما يقارب 100$ وعليك العمل على مشروع يحتاج لشهرين في حال طلبت مبلغ يقل عن 200$ فيكون المبلغ قليل بالنسبة لك وستحتاج للمزيد فقط لإكفاء نفسك بدون المكسب الإضافي⚠️
* ماذا تقدم فليس من المعقول تكلفة موقع عادي مبني باستخدام html - css - javascript وبدون اطر عمل يساوي تكلفة بناء تطبيق ويب ذو الصفحة الواحدة SPA (لا يتم تحميل الصفحة مرة أخرى بعد تحميلها أول مرة) باستخدام أحد أطر العمل المشهورة في JavaScript🙂 فكل تقنية أنت تبذل جهد ووقت لتتعلمها وقد تبذل مصاريف عليها لذلك عليك أخذ ضريبة مقابل استخدام كل تقنية وفق ما يتطلب 😅 (لا أقصد بضريبة كالضريبة المعروفة، بل أخذ مبلغ إضافي)
متطلبات العمل الحر
اتصال بالانترنت، انضباط ذاتي، اساسيات الادارة، قدرة على الاقناع، تواصل فعال، تشغيل المشروع على الانترنت
فأنت المسؤول عن نفسك 👤 عليك ادارة نفسك وضبطها، اقناع العميل بما تستطيع القيام به🧑💻 ولماذا أنت أفضل من يمكنه القيام بالمشروع 🏆 والتواصل الجيد مع العميل فأنتما لستما آلات 🎰 تحتاج لإجابات بنعم أو لا، ولا تنسا تعلم كيفية تشغيل مشروعك على الانترنت؛ العميل لا يحتاج لموقع الكتروني يعمل على حاسبوك 😅 يحتاج لأن يستخدمه على أي جاهز (في حالة موقع الكتروني 🌐 ) وفي أي مكان بالعالم 🗺
العمل الحر مربح
سواء كنت تعمل كمستقل أو كموظف الربح هو شيء نسبي، في حال كان عملك يؤمن بعض الأموال💲 الإضافية التي لا تحتاجها لأساسيات حياتك فهو مربح 🤑 والتوفيق والرزق على الله سبحانه وتعالى، لا يمكنني أن أعدك أنك ستصبح ثري في حال توجهت للعمل الحر
للمزيد من هذه المنشورات المشابهة يمكنك متابعتي⬅️ @YhyaNesb 🔥
#php #js #javascript #work_online #freelancer #freelance
العمل الحر أو freelance
فعندما تقوم بإنشاء مشروع لعميل 👤 بشكل مستقل أنت مخير بكيفية كتابة الكود سواء كان نظيف مفهوم قابل للتطوير أو عكس ذلك، وما التقنيات التي ستستخدمها
ومخير أيضاً بأي وقت لتنفيذ المطلوب بشرط أن تنفذه بالمدة المحدد
مميزات العمل الحر
- مرونة في العمل، بأي وقت وأي مكان
- فرص عمل رائعة، فأنت من يحق لك قبول أو رفض أي فرصة
- التوازن بين العمل والحياة الشخصية، يمكنك العمل فقط 4 ساعات يومياً فأنت من تحدد ذلك
عيوب العمل الحر
- وسائل الدفع واختلاف قيمة العملات المحلية
- انت مقييد بتلبية احتياجات عملائك، في حال أردت اخذ استراحة
- القيام بأكثر من وظيفة
- لا يوجد أي ضمان
مصادر العمل الحر
- العلاقات والعلاقات، أذكر من 3 سنوات عندما حصلت على أول عمل لي
- مواقع العمل الحر، المواقع المعروفة مثل خمسات ومستقل - العيب في أي موقع هو أخذ نسبة من الأجر المتفق عليه مع العميل
- مواقع التواصل الاجتماعي، وذلك من خلال بناء علاقات ولعلى تطبيق linkedin
تسعير العمل
السعر الخاص بك يختلف عن سعري
* صديقي عليك معرفة مصاريفك من اجر الانترنت حتى المنزل التي تسكن فيه، فمثلا شهرياً عليك دفع ما يقارب 100$ وعليك العمل على مشروع يحتاج لشهرين في حال طلبت مبلغ يقل عن 200$ فيكون المبلغ قليل بالنسبة لك وستحتاج للمزيد فقط لإكفاء نفسك بدون المكسب الإضافي
* ماذا تقدم فليس من المعقول تكلفة موقع عادي مبني باستخدام html - css - javascript وبدون اطر عمل يساوي تكلفة بناء تطبيق ويب ذو الصفحة الواحدة SPA (لا يتم تحميل الصفحة مرة أخرى بعد تحميلها أول مرة) باستخدام أحد أطر العمل المشهورة في JavaScript
متطلبات العمل الحر
اتصال بالانترنت، انضباط ذاتي، اساسيات الادارة، قدرة على الاقناع، تواصل فعال، تشغيل المشروع على الانترنت
فأنت المسؤول عن نفسك 👤 عليك ادارة نفسك وضبطها، اقناع العميل بما تستطيع القيام به
العمل الحر مربح
سواء كنت تعمل كمستقل أو كموظف الربح هو شيء نسبي، في حال كان عملك يؤمن بعض الأموال
للمزيد من هذه المنشورات المشابهة يمكنك متابعتي
#php #js #javascript #work_online #freelancer #freelance
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥3🔥1
Yhya Nesb
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء السابع عشر في هذه القناة7️⃣ 1️⃣
الجزء السابع عشر في هذه القناة
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء الثامن عشر في هذه القناة8️⃣ 1️⃣
مبدأ فصل الوجهات (Interface Segregation Principle اختصارها ISP):
ينص هذا المبدأ على عدم اجبار المبرمجين على استخدام الوجهات الغير مستخدمة
من الأمثلة الجيدة التي يجب النظر إليها والتي توضح هذا المبدأ هي الفئات التي تتطلب إعدادات كبيرة للكائنات. عند عدم مطالبة العملاء بإعداد كميات كبيرة من الخيارات أمرًا مفيدًا، لأنهم لن يحتاجوا في معظم الأحيان إلى جميع الإعدادات. إن جعلها اختيارية يساعد على منع وجود "واجهة سمينة"
بمعنى مشابه: عندما نقوم بفصل التوابع في عدة واجهات (Interfaces) بحيث هذه الواجهات يمكن إستخدام واحد منها أو جميعها معاً بدلاً من دمجها بواجهة واحدة، وذلك لأن الصنف class الذي نحتاج به لواجهة واحدة - أو عدة توابع - والواجهات لدينا مدموجة (بفرض لدينا 4 واجهات وضعنها بواجهة واحدة) سنضطر لتعريف التوابع الغير مستخدمة في الواجهات الإضافية وإلغائها (يمكن تركها معرفة دون استخدام)، يمكنك قراءة الكود التالي لمعرفة ما أقصده:
الاستخدام السيء:
الاستخدام الجيد:
ليس كل موظف عامل، بل كل عامل موظف
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك☺️
للمزيد من هذه الشروحات يمكنك متابعتي⬅️ @YhyaNesb 🔥
#php #CleanCode #oop #solid
الجزء الثامن عشر في هذه القناة
مبدأ فصل الوجهات (Interface Segregation Principle اختصارها ISP):
ينص هذا المبدأ على عدم اجبار المبرمجين على استخدام الوجهات الغير مستخدمة
من الأمثلة الجيدة التي يجب النظر إليها والتي توضح هذا المبدأ هي الفئات التي تتطلب إعدادات كبيرة للكائنات. عند عدم مطالبة العملاء بإعداد كميات كبيرة من الخيارات أمرًا مفيدًا، لأنهم لن يحتاجوا في معظم الأحيان إلى جميع الإعدادات. إن جعلها اختيارية يساعد على منع وجود "واجهة سمينة"
بمعنى مشابه: عندما نقوم بفصل التوابع في عدة واجهات (Interfaces) بحيث هذه الواجهات يمكن إستخدام واحد منها أو جميعها معاً بدلاً من دمجها بواجهة واحدة، وذلك لأن الصنف class الذي نحتاج به لواجهة واحدة - أو عدة توابع - والواجهات لدينا مدموجة (بفرض لدينا 4 واجهات وضعنها بواجهة واحدة) سنضطر لتعريف التوابع الغير مستخدمة في الواجهات الإضافية وإلغائها (يمكن تركها معرفة دون استخدام)، يمكنك قراءة الكود التالي لمعرفة ما أقصده:
الاستخدام السيء:
interface Employee
{
public function work(): void;
public function eat(): void;
}
class HumanEmployee implements Employee
{
public function work(): void
{
// ....working
}
public function eat(): void
{
// ...... eating in lunch break
}
}
class RobotEmployee implements Employee
{
public function work(): void
{
//.... working much more
}
public function eat(): void
{
//.... robot can't eat, but it must implement this method
}
}
الاستخدام الجيد:
ليس كل موظف عامل، بل كل عامل موظف
interface Workable
{
public function work(): void;
}
interface Feedable
{
public function eat(): void;
}
interface Employee extends Feedable, Workable
{
}
class HumanEmployee implements Employee
{
public function work(): void
{
// ....working
}
public function eat(): void
{
//.... eating in lunch break
}
}
// robot can only work
class RobotEmployee implements Workable
{
public function work(): void
{
// ....working
}
}
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك
للمزيد من هذه الشروحات يمكنك متابعتي
#php #CleanCode #oop #solid
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Yhya Nesb
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء الثامن عشر في هذه القناة8️⃣ 1️⃣
الجزء الثامن عشر في هذه القناة
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء التاسع عشر في هذه القناة9️⃣ 1️⃣
مبدأ انعكاس التبعية (Dependency Inversion Principle اختصارها DIP):
وينص هذا المبدأ على أمرين2️⃣ أساسيين:
1️⃣ - لا يجب أن تعتمد الوحدات عالية المستوى على الوحدات منخفضة المستوى، كلاهما يجب أن يعتمد على التجريدات.
2️⃣ - لا ينبغي أن تعتمد التجريدات على التفاصيل. التفاصيل يجب أن تعتمد على التجريدات.
فهمهم قد يكون صعب في البداية😅 ولكن إذا كنت قد عملت مع اطر عمل PHP مثل Symfony 👩💻 فقد رأيت تطبيقًا لهذا المبدأ في شكل Dependency حقن (DI)
على الرغم من أنها ليست مفاهيم متطابقة 🫨، إلا أن انعكاس التبعية يمنع الوحدات عالية المستوى من معرفة تفاصيل الوحدات ذات المستوى المنخفض وإعدادها. يمكنه تحقيق ذلك من خلال انعكاس التبعية (Dependency Inversion). ومن المزايا الكبيرة لهذا المبدأ أنه يقلل من الترابط بين الوحدات. يعد الترابط نمط تطوير سيئًا للغاية😶 لأنه يجعل من الصعب إعادة بناء التعليمات البرمجية الخاصة بك.
الاستخدام السيء:
الاستخدام الجيد:
وهكذا نكون قد انتهينا من قسم ال SOLID😍
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك☺️
للمزيد من هذه الشروحات يمكنك متابعتي⬅️ @YhyaNesb 🔥
#php #CleanCode #oop #solid
الجزء التاسع عشر في هذه القناة
مبدأ انعكاس التبعية (Dependency Inversion Principle اختصارها DIP):
وينص هذا المبدأ على أمرين
فهمهم قد يكون صعب في البداية
على الرغم من أنها ليست مفاهيم متطابقة 🫨، إلا أن انعكاس التبعية يمنع الوحدات عالية المستوى من معرفة تفاصيل الوحدات ذات المستوى المنخفض وإعدادها. يمكنه تحقيق ذلك من خلال انعكاس التبعية (Dependency Inversion). ومن المزايا الكبيرة لهذا المبدأ أنه يقلل من الترابط بين الوحدات. يعد الترابط نمط تطوير سيئًا للغاية
الاستخدام السيء:
class Employee
{
public function work(): void
{
// ....working
}
}
class Robot extends Employee
{
public function work(): void
{
//.... working much more
}
}
class Manager
{
private $employee;
public function __construct(Employee $employee)
{
$this->employee = $employee;
}
public function manage(): void
{
$this->employee->work();
}
}
الاستخدام الجيد:
interface Employee
{
public function work(): void;
}
class Human implements Employee
{
public function work(): void
{
// ....working
}
}
class Robot implements Employee
{
public function work(): void
{
//.... working much more
}
}
class Manager
{
private $employee;
public function __construct(Employee $employee)
{
$this->employee = $employee;
}
public function manage(): void
{
$this->employee->work();
}
}
وهكذا نكون قد انتهينا من قسم ال SOLID
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك
للمزيد من هذه الشروحات يمكنك متابعتي
#php #CleanCode #oop #solid
Please open Telegram to view this post
VIEW IN TELEGRAM
Yhya Nesb
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء التاسع عشر في هذه القناة9️⃣ 1️⃣
الجزء التاسع عشر في هذه القناة
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء العشرون في هذه القناة0️⃣ 2️⃣ والأخير في هذه السلسلة 😍
لا تكرر نفسك (Don’t repeat yourself واختصارها DRY):
حاول مراعاة مبدأ DRY
ابذل قصارى جهدك لتجنب تكرار ♾ التعليمات البرمجية👩💻 ، يعد تكرار التعليمات البرمجية أمراً سيئاً 😵💫 لأنه يتطلب التعديل في أكثر من مكان عند الحاجة لتعديل بعض الأفكار
تخيل أنك تدير مطعم 🌮 وتقوم بتتبع المخزون الخاص بك: كل ما لديك من الطماطم 🍅 والبصل 🧅 والثوم 🧄 والتوابل وما إلى ذلك. إذا كان لديك قوائم متعددة تحتفظ بها، فيجب تحديثها جميعًا عند تقديم طبق بالطماطم فيهم. إذا كانت لديك قائمة واحدة فقط، فهناك مكان واحد🥇 فقط لتحديثه!
غالبًا ما يكون لديك تعليمات برمجية مكررة لأن لديك شيئين أو أكثر مختلفين 🆚 قليلًا، ويشتركان في الكثير، لكن الاختلافات بينهما تجبرك😬 على أن يكون لديك وظيفتان منفصلتان أو أكثر تقومان بالكثير 🫠 من الأشياء نفسها. تعني إزالة التعليمات البرمجية المكررة إنشاء تجريد (abstraction) يمكنه التعامل مع هذه المجموعة من الأشياء المختلفة باستخدام تابع function/وحدة model/صنف class واحد فقط.
يعد الحصول على التجريد الصحيح أمرًا بالغ الأهمية‼️ ، ولهذا السبب يجب عليك اتباع مبادئ SOLID الموضحة في قسم الأصناف. يمكن أن تكون التجريدات السيئة أسوأ 😅 من تكرار التعليمات البرمجية، لذا كن حذرًا! بعد أن قلت هذا، إذا كان بإمكانك تقديم تجريد جيد، فافعل ذلك! لا تكرر ما فعلته، وإلا ستجد نفسك تقوم بتحديث أماكن متعددة 🥲 في أي وقت تريد فيه تغيير شيء واحد.
الاستخدام السيء:
الاستخدام الجيد:
الاستخدام الأفضل:
الأفضل استخدام نسبة مضغوطة من الكود، (لا تبالغ كثيراً في الضغط😅 )
وهكذا نكون قد انتهينا من سلسلة Clean Code😍
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك☺️
للمزيد من هذه الشروحات يمكنك متابعتي⬅️ @YhyaNesb 🔥
#php #CleanCode
الجزء العشرون في هذه القناة
لا تكرر نفسك (Don’t repeat yourself واختصارها DRY):
حاول مراعاة مبدأ DRY
ابذل قصارى جهدك لتجنب تكرار ♾ التعليمات البرمجية
تخيل أنك تدير مطعم 🌮 وتقوم بتتبع المخزون الخاص بك: كل ما لديك من الطماطم 🍅 والبصل 🧅 والثوم 🧄 والتوابل وما إلى ذلك. إذا كان لديك قوائم متعددة تحتفظ بها، فيجب تحديثها جميعًا عند تقديم طبق بالطماطم فيهم. إذا كانت لديك قائمة واحدة فقط، فهناك مكان واحد
غالبًا ما يكون لديك تعليمات برمجية مكررة لأن لديك شيئين أو أكثر مختلفين 🆚 قليلًا، ويشتركان في الكثير، لكن الاختلافات بينهما تجبرك
يعد الحصول على التجريد الصحيح أمرًا بالغ الأهمية
الاستخدام السيء:
function showDeveloperList(array $developers): void
{
foreach ($developers as $developer) {
$expectedSalary = $developer->calculateExpectedSalary();
$experience = $developer->getExperience();
$githubLink = $developer->getGithubLink();
$data = [$expectedSalary, $experience, $githubLink];
render($data);
}
}
function showManagerList(array $managers): void
{
foreach ($managers as $manager) {
$expectedSalary = $manager->calculateExpectedSalary();
$experience = $manager->getExperience();
$githubLink = $manager->getGithubLink();
$data = [$expectedSalary, $experience, $githubLink];
render($data);
}
}
الاستخدام الجيد:
function showList(array $employees): void
{
foreach ($employees as $employee) {
$expectedSalary = $employee->calculateExpectedSalary();
$experience = $employee->getExperience();
$githubLink = $employee->getGithubLink();
$data = [$expectedSalary, $experience, $githubLink];
render($data);
}
}
الاستخدام الأفضل:
الأفضل استخدام نسبة مضغوطة من الكود، (لا تبالغ كثيراً في الضغط
function showList(array $employees): void
{
foreach ($employees as $employee) {
render([$employee->calculateExpectedSalary(), $employee->getExperience(), $employee->getGithubLink()]);
}
}
وهكذا نكون قد انتهينا من سلسلة Clean Code
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك
للمزيد من هذه الشروحات يمكنك متابعتي
#php #CleanCode
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰1
ما الفرق بين Model و Query builder في Laravel 👩💻
اطار عمل Laravel يعد من أشهر اطر عمل PHP👩💻 وهو يعتمد على معمارية MVC
ولفهم الفرق بين Model و Query Builder علينا معرفة كل مفهوم بمفرده:
ال Model أو Eloquent ORM:
هو مخطط للكائنات العلائقية يجعل التفاعل أو التواصل مع قاعدة البيانات سهل وخاصة للمبتدائين، بمعنى أخر أنت تقوم باستدعاء بعض التوابع التي تقوم بوظيفة ما عوضاً عن كتابة استعلام SQL عادي ومعقد
ال Query Builder:
هو منشئ استعلام في Laravel سهل يعتمد على واجهة fluent وتشغيل الاستعلام بعد إنشائه، يقوم بتنفيذ معظم عمليات قاعدة البيانات في مشروعك مع جميع أنظمة قواعد البيانات المدعومة في Laravel، يمنحك إمكانية إنشاء استعلام من خلال توابع يمكن القول أنها تشبه كتابة تعليمة SQL لكن من خلال فلترة المدخلات (يقوم بالربط بقواعد البيانات من خلال PDO) وبطريقة برمجية (يمكنك مشاهدة الكود التالي- لكن القصد لست مضطر لكتابة تعليمة عادية -)
الفرق 🆚:
ال Model يمكن القول أنه أسرع في البرمجة (من ناحية كتابة الكود البرمجي) وأبطء في الاستخدام ويمكن أن يكون إلى حد ما أنظف😅
ال Query Builder هو أبطء في البرمجة وأسرع في الاستخدام وسوء التنظيم سيؤدي لجعل الكود غير نظيف 😅 وعليك فلترة النتائج في حال عملية جلب النتائج (لا تقم بجلب البيانات بدون تحديد الأعمدة المطلوبة لتعليمة SELECT)
تجربة للنتائج (سأضع النتائج المقتبسة من المصدر) - تجربة 50 الف مستخدم ب 10 الف تغريدة في قاعدة بيانات MySql-
كانت النتائج باستخدام ال Model أو eloquent ORM: استغرقت 1573ms وتطلبت حجم 3.79MB
كانت النتائج باستخدام ال Query Builder: استغرقت 138ms وتطلبت حجم 1.09MB
أي أن Query Builder أسرع ب 11 ضعف تقريباً ! لكن فرق كتابة الكود واضح بالنسبة لك😅
المصادر:
Eloquent ORM VS Query Builder in Laravel
The PHP Framework for Web Artisans (Laravel)
للمزيد من المنشورات♻️ : تصفح قائمة المنشورات
#laravel #sql #orm #model #query_builder
اطار عمل Laravel يعد من أشهر اطر عمل PHP
ولفهم الفرق بين Model و Query Builder علينا معرفة كل مفهوم بمفرده:
ال Model أو Eloquent ORM:
هو مخطط للكائنات العلائقية يجعل التفاعل أو التواصل مع قاعدة البيانات سهل وخاصة للمبتدائين، بمعنى أخر أنت تقوم باستدعاء بعض التوابع التي تقوم بوظيفة ما عوضاً عن كتابة استعلام SQL عادي ومعقد
ال Query Builder:
هو منشئ استعلام في Laravel سهل يعتمد على واجهة fluent وتشغيل الاستعلام بعد إنشائه، يقوم بتنفيذ معظم عمليات قاعدة البيانات في مشروعك مع جميع أنظمة قواعد البيانات المدعومة في Laravel، يمنحك إمكانية إنشاء استعلام من خلال توابع يمكن القول أنها تشبه كتابة تعليمة SQL لكن من خلال فلترة المدخلات (يقوم بالربط بقواعد البيانات من خلال PDO) وبطريقة برمجية (يمكنك مشاهدة الكود التالي- لكن القصد لست مضطر لكتابة تعليمة عادية -)
الفرق 🆚:
ال Model يمكن القول أنه أسرع في البرمجة (من ناحية كتابة الكود البرمجي) وأبطء في الاستخدام ويمكن أن يكون إلى حد ما أنظف
ال Query Builder هو أبطء في البرمجة وأسرع في الاستخدام وسوء التنظيم سيؤدي لجعل الكود غير نظيف 😅 وعليك فلترة النتائج في حال عملية جلب النتائج (لا تقم بجلب البيانات بدون تحديد الأعمدة المطلوبة لتعليمة SELECT)
تجربة للنتائج (سأضع النتائج المقتبسة من المصدر) - تجربة 50 الف مستخدم ب 10 الف تغريدة في قاعدة بيانات MySql-
$items = User::with('post')->all();
return $items;كانت النتائج باستخدام ال Model أو eloquent ORM: استغرقت 1573ms وتطلبت حجم 3.79MB
public function queryBulderUserRelation(Request $request
{
$items = DB::table('users')
->join('chirps', 'users.id', '=', 'chirps.user_id')
->select('users.id', 'users.name', 'chirps.user_id', 'chirps.message')
->get();
return $items;
}
كانت النتائج باستخدام ال Query Builder: استغرقت 138ms وتطلبت حجم 1.09MB
أي أن Query Builder أسرع ب 11 ضعف تقريباً ! لكن فرق كتابة الكود واضح بالنسبة لك
المصادر:
Eloquent ORM VS Query Builder in Laravel
The PHP Framework for Web Artisans (Laravel)
للمزيد من المنشورات
#laravel #sql #orm #model #query_builder
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Yhya Nesb
معمارية MVC هي اختصار لـ "Model View Controller"، وهي نمط معماري يُستخدم في تصميم 🎨 وتنظيم البرمجيات 👨💻
يمثل كل حرف في MVC وحدة من وحدات البرنامج 🤖 التي تتعامل مع وظائف محددة في التطبيق.
شرح معنى كل حرف بالتفصيل 🗒:
1-النموذج (Model):
يمثل إضافة وتعديل وجلب…
يمثل كل حرف في MVC وحدة من وحدات البرنامج 🤖 التي تتعامل مع وظائف محددة في التطبيق.
شرح معنى كل حرف بالتفصيل 🗒:
1-النموذج (Model):
يمثل إضافة وتعديل وجلب…
مشكلة قد تواجهك أثناء استخدامك لبعض الأنظمة المبنية على Linux مثل Ubuntu 👩💻 عند محاولة الدخول للأقراص الموجودة على وحدة التخزين الخاصة بك 📚
لحل المشكلة:
لإنشاء مجلد لنشر محتوى القرص عليه
سيتم نشر محتويات القرص -nvme0n1p2- (نفسه الذي حاولت الدخول إليه، لكن هو عبارة عن nvme0n1 وحدة التخزين و p2 قرص التخزين، جميع الأقراص على نفس وحدة التخزين سيختلف الرقم الخاص بها)
بعدها مبروك يمكنك الوصول إلى ملفاتك✨ سواء من نفس الواجهة الذي حاولت منها، او من خلال الدخول لمجلد (/media/$(whoami)/Storeg)
#linux #ubuntu #storage #partition
لحل المشكلة:
sudo mkdir -p /media/$(whoami)/Storeg
لإنشاء مجلد لنشر محتوى القرص عليه
sudo mount -t ntfs /dev/nvme0n1p2 /media/$(whoami)/Storeg
سيتم نشر محتويات القرص -nvme0n1p2- (نفسه الذي حاولت الدخول إليه، لكن هو عبارة عن nvme0n1 وحدة التخزين و p2 قرص التخزين، جميع الأقراص على نفس وحدة التخزين سيختلف الرقم الخاص بها)
بعدها مبروك يمكنك الوصول إلى ملفاتك
لا تنسى تغيير نوع نظام الملفات الخاص بالقرص، في هذا المثال كان ntfs
#linux #ubuntu #storage #partition
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2👍1
Yhya Nesb
كذبو عليك وقالو "ميزة التحقق بخطوتين ميزية قوية لتأمين حسابك بحيث لا يتم الدخول لحسابك بدون رمز يصل لهاتفك" Google - Facebook واو ممتاز 😍 انا بآمان بعد فترة: للأسف مزود الخدمة التي تستخدمه غير مدعوم (لن يتم إرسال أي رمز) 🙂 ، جرب مسح جميع بيانات هاتفك ومن ثم…
قبل 4 أشهر تقريباً حاولت توثيق حسابي برقم هاتفي لأستطيع الحصول على الميزات الإضافية لقناة اليوتيوب
لكن الأمر الغريب أن إرسال رسائل SMS كان دائماً يخبرني أن العملية فشلت 🫤 وعند طلب الرمز من خلال مكالمة يتم إعلامي أنه تم الاتصال بي بدون الإتصال بشكل فعلي 😶
اليوم عن طريقة الصدفة قررت المحاولة لمرة واحدة بعدما وضعت الرقم الخاص بي تم قبولها مباشرة بدون إعلامي بانه تم إرسال رمز 😅 فماذا يحدث مع الأرقام السورية
لكن الأمر الغريب أن إرسال رسائل SMS كان دائماً يخبرني أن العملية فشلت 🫤 وعند طلب الرمز من خلال مكالمة يتم إعلامي أنه تم الاتصال بي بدون الإتصال بشكل فعلي 😶
اليوم عن طريقة الصدفة قررت المحاولة لمرة واحدة بعدما وضعت الرقم الخاص بي تم قبولها مباشرة بدون إعلامي بانه تم إرسال رمز 😅 فماذا يحدث مع الأرقام السورية
👍1
مرحبا يا مرحباً بكم في شهر جديد ❤️
الشهر الماضي لم أستطع التفرغ لإنشاء المحتوى 🫤 وهذا الشهر أيضاً بسبب إنشغالي الدراسي👨🏫 لكن لا تقلك 😉 هذا الشهر لدينا بعض المواضيع الشيقة التي سنتكلم بها 😌
جدول القناة لشهر 8/2024 📅:
- كيف تستفيد من التحدث مع أي chat ذكاء إصطناعي في عملك كمبرمج 🤖
- كيف تتابع اخر الأخبار المتعلقة بالتقنيات التي تعمل عليها📧
- التعامل مع لوحة التحكم Filament مع Laravel👩💻
في حال اعجبت بمحتوى القناة لا تنسى مشاركتها❤️
➖➖➖➖➖
للمزيد من المنشورات♻️ : تصفح قائمة المنشورات
الشهر الماضي لم أستطع التفرغ لإنشاء المحتوى 🫤 وهذا الشهر أيضاً بسبب إنشغالي الدراسي
جدول القناة لشهر 8/2024 📅:
- كيف تستفيد من التحدث مع أي chat ذكاء إصطناعي في عملك كمبرمج 🤖
- كيف تتابع اخر الأخبار المتعلقة بالتقنيات التي تعمل عليها
- التعامل مع لوحة التحكم Filament مع Laravel
في حال اعجبت بمحتوى القناة لا تنسى مشاركتها
➖➖➖➖➖
للمزيد من المنشورات
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Yhya Nesb
تسخر الذكاء الاصطناعي ليساعدك ويوفر وقتك اليوم شي ضروري ‼️ (للنماذج الغوية الكبيرة LLM)
وأنا بهذا المنشور حتى ألهمك بكيف تستخدمه بأفضل طريقة 😉
طبعاً هذا كله يندرج تحت مسمى هندسة الأوامر أو هندسة التلقين Prompt engineering
طب كمبرمج كيف استفيد منه 👨💻؟
لح…
وأنا بهذا المنشور حتى ألهمك بكيف تستخدمه بأفضل طريقة 😉
طبعاً هذا كله يندرج تحت مسمى هندسة الأوامر أو هندسة التلقين Prompt engineering
طب كمبرمج كيف استفيد منه 👨💻؟
لح…
❤🔥2👍2