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

كل الأنشطة

تحدث تلقائيًا

  1. الساعة الماضية
  2. ستحتاج إلى استضافة تدعم لغة بايثون ليس أكثر، وبعض الاستضافات مهيئة بشكل أفضل لبعض إطارات العمل مثل Django بحيث تُسهل عليك مهمة نشر موقعك على الاستضافة. وهناك الكثير من تلك الإضافات وأنصحك باستضافة render و fly.io فهما يدعمان إطار Django، وكلاهما يوفران باقة مجانية، والباقات المدفوعة لديهم ليست مرتفعة التكلفة.
  3. اعمل على مشروع موقع الكترونى بمفردى وعندى مشاكل فى عملية اتمام الشراء يطلب العنوان مع انى اضفت عنواين ومتأكد من ان الكود صحيح ملحوظة اريد نظرة عاملة على الموقع واصلاح اخطائه مع الشرح اذا تكرمتم clickBuy project.rar
  4. اليوم
  5. في الحقيقة هذا السؤال هام جدًا جدًا، وهو من الأسئلة المتقدمة التي ستظهر مع ذوي الخبرة، لأن هذه المشكلة ستظهر عندما يقوم المبرمج بتطوير تطبيق وتوزيعه أو تثبيته عند العميل ثم بعد ذلك يقوم بعمل إضافات على هذا التطبيق، فتظهر هذه المشكلة. دعنا نصف المشكلة: عند تطوير أي تطبيق وإخراج الإصدار الأول منه، تكون إمكانيات هذا التطبيق محدودة إلى حد ما، ولكن مع انتشار التطبيق وأخذ الإفادات من المستخدمين سوف تظهر طلبات وإمكانيات جديدة مطلوب إضافتها إلى التطبيق (وهذا شأن أي تطبيق في العالم). إذًا ما المشكلة؟ المشكلة تكمن عندما يتعامل التطبيق مع ملفات أخرى مثل قواعد البيانات، فسنجد أن الإصدار الأول من التطبيق يتعامل مع قواعد بيانات تحتوي على عدد محدود من الجداول (وليكن 5 جداول)، ولكن مع الإضافات الجديدة سنحتاج إلى إضافة جداول أخرى (وليكن 3 جداول جديدة فيصبح الإجمالي 8 جداول). هنا تكمن المشكلة، لأن المستخدمين الحاليين قد أضافوا بيانات على قواعد البيانات (ذات الخمس جداول) وبالتالي لا يمكن حذف هذه القواعد وتنزيل القاعدة الجديدة (ذات الثمان جداول). فما الحل؟ سأذكر لك الخطوات العامة لأي تطبيق مهما كان نوعه سواء تطبيق أندرويد أو تطبيق ويندوز أو ماك، هذه الخطوات يجب اتباعها أولًا: بالنسبة للتطبيقات التي لا تقوم بحذف قواعد البيانات: هنا سنحتاج فقط تنفيذ بعض الاستعلامات التي تقوم بإنشاء الجداول الجديدة على قاعدة البيانات الموجودة حاليًا، وهكذا تظل الخمس جداول القديمة كما هي ببياناتها، ويضاف إليهم ثلاث جداول أخرى) ويتم تحديث التطبيق فيعمل بدون مشاكل. ثانيًا: بالنسبة للتطبيقات التي تحذف قواعد البيانات مع كل تحديث: إذا استطعنا تعطيل خاصية حذف الملفات مع التحديث عن طريق التحكم في خصائص التطبيق بملف الخصائص مثل gradle.properties كأن نضيف السطر التالي: android.builder.sdkDownload=false أو بأي طريقة تراها مناسبة على حسب التطبيق الذي تقوم به. فإذا فعلت هذا، اتبع التعليمات المذكورة سابقًا (بالنقطة أولاً). أما إذا لم تتمكن من تعطيل هذه الخاصية فيتوجب عليك قبل تحديث التطبيق أن تأخذ نسخة احتياطية من قواعد البيانات، وبعد التحديث، تحذف قواعد البيانات الجديدة التي نزلت حالًا مع التحديث، ثم تقوم باستعادة النسخة الاحتياطية ثم تقوم بإضافة التغييرات الجديدة عليها بعد الاسترجاع (أي إضافة الثلاث جداول الجديدة). بالتأكيد الموضوع متقدم، ويحتاج بحثًا وجهدًا، ولكن هذه الخطوط العامة التي يجب وضعها بالحسبان، والتي اكتسبناها على مدار سنوات خبرتنا بالبرمجيات وكنا نعاني كثيرًا من هذه النقطة، ولم تكن البرمجيات تقدمت بعد (أتحدث عن بدايات الألفينات).
  6. يمكنك رفع المشروع على الإستضافات المجانية حيث يوجد لديك Heroku ولكنه أصبح حاليا يحتاج إلى دفع ولكنه سابقا كان أفضل شئ للاستضافه . إذا كانت قاعدة البيانات لديك sqlite يمكنك إستخدام Heroku حيث أن قاعدة البيانات الخاصة ب Heroku أصبحت خدمة مدفوعة أو يمكنك إستخدام إستضافه قواعد بيانات مجانية سواء كانت postgres أو mysql او حتى nosql . أو يمكنك إستخدام استضافة render و vercel وهما الإستضافتان المجانتيان الأفضل حاليا . ويمكنك الإستفادة من تلك الإجابات حيث تشرح خطوة بخطوة كيفية رفع المواقع على تلك الإستضافات .
  7. لدي موقع جانغو هل نشر هذا الموقع على الانترنت يطلب مواقع مخصصة لمشاريع جانغو ام يمكن نشره علي اي موقع اخر اريد بعض الاستضافات المجانية او مدفوعة يثمن 1$ الي 3$
  8. يقدم لنا الأمر desc أساسيًا معلومات عن الأعمدة الموجودة بالجدول مثل نوع بيانات العمود data type، المقيدات constraints والخصائص الأخرى. لكن لاستعراض المفاتيح التابعة (الأجنبية) Foreign Keys الخاصة بجدول معين وليكن bonuses نستخدم الاستعلام التالي SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_SCHEMA = (SELECT DATABASE()) AND REFERENCED_TABLE_NAME = 'bonuses';
  9. لماذا في جدول الذي في صورة تاليه به 4 مفاتيح اجنبية لكن عندما اعمل desc مفتاحين فقط هما emp_id و created_id
  10. صورة المفتاح بجانب الحقل تعني أن هذا الحقل يُستخدم للربط مع جدول آخر أي أنه مفتاح تابع Foreign Key. ونلاحظ أن هذا المفتاح عبارة عن رقم يمكن من خلال هذا الرقم الوصول إلى سجل في جدول آخر وهو الجدول الأساسي Primary Table
  11. ماذا يعني صورة مفتاح بجانب اسم حقل
  12. ستحتاج إلى دراسة أساسيات الاحتمالات و الإحصاء و الجبر الخطي، لكن كبداية أنصحك بدراسة أساسيات الاحتمالات و الإحصاء فقط و لاحقاً يمكنك التعمق حسب الحاجة. بخصوص الاحتمالات عليك أن تكون ملمًا لالمتغيرات العشوائية وهي متغيرات تستقبل قيمًا متعددة بناءًا على نوع معين من التجارب أو الأحداث العشوائية. والتوزيعات المتقطعة مثل توزيع بيرنولي، الذي يستخدم لتوصيف تجربة تحتوي على نتيجتين فقط (مثل نجاح أو فشل)، والتوزيعات المستمرة مثل التوزيع الغاوسي Gaussian Distribution، لوصف البيانات التي تتبع نمط الجرس bell curve، والتوزيع الأسي Exponential Distribution لنمذجة الزمن بين الأحداث في عملية بواسونية (Poisson process). إذا كانت لغتك الإنجليزية جيدة، أوصيك بمشاهدة دورة الاحتمالات من معهد ماساتشوستس للتكنولوجيا (MIT) على يوتيوب، حيث ستجد سلسلة من المحاضرات المفيدة جدًا التي تغطي تلك المواضيع بعمق. الإحصاء هو جزء آخر لا غنى عنه في تحليل البيانات، فتعلم كيفية تقييم دقة الإحصاءات المستخرجة من البيانات عبر مفاهيم مثل فترات الثقة confidence intervals واختبارات الفرضيات hypothesis testing. والتعامل مع البيانات الكبيرة التي قد يكون من المستحيل استعراضها بالكامل دفعة واحدة، ستحتاج إلى تقنيات مثل تحليل الانحدار regression analysis، تحليل التباين ANOVA، والتحليل العنقودي cluster analysis التي تساعد في استخراج معلومات هامة ومفيدة من البيانات.
  13. إذا كنت تريد رفع أكثر من صورة فيجب وضعهم جميعا فى مكان واحد حتى يتم رفعهم فى الواجهة الخلفية . حيث لاحظت انك تقوم كل مرة بإستدعاء الدالة handleImageChange بإستبدال الصورة الحالية ولهذا سيتم رفع صورة واحده فقط . لذلك أولا يجب عليك تغير طريقة إضافة الصورة هكذا : const handleImageChange = (e) => { const file = image; file.push(e.target.files[0]) setimage(file) } ويجب عليك تغير ال image إلى array فى كل مكان هكذا : const [image, setimage] = useState([]) ويجب عدم وضع الصورة في مصفوفة ال city ولكن فقط قم بوضع الإسم الخاص بالصورة حتى نقوم في الواجهة الخلفية بالتتحقق من الإسم الجديد لها . وبعد ذلك فى الواجهة الخلفية إذا كنت تقوم بإستخدام multer فيجب استخدام array بدلا من single هكذا : upload.single('image') upload.array('image') حيث يجب إستبدال السطر الأول بالسطر الثانى : وبعد ذلك بعد رفع الصور ستجد الصور فى req.files . ويمكنك الآن التكرار على ال files والتحقق من المصفوفة cites والتاكد من الإسم القديم originalname و الإسم فى مصفوفة cities و بعد ذلك إستبدال السم القديم في cities بالاسم الجديد filename و هكذا سيتم حفظها في قاعدة البيانات
  14. هناك أسلوب متبع ويعتبر من ضمن الممارسات الجيدة Best practice بحيث نعرف من خلاله المستخدم الذي قام بإضافة هذا السجل، وبالتالي يمكننا مراقبة إدخال البيانات ومعرفة المستبب في الخطأ إن وجد. إضافة إلى هذا العمود يوجد عمودان آخران يفضل إضافتهما وهما updated_id لمعرفة آخر مستخدم قام بالتعديل على هذا السجل creation_date لتسجيل وقت إنشاء هذا السجل ويفيد في معرفة تسلسل إدخال الحركات.
  15. هل على أن أتعلم كيف تعمل هذه المكتبات ؟ يعني أفهم ماذا في الواقع يمثل هذه المكتبة من الاحصاء والدوال الاخرى حتى افهم آليه عملها أم علي تعلم العمل بها فقط ؟
  16. يُطلب منك في هذا التمرين التطبيقي أن تستخدم تطبيق الكرات المرتدة الذي بنيناه في المقال السابق كنقطة انطلاق ومن ثم إضافة بعض الميزات المهمة اﻷخرى. كما ننصحك قبل محاول العمل على هذا التمرين الاطلاع على سلسلة المقالات السابقة التي تشرح مبادئ البرمجة بالكائنات في جافا سكريبت. نقطة الانطلاق انسخ بداية الملفات index-finished.html و style.css و main-finished.js إلى حاسوبك -وهي ملفات تخص التمرين التطبيقي في المقال السابق- واحفظها في مجلد جديد. كما يمكنك استخدام محررات على اﻹنترنت مثل CodePen و JSFiddle و Glitch. إذ تسمح هذه المحررات بلصق شيفرة HTML و CSS ضمن المحرر، لكن إن لم يكن للمحرر الذي تستخدمه نافذة مخصصة شفرة جافا سكريبت، بإمكانك حينها وضع الشيفرة داخل عنصر <script> في صفحة HTML. نصائح وتلميحات إليك بعض المؤشرات التي تخص التطبيق قبل أن تبدأ: التمرين يحمل تحديًا واضحًا، لهذا ننصحك بقراءة المطلوب بالكامل قبل أن تبدأ كتابة شيفرة كل مهمة، وانتقل من خطوة إلى أخرى ببطء وحذر. قد يكون من الجيد أن تنشئ نسخة مستقلة عن كل التمرين بعد أن تنجز كل مرحلة بنجاح كي تتمكن من العودة إليها إن واجهتك المشاكل لاحقًا. موجز المشروعتأكل لقد كان بناء تطبيق الكرات المرتدة ممتعًا، لكن عليك جعله اﻵن أكثر تفاعلًا بإضافة كرة شريرة يتحكم بها المستخدم الكرات إن التقطتها. كما نريد اختبار مهارتك في بناء إنشاء الكائنات بإنشاء كائن عام Shape ترثه الكرات الملونة والكرة الشريرة. ونريد أخيرًًا عدادًا للنتيجة لتحديد عدد الكرات الباقية التي يجب التقاطها. تعرض الصورة التالية مثالًا عما سيكونه التطبيق عند إنجازه: ولتكوّن فكرة أوضح، ألق نظرة على التطبيق المكتمل) لكن لا تختلس النظر إلى شيفرته! الخطوات التي عليك إكمالها تصف اﻷقسام التالية ما عليك إنجازه. إنشاء الصنف shape أنشئ قبل كل شيء الصنف Shape. ويمتلك هذا الصنف دالة بانية فقط تُعرّف الخاصيات x و y و velX و velY كما تعرّفها الدالة البانية للصنف ()Ball، لكن دون الخاصيتين color و size. يجب أن يرث الصنف Ball الكائن Shape باستخدام التعليمة extends، وينبغي للدالة البانية الخاصة بالصنف Ball أن: تأخذ نفس الوسطاء كما هو حالها سابقًا: x و y و velX و velY و size و color. استدعاء الدالة البانية للصنف باستخدام اﻷمر ()super، وتمرير الوسطاء x و y و velX و velY إليها. تهيئة الخاصيتين color و size من القيم التي تُمرر إليها. وعلى الصنف Ball تعريف خاصية جديدة تُدعى exists التي تُستخدم لتتبع وضع الكرة إن كانت لا تزال في البرنامج (لم تؤكل بعد). وينبغي أن تأخذ الخاصية قيم منطقية (true / false) وتُهيأ بالقيمة true. كما يحتاج التابع ()collisionDetect في الصنف Ball إلى تحديث طفيف، وهو ألا تؤخذ الكرة في الحسبان عند حساب التصادمات إن لم تكن موجودة (أي قيمة الخاصية exists لها هي true). لهذا عليك استبدال شيفرة الدالة ()collisionDetect collisionDetect() { for (const ball of balls) { if (!(this === ball) && ball.exists) { const dx = this.x - ball.x; const dy = this.y - ball.y; const distance = Math.sqrt(dx * dx + dy * dy); if (distance < this.size + ball.size) { ball.color = this.color = randomRGB(); } } } } وكما ناقشنا سابقًا، ستكون اﻹضافة الوحيدة للتابع هو التحقق من كون الكرة موجودة وذلك باستخدام العبارة ball.exists ضمن الشرط if. وينبغي ألا تغيّر في تعريف التابعين أي شيء ويجب أن يبقيا تمامًا كما عرّفناهما سابقًا. حاول اﻵن أن تعيد تحميل الشيفرة وستعمل بنفس طريقة عملها السابقة، على الرغم من إعادة تصميم الكائنات الموجودة. تعريف الكرة الشريرة حان الوقت للعمل مع الكرة الشريرة والصنف EvilCircle، وسيضم تطبيقنا كرة واحدة من هذا الصنف. سنعرّف الصنف باستخدام دالة بانية ترث من الصنف Shapeوذلك ﻹكسابك بعض المهارة. فقد ترغب لاحقًا بإضافة كرة شريرة ثانية يتحكم بها لاعب آخر، أو مجموعة من الكرات الشريرة التي يتحكم بها الحاسوب. وتذكر أننا نحتاج كرة شريرة واحدة فقط في تطبيقنا. أنشئ إذًا تعريفًا للصنف EvilCircle واجعله يرث من الصنف Shape باستخدام extends. الدالة البانية للصنف EvilCircle ينبغي أن تتميز الدالة البانية بما يلي: يُمرر لها الوسيطان xو y. تُمرر الوسيطين إلى الدالة البانية للصنف اﻷب ()Shape مع القيمتين velx و velY واللتان تُمررا كقيم ثابتة 20، أي عليك كتابة الشيفرة كالتالي super(x,v,20,20). اضبط اللون color على الأبيض white وقياس الكرة size على القيمة 10. وأخيرًا لا بد للدالة البانية من إعداد الشيفرة ليتمكن المستخدم من تحريك الكرة على الشاشة: window.addEventListener("keydown", (e) => { switch (e.key) { case "a": this.x -= this.velX; break; case "d": this.x += this.velX; break; case "w": this.y -= this.velY; break; case "s": this.y += this.velY; break; } }); تضيف الشيفرة السابقة مترصّد لحدث الضغط على مفتاح keydown إلى الكائن window، وبالتالي، عندما يُضغط مفتاح يتفقد المتصفح قيمة الخاصية key لكائن الحدث لمعرفة الزر الذي ضُغط.فإن كان أحد المفاتيح اﻷربعة المخصصة، تتحرك الكرة إلى اليمين أو اليسار أو اﻷعلى أو الأسفل. تعريف توابع الكائن EvilCircle للصنف ثلاث توابع نشرحها تاليًا. التابع ()draw وله نفس غاية التابع ()draw في الصنف Ball الذي يرسم نسخة من الكائن على اللوحة. يعمل التابع في الصنف EvilCircle بنفس الطريقة، لهذا بإمكانك نسخ شيفرة التابع ()draw للصنف Ball ومن ثم إجراء التعديلات التالية: لا نريد أن تملئ الكرة بأي لون بل إطار خارجي فقط. وتستطيع أن تفعل ذلك بتغيير التابعين fillstyle و fill إلى التابعين strokeStyle و stroke على الترتيب. اجعل الإطار الخارجي أكثر ثخانة كي تُرى الكرة الشريرة بشكل أوضح. وتستطيع إنجاز الأمر بضبط قيمة lineWidth (على القيمة 3 مثلًا) وذلك بعد وضع هذه التعليمة في مكان مناسب بعد الدالة ()beginPath. التابع ()checkBounds ينفّذ هذا التابع ما ينفّذه الجزء الأول من التابع ()update في الصنف Ball وذلك بالتحقق من وصول حافة الكرة إلى حواف الشاشة ومنعها من ذلك. لهذا انسخ شيفرة هذه الدالة وأجر عليها التعديلات التالية: احذف السطرين اﻷخيرين، فلا نريد تغيير موقع الكرة الشريرة تلقائيًا في كل إطار لأننا نريد تحريكها بطريقة أخرى كما سنرى لاحقًا. إن أعاد الشرط داخل العبارة ()if القيمة true، فلن نريد في هذه الحالة تحديث قيمتي الخاصيتين velx و velY بل نريد تغيير قيمتي x و y كي ترتد الكرة الشريرة قليلًا عن الشاشة. قد يفي بالغرض إضافة أو طرح (بما يناسب) قياس الكرة الشريرة. التابع ()collisionDetect يعمل هذا التابع بنفس الطريقة التي يعمل فيها التابع المقابل في الصنف Ball لهذا بإمكانك نسخ شيفرته واستخدامها كأساس للتابع الجديد. لكن بالطبع مع إجراء التغييرات التالية: لا حاجة في الشرط if الخارجي للتحقق من أن الكرة المختبرة هي نفسها الكرة التي وصل إليها التكرار لأنها لم تعد كرة عادية بل الكرة الشريرة. وما عليك فعله هو التأكد من أن الكرة التي نختبرها موجودة (ما هي الخاصية التي نستخدمها؟). فإن لم تكن موجودة فإن الكرة قد أُكلت مسبقًا من قبل الكرة الشريرة، فلا حاجة لاختبارها مجددًا. لا حاجة في الشرط if الداخلي إلى تغيير لون الكرة عند التقاط حالة تصادم، بل عليك فقط أن تجعل الكرة التي تصطدم بالكرة الشريرة غير موجودة (كيف ستفعل ذلك؟) إدخال الكرة الشريرة إلى البرنامج بعد أن عرّفنا الكرة الشريرة، لا بد من إظهارها فعليًا في المشهد. وﻹنجاز اﻷمر، عليك إجراء بعض التعديلات على الدالة ()loop. أنشئ بداية نسخة جديدة عن كائن الكرة الشريرة (اضبط المعاملات اللازمة). عليك فعل ذلك مرة واحدة، وليس في كل تكرار للدالة ()loop. في النقطة التي نتنقل فيها بين الكرات ونستدعي التوابع ()draw و ()update و ()collisionDetect لكل كرة، استدع التوابع السابقة فقط إن كانت الكرة التي وصلنا إليها في التكرار موجودة. استدع التوابع ()draw و ()checkBounds و ()collisionDetect لنسخة الكرة الشريرة في كل تكرار للحلقة. إنجاز شيفرة عداد النتيجة اتبع الخطوات التالية: أضف <p> تحت العنصر <h1> في ملف HTML وفيها النص Ball count. أضف القاعدة التالية في آخر ملف CSS: p { position: absolute; margin: 0; top: 35px; right: 5px; color: #aaa; } قم بإجراء التعديلات التالية في ملف جافا سكريبت: أنشئ متغيرًا لتخزين مرجع إلى الفقرة النصية. أظهر عدد الكرات على الشاشة بطريقة تجدها مناسبة. زد العداد وحدّث عدد الكرات الموجود على الشاشة في كل مرة تُضاف فيها كرة إلى المشهد. انقص العداد وحدّث عدد الكرات على الشاشة في كل مرة تأكل فيها الكرة الشريرة كرة (أي تجعلها غير موجودة). الخلاصة تعلمنا في هذا المقال كيفية تحسين تطبيق الكرات المرتدة الذي بنيناه في المقال السابق بإضافة ميزات جديدة مثل كرة شريرة يتحكم بها المستخدم حيث تتحرك هذه الكرة عبر الشاشة ويستطيع المستخدم التحكم بها باستخدام مفاتيح الأسهم كما أضفنا عدّاد للنتيجة ليُظهر عدد الكرات المتبقية على الشاشة وشرحنا طريقة إخفاء الكرات بحيث تُصبح الكرة غير موجودة عند اصطدامها بالكرة الشريرة. ترجمة -وبتصرف لمقال Adding features to our bouncing ball demo اقرأ أيضًا المقال السابق: بناء تطبيق الكرات المرتدة الملونة باستخدام الكائنات في جافا سكريبت -الجزء الأول تجربتك اﻷولى مع جافا سكريبت التعامل مع التصاميم، الألوان والخطوط باستخدام Canvas في جافاسكربت الرسم على لوحة في جافاسكربت معالجة الأحداث في جافا سكريبت
  17. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  18. اا في الدرس الاول من تاسيس php ولدي مشكلة الان انا في انشاء اول مشروع لي المشكلة اانه عندما اقوم باعادة تشغيل المشروع لا يعمل على صفحت الويب
  19. لماذا اغلب جداول عند انشائه يوجد به عمود created_id
  20. من خلال CSS سيكون كالتالي: <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> .box { position: relative; display: flex; justify-content: center; align-items: center; background-color: #1b1bb7; border-radius: calc(20% - 40px); padding: 40px 20px; width: 300px; height: 300px; text-align: center; } .box-overlay { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); mix-blend-mode: overlay; width: 91%; height: 91%; background-color: rgb(0 0 0 / 79%); border-radius: 9%; filter: blur(37px); } h1, p { font-size: 30px; font-weight: bold; font-family: system-ui; color: white; } </style> </head> <body> <div class="box"> <div class="content"> <h1>5+</h1> <p>Countries</p> </div> <div class="box-overlay"> </div> </body> </html> والنتيجة هي: حيث ستعتمد على خاصيتي mix-blend-mode و filter لتنفيذ الفكرة.
  21. العمل الحر أو الفريلانسينغ هو أسلوب عمل يسمح للأفراد بالعمل بشكل مستقل وتقديم خدماتهم للشركات أو الأفراد على أساس تعاقدي بدون الالتزام بوظيفة ثابتة. إذا كنت مهتمًا بالدخول في مجال العمل الحر، فإليك بعض الخطوات الأساسية لتبدأ: 1. تحديد المهارات والخدمات قبل البدء، حدد المهارات التي تتقنها والخدمات التي تستطيع تقديمها. يمكن أن تكون هذه الخدمات مثل الكتابة، التصميم الجرافيكي، البرمجة، التسويق الرقمي، الترجمة، وغيرها. 2. إنشاء محفظة أعمال قم بجمع عينات من أعمالك السابقة لإنشاء محفظة تعرض مهاراتك وجودة عملك. إذا لم يكن لديك عمل سابق، يمكنك إنشاء مشاريع وهمية أو تقديم خدمات مجانية لبعض العملاء في البداية لبناء محفظتك. 3. التسجيل في منصات العمل الحر هناك العديد من المنصات التي تجمع بين المستقلين والعملاء، مثل: Upwork Freelancer Fiverr Toptal PeoplePerHour 4. التسويق الذاتي أنشئ حسابات على وسائل التواصل الاجتماعي وشارك محتوى يعرض مهاراتك وإنجازاتك. يمكنك أيضًا إنشاء مدونة أو موقع ويب شخصي لعرض خدماتك ومقالات تتعلق بمجالك. 5. تحديد الأسعار ابحث في السوق لتحديد أسعار خدماتك. ابدأ بأسعار تنافسية للحصول على أول عملائك، ثم قم بزيادة الأسعار تدريجياً مع اكتسابك للخبرة وتوسيع محفظة أعمالك. 6. التواصل مع العملاء احرص على التواصل بفعالية مع العملاء المحتملين. تعلم كيفية كتابة مقترحات جذابة ومهنية، وتأكد من الرد بسرعة على الاستفسارات وتوضيح جميع التفاصيل بوضوح. 7. إدارة الوقت العمل الحر يتطلب إدارة جيدة للوقت وتنظيم المهام بشكل فعال. استخدم أدوات مثل Trello أو Asana أو تطبيقات تقويم لإدارة مشاريعك ومواعيد التسليم. 8. التطوير المستمر سعياً للبقاء في منافسة، عليك دائمًا تطوير مهاراتك ومعرفة أحدث الاتجاهات في مجالك. شارك في الدورات التدريبية عبر الإنترنت، واحضر الورشات والمؤتمرات المهنية. 9. التعامل مع الجوانب المالية احرص على تتبع دخلك ونفقاتك واستخدام أدوات مالية لإدارة حساباتك. قد تحتاج أيضًا لاستشارة محاسب أو خبير مالي للتأكد من الامتثال للضرائب والقوانين المحلية. 10. بناء شبكة علاقات تواصل مع مستقلين آخرين في مجالك، وشارك في المجتمعات والمنتديات ذات الصلة. هذا سيساعدك على تبادل الخبرات والحصول على فرص عمل جديدة. من خلال اتباع هذه الخطوات والتزامك بالاحترافية والجودة في عملك، يمكنك بناء مهنة ناجحة في العمل الحر. ----------------------------------------------- أفضل مجالات العمل الحر كما نعلم العمل الحر يتضمن مجموعة واسعة من المجالات التي يمكن للمستقلين العمل فيها. بعض هذه المجالات تكون أكثر طلبًا وأفضل من حيث العوائد والفرص المتاحة.. إليك أفضل مجالات العمل الحر التي يمكنك الاستفادة منها: 1- البرمجة وتطوير المواقع والتطبيقات تطوير الويب: HTML، CSS، JavaScript، React، Angular. تطوير التطبيقات: تطوير تطبيقات iOS وAndroid باستخدام Swift، Kotlin، Flutter. تطوير البرمجيات: باستخدام لغات مثل Python، Java، C. 2- التصميم الجرافيكي تصميم الشعارات والهويات البصرية. تصميم واجهات المستخدم (UI/UX). التصميم الإعلاني والمطبوعات. تصميم الجرافيك المتحرك (Motion Graphics). 3- التسويق الرقمي تحسين محركات البحث (SEO). إدارة حملات الإعلانات المدفوعة (PPC). إدارة وسائل التواصل الاجتماعي. كتابة المحتوى التسويقي. التسويق بالبريد الإلكتروني. 4- الكتابة والتحرير كتابة المقالات والمدونات. الكتابة التقنية. الكتابة الإبداعية. التحرير وتصحيح النصوص. كتابة النصوص التسويقية والإعلانات. 5- الترجمة والتحرير اللغوي الترجمة العامة والتخصصية. التدقيق اللغوي والتحرير. الترجمة الفورية. 6- إدارة المشاريع والأعمال إدارة المشاريع. الاستشارات الإدارية. دراسات الجدوى. تحليل الأعمال. 7. التعليم والتدريب الدروس الخصوصية عبر الإنترنت. تقديم الدورات التدريبية. إعداد المواد التعليمية. التدريب المهني والتطوير الشخصي. 8- التحليل المالي والاستشارات التحليل المالي. المحاسبة وإعداد التقارير. التخطيط المالي والاستشارات. إدارة الضرائب. 9- الإنتاج الإعلامي والفيديو تحرير الفيديو. تصوير الفيديو. إنتاج البودكاست. الرسوم المتحركة ثلاثية الأبعاد (3D Animation). 10- دعم العملاء والخدمات الافتراضية خدمة العملاء. المساعد الافتراضي. إدارة البريد الإلكتروني. إدخال البيانات. نصائح لاختيار المجال الأنسب لك: استفد من مهاراتك الحالية: اختر مجالًا يتوافق مع مهاراتك وخبراتك الحالية. ابحث في السوق: تعرف على الطلب على المهارات في السوق وأسعار الخدمات. التطوير المستمر: اختر مجالًا تستطيع فيه الاستمرار في التعلم والتطور. الشغف والاهتمام: اختر مجالًا تكون شغوفًا به لكي تستطيع الاستمرار فيه على المدى الطويل. بغض النظر عن المجال الذي تختاره، فإن التميز والاحترافية هما مفتاح النجاح في العمل الحر.
  22. وعليكم السلام ورحمة الله وبركاته، المفترض ان العلاقة بين جدول الإدارات أو الأقسام Sub_sections وجدول الموظفين Employees هي علاقة واحد إلى متعدد one-to-many أي كل سجل في جدول الإدارات يمكنه أن يرتبط بالعديد من السجلات بجدول الموظفين، وهذا منطقي لأن كل إدارة أو قسم يمكن أن يحتوي على موظف (واحد على الأقل) أو أكثر من موظف. ويتضح أيضًا من الصورة أن هناك علاقة ذاتية واحد إلى متعدد بين جدول الإدارات (الأقسام) ونفسه، بحيث كل قسم له قسم رئيسي، فهذه علاقة ذاتية تتم بين الجدول ونفسه في جملة الاستعلام، بحيث كل قسم يمكن أن يحتوي على عدة أقسام فرعية. ولكن ألاحظ وجود خطأ في العلاقة بين جدول الموظفين وجدول الإدارات، حيث يتم الربط بينهما بعلاقتين. ما السبب في هذا؟ المبرمج الذي وضع العلاقتين يقصد أن كل موظف له قسم رئيسي section_id وله قسم فرعي sub_section_id أيضًا لذلك قام بوضع علاقتين بين هذين الجدولين، في الحقيقة لا داعي لهذا لأنه يمكن معرفة القسم الرئيسي للموظف بمجرد أن عرفنا القسم الفرعي له (وذلك لأن القسم الفرعي يستطيع أن يصل إلى القسم الرئيسي الخاص به)، وبذلك يكفي الموظف معرفة القسم الفرعي ومنه يعرف القسم الرئيسي، فيتم الربط أولاً بين جدول الموظفين Employees وجدول الإدارات أو الأقسام Sub_sections ثم يتم الربط ثانيًا مع جدول الإدارات لمعرفة القسم الرئيسي. لذلك وجود علاقتين بين الجدولين بهذا الشكل خطأ كبير وكارثي يجب تجنبه إلا في حالات معينة نادرة (كأن ينتمي الموظف لقسمين في نفس الوقت).
  23. البارحة
  24. اعمل على تطبيق قاعدة بيانات Sqlite بالاندرويد ستوديو بلغة الجافا ، حيث يمكن للمستخدم تصدير بياناته في ملف خارجي عن التطبيق ثم اعادة استيراده منه وقت الحاجة ، لانني لاحظت كل ما قام المستخدم بتحديث التطبيق يتم مسح قاعدة البيانات القديمة بجميع بياناتها ، وهذا مشكل مزعج جداً
  25. السلام عليكم ورحمة الله وبركاته لدي علاقة في جدولين جدول موظفين وجدول الادارات ماذا يعني سهمين زرق رقم الإدارة مفتاح اجنبي لماذا اثنين مفاتيح يتم للربط ممكن توضيح
  26. لا يوجد ميعاد للإنتهاء من الدورة الدورة متاحة لك مدى الحياة. يمكنك التقدم لإجراء الامتحان بعد الانتهاء من 4 مسارات على الأقل من الدورة وتقديم ملفات المشاريع التى قمت بتنفيذها أثناء التطبيق مع المدرب فى هذه المسارات وسيتم اختبارك فى فى هذه المسارات فقط ولكن الأفضل الإنتهاء من كامل الدورة لتحصل على الفائدة الكاملة من الدورة لتنمية مهاراتك والتدريب على مشاريع مختلفة. وسيطلب منك تقديم المشاريع التى قمت بتنفيذها أثناء التطبيق مع المدرب فيمكنك عمل مجلد خاص لكل مسار وبداخل كل مجلد المشاريع الخاصة بهذا المسار ثم رفع كل مجلد على مستودع خاص به على GitHub وإرسال الروابط لتقديمها عن الطلب قبل إجراء اللإختبار. يمكنك التقدم للإختبار عن طريق التحدث مع مركز المساعدة وتحديد موعد للإختبار.
  27. تحتاج إلى إنهاء 4 مسارات على الأقل لدخول الإختبار و سيتم إختبارك في تلك المسارات فقط ولكن من المهم إنهاء الدورة بالكامل فالشهادة ليست أهم من تعلمك . يجب عليك رفع مشاريع تلك المسارات على منصة GitHub . ثم بعد ذلك تقوم بمراسلة مركز المساعدة وتوفير روابط المشاريع على GitHub ليتم مراجعتها، ثم تحديد موعد للإختبار ويمكنك الإختبار فى أى وقت تريد فقط بعد الإنتهاء من الدورة وحينما تكون جاهز يمكنك التقد للإمتحان في أو وقت ولا يوجد أى ديدلاين . ويمكنك مراسلة مركز المساعدة من خلال هذا الرابط لتقديم المشاريع التي قمت برفعها على منصة github ومن قم تحديد الامتحان .
  28. الدورة متاحة لك مدى الحياة وبالتحديثات الخاصة بها أيضًا، لكن من الأفضل تحديد موعد والإلتزام به وهو 6 أشهر لكي تتمكن من قياس تقدمك والتخطيط على أساس ذلك. والإختبار تستطيع التقدم إليه أكثر من مرة لحين اجتيازه، لكن من الأفضل الاستعداد جيدًا واستيعاب المشاريع التي قمت بتنفيذها قبل التقدم للإختبار لكي لا تضيع وقتك. بخصوص المطلوب منك ستجد تفصيل هنا:
  1. عرض المزيد
×
×
  • أضف...