Salah Eddin Berriani

الأعضاء
  • المساهمات

    761
  • تاريخ الانضمام

  • تاريخ آخر زيارة

السُّمعة بالموقع

350 Excellent

4 متابعين

  1. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <style> #container { display: none; } </style> <body> <button id="show" onclick="show()">show detials</button> <div id="container"> <table> <tr> <th>Company</th> <th>Contact</th> <th>Country</th> </tr> <tr> <td>Alfreds Futterkiste</td> <td>Maria Anders</td> <td>Germany</td> </tr> <tr> <td>Centro comercial Moctezuma</td> <td>Francisco Chang</td> <td>Mexico</td> </tr> <tr> <td>Ernst Handel</td> <td>Roland Mendel</td> <td>Austria</td> </tr> <tr> <td>Island Trading</td> <td>Helen Bennett</td> <td>UK</td> </tr> <tr> <td>Laughing Bacchus Winecellars</td> <td>Yoshi Tannamuri</td> <td>Canada</td> </tr> <tr> <td>Magazzini Alimentari Riuniti</td> <td>Giovanni Rovelli</td> <td>Italy</td> </tr> </table> <button onclick="hide()">less detials</button> <button>book</button> </div> </body> <script> var x = document.getElementById('container'); //تحديد الحاوية var b = document.getElementById('show'); // تحديد زر الاظهار function show() { x.style.display = 'block'; // اظهار الحاوية b.style.display = 'none'; //اخفاء زر الاظهار } function hide() { x.style.display = 'none'; // اخفاء الحاوية b.style.display = 'block'; // اظهار زر الاظهار } </script> </html> هذا مثال واضح اقرايه جيدا وستستطيعين تنفيذ ما تريدين
  2. اذا كان تساؤلك عن طريقة لتواجد bootstrap في المشروع والعمل بدون انترنت يعني تجنب التضمين عبر cdn فيمكنك تثبيته في المشروع عبر هذه الاوامر composer require laravel/ui بعد تثبيت الحزمة بنجاح نقوم بتثبيت Bootstrap 4 في تطبيقنا باستخدام الأمر التالي php artisan ui bootstrap يمكنك أيضًا تثبيت مكتبات المصادقة باستخدام الأمر التالي بدلاً من ذلك php Artisan ui bootstrap --auth أخيرًا تحتاج إلى تثبيت حزمة bootstrap والاعتماديات ذات الصلة بالواجهة الأمامية مثل jquery باستخدام الأمر التالي npm install
  3. بالجافاسكريبت يمكنك فعل ذلك بسهولة عن طريق التلاعب بخاصية display في css <button onclick="myFunction()">show</button> <tabel id="table"> ... </table> function myFunction() { var x = document.getElementById("table"); if (x.style.display === "none") { x.style.display = "block"; } else { x.style.display = "none"; } } ويمكنك استخدام الاستراتيجية ذاتها لاخفاء زر الاظهار مثلا واظهار زر الاخفاء
  4. الملف .env يعمل فقط في بيئة التطوير أي انه لا يجب أن ترفعه الى اي مكان فعمله ينتهي في حاسوبك ولهذا يجب تجاهله عن الرفع على github وبالنسبة ل heroku فانت أي متغير بيئي مستخدم من طرفك في المشروع يجب وضعه في ال config vars ولن تكون هناك مشكلة لأن مشروعك سيتغذى على متغيرات البيئة الموضوعة في config vars ملاحظة عند تغيير متغيرات البيئة config vars يجب عمل restart ل dyno لتأخذ الفعالية
  5. في javascript يمكنك تنفيذ شئ كالتالي for (let i = 1; i < 6; i++) { console.log('*'.repeat(i)); } بما انك تريد التوقف عند 5 نجوم فيمكنك تحديد بدء الطباعة من 1 والتوقف عند 5 أي أقل من 6 ولاحظ هناك وظيفة في strings تخول لتكرير حرف أو علامة ما وهي الوظيقة repeat ويمكن ايجاد مثيلاتها في لغات برمجة اخرى * ** *** **** *****
  6. اذا كانت items هي ال state الخاص بذلك الجزء ففي react هذا يعد سئ جدا رغم انه في javascript طبيعي فطريقة تغييرك لل state items هنا items[item.id] = item; ستسبب مشاكل ولن تعمل معك و في حالتك الحل ببساطة سيكون ان تستخدم setItems فقط بهذه الطريقة const addItem = (item) => { setItems((prev)=>({...prev, [item.id]:item})); } يمكنك الاطلاع على هذا المقال فهو يوفر بعض المفاهيم القريبة للموضوع
  7. تسمح لك تعليمات RUN بتثبيت التطبيقات والحزم المطلوبة وتنفذ الاوامر في طبقة عالية على الصورة المشأة و غالبًا ما ستجد تعليمات RUN متعددة في Dockerfile. تعليمات CMD تسمح لك بتعيين أمر افتراضي والذي سيتم تنفيذه فقط عند تشغيل الحاوية دون تحديد أم إذا تم تشغيل حاوية Docker بأمر فسيتم تجاهل الأمر الافتراضي إذا كان Dockerfile يحتوي على أكثر من تعليمة CMD فسيتم تجاهل تعليمات CMD. لذا الحل هو أن تستعمل run في هذه الحالة بدل cmd
  8. function printNums(n) { if (!Number.isInteger(n)) return; // التحقق من العدد const nums = [...Array(n + 1).keys()]; // انشاء قائمة تحتوي أرقام من 0 الى العدد nums.map((num) => console.log(num.toString())); // انشاء حلقة لطبع الأعداد على شكل نص } printNums(9);
  9. يوجد العديد من بوابات الدفع الالكتروني والكل يتنافس بطريقته ويحاول استغلال شريحة معين من الزبائن لكن يبقى التقارب بينهم ملحوظ وهذه السبعة شركات المنصوح بها لأفضل بشكل عام: Authorize.Net الوصيف للأفضل بشكل عام: stripe الأفضل للأعمال التجارية عبر الإنترنت: PayPal الأفضل لشركات الطوب والملاط: Square الأفضل للشركات الناشئة: Braintree الأفضل للقنوات المتعددة: WePay الأفضل للبيع دوليًا: 2Checkout أنصحك بالتحقق من كل واحد منهم لاختيار بوابة دفع مناسبة لك
  10. يمكنك استخدام input type button وسيعمل معك دون مشاكل وسيلبي حاجتك في هذه الحالة <form> <input type="search" placeholder="Search" /> <input type="button" onclick="location.href='search.html';" value="Go to Search" /> </form> كما اذا أردت زر لاطلاق ال form يمكنك اضافة button type submit لذلك <form > <input type="search" placeholder="Search" /> <input type="button" onclick="location.href='search.html';" value="Go to Search" /> <button class="btn btn-success" type="submit">submit</button> </form> في هذه الحالة سيكون لديك زر التوجيه للصفحة search.html وزر اطلاق لل form
  11. اذا كنت تستخدم atlas تأكد من أنك عملت whitelist لل ip الخاص بالسيرفر لكي يتمكن من الاتصال بقاعدة البيانات كما يمكنك فتح صلاحية الاتصال مؤقتا للجميع عبر وضع ال ip 0.0.0.0 ولكن للتطوير فقط وأيضا تحقق جيدا من متغيرات البيئة الخاصة بالاتصال بقاعدة البيانات وبعد هذا قم بعمل restart لل dyno لتحديثه
  12. الأمر جدًا بسيط فقط قم بعمل compile لمشروعك flutter build web ستحصل على مجلد build داخله مجلد web /build/web قم بنسخ المجلد الى خادم IIS في مجلد website و هذا كل شئ
  13. هناك عدة هجمات لكن أكثر الهجمات خطورة هي التي تعطي المهاجم صلاحيات دخول لل server وعادة يقومون بهذه بتحليل ال server لرؤية ما تم تأمينه ويمكنهم انشاء هجوم bruteforce لايجاد كلمة السر ولكن هناك طرق للحماية وتقليل الأخطار ورفع مستوى الأمان منها تحديث النظام الخاص بك يقدم مطورو التوزيعات وأنظمة التشغيل تحديثات متكررة لحزم البرامج ، غالبًا لأسباب أمنية. يعد ضمان تحديث التوزيع أو نظام التشغيل نقطة أساسية لتأمين VPS الخاص بك. تغيير منفذ استماع SSH الافتراضي من أول الأشياء التي يجب القيام بها على الخادم تهيئة منفذ الاستماع لخدمة SSH. تم تعيينه على المنفذ 22 افتراضيًا ، وبالتالي فإن محاولات اختراق الخادم بواسطة الروبوتات ستستهدف هذا المنفذ. يعد تعديل هذا الإعداد باستخدام منفذ مختلف إجراءً بسيطًا لتقوية الخادم الخاص بك ضد الهجمات الآلية. إنشاء مستخدم بحقوق مقيدة بشكل عام ، يجب تنفيذ المهام التي لا تتطلب امتيازات root عبر مستخدم عادي. تعطيل الوصول إلى الخادم عبر المستخدم root يتم إنشاء المستخدم root افتراضيًا على أنظمة GNU / Linux. الوصول إلى root يعني الحصول على معظم الأذونات على نظام التشغيل. ليس من المستحسن بل من الخطير أن تترك الخادم الافتراضي الخاص بك متاحًا فقط عبر root، حيث يمكن لهذا الحساب أن يؤدي عمليات ضارة بشكل لا رجعة فيه. تثبيت Fail2ban Fail2ban هو إطار عمل برمجي لمنع التطفل مصمم لحظر عناوين IP غير المعروفة التي تحاول اختراق نظامك. يوصى باستخدام حزمة البرامج هذه للحماية من أي هجمات عنيفة على خدماتك.
  14. يمكنك استخدام nodejs فهي تدعم عدد كبير من الاتصالات المتزامنة وتوزيع الرسائل عبر القنوات وهي مناسبة جدا لل real time apps . كما يمكنك استخدام golang فهي أيضا مناسبة كما سوف تتحصل على أداء جد عالي أما بالنسبة لقواعد البيانات فيمكنك استخدام mongodb فهي تعتبر قاعدة بيانات جيدة جدا ومستعملة بكثرة ويوجد الكثير من التوثيقات حولها كما يمكنك استخدام قواعد البيانات التي تدعم ال realtime مثل rethindb و firebase firestore
  15. اذا كان رابط المخزن للصورة هو لصورة موضوعة في server خارجي مثلا www.example.com/dsqddqsd.png فيمكنك فقط ارسال الرابط مع معلومات ال json لكن اظن أن الحالة التي تتكلم عنها انت هي انك تقوم بتخزيت الصور في server الخاص بك وتخزن رابط الوصول الى تلك الصور في قاعدة البيانات ولكن حتى في هذه الحالة يمكنك القيام بشئ مشابه بحيث لو أرفقت هذا السطر في express app.use(express.static('public')) ستتمكن من قراءة الملفات الثابتة داخل مجلد public يعني لو كان لديك مجلد التخزين image داخل public ستكون الروابط المخزنة في قاعدة البيانات على هذا الشكل مثلا /images/pic.jpg وللوصول الى الصور ببساطة ستسخدم رابط ال server الخاص بك http://localhost:5000/images/pic.jpg مما يعني انك تستطيع ارسال الرابط مع json ثم استدعاء الصورة من frontend http://localhost:5000/images/pic.jpg