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
لا تكرر نفسك
بفرض لدينا ثلاث جداول الأول جدول للكتب والثاني جدول للمؤلفين وجدول ثالث يربط بين المؤلفين والكتب علاقة (many-to-many) هذا يعني بأن لكل كتاب مؤلف أو أكثر
بشكل افتراضي ستحتاج لإجراء عملية تكرار loop لعرض جميع المؤلفين، تخيل أنك تعرض المؤلفين في:
- صفحة خاصة بالكتاب للمستخدمين
- صفحة خاصة بالكتاب للمشرفين
- تقوم بإرجاع المؤلفين في واجهة برمجية API
يجب أن تكتب عملية التكرار (لعرض كل المؤلفين) ثلاث مرات، حسناً ستحتاج لتعديل عملية العرض وتغيير الفاصل بدلاً من "and" إلى "و" ستقوم بالتعديل بالأماكن الثلاث، بعد فترة قد تحتاج لعرض لقب الكاتب بدل من اسمه ستقوم بالتعديل بالأماكن الثلاث أيضاً؛ وقد تقوم بالتعديل أكثر من 3 مرات بحسب تكرارك لنفس التعليمات البرمجية
هنا قدم لنا eloquent الحل من خلال إضافة تابع في الصنف المطلوب يحمل اسم مميز للعملية مثل (getAuthorsNameAttribute) نقوم بجلب نتيجته من خلال استدعائه ب "authorsName" فعندما تريد إجراء أي تعديل يكفي التعديل في التابع فقط ليتم تنفيذ كل التعليمات بأي مكان تقوم باستدعائه؛ يمكنك ملاحظة ذلك في الصورة
هذا كل شيء 😊 شاركني رأيك وتجربتك في التعليقات 😍 ❤️
#laravel #php #oop #eloquent #cleanCode
بفرض لدينا ثلاث جداول الأول جدول للكتب والثاني جدول للمؤلفين وجدول ثالث يربط بين المؤلفين والكتب علاقة (many-to-many) هذا يعني بأن لكل كتاب مؤلف أو أكثر
بشكل افتراضي ستحتاج لإجراء عملية تكرار loop لعرض جميع المؤلفين، تخيل أنك تعرض المؤلفين في:
- صفحة خاصة بالكتاب للمستخدمين
- صفحة خاصة بالكتاب للمشرفين
- تقوم بإرجاع المؤلفين في واجهة برمجية API
يجب أن تكتب عملية التكرار (لعرض كل المؤلفين) ثلاث مرات، حسناً ستحتاج لتعديل عملية العرض وتغيير الفاصل بدلاً من "and" إلى "و" ستقوم بالتعديل بالأماكن الثلاث، بعد فترة قد تحتاج لعرض لقب الكاتب بدل من اسمه ستقوم بالتعديل بالأماكن الثلاث أيضاً؛ وقد تقوم بالتعديل أكثر من 3 مرات بحسب تكرارك لنفس التعليمات البرمجية
هنا قدم لنا eloquent الحل من خلال إضافة تابع في الصنف المطلوب يحمل اسم مميز للعملية مثل (getAuthorsNameAttribute) نقوم بجلب نتيجته من خلال استدعائه ب "authorsName" فعندما تريد إجراء أي تعديل يكفي التعديل في التابع فقط ليتم تنفيذ كل التعليمات بأي مكان تقوم باستدعائه؛ يمكنك ملاحظة ذلك في الصورة
هذا كل شيء 😊 شاركني رأيك وتجربتك في التعليقات 😍 ❤️
#laravel #php #oop #eloquent #cleanCode
👍4
تسخر الذكاء الاصطناعي ليساعدك ويوفر وقتك اليوم شي ضروري ‼️ (للنماذج الغوية الكبيرة LLM)
وأنا بهذا المنشور حتى ألهمك بكيف تستخدمه بأفضل طريقة😉
طبعاً هذا كله يندرج تحت مسمى هندسة الأوامر أو هندسة التلقين Prompt engineering
طب كمبرمج كيف استفيد منه👨💻 ؟
لح اعرض بعض الحالات كيف تستفيد منه كمبرمج فيك تستلهم منها؛ لان بكل حالة بدك تعرف كيف تلقم النموذج😬 بحسب الحالة يلي عندك، ينصح أن الأمر يكون باللغة الانكليزية
1️⃣ -عم تتعامل مع bootstrap5 لتصمم واجهة تسجيل دخول، أنت نسيان كيف تعمل margin سفلي لكل label (يعني نسيان اسم class بس بتعرف شو بيعمل) وبدك الزر يكون معطل إذا الحقول كانت فارغة:
2️⃣ -عم نتعامل مع Laravel وبدنا نعمل validate للمعلومات يلي استقبلناها في route معين، بحيث نعمل تحقق من الايميل انه فريد، كلمة السر صعبة، الاسم أطول من 3 محارف، وفي حال كانت البيانات محققة نقوم بإنشاء حساب جديد، ونضيف اله صلاحية مستخدم عادي باستخدام مكتبة laravel-permission وبعدها نعرض صفحة معينة مع رسالة نجاح إنشاء الحساب:
3️⃣ -بفرض كتبت تعليمة SQL وكانت طويلة شوي 😅 وضليت وقت عم تحاول تظبطها وتجرب فيها وبدك تستخدمها بمشروعك عم تستخدم Laravel فيك بسهولة تحولها ل Query builder:
4️⃣ -كتبت تعليمة SQL بحيث تجلب بيانات محددة وعامل ترتيب من الأحدث للأقدم، وبتحتاج تجلب رقم (مثل فكرة ال id لكن بيختلف الرقم بحسب الترتيب والتصفية يلي عاملها، بحيث إذا نضاف شخص جديد للقائمة بكون الأول وليس الأخير) وماعندك فكرة إذا بتصير من خلال SQL:
5️⃣ -بحاجة لتحميل او تثبت حزمة أو برنامج على نظام معين، ودخلت للموقع الرسمي ولقيته معقد 🫤 بدك شرح سهل وبسيط:
6️⃣ -بحاجة لإنشاء component react وعم تستخدم react router محتاج تضيف route كالتالي:
ومحتاج تجلب الاسم يلي بين قوسين، وتقوم بإضافة class خاص فيه يقوم بالتحرك من الأعلى للأسفل كل 2s:
وهيك بكون ذكرت بعض الحالات للإستهلام😁 حتى تحاول تلقم اي نموذج لغوي، وفي أفكار اكثر وأكثر بس هدفي من هي الرسالة تكون الخطو الأولى للأشخاص يلي ما عرفو يسخرو هي الأدوات للمساعدة 😉 من خلال تشوف كيف بيتم إستخدامه
طبعاً يلي عم يعاني من مشاكل باللغة الانكليزية حاول اكتب عادي 😅 وغالبأً المتصفح بالكلمات الغريبة بحط خط وإمكانية التصحيح للكلمة 😁
هذا كل شيء 😊 شاركني رأيك وتجربتك في التعليقات 😍 ❤️
➖➖➖➖➖
للمزيد من المنشورات♻️ : تصفح قائمة المنشورات
#AI #LLM #prompt #gpt #chatgpt
وأنا بهذا المنشور حتى ألهمك بكيف تستخدمه بأفضل طريقة
طبعاً هذا كله يندرج تحت مسمى هندسة الأوامر أو هندسة التلقين Prompt engineering
طب كمبرمج كيف استفيد منه
لح اعرض بعض الحالات كيف تستفيد منه كمبرمج فيك تستلهم منها؛ لان بكل حالة بدك تعرف كيف تلقم النموذج
in bootstrap5, what is name class for add margin bottom, and i have 3 inputs (name,email,password) how can set button submit as disable if the inputs are empty and enable if inputs isn't empty
hello, i have controller and function store in this controller, in function store i will retrieve data (name,email,password) and i need to check if name length more three and check if email is write valid and password is hard (password content number and characters), and if data is valid create account from these data and add role user (i am using laravel-permission) and in the end return view home with message 'Welcome New User'
convert code SQL 'SELECT * FROM `users` where `id`=2' to query builder in laravel and replace '2' with $userId
i have these code SQL: "select `name`,`email`,`money` from `users` and `role`='salary' order by `created_at` desc" i need to add column for number row and value change if created_at are large from user to other with SQL
i need to install gtest for c++ in ubuntu24 and need to example for check if install is success, can you write step by step how can do that?
/name/{name}
ومحتاج تجلب الاسم يلي بين قوسين، وتقوم بإضافة class خاص فيه يقوم بالتحرك من الأعلى للأسفل كل 2s:
i need to create component react, the component will be element for route '/name/{name}' and in component i need to return h2 content name from URI '{name}' and h2 have class .animation-top-buttom and clss .animation-top-buttom has transform element from -10px to 10px every 2s
وهيك بكون ذكرت بعض الحالات للإستهلام
طبعاً يلي عم يعاني من مشاكل باللغة الانكليزية حاول اكتب عادي 😅 وغالبأً المتصفح بالكلمات الغريبة بحط خط وإمكانية التصحيح للكلمة 😁
هذا كل شيء 😊 شاركني رأيك وتجربتك في التعليقات 😍 ❤️
➖➖➖➖➖
للمزيد من المنشورات
#AI #LLM #prompt #gpt #chatgpt
Please open Telegram to view this post
VIEW IN TELEGRAM
كيف تتابع أخر الأخبار المتعلقة بالتقنيات التي تعمل عليها 📧
من أهم الأمور حتى تثبت أنك مبرمج🧑💻 شاطر، يومياً في تطور ولو بدك تتعلم وتوقف تعليم ✋ فلح يجي يوم وتوقف شغل للأسف! حتى لو كان همك تشتغل فريلانسر 🥲 لهيك تابع على الأقل التحديثات يلي عم تصير بمجالك والتقنيات البرمجية مثل المكتبات واطر العمل يلي عم تستخدمها 👩💻
طب أنا مثلاً شو بستفيد إذا تابعت لحالي؟ انا مشترك بقنوات يوتيوب🖤 وقت يصير تحديث للبرمجيات يلي بستخدمهم بيعمل صاحب القناة كورس للإصدار الجديد 🆕 ليش لتعب حالي؟
الفكرة ببساطة وقت تتابع أنت لح تعرف كلشي💯 أول بأول مانك مضطر تستنى كورس، لح تعرف كل التغيرات ما بس التغيرات الجذرية أو شبه جذرية!
أنت عم تكتسب معلومات 📜 جديدة، وبنفس الوقت أنت بتعرف تشتغل مثلاً على Laravel10 ليش لتستنى كورس ل Laravel11 لحتى تعرف شو التغيرات 🤔؟ أنت عم تضيع وقتك وانت عم ترجع تتعلم شي بتعرفه وعم تشتغل فيه كل يوم 🫥
طب كيف فيني تابع أخر الأخبار 🌎 بالتقنيات يلي بستخدمها؟
- إما يومياً تتصفح المدونات الخاصة بالتقنيات يلي بتستخدمها 🫤
- أو اشتراك بنشرات بريدية 📮 لهل مدونات وفي كثير مدونات بتقدم هي الخدمة ومن أهم هي المواقع🌐 :
- * موقع laravel-news.com مختص بنشر كل أخبار اطار العمل Laravel👩💻 من تحديثات لحل مشاكل لمكتبات وأي شي يتعلق ب Laravel
- * موقع https://dev.to من أفضل🔥 المواقع عندي، ما بدخل عليه ولا مرة إلا ما بطلع بمعلومة جديدة بأي شي بخص مجال البرمجة
- * موقع Frontend Focus هذا كنز لمبرمجين👨💻 ال front-end ولح خليكم تستكشفوه بنفسكم
- * موقع reddit الموقع يلي بعلمني كثير وقت شوف النقاشات يلي بتصير فيه، ببساطة اعملك حساب وفتلك على كم مجتمع💬 خاص بالتقنيات يلي بدك ياها وضيفها للمفضلة حتى يكثرلك المواضيع الرائجة بالملخص الاسبوعي
- * قناة @TeleCyber على التلجرام✈️ بتشارك كثير أمور ومن أكثر الشي يلي بحبه بهي القناة هي نشرها لمكتبات front-end ونصائح بمجالات متعددة (من خلال الاقتباس من مقالة مع ذكر المقالة)
من أهم الأمور حتى تثبت أنك مبرمج
طب أنا مثلاً شو بستفيد إذا تابعت لحالي؟ انا مشترك بقنوات يوتيوب
الفكرة ببساطة وقت تتابع أنت لح تعرف كلشي
أنت عم تكتسب معلومات 📜 جديدة، وبنفس الوقت أنت بتعرف تشتغل مثلاً على Laravel10 ليش لتستنى كورس ل Laravel11 لحتى تعرف شو التغيرات 🤔؟ أنت عم تضيع وقتك وانت عم ترجع تتعلم شي بتعرفه وعم تشتغل فيه كل يوم 🫥
طب كيف فيني تابع أخر الأخبار 🌎 بالتقنيات يلي بستخدمها؟
- إما يومياً تتصفح المدونات الخاصة بالتقنيات يلي بتستخدمها 🫤
- أو اشتراك بنشرات بريدية 📮 لهل مدونات وفي كثير مدونات بتقدم هي الخدمة ومن أهم هي المواقع
- * موقع laravel-news.com مختص بنشر كل أخبار اطار العمل Laravel
- * موقع https://dev.to من أفضل
- * موقع Frontend Focus هذا كنز لمبرمجين
- * موقع reddit الموقع يلي بعلمني كثير وقت شوف النقاشات يلي بتصير فيه، ببساطة اعملك حساب وفتلك على كم مجتمع
- * قناة @TeleCyber على التلجرام
Please open Telegram to view this post
VIEW IN TELEGRAM
DEV Community
A space to discuss and keep up software development and manage your software career
Forwarded from IT Engineer (FadL Hasn)
سأعود للنشر قريبا سيكون التركيز على هذه المواضيع اختر ماذا تفضل
Anonymous Poll
63%
python🐍
19%
Ai recources📑
29%
useful github repositories💎
31%
useful courses📚
13%
machine learning🤖
❤1
Yhya Nesb
إحصائيات Stackoverflow لأفضل اللغات البرمجية لسنة 2022. تضم هذه القائمة: - أشهر لغات البرمجة وأكثرها استخداما هذه السنة - أكثر اللغات البرمجية المحبوبة للمطورين - أكثر لغات البرمجة دخلا حتى الآن المصدر: https://link.aqweeb.com/3nnyzkM
إحصائيات Stackoverflow 👩💻 لأشهر اللغات البرمجية لسنة 2024. تضم هذه القائمة:
JavaScript: 62.3%
HTML/CSS: 52.9%
Python: 51%
SQL: 51%
TypeScript: 38.5%
Bash/Shell: 33.9%
Java: 30.3%
C#: 27.1%
C++: 23%
C: 20.3%
PHP: 18.2%
PHP: 13.8%
Go: 13.5%
Rust: 12.6%
Kotlin: 9.4%
Kotlin: 6.2%
Dart: 6%
الاستطلاع صوت عيله 65 ألف مطور🧑💻 علماً أن الفئة الأكبر التي تقدر ب 18.9% من المطورين من الولايات المتحدة الأمريكية 🇺🇸
المصدر: 2024 Stack Overflow Developer Survey
➖➖➖➖➖
للمزيد من المنشورات♻️ : تصفح قائمة المنشورات
#developer #technologies #coding #StackOverflow
JavaScript: 62.3%
HTML/CSS: 52.9%
Python: 51%
SQL: 51%
TypeScript: 38.5%
Bash/Shell: 33.9%
Java: 30.3%
C#: 27.1%
C++: 23%
C: 20.3%
PHP: 18.2%
PHP: 13.8%
Go: 13.5%
Rust: 12.6%
Kotlin: 9.4%
Kotlin: 6.2%
Dart: 6%
الاستطلاع صوت عيله 65 ألف مطور
المصدر: 2024 Stack Overflow Developer Survey
➖➖➖➖➖
للمزيد من المنشورات
#developer #technologies #coding #StackOverflow
Please open Telegram to view this post
VIEW IN TELEGRAM
survey.stackoverflow.co
Technology | 2024 Stack Overflow Developer Survey
👍1
عزز سلامة بياناتك بتحديد نوع محدد لها!🔒
عند التعامل مع Laravel، يعد استخدام نماذج Eloquent ضروريًا للتخاطب مع قواعد البيانات. ولكن، هل سبق أن واجهتك مشكلة عند التعامل مع بيانات دقيقة؟ مثلًا، عند طباعة فاتورة تحتوي على المبالغ التالية: (10, 15.5, 35.1, 0.995, 1.005)، إذا لم تقم بتحديد صيغة محددة، سترجع البيانات بنفس الصيغة التي أدخلتها! قد تحتاج لتوحيد الصيغ، أو ربما ترغب في جعل عمود created_at بصيغة Y-m-d فقط.
الحل الأمثل؟ استخدام $casts! 💡
ببساطة، $casts هي مصفوفة تربط الخصائص بأنواع بيانات محددة. هذا يضمن أنه في كل مرة تقوم فيها بالوصول إلى خاصية معينة، يتم تحويلها تلقائيًا إلى النوع المحدد. النتيجة؟
ضمان سلامة البيانات ✅
إنشاء كود نظيف وسهل الصيانة ✅
تجنب أخطاء تتعلق بنوع البيانات ✅
بعض أنواع البيانات التي يمكنك التحويل إليها 🔍:
array, boolean, date, date:FORMATE, datetime, datetime:FORMATE, double,decimal:<precision>, integer, string, float
💬 هل استخدمت $casts في مشاريعك باستخدام Laravel؟ شارك تجربتك أو نصائحك في التعليقات أدناه! 👇
#Laravel #PHP #تطوير_الويب #Eloquent #برمجة #هندسة_البرمجيات
عند التعامل مع Laravel، يعد استخدام نماذج Eloquent ضروريًا للتخاطب مع قواعد البيانات. ولكن، هل سبق أن واجهتك مشكلة عند التعامل مع بيانات دقيقة؟ مثلًا، عند طباعة فاتورة تحتوي على المبالغ التالية: (10, 15.5, 35.1, 0.995, 1.005)، إذا لم تقم بتحديد صيغة محددة، سترجع البيانات بنفس الصيغة التي أدخلتها! قد تحتاج لتوحيد الصيغ، أو ربما ترغب في جعل عمود created_at بصيغة Y-m-d فقط.
الحل الأمثل؟ استخدام $casts! 💡
ببساطة، $casts هي مصفوفة تربط الخصائص بأنواع بيانات محددة. هذا يضمن أنه في كل مرة تقوم فيها بالوصول إلى خاصية معينة، يتم تحويلها تلقائيًا إلى النوع المحدد. النتيجة؟
ضمان سلامة البيانات ✅
إنشاء كود نظيف وسهل الصيانة ✅
تجنب أخطاء تتعلق بنوع البيانات ✅
بعض أنواع البيانات التي يمكنك التحويل إليها 🔍:
array, boolean, date, date:FORMATE, datetime, datetime:FORMATE, double,decimal:<precision>, integer, string, float
💬 هل استخدمت $casts في مشاريعك باستخدام Laravel؟ شارك تجربتك أو نصائحك في التعليقات أدناه! 👇
#Laravel #PHP #تطوير_الويب #Eloquent #برمجة #هندسة_البرمجيات
❤1
مستودع مشاريع ريان المالكي
كنت في صدد البحث عن برنامج معين فكتبت عن طريق الخطأ حرف
فقادني فضولي لإستكشاف طريقة عمل البرنامج (التقنيات المستخدمة كونه مفتوح المصدر)
فوجدت مستودع مشاريع ريان المالكي الذي أعجبني🔥 فهو كنز لأي مطور جافا سكربت عربي فهو يحوي على تطبيقات سطح مكتب وأندرويد مفتوحة المصدر وبلغة جافاسكربت أيضاً 😍 والأفضل شرح لكل مشروع مع تعليقات داخل الأكواد المشاريع
ليس هذا فقط ! بل يحوي أيضاً على قواعد بيانات اسلامية يمكن لأي شخص إستخدامها😁
شكراً ريان على هذا العمل الرائع❤️
https://github.com/rn0x
كنت في صدد البحث عن برنامج معين فكتبت عن طريق الخطأ حرف
s في البحث وتعبجبت من تطبيق *islam-bot-telegram* الذي ظهر أماميفقادني فضولي لإستكشاف طريقة عمل البرنامج (التقنيات المستخدمة كونه مفتوح المصدر)
فوجدت مستودع مشاريع ريان المالكي الذي أعجبني
ليس هذا فقط ! بل يحوي أيضاً على قواعد بيانات اسلامية يمكن لأي شخص إستخدامها
شكراً ريان على هذا العمل الرائع
https://github.com/rn0x
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
rn0x - Overview
اللهُم اجعل لنا من كلِّ ضيقٍ مخرجًا ومن كل هم فرجًا ومن كل بلاء عافية. - rn0x
❤2👍2
كن واضحاً 🙄
إذا كنت تعمل مع React وتواجه مشاكل في استدعاء المكونات أو الموارد، فلا داعي للعودة خطوة إلى الخلف واستخدام '..' للوصول إلى الجذر الرئيسي. الحل الأفضل 💡 هو استخدام الرمز '@' للإشارة مباشرة إلى جذر المشروع 😍
كيف يمكن تحقيق ذلك؟ 🤔 (يمكنك التحقق من الصور لفهم آلية ذلك)
1️⃣ - قم بتعديل ملف jsconfig.json أو tsconfig.json (حسب بيئة العمل الخاصة بك).
2️⃣ - أضف تعريفاً للمسارات بحيث تشير لأن أي مسار عبارة عن @/* يندرج في مسار الجذر
هل يعمل مع vite أيضاً 👀 ؟
بالطبع لكن عليك تعريف الاسم المستعار '@' على أنه يعود لمسار الجذر
الآن يمكنك استدعاء المكونات والملفات بسهولة 😍 مثل:
بهذه الطريقة يصبح الكود أنظف وأكثر تنظيمًا، كما أن التنقل بين الملفات يصبح أسرع وأسهل ✅
ابدأ باستخدام هذا الميزة اليوم لجعل مشروعك أكثر كفاءة ومرونة!
#React #CodingTips #CleanCode #FrontEnd #TypeScript
إذا كنت تعمل مع React وتواجه مشاكل في استدعاء المكونات أو الموارد، فلا داعي للعودة خطوة إلى الخلف واستخدام '..' للوصول إلى الجذر الرئيسي. الحل الأفضل 💡 هو استخدام الرمز '@' للإشارة مباشرة إلى جذر المشروع 😍
كيف يمكن تحقيق ذلك؟ 🤔 (يمكنك التحقق من الصور لفهم آلية ذلك)
1️⃣ - قم بتعديل ملف jsconfig.json أو tsconfig.json (حسب بيئة العمل الخاصة بك).
2️⃣ - أضف تعريفاً للمسارات بحيث تشير لأن أي مسار عبارة عن @/* يندرج في مسار الجذر
هل يعمل مع vite أيضاً 👀 ؟
بالطبع لكن عليك تعريف الاسم المستعار '@' على أنه يعود لمسار الجذر
الآن يمكنك استدعاء المكونات والملفات بسهولة 😍 مثل:
import MyComponent from '@/components/MyComponent';
بهذه الطريقة يصبح الكود أنظف وأكثر تنظيمًا، كما أن التنقل بين الملفات يصبح أسرع وأسهل ✅
ابدأ باستخدام هذا الميزة اليوم لجعل مشروعك أكثر كفاءة ومرونة!
#React #CodingTips #CleanCode #FrontEnd #TypeScript