-
المساهمات
5196 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
52
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Adnane Kadri
-
الإجابة باختصار هي: لا يمكن، مادام أنه على المتصفح فالعميل يمكنه تحميله والحصول عليه بأي طريقة. ولذلك فإن الطريقة الوحيدة لمنع تحميله والحصول عليه بشكل كامل هي بمنعه من جهة الخادم، وعدم ارساله إلى العميل أساسا. بعض الطرق التي قد تستعمل لهذا الغرض على مستوى العميل هي فقط بغرض تصعيب مهمة التحصل على هاته الملفات على تطبيق العميل، وخصوصا العملاء الغير تقنيين، من مثل: عرض الملف ضمن iframe واضافة طبقة شفافة فوق عنصر iframe لكي يمنع الوصول إلى الملف بشكل مباشر. يمكن وضعها بشكل مطلق absolute هي والـ iframe ضمن حاوية تمتلك الوضعية النسبية relative. منع فتح قائمة السياق context menu للإطلاع على الشيفرة المصدرية للموقع والتحصل على رابط الملف من هنالك. استخدم خوارزمية تشفير معينة لتشفير الملفات المرسلة من الخادم وفك شفرتها على تطبيق العميل، قم بعد ذلك بتشويش شيفرة جافاسكربت الخاصة بك.
-
وعليكم السلام، في الأساس، المعامل الفارغ الآمن يُستخدم للتحقق من وجود القيم في الكائنات والمصفوفات بشكل آمن دون الحاجة للتحقق يدويًا ودون رمي استثناءات أو اظهار أخطاء في حالة عدم وجود القيم .. الأمر الذي يساعد على جعل الشفرة أكثر إتقانًا وقراءةً وصيانةً. تخيل السيناريو التالي: يوجد لدينا صنف User و Profile بحيث يمتلك الأول خاصية profile، في حين يمتلك الثاني خاصية باسم name class User { public $profile = null; public function __construct($profile = null){ if(!is_null($profile)){ $this->profile = $profile; } } } class Profile { public $name = null; public function __construct($name){ $this->name = $name; } } بحيث لما ننشئ مستخدما جديدا، نحن نتحكم فيما إن كان يمتلك بروفايلا أو لا. هذا البروفايل فيه بياناته الشخصية على سبيل الاسم name وغيرها. في السابق وبدون المعامل الفارغ، كنا نقوم بالمقاربة التالية لاستخراج الخاصية name من خلال user: $profile = new Profile('ahmed'); $user = new User($profile); $name = null; // تصريح قيمة افتراضية لمتغير باسم name if ($user !== null && $user->profile !== null && $user->profile->name !== null) { $name = $user->profile->name; // تخزين الاسم في متغير } echo $name; // إما قيمة الاسم إذا كان موجودًا أو null إذا لم يكن موجودًا. أما الآن فسيكفينا كتابة السياق التالي: $name = $user?->profile?->name; echo $name; بدون المعامل الفارغ سوف تحتاج القيام بالكثير من التحققات، لأنك لو حاولت قراءة name مباشرة من خلال: $name = $user->profile->name; سوف يظهر لك خطأ على نحو: Warning: Attempt to read property "name" on null in /home/user/scripts/code.php on line 23
- 3 اجابة
-
- 1
-
بإشتراكك في احد الدورات سوف تحصل على وصول للدورة التي اشتركت بها بالإضافة إلى المسار الأول من كل دورة أخرى، مثال: ان قمت بالإشتراك في دورة تطوير واجهات المستخدم فإنك ستحصل بالإضافة إلى هاته الدورة على وصول لكامل المسارات التالية: أساسيات إدارة تطوير المنتجات من دورة إدارة تطوير المنتجات. مدخل إلى علوم الحاسبو من دورة علوم الحاسوب. أساسيات لغة بايثون من دورة تطوير التطبيقات باستخدام لغة باييثون. أساسيات لغة جافاسكربت من دورة تطوير التطبيقات باستخدام لغة جافاسكربت. أساسيات لغة PHP من دورة تطوير التطبيقات باستخدام لغة PHP. أساسيات لغة روبي من دورة تطوير التطبيقات باستخدام لغة Ruby.
-
وعليكم السلام، Zoho واحدة من الشركات المعروفة بتقديم حلول متكاملة لأعمال الويب، بما في ذلك خدمات استضافة الدومين والبريد الإلكتروني والتسويق عبر البريد الإلكتروني والكثير من التطبيقات الأخرى. بخصوص الإيميل، فهي تقدم خدمات تسمى "Zoho Mail" و "Zoho Campaigns" تتيح لك القيام بذلك. هذه الخدمات لديها واجهات سهلة الاستخدام وتقدم العديد من الميزات المفيدة لأصحاب المواقع. لم أستعمل Zoho لهذا الخصوص، كنت قد استعملتها فيما مضى مع فريق في إدارة أحد المشاريع البرمجية وفي إدارة Scrum sprints وكانت تجربة الإستخدام ممتازة. أرجح أنها مثل ذلك أو أكثر في غيرها من تطبيقاتها.
- 1 جواب
-
- 1
-
تذكر أن props ما هو إلا كائن خواص نسنده إلى مكون رياكت، فأي خاص تتعلق بالمكون الأب والأبناء نضعها فيها. من بينها user أو المستخدم الحالي. مثل هاته الأمور التي نتوقع تكرارها في كثير من أجزاء التطبيق، فنقوم بضبطها كخاصية يسهل الوصول إليها في أي جزء من المكونات.
-
فكرة history.push في رياكت هي ببساطة التوجيه من الصفحة الحالية إلى الصفحة المعطاة بإستخدام react-router، فهي تستقبل كمعامل أول الوجهة المستهدفة. ونستعملها ضمن سياق props وكتابع لها لأنه يتم تصريحها ضمنه -ضمن خواص المكون-، ولذلك فإن history هو كائن يتواجد كخاصية ضمن props في حين أن push هي تابع لهذا الكائن. هاته هي الفكرة ببساطة. props.history.push('/destination-page')
- 4 اجابة
-
- 1
-
نعم، وهو المشروح بالفعل في التعليق السابق.
- 5 اجابة
-
- 1
-
يمكنك اضافة القيد ON DELETE عند إنشاء كل سجل لمفتاح أجنبي، يذكر أن هذا القيد يقبل القيم: CASCADE: أين يتم حذف السجل الابن عند حذف السجل الأب. (مثال: عند حذف الفئة يتم حذف المنتجات التي تنتمي لهاته الفئة). RESTRICT : أين يتم منع حذف السجل الأب عندما يمتلك أي سجل ابن. (مثال: لا يمكن حذف الفئة قبل حذف المنتجات التي تنتمي لهاته الفئة). SET NULL: أين يتم استبدال قيمة FK بـ NULL في الابن عند حذف الأب. (مثال: عند حذف الفئة يتم وضع قيمة NULL للمفاتيح الأجنبية في المنتجات التي تنتمي لهاته الفئة) NO ACTION: أين لن يحدث أي شيء، ويتم رد عملية الحذف. SET DEFAULT: أين يتم ضبط سجل أب افتراضي في حالة حذف الأب الأصلي. (مثال: عند حذف الفئة "رياضة" يتم وضع قيمة معرف فئة "عام" للمفاتيح الأجنبية في المنتجات التي كانت تنتمي لهاته الفئة "رياضة") ما تبحث عليه، هو SET NULL أو SET DEFAULT. ففي الأولى نعرف المفاتيح كـ: CONSTRAINT fk_category_product FOREIGN KEY (category_id) REFERENCES categories (id) ON DELETE SET NULL أما في الثانية فنعرفها كـ: category_id INT DEFAULT 1 CONSTRAINT fk_category_product FOREIGN KEY (category_id) REFERENCES categories (id) ON DELETE SET DEFAULT
- 5 اجابة
-
- 1
-
لا علاقة لذلك، ليس هنالك في ويندوز 11 ما يعيق على البرمجة. وخصوصا في مجال تطوير الويب. فأنت لن تحتاج في الأخير إلا متصفح ويب مثل chrome ومحرر أكواد مثل sublime text أو visual studio code. وهما ما يؤثران غالبا على انتاجيتك أو قدرتك على التطوير أو مصادفتك للمشاكل. طبعا فإن طبيعة هاته المشاكل التي صادفتها هي ما تحدد سببها الأول، حاول البحث عن مدلولها وحلها، يمكنك الاستمرار في استخدام ويندوز 11، سوف لن يكون لذلك أي دخل.
- 3 اجابة
-
- 1
-
أظن أن حتى مجال تطوير تطبيقات الويب هو الآخر يحظى بتطويرات تواكب كل هاته التطورات، خصوصا مع تقنيات مثل تطبيقات الويب التقدمية PWA وتطبيقات الويب على الخادم SSR وتطبيقات الصفحا الواحدة SPA والويب Assembly وغيرها من الأفكار التي مؤخرا ما داخلت المجال. أيضا المجالات التي ذكرتها لا تتعارض هي الأخرى مع مجال الويب، فقد يمكن أن يتم توظيفها في إنشاء تطبيقات ويب أكثر فعالية، فتكون قادرة على خدمة حالات استخدام أخرى. ويحدث هذا فعلا، فهنالك الكثير من تطبيقات الويب حاليا التي تعتمد على نماذج ذكاء صناعي مختلفة. كما أنه وبعكس المعتقد غالبا، الحاجة لتطبيقات الويب تزداد ولا تنقص. بخصوص الذكاء الصناعي، يمكن ببساطة أنه يقوم بأتمتة العمليات الروتينية التي تستهلك وقتا وجهدا مكررا غالبا، ولذلك فإن عملية تحليل المتطلبات ومحاولة تجريدها كمفاهيم برمجية تبقى عملية تحتاج ذكاءا أعلى وعقلا تحليليا، وقد لا يمكن التماس ذلك مع متطلبات المشاريع الاعتيادية البسيطة. ولكن سيكون ذلك باديا كلما ازداد تعقيد المشروع ومتطلباته.
- 4 اجابة
-
- 1
-
تتضمن الدورة بالفعل مسارات تختص ببعض الجزئيات التي ذكرتها، من مثل المسارين الأخيرين: أساسيات هندسة البرمجيات. الخوارزميات وبنى المعطيات. هذا وتبقى كامل المسارات الأخرى أيضا تصب في نفس المحتوى، فهي تمكن الدارس بها من الالمام بجزئيات مختلفة من علوم الحاسب وهندسة البرمجيات، من مثل نظم التشغيل وقواعد البيانات وأساسيات الويب وما نحو ذلك.
- 2 اجابة
-
- 1
-
grid و flexbox من الأساسيات أصلا، لأنك سوف تحتاج تصميم صفحات ويب وهيكلتها وفق أشكال معينة. ولذلك ستحتاج بطبيعة الحال، الإعتماد على مختلف مفاهيم css ولن يكفيك مفهوم أو اثنين.
- 5 اجابة
-
- 1
-
من الواضح أن نزع كابل الهارد دسك قد أثر على عمل الكمبيوتر. ولذلك تحقق من الكابل واتصاله، تأكد من أنه قد تم توصيله بشكل صحيح في منفذ الهارد دسك على اللوحة الأم. قد يكون هناك توصيل فقد أو غير جيد. حاول أيضا فحص مصدر الطاقة: تحقق من أن الهارد دسك يتلقى الطاقة الكافية. تأكد من أن كابل الطاقة موصول بشكل صحيح وأن مصدر الطاقة يعمل بشكل جيد. حاول أيضا: استخدام كابل آخر ومنفذ آخر: جرب استخدام كابل آخر ومنفذ آخر على اللوحة الأم إذا كان ذلك ممكنًا. قد يكون هناك مشكلة في الكابل أو المنفذ. فحص الهارد دسك على كمبيوتر آخر: إذا كنت تمتلك كمبيوتر آخر، جرب توصيل الهارد دسك عليه للتحقق مما إذا كان الهارد دسك نفسه في حالة جيدة. إذا عمل على الكمبيوتر الآخر، فقد تكون المشكلة في الكمبيوتر الأول. استخدام برنامج استعادة البيانات: إذا لم تتمكن من الوصول إلى البيانات على الهارد دسك، قد تحتاج إلى استخدام برنامج استعادة البيانات لاسترجاع الملفات. هناك العديد من البرامج المتاحة مثل "Recuva" و "TestDisk".
-
تحدث مثل هاته المشكلة غالبا بسبب مشكلة في إلغاء تشيفر ملفات تعريف الارتباط عند كل تشغيل أو تهيئة لتطبيق لارافيل جديد. يقترح كحل لهاته المشكلة، ترميز encoding ملفات تعريف الارتباط قبل تشفيرها إلغاء تشفيرها. افتح الملف: app/Http/Middleware/EncryptCookies.php وأضف التابع التالي: <?php namespace App\Http\Middleware; use Illuminate\Cookie\Middleware\EncryptCookies as Middleware; class EncryptCookies extends Middleware { /** * Decrypt the given cookie and return the value. * * @param string $name * @param string|array $cookie * @return string|array */ protected function decryptCookie($name, $cookie) { return parent::decryptCookie($name, is_array($cookie) ? $cookie : urldecode($cookie)); } } أعد تشغيل التطبيق وانظر ما ان اختفت المشكلة.
-
الأمر بسيط، انظر ل pseudo elements على أنها محددات عناصر تختلف عن العنصر المحدد، في حين أن pseudo classes هي محددات تختص بالعنصر الحالي. أمثلة: Pseudo elements: عنصر after يتموضع افتراضيا بعد العنصر عنصر before يتموضع افتراضيا قبل العنصر عنصر first letter هو عنصر أول حرف من السلسلة النصية المحتواة في العنصر Pseudo classes: العنصر عند تمرير مؤشر الفأرة hover عنصر الرابط عندما يكون فعالا active فنكتب في الأولى: div:after div:before div:first-letter ونكتب في الثانية: div:hover a:active
- 3 اجابة
-
- 1
-
هذا بسبب اختلاف المسافات البادئة في الشيفرة التي لديك وتلك لدى صاحب المثال المرفق، فالمسافات البادئة في بايثون مهمة وتحدد مختلف الكتل ومستواها، أصلح ذلك ليكون: num = 1 for i in range(0,4): for j in range(0, i +1): print(num, end = ' ') num+=1 print() وليس: num = 1 for i in range(0,4): for j in range(0, i +1): print(num, end = ' ') num+=1 print()
-
انسخي نفس الرابط والسقيه في نافذة chrome
-
لا أظن أن هنالك علاقة لـ edge بذلك، جربي فتح المشروع باستخدام chrome أو firefox، هل هنالك أي مشكلة بهما هما أيضا؟
-
حسن، حاولي ارفاق ملفات المشروع لننظر فيها، لا يبدوا بالشيفرات أي مشكلة.
-
طيب، حاولي فتح نافذة console والتقطي لنا صورة، لربما هنالك مشكلة ما.
-
هل ملف index.js مضمن في صفحة index.html؟
-
انتبهي إلى أن هنالك خطأ في كتابة write فأنت تكتبينها writw، أي بدل السياق: document.writw(a + b) نكتب: document.write(a + b)
-
بجانب ما تفضل المدرب اسامة بشرحه، تعتبر Agile واحدة من أكثر الفلسفات والمناهج والمقاربات المعتمدة في تطوير المشاريع على وجه عام، ومشاريع المنتجات الرقمية على وجه خاص. فالمنهجية تتضمن بيانا يلخص مجموعة الفلسفات والأفكار التي تعتقدها تلخص عادة في بيان Agile أو Agile Manifesto، حيث يتضمن مجموعة من القيم يعطيها اعتبارا كبيرا على مجموعة أخرى وهي: الأفراد والتفاعلات على العمليات والأدوات: بمعنى أن الأدوات والعمليات مهمة، ولكن الأهم هو وجود أشخاص أكفاء يعملون معًا بفعالية. البرمجيات الفعالة على الوثائق الشاملة: بحيث تعتقد التوثيق الجيد يعد مفيدًا في مساعدة الأشخاص على فهم كيفية إنشاء البرنامج وكيفية استخدامه، ولكن النقطة الأساسية في التطوير هي إنشاء البرنامج، وليس التوثيق. تعاون العملاء على التفاوض على العقود: العقد مهم ولكنه ليس بديلاً عن العمل بشكل وثيق مع العملاء لاكتشاف ما يحتاجون إليه. الاستجابة للتغيرات على الالتزام بخطة: تعتبر خطة المشروع مهمة، ولكن يجب ألا تكون صارمة للغاية بحيث لا تتناسب مع التغيرات في التكنولوجيا أو البيئة. بجانب هذا، تتبنى الفلسفة مجموعة مبادئ تلخصها في 12 مبدأ تتبنى هاته التأويلات. يأتي Scrum هنا كإطار عمل لهاته الفلسفة، فهو يتبنى هاته الأفكار في مجموعة خطوات عملية تعتمدها فرق تطوير البرمجيات عادة للتعامل مع مشاريع المنتجات الرقمية. ولشدة شيوعها فإن الكثير من الشركات تطلب الإلمام بمبادئ وخطوات إطار العمل هذا للعمل في الفرق التي تديرها. هذا هو الموضوع باختصار.
-
مرحبا محمد، هذا صحيح، ولكن التعليقات في الأكاديمية تخضع لرقابة دائمة من قبل المشرفين والمدربين، ولذلك فإن أي سلوك من مثل هذا سيؤدي بالطالب إلى حظره أو انتهاج سلوك معين معه. كما أنه من غير المبرر أن يقوم الطالب بذلك ويعرض نفسه لعواقب مثل هكذا فعل. كما أن التعديل على أي تعليق سيظهر مقترنا بالتاريخ المعدل عليه فيه بالإضافة إلى سبب التعديل إن أضافه. كما أن امكانية التعديل تتيح للطلبة مرونة أكثر، فقد يحدث أن يتوصل الطالب إلى حل أثناء عمل المدرب على مشلكته، هاهنا سوف لن يكون هنالك مدعى من مساعدة المشرف أو المدرب للطالب.
- 1 جواب
-
- 1
-
MERN هي واحدة من التجميعات الأكثر طلبا وشيوعا هاته الأيام، ومسار التعلم فيها واضح ولا يتطلب منك إلا الإلمام بالأربع جزئيات المكونة لهذا الاسم: MongoDB وذلك للتعامل مع قواعد البيانات وهياكلها. ExpressJS للتعامل مع الخوادم والتوجيه وتطوير الباك أند ReactJS للتعامل مع الواجهة الأمامية وما يشملها NodeJS وذلك كبيئة جافاسكربت يمكنها الإشتغال خارج المتصفحات فيما يلي بعض الخطوات العامة للخوض في ذلك: تعلم الأساسيات: تعلم كل الأساسيات من جافاسكربت، HTML و CSS. قم بالخوض في Node.js وتعلمه: Node.js هو بيئة تشغيل JavaScript على الخادم. يعتبر تعلم Node.js أمرًا ضروريًا إذا كنت ترغب في تطوير الجزء الخلفي باستخدام JavaScript. تعلم Express.js: Express.js هو إطار عمل (framework) لتطوير تطبيقات الويب باستخدام Node.js. إذا كنت مبتدئًا في تطوير الخادم باستخدام JavaScript، يمكن أن يكون Express.js خيارًا رائعًا حيث يسهل عليك بناء تطبيقات ويب بسرعة. تعلم قواعد البيانات: يجب عليك أن تكون على دراية بكيفية التفاعل مع قواعد البيانات إذا كنت ترغب في تطوير تطبيقات ديناميكية. قد تكون مهتما بالإطلاع على دورة تطوير التطبيقات باستخدام لغة JavaScript التي تتناول أغلب هاته الجزئيات.
- 5 اجابة
-
- 1