اذهب إلى المحتوى

عبدالباسط ابراهيم

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

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

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

  • عدد الأيام التي تصدر بها

    11

كل منشورات العضو عبدالباسط ابراهيم

  1. نعم يمكن عمل ذلك بالطبع من خلال عدة طرق لكن أفضلهم هو استخدام ال مشروع PHP Desktop يمكنك قراءة التوثيق من خلال هذا الرابط يمكنك أن تجد العديد من المقالات أو الفيديوهات من خلال البحث عن "php desktop app" وستظهر لك مقالات كثيره ولكن الأفضل هو استخدام ال مشروع PHP Desktop من الرابط السابق تعد PHP مفيدة لل backend ولكنها تفتقد الكثير مما قد تحتاجه لتطبيق سطح المكتب.
  2. كما في التعليقات السابقة يمكنك إضافة العديد من المميزات مثل الإكمال التلقائي من خلال الإضافة "PHP IntelliSense" وهي بالطبع من أقوى الإضافات لل php لكن يمكنك تطوير هذا الموضوع لأبعد من ذلك فيمكنك استخدام الإضافات التالية DocBlocker : تستخدم لإضافة block comment بسهولة كما أنه يوجد تعليقات جاهزة للعديد من الدوال PHP Debug PHP Getter & Setter : تضيف هذه الإضافة وظائف "get and set" بسرعة إلى شفرتك. الأمر بسيط مثل النقر بزر الماوس الأيمن على المتغير الذي تريد الحصول عليه وتحديده . PHP Files Extension : بعد التثبيت ، ستتمكن من الوصول إلى ثلاث وظائف إنشاء لنوع ملف مهيأ مسبقًا ، وهي class, interface و trait. بعد اختيار أيٍّ من هذه الأنواع كنوع ملف الإنشاء ، كل ما عليك فعله هو تسميته ، وسيتم إنشاء الملف ، ويتم تجهيزه بالكود ، وجاهز للعمل! Tabnine: هو مساعد الذكاء الاصطناعي سيساعدك على البرمجة بشكل أسرع. ، يعمل هذا المكون الإضافي ، المدفوع بالتعلم الآلي ، مع الأنماط الحالية لمشاريعك. في الإكمال التلقائي للشفرة التنبؤية
  3. يمكنك إضافة الدوال في ال class ثم إستدعائها كم في المثال التالي class WorkbookExtended(): def __init__(self, file_path): self.workbook = load_workbook(file_path) def locate_value(self, value, range): ws = self.workbook.active cells_with_value = [cell.coordinate for row in ws[range] for cell in row if cell.value == value] return cells_with_value wbe = WorkbookExtended("test.xlsx") wbe.locate_value("foo", "A2:B10") تم إضافة الدالة locate_value في الكلاس ثم قام بعد ذلك بغستدعائها من خلال ال wbe إذا كنت تقصد ذلك فيمكنك البحث عن ال Extending openpyxl workbook class للمزيد من المعلومات
  4. يمكنك القراءة أو الكتابة على هذا الملف الذي تم إستدعائه من خلال الدوال التالية سواء في الكلا س أو خارج الكلاس الوصول لل sheets من خلال الدالة get_sheet_names() wb.get_sheet_names() ['Sheet1', 'Sheet2', 'Sheet3'] الوصول للخلايا من خلايا sheet.cell(row=2, column=4) <Cell Sheet1.D2> sheet.cell(row=2, column=4).value 'Pencil' يمكنك استخدام loop for x in range (1,9): print(x,sheet.cell(row=x,column=4).value) يوجد العديد من الدوال الأخرى يمكنك الوصول لها من خلال التوثيق الرسمي لهذه المكتبة من هنا
  5. يمكن أن تحدث هذه المشكلة نتيجة العديد من المشكلات لذلك يجب عليك تجربة هذه الخطوات للوصول للحل ذاكرة التخزين المؤقت للمتصفح التالفة. قد تحدث المشكلة بسبب ذاكرة التخزين المؤقت لمتصفح الويب التالفة. حاول مسح ذاكرة التخزين المؤقت. إعدادات المتصفح التي تم تكوينها بشكل خاطئ. قد تحدث المشكلة إذا تم تكوين بعض إعدادات المتصفح بشكل خاطئ. حاول التراجع عن التغييرات أو إعادة تعيين متصفح الويب إلى إعداداته الافتراضية. التداخل من خادم وكيل أو VPN. حاول تعطيل الخادم الوكيل أو قطع اتصال VPN الخاص بك وحاول تسجيل الدخول. قم بإلغاء إضافات ال AD blocker قم بإيقاف تشغيل Hardware Acceleration من خلال إعدادات google chrome
  6. في الدالة التي تقوم بقراءة الخلايا يمكنك إضافة ال if condition للتحقق إذا كانت هناك خلايا فارغة مثال على ذلك ws=wb.active names=ws['C'] for x in names: if x.value is None: break print(x.value) أما بالنسبة للسؤال الثاني فيمكنك عمل unmerge ثم إضافة القيم التي تحتاجها ثم عمل merge للخلية مجدداً عن طريق الكود التالي from openpyxl.workbook import Workbook wb = Workbook() ws = wb.active ws.merge_cells('A2:D2') ws.unmerge_cells('A2:D2') # or equivalently ws.merge_cells(start_row=2, start_column=1, end_row=4, end_column=4) ws.unmerge_cells(start_row=2, start_column=1, end_row=4, end_column=4) يمكنك قراءة التوثيق الخاص بالمكتبة من هذا الرابط للمزيد من المعلومات
  7. البرمجة التنافسية مهمة للمبرمج تزيد من قدراتك على حل المشكلات ستساعدك البرمجة التنافسية على حل مشكلات وخوارزميات البرمجة الواقعية الصعبة وتصميمها وتنفيذها في المستقبل. تصبح أسرع. نظرًا لأن المبرمجين المتنافسين يحتاجون إلى حل 5-6 مشاكل في غضون ساعتين أو نحو ذلك ، فإنهم عادة ما يكونون مرتاحين للمواعيد النهائية الصغيرة. تصبح أكثر انضباطًا وتركيزًا. في المنافسة ، يجب أن تحل المشاكل في المواقف العصيبة. تعلمك المشاركة في البرمجة التنافسية كيفية التركيز بشكل أكبر على المهمة وعدم إكمالها بسرعة فحسب ، بل بدقة. هذه المهارات مفيدة للغاية لأي وظيفة ، وليس فقط في البرمجة . تتعلم العمل في فريق. تساعدك مسابقات الفريق مثل ACM ICPC على تعلم كيفية العمل معًا بشكل فعال ، حيث يجب عليك العمل مع الآخرين في فريقك لإكمال نفس المهمة. تتعلم كيفية تقييم نقاط القوة والضعف لدى أعضاء فريقك وتقسيم المسؤوليات بشكل فعال بين بعضهم البعض. هذه مهارة مهمة للغاية حيث ستحتاج في الوظيفة إلى العمل ضمن فريق في معظم الأوقات. فرص أفضل في أعلى الشركات متعددة الجنسيات. يتمتع المبرمجون التنافسيون الجيدون بميزة في وضع أنفسهم في الشركات التي تعتبر أكثر نخبة ويصعب الوصول إليها أكثر من غيرها. المشاركة في مسابقة البرمجة شيء يجب أن تبرزه في سيرتك الذاتية. ستكون مقابلات البرمجة الخاصة بك أسهل. بالطبع لا يكون تعلم البرمجة التنافسية على حساب المجال البرمجي الذي تدرسه إنما هي تقوي المهارات التي تحتاجها أو المهارات التي تجعل منك مبرمج محترف
  8. المشكلة في الكود وهي ليست مشكلة بالفعل حيث أنه السلوك الطبيعى لل javascript حيث أن ال submit يجب أن يتم عمل reload للصفحة وذلك الطبيعي ولمنع هذا السلوك يمكنكنا إضافة الدالة preventDefault كما في التعليق السابق ويمكننا أيضاً إضافة هذه الدالة لل button بشكل أبسط كالتالي <button type="submit" onclick="event.preventDefault(); redirect()">Submit</button> ويمكن استبدال هذه الدالة بال return: false لل form ولكن يفضل استخدام ال preventDefault وإذا كنت تريد دعم المتصفحات القديمة ليعمل الموقع بشكل سليم على جميع المتصفحات يمكننا إضافة هذا الكود في الكود الموجود في التعليق السابق نستبدل e.preventDefault(); ب if (e.preventDefault) { e.preventDefault(); } else { e.returnValue = false; }
  9. إذا كانت المشكلة لديك في أن بعض النتسيقات لا تعمل ؟ إذاً يجب عليك التأكد من تنسيقات ال css المدعومة من mPDF حيث هناك بعض الخواص الغير مدعومة يمكنك الإطلاع عليها من هذا الرابط أما إذا كانت التنسيقات لا تعمل إطلاقاً فربما تكون طريقة تضمين ال css تمت بشكل خاطئ الكود التالي يحتوي على مثال لطريقة تضمين ملف css <?php $stylesheet = file_get_contents('style.css'); $mpdf->WriteHTML($stylesheet,\Mpdf\HTMLParserMode::HEADER_CSS); $mpdf->WriteHTML($html,\Mpdf\HTMLParserMode::HTML_BODY);
  10. حتى لا تضيع الكثير من الوقت في إعادة الدروس مرة أخرى يمكنك تذكر ما قمت بتعلمه بالعديد من الطرق مثل إذا كنت تكتب ملاحظات عند المذاكرة فيمكنك قراءة هذه الملاحظات وستتذكر جزء كبير من المعلومات الطريقة الثانية وهي قراءة التوثيقات الخاصة بالتقنيات التي تعلمتها وذلك سيوفر وقت عن مشاهدة الدروس مرة أخرى يمكنك أيضاً قراءة ومراجعة كود المشروعات التي قمت ببنائها في هذه الدورة وتعتبر هذه الطريقة من أفضل الوسائل لتذكر المعلومات مع الرجوع للدرس الخاص للجزئية التي لم تفهمها بعد محاولة تنفيذ هذه الخطوات يفضل محاولة تنفيذ مشروع بنفسك على الجزء الذي تعلمته
  11. بشكل عام تعلم أي مجال أو العمل به يتأثر بشكل ملحوظ بتقدم العمر ولكن يمكن تعويض التقدم بالعمر من خلال العديد من الخطوات مثل زيادة عدد ساعات التعلم و الاجتهاد والإصرار سواء في البرمجة أو غيرها لذلك من الأفضل هو التعلم وعدم النظر لعمر المتعلم أما بالنسبة للشهادة فتعتبر البرمجة من المجالات التي لا تتطلب الشهادة بشكل كبير حيث تتيح لك العمل من خلال مواقع العمل الحر مثل مستقل وغيره الكثير وأيضاً هناك العديد من الوظائف في مجال البرمجة لا تتطلب شهادة جامعية في البرمجة أما بالنسبة للعمل فيوجد العديد من الوظائف المتاحة حالياً سواء remotely أو في الشركات أو من خلال مواقع العمل الحر لذلك فرص العمل متوفره ومتنوعه في مجال البرمجة ولكن عليك أن تعلم أنه العمل الحر يحتاج الصبر والعمل الجاد حيث المنافسة تكون عالية يمكنك قراءة إجابات هذا السؤال وهذا للمزيد من المعلومات كما يفضل قراءة هذه المقالة
  12. بالطبع إذا كان موقع كامل من ناحية ال frontend وال backend أي الموقع يحتاج لعمل backend بجانب ال frontend تحتاج أن تكون full stack أما بالنسبة لجودة العمل الخبرة ذلك يعتمد على ميزانية المشروع وطلب العميل ذلك لأن البداية في مجال ال frontend أسهل نسبياً من ال backend في البداية وليس عموماً بالطبع ليس له دخل بعمل التصميم ولكن إذا كانت لديك الخبرة في ذلك وطلب العميل منك هذا العمل وله حساب إضافي فليس هناك مشكلة في أي مجال يوجد خدمات جاهزة ولكن ليس الجميع يستطيع التعامل معها وليس الجميع يحتاج لخدمات جاهزة أيضاً بجانب أن هناك خدمات جاهزة أكثر في مجال ال frontend ولكن هناك الكثير من الوظائف المطلوبة ليس هناك فرق إذا بدأت بأي مجال من الإثنين أولاً ليس وظيفة ال frontend هي التصميم إنما من المفترض أن يستلم مبرمج ال frontend التصميم جاهز ويبدأ المبرمج في تكويد التصميم من خلال اللغات المختلفة مثل html css و JavaScript وبعض التقنيات الأخرى يمكن لل backend التعامل مع قواعد البيانات بناء الواجهة الخلفية للموقع تصميم API التحقق من الحماية لموقع معين والعديد من المهام المختلفة يمكنك قراءة إجابات هذا السؤال للمزيد من المعلومات
  13. مكتبة dompdf تدعم اللغة العربية لكن يجب عليك تغيير نوع الخط إلى <style> * { font-family: DejaVu Sans, sans-serif; } </style> وتأكد أيضاً من كتابة الكود التالي في ال HTML <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> يمكنك قراءة المزيد من خلال الإجابات على هذا السؤال ويمكنك قراءة هذه الجزئية من خلال ال github لل dompdf كما يمكنك تجربة هذه البدائل WKHTMLToPDF TCPDF Snappy
  14. كما في التعليق السابق وضح عمر الفكرة الأساسية لعمل مثل هذه المواقع وطريقة بناء وترتيب ملفات المشروع ويوجد عدة طرق للقيام بذلك ولكن ترجع بالأخير للطريقة التي تفضلها ولكن كلما كانت الملفات في شكل منظم لن يسبب لك الموقع العديد من المشاكل كلما كثرة الملفات الطريقة الأولى Pages (in root of site): index.html page2.html page3.html إلى آخره Folders: > shared (كل الملفات المشتركة في صفحات ال html ) - styles.css - scripts.js - image.jpg > index (كل الملفات الخاصة بصفحة index) - index-styles.css - index-scripts.js - imageB.jpg > page2 (كل الملفات الخاصة بصفحة page-2.) - page2-styles.css - page2-scripts.js - imageC.jpg > page3 (كل الملفات الخاصة بصفحة page-3.) الطريقة الثانية <مجلد المشروع> templates index.html about.html ..... contact.html assets css style.css ..... responsive.css js script.js ..... main.js images ..... fonts ..... يمكنك إختيار الطريقة التي تفضلها
  15. حتى نعرف الفرق بين الكود الموجود بداخل الدالة render والكود الموجود بخارجها يجب أولاُ أن نتعرف على الهدف من هذه الدالة الغرض من ()render : تقوم React بتوليد HTML إلى صفحة الويب باستخدام الدالة ()render باستخدام الدالة ()render يمكننا قراءة ال props وstate وإعادة كود JSX إلى المكون root . في الدالة ()render لا يمكننا تغيير ال وstate ، ولا يمكننا التسبب في side effects (مثل تقديم طلب HTTP إلى خادم الويب). وطريقة عملها كالتالي يتم عرض العناصر على الشاشة من خلال استدعاء ReactDOM.render الطريقة التي تقارن بين عناصر DOM الحقيقية وvirtual DOM ، مع إجراء أقل عدد ممكن من التغييرات لإحضار DOM الحقيقي إلى ال state الحديثة. أما بالنسبة للكود الموجود خارج الدالة render لسبب لتهيئة ال state للمكون عن طريق تعيين كائن إلى this.state لربط(bind) event handlers التي تحدث في المكون يمكنك قراءة المزيد من المعلومات من خلال موقع react مثل القراءة عن ال constructor القراءة عن ال render
  16. ربما يبدو لك أن المسارات المتبيقية نفس المادة التعليمية الموجودة في المسارات السابقة ولكن سأوضح لك م المهارات الجديدة التي ستتعلمها في مسار تطوير لوحة التحكم يوجد العديد من المفاهيم التي لم تدرسها بعد مثل طريقة بناء structure المشروع والعديد من المهارات من خلال javascript والمكتبات الجاهزة حيث أن تطوير لوحات التحكم دائماً ما تحتاج لعمل كبير نظراً للعمل المطلوب لتنفيذ اللوحة بناء مواقع ثابتة باستخدم Hugo ستتعلم تقنية جديدة كلياً وهو وهو إطار عمل static site generators ستتعلم في هذا المسار بناء صفحة شخصية وموقع شركة ومدونة باستخدام إطار تطوير المواقع الثابتة Hugo. لذلك بالطبع يفضل دراسة المسارات المتبقية
  17. حاول تنفيذ الأمر التالي وهو محاولة حذف ال cache ربما يحل المشكلة npm cache clean --force جرب حذف ال cache من خلال تنفيذ الأمر السابق ومحاولة تجربة بناء مشروع vue
  18. بالإضافة للطرق التي تم ذكرها في التعليقات السابقة يمكنك تنفيذ المثال الذي تريده من ال css عن طريق عدة طرق منها استخدام ال text-align يمكنك تنفيذ المثال السابق بسهولة كالتالي من خلال الوسم <p> ونضع له التنسيق p { text-align: center; } أو يمكنك استخدام ال القيم left و right يمكنك استخدام ال text-indent كالتالي <p id="p0">Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p> ثم قم بإضافة التنسيق التالي #p0 { text-indent: 2em; } يمكنك استخدام القيم التي تريدها يمكنك استخدام ال Margins و Padding لذلك يمكنك تنفيذ المهمة التي تريدها من خلال الطريقة المناسبة لك
  19. يوجد العديد من الثغرات التي يجب الإهتمام بها من جانب مطورو الواجهات الخلفية لتقليل فرص تعرض الموقع أو البيانات للخطر وحسب OWASP و هو منظمة دولية غير ربحية مكرسة لأمن تطبيقات الويب . أحد المبادئ الأساسية لـ OWASP هو أن تكون جميع موادها متاحة مجانًا ويمكن الوصول إليها بسهولة على موقع الويب الخاص بها ، مما يتيح لأي شخص تحسين أمان تطبيق الويب الخاص به. تشمل المواد التي يقدمونها الوثائق والأدوات ومقاطع الفيديو والمنتديات. ربما يكون مشروعهم الأكثر شهرة هو OWASP Top 10. وهذا المشروع يتضمن الكثير من المعلومات حول ال 10 ثغرات الأكثر خطراً 1. الحقن Injection 2. المصادقة المعطلة Broken Authentication 3. التعرض للبيانات الحساسة Sensitive Data Exposure 4. XML External Entities (XEE) 5. كسر التحكم في الوصول Broken Access Control 6. خطأ في التكوين الأمني Security Misconfiguration 7. البرمجة النصية عبر المواقع Cross-Site Scripting 8. إزالة التسلسل غير الآمن Insecure Deserialization 9. استخدام المكونات مع الثغرات المعروفة Using Components With Known Vulnerabilities 10. Insufficient Logging And Monitoring لإلقاء نظرة أكثر تقنية ومتعمقة على OWASP Top 10 ، راجع التقرير الرسمي .
  20. بالإضافة للتعليق السابق تحتاج لإضافة التعليقات في الكود للعديد من الفوائد منها لجعل الآخرين يفهمون التعليمات البرمجية الخاصة بك (مفيدة جداً إذا كنت تعمل ضمن فريقعمل) ذكّر نفسك بما فعلته - لقد جرب معظم المبرمجين العودة إلى عملهم بعد عام أو عامين واضطرارهم إلى إعادة اكتشاف ما فعلوه. يمكن أن تذكرك التعليقات بما كنت تفكر فيه عندما كتبت الكود يمكنك استخدام التعليقات من خلال php عن طريق <?php // تعليق سطر واحد # تعليق سطر واحد ?> /* تعليق يمكن أن يكون على عدة أسطر */ و يمكنك استخدام التعليقات من خلال laravel blade عن طريق {{-- This comment will not be in the rendered HTML --}}
  21. هذه ليست مشكلة حيث تحتاج فقط لوضع ال text-align: center لل #header #header { padding: 20px 0; text-align: center; }
  22. هذا الخطأ نتيجة القيام بإعطاء ال body العرض 80% إذا لم تقم بإضافتها لسبب قم يحذف هذا السطر body{ font-family: Arial, Helvetica, sans-serif; width: 80%; <!-- هذا السطر --> overflow: hidden; } أما إذا قمت بإضافة هذا التنسيق لسبب ما ولا تريد حذفه يمكنك تحدد العرض الكامل لل head-v .head-v{ display: flex; transform: scaleX(1.3); position: relative; top: 5px; width: 100vw; <!-- هذا السطر --> @include breakpoints(large){ top: 25px; } }
  23. كما في التعليق السابق فإنه أكاديمية حسوب تقوم بتقديم النصائح لك عن إنشاء السيرة الذاتية لك . ولكن أنا أعتبر المشاريع التي تقوم بها خلال الدورات التعليمية من حسوببجميع أنواعها هي بمثابة سيرة ذاتية لك حيث إذا كنت مطور واجهات أمامية ستكون المواقع التي قمت ببنائها هي مصدر ثقة للعميل على جودة الأعمال التي تقوم بها . لا شيء يظهر خبرة أكثر من الأشياء التي صنعتها بالفعل. استخدم دائمًا مشاريعك ، حتى مشاريعك الخاصة ، لشرح المعرفة التي اكتسبتها من خلالها . ,وبالأخير ال portfolio أو السيرة الذاتية الغرض الرئيسي منه هو عرض أعمال تطوير الويب الخاصة بك. وبالتالي ، قم فقط بتضمين أفضل المشاريع وأكثرها تميزًا لتمثيل مجموعة المهارات الخاصة بك بشكل جيد. ونصيحة يفضل يحتوي كل عمل لديك على: وصف قصير . اشرح بإيجاز اسم الموقع والغرض منه. الخلفية . راجع عملية البرمجة والأدوات المستخدمة في المشاريع. التمثيل المرئي . أضف لقطات شاشة أو مقاطع فيديو للمنتجات النهائية. إذا أمكن ، قم بتضمين روابط إلى مواقع الويب الفعلية. تذكر أن المشاريع لا يجب أن تكون دائمًا معقدة - قد يكون موقع الصفحة الواحدة كافيًا لعرض مهاراتك
  24. كما في التعليق السابق فيمكنك استخدام الطريقة التي تفضلها ولكن ال async/await هي الطريقة الموصى بها كما في المثال التالي const documentCount = await userModel.countDocuments({}); console.log( "Number of users:", documentCount ); أو يمكنك استخدام then كالتالي someModel .estimatedDocumentCount() .then(docCount => { console.log(docCount) //and do one super neat trick }) .catch(err => { //handle possible errors }) للمزيد من المعلومات يمكنك قراءة توثيق mongoose
  25. ال Redux-saga هي مجرد برمجية وسيطة (middleware) تتعامل مع المنطق غير المتزامن بشكل أفضل. إذا كان لديك تطبيق واسع النطاق ، يُفضل redux-saga على redux-saga . redux-thunk يجعل ال testing أسهل. لذلك ال redux saga ليس مثل redux toolkit إنما هي مجرد redux toolkit ويمكنك استخدامها مع redux toolkit في النفس المشروع كالتالي قم بإضافتها أولاً import { all } from "redux-saga/effects"; import { firstSaga } from "./firstSaga"; export default function* rootSaga() { yield all([...firstSaga]); } ثم يمكنك استخدام ال redux saga كالتالي import { configureStore } from "@reduxjs/toolkit"; import createSagaMiddleware from "redux-saga"; import rootSaga from "./rootSaga"; const sagaMiddleware = createSagaMiddleware(); const store = configureStore({ reducer: { movie: MovieReducer, }, middleware: (getDefaultMiddleware) => // adding the saga middleware here getDefaultMiddleware().concat(sagaMiddleware), }); sagaMiddleware.run(rootSaga); export default store;
×
×
  • أضف...