لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 01/31/23 في كل الموقع
-
set header عند تحويله لتعليق لاتتاثر الشيفرة ويعمل المتصفح مالسبب2 نقاط
-
سلام عليكم سؤالي هو عن كيفية مناداة الqueue بطريقة صحيحة في الcron jobs بالنسبة للتوقيتات لكي يتم مناداة كلا من queue:work, queue:restart, queue:retry all ما هو الcron job الخاصة بكل كوماند؟ اقصد ما هو توقيتهم بصيغة الcron2 نقاط
-
دالةبلغة c++ لإستقبال سلسلة حرفية و حساب عدد الفراغات فيها؟1 نقطة
-
1 نقطة
-
عندما أحاول تسجيل الدخول لمشروعي عن طريق البوستمان يتم الأمر بالشكل المناسب وتحدث عملية تسجيل الدخول ولكن عندما أحاول ذلك من خلال صفحة تسجيل الدخول لا تتم العملية ويظهر لي خطأ كما هو موضح في الصورة المرفقة ما يحيرني هو أن عملية تسجيل الدخول تتم من خلال البوستمان ولكن في الموقع نفسه لا يتم ذلك (ملف login من الفرونت إند مرفق) و (ملف اليوزر من الباك إند مرفق أيضا) بالمناسبة أنا أطور موقعي بالرياكت والباك إند بـ node.js & express وقاعدة البيانات mongoDB Login.rar users.rar1 نقطة
-
1 نقطة
-
1 نقطة
-
يبدو أنك تريد أن تكون مطور واجهات خلفية بما أنك تعلمت أساسيات NodeJS أو مطور Full Stack لذلك أنصحك بتعلم أحدي هذه ال Stacks. MEAN Stack MERN Stack MEAN Stack يتكون من MongoDB Express.js Angular Node.js MERN Stack يتكون من MongoDB Express.js React Node.js وهذه بعض المصادر المفيدة لتعلم هذه التقنيات. https://academy.hsoub.com/programming/javascript/nodejs/express/ https://academy.hsoub.com/programming/javascript/nodejs/ https://wiki.hsoub.com/React https://wiki.hsoub.com/Node.js https://academy.hsoub.com/devops/servers/databases/mongodb/ https://academy.hsoub.com/programming/javascript/angular/1 نقطة
-
في النسخ الحديثة من لارافل، أتاحت للمبرمجين سهولة في التعامل مع جدولة الأعمال، فبدلاً من إنشاء مجدول cron خاص لتنفيذ مهمة محددة وإدارتها مباشرةً من الخادم، أتاح إطار العمل واجهة لمعالجة هذه الأوامر مباشرةً من خلال الشيفرة البرمجية. بالنسبة لسؤالك، فالتوقيت الموجود ضمن Cron يمكنك استخدامه بنفس الصيغة من خلال الشيفرة البرمجية: ->cron('* * * * *'); بحيث يتم تغيير علامة النجمة (*) حسب التوقيت الذي ترغب فيه، وبنفس الطريقة يوجد بعض التوابع التي يمكنك استخدامها بشكل مباشر في حال لم يكن لديك خبرة مسبقة بالتعامل مع صيغة cron، من بعض الأمثلة: ->everyMinute(); ->everyTwoMinutes(); ->hourly(); ->hourlyAt(17); ->daily(); ... وبالتالي لن تحتاج لتنفيذ الأوامر مثل queue:work بشكل مباشر، بل بدلاً من ذلك يمكنك جدولة queue بالشكل التالي: $schedule->job(new Heartbeat)->everyFiveMinutes(); وجدولة المهام من خلال موجّه الأوامر أو الخادم بشكل مباشر تتم من خلال تنفيذ الأوامر بالشكل التالي: * * * * * php /path/to/your/project/artisan queue:work كما يمكنك قراءة المزيد من التفاصيل والأمثلة في التوثيق الرسمي في لارافل من قسم (جدولة المهام Task Scheduling). في حال كان لديك مشكلة أخرى، أرجو منك ذكر المزيد من التفاصيل وتوضيح سؤالك.1 نقطة
-
احتاج شخص يرفع لي موقع بلغة اللارافل بإستضافة هوستنجر1 نقطة
-
فيما يلي خطوات نشر Laravel في Hostinger: قم بالتسجيل للحصول على حساب Hostinger. أنشئ استضافة PHP جديدة وحدد الخطة التي تختارها. قم بتسجيل الدخول إلى Hostinger cPanel وأنشئ قاعدة بيانات لتطبيق Laravel الخاص بك. اتصل بحسابك عبر عميل FTP وقم بتحميل ملفات Laravel على الخادم. انتقل إلى File Manager في cPanel وانتقل إلى مجلد Laravel . أعد تسمية .env.example إلى .env واملأ التفاصيل الضرورية (قاعدة بيانات ، بريد إلكتروني ، إلخ). افتح Terminal عبر cPanel وانتقل إلى مجلد Laravel . قم بتشغيل الأمر التالي لتثبيت التبعيات: "composer install" قم بتشغيل الأمر التالي لإنشاء مفتاح تطبيق: "php artisan key:generate" أخيرًا ، قم بالوصول إلى موقع الويب الخاص بك عبر المتصفح لرؤية تطبيق Laravel الخاص بك .1 نقطة
-
سلام عليكم، عندي سؤال في الcron jobs. بالأمس ظبطت cron job انها تنادي command معين اليوم. تاريخ الأمس 2023/01/30 تاريخ اليوم 2023/01/31 فقمت بعمل الcron job كما في الصورة الصفر الأول للدقيقة والصفر الثاني للساعة ورقم 31 هو لليوم والنجمة الأولى للشهر والثانية للأسبوع.. ولكن لم يتم مناداة الcommand اللذي كان من المفترض ان يتم مناداته في بداية اليوم ال31 مع العلم ان هذا الcommand عندما يتم مناداته بشكل يدوي وبنفس صيغته بدون تغيير أي شئ يعمل بشكل صحيح 100%1 نقطة
-
1 نقطة
-
سلام عليكم. انا عندي command جاهز ولا ارغب في مناداته من الtask schedular اريد فقط مناداته من الcpanel cron jobs. هل يشترط بعد اضافته ان يتم مناداة schedule run?! وهل الصيغة * * 31 0 0 هي صيغة صحيحة لمناداة الكوماند كل شهر بيوم 31 بداية اليوم؟1 نقطة
-
مشكور جداً ❤️ إن شاء الله ح افوت للموقع واطبق تطبيقات بسيطة لحتى تثبت المعلومات اكتر1 نقطة
-
بس للأسف اللي في مستقل و خمسات ما يشرحون طريقة الرفع و انا احتاج الشرح1 نقطة
-
يمكنك العثور على مبرمجين على موقع مستقل من هنا.1 نقطة
-
يوجد في دورة دورة تطوير واجهات المستخدم التي تقوم بدراستها العديد من التطبيقات في المسارات القادمة لذلك يمكنك التطبيق مع المدرب في التطبيقات القدامة أما إذا كنت تريد التطبيق قبل ذلك يمكنك بناء أي موقع يعجبك ولكن ربما يكون هناك مواقع تحتاج لتقنيات ومهارات لم تتعلمها بعد لذلك الأفضل الإستمرار مع الدورة حالياً لأنها مرتبه بشكل سلسل مع المهارات الموجودة معك ويوجد حل آخر وهو الإطلاع على التطبيقات الموجودة في موقع frontend mentor حيث يحتوي هذا الموقع على العديد من التطبيقات مع تحديد التطبيقات التي تناسب مهاراتك وعلى حسب صعوبتها أيضاً لذلك يعتبر هذا الموقع جيد للبحث عن التطبيقات في مجال تطوير واجهات المستخدم1 نقطة
-
1 نقطة
-
1 نقطة
-
حتى تصبح مطور nodejs محترف هناك بعض المهارات الأساسية بعد nodejs منها أطر تطبيقات الويب : سيكون إطار تطبيق الويب أحد أهم التبعيات الأساسية لأي تطبيق ويب Node.js. على الرغم من أنه يمكنك كتابة ما تريد باستخدام وحدة HTTP ، يمتلك Express نسبة أكثر من جميع الأطر الأخرى المستخدمة مجتمعة . Security : لطالما كان الأمان على الويب يمثل مشكلة كبيرة ، ولكن مع كل الانتهاكات والمشكلات التي حدثت مؤخرًا ، أصبح الأمر ضرورة إيجابية الآن. تعرف على OWASP Top 10 ، وهي قائمة يتم تحديثها أحيانًا لأهم مخاوف الأمان على الإنترنت. ستساعدك هذه القائمة على تحديد ومراجعة الأماكن التي قد يكون فيها تطبيقك مقصورًا في الأمان. Databases : لن تكون قاعدة كود Node.js كافية لتشغيل تطبيق الويب الخاص بك. ستحتاج أيضًا إلى معرفة كيفية تخزين البيانات الديناميكية في طبقة دائمة مثل قاعدة البيانات. هناك عدد كبير جدًا من خيارات قواعد البيانات لسردها هنا ، ولكن غالبًا ما تكون أفضل طريقة للتفاعل معها في Node.js هي من خلال أداة رسم الخرائط العلائقية للكائنات (ORM). أحد الخيارات الشائعة هو Sequelize ، والذي يمنحك واجهة برمجة تطبيقات متسقة للتفاعل معها بغض النظر عن نوع قاعدة بيانات SQL التي تتصل بها. لا يمنحك هذا فقط طريقة ملائمة لتحديد مخطط الجدول الخاص بك وتحديث السجلات ، ولكنه يمنحك أيضًا خيار تبديل محرك قاعدة البيانات بسهولة إذا لزم الأمر. يعد Mongoose أحد أكثر أنظمة ORM شيوعًا لـ MongoDB إذا كنت تفضل خيار NoSQL. خلاصة القول هي أنك يجب أن تعرف جيدًا أحد حلول قواعد البيانات هذه. المنصات السحابية Cloud platforms : . تعد الأسماء الكبيرة دائمًا اختيارات جيدة ، مثل AWS أو Azure ، ولكن في بعض الأحيان قد يتطلب ذلك تكوين بنية تحتية أكثر مما تريد التعامل معه. يخصص العديد من موفري السحابة الصغيرة أنفسهم لتجربة مطور مريحة. الآن ، يعد Heroku و Netlify مجرد عدد قليل من الخيارات العديدة لنشر تطبيقات Node.js الخاصة بك على منصة سحابية بسهولة. تعتبر هذه المهارات هي الأساسية لتصبح مطور nodejs محترف لكن هناك العديد من المهارات الأخرى لتصبح أكثر إحترافية1 نقطة
-
مع الاسف لم اعثر على دورات كاملة حديثة ومجانية على الانترنت إلا باللغة الانجليزية وهذه المقدمة من freeCodeCamp هي افضلها : ومن الدورات العربية :1 نقطة
-
عندما تمارس العمل الحر فأنت تعلم منذ البداية بأن عملاءك قد يتوقفون في أي لحظة عن الطلب على خدماتك، وهو ما يترتب عنه توقف في الدخل، وذلك سواءً لظروف خاصة بهم، أو لأسباب تتعلق بمجال النشاط على العموم. وقد يكون هذا التوقف مؤقتًا أو نهائيًا، كما قد يأتي تدريجيًا أو دفعةً واحدة، لذلك فإن العمل الحر يتميز بحالة من عدم التأكد فيما يخص التدفقات النقدية المستقبلية، بالإضافة إلى وضعية عدم انتظام الطلبات، فقد تحقق هذا الشهر دخلًا ممتازًا بمقاييس أهدافك المسطرة، لتنخفض الطلبات على خدماتك في الشهر الموالي مرة واحدة، وتجد نفسك بالكاد قادرًا على تغطية احتياجاتك الأساسية، فما العمل؟ ينصح الخبراء الماليون بمتابعة صارمة للدخل والمصاريف والادخار على المدى الطويل، بالإضافة إلى تخصيص صندوق للمصاريف الطارئة، ويستطيع أي عامل حر أن ينمي ثقافته المالية بما يسمح له بتجاوز مرحلة التصرف العشوائي أمام تباين دخل العمل الحر واتخاذ قرارات مالية حكيمة. ضمن هذا السياق، سنقدم في هذا المقال بعض النصائح التي تساعدك على التعامل مع تأثير تباين مداخيل العمل الحر على وضعيتك المالية كمستقل. الاعتماد على الاحتياجات في تحديد المصاريف بدل الدخل قبل متابعة الدخل، ينبغي متابعة المصاريف لأن أي عملية ادخار تعتمد على تخفيضها، وهنا نحن لسنا بصدد الحديث عن النفقات الثابتة مثل الإيجار أو تأمين السيارة أو فاتورة الكهرباء وغيرها من المصاريف التي تغطي الاحتياجات الأساسية للعيش، بل نركز على المصاريف الأكثر مرونةً، والتي يمكن تقليصها عند الحاجة. إن المدخل المتبع في الإنفاق لدى أغلب الأشخاص عادةً ما يتوقف على مزيج من الاحتياجات والرغبات والشعور العام حول الوضعية الحالية للدخل، إذ تزيد المصاريف مع زيادة الدخل، وتتراجع بتراجعه، وهو مدخل غير حكي،م إذ ينبغي الاعتماد بالدرجة الأولى على الاحتياجات وترتيب أولويات المصاريف، ومن النقاط التي نركز عليها في هذا الخصوص ما يلي: ابدأ بالاحتياجات الأساسية الدنيا للعمل في بداية مسيرتك المهنية، ولا تحاول اقتناء أحدث الأجهزة الالكترونية ومتطلبات المكتب المثالي منذ البداية، بل كن صبورًا واستثمر في هذه الأمور على المدى البعيد. ابتعد عن العلامات التجارية الفاخرة وركز على الحد الأدنى للبدء في العمل. عند نهاية الشهر، وفي حالة وجدت أن أي أموال تبقت من مخصصات المصاريف لذلك الشهر، وجهها لأي احتياجات حالية ضرورية بدل التعامل معها كأموال إضافية وتوجيهها نحو أوجه إنفاق كمالية. قدّر مصاريفك الشهرية المتوقعة مسبقًا، وقارن الدخل الشهري المتراكم بها، وعند بلوغ المداخيل لمستوى المصاريف المتوقع، ابدأ التفكير في الادخار على المدى القصير والطويل، والتخطيط الجيد قبل اتخاذ أي قرارات إنفاق، وابتعد عن قرارات الشراء الاندفاعي. قبل القيام بأي عملية شراء خارجة عن مصاريفك الثابتة الاعتيادية اسأل نفسك: لماذا أقوم بعملية الشراء هذه؟ هل الغرض أو الخدمة محل الشراء يلبي حاجةً لدي أم رغبةً ما؟ إذ يجب التفريق الجيّد بين الحاجات والرغبات ضمن هذا السياق. وقبل أن تشتري هاتفًا جديدًا مثلًا أو تحجز رحلةً لبضعة أيام في مكان مريح، اسأل نفسك إذا كنت قد تعرضت مؤخرًا لجملة من الصور الإعلانية حول هذا الموضوع بالذات دون أن تدرك تأثيرها عليك، وحاول ألا تبني قراراتك الشرائية على الرغبات المماثلة، بل أن تركز على احتياجاتك وتلبيتها، خاصةً في ظل حالة عدم استقرار الدخل. المتابعة الدقيقة للمداخيل على مدى فترات زمنية طويلة تتدفق الأموال ضمن نموذج العمل الحر من عدة مصادر بسبب اختلاف الزبائن وتباين توقيت الصفقات وتنظيم المشاريع واتفاقات الدفع، ومن السهل في ظل هذه الظروف أن تظهر حالة من الفوضى وعدم التأكد فيما يخص القيمة الحقيقية لهذا الدخل، إذ نجد أن العديد من رواد العمل الحر لا يستطيعون إعطاءك مبلغًا دقيقًا للمتوسط الشهري لدخلهم إلا تقديريًا، كما لا يمكنهم تقييم دخلهم السنوي ولو تقريبيًا. تؤدي حالة عدم التأكد هذه إلى مواجهة صعوبات في التخطيط لفترات تراجع الدخل، وإلى الميل إلى التبذير خلال فترات الذروة، لذلك يُوصى بإنشاء جدول دقيق لتدفقات الأموال الناتجة عن العمل الحر ومصادرها، مع تسجيل الفارق الزمني بين تاريخ تقديم الخدمة وتاريخ قبض الأموال، وهو ما يتيح على المدى الطويل رسم صورة شاملة للدخل السنوي، فقد يتضح لك من خلال هذه الصورة أن للمشاريع طبيعة موسمية، أو أن بعض العملاء يزداد طلبهم على خدمات محددة خلال فترات معينة. وفي كل الأحوال، يسمح تسجيل التدفقات النقدية بتحقيق درجة معقولة من الاستقرار وقابلية التنبؤ، إذ يكون العامل الحر على دراية بوضعيته المالية الحقيقية خلال أي يوم من السنة، وهو ما يسمح باتخاذ قرارات أسلم. الادخار على المدى الطويل يٌعَد الادخار أداةً أساسيةً للتعامل مع تباين الدخل على مدى فترات النشاط خلال السنة، ويُتوقع من العامل الحر أن يمارس الادخار منذ بدء التفكير في الدخول إلى المجال، إذ يوصي الخبراء بإدخال على الأقل ما يغطي نفقات ثلاثة أشهر قبل التفرغ للعمل الحر، وذلك تفاديًا لتداعيات تباين الدخل. وعندما تبدأ مداخيل العمل بالاستقرار، ينبغي البدء بإنشاء حسابات ادخارية على المدى القصير والطويل. تغطي الادخارات على المدى الطويل الاحتياجات الطارئة خلال فترات انخفاض الدخل، إذا افترضنا مثلًا أنك تمكنت من ادخار مبلغ يغطّي مصاريف ثلاثة أشهر في حساب الادخار طويل المدى، فهذا يمنحك راحةً واستقرارًا ماليين لذات المدة خلال فترات الركود، وبالتالي تتجنب المنعرجات الحرجة في مشوارك المهني مثل عامل حر. والسؤال المطروح هنا هو: كيف يمكنك تعديل نمط حياتك الحالي بحيث تخفض المصاريف وتبدأ بالادخار؟ في الحقيقة، تتطلب الإجابة على هذا السؤال بدايةً تغيير النمط الاستهلاكي عمومًا، وقبول تقديم تضحيات مؤقتة من أجل منافع مستقبلية أكثر ديمومة، ويشمل نمط الحياة الذي ينبغي عليك تقبله إذا كنت تواجه صعوبات في الادخار مراجعة الطريقة التي تؤدي بها بأنشطتك اليومية والشهرية. على سبيل المثال، يُنصح بتعلم الطبخ وتحضير الوجبات منزليًا بدل طلب الطعام الجاهز. مارِس الرياضة داخل المنزل أو في الهواء الطلق بالأماكن العامة بدل دفع اشتراكات النادي الرياضي، وألغِ الاشتراكات في القنوات التلفزيونية المختلفة واعتمد على منصة يوتيوب للوصول إلى محتوى مماثل، ابحث عن حزم خدمات الإنترنت والهاتف الأرخص ثمنا وألغِ أي اشتراكات في خدمات أو تطبيقات غير ضرورية تستنزف دخلك، في النهاية، فنمط الحياة هذا مؤقت وينبغي أن تركز على وصول مدخراتك طويلة المدى إلى مبلغ معين أولا قبل مراجعته. التخطيط المسبق لأي مصاريف طارئة يدخل التخطيط المسبق لأي مصاريف طارئة من خلال تخصيص صندوق للطوارئ ضمن عملية الادخار على المدى القصير، إذ يسمح لك إنشاء صندوق للمصاريف الطارئة بالتعامل مع النفقات المفاجئة، مثل التكاليف الطبية أو مصاريف إصلاح السيارة أو الأجهزة الإلكترونية الضرورية لعملك دون التأثير على مصروفك الشهري العادي وادخاراتك طويلة المدى. ولأن هذه الحوادث تكون غالبًا غير قابلة للتنبؤ والتقدير المسبق، فإن التركيز هنا يكون على تخصيص جزء من الدخل الفائض عن الاحتياجات الأساسية لهذا الغرض دوريًا، بحيث ينمو الصندوق مع مرور الزمن. من أجل التخطيط الدقيق لصندوق الطوارئ، قدّر المصاريف الثابتة الشهرية وتابع دخلك بدقة، وعند تجاوز الدخل الشهري لمستوى هذه المصاريف، احرص على تقسيمها على صندوق المصاريف الطارئة وحسابك الادخاري على المدى الطويل؛ أما فيما يخص كيفية تعديل نمط حياتك لتوجيهه لهذا النوع من المدخرات، فإن الإجابة هي نفسها الخاصة بالادخار طويل المدى، إذ يتحتم عليك تقديم تضحيات خلال فترة الادخار للوصول على الأقل إلى ما يعادل المصاريف الأساسية لثلاثة أشهر كمبلغ أدنى لصندوق المصاريف الطارئة. من جهة أخرى، إذا كنت تعاني من مرض مزمن يتطلب مصاريفًا دورية، أو كنت تعتني بشخص أو بطفل ذي مصاريف يمكن التنبؤ بها، فيمكنك إدراج مدخرات هذه المصاريف في صندوق المصاريف الطارئة أيضًا، على أن يكون حجم المدخرات ملائمًا للاستجابة لهذه الاحتياجات، بالإضافة إلى أي مصاريف أخرى غير متوقعة، ويُمكن تخصيص حساب مستقل لهذه المصاريف إذا كان دمجها مع تلك الطارئة يؤدي إلى خلق صورة ضبابية حول وضعيتك المالية، ففي كل الأحوال، تهدف هذه الطرق إلى إعطائك صورةً واقعيةً وشعورًا بالأمان المالي، ويمكنك تعديلها بما يلائم وضعيتك الخاصة. تطوير المعرفة بالإدارة المالية الشخصية للعمل الحر لم تَعُد الإحاطة بمبادئ الإدارة المالية الشخصية حكرًا على المختصين، فأنت لا تحتاج إلى شهادة في العلوم المالية لتفهم متطلبات إدارة أموال عملك الحر بفعالية، خاصةً في عصر المعلومات الحالي الذي يمكنك فيه الوصول إلى محاضرات ولقاءات مع أخصائيين ورواد أعمال ذوي خبرات عالية بكل سهولة على منصات التواصل الاجتماعي مثل قنوات يوتيوب، وكذا على مدونات الانترنت المختصة. يُمكنك تطوير معرفتك بالإدارة المالية الشخصية من بناء الخبرة والثقة الكافية ولإدارة وادخار واستثمار أموالك بكفاءة، والحصول على هذه المعرفة يمكن أن يتم من خلال القنوات التالية: الاشتراك في رسائل الأخبار على الايميل انطلاقًا من مختلف المواقع المختصة في الإدارة المالية الشخصية ومواقع الخبراء. الاستماع إلى المدونات الصوتية المختصة. قراءة الكتب المختصة في الإدارة المالية الشخصية. متابعة قنوات وصفحات الإدارة المالية الشخصية على مواقع التواصل الاجتماعي. التفاعل مع رواد العمل الحر الآخرين ذوي الخبرة في المجال وطرح أسئلة عليهم حول كيف يديرون ماليتهم الشخصية. الاختلاط بالخبراء في المجال سواءً خلال الندوات العلمية أو مختلف الأحداث المشابهة حولك، أو عن طريق التواصل معهم عبر الخط. في الأخير، سواءً تعلق الأمر بمتابعة الدخل أو باتخاذ القرارات الانفاقية والادخارية، فإن المسألة تبقى متعلقةً ببناء معرفة وخبرة في أمور إدارة مالية العمل الحر، والفهم العميق لطبيعة دخل نشاطك وكيفية التعامل معه بمرونة، وهي قضية تحتاج إلى وقت معين للتبلور، لذا ركز على أن تبدأ تدريجيا في جمع هذه الخبرات وتعلم شيء جديد كل يوم، وتوقع الأفضل مع مرور الأيام. المصادر Jenny Knizner : Being your own boss: How to overcome the financial instability of freelancing TIFA ONG: Freelancer Financial Anxiety Is Real. But Hey, These 3 Things Will Help Anuja Bharech : How To Manage Your Finances As A Full Time Freelancer Yuan Yue: How to Spend Money Wisely as a Freelancer Ines Bellina: I Made $55,000 as a Freelancer Last Year. Here’s How I Budget, Save, and Spend My Money اقرأ أيضًا مجموعة نصائح لإدارة ميزانية العمل الحر بكفاءة تحديات إدارة مدخول العمل الحر وكيف تتغلب عليها الطريقة الأمثل لإدارة ميزانيتك بكفاءة وتسجيل أرباح كعامل مستقل الدليل الشامل لتحديد ميزانية مشروع في العمل الحر1 نقطة
-
كما في التعليق السابق فإنه في لغة javascript لا وجود لمفهوم الدالة main كما في اللغات الأخرى مثل java لذلك الدالة main التي تتكلم عنها هي دالة مثل أي دالة أخرى يقوم المبرمج بكتابتها . لماذا لا نحتاج للدالة main في ال javascript ؟ في اللغات التي تحتاج للدالة main يحتاج البرنامج إلى نقطة دخول. يكون هذا عادةً عنوانًا في الرأس يشير إلى تعليمة جزء الكود أي نقطة البداية لتنفيذ البرنامج بينما في javascript ليس لها الدالة main حيث أن البرنامج يبدأ بالتنفيذ من الأعلى إلى الأسفل. و إذا تم تضمين ملفات متعددة في الصفحة ، فستتم إضافة الوظائف والمتغيرات المعلنة فيها إلى النطاق global (ما لم يتم الإعلان عنها في وظيفة مجهولة)1 نقطة
-
1 نقطة
-
أهمية البرمجة تنبثق من العصر الذي نعيش فيه حاليًا وهو عصر ما بعد الثورة الرقمية بكل تفاصيله، إذ دخلت الحواسب والأجهزة الذكية والروبوتات جميع مناحي حياتنا من التواصل إلى التسوق إلى التعلم إلى تحليل البيانات وصولًا إلى الروبوتات المقادة عن بعد مثل الروبوتات الجراحية ومسابر الفضاء، وذلك يتطلب عملًا حثيثًا يضطلع به مئات الآلاف من التقنيين والمبرمجين لتأمين الوسيلة الأفضل للتخاطب بين البشر وهذه التجهيزات حتى تؤدي وظيفتها بالطريقة الأفضل والأكثر أمانًا لتبقى التقنيات الرقمية على قدر كبير من الموثوقية. تتجلى أهمية البرمجة في بناء واجهات التخاطب والتحكم بتلك التجهيزات الرقمية وإدارة منظوماتها سواء في الموقع الفيزيائي نفسه أو عن بعد بالاستفادة من تقنيات الويب والاتصال مع قواعد البيانات وتحليلها واستخلاص الرؤى واتخاذ القرارات. ما هي البرمجة؟ البرمجة عمومًا هي تلقين المتلقي ما ينبغي فعله لأداء وظيفة ما وفق نهج يفهمه. فإن عوّدت نفسك على الاستيقاظ باكرًا في نفس التوقيت لتشرب قهوتك الصباحية سيجوز لنا القول أنك برمجت نفسك على هذا الأمر، وعندما تضبط منبهك للاستيقاظ على الساعة الخامسة فستكون قد برمجت منبهك لأداء هذه المهمة. وينسحب الأمر إلى مجال الآلات لتصبح عملية تلقينها كيفية التصرف هي المقصود غالبًا بعبارة برمجة، سواء أكانت هذه الآلات حواسيب أو الهواتف الذكية أو روبوتات. فالبرمجة وفقًا للمصطلح التقني الشائع هي كتابة مجموعة متسلسلة من التعليمات التي تفهمها الآلة لتؤدي عملًا بسيطًا أو مجموعة معقدة من الأعمال باستخدام لغة تفهمها الآلة. تُدعى تلك اللغات التي تفهمها الآلة بلغات البرمجة Programming Languages، ونظرًا لأهمية البرمجة في تشغيل واستثمار الحواسيب والتجهيزات القابلة للبرمجة، تتعدد لغات البرمجة المستخدمة وفقًا للغاية من البرامج وطبيعة الجهاز الذي يُبرمج، لهذا تجد كمًا كبيرًا من لغات البرمجة العامة والمخصصة لإنجاز البرامج المطلوبة بأفضل أداء. تُستخدم الحواسب عادة في كتابة البرمجيات ثم تُنقل إلى التجهيزات التي تحتاجها مثل الحواسب الأخرى أو الهواتف أو الروبوتات وغيرها من التجهيزات الذكية. ما هي أهمية البرمجة؟ تتجلى أهمية البرمجة في تطبيقاتها المتنوعة في شتى المجالات التقنية، إذ تشكل العمود الفقري لكل أشكال التطور المبني على تفاعل الإنسان والآلة الحالي والمستقبلي. من أهم المجالات التي تعتمد على البرمجيات نجد: توطين البيانات وإدارتها. التعليم الإلكتروني والتعلم عن بعد. التجارة الإلكترونية وريادة الأعمال. بناء الأنظمة الخبيرة وأنظمة اتخاذ القرار. التصميم الرسومي ومعالجة الصور. تحليل اللغات الطبيعية. برمجة الروبوتات. أهمية البرمجة في توطين البيانات وإدارتها يُقصد بتوطين البيانات تخزين وتأمين البيانات المحلية الوطنية أو القومية لجميع أشكال الإحصائيات الإنتاجية والديموغرافية لأغراض التوثيق والتحليل وبناء استراتيجيات الدولة المستقبلية على أساس علمي ومنهجي صحيح. تأتي أهمية البرمجة في مجال توطين البيانات في بناء برمجيات قادرة على تخزين وتصنيف وتحليل مختلف أنواع الإحصائيات الحيوية إضافة إلى تطوير برمجيات تحليل بيانات موثوقة قادرة على توفير رؤية دقيقة لما سيؤول إليه الوضع في المستقبل بناء على نتائج التحليل. صحيح أن سوق البرمجيات العالمي مكتظ بكافة أنواع البرمجيات لتنفيذ أية مهمة تقريبًا، إلا أن الاعتبارات الأمنية للحكومات تجعل من أولى الأولويات وخاصة في الدول المتقدمة تقنيًا بناء برمجيات خاصة بها لإدارة مختلف شؤونها، وهذا ما نراه في الواقع عالميًا. أهمية البرمجة في مجال التعليم الإلكتروني والتعلم عن بعد فرض الواقع التقني الجديد تغييرًا جذريًا في مختلف المفاهيم ومنها مفهوم التعلم، إذ مهد تطور الحاسوب والتقنيات المرتبطة به إلى ظهور منصات تعلم إلكترونية لا يُضطر فيها المتعلم إلى الإنتقال إلى المدرسة أو المعهد أو الجامعة لمتابعة دراسته في مواعيد محدد وضمن خطة دراسية صارمة، بل يتابع دراسته من خلال الاتصال مع منصة التعليم الإلكتروني من خلال شبكة الإنترنت أو الشبكات المحلية وفق البرنامج الزمني والأوقات التي تناسبه مما يعطي حرية كبيرة في التحصيل العلمي دون التعارض مع أي عمل آخر يمتهنه المتعلم. لقد سهّلت البرمجة وجود مثل هذه المنصات، فكتابة برمجيات متخصصة في إدارة كل متعلم لبرنامجه الزمني وإدارة المنصة لشؤون متعلميها الدراسية والمالية بفعالية وإدارة طريقة التواصل بين المتعلم والمعلّم ومصادر التعليم. إن نجاح المنصات التعليمية الأكثر شهرة على الصعيد العربي والعالمي مثل أكاديمية حسوب تأتي من التقنيات البرمجية التي تستخدمها لتسهيل التواصل مع المتعلمين وتقديم المعلومة بأفضل شكل ممكن. أهمية البرمجة في مجال التجارة الإلكترونية وريادة الأعمال لا شك بأن المتاجر الإلكترونية على الرغم من أنها في مرحلة النمو حاليًا في المنطقة العربية من أكثر مجالات العمل جذبًا للراغبين في الانطلاق في عالم التجارة الإلكترونية نظرًا لمرونتها العالية وسهولة إدارتها. وتظهر أهمية البرمجة في هذا المجال في تصميم وبناء متاجر إلكترونية جذابة يسهل للعملاء استخدامها وتستخدم في هذا الصدد تقنيات الويب المختلفة التي تعتمد أساسًا على شبكة الإنترنت. إضافة إلى المتاجر الإلكترونية، تظهر أهمية البرمجة في تصميم وبرمجة مواقع الويب أو المواقع الإلكترونية التي تقدم دفعًا كبيرًا للأعمال الناشئة وتروّج لعلاماتها التجارية. إن اختيار اللغة البرمجية المناسبة والتقنيات المناسبة لتحقيق المطلوب من الموقع أمر حيوي جدًا في نجاحه واستمراريته. أهمية البرمجيات في مجال اتخاذ القرار والأنظمة الخبيرة إن اتخاذ قرار معين يتطلب دراسة مختلف الجوانب التي تحيط بظروف اتخاذه والغاية منه. لكن عندما تكون القرارات متعلقة بعدد كبير من العوامل متفاوتة التأثير سيجعل المسألة برمتها أكثر تعقيدًا وحساسية. هنا تأتي دور البرمجة في وضع تنفيذ خوارزميات قادرة على التعامل مع مختلف العوامل المؤثرة في اتخاذ قرار معين بطريقة تشابه طريقة تفكير العقل البشري لكن بسرعة أكبر بكثير وبالاستناد إلى قواعد معرفية ضخمة جدًا قد لا تمتلكها منظومة اتخاذ القرار البشرية مهما كان كم الخبرة التي يحملها أعضاء هذه المنظومة. تُدعى هذه المنظومات البرمجية بالأنظمة الخبيرة وتظهر أهمية البرمجة في هذا المجال في تأمين القواعد المعرفية اللازمة عن طريق برمجيات تحليل البيانات وبناء محرّكات تحليل منطق اتخاذ القرار. أهمية البرمجة في التصميم الرسومي ومعالجة الصور تُعد التصميمات الفنية والصور المتحركة والتحريك السينمائي من أهم التقنيات المستخدمة في الترويج الإعلاني والتسويق وصناعة السينما. ولا يخفى على أحد الدور الكبير الذي لعبته الحواسيب في تطوير هذه الصناعة التي بلغت مستويات رائعة جدًا من الواقعية. ولم يكن لهذا الصناعة الإزدهار لولا تقنيات البرمجة الذي وظفت علوم الرياضيات والفيزياء والحركة في وضع خوارزميات غاية في الدقة للفصل بين الصور على شكل طبقات متراكمة لإنتاج صورة كلية وتحريك هذه الصور وفق أنماط مختلفة لإنتاج المشهد السينمائي المطلوب. تظهر أهمية البرمجة في وضع خوارزميات الحركة ومعالجة الصور موضع التنفيذ من قبل الحواسب وبناء برامج تعتمد على هذه الخوارزميات لإنتاج العمل الفني المطلوب. أهمية البرمجة في مجال تحليل اللغات الطبيعية يُقصد بتحليل اللغات الطبيعية العملية التي يحلل فيها الحاسوب أو الأجهزة الذكية كلام البشر ويفهم محتواه وينفذ الأوامر مباشرة. فعندما تنقر على أيقونة الأوامر الصوتية في جوجل وتقول "Hi Google" يستعد البرنامج لفهم كلامك والبحث عن مضمونه، وهذا تطور رائع جدًا في مضمار التواصل مع الآلة. ولم تكن هذه التقنية لتزدهر لولا البرمجيات وخوارزميات التعلم التي تقف خلفها والتي تسعى الشركات إلى تطويرها باستمرار لدعم تحليل وفهم مختلف اللغات المحكية وتحويلها إلى نصوص مكتوبة أو لتسهيل التعامل مع الآلات عمومًا. أهمية البرمجة في مجال الروبوتات لا يخفى على أحد الدور الكبير الذي تلعبه الروبوتات في كافة المجالات من التجهيزات المنزلية الذكية إلى المصانع المقادة بالروبوتات إلى الطيران المسير إلى التحكم بمركبات روبوتية في الفضاء الخارجي. تعتمد برمجة الروبوتات أساسًا على لغات برمجة عامة الأغراض مثل بايثون أو جافا ثم تبنى مكتبات خاصة أو مجموعة أدوات باستخدام هذه اللغات لتنفيذ إجرائيات برمجية تتحكم بمكونات الروبوت على صعيد الحركة أو تحسس البيئة المحيطة أو عمليات اتخاذ قرار. وكلما كان البرنامج أفضل من ناحية الشيفرة أي من ناحية إنجاز مهامه بأبسط وأدق شكل كلما كان تجاوب الروبوت متناسبًا مع طبيعة العمل الذي يوكل إليه. وهنا تظهر أهمية البرمجة في جعل برمجيات الروبوتات مثالية. فوائد البرمجة تتغير نظرتك إلى أهمية البرمجة وفوائدها وفقًا لموقعك منها، فلأصحاب المشاريع التي تنتج البرمجيات رؤاهم ولأصحاب المشاريع التي تستخدم البرمجيات رؤاهم وللمبرمجين أنفسهم رؤاهم الخاصة. لهذا سنحاول أن نتحدث بداية عن فوائد البرمجة عمومًا ثم تفصيل هذه الفوائد وفقًا للتوجهات المختلفة للمهتمين. من أهم فوائد البرمجة نجد: البرمجيات صناعة متقدمة ومزدهرة ويزداد سوقها اتساعًا ومنافسةً فهي مجال مناسب للاستثمار. تساعد على تطوير الأعمال على كافة الأصعدة من خلال إيجاد منظومات إدارة وتحليل قوّية وفعّالة. إيجاد الحلول التقنية للكثير من المشاكل الصناعية والاقتصادية من خلال تقنيات الذكاء الصنعي دون المخاطرة بتطبيق حلول غير مضمونة. يزداد الطلب كثيرًا على المبرمجين من مختلف الاختصاصات، مما يجعل البرمجة مهنة مميزة على صعيد تطوير المسار المهني للمهتمين كما أن مردودها المهني مرتفع نسبيًا. فائدة البرمجة لشركات إنتاج البرمجيات إن البرمجيات صناعة رائجة جدًا ومهمة جدًا لتطوير شتى المناحي التقنية، لذلك تُعنى الشركات المنتجة للبرمجيات بتطوير منتجاتها وفق منهجيات واضحة وصارمة لضمان نجاحها. لهذا فإن الفائدة الرئيسية للبرمجة وفقًا لوجهة نظر الشركات المنتجة قائم على ركيزتين اثنتين: الأولى الحصول دومًا على منتجات فريد ومطلوبة لضمان التفوق في مجالات محددة، والثاني بناء منتج قابل للاستمرار والمنافسة في حال وجود منافسين وهذه هي الحال دومًا في أية صناعة. وهكذا تجد مايكروسوفت وآبل مثلًا مهتمتين بتطوير لغات برمجية تخدم الهدفين السابقين، بينما تهتم شركات اخرى مثل أدوبي بإنتاج برمجيات التصميم بمساعدة الكمبيوتر وهكذا. فائدة البرمجة لأصحاب المشاريع يعتمد أصحاب المشاريع على البرمجة لعدة غايات أساسية: إدارة وتنظيم الأعمال الإدارية والمالية من خلال تطوير برمجيات مخصصة أو شراء حزم برمجية جاهزة. تصميم وبناء مواقع ويب مخصصة للترويج عن الشركة أو العمل، وتُعد هذه المواقع الواجهة الرئيسية للشركة في العالم الافتراضي. إنجاز منظومات دعم القرار بالاعتماد على الأنظمة الخبيرة. إيجاد الحلول للكثير من المشاكل التقنية والصناعية في المصانع والمؤسسات الإنتاجية، من خلال تطوير أو استخدام برمجيات لمحاكاة الحلول المفترضة والتأكد من صحتها وسلامتها قبل تطبيقها الفعلي وبالتالي تخفيف الأعباء المادية وتجنب توقف العمل في حال فشل الحل. فائدة البرمجة لمن يرغبون في تطوير أنفسهم البرمجة مجال عمل واسع ومتشعب ومن أكثر مجالات العمل ازدهارًا على المدى البعيد وأكثرها طلبًا وأجورها مرتفعة نسبيًا. تساعد على الفهم الأعمق للآلات وطبيعة عملها وكيفية التعامل معها. تساعد البرمجة في تطوير المسيرة المهنية للعاملين في مختلف المجالات لأننا نعيش عصر التكنولوجيا والآلات الذكية. تقوّي القدرات التحليلية وتنمي الإبداع عند المتعلم. تزيد من من مهارة المتعلم في التفكير المنطقي وإيجاد الحلول للمشاكل التي يواجهها بطريقة منهجية. أهم لغات البرمجة تتنوع لغات البرمجة وتختلف تبعًا لتطور المسارات التي تحتاج إلى البرمجة واختلافها، إذ تجد لغات مخصصة لبرمجة وتحليل البيانات ولغات مخصصة لتطوير مواقع وتطبيقات الويب وأخرى لتطوير تطبيقات الهواتف الذكية وأخرى لبرمجة الروبوتات، كما ستجد لغات برمجة عامة الأغراض تصلح تقريبًا لبرمجة أية وظائف على مختلف الأجهزة القابلة للبرمجة. نستعرض تاليًا أهم لغات البرمجة وفقًا لمجالات الاستخدام. لغة Java لغة جافا Java هي لغة عامة الأغراض تُستخدم لبرمجة مختلف أنواع التطبيقات. تُعد هذه اللغة من أكثر اللغات انتشارًا وقد بُنيت خصيصًا لتكون عالية المحمولية، أي يمكن أن تكتب شيفرة لتنفيذ مهمة ما مرة واحدة، ثم تنقل هذه الشيفرة إلى أية تجهيزات قادرة على تفسيرها وتنفيذها سواء كانت حواسب أو هواتف ذكية. لغة بايثون Python يُصنف الكثيرون لغة بايثون على أنها أكثر لغات العالم سهولة من ناحية كتابة الشيفرة والاستخدام ولا يعود سبب انتشارها الكبير إلى سهولتها وحسب، بل للكم الهائل من مكتبات الشيفرة الجاهزة التي تساعد المبرمج على إنجاز مختلف أنواع الوظائف بكل سهولة ويسر. تُعد بايثون لغة عامة الأغراض وتُستخدم في كتابة تطبيقات سطح المكتب وتطبيقات الويب وبرمجة الروبوتات والأنظمة المدمجة. دورة تطوير التطبيقات باستخدام لغة Python احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة اشترك الآن لغة ++C لغة C++ هي لغة عامة الأغراض يعتمد عليها الكثير من مبرمجي التطبيقات ومطوري لغات البرمجة والأنظمة المدمجة في كتابة برامجهم، فهي لغة قوية تسمح بالتفاعل المنخفض المستوى من العتاد الصلب وتؤمن أداءً عاليًا شديد الكفاءة في زمن التنفيذ. وعلى الرغم من صعوبة إنجاز بعض الوظائف بهذه اللغة موازنة بلغة بايثون مثلًا، لكن أداءها المضمون في زمن التشغيل جعلها من أكثر اللغات استخدامًا. لغة جافاسكربت JavaScript لغة جافاسكربت هي لغة برمجة قوية وخفيفة تستخدم لبناء تطبيقات ومواقع الويب بالكامل، كما يمكن استخدامها ضمن بعض إطارات العمل لكتابة تطبيقات كاملة لسطح المكتب. دورة تطوير التطبيقات باستخدام لغة JavaScript تعلم البرمجة بلغة جافا سكريبت انطلاقًا من أبسط المفاهيم وحتى بناء تطبيقات حقيقية. اشترك الآن لغة روبي Ruby لغة روبي هي لغة عامة الأغراض حديثة الانتشار تركز على البساطة والإنتاجية، وقد اكتسبت شهرتها من أناقتها ووضوح صياغتها وقوتها. إذ يمكنك أخذ فكرة أولية عن الوظيفة التي تفعلها شيفرة روبي دون أن يكون لك خلفية مسبقة عن هذه اللغة وقد استفادت هذه اللغة من الكثير من المزايا المتقدمة للغات اخرى مثل Perl و Smaltalk. تعدُّ روبي لغةً برمجيةً عامة الغرض وتستخدم في بناء البرامج المكتبية، وتطبيقات الويب، وخوادم الويب، وأدوات النظام، وفي قواعد البيانات وغيرها. لغة PHP صُممت لغة PHP لبناء مواقع وتطبيقات ويب عالية الأداء والكفاءة. وتعتبر بلا منازع من أشهر اللغات التي تُستخدم في تطوير مواقع الويب. إذ تستخدم في بناء صفحات الويب وتوليد المحتوى الديناميكي للمواقع والوصول إلى الملفات الموجودة على الخوادم والعمل عليها والوصول إلى قواعد البيانات والتعامل معها والتحكم بسماحيات وصول المستخدم وتشفير البيانات. ومع وجود كل هذه الميزات يعدها الكثيرون لغةً سهلة التعلم. دورة تطوير تطبيقات الويب باستخدام لغة PHP احترف تطوير النظم الخلفية وتطبيقات الويب من الألف إلى الياء دون الحاجة لخبرة برمجية مسبقة اشترك الآن لغة كوتلن Kotlin لغة كوتلن هي لغة قوية حديثة العهد نسبيًا طورتها جوجل مستفيدة من لغتي جافا وجافاسكربت. صُممت اللغة أساسًا لتطوير تطبيقات ويب وتطبيقات نظام التشغيل Android الذي يُستخدم في الهواتف الذكية، كما بدأت مؤخرًا بدعم كتابة تطبيقات مخصصة لأنظمة تشغيل مدمجة أخرى مثل IOS. لغة سويفت Swift لغة سويفت هي لغة من تصميم شركة آبل استبدلت بها اللغة الرسمية لها Objective C التي تفتقد الكثير من ميزات اللغات الحديثة. ظهرت هذه اللغة عام 2014 وكانت مخصصة لكتابة برامج خاصة بأنظمة تشغيل آبل مثل نظام التشغيل IOS و macOS لكنها بدأت بعد ذلك بدعم أنظمة تشغيل أخرى مثل لينكس في أواخر 2015 ثم ويندوز مؤخرًا ابتداء من نسختها 5.3 عام 2020. خاتمة لقد ولجنا بلا شك عصر الآلات الذكية وسيبدأ قريبًا (إن لم تكن قد بدأ بالفعل) تدريس لغات البرمجة كغيرها من اللغات الطبيعية في المناهج الدراسية وفي مراحل مبكرة. لأن اعتمادنا على الآلات يزداد بشدة ومن الضروري تعلم أساسيات التخاطب معها لضمان استثمارها بالشكل الأمثل، فأهمية البرمجة حاليًا تماثل أهمية أي لغة أجنبية نتعلمها. لهذا آثرنا في هذا المقال عرض أهمية البرمجة ومجالات استخدامها وفق منحىً اطلاعي وليس تعلميًا حتى يكوّن المهتمون بالبرمجة فكرة عامة عن مفهوم البرمجة وتطبيقاتها وفوائدها سواءً كانوا من أصحاب المشاريع أو الراغبين في تعلم البرمجة لتطوير مسيرتهم المهنية. اقرأ أيضًا تعلم البرمجة دليلك الشامل إلى لغات البرمجة دليك الشامل إلى: لغات برمجة الألعاب تعلم PHP1 نقطة
-
تُعد شبكة الإنترنت العمود الفقري للويب والبنية التحتية التقنية التي جعلت الويب واقعًا معاشًا. ببساطة شديدة يمكن أن نعرّف الإنترنت بأنها شبكة ضخمة من الحواسيب التي تتواصل مع بعضها. يلف الغموض نوعًا ما تاريخ الإنترنت نظرًا لبدايته كمشروع بحثي مولَه الجيش الأمريكي في ستينات القرن الماضي، ثم تحوّل إلى بنية تحتية عمومية في ثمانينات القرن ذاته بدعم من عدة جامعات حكومية وشركات خاصة. تطورت مع الوقت تقنيات متنوعة تدعم الإنترنت، لكن آلية عملها لم تتغير كثيرًا: فالإنترنت وسيلة لربط الحواسيب مع بعضها بعضًا وتضمن بقاء هذه الحواسب متصلة ببعضها مهما حدث. سنناقش في هذا المقال ماهية الإنترنت وآلية عمله. لفهم مبادئ البنية التحتية التقنية للويب ولمعرفة الفرق الدقيق بينها وبين الإنترنت. الشبكة البسيطة عندما تريد من حاسوبين التواصل، لابد من وصلهما سلكيًا عبر كابل شبكة (أو كما يُعرف باسم كابل إيثرنت) أو لاسلكيًا عبر أنظمة اتصالات لاسلكية مثل تقنية الواي-فاي أو البلوتوث. وستجد أن معظم الحواسب الحديثة تدعم كل وسائل الاتصال التي ذكرناها. يمكن لهذه الشبكة أن تربط حاسوبين مع أي عدد تريده من الحواسب، لكن الوضع سيتعقد بسرعة. فلو حاولت أن تربط 10 حواسب مثلًا ستحتاج إلى 45 كابلًا وتسعة مقابس لوصلها لكل حاسوب. لحل هذه المشكلة يتصل كل حاسوب على الشبكة بجهاز حاسوبي صغير خاص يُدعى الموجّه Router، وهذا الجهاز له وظيفة واحدة: وهي التأكد أنّ الرسالة التي يرسلها حاسوب معين ستصل إلى وجهتها الصحيحة؛ أي إلى الحاسوب الصحيح. فعند ارسال رسالة من الحاسوب A إلى الحاسوب B ستخرج الرسالة من الحاسوب A إلى الموجّه الذي سيحوّل الرسالة بدوره إلى الحاسوب B ويتأكد أن الرسالة لن تحوّل إلى حاسوب آخر مثل C. عند إضافة موجّه إلى الشبكة المكونة من عشرة حواسب، سينخفض عدد الكابلات المطلوبة إلى 10 ومقبس واحد لكل حاسوب، كما سنحتاج إلى موجّه بعشرة مقابس. شبكة مكونة من عدة شبكات نلاحظ أن الأمر بسيط مع عشرة حواسيب، ولكن ماذا عن وصل مئات أو آلاف أو ملايين الحواسيب؟ لن يكفي موّجه واحد بالطبع، وطالما أن الموجّه هو حاسوب كبقية الحواسيب، فما المانع من وصل موجّهين معًا؟ لا شيء. عندما نوصل الحواسيب إلى موجهات ونوصل الموجهات ببعضها يمكننا توسيع الشبكة إلى ما لانهاية نظريًا. تتشابه هذه الشبكة التي بنيناها لشبكة الإنترنت، لكن ينقصها شيء ما. فعندما بنينا شبكتنا الخاصة التي تخدم أغراضنا، نسينا الشبكات الأخرى التي سيبنيها الآخرون لأن كل شخص قادر على بناء شبكته الخاصة ومن غير الممكن مثلًا توصيل كابلات بين منزلك وكل الشبكات المحيطة، فكيف سنحل الأمر إذًا؟ في الحقيقة هناك كابلات متعددة تصل بالفعل إلى منزلك مثل كابل الطاقة الكهربائية وكابل الهاتف. فالبنية التحتية للاتصالات الهاتفية تربط منزلك بالفعل مع أي شخص في العالم وبالتالي سيكون كابل الهاتف الخيار المثالي الذي نحتاج إليه. ولوصل شبكتنا بالبنية التحتية الهاتفية نحتاج إلى جهاز يدعى المودم Modem وهو يحول المعلومات التي توّلدها شبكتنا إلى معلومات تستطيع البنية التحتية الهاتفية فهمها وإدارتها والعكس بالعكس. بعد اتصالنا بالبنية التحتية الهاتفية ستكون الخطوة التالية هي توصيل الرسائل من شبكتنا إلى الشبكة التي نريدها. ولإتمام هذا الأمر سنصل شبكتنا أولًا بما يسمى مزود خدمة الإنترنت Internet Service Provider واختصارًا ISP. ومزود خدمة الإنترنت هي شركة تدير مجموعة خاصة من الموجهات المرتبطة ببعضها ولديها القدرة على الولوج إلى الموجهات الموجودة في مزودات خدمة أخرى. وهكذا تنتقل الرسائل من شبكتنا إلى الشبكة التي نريدها عبر شبكات مزود خدمة الإنترنت. تتكون الإنترنت من هذه البنية التحتية من الشبكات. إيجاد حاسوب معين إذا أردنا إرسال رسالة إلى حاسوب ما، علينا أن تحدد تمامًا من هو مستقبل الرسالة. لهذا السبب يمتلك كل حاسوب متصل إلى الشبكة عنوانًا فريدًا يميزه عن غيره من الحواسيب يدعى عنوان آي بي IP address (وهو اختصار للعبارة Internet Protocol أي بروتوكول إنترنت). يتكون عنوان آي بي من مجموعات مكونة من أربع أرقام تفصل بينها نقاط كالعنوان التالي: 192.168.2.10. تتذكر الحواسيب هذه العناوين جيدًا لكن يصعب على البشر تذكرها. ولتسهيل هذا الأمر يمكن تحويل هذه العناوين المؤلفة من أرقام إلى أسماء يفهمها البشر تُدعى أسماء النطاقات Domain names. فمثلًا (حتى لحظة كتابة هذه السطور ولأن عناوين آي بي تتغير) يرتبط اسم النطاق google.com بعنوان آي بي 142.250.190.78. وهكذا يُسهل اسم النطاق الوصول إلى حاسوب عبر الإنترنت. ما الفرق بين الإنترنت والويب؟ لا بدّ وأنك لاحظت أننا نستخدم أسماء النطاقات عادة عندما نتصفح الويب من خلال المتصفحات، فهل يعني ذلك أنّ الإنترنت والويب هو الشيء ذاته؟ في الحقيقة الأمر ليس بهذه البساطة. يعد الإنترنت كما رأيناه كبنية تحتية تقنية تسمح لمليارات الحواسيب بأن تتواصل مع بعضها، ويمكن لبعض هذه الحواسب والتي تدعى خوادم ويب Web servers أن توصل رسائل مفهومة بالنسبة لمتصفحات الويب، وبالتالي فالإنترنت هي البنية التحتية الأساسية بينما الويب هي خدمات مبنية على هذه البنية. ومن المفيد الإشارة إلى وجود خدمات أخرى مبنية على الإنترنت مثل خدمة البريد الإلكتروني وخدمة المحادثة المبنية على إنترنت Internet Relay Chat واختصارًا IRC. الشبكات الداخلية (إنترانيت) والخارجية (إكسترانت) الإنترانت Intranet هي شبكات خاصة تسمح لأشخاص محددين فقط من منظمة محددة الوصول إليها. تشكل هذه الشبكات بوابة خاصة تساعد الأعضاء على الوصول إلى موارد مشتركة بطريقة آمنة وتسمح لهم التعاون والتواصل فيما بينهم، فيمكن أن تستضيف منظمات شبكة إنترانت خاصة بها لمشاركة صفحات ومعلومات ضمن القسم أو الفريق ومشاركة السواقات لإدارة المستندات الهامة وبوابات لإدارة مهام تتعلق بالأعمال وأدوات للتعاون مثل المنشورات التعاونية wikis ومنصات النقاش ومنظومات الرسائل. تشبه الإكسترانت Extranet الإنترانت إلا أن الإكسترانت تتيح الوصول إلى شبكتها الخاصة كليًا أو جزئيًا للتعاون مع منظمات أخرى وتُستخدم بصورة أساسية لمشاركة المعلومات بأمان وسرية مع العملاء والمضاربين، وتتشابه وظيفيًا في الكثير من الأحيان مع الإنترانت فيما يتعلق بمشاركة الملفات والمعلومات وأدوات التعاون ومنصات النقاش وغيرها. تعمل كلتا الشبكتين على البنية التحتية نفسها التي تعمل عليها الإنترنت كما تستخدم البروتوكولات ذاتها، وبالتالي يمكن الوصول إليها من قبل الأعضاء المفوضين بذلك ومن مواقع فيزيائية مختلفة. ترجمة -وبتصرف- للمقال How does Internet work اقرأ أيضًا ما هو عنوان URL في الويب؟ الفرق بين صفحة الويب وموقع الويب وخادم الويب ومحرك البحث؟ ما هي أسماء النطاقات في شبكة الإنترنت؟1 نقطة
-
سنشرح في هذا المقال كيفية التعامل مع المسارات routes وأنواع طلبات HTTP في إطار العمل Express بتطبيق مشروع عملي، وسنتعلم كيفية تحديد المسارات واستخدام طلبات HTTP من نوع GET و POST و PUT و DELETE لمعالجة البيانات. تتعامل المسارات مع انتقال المستخدم إلى عناوين URL مختلفة، ويسهل بروتوكول HTTP عمليات التواصل ونقل البيانات من خادم Express إلى متصفح الويب. يُفضل أن يكون لديك معرفة مسبقة ببيئة Node.js، لكن ذلك ليس ضروريًا، انظر صفحة التعريف Node.js على موسوعة حسوب وننصح بقراءة صفحة طريقة الاستعمال وتشغيل الأمثلة أيضًا من التوثيق نفسه. إعداد المشروع احرص على أن تكون لديك بيئة Node.js جاهزة ومثبتة على حاسوبك حتى تتمكن من استخدام إطار العمل Express. نفذ الخطوات التالية في الطرفية Terminal: أولًا، أنشئ مجلدًا جديدًا خاص بالمشروع باسم node-express-routing: mkdir node-express-routing ثم انتقل إلى المجلد الجديد: cd node-express-routing ثانيًا، أنشئ مشروعك الجديد معتمدًا الإعدادات الافتراضية، ومن ضمنها ملف package.json حتى تتمكن من الوصول إلى الاعتماديات dependencies: npm init -y ثم أنشئ ملف index.js حيث ستتعامل مع المسارات وتوابع طلبات HTTP: touch index.js ثبت الحزمتين Express و nodemon، إذ سنحتاج إلى الحزمة الأخيرة لإعادة تشغيل المشروع باستمرار عند كل تغيير في ملف index.js: npm install express --save npm install nodemon --save-dev افتح الملف package.json باستخدام إحدى محررات النصوص وأضف سكربت البدء start لتشغيل ملف index.js عبر الأمر nodemon: { "name": "node-express-routing", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "nodemon index.js" }, "keywords": [], "author": "Paul Halliday", "license": "MIT" } يتيح لك ذلك استخدام الأمر npm start في الطرفية لتشغيل خادم Express وحفظ التعديلات. تهانينا! أصبحت جاهزًا لإنشاء خادم Express بعد أن أعددت الحزمة nodemon لتعيد تشغيل الخادم عند التعديل على الملف index.js. تشغيل خادم Express ستتعامل مع منطق دمج المسارات ومختلف أنواع طلبيات HTTP في خادم Express الخاص بك، وستعمل على إعداد وتشغيل خادم خاص بك لتتصور كيف سيبدو مشروعك في المتصفح. اطلب وحدة Express عبر التابع require، في ملف index.js ثم خزن نسخة instance في المتغير app، وبعد ذلك أعلن عن متغير PORT واضبطه إلى القيمة 3000. const express = require('express'); const app = express(); const PORT = 3000; app.use(express.json()); app.listen(PORT, () => console.log(`Express server currently running on port ${PORT}`)); ثم استدعِ التابع ()listen مع التابع ()app ومرر المتغير PORT كوسيط أول، ودالة رد نداء callback كوسيط ثاني، إذ تقوم الدالة الوسيطة ()listen بإنشاء خادم محلي على المنفذ المحدد بالمتغير PORT لمعاينة التعديلات. مرر الوسيط ()express.json إلى التابع ()app.use لتحليل البيانات الواردة من خلال طلبات HTTP الخاصة بك. اعتمدت الإصدارات السابقة على تبعية المحلل body-parser، أما في الإصدارات الأحدث ضمنت Express برمجيات وسيطة معدة مسبقًا لتحليل البيانات خصوصًا التي بصيغة JOSN. اكتب الأمر التالي في الطرفية لتبدأ تشغيل المشروع: npm start سيُخدَّم المشروع على العنوان http://localhost:3000، وستلاحظ رسالة الخطأ التالية عند الانتقال إلى المتصفح: تعد هذه خطوة البداية، الآن علينا تعريف طلبيات HTTP للتخاطب الصحيح بين المتصفح والخادم. استقبال الخادم طلبية GET من طلبيات HTTP يمكنك إرسال البيانات من خادم Express الخاص بك إلى المتصفح لمعاينة مشروعك بناءً على إرساله طلبية GET محددة الوجهة، ولفعل ذلك استدعِ التابع ()get. مع المتغير app ولا تحدد الوجهة حاليًا، ومرر له دالة تأخذ الوسطين request و response كما يلي: app.get('/', (request, response) => { response.send('Hello'); }); لاحظ أن الوسيط request يحتوي على معلومات عن الطلبية GET التي أرسلها المتصفح، بينما يرسل التابع ()response.send بيانات إلى المتصفح، إما على شكل سلسلة، أو كائن، أو مصفوفة كرد أو إجابة على الطلب المرسل. لنتعرف على المسارات وطلبات HTTP الأخرى، بعد أن طبقنا طلبية GET. التعامل مع المسارات Routes أنشئ طلبية GET مع تحديد المسار '/accounts' والمسار '/accounts/:id'، ثم صَرّح عن مصفوفة حسابات باسم accounts: let accounts = [ { "id": 1, "username": "paulhal", "role": "admin" }, { "id": 2, "username": "johndoe", "role": "guest" }, { "id": 3, "username": "sarahjane", "role": "guest" } ]; app.get('/accounts', (request, response) => { response.json(accounts); }); app.get('/accounts/:id', (request, response) => { const accountId = Number(request.params.id); const getAccount = accounts.find((account) => account.id === accountId); if (!getAccount) { response.status(500).send('Account not found.') } else { response.json(getAccount); } }); ستحصل على جميع معلومات الحسابات الموجودة في المصفوفة عند الانتقال إلى العنوان الآتي: http://localhost:3000/accounts حيث ستكون نتيجة الخرج كما يلي: [ { "id": 1, "username": "paulhal", "role": "admin" }, { "id": 2, "username": "johndoe", "role": "guest" }, { "id": 3, "username": "sarahjane", "role": "guest" } ] يمكن طلب معلومات حساب محدد بعينه من خلال إرسال مُعرِّفه إلى نقطة الوصول endpoint التالية: id:/، حيث يعتبر إطار العمل Express أن :id في نقطة الوصول /accounts/:id هي نص بديل لأحد معاملات المستخدم ويطابقها مع القيمة المقابلة في الرابط المرسل لنقطة الوصول. لاحظ النتيجة عند الانتقال إلى العنوان http://localhost:3000/accounts/3: { "id": 3, "username": "sarahjane", "role": "guest" } التعامل مع الطلبيات POST و PUT و DELETE توفر طلبيات HTTP الأخرى غير النوع GET (اجلب) مرونة أكبر في التعامل مع البيانات وهي الطلبيات POST (انشر) و PUT (ضع) و DELETE (احذف)، إذ تنشئ الطلبية POST بيانات جديدة في الخادم (تنشر على الخادم)، بينما تعدل الطلبية PUT على البيانات الموجودة (تضع بيانات في الخادم)، أما الطلبية DELETE فتمسح البيانات من الخادم. طلبية POST استخدم طلبية POST لإنشاء بيانات جديدة في مصفوفة الحسابات accounts، عن طريق استدعاء التابع ()post. مع المتغير app وتحديد المسار accounts/ في حقل الوسيط الأول: app.post('/accounts', (request, response) => { const incomingAccount = request.body; accounts.push(incomingAccount); response.json(accounts); }) ستُرسل البيانات القادمة من الطلبية POST إلى مصفوفة الحسابات accounts ثم يرسل الرد على هيئة كائن JSON. لاحظ أن مصفوفة الحسابات accounts أصبحت تحتوي على مستخدم جديد: [ { "id": 1, "username": "paulhal", "role": "admin" }, { "id": 2, "username": "johndoe", "role": "guest" }, { "id": 3, "username": "sarahjane", "role": "guest" }, { "id": 4, "username": "davesmith", "role": "admin" } ] طلبية PUT يمكن تعديل حساب ما إن أرسلت طلبية PUT إلى الخادم، ويمكن له أن يعالجها عن طريق استدعاء التابع ()put. مع المتغير app وتمرير المسار '/accounts/:id' في حقل الوسيط الأول، وستجد من خلاله مُعرِّف الحساب المدخل، وتستخدم التابع الشرطي if لتعديل البيانات الجديدة: app.put('/accounts/:id', (request, response) => { const accountId = Number(request.params.id); const body = request.body; const account = accounts.find((account) => account.id === accountId); const index = accounts.indexOf(account); if (!account) { response.status(500).send('Account not found.'); } else { const updatedAccount = { ...account, ...body }; accounts[index] = updatedAccount; response.send(updatedAccount); } }); يمكنك الآن تعديل البيانات في مصفوفة الحسابات، فإن أرسلت طلبية PUT إلى الخادم عبر الوجهة التالية: http://localhost:3000/accounts/1 لطلب تغيير دور مستخدم محدد مثل إرسال البيانات التالية: { "role": "guest" } فسيتغير دور "role" ذلك المستخدم من مدير admin إلى ضيف guest، وذلك عند الانتقال إلى العنوان http://localhost:3000/accounts/1: { "id": 1, "username": "paulhal", "role": "guest" } الطلبية DELETE يمكن حذف المستخدمين وبياناتهم إن أرسلت طلبية DELETE إلى الخادم والذي يعالجها عن طريق استدعاء التابع ()delete. مع المتغير app وتضمين المسار '/accounts/:id' في حقل الوسيط الأول. سيبحث التابع بعدها ضمن مصفوفة الحسابات عن الحساب ذو المعرف المراد حذفه ويتخذ الإجراء المناسب. app.delete('/accounts/:id', (request, response) => { const accountId = Number(request.params.id); const newAccounts = accounts.filter((account) => account.id != accountId); if (!newAccounts) { response.status(500).send('Account not found.'); } else { accounts = newAccounts; response.send(accounts); } }); لاحظ أنه عند إرسال طلبية DELETE إلى العنوان http://localhost:3000/accounts/1 أن الحساب ذا المعرف 1 من مصفوفة الحسابات accounts سيُحذَف. ختامًا تعلمنا في هذا المقال كيف يساعد تحديد المسارات واستخدام طلبيات HTTP في تفاعل الخادم مع الطلبيات التي يرسلها المتصفح كما وضحنا في مثال المستخدمين والتعامل مع بياناتهم من إنشاء وتحديث وحذف في خادم Express. للحصول على المساعدة والدعم يمكنك إضافة سؤالك في قسم الأسئلة والأجوبة في أكاديمية حسوب. ترجمة- وبتصرف للمقال How To Define Routes and HTTP Request Methods in Express لصاحبه Paul Halliday. اقرأ أيضًا التعامل مع كائن الإجابة res على طلبية HTTP في إطار العمل Express التعامل مع كائن الطلبية req في إطار العمل Express دليل استخدام Node.js وإطار العمل Express للمبتدئين1 نقطة
-
أثناء عملي بوظيفة بدوام كامل؛ كان يصادفني بعض العملاء ممن يطلبون أعمالًا كتابية لهم -بشكل حر-، ورغم ميلي لهذا النوع من العمل إلا أنني لم أكن واثقة من إمكانية التحوّل إليه بالكامل، وفي حين يعاني المستقلون عادة من مخاوف كثيرة في بداية انتقالهم للعمل الحر؛ كان لديّ تخوّف واحد فحسب: المال. فالمال هو ما يحرك العالم بالنسبة لي، وهو ما يتيح لي شراء منتجات تجميلية من علامات تجارية مشهورة، أو حضور فيلم سينمائي في ليلة عرضه الأولى، بالإضافة إلى ما هو أهم: الادخار للتخطيط للحياة التي أطمح لها، في منزلي الخاص مع أطفالي. ما منعني من الانتقال إلى العمل الحر أثناء عملي الوظيفي هو شكوكي بإمكانية تأمين متطلبات معيشتي الأساسية من خلاله، ورغم معرفتي بمستقلين يجنون الكثير من المال، إلا أنني لم أكن واثقة من أنني سأكون كذلك؛ وبدت الأمور ضبابية بالنسبة لي، فالحديث عن الراتب وكم تنفق على منزلك، وكم تتقاضى على ساعة العمل، أمور كهذه لم يكن مألوفًا الحديث عنها في محيطي. وحقيقة فإن السبب الذي دفعني للبدء بالعمل الحر هو أن المستقلين تعاملوا معي بوضوح تام بخصوص الجانب المادي، أخبروني بكم يسعرون خدماتهم وكم يجنون من العمل الحر، وأكّدوا لي وجوب اتخاذي لهذه الخطوة. أعمل كمستقلة منذ شهرين فحسب؛ رغم ذلك أشعر بأنني أبلي بلاء حسنًا دونما كثير جهد، وبرأيي فإنه يجدر بالمستقلين إجراء مناقشات مستمرة مع بعضهم البعض بشكل فعلي، كم يجب أن نسعر خدماتنا؟ كيف يمكن أن نؤمن مستقبلنا؟ نقاشات كهذه واجبة وضرورية بين المستقلين، وإليكم الأسباب: 1- حتى تعلم المقابل المادي الأنسب لعملك في بداياتهم؛ يواجه العديد من الكتاب المستقلين فرص عمل منخفضة الأجور من عملاء يرغبون بمقال مقابل 15-20$، وبالتأكيد فإن المصممين المبتدئين يتلقون عروضًا مماثلة. قد تغريك هذه العروض في خطواتك الأولى؛ والسبب -كما تظن- أنك لا تملك خبرة كبيرة في العمل الحر وأجوره؛ وأن العملاء يعرفونه بشكل أفضل. لكن هل تعلم من لديه معرفة أوسع من العملاء بهذا الشأن؟ المستقلون الآخرون. ابحث عن مستقلين في محيطك، وليكن من بينهم ذوي الخبرة الممتازة وآخرين مبتدئين مثلك، واسألهم عن الأجور التي يتقاضونها لقاء عمل مشابه، بهذا تستطيع تقدير موقعك الحالي؛ والأجر الأنسب لمستوى خبرتك. 2- لتحسين عالم العمل الحر يتعامل العديد من العملاء مع إنشاء المحتوى كسلعة، لذا يبحثون عن العروض الأرخص والأسرع، لكن هل هذه الصورة هي ما نريد ترسيخه كمستقلين عن العمل الحر؟ نحن بحاجة لجعل أجورنا كفيلة بتأمين معيشتنا بغية دعم أنفسنا بشكل أكبر، وإذا أردنا من أصحاب المشاريع أن يدركوا قيمة العمل الإبداعي، فعلينا أن نسعّر أعمالنا وفقًا لهذا المنظور، والطريقة الوحيدة التي نتأكد بها أن مجتمع المستقلين يسعّر بشكل مناسب ويقدّم أعمال متقنة ومبدعة هي عن طريق مشاركتهم ذلك، فمشاركة السعر الواجب علينا طلبه يشجع أولئك الذين يعملون مقابل الفُتات على طلب المزيد. 3- لكسر عزلة العمل الحر كنت ألتقي بالكثير من الناس يوميًا في وظيفتي المكتبية، يستمعون لطرائفي، ويشاركونني المقالب والضحكات، ويساعدوني في شتى النشاطات، كان لدي مدير يساعدني في ترتيب أولويات مهامي، وفي تطوير نفسي باحتراف. أما اليوم كمستقلة، أشعر بعزلة كبيرة مقارنة مع ذلك، وكان من الممكن أن أكون وحيدة كليًا لولا وجود مجتمع من المستقلين حولي ممن يعلمون ما معنى أن تعمل بمفردك. نتبادل الأحاديث عبر مواقع التواصل الاجتماعي خلال النهار ويتفقد أحدنا الآخر، ولكم مدّني هؤلاء المستقلون بالدعم كلما شعرت بالإحباط، عندما أصادف مراجعات مربكة من العملاء، أو عندما لا أكون واثقة كم يجب أن أسعر خدمتي، أتجه فورًا لمجتمع المستقلين لأستلهم منهم الآراء والنصح. 4- لتشارك المشاكل المادية وتبادل حلول لها تناولت الغداء مع صديقة عقب عملي الحر بفترة قصيرة، وكان لديها العديد من الأسئلة، أدركتُ أن الجانب المادي للعمل المستقل مربك وغير مفهوم بالنسبة لها، ازداد ذلك وضوحًا عندما أخبرتها بعد الغداء أن لديّ لقاء مع المحاسب، وكان استغرابها شديدًا. لندع المزاح جانبًا، فقد تجاوز العمل الحر القواعد التقليدية للأعمال الوظيفية التي تعرفها عائلاتنا ومحيطنا، ما يجعله معقدًا وغير مفهومًا بالنسبة لهم، إذ يجدر بنا أن نقدّر الضرائب بدقة، ونقتطع أجور البرمجيات التي نحتاجها؛ ونتعامل مع علاماتنا التجارية الشخصية، وننتبه لتأمين التقاعد والمستقبل. وفي الحقيقة ثمة العديد من المصادر المتوافرة على الشبكة لمساعدتنا في ذلك، لكن أيًا منها لا يعوّض المناقشات المطولة لكل حالة، وعندما نتشارك همومنا "الفريدة" ومشكلاتنا المالية النادرة مع بعضنا البعض، سندرك فجأة أنها ليست نادرة كليًا، الأمر الذي سيشعرنا بارتياح كبير. 5- ماذا عن التنافس؟ قد يميل البعض من المستقلين إلى الحفاظ على موضوع التسعير كسرّ خاص بهم، خوفًا من أن تقضي المنافسة عليهم، لكنني لا ألقي بالًا لهذا الأمر، لا أشعر بالندرة بل أعتقد أن هناك عمل يكفينا جميعًا؛ وبشكل خاص: لأولئك المميزين في مجالهم. في الحقيقة؛ فإن العاملين في مجال العمل الحر غالبًا ما يحصلون على المشاريع من خلال بعضهم البعض؛ ووفقًا لدراسة أجراها اتحاد المستقلين، فإن 81% منهم يمررون الأعمال لمستقلين آخرين. شخصيًا فقد حصلت على الكثير من المشاريع بهذه الطريقة، لذا أود أن أبني علاقات إيجابية مع بقية أفراد مجتمعي؛ وأعتبرهم أصدقاء لا منافسين. تشاركوا الوفرة لم يكن لي لأعمل كمستقلة لو لم يخبرني من يعملون في هذا المجال كم يجنون من المال، لا أعني بحديثي هذا أن تكتب الرقم الذي تتقاضاه لقاء عملك كمنشور على موقعك الشخصي، لكنني أقترح أن نكون صادقين مع المستقلين الذين يعملون معنا في ذات الدرب. ترجمة -وبتصرّف- للمقال Why Freelancers Should Discuss Rates With Each Other لكاتبته Emma Siemasko. حقوق الصورة البارزة: Designed by Freepik.1 نقطة