Yhya Nesb
626 subscribers
141 photos
1 video
1 file
112 links
شاب سوري طموح محب لعالم التقنية مهندس برمجيات
منشوراتي تعكس وجهة نظري الشخصية فقط.
Download Telegram
Yhya Nesb
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء الثامن عشر في هذه القناة 8️⃣1️⃣
منشور من سلسة #CleanCode لمعرفة التفاصيل انقر هنا 🔗
الجزء التاسع عشر في هذه القناة 9️⃣1️⃣
مبدأ انعكاس التبعية (Dependency Inversion Principle اختصارها DIP):
وينص هذا المبدأ على أمرين 2️⃣ أساسيين:
1️⃣- لا يجب أن تعتمد الوحدات عالية المستوى على الوحدات منخفضة المستوى، كلاهما يجب أن يعتمد على التجريدات.
2️⃣- لا ينبغي أن تعتمد التجريدات على التفاصيل. التفاصيل يجب أن تعتمد على التجريدات.
فهمهم قد يكون صعب في البداية 😅 ولكن إذا كنت قد عملت مع اطر عمل PHP مثل Symfony 👩‍💻 فقد رأيت تطبيقًا لهذا المبدأ في شكل Dependency حقن (DI)
على الرغم من أنها ليست مفاهيم متطابقة 🫨، إلا أن انعكاس التبعية يمنع الوحدات عالية المستوى من معرفة تفاصيل الوحدات ذات المستوى المنخفض وإعدادها. يمكنه تحقيق ذلك من خلال انعكاس التبعية (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 😍
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك ☺️
للمزيد من هذه الشروحات يمكنك متابعتي ⬅️ @YhyaNesb 🔥
#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 الموضحة في قسم الأصناف. يمكن أن تكون التجريدات السيئة أسوأ 😅 من تكرار التعليمات البرمجية، لذا كن حذرًا! بعد أن قلت هذا، إذا كان بإمكانك تقديم تجريد جيد، فافعل ذلك! لا تكرر ما فعلته، وإلا ستجد نفسك تقوم بتحديث أماكن متعددة 🥲 في أي وقت تريد فيه تغيير شيء واحد.
الاستخدام السيء:
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 😍
هذا كل شيء لليوم 😁 في حال أعجبك هكذا نوع من المنشورات لا تنسا مشاركته مع أصدقائك ☺️
للمزيد من هذه الشروحات يمكنك متابعتي ⬅️ @YhyaNesb 🔥
#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-
$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
مشكلة قد تواجهك أثناء استخدامك لبعض الأنظمة المبنية على Linux مثل Ubuntu 👩‍💻 عند محاولة الدخول للأقراص الموجودة على وحدة التخزين الخاصة بك 📚
لحل المشكلة:
sudo mkdir -p /media/$(whoami)/Storeg

لإنشاء مجلد لنشر محتوى القرص عليه
sudo mount -t ntfs /dev/nvme0n1p2 /media/$(whoami)/Storeg

سيتم نشر محتويات القرص -nvme0n1p2- (نفسه الذي حاولت الدخول إليه، لكن هو عبارة عن nvme0n1 وحدة التخزين و p2 قرص التخزين، جميع الأقراص على نفس وحدة التخزين سيختلف الرقم الخاص بها)
بعدها مبروك يمكنك الوصول إلى ملفاتك سواء من نفس الواجهة الذي حاولت منها، او من خلال الدخول لمجلد (/media/$(whoami)/Storeg)
لا تنسى تغيير نوع نظام الملفات الخاص بالقرص، في هذا المثال كان ntfs

#linux #ubuntu #storage #partition
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍1
Welcome to freelance
Yhya Nesb
كذبو عليك وقالو "ميزة التحقق بخطوتين ميزية قوية لتأمين حسابك بحيث لا يتم الدخول لحسابك بدون رمز يصل لهاتفك" Google - Facebook واو ممتاز 😍 انا بآمان بعد فترة: للأسف مزود الخدمة التي تستخدمه غير مدعوم (لن يتم إرسال أي رمز) 🙂، جرب مسح جميع بيانات هاتفك ومن ثم…
قبل 4 أشهر تقريباً حاولت توثيق حسابي برقم هاتفي لأستطيع الحصول على الميزات الإضافية لقناة اليوتيوب
لكن الأمر الغريب أن إرسال رسائل SMS كان دائماً يخبرني أن العملية فشلت 🫤 وعند طلب الرمز من خلال مكالمة يتم إعلامي أنه تم الاتصال بي بدون الإتصال بشكل فعلي 😶
اليوم عن طريقة الصدفة قررت المحاولة لمرة واحدة بعدما وضعت الرقم الخاص بي تم قبولها مباشرة بدون إعلامي بانه تم إرسال رمز 😅 فماذا يحدث مع الأرقام السورية
👍1
مرحبا يا مرحباً بكم في شهر جديد ❤️
الشهر الماضي لم أستطع التفرغ لإنشاء المحتوى 🫤 وهذا الشهر أيضاً بسبب إنشغالي الدراسي 👨‍🏫 لكن لا تقلك 😉 هذا الشهر لدينا بعض المواضيع الشيقة التي سنتكلم بها 😌
جدول القناة لشهر 8/2024 📅:
- كيف تستفيد من التحدث مع أي chat ذكاء إصطناعي في عملك كمبرمج 🤖
- كيف تتابع اخر الأخبار المتعلقة بالتقنيات التي تعمل عليها 📧
- التعامل مع لوحة التحكم Filament مع Laravel 👩‍💻

في حال اعجبت بمحتوى القناة لا تنسى مشاركتها ❤️

للمزيد من المنشورات ♻️: تصفح قائمة المنشورات
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍2
لا تكرر نفسك

بفرض لدينا ثلاث جداول الأول جدول للكتب والثاني جدول للمؤلفين وجدول ثالث يربط بين المؤلفين والكتب علاقة (many-to-many) هذا يعني بأن لكل كتاب مؤلف أو أكثر

بشكل افتراضي ستحتاج لإجراء عملية تكرار loop لعرض جميع المؤلفين، تخيل أنك تعرض المؤلفين في:
- صفحة خاصة بالكتاب للمستخدمين
- صفحة خاصة بالكتاب للمشرفين
- تقوم بإرجاع المؤلفين في واجهة برمجية API
يجب أن تكتب عملية التكرار (لعرض كل المؤلفين) ثلاث مرات، حسناً ستحتاج لتعديل عملية العرض وتغيير الفاصل بدلاً من "and" إلى "و" ستقوم بالتعديل بالأماكن الثلاث، بعد فترة قد تحتاج لعرض لقب الكاتب بدل من اسمه ستقوم بالتعديل بالأماكن الثلاث أيضاً؛ وقد تقوم بالتعديل أكثر من 3 مرات بحسب تكرارك لنفس التعليمات البرمجية

هنا قدم لنا eloquent الحل من خلال إضافة تابع في الصنف المطلوب يحمل اسم مميز للعملية مثل (getAuthorsNameAttribute) نقوم بجلب نتيجته من خلال استدعائه ب "authorsName" فعندما تريد إجراء أي تعديل يكفي التعديل في التابع فقط ليتم تنفيذ كل التعليمات بأي مكان تقوم باستدعائه؛ يمكنك ملاحظة ذلك في الصورة

هذا كل شيء 😊 شاركني رأيك وتجربتك في التعليقات 😍 ❤️

#laravel #php #oop #eloquent #cleanCode
👍4
تسخر الذكاء الاصطناعي ليساعدك ويوفر وقتك اليوم شي ضروري ‼️ (للنماذج الغوية الكبيرة LLM)
وأنا بهذا المنشور حتى ألهمك بكيف تستخدمه بأفضل طريقة 😉
طبعاً هذا كله يندرج تحت مسمى هندسة الأوامر أو هندسة التلقين Prompt engineering
طب كمبرمج كيف استفيد منه 👨‍💻؟
لح اعرض بعض الحالات كيف تستفيد منه كمبرمج فيك تستلهم منها؛ لان بكل حالة بدك تعرف كيف تلقم النموذج 😬 بحسب الحالة يلي عندك، ينصح أن الأمر يكون باللغة الانكليزية
1️⃣-عم تتعامل مع bootstrap5 لتصمم واجهة تسجيل دخول، أنت نسيان كيف تعمل margin سفلي لكل label (يعني نسيان اسم class بس بتعرف شو بيعمل) وبدك الزر يكون معطل إذا الحقول كانت فارغة:
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

2️⃣-عم نتعامل مع Laravel وبدنا نعمل validate للمعلومات يلي استقبلناها في route معين، بحيث نعمل تحقق من الايميل انه فريد، كلمة السر صعبة، الاسم أطول من 3 محارف، وفي حال كانت البيانات محققة نقوم بإنشاء حساب جديد، ونضيف اله صلاحية مستخدم عادي باستخدام مكتبة laravel-permission وبعدها نعرض صفحة معينة مع رسالة نجاح إنشاء الحساب:
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'

3️⃣-بفرض كتبت تعليمة SQL وكانت طويلة شوي 😅 وضليت وقت عم تحاول تظبطها وتجرب فيها وبدك تستخدمها بمشروعك عم تستخدم Laravel فيك بسهولة تحولها ل Query builder:
convert code SQL 'SELECT * FROM `users` where `id`=2' to query builder in laravel and replace '2' with $userId

4️⃣-كتبت تعليمة SQL بحيث تجلب بيانات محددة وعامل ترتيب من الأحدث للأقدم، وبتحتاج تجلب رقم (مثل فكرة ال id لكن بيختلف الرقم بحسب الترتيب والتصفية يلي عاملها، بحيث إذا نضاف شخص جديد للقائمة بكون الأول وليس الأخير) وماعندك فكرة إذا بتصير من خلال SQL:
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

5️⃣-بحاجة لتحميل او تثبت حزمة أو برنامج على نظام معين، ودخلت للموقع الرسمي ولقيته معقد 🫤 بدك شرح سهل وبسيط:
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?

6️⃣-بحاجة لإنشاء component react وعم تستخدم react router محتاج تضيف route كالتالي:
/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 ونصائح بمجالات متعددة (من خلال الاقتباس من مقالة مع ذكر المقالة)
Please open Telegram to view this post
VIEW IN TELEGRAM
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
هل أنت من محبيين Laravel؟
Anonymous Poll
62%
نعم 🩸
38%
لا 🩸
عزز سلامة بياناتك بتحديد نوع محدد لها!🔒
عند التعامل مع 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
مستودع مشاريع ريان المالكي
كنت في صدد البحث عن برنامج معين فكتبت عن طريق الخطأ حرف s في البحث وتعبجبت من تطبيق *islam-bot-telegram* الذي ظهر أمامي
فقادني فضولي لإستكشاف طريقة عمل البرنامج (التقنيات المستخدمة كونه مفتوح المصدر)
فوجدت مستودع مشاريع ريان المالكي الذي أعجبني 🔥 فهو كنز لأي مطور جافا سكربت عربي فهو يحوي على تطبيقات سطح مكتب وأندرويد مفتوحة المصدر وبلغة جافاسكربت أيضاً 😍 والأفضل شرح لكل مشروع مع تعليقات داخل الأكواد المشاريع
ليس هذا فقط ! بل يحوي أيضاً على قواعد بيانات اسلامية يمكن لأي شخص إستخدامها 😁
شكراً ريان على هذا العمل الرائع ❤️
https://github.com/rn0x
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2
كن واضحاً 🙄

إذا كنت تعمل مع React وتواجه مشاكل في استدعاء المكونات أو الموارد، فلا داعي للعودة خطوة إلى الخلف واستخدام '..' للوصول إلى الجذر الرئيسي. الحل الأفضل 💡 هو استخدام الرمز '@' للإشارة مباشرة إلى جذر المشروع 😍

كيف يمكن تحقيق ذلك؟ 🤔 (يمكنك التحقق من الصور لفهم آلية ذلك)

1️⃣ - قم بتعديل ملف jsconfig.json أو tsconfig.json (حسب بيئة العمل الخاصة بك).

2️⃣ - أضف تعريفاً للمسارات بحيث تشير لأن أي مسار عبارة عن @/* يندرج في مسار الجذر

هل يعمل مع vite أيضاً 👀 ؟

بالطبع لكن عليك تعريف الاسم المستعار '@' على أنه يعود لمسار الجذر

الآن يمكنك استدعاء المكونات والملفات بسهولة 😍 مثل:

import MyComponent from '@/components/MyComponent';




بهذه الطريقة يصبح الكود أنظف وأكثر تنظيمًا، كما أن التنقل بين الملفات يصبح أسرع وأسهل

ابدأ باستخدام هذا الميزة اليوم لجعل مشروعك أكثر كفاءة ومرونة!

#React #CodingTips #CleanCode #FrontEnd #TypeScript
سأعود للنشر قريباً مع التركيز على أفكر أكثر مخصصة لمجال ال back-end باستخدام اطاري العمل Laravel 👩‍💻 و Nest.js 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3👍2