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

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

  1. Ali Haidar Ahmad

    Ali Haidar Ahmad

    الأعضاء


    • نقاط

      9

    • المساهمات

      1068


  2. فاديا جميل

    فاديا جميل

    الأعضاء


    • نقاط

      5

    • المساهمات

      40


  3. Wael Aljamal

    Wael Aljamal

    الأعضاء


    • نقاط

      4

    • المساهمات

      6975


  4. Ali Ismael

    Ali Ismael

    الأعضاء


    • نقاط

      4

    • المساهمات

      96


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

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

  1. قطعت الطريقة التي تدير بها أجهزة الحاسوب البيانات شوطًا طويلًا على مدار العقود القليلة الماضية، كما يأخذ مستخدمي الحاسوب اليوم المزايا العديدة الموجودة في نظام قواعد البيانات أمرًا مسلَّمًا به على الرغم من عدم مرور وقت طويل على اعتماد أجهزة الحاسوب النظام القائم على الملفات File-based System والذي يُعَدّ النهج الأقل في الأناقة والتكلفة لإدارة البيانات. النظام القائم على الملفات يُعَدّ تخزين المعلومات في ملفات دائمة في الحاسوب إحدى طرق الحفاظ عليها، فمثلًا، يملك نظام الشركة عددًا من البرامج التطبيقية والمصمَّمة لمعالجة ملفات البيانات تلك، ثم توليد المخرجات والنتائج في ملفات أخرى، حيث تُصمَّم هذه البرامج بناءً على طلب المستخدِمين في المؤسسة، كما تضاف برامج جديدة إلى النظام عند الحاجة إليها، ويسمى هذا النظام بالنظام القائم على الملفات File-based System، فمثلًا، يمكن استخدام النظام القائم على الملفات لإدارة بيانات نظام مصرِفي تقليدي كما هو موضح في الشكل أدناه، حيث يوجد أقسام مختلفة في المصرِف، ولكل منها برامج خاصة لإدارة ومعالجة ملفات البيانات المختلفة، كما يمكن استخدام برامج لأداء عمليات عديدة في الأنظمة المصرفية، مثل: الخصم من الحساب أو ائتمانه، وإنشاء كشف برصيد الحساب، وإضافة قروض عقارية جديدة، وإنشاء كشوف حسابات شهرية. الشكل 1: مثال على نظام قائم على الملفات لبنك يستعمله لإدارة البيانات عيوب النظام القائم على الملفات يملك النظام القائم على الملفات والمستخدَم لحفظ المعلومات التنظيمية العديد من العيوب، والتي دفعت فيما بعد لتطوير أنظمة جديدة أكثر كفاءة، نذكر منها التالي: تكرار البيانات غالبًا ما تُنشأ ملفات البيانات الخاصة بالمؤسسة من طرف العديد من المبرمجين من أقسام مختلفة على مدى فترات طويلة من الزمن، مما يؤدي إلى تكرار البيانات عند تحديث أحد الحقول في أكثر من موضع واحد، حيث تسبب هذه العملية العديد من المشاكل، منها: عدم توحيد تنسيق البيانات. الاحتفاظ بالمعلومة نفسها في عدة أماكن مختلفة، أي ضمن ملفات مختلفة. عدم تناسق البيانات، وهو الموقف الذي تتعارض فيه النسخ المختلفة من البيانات نفسها، مما يُهدر مساحة التخزين ويضاعف الجهد. عزل البيانات عزل البيانات هو الخاصية التي تحدد متى وكيف تصبح التغييرات التي يتم إجراؤها بواسطة عملية معينة مرئيةً للمستخدِمين المتزامنين، والأنظمة المتزامنة الأخرى؛ ويؤدي حدوث أي مشكلة في مزامنة البيانات إلى صعوبة استرجاع البيانات المناسِبة من قِبل التطبيقات الأخرى التي تصل لنفس البيانات والتي ربما تكون مخزَّنة في عدة ملفات مختلفة. مشاكل السلامة تُعَدّ مشاكل سلامة البيانات عيبًا آخرًا لاستخدام النظام القائم على الملفات، حيث تشير سلامة البيانات data integrity إلى صيانة البيانات، والتأكد من صحة وتناسق البيانات الموجودة في قاعدة البيانات، حيث يجب مراعاة العوامل التالية أثناء معالجة هذه المشكلة: يجب على قيم البيانات استيفاء قيود تناسق معينة ومحدَّدة في برامج التطبيق. من الصعب إجراء تغييرات على برامج التطبيق من أجل فرض قيود جديدة. مشاكل الأمان يُعَدّ الأمان مشكلةً في النظام القائم على الملفات للأسباب التالية: وجود قيود تتعلق بالحصول على الصلاحيات. تُضاف متطلبات التطبيق إلى النظام بطرق مخصصة، لذلك من الصعب فرض القيود. الوصول المتزامن التزامن هو قدرة قاعدة البيانات على السماح لعدة مستخدِمين بالوصول للسجل نفسه دون التأثير سلبًا على معالجة المعامَلات. يجب على النظام القائم على الملفات إدارة التزامن وضبطه باستخدام برامج تطبيقية، حيث يُقفَل الملف ويُمنَع الوصول إليه عندما يفتحه تطبيق ما، مما يعني أنه لا يمكن لأي شخص آخر الوصول إلى ذاك الملف في الوقت نفسه آنذاك. تُدير أنظمة قواعد البيانات عملية التزامن من خلال السماح لعدة مستخدِمين من الوصول إلى السجل نفسه، ويُعَدّ هذا فرق مهم بين قواعد البيانات والأنظمة القائمة على الملفات. نظام قواعد البيانات دفعت الصعوبات الناشئة عن استخدام النظام القائم على الملفات إلى تطوير نظام جديد لإدارة الكميات الكبيرة من المعلومات التنظيمية، والذي يُسمى بنظام قاعدة البيانات. تلعب قواعد البيانات وتقنيتها دورًا مهمًا في معظم المجالات التي تُستخدَم فيها أجهزة الحاسوب، بما في ذلك الأعمال التجارية، والتعليم، والطب، وغيرها، وسنبدأ في هذا المقال بتقديم بعض المفاهيم الأساسية المتعلقة بهذا المجال لفهم أساسيات أنظمة قواعد البيانات. دور قواعد البيانات في إدارة الأعمال يستخدِم الجميع قواعد البيانات بطريقة أو بأخرى، حتى ولو كانت استخدامات بسيطة مثل تخزين معلومات عن أصدقائهم وعائلاتهم فقط، كما يمكن تدوين هذه البيانات أو تخزينها على جهاز حاسوب باستخدام برنامج معالجة النصوص، أو يمكن حفظها على صورة جداول، ومع ذلك فإنّ أفضل طريقة لتخزين البيانات هي استخدام برامج إدارة قواعد البيانات، وهي أدوات برمجية قوية تسمح لك بتخزين البيانات، ومعالجتها، واسترجاعها بعدة طرق مختلفة. تتتبّع معظم الشركات معلومات العملاء من خلال تخزينها في قاعدة بيانات، وقد تشمل هذه البيانات العملاء، أو الموظفين، أو المنتجات، أو الطلبات، أو أي شيء آخر يساعد الشركة في تنفيذ مهامها. معنى البيانات تُعَدّ البيانات Data معلومات واقعيةً، مثل: القياسات، أو الإحصائيات حول الأشياء والمفاهيم، كما تُستخدَم للمناقشات، أو على أساس جزء من العمليات الحسابية، و يمكن أن تكون هذه البيانات شخصًا، أو مكانًا، أو حدَثًا، أو إجراءً، أو أي شيء آخر، حيث تُمثِّل كل معلومة أو حقيقة معينة عنصرًا من عناصر البيانات أي data element. إذا كانت البيانات معلومات، وكانت المعلومات هي ما نعتمد عليه في العمل، فيمكنك البدء في معرفة المكان الذي قد تخزِّن هذه البيانات فيه، فمثلًا، يُمكن تخزين البيانات في: ملفات تخزين مخصصة جداول البيانات المجلدات الدفاتر القوائم الأوراق تخزِّن كل هذه المواد المعلومات وكذلك قاعدة البيانات. بسبب الطبيعة الميكانيكية لقواعد البيانات، نجد أنَّ لها مقدرة كبيرة على إدارة ومعالجة المعلومات المُخزَّنة فيها، مما يجعل هذه المعلومات أكثر فائدة لعملك. يمكننا البدء من خلال هذا الفهم للبيانات في رؤية كيف يمكن لقاعدة البيانات تخزين مجموعة من البيانات، وتنظيمها، وإجراء بحث سريع عليها، واسترجاعها، ومعالجتها. ويتضمن هذا الكتاب والفصول التالية الكثير من التفاصيل عن أنظمة إدارة قواعد البيانات وكيفية التعامل معها. مصطلحات أساسية التزامن Concurrency: هو قدرة قاعدة البيانات على السماح لعدة مستخدمين من الوصول إلى السجل نفسه دون التأثير سلبًا على معالجة المعاملات. عنصر البيانات Data element: حقيقة أو معلومة واحدة. عدم تناسق البيانات Data inconsistency: الحالة التي تتعارض فيها النسخ المختلفة للبيانات نفسها. عزل البيانات Data isolation: الخاصية التي تحدد متى وكيف تصبح التغييرات التي تجري بواسطة عملية معينة مرئيةً للمستخدِمين المتزامنين والأنظمة المتزامنة الأخرى. سلامة البيانات Data integrity: يشير إلى الصيانة والتأكد من أن البيانات في قاعدة البيانات صحيحة ومتّسقة. تكرار البيانات Data redundancy: حالة تحدث في قاعدة بيانات عندما يحتاج أحد الحقول إلى التحديث في أكثر من جدول. نظام قاعدة البيانات Database approach: يسمح بإدارة كميات كبيرة من المعلومات التنظيمية. برامج إدارة قواعد البيانات Database management software: أداة برمجية قوية تتيح لك تخزين البيانات، ومعالجتها، واسترجاعها بطرق مختلفة. النظام القائم على الملفات File-based system: برنامج تطبيق مصمَّم للتعامل مع ملفات البيانات. تمارين ناقش كل من المصطلحات التالية: البيانات الحقل السجل الملف ما هو تكرار البيانات؟ ناقش عيوب النظام القائم على الملفات. اشرح الفرق بين البيانات والمعلومات. استخدم الشكل أدناه للإجابة على الأسئلة التالية: كم عدد السجلات التي يحتوي عليها الملف؟ كم عدد الحقول في كل سجل؟ ما المشكلة التي قد تواجهها إذا أردت إنشاء قائمة مرتبة حسب المدينة؟ كيف يمكنك حل هذه المشكلة عن طريق تعديل هيكلة الملف؟ table { width: 100%; } thead { vertical-align: middle; text-align: center; } td, th { border: 1px solid #dddddd; text-align: right; padding: 8px; text-align: inherit; } tr:nth-child(even) { background-color: #dddddd; } PROJECT_CODE PROJECT_MANAGER MANAGER_PHONE MANAGER_ADDRESS PROJECT_BID_PRICE 21-5Z Holly B. Parker 904-338-3416 3334 Lee Rd., Gainesville, FL 37123 $16٬833٬460٫00 25-2D Jane D. Grant 615-898-9909 218 Clark Blvd., Nashville, TN 36362 $12,500٬000٫00 25-5A George F. Dorts 615-227-1245 124 River Dr., Franklin, TN 29185 $32٬512٬420٫00 25-9T Holly B. Parker 904-338-3416 3334 Lee Rd., Gainesville, FL 37123 $21٬563٬234٫00 27-4Q George F. Dorts 615-227-1245 124 River Dr., Franklin, TN 29185 $10٬314٬545٫00 29-2D Holly B. Parker 904-338-3416 3334 Lee Rd., Gainesville, FL 37123 $25٬559٬999٫00 31-7P 0/11liam K. Moor 904-445-2719 216 Morton Rd., Stetson, FL 30155 $56٬850٬000٫00 جدول التمرين رقم 5 ترجمة وبتصرف للفصل Chapter 1 Before the Advent of Database Systems من كتاب Database Design لصاحبه Adrienne Watt. اقرأ أيضًا المقال التالي: المفاهيم الأساسية في قواعد البيانات وتصميمها شرح الفروقات بين قواعد بيانات SQL ونظيراتها NoSQL مقارنة بين أنظمة إدارة قواعد البيانات العلاقية: SQLite مع MySQL مع PostgreSQL النسخة العربية الكاملة لكتاب تصميم قواعد البيانات
    1 نقطة
  2. مافائدة استخدام اسم مستعار للجدول وهل يوجد حالات يكون من الضروري استعمال اسم مستعار؟ aliases table name
    1 نقطة
  3. failure: build failed with an exception. * where: build file 'c:\users\attia with us\ttabook_app\android\app\build.gradle' line: 77 * what went wrong: could not compile build file 'c:\users\attia with us\ttabook_app\android\app\build.gradle'. > startup failed: build file 'c:\users\attia with us\ttabook_app\android\app\build.gradle': 77: expecting '}', found '' @ line 77, column 1. 1 error * try: run with --stacktrace option to get the stack trace. run with --info or --debug option to get more log output. run with --scan to get full insights. * get more help at https://help.gradle.org build failed in 26s running gradle task 'assemblerelease'... 29.0s gradle task assemblerelease failed with exit code 1 ما الحل أريد أستخراج ملف apk لرفعه علي جوجل بلاي
    1 نقطة
  4. لدي ضغط عالي على المخدم و اريد استخدام أكثر من مخدم لتخديم الموقع، كيف يمكنني توزيع زيارات المستخدمين على المخدمات المختلفة لدي؟
    1 نقطة
  5. كيف يمكننا أن نقرأ ونستعرض صورة في Matplotlib ؟
    1 نقطة
  6. أريد أن أقوم برسم خط على صورة يصل من حافة إلى أخرى، كيف يمكنني القيام بذلك؟
    1 نقطة
  7. لدي جدول بأسماء مهندسي حاسوب وجدول آخر بأسماء لغات البرمجة التي يجيدونها، كيف أستطيع جلب أسماء لغات البرمجة التي يجيدها كل منهم مهندس Engineers Name Age -------- wael 24 walid 21 wasim 19 ProgramingLanguages Name LanguageName ----------------- wael c++ wael java wael php walid java walid javascript wasim c# wasim asp.NET
    1 نقطة
  8. لدي جدول طلبيات البيتزا وكل طلبية لها حالة status فما هو أفضل تمثيل لها كنمط بيانات في الجدول pizza_orders id : int(11) PK location: varchar(255) quantity: int(2) status : ????????? حيث لدي عدة حالات مثل استلام - قيد التوصيل - قيد الطهي - في الانتظار..
    1 نقطة
  9. أريد توضيح أكبر للمرشح medianBlur وهل هناك إمكانية للتعامل مع حدود الصورة، فمن خلال قراءتي عنها فهمت أنه يتم تمرير القناع (النواة أو الكيرنل Kernal) ذات الحجم الفردي k*k على بكسلات الصورة (عن طريق الالتفاف convlution على بكسلات الصورة) حيث يتم أخذ الوسيط لهذه البكسلات. واستبدال البكسل المركزي بقيمته. وأنه مفيد جداً مع الصور التي تعاني من ضجيج Salt& Pepper . لكن ماذا بشأن البكسلات الحدودية أي مثلاً ماذا يحدث للصفين الأولين ، حيث لا يمكن أن يكون هناك عناصر في الصفين الأولين والتي تمثل العنصر المركزي لأي نافذة؟ أي مثلاً هنا في حال تطبيق نواة 3*3 سيتم استبدال العنصر المركزي 14 بالعنصر الوسيط 13. لكن ماذا عن الحدود؟ كيف سيتم التعامل معها؟ [[12, 3, 22, 16, 17], [ 6, 13, 0, 12, 1], [25, 18, 14, 19, 23], [ 7, 11, 15, 10, 5], [12, 13, 5, 4, 0]]
    1 نقطة
  10. خريطة التمثيل اللوني ثنائية الأبعاد هي أداة عرض بيانات تساعد على تمثيل حجم الظاهرة في شكل ألوان. وفي بايثون ، يمكننا رسم خرائط حرارية ثنائية الأبعاد باستخدام حزمة Matplotlib. وتحديداً من خلال الدالة imshow مع تحديد الوسيط autumn كقيمة للوسيط cmap (أو hot) الذي يمثل الخريطة اللونية: import numpy as np import matplotlib.pyplot as plt # توليد بيانات عشوائية data = np.random.random(( 20 , 20 )) # imshow استخدام الدالة plt.imshow( data , cmap = 'autumn' , interpolation = 'nearest' ) # وضع عنوان plt.title( "2-D Heat Map" ) plt.show() والنتيجة: أو من خلال الدالة pcolormesh حيث نمرر لها البيانات واسم الخريطة اللونية كما يلي: import matplotlib.pyplot as plt import numpy as np data = np.random.rand( 20 , 20 ) plt.pcolormesh( data , cmap = 'hot' ) plt.title( '2-D Heat Map' ) plt.show() كما يمكنك استخدام الدالة heatmap من seaborn كالتالي: import numpy as np import seaborn as sns import matplotlib.pylab as plt data = np.random.rand( 20 , 20 ) ax = sns.heatmap( data , cmap = 'hot' ) plt.title( "2-D Heat Map" ) plt.show()
    1 نقطة
  11. لقراءة الصورة من خلال Matplotlib يمكنك استخدام الدالة imread من الوحدة image: matplotlib.image.imread(path) أما لعرضها فنستخدم التابع imshow من الوحدة pyplot: matplotlib.pyplot.imshow(X, cmap=None, alpha=None) # X: الصورة # cmap: اسم خريطة الألوان التي تريد استخدامها # alpha: شفافية الصورة وتأخذ قيمة بين 0 و 1 مثال لقراءة وعرض صورة: import matplotlib.pyplot as plt from matplotlib.image import imread # تحديد المسار path="/content/test1 closedeye.jpg" # قراءة الصورة img = imread(path) # عرضها plt.imshow(img) النتيجة: وعموماً يمكنك استخدام طرق أخرى للقراءة والعرض مثلاً من خلال الحزمة PIL: from PIL import Image image = Image.open(path) image.show() أو من خلال الحزمة IPython : from IPython.display import display, Image im=Image(filename=path) display(im) لكن الأفضل استخدام Matplotlib فهي توفر لك الكثير من الخيارات.
    1 نقطة
  12. تثور في ذهنك أسئلةً كثيرةً عندما تختار العمل الحر بوصفك كاتبًا أو غير ذلك، وسترتكب العديد من الأخطاء وتواجهك عقبات عليك اجتيازها. لكن يستحق الأمرُ في نهاية المطاف تحمُّلَ كل ذلك فقد يمثّل امتهانُ العمل الحر تجربةً رائعةً، ويغير حياتك نحو الأفضل. حيث يمكنك العثور على أجوبة لتلك الأسئلة التي تخطر على بالك في مستهلّ مشوارك هذا والتغلّب على تلك العقبات بكل سهولة ويُسر باتباعك نصائح العمل الحر التالية الموجهة للمبتدئين. إذا كان لديك أسئلةً حول كيفية البدء بالعمل الحر للمبتدئين فستجد الإجابة في هذا المقال. وإذا كنت تبحث عن النصيحة وبعض التوجيه فاجعل من هذه النصائح البوصلة التي تهتدي بها. 1. أنشئ معرض أعمال أو موقعا إلكترونيا واحصل على شهادات مكتوبة يتجه العديد من المستقلين المتحمسين -مباشرةً ودون تروٍّ- إلى التقديم على المشاريع المعروضة وإرسال رسائل بريد إلكتروني للعملاء، لكن عليك -قبل أن تحذوَ حذوَهم- إنشاء معرض أعمال لك على الإنترنت خاصةً بالكتابة، أو موقعًا إلكترونيًا، أو مدوّنةً شخصيةً. فكر في ذلك بوصفه أشبَه بشراء مكتب للعمل قبل إطلاق عملك التجاري الجديد، إذ ينظر رؤساءُ التحرير بجدية أكبر بكثير إليك بوصفك مستقِلًا إذا كان لديك معرض أعمال أو موقعًا إلكترونيًا أو مدونةً. يمكنك إنشاء معرض أعمالك بالاستعانة بمنصة مستقل واستخدامه للتسويق لمهاراتك. أضف صورةً لك يظهر فيها وجهك فقط، وروابطًا إلى حساباتك على منصات التواصل الاجتماعي، وإلى سيرتك الذاتية، وأيَّ أعمال كتابة منشورة كنتَ قد أنجزتها في السابق. وإذا لم يكن لديك أعمالًا منشورةً بعد، فعلى الأقل لديك الوقت لتحقيق ذلك، إذ يمكنك إضافة أي أعمال إضافية لك في أي وقت لاحق. كما يُعد إنشاء مدونتك الخاصة نصيحةً ممتازةً في العمل الحر للمبتدئين، لأنها تُظهرك شخصًا مُنظّمًا وطَموحًا. كما تمثّل المدونة طريقةً لنشر أعمالك بنفسك لأنك أنت الذي تنشرها. وإذا كنتَ مصورًا فوتوغرافيًا، أو مُحرِّرًا، أو صانع أفلام مستقلًا، فاجعل قناتك على يوتيوب، أو حسابك على إنستغرام، بمثابة معرض أعمالك. (ومع ذلك ما نزال ننصحك بإنشاء موقع إلكتروني شخصي مناسب يحتوي على روابط إلى صورك وفيديوهاتك، مما يجعل الأمر أكثر احترافية). 2. لا تفسد الأسابيع الهادئة بالقلق قد يصعب عليك كثيرًا في البداية الاعتياد على التدفق والانحسار اللذَين يسودان عالم العمل الحر. إذ لا يفارقك -في هذا المجال- الخوف من خسارة العمل، أو الخوف من ألا تحصل عليه. لكنك ستعتاد على ذلك في نهاية المطاف، وستشعر بأنك أصبحت متمرِّسًا كفايةً لاجتياز ذلك الشعور، وبأن مزيدًا من العمل والمال آتيان إليك لا محالةً. فمن الطبيعي والمتوقع أن يمرّ أسبوع لا يأتيك فيه أي عمل، ثم يأتي آخر تعمل فيه إلى منتصف الليل، وفي أيام العطلة الأسبوعية حتى. لا تبذل جهدًا مُضنيًا خلال الأسبوع الذي لا يكون لديك عمل فيه، بل حاول ببساطة أن تسترخيَ وتستمتع بالاستراحة تلك، أو ركّز على أداء مهام بسيطة لا تنفكّ تستهلك الوقت، مثل إرسال بريد إلكتروني، أو إدارة أمورك، أو تطوير حساباتك على منصات التواصل الاجتماعي. سيخبرك معظم المستقلين المتمرّسين أنه يندر أن يمرّ في حياة المستقل أسبوع متوازن على النحو المطلوب، إذ ستمر عليك أيام لا يكون لديك فيها ما تنجزه، وأخرى لا تجد وقتًا كافيًا للانتهاء من كل الأعمال المُلقاة على عاتقك. يترافق الوقتان المذكوران أعلاه مع الضغط النفسي ذاته، وإن اختلفت طبيعته بينهما؛ ولكن هذا الضغط أهون بكثير من ذلك المرتبط بمعظم الوظائف التقليدية التي تتقاضى عنها راتبًا شهريًا (بحسب رأينا). 3. الرفض أمر طبيعي لا مجال لتجنّب الرفض فهو أمر عادي وطبيعي عند المستقلين، حيث يتطلب الأمر بعض الوقت حتى يستوعب كل مستقل حقيقةً مفادها أنَّه عندما يلتزم المحررُ الصمتَ تجاه عرض قدمه المستقل، فلا يعني ذلك انتقاصًا من قيمته بوصفه كاتبًا (أو مصوِّرًا أو محرِّرًا أو عاملًا في أي مجال كان). عندما يُرفَض أحد عروضك أو يُقابَل بالتجاهُل فتعلّم كيف تستغل ذلك الموقف لصالحك، ولا تُضِع وقتك في النحيب أو جَلد الذات، إذ يستقبل المحررون مئات من رسائل البريد الإلكتروني اليومية، وليس عمليًا الإلحاح بالتواصل مجددًا مع كل منهم، بل هم من يقررون فعل ذلك. عليك الاكتفاء بتقديم العرض ذاته مجددًا لمحرر آخر، وبذلك يكفي أن تُحسِّنَ القسم الرئيس من رسالة البريد الإلكتروني التي سبق وأرسلتها إلى أحد المحررين، أو تجاهَل ذلك العرض، وابدأ العمل على عرض جديد ترسله للمحرر ذاته أو لغيره. تجعلك هذه الطبيعة المتذبذبة للعمل الحر تُتقن التكيّف وتكون مرنًا في التعامل مع المواقف التي تعترضك فيه فهو مجال تسوده الإثارة والحماس، لكنه يُضني القلب. صدِّقنا عندما نقول إنَّك ستواجه الرفضَ مهما كنتَ متمرِّسًا، إذ يحدث ذلك معنا يوميًا. فكِّر في الأمر وكأنك تسقط من شاهق: اثنِ ركبتيك وتشقلَب نحو الأمام وحافظ على الزَّخَم، لا تتوقف عن التقدّم. 4. زد مدخراتك وانتبه لأمورك المالية يمثل هذا حقيقةً عالميةً حول العمل الحر لا يستسيغُها الجميع -لأنها تعني أن امتلاك امتياز يُعد مستحيلًا بالنسبة لبعض المستقلين الناشئين- أو على الأقل حقيقة مُحبِطة وصعبة التقبُّل، وبذلك فعندما تمتهن العمل الحر تغدو بحاجة إلى صمّام أمان مالي. والحقيقة المُرّة أنك بحاجة إلى تجميع بعض المدخرات قبل البدء بالعمل الحر، وهو ما يجعلك تأخذ بالحسبان كم من الوقت تحتاج وسطيًا لتبدأ كسب المال بوصفك مستقلًا ولتبدأ بجنيه بانتظام. وتُعد هذه النصيحة من النصائح الجيدة -والقاسية رغم ذلك- للمستقلين المبتدئين وهي أن يكون لديهم مال كاف للإنفاق منه لمدة شهرين على الأقل وذلك لاستئجار مكان للإقامة فيه، ولشراء الطعام ودفع الفواتير، قبل أن يبدؤوا العمل الحر، وذلك تجنبًا للوقوع في أي مشاكل قد يسببها عدم حصولهم على المال من العمل المستقل بالسرعة التي تأمّلوها. إنه لأمرٌ مزعج، لأنه قد يعني أولًا: البقاء في عمل تكرهه مدةً أطول مما أحببت. ثانيًا: العثور على عمل جزئي لتأمين تمويل لأيامك الأولى بوصفك مستقلًا. ثالثًا: العيش مع أهلك، أو أحد أصدقائك إذا لم يكن هناك وظائف، أو إذا لم يكن لديك أي مدخرات. يؤكد ذلك على الحقيقة الثابتة القائلة إنّ العمل الحر نوع مميز من العمل بالنسبة للعديد منا، فمن الصعب ادخارُ المال على الغالبية العظمى منا من الذين يواجهون صعوبات في تغطية التزاماتهم المالية، ويعني هذا أنّ البدء بالعمل الحر أمر شبه مستحيل. سيكون عظيمًا لو تمكنت من ادخار ما يكفي من المال لإنفاقه على معيشتك لمدة شهرين قبل أن تبدأ العمل الحر، أو لو استطعت الاستمرار في العمل بدوام جزئي بالتوازي مع إرسالك العروض وبناء معرض أعمالك. فهذا الأمر أساسي للمبتدئين الذين يتجهون نحو العمل الحر. 5. ليكن لديك دائما عملاء متعددون لا بد أنك سمعت بالقول المأثور "لا تضع كل البيض في سلة واحدة". فقد ذكرنا سابقًا في هذا المقال كيف أنّك قد تمضي أسبوعًا في العمل المستقل دون الحصول على أي عمل يليه أسبوع قد تعمل فيه طوال الوقت. ويكون عليك بذلك أن تضمن الحفاظ على الوفرة في أسابيع العمل لكي تغطي انقطاعك عن العمل في الأسابيع الأخرى. يسبب وجود عدة عملاء تنفذ لهم المهام التي يكلفونك بها لك الضغط. ويعني ذلك إرسال الكثير من رسائل البريد الإلكتروني واستقبالها، واتباع أساليب وقيود مختلفة. كما ينطوي ذلك على التعامل مع الفواتير، واستخدام كثير من دفاتر تدوين الملاحظات وجداول البيانات لتعقّب كل شيء. ولكن يستحق الأمر في نهاية المطاف كل ذلك لضمان أنه عندما تمر عليك أسابيع لا تحصل فيها على عمل، فتكون جاهزًا للتعامل معها لأنك تكون قد أمضيت أسابيعًا مُرهقة في كسب مبلغ لا بأس به من المال من عدد من العملاء المختلفين. وحتى لو أخبرك جميع أولئك العملاء في الوقت ذاته بأنهم لا يريدون أن تنفّذ لهم أي عمل لمدة شهر كامل، تكون قد جمعت من المال ما يكفي للتكيف مع ذلك، بالتوازي مع بحثك عن عملاء جدد. ولكن المرجّح أنك لن تمر بمثل ذلك السيناريو، بل يغلب أن تعمل أسبوعًا لصالح أحد عملائك، ثم أسبوعًا آخر لعميلين اثنين، ثم أسبوعًا لعميل ثالث، وهكذا. يعني عملُك لصالح عدة عملاء أن العمل لن يتوقف. وإذا توقف الاتصال أو التعاون بينك وبين أحدهم، تكون قد حصلت على عمل ومال من العملاء الآخرين، وصار لديك متسع من الوقت للبحث -بعيدًا عن الضغط- عن بديل للعمل الذي خسرته. وبينما يبدو مغريًا أن تحصل على عرض عمل مُجزٍ بدوام كامل عن بُعد، فلتفكر فيما إذا كان الأمر يستحق العناء في حال لم يكن لديك ما تفعله إلى جانب ذلك. ولا تنسَ الحفاظ على التوازن بين حياتك وعملك إذا كان ذلك ممكنًا. 6. كرس وقتا للإدارة تُعد الإدارة من أهم المهارات التي عليك إتقانها بوصفك مستقلًا في بداية طريقه. إذ يأخذ هذا الأمر وقتًا أطول مما تظن، كما أنه عمل غير مدفوع الأجر عليك إنجازه. احرص على تكريس وقت لإعداد الفواتير وتعقّبها، ومواكبة أمورك المالية. وقد تغدو يومًا ما في وضع يفرض عليك أن تعهد ببعض مهام الإدارة الخاصة بك إلى مصادر خارجية تتولاها نيابةً عنك (مثل المساعد الافتراضي). أما الآن، فلتعط أولويةً لتطوير مهاراتك في هذا الشأن. لا تستهن بالوقت الذي يتطلبه هذا العمل، فقد تمضي أسبوعًا كاملًا وأنت تنجزه، دون أن تفعل شيئًا غير ذلك. وقد تصادف نكتةً على تويتر حول القوة الذهنية التي يتطلبها إرسال رسالة بريد إلكتروني، وإذا لم تستوعبها الآن، فسرعان ما ستفعل. 7. صنف أسعارك هناك إيجابيات وسلبيات للعمل المجاني عند بداية عملك بوصفك مستقلًا. وعلى أي حال، إنه أمر سيء أخلاقيًا وينبغي ألا يحدث، لكن له فوائد لا يُمكن إنكارُها وإن كانت قليلةً. وحالما تتوقف عن العمل مجانًا يغدو لزامًا عليك التفكير سريعًا في الأسعار التي ستتقاضاها. عندما نبدأ العمل بوصفنا مستقلين، فنادرًا ما يكون لدينا فكرةً عن الأسعار التي ينبغي طلبها، ونكون مستعدين للرضا بأسعار زهيدة. عظيمٌ ذلك الشعور الذي ينتابنا عندما يُدفَع لنا المال لقاء عملنا هذا. ولكنك سرعان ما ستدرك كم تستحق أن تتقاضى عن عملك الحر، وستبدأ بطلب أسعار مُنصفة لا تبخس عملَك حقه. لا تخش إعلام المحررين والعملاء بالأسعار التي تتقاضاها. وإذا رأوا أن أسعارك مرتفعةً فيعود لك الخيار في التفاوض على ذلك من عدمه، وعلى سبيل المثال قد تختار العمل مقابل سعر منخفض عن الذي تتقاضاه عادةً في حال كان المنشور الذي ستكتبه ضمن مجال تحبه وتريد أن يُذكَر اسمك فيه. ليس هناك قاعدةً ثابتةً حول الأسعار التي يتقاضاها المستقلون الذين يزاولون العمل الحر. ولكن إن كان هناك واحدةً فمبلغ 10 دولار مقابل كل 1000 كلمة (للعاملين في الكتابة) تُعدّ صفقةً جيدةً. أما لو طُلِبَ إليك تقديم عمل غزير الإنتاج فيمكنك طلب أكثر من ذلك بكثير دون أي تردد. 8. لا تنس الضرائب والمصاريف إذا كنت من بلد حيث تُفرَض الضرائب تلقائيًا ما دُمت موظَفًا (مثل المملكة المتحدة)، فابدأ بالتفكير في الضرائب الشخصية من الآن فصاعدًا. عليك تسجيل نفسك بوصفك موظفًا ذاتيًا، وإذا طُلِبَ منك اسم الشركة، فاستخدِم اسمك. بمجرد أن تُسجَّل على أنك موظف ذاتي، ابدأ بملء الوصولات (أو الفواتير) وتعقُّبِها. تعقَّب كل مبلغ من المال تحصل عليه، ودَوِّن كل ما تدفعه، والذي قد يُشمَل بالمصاريف عندما يأتي وقت دفع الضريبة (ستُفاجأ بما قد تُطالَب به بوصفه مصاريف). 9. اعثر على مجتمعك الافتراضي تُعد هذه واحدة من أهم النصائح التي تُسدى للمستقلين المبتدئين أو بالأحرى ليس فقط للمبتدئين. إذ لا غنى عن الانضمام إلى مجتمع افتراضي على الإنترنت بالنسبة للمستقلين من جميع المستويات، والخلفيات، وبصرف النظر عن سنين الخبرة التي لديهم. إذ يساعدك انضمامك إلى مجموعات فيسبوك، ومجتمعات تويتر، والمنتديات في العثور على محتوى لا نهائي من النصائح الخاصة بالعمل الحر والتوجيه والدعم. كما ستلتقي على تلك المنصات بمحررين وستنشئ قائمةً بجهات اتصال، وتبقى مُطلعًا على الفرص الجديدة، وتعثر على كُتّاب آخرين تدعوهم للعمل معك. تُمثّل تلك المجموعات مصادرًا قيّمةً للدعم العاطفي والعملي للمستقلين، وكذلك مصادرًا للعمل والمال الحقيقيين، وتتمكن بذلك من نسج صلات شخصية ومهنية طوال الوقت. ولذا أشهِر نفسَك وابدأ بالتواصل مع الآخرين. ولا تخجل من أن تطلب المساعدة أو النصيحة. 10. تابع التعلم يساعدنا جو العمل -بكل قواعده، وطقوسه وروتينه- في التركيز والحفاظ على الزخم يومًا بيوم وهذا أمر مفاجئ. وعلى كل حال ينطوي العمل من المنزل بوصفك مستقلًا على تعلم التحفيز الذاتي. لا نقصد عندما نذكر التحفيز هنا فقط ما له علاقة بالمهام العامة الملقاة على عاتقك والإدارة وإكمال الوظائف الموكَلة إليك. بل نقصد أيضًا التحفيز الخاص بالتعلم وبناء معرض أعمالك. إذ عليك مواكبة التوجهات الحديثة وتعلم استخدام أنواع جديدة من البرمجيات، وحتى أنواع جديدة من وسائل التواصل الاجتماعي. يُعد أفضل سبيل لفعل ذلك هو البقاء نشطًا على المجتمعات الإلكترونية، ومتابعة النشرات الإخبارية والاشتراك فيها، وزيارة مواقعًا إلكترونيةً مثل موقعنا هذا، والاستماع إلى مدونات صوتية، وحضور دروس على منصات تعليمية مختلفة، ومشاهدة محتوى كاف من قنوات يوتيوب المفيدة وذات الصلة. 11. غامر باستكشاف مجالات جديدة إنها إحدى نصائح العمل الحر التي قد يتطلب تطبيقها بعض التروي خلال مسيرتك في هذا المجال. إذ تعتمد المدة التي ينبغي أن تمضيها قبل الأخذ بهذه النصيحة على عوامل عديدة، منها مدى التنظيم الذي تتمتع به ومدى ارتياحك والنجاح الذي تحققه. قد لا تغدو هذه النصيحة ممكنة التطبيق قبل خمس سنوات من مباشرتك العمل الحر، أو قد تتمكن من ذلك بعد ستة أشهر من ذلك، فنحن مختلفون. إذًا، يمكن أن تصل في النهاية إلى نقطة تغدو معها الكتابة (أو التصوير أو أي عمل لديك مهارةً فيه) غير كافية. فقد يكون المال الذي تكسبه منها كافيًا، لكن طموحك يكبر، وهو أمر جيد. فقد ترغب -إذا وصلت إلى هذه النقطة- في استكشاف مجالات جديدة لكسب المال، إذ قد يأتي وقت تريد فيه إنشاء مدونة صوتية، أو قناة على يوتيوب، أو مدونة في حال لم يكن لديك واحدةً. أما إذا كان لديك مدونة تدر عليك المال، فقد تفكر في إنشاء أخرى. بل قد يصل بك الأمر إلى محاولة تأليف كتاب. ما دمت تعمل من منزلك في مجال العمل الحر فإن الوقت ملكك. فإذا كان دخلك جيدًا، وعملك مستقرًا، فلتفكر في استغلال وقت فراغك لاستكشاف مجالات أخرى غير مجالك الحالي. اشترك في دورات مدفوعة على الإنترنت ضمن المجالات التي تهمك، وابدأ العثور على مجالات مالية وإبداعية جديدة. ترجمة -وبتصرّف- للمقال 10 Essential Freelancer Tips for Beginners لأصحاب الموقع. اقرأ أيضًا مهارات البيع وجذب العملاء وأهميته في بدء العمل الحر تعرف على منصات العمل الحر والعمل عن بعد الدخول إلى سوق العمل الحر على الإنترنت
    1 نقطة
  13. يمكنك استخدام الدالة line كما يلي: cv2.line(image, start_point, end_point, color, thickness) حيث أن الوسيط الأول يمثل الصورة، والوسيط الثاني يمثل إحداثيات نقطة البداية للخط (X coordinate value, Y coordinate value)، والوسيط الثالث إحداثيات نقطة النهاية، بينما الوسيط الرابع يمثل لون الخط المطلوب، أما الرابع فهو سماكته بواحدة البكسل. مثال: import cv2 import numpy as np # تحديد إحداثيات نقطة البداية x1, y1 = 0, 0 # نقطة النهاية x2, y2 = 200, 400 # إنشاء صورة عشوائية image = np.ones((height, width)) * 255 # تحديد سمك الخط line_thickness = 2 # رسم الخط cv2.line(image, (x1, y1), (x2, y2), (0, 255, 0), thickness=line_thickness) مثال آخر: import cv2 # مسار الصورة path = '/content/test1 closedeye.jpg' # قراءتها image = cv2.imread(path) # اسم للنافذة التي ستعرض ضمنها الصورة window_name = 'Image' # إحداثيات نقطة البدء # الزاويا العليا اليسارية start_point = (0, 0) # إحداثيات النهاية (250, 250) end_point = (250, 250) # الزاويا السفلى اليمينية # تحديد اللون الأحمر color = (0, 0, 255) # سمك الخط thickness = 2 # تطبيق التابع image = cv2.line(image, start_point, end_point, color, thickness) # عرض الصورة #cv2.imshow(window_name, image) from google.colab.patches import cv2_imshow cv2_imshow(image) الخرج:
    1 نقطة
  14. السلام عليكم اريد عمل سيرفر لتكون قاعدة البيانات عليه من نوع postgres ما هي موصفات السيرفر لاستخدام ١٠٠٠ مستخدم للاتصال به في اليوم على اوقات متفرقة وما هي البرامج اللازمة لادارته وتأمينه وعمل نسخ احتياطية لقاعدة البيانات نظام التشغيل ubuntu
    1 نقطة
  15. لدي جدولين وأريد تكرار كل سطر من الجدول الثاني مع كل سطر من الجدول الأول
    1 نقطة
  16. قمت بكتابة دالة بايثون لتعديل بيانات ومعلومات مدخله في قاعدة البيانات def update(self): con = pymysql.connect( host = 'localhost', user = 'root', password = '', database = 'employ') cur = con.cursor() cur.execute("update employees set family_members=%s, social_status=%s, gender=%s, date_birth=%s, id_number=%s, mail=%s, name=%s where id=%s",( self.family_members_var.get(), self.social_status_var.get(), self.gender_var.get(), self.date_birth_var.get(), self.id_number_var.get(), self.mail_var.get(), self.name_var.get(), self.id_var.get() )) con.commit() self.fetch_all() self.clear() con.close() وخرج لي الخطأ التالي : pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1")
    1 نقطة
  17. عندي مشكلة في لغة HTML أحاول كتابة العربي مع الانجليزي في تاج واحد وعندما أذهب الي الموقع لأري الناتج أجد أن الكلام ليس كما كتبته يعني الكلام ما يكون مترتب مثل ما كتبته ما سبب هذا مع أنني استخدمت LANG = AR , DIR = RTL وهل يوجد طريقة لحل المشكلة
    1 نقطة
  18. <p>ينتج عن أكسدةجزيء حمض دهني أكسدة تامة ATP فكم جزيء ATP إذا علمت أن أكسدة جزيء الجلوكوز أكسدة تامة ينتج عنه 38 جزيء</p> حسنا هذا هو الكود وكما تري النتيجة تخرج شيئا أخر
    1 نقطة
  19. هل يمكنك ارفاق الكود؟ وأيضا هل يمكنك ارفاق صورة للنتيجة التي تظهر لك؟
    1 نقطة
  20. حتى نتمكن من دمج كل أسطر جدول ما مع جميع أسطر الجدول الثاني، أي combination أي مزيج بين كل الأسطر نلجأ لما يدعى CROSS JOIN وفيه يتم تكرار جميع سجلات الجدول الثاني لكل سجل من الجدول الأول .. مثلا إن كان لدينا جدول للفئات مثل فواكه، خضار ونريد عرض الفئة لكل منتج منهما نستعمل هذا النوع من الدمج SELECT * FROM Category, Product أو بدون كلمة CROSS SELECT * FROM Category CROSS JOIN Product ستكون النتيجة مثلاً: category __ product Frutes Apple Frutes Banana Frutes Peanapple Frutes Strawpery Vegetables Tomato Vegetables Potato Vegetables cucember Vegetables onion
    1 نقطة
  21. الأفضل دائماً وأبداً أن تختار نوع البيانات الأقل في المساحة التخزينية, لأن ذلك أولاً سيحفظ بعض المساحة لدى قاعدة البيانات, بالإضافة لزيادة سرعة إستقبال البيانات من قاعدة البيانات, بالإضافة إلى إمكانية الحصول على فهرسة أقل في المساحة بما أن الحالة لها قيم محددة (discrete values) فإذاً من المُفضل إختيار نوع البيانات عددي بدلاً من نصي, لأن الأعداد أقل مساحةً من النصوص, ويمكنك إختيار نوع بيانات عددي صغير نسبياً مثل ال tinyint والtinyint عبارة عن نوع بيانات عددي صحيح يحمل بيانات فقط تتراوح من القيمة 0 حتى 255 ومساحته التخزينية عبارة عن 1 بايت (1byte) وتكون طريقة التخزين كالتالي, نعطي كل حالة رقم معين, مثلاً الإستﻻم نعطيها الرقم 1, قيد التوصيل نعطيه الرقم2 , قيد الطهي الرقم 3 وهكذا, وبدلاً من تخزين الحالات كنصوص نقوم بتخزينها كأرقام
    1 نقطة
  22. يمكنك القيام بذلك من خلال رسم كل كتلة بيانات ضمن axes محدد ضمن ال figure، حيث نقوم أولاً بتعريف عدد ال Subplots (والذي يجب أن يطابق عدد الرسوم التي تحتاجها -عدد كتل البيانات-)، ثم نقوم باستخدام الأمر plot مع الوسيط ax لتحديد رقم ال axes، كما يلي: import pandas as pd import numpy as np import matplotlib.pyplot as plt # إنشاء 4 أطر بيانات مختلفة df1 = pd.DataFrame(np.random.rand(15,2)*5, columns=['A', 'B']) df2 = pd.DataFrame(np.random.rand(15,2)*5, columns=['A', 'B']) df3 = pd.DataFrame(np.random.rand(15,2)*5, columns=['A', 'B']) df4 = pd.DataFrame(np.random.rand(15,2)*5, columns=['A', 'B']) # subplots كونه لدينا 4 أطر بيانات سنحتاج إلى 4 nrow=2 ncol=2 # قم بوضعهم ضمن قائمة df_list = [df1 ,df2, df3, df4] # تعريف الشكل والمحاور fig, axes = plt.subplots(nrow, ncol) # رسمهم count=0 for r in range(nrow): for c in range(ncol): # سنرسنهم عمود عمود df_list[count].plot(ax=axes[r,c]) count+=1 والخرج:
    1 نقطة
  23. يمكنك القيام برسمهما مباشرةً باستخدام Pandas من خلال الدالة plot كالتالي: df.plot(x='col_name_1', y='col_name_2', style='o') حيث أن الوسيط style يحدد شكل النقاط بالترتيب، أي أن النقط ستأخذ الشكل "o" أي دوائر. مثال: import numpy as np import pandas as pd # إنشاء داتافريم مكون من عمودين d = {'col_1' : np.arange(20), 'col_2' : np.arange(20,40)} df = pd.DataFrame(d) # تمثيلهما بيانياً df.plot(x='col_1', y='col_2', style='o') والخرج سيكون: كما يمكنك استخدام الدالة scatter في Matplotlib كما يلي (تجد رابطها في الأسفل لمزيد من التفاصيل): import matplotlib.pyplot as plt plt.scatter(df['col_1'], df['col_2']) plt.show()
    1 نقطة
  24. لتطبيق المرشح الغاوصي على الصورة نقوم أولاً بقراءة الصورة، ثم نقوم بتطبيق التابع GaussianBlur على الصورة: GaussianBlur(src, ksize, sigmaX,sigmaY) حيث أن الوسيط الأول يمثل الصورة المراد تطبيق الترشيح عليها، والوسيط الثاني يمثل حجم الكيرنل (النواة) التي سيتم تطبيقها على الصورة (عبارة عن مصفوفة ذات بعد فردي، يتمتمريرها على الصورة نسميها Gaussian Kernal)، أما الوسيط الثالث و الأخير فيمثلان الانحراف المعياري على كل محور (زيادة الانحراف تؤدي إلى زيادة التنعيم -تشويه الحواف-). في المثال التالي سأقوم بإضافة ضجيج غاوصي إلى صورة، ثم سأقوم بإزالته باستخدام المرشح الغاوصي: import cv2 as cv import numpy as np import matplotlib.pyplot as plt # قراءة الصورة image=cv.imread("/content/gray.png",0) # إضافة الضجيج الغاوصي لها بشكل يدوي gauss=np.random.normal(0,0.5,image.shape).astype('uint8') gauss_image=cv.add(image,gauss) # تطبيق المرشح filtered_image= cv.GaussianBlur(gauss_image,(5,5),1) # عرض النتائج plt.figure(figsize=(25,15)) plt.subplot(131) plt.imshow(image, cmap='gray') plt.title("gray_image") plt.subplot(132) plt.imshow(gauss_image, cmap='gray') plt.title("gray_image with noise") plt.subplot(133) plt.imshow(filtered_image, cmap='gray') plt.title("image after applying gaussian filter") الخرج:
    1 نقطة
  25. إن كان عدد الجداول كبير، هنا كل عملية دمج سوف ينتج عنها جدول جديد يحوي عمود إضافي ناتج عن الدمج السابق وبهذا يصبح عبئ في عمل مدير قواعد البيانات، لذلك في هذه الحالة نستخدم الاستعلامات الفرعية بدل الدمج، حيث أن كل استعلام فرعي يجلب نتيجة من جدول ما، مع تحقيق الربط باستخدام WHERE أي بدل عمل التالي: SELECT table1_id, -- مكرر وهو عمود الربط table2_name, -- جلب حقل الاسم من باقي الجداول table3_name, table4_name, table5_name, table6_name, table7_name, table8_name, table9_name FROM table1 LEFT JOIN table2 ON (table2_id = table1_id) LEFT JOIN table3 ON (table3_id = table1_id) LEFT JOIN table4 ON (table4_id = table1_id) LEFT JOIN table5 ON (table5_id = table1_id) LEFT JOIN table6 ON (table6_id = table1_id) LEFT JOIN table7 ON (table7_id = table1_id) LEFT JOIN table8 ON (table8_id = table1_id) LEFT JOIN table9 ON (table9_id = table1_id) نبدله بالتالي: SELECT table1_id, (select table2_name from table2 where table1_id = table2_id), (select table3_name from table3 where table1_id = table3_id), (select table4_name from table4 where table1_id = table4_id), (select table5_name from table5 where table1_id = table5_id), (select table6_name from table6 where table1_id = table6_id), (select table7_name from table7 where table1_id = table7_id), (select table8_name from table8 where table1_id = table8_id), (select table9_name from table9 where table1_id = table9_id) FROM table1 تعتبر هذه من الحالات التي يكون فيها أداء SubQuery أسرع من عمل JOIN
    1 نقطة
  26. عندما يملك جدول ما مفتاح أساسي مركب، علينا فك هذا المفتاح للأعمدة المكونة له، ثم التحقق منطقيا من تساوي جميع هذه القيم كلِ على حدى، أي نتأكد من قيمة العمود الأول مع الثاني مع الثالث .. SELECT * -- جلب النتائح FROM Table1 -- الجدول الأول JOIN Table2 -- الجدول الثاني ON Table1.col1 = Table2.col1 -- عمل الربط مع أول عمود من المفتاح AND Table1.col2 = Table2.col2 -- عمل الربط مع العمود الثاني -- هكذا سيتم الدمج بناءاً على قيم عمودين لا علاقة لنوع المفتاح ضمن عملية الربط، ما يهم هو تقابل القيم بين جدولين،
    1 نقطة
  27. tar بالاستعانة ب gzip و bzip2 يمكنك من إنشاء أرشيف مضغوط أ فك الضغط عن ارشيف مضغوط tar -cvf books.tar /home/books/ الامر فوق يقوم بانشاء أرشيف tar لكنه ليس مضغوط يقوم بانشاء أرشيف من كل الملفات الموجودة في مجلد books و c هي لانشاء الأرشيف و v لنرى تقدم العملية و f لاسم الأرشيف و لضغط ذلك الأرشيف الى tgz نحتاج الى gzip ويجب أن يكون مثبت في ال system tar -zcvf books.tgz /home/books/ الفرق الوحيد هنا هو z وهي للضغط ب gzip ونفس العملية اذا أخذنا الأرشيف من الأمر الأول في الحقيقة يمكنه ضغطه مباشرة ب gzip gzip books.tar ولكن tar يقوم بهذا تلقائيا عبر العلم z يمكنك ايضا فك الضغط عن أرشيف مضغوط tgz tar -zxvf books.tgz x هنا هي لفك الضغط عن طريق gzip وكل هذا يطبق تقريبا بنفس الطريقة لو استعملت bzip2
    1 نقطة
  28. للقيام بذلك نستخدم الدالة suptitle: matplotlib.pyplot.suptitle(t,x,y,horizontalalignment,fontsize, **kwargs) # الوسيط الأول يمثل النص المطلوب إضافته # x , y للتحكم بموقع النص # horizontalalignment لتغيير موضع النص # ويأخذ القيم التالية # center: الحالة الافتراضية # left: على يسار الشكل # right: على يمينه # fontsize للتحكم بحجم الخط وبالتالي لتنفيذ ماتريده: # Implementation of matplotlib function import numpy as np import matplotlib.pyplot as plt # First create some toy data: x = np.linspace(0, 1.5 * np.pi, 100) y = np.sin(x**2)+np.cos(x**2) fig, axs = plt.subplots(2, 2, subplot_kw = dict(polar = True)) axs[0, 0].plot(x, y) axs[1, 1].scatter(x, y) # هنا نستخدم هذه الدالة fig.suptitle('Hsoub',color="red") plt.show() والخرج:
    1 نقطة
  29. ببساطة فإن semi-join هي طريقة تصفية مجموعة صفوف بناءً على تضمين صفوفها في مجموعة صفوف أخرى وهي تعادل: SELECT * FROM A WHERE A.key IN (SELECT B.key FROM B) ويوجد لفظ semi وذلك لانك لا تقوم فعليا بدمج الجزء الأيمن والأيسر من الجدول كما تفعل join ، نحن فقط نختار الذي قد يتحتويه الصفوف من الجدولين دون مقارنة كل الصفوف ببعضها. المثال التالي يوضح الفكرة، تخيل هناك جدول للأستاذة كالتالي: ID Rank Salary 101 Assistant Professor 80,000 102 Associate Professor 90,000 103 Lecturer 70,000 وجدول للطلاب هكذا: ID RollNo Marks 103 2017 – 01 80 104 2017 – 02 90 105 2017 – 03 70 فإان اختيار Student Semi Join Teacher ينتج عنه هذا الجدول: ID RollNo Marks 103 2017 – 01 80 لاحظ أنه قام بإرجاع البيانات الخاصة بالطالب الذي توافق ال id الخاص به بالمعلم. اما اذا قمنا بعمل Teacher SEMI-JOIN Student فالجدول يصبح كالتالي: ID Rank Salary 103 Lecturer 70,000 لاحظ هنا أنه قام بإرجاع البيانات الخاصة بالمعلم الذي توافق ال id الخاص به بالطالب.
    1 نقطة
  30. rsync هو برنامج يُستخدم لعمل مزامنة بين المجلدات, حيث يجعل المجلد 1 نسخة طبق الأصل من المجلد 2 , ينسخ الملفات الناقصة, ويحذف الملفات الزائدة أولا نقوم بتثبيت البرنامج عبر الterminal sudo apt-get install rsync بعد ذلك يمكننا إستخدامه بالشكل التالي rsync -av --delete /Directory1/ /Directory2/ الخيار a يجعل البرنامج ينسخ المجلدات أيضاً وليس الملفات فقط, الأمر v جعل البرنامج يقوم بطباعة رسالة يشرح فيها ما حدث تحديداً في التنفيذ, الخيار --delete يخبر البرنامج أن يقوم بحذف أي ملفات زائدة, يمكننا إزالة هذا الخيار إن لم نريد تلك الوظيفة لجعل هذا البرنامج يعمل بشكل تلقائي كل يوم, يمكننا إستخدام برنامج cron وهو برنامج من أجل عمل مهام دورية في نظام لينكس crontab -e ذلك الأمر سيقوم بفتح جدول مهام الcron يمكننا تعديل الجدول ليوافق إحتياجاتنا ونضع به المهام التي نريدها 0 20 * * * rsync -av --delete /hsoub1/ /hsoub2/ هذا الأمر سيجعل البرنامج يتم تنفيذه كل يوم في الساعة 20(الثامنة ليلاً) في الدقيقة صفر
    1 نقطة
  31. tar هو برنامج للأرشفة , ويتم إعداده بالشكل التالي نقوم أولا بتثبيت البرنامج عبر الterminal (ملحوظة قد يطلب منك الرقم السري للمُستخدم بسبب إستخدامك للأمر sudo ) sudo apt-get install tar tar-doc ونستخدمه عن طريق الأمر التالي, مع إستبدال كلمة option بالخيارات التي تريدها, وإستبدال كلمة file بمسار الملف المُراد أرشفته tar Option File فمثلاً في المثال التالي يُعبر الخيار c عن إنشاء أرشيف جديد, والخيار z عن الضغط والخيار f يُعبر عن كتابة الناتج في الأرشيف , فيتم إذا أرشفة الملفان example_1 و example_2 وكتابة الناتج في الأرشيف hsoub tar -czf hsoub.tar.gz example_1.txt example_2.txt
    1 نقطة
  32. يتيح مفهوم semi-join تنفيذ عدّة عمليات أثناء الاستعلام أي في وقت تحضير البيانات ويمكنه تنفيذ عدّة استراتيجيات على البيانات والجداول مثل سحب البيانات المتعددة والمطابقة بين البيانات والتحقق وغيرها.. وبالتالي يحسّن من أداء استخدام الاستعلامات الفرعية من خلال تصفية مجموعة من صفوف البيانات rows بناءً على دمجها مع مجموعة صفوف أخرى. أو بمعنى آخر، في حال كنا نقوم بعملية مقارنة inner-join بين جدولين، هنا يعيد الاستعلام جميع البيانات طالما هنالك تقابل بين الجدولين، ولكن في بعض الاستعلامات يلزمنا فقط معرفة في حال كان هنالك تقابل ولا نرغب بمقارنة جميع الأسطر والحصول على عددها، وهنا يمكننا استخدام مفهوم semi-join وهي تعمل بشكل مشابه للاستعلام التالي في MySQL: SELECT * FROM A WHERE A.key IN (SELECT B.key FROM B) وبالتالي يمكننا اختصار بعد الاستعلامات الطويلة مثل الاستعلام الذي يعتمد على left outer join: SELECT DISTINCT c.id FROM customers c LEFT JOIN salaries s ON s.customer_id = c.id WHERE s.customer_id IS NOT NULL بحيث يصبح بالشكل التالي: SELECT c.id FROM customers c WHERE EXISTS (SELECT 1 FROM salaries s WHERE s.customer_id = c.id)
    1 نقطة
  33. يمكنك استخدام الدالة tight_layout: matplotlib.pyplot.tight_layout(pad=1.08) حيث تقوم هذه الدالة بضبط المساحة المتروكة بين ال subplots. حيث أن الوسيط الأول يمثل المسافة (الحشو) بين حدود ال figure وبين ال subplots.: import matplotlib.pyplot as plt fig = plt.figure() subplot1 = fig.add_subplot(121) subplot1.plot(data) subplot2 = fig.add_subplot(122) subplot2.plot(data) fig.tight_layout(pad=3.0) plt.show() الخرج: والطريقة الثانية من خلال subplots_adjust حيث تمنحك هذه الدالة إمكانية التعديل بشكل أكثر حرية وبكل الاتجاهات، كما في الكود التالي: import matplotlib.pyplot as plt fig = plt.figure() subplot1 = fig.add_subplot(121) subplot1.plot(data) subplot2 = fig.add_subplot(122) subplot2.plot(data) fig.subplots_adjust( top=0.981, bottom=0.049, left=0.042, right=0.981, hspace=0.2, wspace=0.2 ) plt.show()
    1 نقطة
  34. OpenCV تقوم بقراءة الصور بالصيغة BGR أما ماتبلوتليب فتتعامل مع الصور بالصيغة RGB وبالتالي ترتبيب الألوان مختلف أي أنت تقرأ الصورة في التابع imread على أنها مصفوفة من 3 قنوات الأولى للأزرق والثانية للأخضر والثالث للأحمر، وعندما تقوم باستخدام ماتبلوتليب لعرضها فإنها تقرأ الأزرق على أنه أحمر والأخضر على أنه أخضر و الأحمر على أنه أزرق مما ينتج لنا هذه المشكلة. وبالتالي لحل المشكلة فكل ماعليك فعله هو استخدام التابع cv2.cvtColor مع الخاصية cv2.COLOR_BGR2RGB وبالتالي تحويل نظام الصورة إلى RGB: from matplotlib import pyplot as plt import cv2 img = cv2.imread(r'C:\Users\Windows.10\Desktop\All\test5 openeye.jpg') img= cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.title("Face") plt.imshow(img) الخرج:
    1 نقطة
  35. حسب ترتيب خطوات تنفيذ الاستعلام في SQL سيتم تنفيذ جزء ON قبل جزء WHERE لذلك يمكننا نقل الشرط لتتم الفلترة بناءً عليه بخطوة قبل وهذا يسرع الأداء، حيث لا نحتاج WHERE بعدها SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.id = Table2.user_id AND Table2.role='Admin' ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ لاحظ نقل شرط WHERE ودمجه مع شرط الربط. WHERE تعمل على الجدول الناتج من عملية الربط، أي سيكون هنالك بيانات أكثر لاختبارها، لذلك نضع الشرط مع جزء ON ضع دائمًا شروط الدمج في جملة ON إذا كنت تقوم بإجراء INNER JOIN. أي لا تضف أي شروط من WHERE إلى جملة ON ، بل ضعها في جملة WHERE إذا كنت تقوم بتنفيذ LEFT JOIN ، فقم بإضافة أي شروط WHERE إلى جملة ON للجدول الموجود في الجانب الأيمن من الدمج. هذا أمر لا بد منه ، لأن إضافة جملة WHERE تشير إلى الجانب الأيمن من الدمج ستحوله إلى INNER JOIN. الاستثناء هو عندما تبحث عن السجلات غير الموجودة في جدول معين. يمكنك إضافة المرجع إلى معرّف فريد (ليس فارغًا أبدًا) في جدول RIGHT JOIN إلى جملة WHERE بهذه الطريقة: WHERE t2.idfield IS NULL. لذا ، فإن المرة الوحيدة التي يجب أن تشير فيها إلى جدول على الجانب الأيمن من الصلة هي العثور على تلك السجلات غير الموجودة في الجدول.
    1 نقطة
  36. قرأت ان نسبة خفض الوصول لدى تويتر تبلغ 20% بمعني لو كان عدد متابعينك 1000000 متابع فلن يصل منشورك الا الى 20% من متابعيك كذلك قرأت ان نسبة خفض الوصول لدى انستغرام هي من 5% الى 8% سؤالي هل ذلك سجعل المعلنين يرفضون الاعلان عندي واذا كان هذا الكلام صحيح لماذا اذن يوجد مشاهير يقبضون مبالغ طائلة؟
    1 نقطة
  37. 1 نقطة
  38. تتنوع منصات العمل الحر على الإنترنت، فبعضها موجود كمنصة موجهة لتُستخدم على الويب ومن الأجهزة المكتبية والحواسيب المحمولة، وبعضها موجود كتطبيق على الهواتف المحمولة، ومنها ما يكون في الويب وتطبيقات الهواتف معًا، وهذه المنصات مزيتها أنها توفر للمستقل -العامل الحر- سوقًا يعرض فيه خدماته المدفوعة مع ضمان حقه المادي وعدم تهرب العميل أو مماطلته في دفع المال، كما تقدم هذه المنصات من ناحية أخرى للشركات المتوسطة والصغيرة وكذلك للأفراد العاديين نفس السوق الذي جمعت فيه المستقلين، لكن هذه المرة تريهم لهذه الفئات من العملاء كي يتصفحوا ملفات المستقلين الشخصية لينظروا أيهم أنسب لتنفيذ المشاريع التي لديهم، أو يطرحوا مشاريعهم كي يقدم المستقلون عروضهم لتنفيذها بمواعيد تسليم وميزانيات مقترحة. وقد ذكرنا في غير موضع من هذا الكتاب منصات عمل حر مختلفة، وتتبع جميعها شركة حسوب، وهي شركة أياديها عربية شابة تعمل من أجل تطوير العالم العربي في عمومه من خلال تطوير الويب العربي بتوفير منصات للعمل الحر والعمل عن بعد وغير ذلك من الخدمات والمشاريع التي للشركة، والتي تنشئ من خلالها فرصًا للشباب العربي للعمل والاستثمار والتوظيف من خلال منصات عربية تغنيهم عن المنصات الأجنبية، مراعية بذلك المبادئ والقيم التي تتميز بها الشعوب العربية. كما توفر كتبًا وتوثيقات وشروحات مرئية ومقروءة عالية الجودة في المجالات التقنية المختلفة في علوم الحاسوب ومجالات العمل الحر وإدارة الأعمال والتسويق وغيرها، لتضع بين يدي القراء العرب من العملاء والعاملين على حد سواء علومًا نافعة إما من العرب أنفسهم أو مترجمة من أصحابها إذا كانوا غير عرب. ومنصات العمل عن بعد أو العمل الحر التي تتبع حسوب -والتي هي شاهد كلامنا- هي إما منصة مستقل للمشاريع المتوسطة والكبيرة التي قد تصل إلى عشرة آلاف دولار، أو منصة خمسات المخصصة للخدمات الصغيرة التي يمكن إنجازها بسرعة أو لا تحتاج إلى مشروع مستقل من أجلها. ثم لدينا منصة ثالثة هي منصة بعيد المخصصة للشركات التي ترغب في طرح وظائف بدوام جزئي أو كلي لينظر فيها من يبحث عن وظيفة، فيتقدم لها من خلال المنصة. وإننا في هذا المقال سنتعرض لهذه المنصات الثلاثة بتفصيل لم يكن يتسع المقام له في ما تقدم من فصول الكتاب، إذ كانت تفاصيل لم يكن ذكرها مناسبًا في معرض الحديث العام حول العمل الحر. وقد ذكرنا من قبل أن العمل عن بعد هو النظام الذي شاع مؤخرًا بعد تطور تقنيات الإنترنت والتواصل وما تلاها من ثورة التقنية الأخيرة التي جعلت الشركات توظف خبرات من جميع أنحاء العالم من غير أن يجلبوهم إلى مقرات الشركات نفسها متكلفين بذلك أعباء الانتقالات وأجور المكاتب وشؤون العاملين وغير ذلك، ثم انتشر انتشارًا أعظم بعد وباء كوفيد-19 الأخير مجبرًا كثيرًا من المؤسسات على اعتماده رغمًا عنها، وربما عددًا أكثر من العاملين إلى اعتماده كأسلوب جديد للعمل. وهذا العمل عن بعد قد يكون عملًا حرًا يعمل فيه المرء مستقلًا بذاته ممثلًا نفسه دون أن يكون تابعًا لجهة ما، وهو هنا غير محدود بعدد العملاء أو الجهات التي يعمل لصالحها إذ يكون تعاقده معها بالمشروع أو القطعة أو الساعة مثلًا. وفيه يعمل المستقلون عبر منصات إلكترونية تمثل أسواقًا رقمية مشتركة يعرضون فيها خدماتهم أو يعرض أصحاب المشاريع مشاريعهم ليتقدم إليها المستقلون ليضعوا عروضهم المقدرة بثمن تضمن حصولهم عليه سياسات المنصة التي هم عليها إذ تفرض على صاحب المشروع أو طالب الخدمة أن يدفع المال مسبقًا لتحتفظ به المنصة إلى ما بعد تسليم العمل وإنهاء المشروع، من أجل حل أية مشاكل أو منازعات قد تطرأ بين الطرفين لتعطي كل ذي حق حقه. أو قد يكون ذلك العمل عن بعد منتظمًا مع شركة أو مؤسسة لا تكون في محيطه الجغرافي، أو قد تكون لكنه لا يستطيع الحضور إلى مقرها بسبب ظروف طارئة كالوباء الذي ذكرنا، وهنا قد يعمل من المكان الذي يناسبه حقًا لكنه ملتزم بلوائح الشركة ونظمها الداخلية، ويتقاضى راتبه منها بشكل منتظم. حساب حسوب الموحد وفّرت حسوب حسابًا موحدًا لكافة منصاتها لتسهيل استخدام هذه المنصات والتنقل بينها دون الحاجة للتسجيل لكل منصة في كل مرة بحساب منفصل، فيكفي إنشاء حساب واحد في حسوب لاستخدام كافة المنصات، كما تفعل شركة جوجل مثلًا مع خدماتها، إذ يكفي أن تنشئ حسابًا فيها لتحصل معه على خدمات بريد جوجل ويوتيوب ودرايف وغيرها. ولتسجيل حساب مستخدم جديد في شركة حسوب، تستطيع ذلك من أي منصة أو موقع في منصات حسوب، عبر خيار حساب جديد أعلى يسار الصفحة، أو استخدام خيار دخول في حال امتلاكنا المسبق لحساب ضمن منصات حسوب. انظر مثلًا موقع خمسات: أو يمكنك الانتقال إلى الصفحة الرئيسية لحسوب والضغط في الأسفل على حسابي للانتقال إلى صفحة حساب حسوب الموحد. سننتقل تلقائيًا في كلا الحالتين إلى صفحة الحساب الموحد لحسوب، تستطيع هنا استخدام أحد حساباتك على جوجل أو مايكروسوفت لتسجيل حساب جديد، أو إذا لم تشأ ذلك وأردت تسجيل حساب خاص بحسوب فأدخل بياناتك في الخانات الفارغة في الصفحة ومن ثم اضغط على زرّ تسجيل. ستظهر لك صفحة تخبرك بنجاح عملية التسجيل، عليك الآن أن تفتح بريدك الإلكتروني وأن تفعّل الحساب من خلال الرسالة التي ستصلك من حسوب لأجل ذلك. ستفتح لك صفحة جديدة بمجرد النقر على زر التفعيل المرسل برسالة إلى بريدك الإلكتروني، تطلب منك إدخال اسم المستخدم بالأحرف الإنجليزية لاستخدامه ضمن تعاملاتك في المنصة. ستظهر لك الصفحة الموضحة في الصورة أعلاه في أي منصة في حسوب عند الدخول إليها لأول مرة فقط، حيث يُطلب منك إدخال اسم المستخدم الذي يمكن أن يتكون من أحرف إنجليزية وأرقام فقط. هنا عليك العودة إلى حسابك على حساب حسوب الموحد لتعديله وإضافة صورتك ومعلوماتك الشخصية، إضافة إلى توثيق هويتك لتتمكن من استخدام كافة منصات حسوب ونشر خدماتك وتقديم عروضك والحصول على أرباحك بطريقة قانونية دون مشاكل أو مساءلات. اضغط على صورة ملفك الشخصي أعلى يسار الصفحة واختر تعديل الحساب من القائمة المنبثقة. والآن، في صفحة حسابك على حساب حسوب الموحد الموضحة في الصورة أدناه، أدخل بياناتك الصحيحة مع إدراج صورتك وتأكيد هاتفك المحمول، ثم احفظ هذه التعديلات. لتأكيد هويتك، اضغط على أيقونة القائمة التي تشبه شطيرة البرجر، أعلى يمين الصفحة ثم اختر خيار تأكيد الهوية. ستظهر لك صفحة تأكيد الهوية كما في الصورة التالية. انقر على زرّ تأكيد الهوية لتبدأ عملية التأكيد. املأ البيانات بدقة كما هو مذكور في البطاقة الشخصية أو جواز السفر. الآن عليك إدراج الصورة الأمامية من الهوية، يمكنك إدراج صورة الوجه الأمامي باستخدام الماسح الضوئي أو باستخدام كاميرا الحاسوب أو الهاتف مباشرة، شرط أن تضمن وضوح البيانات في الصورة. كرر العملية بالنسبة لوجه الوثيقة الخلفي. في هذه الخطوة، ستلتقط صورة لنفسك وأنت ممسك بالوثيقة بيدك بحيث نظهر ملامحك وملامح الوثيقة بصورة واضحة إما باستخدام كاميرا الهاتف أو الحاسوب، وهذه الخطوة من أجل التأكد أنك أنت صاحب الوثيقة التي ترفعها للحساب. بعد الانتهاء من رفع الصور انقر على زرّ إرسال طلب تأكيد الهوية ليتم إرسال هذه البيانات ومراجعتها من قبل فريق حسوب، ثم يتم تأكيد هويتك، ويكون حسابك موثقًا حين إشارة الموافقة الخضراء بجانب صورتك في كل منصات حسوب للعمل الحر، الأمر الذي يزيد ثقة العملاء فيك ومن ثم يتعاملون معك باطمئنان. ننتقل الآن إلى منصات العمل الحر، ولتكن البداية مع منصة خمسات. منصة خمسات منصة خمسات هي أشهر منصة عربية للخدمات المصغرة في الويب، ويتمثل دورها في إدارة وتنظيم وتنسيق عمليات الشراء والبيع بين مقدمي الخدمات وطالبيها بشكل كامل بما يضمن حقوق الطرفين. وستجد في المنصة خدمات متنوعة أبرزها خدمات تشمل: تصميم الرسوميات. برمجة وتطوير المواقع والتطبيقات. كتابة المحتوى وترجمته. التسويق الإلكتروني. التدريب والاستشارات. وغير ذلك من الخدمات التي يمكن تنفيذها بخمسة دولارات فأكثر. بعد تسجيلك لحسابك في حسوب الذي تقدم شرحه أعلاه، تستطيع تسجيل الدخول إلى هذه المنصة مباشرة، لتجد الصورة الشخصية لك في الشريط العلوي للمنصة من اليسار، والتي إن ضغطت عليها ستجد صفحتك ملفك الشخصي وصفحة رصيدك وخيارات المنصة وإعدادات الحساب. وإذا نظرت إلى جانب صورتك الشخصية سترى أيقونة الإشعارات التي فيها إشعارات الخدمات المباعة والمشتراة، ثم أيقونة الرسائل، ثم سلة المشتريات ثم خانة البحث. ستجد في الطلبات الواردة جميع طلبات العملاء لشراء خدماتك، وفي قسم المشتريات جميع طلبات شرائك لخدمات مستقلين آخرين، وعند الضغط على خيار التصنيفات تنبثق قائمة كبيرة تضم كافة تصنيفات الخدمات المتنوعة التي تحتويها المنصة. أخيرًا تستطيع إضافة خدمة جديدة عبر خيار "+ أضف خدمة" الذي سنشرحه فيما يلي. إضافة خدمة بما أن لديك حسابًا على خمسات وصار بإمكانك إضافة الخدمات وانتظار عملائك، فلنضف أول خدمة لك. اضغط على خيار "+ أضف خدمة" الموجود في الشريط العلوي للموقع لإضافة خدمة جديدة. يقع عنوان الخدمة ضمن خانة ماذا ستفعل مقابل 5$؟، اكتب العنوان ثم اختر التصنيف الرئيسي الذي تندرج خدمتك ضمنه ومن ثم اختر التصنيف الفرعي لأحد أنواع التصاميم المتعلقة بالخدمة التي تنوي تقديمها، واكتب وصفًا مميزًا للخدمة تشرح فيها ما يميز خدماتك حاول أن تقدّم فيه عرضًا يشرح طبيعة عملك بما يرغب العميل فيك ويحثه على الثقة بك، من غير إسفاف ولا مبالغة قطعًا. اختر الآن مجموعة من الصور التي تعبّر عن نوعية الخدمة المقدمة، وإذا كانت الخدمات ضمن الخدمات الإبداعية مثل تصميم الرسميات أو تطوير المواقع أو تطبيقات الهواتف المحمولة أو غيرها فمن الأفضل إدراج أفضل الصور المعبرة عن مهاراتك وإنجازاتك في هذا المجال لاجتذاب العملاء وإقناعهم في اختيار خدماتك، كما وضحنا فيما سبق من هذا الكتاب أن هذه الصور في حق من يعمل في التصميم واجبة إذ أن العميل سيبحث عما يجذب بصره أولًا، وعدد هذه الصور يجب ألا يتجاوز العشرة، ويجب أن تكون ضمن نطاق المواصفات الموضحة من حيث القياس والحجم. الكلمات المفتاحية هي الكلمات التي تدل على خدمتك والتي تساعد رفع مرتبة خدمتك في محرك البحث، اكتبها ثم حدد مدة التسليم لخدمتك بالأيام، ثم إذا انتهيت فاكتب المعلومات التي تحتاج إليها من المشتري مثل الألوان أو الحجم أو عدد الكلمات أو أيَّا كانت المعلومات المطلوبة لتنفيذ الخدمة وفق نوعها سواء كانت تصميمًا أو برمجة أو ترجمة أو استشارة محاسبية أو غير ذلك، كما ترى في الصورة الموضحة أدناه. هذه الخدمة ستكون حصرًا بخمسة دولارات وستحصل أنت كمصمم على أربعة دولارات بينما تحصل منصة خمسات على عمولتها المتمثلة بدولار واحد، فإذا أردت أن تحصل على مبالغ إضافية من هذه الخدمة فيمكن أن تضيف تطويرًا لها يتضمن الميزات الإضافية التي ستقدمها كزيادة عليها، مع تحديد المدة الزمنية الإضافية التي ستحتاجها لتنفيذ هذه الأعمال الإضافية وقيمة ما ستقدمه من أعمال إضافية، وهنا لن تكون مرتبطًا بقيمة الدولارات الخمسة بل يمكنك أن تضع أرقامًا من مضاعفات العدد 5 وصولًا إلى مئة دولار، كما تستطيع إضافة تطويرات أخرى للخدمة ذاتها أيضًا، بحيث قد تبلغ قيمة مجموع تطويرات الخدمة مئات الدولارات. مراحل بيع الخدمات بعد إنشاء خدماتك على المنصة، عليك العمل على تسويق هذه الخدمات عبر وسائل التواصل الاجتماعي أو أية وسائل أخرى، مع التركيز على كتابة عنوان ووصف مميز لخدماتك إضافة إلى إدراج صور مميزة وجذابة بحيث تزيد من فرص حصولك على طلبات الشراء. تبدأ رحلة بيع الخدمة بوصول طلب شراء للخدمة، تتمكن من خلالها من فتح صفحة نقاش تنفيذ الخدمة والتي يبدأها العميل عادة بتقديم شرح عن النتيجة التي يريد الحصول عليها من خلال شرائه للخدمة، ويستمر النقاش بين المستقل والعميل حول مراحل تنفيذ الخدمة وصولًا إلى النتيجة المرضية للعميل، يطلب بعدها المستقل من العميل استلام الخدمة فتضاف الأرباح المحققة من خلال هذه الخدمة إلى رصيد المستقل، وتبقى محجوزة مؤقتًا ضمن رصيد المستقل لمدة زمنية قد تصل إلى أسبوعين، لضمان حقوق كافة الأطراف في حال ظهرت أية مشاكل أو سلبيات لاحقة على الخدمة المقدمة من قِبل المستقل. صورة لعملية بيع خدمة تصميم شعار نموذجية كاملة انتهت بنجاح ورضى الطرفين رصيد الحساب تستخدم منصات حسوب خدمة باي بال PayPal لنقل الأموال، حيث يستطيع المستقلون سحب أرباحهم من خلالها، كونها خدمة ذات مصداقية وأمان ويمكن ربطها بالحسابات البنكية والبطاقات الائتمانية، كما أنها إحدى الخدمات المتاحة بدون تعقيدات بنكية، وعند نجاح المستقل في تقديم الخدمة للعميل واستلامه للخدمة فإن أرباح هذه الخدمة تذهب إلى رصيده، لكنها تبقى ضمن الرصيد المعلق لبضعة أيام -14 يومًا في الوقت الحالي- وذلك لضمان حق العميل في استرجاع المبلغ إذا تبين وجود مشكلة في الخدمة المقدمة خلال هذه المدة، ويتوفر فريق لخدمة العملاء على مدار الساعة في المنصة لحل كافة الإشكاليات (إن وجدت) بين المستقلين والعملاء باحترافية عالية بما يضمن حقوق جميع الأطراف بعدل وإنصاف، وينتقل المبلغ إلى وضعية الأرباح التي يمكن سحبها بعد تلك المدة ليتمكن المستقل من سحبها إذا أراد عبر خدمة الباي بال PayPal كما ذكرنا. تتيح لك المنصة خيارات تجميع أرباحك ضمن المنصة أو إرسالها يوميًا بمجرد تجاوزها حاجز 10 دولارات. كما تتضمن صفحة الرصيد قائمة بكافة المعاملات المالية الخاصة بالمستقل. مجتمع منصة خمسات تستطيع الوصول إلى مجتمع خمسات من خلال القائمة الجانبية التي تظهر بالنقر على أيقونة القائمة أعلى يمين الصفحة على يمين شعار المنصة، ويتضمن المجتمع نماذج الأعمال التي ينفذها المستقلون كنوع من التسويق لأنفسهم، كما يحوي قسمًا خاصًا بطلبات للخدمات غير الموجودة ضمن تصنيفات المنصة، إضافة إلى موضوعات أخرى ضمن مجتمع المنصة ومدونتها التي تحوي مقالات مهمة حول مختلف المواضيع المتعلقة باستخدام المنصة وكيفية تحقيق المبيعات واختيار الخدمات والتسويق وغيرها. منصة مستقل منصة مستقل هي إحدى منصات شركة حسوب أيضًا، وتختلف هذه المنصة من حيث طريقة العمل عن منصة خمسات، فهنا لا يعرض المستقلون خدماتهم بل يعرض أصحاب المشاريع والطالبين لخدمات المستقلين مشاريعهم ليتقدّم المستقلون بعروضهم لتنفيذ هذه المشاريع، وتختلف القيمة بدورها أيضًا حيث أن المشروع يبدأ من 25 دولارًا فأكثر، وقد تصل قيمته للآلاف. بعد التسجيل بحساب حسوب الموحد تستطيع تسجيل الدخول إلى هذه المنصة مباشرة، وقد يطلب منك اختيار اسم مستخدم في الدخول الأول إلى المنصة فقط كما ذكرنا من قبل. لوحة التحكم في مستقل تختلف شاشة العمل في مستقل عن خمسات حيث تعرض خمسات لك أهم الخدمات والفئات الخدمية على شاشتها الرئيسية بينما تعرض لك منصة مستقل لوحة التحكم الخاصة بك ويظهر فيها من أعلى يمين الصفحة صورتك الشخصية والتي ستُمَهر بالعلامة الخضراء بعد توثيق هويتك في حسوب، وفي نفس السطر يظهر الرصيد الكلي والرصيد القابل للسحب، حيث تحتفظ المنصة بأرباحك عن المشروع الذي سلمته للعميل بعد الانتهاء منه بنجاح لأسبوعين من أجل ضمان حقوق كافة الأطراف إذا حدثت أي مشاكل، وهذا لا يكون رصيدًا قابلًا للسحب، بل يكون من الرصيد الكلي. أسفل هذا السطر ستكون خانة الرسائل الخاصة بالمشاريع مع العملاء وبجانبها تفاصيل المشاريع التي نفذتها والتي تقدمت بعروض إليها وغير ذلك، يحق لك التقدم بعروض تصل إلى 10 مشاريعة نشطة في نفس الوقت فقط وقت كتابة هذا الكتاب (اطلع على صفحة الأسئلة الشائعة لمزيد من التفاصيل). في السطر التالي تظهر خانة أعمالك، وهي أهم ما يجب عليك تحسينه والعمل عليه لتزيد فرصة حصولك على المشاريع. معرض الأعمال ذكرنا في ما تقدم من الكتاب أن معرض الأعمال هو المفتاح الحقيقي للحصول على مشاريع ضمن المنصة، وهو ميزة وخدمة مقدمة من المنصة للمستقلين حيث يمكنك وضع معرض أعمالك هنا لعرضه رسميًا على جميع عملائك في أي مكان، كما يمكنك التسويق لنفسك كمقدّم خدمات احترافية من خلال تسويق معرض أعمالك في مستقل في كل مكان من مواقع التواصل الاجتماعي ومواقع الإنترنت الأخرى، بل حتى عبر إضافة رابط له أو رمز QR مثلًا في بطاقة العمل الخاصة بك. وهنا، لا تعرض أعمالًا منخفضة الجودة بغرض زيادة عدد أعمالك، فالعملاء لا يهتمون إن كان لديك 100 عمل في معرض أعمالك، لأنهم غالبًا لن يشاهدوها جميعها، فليكن عدد الأعمال وسطيًا بين 25 إلى 50 عملًا، وركّز على وضع أفضل أعمالك ضمن الأعمال العشرة الأوائل التي ستظهر في المعرض، ويمكنك تحقيق ذلك عبر إضافة أفضل أعمالك العشرة كآخر أعمالك في معرض الأعمال. ولإضافة عمل في المعرض، انتقل إلى صفحة أعمالي ثم انقر على "+ أضف عمل جديد" من لوحة التحكم أو انتقل إلى صفحة معرض أعمالك وانقر على الزر ذاته هناك. ستظهر لك صفحة إدخال عمل جديد، أضف العنوان المناسب والمميز للعمل ثم أضف شرحًا له والغرض منه وميزاته، وفي حال كان العمل يتضمن فيديو أو موقع إنترنت أو تطبيق هاتف محمول فيمكنك وضع رابط للعمل من الخانة التالية. حدد تاريخ إنجازك للعمل وأخيرًا حدد المهارات المستخدمة في تنفيذ العمل، هناك مهارات محددة مسبقًا يمكنك أن تختار من بينها أو أن تضيف مهارة خاصة بنفسك. المهم هنا هو وضع الصورة المصغرة لهذا العمل بحيث يظهر العمل بأحلى حلة ويجب أن تكون الصورة معبرة عن الخدمة المقدمة، وفي حال وجود أكثر من صورة للعمل يمكنك إضافة جميع الصور المتعلقة أيضًا. تصفح المشاريع بعد أن تكمل ملفك الشخصي في حسوب وتوثق هويتك، وتنشئ معرض أعمال مميز، يمكنك الانطلاق إلى البحث عن المشاريع لتقديم عروضك، انقر على تصفح المشاريع من الشريط العلوي للموقع، ستظهر لك صفحة المشاريع المفتوحة وهي تشمل جميع الاختصاصات المتاحة على المنصة، حدد خيار نوعية المشاريع التي تتقنها من الشريط الجانبي الأيمن لتظهر لك مشاريع المتعلقة بتخصصك فقط. انظر المشاريع التي قد تناسب خبراتك ثم ادخل عليها وتصفحها بدقة. سيكون في يسار صفحة المشروع صورة صاحب المشروع واسمه -وهو عميلك المحتمل هنا-، إضافة إلى الميزانية التي رصدها العميل لهذا المشروع والمدة الزمنية التي يريد أن ينفذ المشروع خلالها، أما على اليمين فشرح للمشروع يضعه صاحبه من خلال خانة تفاصيل المشروع التي يشرح بها العميل ما يحتاجه. كما يضع العميل تحتها المهارات التي يتوقع توفرها لدى المستقل، ثم تجد خانة وضع العرض على المشروع، حيث تستطيع التقدم بعرضك على هذا المشروع وبعدها تظهر العروض المقدمة من قبل بقية المستقلين. وبعد التقدم بعرضك وموافقة العميل على العرض قد يتواصل معك العميل صاحب المشروع للاستفسار عن أمور تتعلق بالمشروع مثل فهمك للمشروع وكفاءتك وقدرتك على تنفيذ، وقد يتفاوض معك على السعر الذي طلبته في العرض، وإذا اتفقتما على شروط مرضية لكليكما يبدأ تنفيذ المشروع لتفتح صفحة نقاش خاصة بالمشروع بين صاحب المشروع والمستقل وتنتهي بتسليم المشروع من قبل المستقل لصاحب المشروع الذي يستطيع أن يقيّم المستقل وكذلك تستطيع أنت كمستقل أن ترد على هذا التقييم، ومن ثم تنقل الأرباح إلى قسم الرصيد المعلق للمستقل. تفاصيل الرصيد اضغط على صورة ملفك الشخصي أعلى يسار الصفحة لتنبثق قائمة تتضمن خيار الرصيد، وستجد في صفحة الرصيد أربعة أنواع للرصيد وهي الرصيد الكلي وهو مجموع الأرصدة، والرصيد المعلق وهو الأرباح المحققة من تنفيذ المشاريع والتي لم يمضي عليها المهلة المحددة من قبل المنصة، والرصيد المتاح، وهو الرصيد الذي يمكن استخدامه لفتح مشاريع ضمن المنصة، وأخيرًا الرصيد القابل للسحب وهو الرصيد الذي يستطيع المستقل أن يسحبه عبر الباي بال PayPal إلى حسابه الشخصي. تتضمن المنصة مدونة غنية بالمقالات المفيدة في مختلف المجالات المتعلقة بالعمل الحر وإدارة الأعمال والتسويق والكثير من المقالات المساعدة والنصائح في استخدام المنصة وكيفية تقديم العروض الأفضل لزيادة فرص حصولك على الوظائف وتحصيل الأرباح. وإذا أردت تفصيلًا أكثر عن هذه المنصة وكيفية استخدامها، تستطيع قراءة دليل استخدام مستقل المجاني من أكاديمية حسوب. وبهذا نختتم الحديث عن منصات العمل الحر العربية لننتقل للحديث عن منصة العمل عن بعد الرائدة في الويب العربي ألا وهي منصة بعيد. منصة بعيد على عكس منصات العمل الحر مثل خمسات ومستقل، فإن منصة بعيد مخصصة للعمل عن بعد، حيث تطرح الشركات والمؤسسات الوظائف الشاغرة لديها شرط أن تكون بنمط العمل عن بعد في المنصة ليتقدم الراغبون في الحصول عليها بطلباتهم. يتعين على العامل عن بعد الالتزام بقوانين الشركة التي توفرها ضمن دليل العاملين أو ضمن النظام الداخلي للشركة إذ سيصير أحد أفرادها العاملين، فسيتعرض للعقوبات الإدارية في حال ارتكابه للمخالفات، كما يتضمن الدليل نظام المكافآت والحوافز والعقوبات والإجازات والزيادات الدورية على الراتب وكل ما يتعلق بأمور العمل التنظيمية. بعد التسجيل في حساب حسوب الموحد تستطيع تسجيل الدخول إلى هذه المنصة مباشرة، وقد يطلب منك اختيار اسم مستخدم في الدخول الأول إلى المنصة فقط واختيار نوع الحساب وسنركز هنا على حساب "باحث عن عمل" وسيطلب منك أيضًا تحديد تخصصك ومسماك الوظيفي. آلية عمل المنصة تقوم الشركات والمؤسسات بطرح الإعلانات عن الوظائف الشاغرة لديها بحسب الاختصاصات المتاحة على المنصة، وهي البرمجة والتطوير والتسويق والكتابة والترجمة وإدارة الأعمال والدعم الفني والتصميم. ويمكنك التوجه مباشرة إلى القسم الذي يتضمن اختصاصك لمشاهدة عروض الوظائف المطروحة ضمن هذا الاختصاص، وستجد طلبات توظيف اختصاصات متنوعة في كل مجال من المجالات، مثل مهندس برمجيات أو مطور تطبيقات للهواتف المحمولة وغيرها من الموجود في قسم البرمجة والتطوير مثلًا، كما في الصورة التالية. وعند الضغط على أحد هذه الطلبات ستظهر لك صفحة الطلب بعنوان الطلب في الأعلى ثم يليها وصف الوظيفة المطلوبة ثم المهام الوظيفية التي يجب على العامل عن بعد تنفيذها والعمل بها، ثم تعرض الشركة المؤهلات الواجب توفرها في المستقل وقد يُطلب إبراز شهادات جامعية إضافة إلى الخبرات السابقة، ثم تذكر الشركة مواصفات العمل مثل ساعات العمل والإجازات وطبيعة العمل، ثم طريقة التوظيف التي توضح الشركة فيها مراحل التوظيف التي يجب أن يمر بها العامل ليتمكن من الحصول على الوظيفة، ثم تظهر مميزات العمل وهي المزايا التي يحصل عليها العامل من خلال العمل في الشركة، وأخيرًا المعلومات المطلوبة من العامل للتقدم إلى الوظيفة. تجهيز الملف الشخصي لإثارة اهتمام الشركات والمؤسسات تجاهك وزيادة نسبة قبول طلبات التوظيف بالنسبة لك، يجب أن تبني ملفًا شخصيًا قويًا، فهو أساس النجاح في الحصول على وظيفة ضمن إحدى الشركات عبر منصة بعيد. اضغط على صورتك أعلى يسار الموقع ثم اضغط على اسمك. اضغط على زر "تعديل". ابن ملفك الشخصي الذي يتضمن نبذة تعريفية عنك، واكتب فيها سيرتك المهنية ومعلومات عامة عنك، يمكنك إضافة عناصر جديدة أو تعديل العناصر السابقة وإزالتها من خلال أزرار العناصر المختلفة أسفل لوحة الملف الشخصي. أضف الخبرات التي تمتلكها. يمكنك إضافة عنصر قائمة جديدة من الأسفل بعنوان مهاراتك لتضع فيها المهارات التي تمتلكها أو أن تضيف قائمة تتضمن البرامج التي تحترف العمل عليها، وأضف الشهادات العلمية التي حصلت عليها سواء كانت من جهات تعليمية حكومية أو خاصة أو حتى الدورات التدريبية التي تلقيتها، وأضف أفضل أعمالك وأميزها، ثم أضف روابط لمعرض أعمالك في مستقل وحساب خدماتك في خمسات وموقعك الشخصي وأي روابط ذات صلة بأعمالك. حاول أن تجعل ملفك الشخصي حافلًا بالمعلومات عنك وعن أعمالك ومهاراتك وإمكانياتك دون إسهاب ممل ولا تفاصيل تجعل القارئ لها يتوه فيصرف نظره عنها. وإنني أنصحك هنا بمعاملته مثل السيرة الذاتية تمامًا فما هو إلا نسخة رقمية منها فقط، وفي هذا أرشدك إلى سلوك من يقرأ هذه السير وينظر فيها ليقيم أصحابها، إذ حدث أني أرسلت إلى أحدهم ليقيمها لما علمته عنه من خبرته في تقييم العاملين في بعض المؤسسات العربية والأجنبية التي عمل فيها من قبل. فلما أرسلت إليه سيرتي قرأها ثم رد علي أنها لا تصلح كسيرة ذاتية، فقد وضعت فيها "سيرتي" كلها بما تعلمته وما درسته وما عملت فيه، لكنه أخبرني أني إذا كنت مهندسًا مثلًا لكنني أتقدم لوظيفة تعليق صوتي أو سائق اختبارات أو مترجم، فماذا يعني الشركة التي أتقدم لها إن كنت أعظم مهندس في التاريخ إن لم أكن سأتقدم إلى وظيفة مهندس؟! فهي ستبحث عن أي شيء متعلق بالمجال الذي ستوظفك فيه فقط، ويجب أن يجيب ملفك الشخص عن سؤال المُوظِّف: "ما الذي يجعلني اختارك للعمل على هذه الوظيفة؟" كذلك تتضمن المنصة أيضًا إرشادات الاستخدام والأسئلة الشائعة وشرحًا مفصّلًا عن كيفية التقدم للعمل عن بعد إضافة إلى صفحة عن المنصة وصفحة بيان الخصوصية والتي يمكننا الوصول إلى عبر القائمة اليمنى من خلال أيقونة القائمة أعلى يمين الصفحة. خاتمة يوجد العديد من مواقع العمل الحر العربية والأجنبية عبر الإنترنت، إلا أن منصات العمل الحر والعمل عن بعد التي تديرها شركة حسوب هي الأكثر تميزًا ونشاطًا في الوطن العربي بما أنها خدمات من العرب إلى العرب، فلست في حاجة إلى لغة أجنبية إذا لم تكن الخدمة التي تريد تقديمها تتعلق بتلك اللغة، كما أن فرص الحصول على عمل عن بعد وتنفيذ المشاريع وتقديم الخدمات أكبر من خلال هذه المنصات. وتتميز هذه المنصات بأنها حازت على ثقة ملايين المستخدمين العرب سواء كانوا من المستقلين أو الباحثين عن العمل أو كانوا من أصحاب المشاريع والأعمال والشركات، وذلك لاتباعها نهجًا صارمًا في إدارة الأعمال والمشاريع والخدمات والعروض بما يضمن حقوق جميع الأطراف دون تحيّز ومن خلال تقديم خدمة عملاء رائدة ومتميزة تضم نخبة من المختصين والمحترفين في شتى المجالات. اقرأ أيضًا المقال السابق: ما يلزم العامل المستقل معرفته عن التعهيد الخارجي النسخة الكاملة من كتاب دليل المستقل والعامل عن بعد
    1 نقطة
  39. تخيّل أنك تعيش في قرية لا تتوفّر على شبكة مياه. تحتاج، للحصول على الماء، لأخذ سطل فارغ والذهاب إلى بئر وسط القرية وسحب المياه من البئر ثم العودة إلى المنزل. تعاود الكرة مرات عدّة في اليوم، حسب حاجتك للمياه. سيكون شرحُ ما تفعله بالتفصيل في كل مرة تُسأل فيها عن الأمر مضيعة للوقت؛ لذا بدلا من أن تقول “آخذ سطلا فارغا وأذهب إلى البئر وسط المدينة، ثم أسحب دلوا من الماء من البئر وأفرغه في السطل وأعود”، بدلا من ذلك تجيب اختصارا “أجلب الماء”. لقد أنشأت بهذه الإجابة دالة برمجية Function. تعريف الدوالّ الدالة هي كتلة من الأسطر البرمجية التي تنفّذ مجموعة من المهامّ وفق ترتيب محدَّد، مثلا: “آخذ السطل، أذهب إلى البئر، أسحب الماء منه وأعود”. تُعرَّف الدالة بالصياغة التالية: function functionName (parameters) { // نفّذ المهام هنا } function هي الكلمة المفتاحية التي تخبر جافاسكريبت أنك بصدد الإعلان عن دالة. functionName هو اسمُ الدالة. في المثال أعلاه فإن اسم الدالة يمكن أن يكون drawWater (اغرف الماء). يمكن أن يكون اسمُ الدالة أيا اسم تختاره ما دام يحترم شروط أسماء المتغيّرات، أي: أن يكون كلمة واحدة، أن يتكوّن فقط من حروف لاتينية (a-z, A-Z)، أرقام (0-9) أو علامة تسطير سفلي _. أن لا يكون كلمة محجوزة Reserved keywords في جافاسكريبت. المعاملات Parameters هي مجموعة من المتغيّرات تفصل بينها فاصلة لاتينية , تريد تعريفها للاستخدام داخل الدالة. المعاملات اختيارية ويمكن تعريف دالة دون معاملات. استخدام الدوالّ يمكن استخدامُ الدالة بعد تعريفها. تدلّ العبارات “استخدام الدالة”، “تنفيذ الدالة” أو “استدعاء الدالة” على الشيء ذاته. لاستدعاء الدالة نكتُب اسمَها متبوعا بقوسين (). في ما يلي مثال نعرّف فيه دالة باسم sayHello ثم نستخدمها: // تعريف الدالة function sayHello () { console.log('Hello world!') } // استدعاء الدالة sayHello() ينتُج عن تنفيذ الدالة بالطريقة المشروحة أعلاه طباعةُ العبارة Hello world. الإزاحة The indentation يجب إزاحة جميع الأسطُر البرمجية الموجودة في كتلة، أي تقع بين قوسين معكوفين {}، إلى اليمين. هذه الممارسة مهمّة جدا وتساعد في تسهيل قراءة الشفرة البرمجية وصيانتها، وتمكّنك بنظرة واحدة معرفة أن التعليمة console.log('Hello world') هي جزء من الدالة sayHello: function sayHello () { // تعليمة console.log أدناه مزاحة قليلا إلى اليمين وبالتالي فهي جزء من الدالة sayHello console.log('Hello world!') } يمكنك استخدام مسافتيْن (زر المسافة في لوحة المفاتيح مرتيْن) أو مفتاح الجدولة في لوحة المفاتيح Tab لإزاحة التعليمات في الشفرة. يفضّل بعض المطوّرين مفتاح الجدولة في ما يُفضّل آخرون المسافتين. استخدم أيهما تراه مناسبا، مع التأكد من استخدام نفس طريقة الإزاحة في كامل الشفرة. المعاملات تأخذ معظم الدوال معاملات، وهي عبارة عن سلسلة من المتغيّرات تفصل بينها فاصلة ,، تُعرَّف لتُستخدَم داخل الدالة. يمكنك تعريف معاملات بالعدد الذي تريد. function functionName(param1, param2, param3) { // نفّذ المهام هنا } تُسنَد القيم إلى المعاملات بتمريرها بين قوسين إلى الدالة في سلسلة تفصل بينها فاصلة ,. تُسمَّى القيم المُمرَّرة إلى الدالة بالمعطيات Arguments. يُسنَد المعطى الأول إلى المعامل الأول، والمعطى الثاني إلى المعامل الثاني وهكذا: functionName('arg1', 'arg2') فلنشرح الأمر أكثر بمثال. فلنقل إنك تريد تعريف دالة باسم sayName وظيفتها تسجيل الاسم الشخصي والاسم العائلي لشخص. تبدو الدالة بالشكل التالي: function sayName(firstName, lastName) { console.log('اسمك الشخصي هو ' + firstName) console.log('اسمك العائلي هو ' + lastName) } تُعرّف الدالة معاملين هما firstName وlastName. فلنفترض أن الاسم الشخصي هو “محمد” والاسم العائلي هو “عيسى”. لجعل الدالة تعمل على النحو المرغوب نمرّر لها المعطييْن محمد وعيسى كالتالي: sayName('محمد', 'عيسى') نحصُل بعد تنفيذ الدالة بالطريقة أعلاه على النتيجة التالية: اسمك الشخصي هو محمد اسمك العائلي هو عيسى عند تعريف معامل أثناء تعريف الدالة ثم استخدام الدالة دون تمرير معطيات فإن المعامل سيأخذ القيمة “غير معرَّف” undefined: sayName() النتيجة: // اسمك الشخصي هو undefined // اسمك العائلي هو undefined جملة إرجاع Return statement يمكن أن تحتوي الدوال على جملة إرجاع تتكوَّن من الكلمة المفتاحية return متبوعة بقيمة. function functionName () { return 'some-value' } عندما يجد مفسّر جافاسكريبت هذه الجملة فإنه يتوقّف عن تنفيذ التعليمات الموالية في الدالة ويُرجع قيمة (يمرّر القيمة المعنية إلى الشفرة التي استدعت الدالة): function get2 () { return 2 console.log('blah') // لن تُنفذ هذه التعليمة } const results = get2() console.log(results) // تُطبع القيمة 2، وهي القيمة المُرجَعة من الدالة // ملحوظة: لن تُطبَع القيمة 'blah' إن كانت الكلمة المفتاحية return متبوعة بعبارة بدلا من قيمة حرفية فإن مفسّر جافاسكريبت يحدّد نتيجة تنفيذ العبارة ثم يُرجِع القيمة الناتجة. تذكّر أن القيم التي يمكن لجافاسكريبت تمريرها هي إما أنواع أصلية (مثل سلاسل المحارف، الأعداد والقيم المنطقية) أو كائنات Objects (دوالّ، مصفوفات وكائنات). كلّ ما عدا ذلك يجب تقويمه (معرفة قيمته) قبل التمرير إلى الشفرة التي استُدعِيت فيها الدالة. تسلسل تنفيذ التعليمات عند استدعاء الدوال قد تكون الدوال صعبة الفهم على المبتدئين. سنرى، للتأكد من فهم الدوال تماما، مالذي يحدُث عند تعريف دالة واستدعائها. هذه المرة سنتناول كل خطوة على حدة. في ما يلي الشفرة التي سنعمل على تفكيك عملها: function add2 (num) { return num + 2 } const number = add2(8) console.log(number) // تطبع العدد 10 أولا وقبل كل شيء، نحتاج إلى تعريف الدالة قبل أن نتمكّن من استخدامها. يرى مفسّر جافاسكريبت في السطر الأول الكلمة المفتاحية function فيعرف أن الكلمة التي تليها، أي add2 هي اسم الدالة. بعد تعرّف المفسّر على اسم الدالة يتجاوز الشفرة الموجودة بين معكوفين التي تلي الاسم، لأنه حتى الآن لم يُطلب منه تنفيذ الدالة. في السطر التالي يجد المفسّر أننا عرّفنا متغيّرا ذا قيمة ثابتة اسمه number وأسندنا له القيمة add2(8). بما أن الطرف الموجود على يمين علامة الإسناد = هو دالة، فإن جافاسكريبت سيحتاج إلى تنفيذ الدالة قبل إسناد قيمتها إلى المتغيّر. يعيّن المفسّر القيمة 8 لتكون معطى للمعامل num في الدالة ويبدأ بتنفيذ الدالة. عند الدخول إلى كتلة الدالة (الشفرة بين قوسين معكوفين بعد اسم الدالة) يجد المفسّر أمامه الكلمة المفتاحية return متبوعة بعبارة num + 2، فيعرف أنه سيحتاج إلى معرفة نتيجة العبارة قبل الخروج من الدالة. بما أن قيمة num هي 8 فإن num + 2 يجب أن تساوي 10. عرف المفسّر الآن قيمة العبارة num + 2 ويمكنه بالتالي إرجاع القيمة المُتحصَّل عليها إلى الشفرة التي استدعت الدالة. فيضع القيمة المرجعة مكان الدالة فتُصبح 10 مكان add2(8). يُنشئ المفسّر، بعد اكتمال تنفيذ الطرف الأيمن من عملية إسناد المتغيّر والحصول على نتيجتها، متغيّرا بالاسم المذكور number ويعطيه القيمة 10. هكذا يُقرأ تسلسل تنفيذ التعليمات في الدوال. رفع الدوال Hoisting تُنقَل الدوال تلقائيا عند تعريفها بالطريقة التي رأيناها سابقا إلى أعلى الشفرة البرمجية. بمعنى أن طريقتيْ التعريف والاستخدام التاليّتيْن متكافئتان تماما: function sayHello () { console.log('Hello world!') } sayHello() // تُحوّل الشفرة التالية عند التنفيذ تلقائياإلى الشفرة أعلاه sayHello() function sayHello () { console.log('Hello world!') } قد يؤدّي الرفع التلقائي للدوال إلى الإرباك؛ لذا من المناسب تعريف الدوال دائما قبل استخدامها. تعريف الدوال بعبارات الدوال Function expressions توجد طريقة ثانية لتعريف الدوال، وهي عبارات الدوال. يُعرَّف في هذه الحالة متغيّر ويُسنَد إلى دالة غير مسمّاة (دالة مجهولة الاسم Anonymous funvtion) const sayHello = function () { console.log('This is declared with a function expression!') } ينبغي الانتباه إلى أن الدوال المُعرَّفة بعبارات لا تُنقَل تلقائيا إلى أعلى الشفرة. تُنتج الشفرة التالية خطأ: sayHello () // Error, sayHello is not defined const sayHello = function () { console.log('this is a function!') } تُستخدَم الدوال المُعرَّفة بعبارات كثيرا في توابع الكائنات Object methods وفي الدوالّ السهمية Arrow functions. خاتمة الدالة هي كتلة من التعليمات البرمجية تنفَّذ وفق ترتيب محدَّد على منوال: خذ سطلا فارغا، اذهب إلى البئر، اسحب الماء ثم عُد إلى المنزل. تُستدعى الدالة بإضافة قوسين () بعد اسمها. يمكنك عند استدعاء الدالة إضافة معطيات جديدة بذكرها بين القوسين مفصولة بفاصلة ,. يمكن لكلّ دالة أن تحوي جملة إرجاع تعيد قيمة إلى الشفرة التي استُدعِيت منها. يُفضَّل دائما تعريف الدوال قبل استخدامها. ترجمة - بتصرّف - للمقال Understanding JavaScript Functions لصاحبه Zell Liew.
    1 نقطة
×
×
  • أضف...