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

لوحة المتصدرين

  1. سامح أشرف

    سامح أشرف

    الأعضاء


    • نقاط

      9

    • المساهمات

      2934


  2. Mohssen A Mohssen

    Mohssen A Mohssen

    الأعضاء


    • نقاط

      3

    • المساهمات

      317


  3. Asma Amin

    Asma Amin

    الأعضاء


    • نقاط

      2

    • المساهمات

      2


  4. شرف الدين حفني

    • نقاط

      2

    • المساهمات

      1690


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 01/18/22 في كل الموقع

  1. يُعتبر Trello أحد تطبيقات الوِب الشهيرة لإدارة المشاريع، بدأتها شركة Fog Creek Software عام 2011 (وهي ذاتها الشركة التي أطلقت Stack Overflow) قبل أن يتحوّل الموقع إلى شركة مستقلّة عام 2014، يتضمن التطبيق حزمتين للاشتراك، الأولى مجانية وتتضمن المميزات الأساسية لاستخدام الموقع، والثانية مدفوعة لفرق العمل. يستخدم Trello نموذجًا يُدعى kanban لإدارة المشاريع، والذي أشاعت شركة تويتا استخدامه في الثمانينيات. تُمثَّل المشاريع وفق هذا النموذج على شكل ألواح boards والتي تتضمن قوائم lists (مُشابهة لقوائم المهام task lists)، تتضمن القوائم بدورها بطاقات cards (تُمثّل المهام). ويُفترض بهذه البطاقات أن تنتقل من قائمة إلى أخرى (عبر السحب والإفلات) مُعبّرة عن سير العمل قُدمًا إلى الأمام. يُمكن استخدام Trello بأشكال كثيرة ومتنوعة، بما في ذلك إدارة المشاريع البرمجية، التخطيط للتدوين، العمل على كتاب، إدارة مكاتب المحاماة، العمل على مجلات الحائط المدرسية إلخ، كما يتكامل مع عدد من الخدمات الشائعة مثل البريد الإلكتروني، IFTTT، Slack وغيرها من وسائل التواصل والتنظيم، مما يجعل Trello مكانًا ملائمًا لربط كل شيء مع بعضه ومتابعة سير العمل. نبدأ في درس اليوم الخطوات الأولى مع البرنامج من قبيل إنشاء حساب، تصميم اللوح الأول والتعرف على المزايا الرئيسية وسنتطرق في دروس لاحقة إلى تفاصيل ومواضيع متقدّمة في العمل على Trello. إنشاء حساب يمكن إنشاء حساب في Trello بسهولة عبر التوجّه إلى الصفحة الرئيسية للموقع ثم الضغط على SingUP، الخانات المطلوبة ثلاثة فقط: اسمك، البريد الإلكتروني، وكلمة المرور: بعد ذلك ستنتقل إلى الصفحة الرئيسية في Trello والتي تعرض الألواح boards الخاصّة بمشاريعك، مبدئيًا لن تتضمن هذه الصفحة سوى لوح واحد ترحيبي يُدعى Welcome Board والذي يشمل الكثير من الأمثلة والخصائص التي يمكن تنفيذها باستخدام Trello. إنشاء لوح جديد New Board لنُنشئ لوحًا جديد باسم "أكاديمية حسوب" عبر الضغط على المربع الرمادي Create new board، ثمة خياران مُتاحان عند الإنشاء، الأول هو اسم اللوح، والثاني هو مجموعة العمل التي سنشارك اللوح معها، ولأننا لم ننشئ مجموعات عمل فسنترك هذا الخيار none ونضغط على Create: إنشاء القوائم بعد إنشاء اللوح ينقلنا Trello إلى داخله، وتظهر قائمة جانبية باسم Menu لنغلقها الآن ونُركّز على الزاوية اليُسرى حيث ينتظرنا إنشاء القائمة الأولى، سوف أكتب "مواد للترجمة" وأضغط على Enter، سأنشئ قائمتين إضافيتين "مواد للتدقيق" و "مواد جاهزة للنشر"، الآن يفترض أن يبدو اللوح على الشكل التالي: تُمثّل هذه القوائم سير عملي في أكاديمية حسوب. لنبدأ مع قائمة "مواد للترجمة"؛ تحتوي هذه القائمة على المقالات التي أنوي ترجمتها، هذا يشابه قائمة To Do والتي تتضمن الأعمال التي يتوجّب عليّ تنفيذها. إضافة مهام إلى القوائم لنبدأ بإضافة بطاقة/مهمة إلى القائمة عن الطريق النقر على زر Add a card، سيظهر مربع نصيّ صغير قابل للكتابة، سأضع هنا عنوان إحدى المقالات التي يتوجب عليّ ترجمتها، ثم أضغط على Enter لأرى المهمة قد أضيفت إلى القائمة. بعد ذلك سأضغط عليها بزر الفأرة الأيمن لتُفتح نافذة تفاصيل البطاقة والتي سنتطرق لاحقًا لإدارتها بالتفصيل. ما يهمني الآن في البطاقة هو إرفاقها مع رابط المقال كي يسهل عليّ الوصول للأصل الإنكليزي عندما أبدأ بالعمل، لذا أنسخ الرابط وأضعه في خانة Add Comment ثم أضغط Enter. سيُضاف في الأعلى مربع جديد باسم Attachments والعنصر الأول (والوحيد حاليًا) في المرفقات هو رابط المادة الأصل. انتهيت الآن من إضافة المهمة الأولى، أغلق البطاقة بالضغط على Esc من لوحة المفاتيح أو الضغط على رمز الإغلاق أعلى يمين نافذة إدارة البطاقة. سأتابع بالطريقة عينها مع باقي المقالات التي يجب عليّ ترجمتها، ليصبح اللوح مشابهًا لما يلي: بهذا الأسلوب تكون لديّ صورة دقيقة عن كمية المواد التي عليّ تنفيذها، وسيكون سهلًا متابعة سير عمل العديد من الأعضاء في فريق واحد. في البداية ستكون المقالات ضمن قائمة "مواد للترجمة" مع رابط الأصل لكل منها، لنفترض أنني أنهيت ترجمة المقال الأول، أعود الآن إلى Trello وأضغط على البطاقة الخاصّة به، ومن مربع Add Comment أختار رمز المشبك (الأول من اليسار) لإرفاق النصّ المترجم مع البطاقة، كما في الصورة التالية: الخطوة التالية هي سحب البطاقة من قائمة "مواد للترجمة" وإفلاتها ضمن قائمة "مواد للتدقيق"، سأضغط عليها مُجددًا ومن صندوق إضافة تعليق أختار رمز الإشارة (الثاني من اليسار) لإضافة إشارة mention إلى المُدقّق، كي يصله إشعار بوجود مادة جديدة تحتاج إلى تدقيق، كما هو موضح في الصورة: المُدقق بدوره سيحصل على نسخة من الترجمة مع رابط الأصل، وبعد التنقيح سيرفع نسخة جديدة من الملف، وسينقل بطاقة المقال من قائمة "مواد للتدقيق" إلى قائمة "مواد للنشر"، وعبر الضغط على البطاقة هناك يمكنه إضافة إشارة mention إلى مسؤول النشر في الموقع كي يستلم المادة ويجدولها للنشر. هذه صورة مختصرة ومُبسطة عن أسلوب Trello لإدارة سير العمل وتتبعه، وتسهيل التعاون بين فريق العمل. كيف تنشئ مجموعة عمل؟ حتّى تستطيع إدارة العمل مع الفريق الخاص بك أنت بحاجة إلى إنشاء مجموعة عمل أولًا؛ ثم إنشاء لوح مشترك جديد خاص بالمجموعة. للقيام بذلك اضغط على إشارة الإضافة + أعلى ويسار الموقع، لتظهر لدينا ثلاثة خيارات: الأول لإنشاء لوح جديد، الثاني لإنشاء مجموعة عمل شخصية، أما الخيار الثالث فهو لإنشاء مجموعة عمل تجارية وهذا الخيار يحتاج إلى اشتراك في الخطة المدفوعة لدى الموقع. لذا سننتقي الخيار الثاني ثم نكتب اسمًا للفريق ونضغط على Create: سينقلنا الموقع بعدها إلى المساحة الخاصة بمجموعة العمل والتي تتضمن أربع علامات تبويب: الأولى Boards لإنشاء وإدارة ألواح العمل الخاصة بهذه المجموعة. الثانية الأعضاء Members من هنا يمكنك البحث عن الآخرين عبر أسمائهم على Trello أو عبر عنوان بريدهم الإلكتروني، في حال لم يكن الشخص مُسجلًا لدى الموقع فسيظهر أسفل اسمه زر Send بدلًا من Add لإرسال دعوة بريدية له للاشتراك. علامة التبويب الثالثة Settings تتضمن عدّة خيارات، يمكننا تعديل واحد منها فقط والباقي تحتاج إلى الاشتراك المدفوع، الخيار هو Visibility ويُعبّر عن مستوى خصوصيّة مجموعة العمل، حيث لدينا خيارين: الأوّل خاص Private، وهنا تكون رؤية المجموعة وإمكانية العمل ضمنها محصورة بمن تدعوه لها. الثاني عام Public، حيث يمكن لأي شخص لديه رابط المجموعة تصفح جميع تفاصيلها، كما يمكن لمحركات البحث مثل Google فهرسة محتواها، لكن فقط الأعضاء المدعوون يمكنهم العمل ضمنها. أما ثالث الخيارات Business class فهو مخصص بمزايا إضافية للخطة المدفوعة. نصائح عامة استخدم عناوين واضحة وكاملة لوصف البطاقات. أول ما تقوم به بعد إنشاء البطاقة هو كتابة المزيد من التفاصيل بداخلها، وإرفاق الروابط والملفات اللازمة للعمل. تابع سير العمل بنقل البطاقة من قائمة إلى أخرى كما هو مخطط له، الالتزام بهذا النظام سيجلب فوائد تنظيمية عديدة تظهر مع الوقت. لا تحذف البطاقات بعد انتهاء العمل بل أنشئ قائمة باسم «أرشيف» واحفظ فيها جميع الأعمال المنتهية، قد تلزم هذه البطاقات لاحقًا في حال حدوث خلل أو ما شابه. يمكنك استخدام Trello كلوح لإدارة المهام الشخصية حتى لو لم يكن لديك فريق عمل. ادخل صباحًا إلى Trello وراجع جميع المهام التي يتوجّب عليك تنفيذها وتفحّص إلى أين وصل سير العمل. سنتابع في دروس قادمة شرح المزيد من التفاصيل والاستخدامات عن تطبيق Trello.
    1 نقطة
  2. لدي إيرور في كود جافاسكريبت وعجزت عن حله فأرجوا ممن لديه خبرة في لغة جافاسكريبت بأن يساعدني رجاءا هذا الكود:- function q(a, b) { for (; 3 === a._state; ) a = a._value; 0 === a._state ? a._deferreds.push(b) : ((a._handled = !0), d._immediateFn(function () { var c = 1 === a._state ? b.onFulfilled : b.onRejected; if (null === c) (1 === a._state ? m : e)(b.promise, a._value); else { try { var d = c(a._value); } catch (f) { e(b.promise, f); return; } m(b.promise, d); } })); };
    1 نقطة
  3. السلام عليكم، أعتذر منكم ماعرف اذا هذا القسم المناسب لإستفساري. أنشأت مدونة شخصية على بلوقر تخص المرأة الأزياء والأشغال اليدوية وبعض الامور اللي تهمني، وأحتاج قالب مجاني مناسب للتدوين لكن يكون 1- القالب سريع. 2- متوافق مع أنظمة التشغيل. 3- متوافق مع سيو البحث. 4- يدعم اللغة العربية. 5- يدعم إعلانات قوقل ادسنس. وكيف طريقة تحميل وتركيب القالب عن طريق الجوال لأني ماعندي كمبيوتر؟ وأيضاً طريقة ربط المدونة مع قوقل ادسنس، ومتى نربط المدونة مع قوقل ادسنس؟ قبل اضافة التدوينات أو بعد. ممكن تساعدوني وأكون ممنونة لكم🌹.
    1 نقطة
  4. فلاسك Flask يحتوي على مجلد واحد للمفات الثابتة static بشكل إفتراضي، هل من الممكن إضافة المزيد من المجلدات الثابتة static لمشروع فلاسك Flask واحد؟ أرغب في الحصول على مجلد افتراضي للمفات الثابتة لتخزين ملفات js وcss وليكن باسم static ومجلد آخر لحفظ الصور وليكن باسم images. لا أريد وضع مجلد الصور داخل المجلد static هل من الممكن القيام بأمر كهذا في فلاسك Flask؟
    1 نقطة
  5. كيف أحصل على شهادة الاتمام
    1 نقطة
  6. كم من الوقت يستلزم اتمام الدورة فى المتوسط؟ اعلم انها تعتمد على وقت كل شخص على حدا ، لكن يفضل لو ارفقتم مع معلومات الدورة الفترة الزمنية المتوسطة لاتمام الدورة بمعدل ... ساعة يومياً لان هذا يساعد فى تخطيط خطة الدراسة. شكراً
    1 نقطة
  7. أقوم بسحب بعض النصوص من قاعدة بيانات مخزنة في متغير value وعندما أقوم بعرض قيمة هذا المتغير: {{ value }} Output: hello كيف أعرض هذا داخل قالب جانغو Django Template بالشكل التالي؟ Hello مع كتابة الحرف الأول كحرف كبير.
    1 نقطة
  8. يمكنك القيام بهذا الأمر من خلال المُرَشِح filter الذي يسمى title بالشكل التالي: {{ value|title }} لكن المُرشح السابق سوف يقوم بجعل أول حرف من كل كلمة كبير Uppercase، لذلك يمكنك أن تستعمل مُرشح آخر وهو capfirst: {{ "hello, world"|capfirst }} # Output: "Hello, world" تستطيع أيضًا إستخدام المُرشح lower مع الطرق السابقة لجعل كل الحروف صغيرة lowercase ماعدا الحرف الأول فقط: {{ "heLLO, WORLD"|lower|capfirst }} # Output: "Hello, world"
    1 نقطة
  9. هل هناك إمكانية لكتابة وحدات إختبار خاصة بمشروع جانغو Django دون إعداد قاعدة بيانات خاصة بهذا الأمر؟ أريد اختبار المنطق البرمجي الخاص بجزء من المشروع وهذا الجزء لا يتطلب إعداد قاعدة بيانات لكي يعمل. وعلى الرغم من سرعة إعداد قاعدة بيانات للإختبار إلا أنني أجد نفسي لا أحتاجها في أغلب الأحيان، كيف أقوم بعمل هذا الأمر؟
    1 نقطة
  10. يمكنك أن تقوم بهذا الأمر من خلال عمل صنف جديد يرث من الصنف DjangoTestSuiteRunner وتقوم بعمل override للتوابع setup_databases و teardown_databases بحيث تتخطى عملية إعداد قاعدة البيانات بالشكل التالي: # نستدعي الصنف DjangoTestSuiteRunner from django.test.runner import DiscoverRunner class NoDbTesSuiteRunner(DiscoverRunner): def setup_databases(self, **kwargs): pass def teardown_databases(self, old_config, **kwargs): pass الآن يمكنك إستخدام الصنف الذي قمنا بإنشائه لتشغيل الإختبارات tests من خلال الأمر التالي: python manage.py test app --testrunner=app.filename.NoDbTestRunner
    1 نقطة
  11. السلام عليكم عند بناء موقع باستخدام laravel في back-end و react في front-end لابد من بناء api حتى يتم التواصل بين back-end و front-end او اذا فيه طريقة اخرى ممكنة
    1 نقطة
  12. أجل لابد من بناء الapi حتى تتمكن من ربط الواجهة الأمامية المصنوعة بReact.js بالواجهة الخلفية المصنوع بlaravel
    1 نقطة
  13. يعني لابد من بناء الـ Api لا توجد طريقة اخرى غيره صحيح ؟
    1 نقطة
  14. في تلك الحالة يكون الapi يتم بناؤه من خلال laravel ويقوم react بإرسال طلبات إلى لارافيل لاستقبال وتسجيل البيانات , من الممكن إرسال الطلبات بطرق عديدة ولكن أشهرها مكتبة axios والتي يتم إستخدامها بالشكل التالي نقوم أولًا بتثبيت المكتبة npm install axios ثم نقوم بإرسال الطلبات بالشكل التالي axios.get(`رابط السيرفر الخاص بلارافيل`) .then(res => { console.log(res.data) }) ولإرسال طلبات post نقوم حينئذ بإستخدام الدالة post ومن ثم وضع جسم post في مُعامل أخر axios.post(`https://jsonplaceholder.typicode.com/users`, data) .then(res => { console.log(res); console.log(res.data); })
    1 نقطة
  15. هذه الطريقة (إضافة أقواس مربعة في أكثر من حقل للتعبير عن مصفوفة) ليست من معاير الويب web standard، ولكن لأن لغة PHP وكذلك Ruby on Rails يدعمان هذا الأمر بشكل إفتراضي فستجد أنه يتم إستعمال هذه الطريقة على نطاق واسع في الإنترنت. ويمكن لفلاسك Flask أن يقوم بجلب قيم كل الحقول التي لها نفس الاسم name كذلك من خلال التابع request.form.getlist بالشكل التالي: tags = request.form.getlist('tags[]') لاحظ أنه ليس عليك استخدام [ ] على الإطلاق، حيث سيعمل الكود أيضًا في حالة كان النموذج بالشكل التالي: <input name="tags" type="text" /> <input name="tags" type="text" /> <input name="tags" type="text" /> ولكن حينها سيمكنك الوصول إلى القيم من خلال التابع request.form.getlist بالشكل التالي: tags = request.form.getlist('tags')
    1 نقطة
  16. لا يمكنك أن تستعمل Object.query في هذه الحالة وذلك لأن SQL-Alchemy سوف تحاول البحث عن الحقل لوضع قيمة avg وهذا الأمر سيفشل بالتأكيد بدلًا من ذلك يمكنك أن تقوم بإستخدام session.query بالشكل التالي: from sqlalchemy.sql import func session.query(func.avg(Rating.field2).label('average')).filter(Price.product_id==123)
    1 نقطة
  17. قد تكون انشات ملف او كود بالاسم flask.py اذا فعلت ذلك ستري الخطأ بكل تأكيد عدا ذلك فقم بإزالة المكتبة flask واعد تثبيتها
    1 نقطة
  18. مكتبة webassets تستخدم لإدارة الملفات الثابتة static files والتي تدعم ضغط وتجميع ملفات css و JavaScript، كما تدعم العمل مع المصرفات compilers مثل CoffeeScript أو Sass (عبر مكتبات مثل pyScss)، ولإستخدامها بشكل سهل مع فلاسك تحتاج إلى إستخدام Flask-Assets بالشكل التالي: from flask import Flask, render_template from flask.ext.assets import Environment, Bundle app = Flask(__name__) assets = Environment(app) assets.url = app.static_url_path scss = Bundle('file1.scss', 'file2.scss', filters='pyscss', output='style.css') assets.register('scss_all', scss) ويمكنك إستخدام الملف المنتج style.css في القوالب بالشكل التالي: {% assets "scss_all" %} <link rel=stylesheet type=text/css href="{{ ASSET_URL }}"> {% endassets %} بهذا الشكل سوف يتم ترجمة الملف file1.scss و file2.scss إلى الملف style.css وسوف يتم إضافة الملف إلى القالب من خلال الكود الأخير.
    1 نقطة
  19. تحتوي مكتبة BeautifulSoup على التابع select و select_one والذي يقبل كلًا منهما محدد CSS وبالتالي يمكنك أن تقوم بتحديد كل عناصر a الموجودة داخل عناصر li كالتالي: from bs4 import BeautifulSoup content="""<div> <li class="c"> <a>linkA</a> <ul> <li> <a>linkB</a> </li> </ul> </li> </div> """ soup = BeautifulSoup(content, features='lxml') anchors = soup.select('li a') print(anchors) # [<a>linkA</a>, <a>linkB</a>] التابع select يقوم بتحديد كل العناصر المطابقة لمحدد CSS، بينما التابع select_one يقوم بإرجاع أول عنصر يجده فقط.
    1 نقطة
  20. نعم، يجب أن تقوم بوضع النموذج الخاص بك في جسم الـ modal، وبالبطع يمكنك أن تقوم بتعديل باقي أكواد الـ modal حسب الحاجة. قد تحتاج أيضًا أن تستعمل Ajax لعمل طلب إلى السيرفر عندما يقوم المستخدم بملئ بياناته لكي لا يتم تحديث الصفحة أو إعادة توجيه المستخدم لصفحة أخرى. يمكنك الإطلاع أكثر حول ajax من خلال هذه المقالة (مُقدّمة إلى AJAX والكائنات المُؤجّلة (Deferred Objects) على jQuery - jQuery - أكاديمية حسوب (hsoub.com)) أو من خلال موسوعة حسوب من هنا
    1 نقطة
  21. لم يعمل الكود الذي قمت بإضافته بسبب وجود جزئ ناقص فيه وهو الكود التالي: document.getElementsByClassName('needs-validation-create-table')[0].addEventListener('submit', () => { felids = document.querySelectorAll('td.color-sizes-count') felids.forEach((felid) => { felid.addEventListener('change', calcTotal) }) }) بالنسبة لتغير عدد الحقول فيجب أن تقوم بالكثير من التغيرات في الدوال السابقة، على سبيل المثال يجب أن تعديل الدالة addTotalRows لكي تقبل مصفوفة تحتوي على المقاسات لتقوم بتوليد كل الخانات في صف الإجمالي ويجب أن يتم إستعمال أسماء المقاسات كأصناف classes في الخانات حتى يمكنك أن تقوم بتعديل قيم هذه الخانات مع كل تغير يتم في الجدول، كالتالي: sizes = ['size_m', 'size_l', 'size_xl', 'size_xxl']; addTotalRows = (sizes) => { row_html = `<tr class="total-row"> <th scope="row" style="border: 1px solid #373838;background-color: #bec1c3;"> الإجمالي </th>` sizes.forEach((size)=>{ row_html += `<td scope="row" class="${size}" style="border: 1px solid #373838;"> </td>` }) row_html += `</tr>` tbody = document.querySelector('tbody') tbody.innerHTML = tbody.innerHTML + row_html } document.getElementsByClassName('needs-validation-create-table')[0].addEventListener('submit', ()=>addTotalRows(sizes)) وبنفس الطريقة يجب أن تقوم بتعديل كل الدوال الأخرى.
    1 نقطة
  22. يمكنك أن تقوم بعمل دالة تقوم بالمرور على كل حرف من مدخلات المستخدم وتقوم هذه الدالة بإضافة علامة backslash \ قبل كل حرف أو رمز غير الحروف اللاتينية، وتوجد دالة تقوم بذلك بشكل إفتراضي في مكتبة re وهي دالة escape ويمكنك أن تستعمل الدالة كالتالي: userInput = input("Write a word: ") # Input: ^a.*$ escapedText = re.escape(userInput) # Output: \^a\.\*\$ ملاحظة عند طباعة المتغير escapedText ستكون النتيجة كالتالي: \\^a\\.\\*\\$ يتم إضافة علامة \ إضافية قبل كل علامة \، ويمكنك الإطلاع على هذه الإجابة لمعرفة سبب إضافة علامة backslash إضافية من هنا
    1 نقطة
×
×
  • أضف...