لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 01/30/18 في كل الموقع
-
التعريف بالمشروع هذه سلسلة من الدّروس مُوجّهة للمبتدئين بتطوير الويب، تهدف إلى تعليم استخدام بيئة Node.js وإطار العمل Express من خلال بناء مدوّنة متكاملة تسمح للكُتَّاب بإضافة التّدوينات وتسمح للزوّار بإنشاء حسابات والتّعليق على التُدوينات. لن تقتصر هذه السّلسلة على شرح Express، بل ستقدّم شرحًا (نأمل أن يكون وافيًا) للعديد من المفاهيم المتعلّقة بتطوير الويب من جهة الخوادم (Server-side web development)، حيث سنتطرّق إلى تثبيت خادوم MySQL مع شرح استخدامه في Node.js بالإضافة إلى آليّة عمل بروتوكول HTTP ونظام إدارة المستخدمين وإنشاء الجلسات، في نهاية السّلسلة سنُلقي نظرة على مواضيع تحسين الأداء والأمان قبل نشر المشروع على الويب. في نهاية هذه السّلسلة من المفترض أن يكون المتعلّم قادرًا على التّعامل مع بيئة Node.js بسهولة ويمكنه إنشاء الخوادم وقواعد البيانات وإنشاء برامج تصل بين هذه الأجزاء. إذا كنت قادمًا من عالم PHP، فستكون هذه السّلسلة مناسبة لك أيضًا على حدٍّ سواء. Node.js لعلّك سمعت من قبل بـNode.js، لكنّها ما تزال غامضةً بشكل أو بآخر خصوصًا بين المطوّرين العرب، والسبب ربّما يكون ضعف الرّغبة في التّغيير أو صعوبة تأمين استضافة مشاريعها مقارنةً باستضافة مشاريع PHP أو غير ذلك من الأسباب. Node.js هي بيئة تطوير تسمح لنا بكتابة البرامج وتنفيذها باستخدام JavaScript، اللّغة الّتي كانت حتى وقت قريب حبيسة المتصفّح؛ لكنّها لم تعد كذلك بل أصبحت تُستخدم في كتابة مشاريع الويب وتطبيقات سطح المكتب وحتى التّطبيقات الّتي تعمل في الطّرفيّة، وربّما يعود الفضل في ذلك إلى Node.js ذاتها. إن كنت استخدمت PHP مع Apache لإنشاء موقع من قبل، فستجد أن Node.js تستطيع القيام بالمهمّة ذاتها وأكثر، وبأسلوب أبسط وأكثر تنظيمًا وتوفيرًا للوقت. Express لعلّ Express أهمّ مكوّنات مشروعنا، وعليه سينصبّ معظم شرحنا. Express باختصار هو إطار عمل لمشاريع الويب يعمل في بيئة Node.js، فهو بالنّسبة لـNode.js يقابل Laravel بالنّسبة لـPHP، وإن كان يختلف عنه كثيرًا في الفكرة الّتي يقوم عليها، إذ أنّ Express يلتزم بفلسفة Node.js الّتي تهدف إلى تجزئة المشاريع الضّخمة إلى وحدات، لن تجد في Express ذاته وحدات تتعامل مع قواعد البيانات أو تتولّى إدارة الجلسات وحماية كلمات المرور وما إلى ذلك، بل عليك أن تعتاد أنّ لكلّ شيء في Node.js وحدة مستقلّة يمكن استيرادها واستخدامها مع الوحدات الأخرى لنحصل على مشروع يسهل تطويره وصيانته دون الاعتماد على مكوّن ضخم من جهة مُطوّرة واحدة قد يكون مصير تطويره إلى الإهمال في المستقبل. يتولّى Express إدارة الرّوابط وتوجيهها فقط، ويمكن توسيعه باستخدام ما يُسمّى "البرامج الوسيطة" (middleware) التي تُشبه إلى حدّ ما إضافات المتصفّح التي تستخدمها، فهي تضيف المزيد من المزايا إلى الوظيفة الرئيسيّة لـExpress، وسنجد مثلاً برنامجًا وسيطًا يحفظ الجلسات باستخدام الكعكات (cookies) وآخر يخزّن نتائج الاستعلامات بشكل مؤقّت لتسريع استجابة الخادوم... من الواجب أن نذكر أنّ Express ليس إطار العمل الوحيد المتوفّر في Node.js، ولكنّه قد يكون الأشهر لبساطته الشّديدة وهيكليّته الممتازة. يبدو المستقبل واعدًا لمشاريع مثل Koa الّذي يستفيد من المزايا القادمة إلى الإصدارات المستقبليّة من JavaScript لتحسين كتابة الشّيفرة أكثر. يُشرف على تطوير Koa الفريق المطوّر لـExpress ذاته. MySQL سنستخدم لغة قواعد البيانات الشّهيرة SQL (بنكهة MySQL إن جاز التّعبير) لتخزين التّدوينات والتّعليقات ومعلومات المستخدمين، إن كنت لا تعرف الكثير عن SQL فلا بأس، لأنّ صياغتها غاية في السّهولة وتكاد تُشبه جمل اللغة الإنكليزيّة الحقيقيّة! تثبيت Node.js للحصول على آخر إصدار من Node.js: إذا كنت تستخدم Windows أو Mac فتوجّه إلى الصّفحة الرئيسية لموقع Node.js سيقوم الموقع بالتّعرّف على نظامك وبنيته وانتقاء برنامج التّثبيت المناسب، ليس عليك سوى الضّغط على زر Install لتنزيل برنامج التّثبيت ثم فتحه ومتابعة الخطوات. إذا كنت تستخدم Arch Linux، فستجد أحدث إصدار من Node.js ضمن مستودعات مستخدمي Arch (AUR). ويمكن تثبيته بالأمر التالي إذا كنت تستخدم yaourt (الأمر مشابه بالنّسبة لكلّ البرامج التي توفّر وصولاً إلى AUR? yaourt -S nodejs --noconfirm سيُطلب منك إدخال كلمة المرور إلى مستخدمك أو كلمة المرور إلى المستخدم الجذر (إن وُجدت). كما يمكن التّثبيت بالطّريقة المشروحة في الخيار التّالي. إذا كنت تستخدم توزيعة Linux أخرى، فقد تجد إصدارًا قديمًا من Node.js ضمن مستودعات توزيعتك، لذا يُنصح بتثبيت Node.js عن طريق مُدير إصدارات Node.js المتوفّر على GitHub، ويتمّ التثبيت بالطّريقة التالية: قم بتنزيل آخر نسخة من مدير إصدارات Node.js عن طريق زر Download ZIP في صفحة المشروع على GitHub. فكّ ضغط الملفّ الذي قمت بتنزيله انتقل بالطّرفيّة إلى مسار المجلد الناتج عن العمليّة السابقة، مثلاً: cd ~/Downloads/n-master ثم قم بتنفيذ أمر بناء المشروع: sudo make install قم بتثبيت آخر إصدار مستقرّ من Node.js مستخدمًا الأمر n الذي يوفّره مدير إصدارات Node.js: sudo n stable سيُطلب منك إدخال كلمة المرور إلى مستخدمك أو كلمة المرور إلى المستخدم الجذر إن وُجدت. من فوائد مُدير إصدارات Node.js إمكانيّة التبديل بشكل سريع بين عدّة إصدارات من Node.js، فقد ترغب أحيانًا بتجربة بعض المزايا المتوفّرة في إصدار غير مستقرّ (مثل v0.11 الذي يتضمّن بعضًا من مُكوّنات ECMAScript 6) مُستخدمًا الأمر n latest، ولكنّك ترغب بالعودة للعمل على مشاريع جادّة ضمن إصدار مستقرّ. ولهذا يمكنك استخدام الأمر n stable. يمكن أيضًا تثبيت الإصدارات الحديثة من Node.js على Ubuntu والتّوزيعات الأخرى باتّباع التّعليمات الرّسميّة المتوفّرة على صفحة Node.js على GitHub. للتحقّق من تثبيت Node.js اكتب الأمر التالي في الطّرفيّة (أو سطر أوامر Windows): node -v لتحصل على نتيجة برقم إصدار Node.js الذي قمت بتثبيته، مثل v0.10.33. إن كانت النتيجة تُفيد بعدم وجود الأمر مثل bash: node: command not found (على Linux) أو node is not recognized as an internal or external command... (على Windows)، فتحقّق من اتّباع الخطوات السّابقة مجدًدًا. إنشاء المشروع لنبدأ العمل بشكل نظيف، أنشئ مُجلّدًا جديدًا في مكان ما في جهازك وانتقل إليه باستخدام الطّرفيّة، سأقوم بإنشاء مجلّد ضمن مسار مُستخدمي /home/f/ وأسمّيه my-blog، ثم سأنتقل إليه باستخدام الأمر cd (اختصارًا لـchange directory) (الذي يتطابق في Linux وMac وWindows): cd /home/f/my-blog في Windows، قد يكون الأمر مُشابهًا لهذا: cd C:\Users\f\my-blog سنستخدم الأمر init الذي يوفّره مُدير حزم Node (npm) لإنشاء مشروع جديد، افتح الطّرفيّة (سطر الأوامر في Windows) واكتب الأمر التالي: npm init سيطرح البرنامج عليك مجموعة من الحقول لتعبئتها: name: اسم المشروع، ويقترح npm اسم المجلد الحالي كاسم للمشروع، ويمكنك الأخذ بالاقتراح بترك الحقل فارغًا وضغط Enter. version: إصدار المشروع (يمكنك تركه كما هو). description: وصف للمشروع. entry point: الملفّ الرئيسيّ الذي ينطلق منه المشروع، يمكنك تركه كما هو وإنشاء الملف index.js لاحقًا. test command: الأمر الذي يجب أن ينفّذه npm عندما يطلب منه تنفيذ الاختبارات على المشروع، أي عندما ينفذ الأمر npm test ضمن مجلد المشروع الرئيسيّ. سنتركه فارغًا الآن. git repository: مسار مستودع git الذي ستستخدمه لإدارة المشروع، يمكن أن يكون رابط http:// أو git:// ويمكن تعديله لاحقًا. keywords: الكلمات المفتاحية للمشروع مفصولة بفاصلة لاتينية (,)، أمثلة: blog, mysql, expressjs, tutorial. author: كاتب المشروع. license: رخصة المشروع، يمكن استخدام أي رخصة مثل GPLv2 أو MIT. بعد الانتهاء سيعرض البرنامج عليك المعلومات التي أدخلتها وهي جاهزة للكتابة إلى ملفّ package.json، اكتب yes لكتابة الملفّ. الملفّ package.json هو نقطة الانطلاق في كلّ مشاريع Node.js، ويُستخدم للتعريف بالمشروع ووصفه عند نشره في سجلّ حزم npm، والأهم من ذلك أنّه يستخدم لحفظ ما يعتمد عليه المشروع من حزم مع أرقام الإصدارات المطلوبة لكلّ حزم؛ ومن خلال هذا الملفّ يمكن إستنساخ المشروع وإعادة تثبيت المتطلّبات للتعديل عليه في وقت آخر أو من قبل أشخاص آخرين. تثبيت متطلّبات المشروع سيعتمد مشروعنا على إطار العمل Express كما هو واضح، بالإضافة إلى قواعد بيانات MySQL لتخزين التدوينات والمستخدمين وتعليقاتهم، سنحتاج أيضًا إلى بعض المتطلّبات الأخرى التي سنثبّتها في وقت الحاجة إليها. لتثبيت أحدث إصدار من express وحفظه كمتطلّب ضمن ملفّ package.json، نفّذ الأمر التّالي: npm install express --save ملاحظة: سنعتمد الإصدار الرّابع في هذه السلسّلة لكونه أحدث إصدار في وقت كتابتها، للتأكّد من تثبيت الإصدار الرّابع حتّى بعد صدور إصدارات أحدث، يمكنك استخدام الأمر: npm install express@4.10.* --save يحتاج تثبيت MySQL إلى خطوتين: الأولى تثبيت الخادوم الذي يوفّر قاعدة البيانات، ويُنجز بطريقة مختلفة لكل نظام تشغيل: في Windows وMac OS X، يمكن تثبيته بتنزيل برنامج التّثبيت المناسب لإصدار النّظام وبنيته من الموقع الرّسمي ثمّ اتّباع خطوات التّثبيت كما في تثبيت أي برنامج آخر. في Arch Linux، أنصح باستخدام MariaDB، وهي بديل مطابق تمامًا لـMySQL ويحلّ محلّه بدون الاضطرار لتعديل أي جزء من الشيفرة، ويمكن تثبيته من خلال مستودعات مستخدمي Arch بالأمر التّالي: yaourt -S mariadb --noconfirm في توزيعات Linux الأخرى مثل Ubuntu وFedora، فقد تتوفّر MariaDB وMySQL في المستودعات الرّسميّة ويمكن تثبيتها باستخدام apt-get وyum. الخطوة الأخرى تتضمّن تثبيت عميل MySQL (أو ما يسمى MySQL client)، وهو الجزء الذي سيتواصل مع الخادوم ليجلب نتائج الاستعلام من قاعدة البيانات ويوفّرها لمشروعنا، وفي حالتنا هذه ليس سوى وحدة Node.js يمكن تثبيتها بسهولة عبر npm install واستخدامها ضمن مشروعنا؛ تتوفّر العديد من الوحدات التي تقدّم إمكانية التواصل مع خادوم قواعد بيانات MySQL، ومن أفضلها الوحدة mysql التي يمكن تثبيتها بتنفيذ الأمر: npm install mysql --save نصيحة: يمكن تثبيت الحزمتين بأمر واحد: npm install express mysql --save بعد تثبيت الحزمتين، سنلاحظ إضافة حقل جديد في ملفّ package.json يوضّح متطلّبات المشروع التي حفظناها إلى الآن (قد تختلف أرقام الإصدارات لديك): "dependencies": { "express": "^4.10.6", "mysql": "^2.5.4" } إنشاء قاعدة البيانات وإدخال بعض التّدوينات كعيّنة وجود بعض التدوينات سيساعدنا في بناء الواجهة ورؤية التغييرات بسهولة أكبر، لذلك سنقوم بإنشاء قاعدة البيانات وإدخال بعض التّدوينات إليها قبل كلّ شيء. لإنشاء قاعدة البيانات وإدخال التدوينات، سنقوم بالتواصل مع الخادوم عبر الطّرفيّة، مستخدمين البرنامج mysql الذي يتمّ تثبيته تلقائيًّا عند تثبيت خادوم MySQL أو MariaDB. افتح الطّرفية ونفّذ الأمر: mysql -u root ملاحظة: إن اخترت اسمًا للمستخدم وكلمة مرور مختلفين أثناء التثبيت، فيمكن إدخالها بالطريقة الآتية (سيطلب منك إدخال كلمة المرور إلى هذا المستخدم): mysql -u username -p ستظهر شاشة مشابهة لهذه: ملاحظة: إن واجهتك مُشكلات في بدء البرنامج mysql، جرّب إعادة تشغيل النّظام. ملاحظة (2): يمكنك الاستغناء عن استعمال صدفة MySQL إذا كنت قد ثبّتت PHPMyAdmin على جهازك، حيث بإمكانك إدخال الأوامر ذاتها في مربّع الاستعلامات. في صدفة MySQL هذه يمكننا إدخال أوامر MySQL ليقوم الخادوم بتنفيذها على الفور. سنقوم بإنشاء قاعدة بيانات المدوّنة، وسنسمّيها myblog: CREATE DATABASE myblog; النتيجة التّالية دليل على نجاح التنفيذ: Query OK, 1 row affected (0.00 sec) اتّصل بقاعدة البيانات الجديدة بالأمر: connect myblog لنقم بإنشاء جدول للمستخدمين وآخر للتدوينات ثم لندخل مستخدمًا مع 4 تدوينات كتبها في أيام مختلفة، يمكنك نسخها ولصقها في صدفة MySQL فحسب: CREATE TABLE `users` (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50), password VARCHAR(500) NOT NULL, full_name VARCHAR(50), is_author BOOLEAN DEFAULT , UNIQUE INDEX (username)); INSERT INTO `users` (username, password, full_name, is_author) VALUES ("admin", "$2a$08$Z3FpAQwRgj7W0i71TtizFO7QDjpsIRNJfHh6mLgRJRJBtheKJh1Tu", "admin", 1); CREATE TABLE `posts` (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, title VARCHAR(100), body LONGTEXT, date TIMESTAMP, author_id INT, slug VARCHAR(50), UNIQUE INDEX (slug), FOREIGN KEY (author_id) REFERENCES `users` (id)); INSERT INTO `posts` (title, body, date, author_id, slug) VALUES ("مرحبًا بالعالم!", "مرحبًا بكم في مدوّنتي المتواضعة!", "2014-12-29", 1, "hello-world"); INSERT INTO `posts` (title, body, date, author_id, slug) VALUES ("اقتباسات (1)", "الغني لو سئل عن تحسين العمل والحياة فسوف يقول: نحن نعرف أن البؤس غيرمفرح والواقع أن البؤس مادام بعيداً عنا فإننا نتسلح بفكرة أنه غير مفرح. ولكن لا تتوقع منا أن نفعل أي شيء بصدده. نحن آسفون لطبقاتكم الدنيا مثل مانحن آسفون لقطة جرباء...غير أننا سنقاتل كالمردة ضد أي تحسين لظرفكم. نحن نشعر انكم مأمونون أكثر وأنتم في حالكم هذا. إن الواقع الراهن يناسبنا ولسنا مستعدين لمخاطرة تحريركم حتى بساعة إضافية في اليوم هكذا يا إخوتي الأعزاء إن كان عليكم ان تعرقوا لدفع رحلاتنا إلى إيطاليا فلتعرقوا ولتحل عليكم اللعنة ― جورج أورويل، متشردًا في باريس ولندن", "2014-12-30", 1, "quotes-1"); INSERT INTO `posts` (title, body, date, author_id, slug) VALUES ("اقتباسات (2)", "التليفزيون يُغرقك في بحر من الأصوات والألوان بحيث لا تجد الوقت الكافي لتفكر أو تنتقد... إنه يقدم لك الأفكار الجاهزة ولا يسمح لك بالانتقاد الذي يسمح به الكتاب. ― راي برادبري، فهرنهايت 451", "2014-12-31", 1, "quotes-2"); INSERT INTO `posts` (title, body, date, author_id, slug) VALUES ("اقتباسات (3)", "أستطيع أن أقول لك يا بنيّ إنّ السّعادة ينبوع يتفجّر من القلب، لا غيث يهطل من السّماء، وأنّ النّفس الكريمة الرّاضية البريئة من أدران الرّذائل وأقذارها، ومطامع الحياة وشهواتها، سعيدة حيثما حلّت. [...] فمن أراد السّعادة فلا يسأل عنها المال والنّسب، وبين الفضّة والذّهب، والقصور والبساتين، والأرواح والرّياحين، بل يسأل عنها نفسه الّتي بين جنبيه فهي ينبوع سعادته وهنائه إن شاء، ومصدر شقائه وبلائه إن أراد. ― مصطفى لطفي المنفلوطي، الفضيلة", "2015-01-01", 1, "quotes-3"); لكلّ سطر في جدول التّدوينات الحقول التالية: العنوان title ونص التدوينة body وتاريخها date ومُعرّف الكاتب author_id الذي يُشير إلى أحد الكُتّاب المُسجلّين في جدول المستخدمين users، ثمّ slug وهو العنوان بالإنكليزية الملائم لاستخدامه ضمن رابط التّدوينة مثل hello-world في http://myblog/posts/hello-world. نحن الآن جاهزون للعمل! في الدّرس القادم سنبدأ بإنشاء الصّفحة الرّئيسيّة لمدوّنتنا، والّتي ستعرض التّدوينات الّتي أضفناها لتوّنا.1 نقطة
-
منذ وقتٍ ليس بالبعيد، طلب ريادي أعمال شاب مشورتي بشأن كيفية تسريح موظف يعمل عن بعد. حيث لم يسبق لهم أن طردوا أحد موظفيهم من قبل،سواء أكان موظفًا عن بعد أو غير ذلك، وكانوا متوترين حيال ذلك - لم ألومهم. أذكر كم كنت مذعورًا عندما اضطررت إلى تسريح أحد الأشخاص لأول مرة، خاصة أن المحادثة الشخصية لم تكن خيارًا حينئذٍ. للأسف، لقد ارتكبت عددًا كبيرًا من أخطاء التوظيف، ولكن الجانب المشرق للأمر هو أنني تعلمت الكثير عن كيفية اتباع أفضل حل للموقف الصعب. لقد شاركت النصيحة التالية مع ريادي الأعمال، وسمعت في وقت لاحق أن المحادثة سارت بشكل أفضل مما كانوا يتوقعون. لذا رغم أن التسريح هو موضوع صعب، سأشاركك نصيحتي له علّها تساعد أي شخص يحتاج لتسريح موظفه عن بعد. 7 خطوات للتسريح بلطف لا أريد أن أدعيّ بأن عملية تسريح شخص ما في أي مكان هي تجربة سيئة كما لو كنا نحن المسرَحيّن. فهي تجربة مرعبة بالنسبة لمن يتم تسريحه، بل لحظة تحوّل حياتية - ولهذا السبب فأنت بحاجة لتخفيف الألم والحيرة قدر الإمكان من الأمر. ضع نفسك على الجانب الآخر من الطاولة، واجعل الأمر يتمحور حوله. القرار قد تم اتخاذه بالفعل، ووظيفتك الآن أن تنقل الخبر بمزيجٍ من المراعاة والتعاطف. 1. استعن بالفيديو عندما لا تتمكن من التواجد على ذات الطاولة مع الموظف المطرود، فالخيار الأفضل هو مكالمة الفيديو. يحتاج الشخص لرؤية وجهك، وقراءة لغة جسدك، وإدراك أنك تهتم به حقاً وأن رغبتك صادقة بمساعدته على المضي قدمًا بطريقة إيجابية. لقد سرّحت أحدهم على الهاتف ذات مرة، ولن أفعلها ثانيةً. كان الأمر سيئًا - شعرت بأنني وغد. فقد أجهش الشخص بالبكاء، ولم أكن مستعدًا لما كانت أكثر من مجرد تجربة سيئة بالنسبة له. لقد مرّت عدة سنوات وما زلت أشعر بالسوء حياله. 2. لا تنتظر الحكمة التقليدية تقول بأن عليك الانتظار حتى يوم الجمعة لطرد أحدهم، ولكنني أختلف مع ذلك كليًّا. فمن غير المجدي بل هو من القسوة أن تُبقي على موظف بعد أن كنت قد قررت بالفعل أن تسرّحه. يجب أن تقوم بالأمر في صباح اليوم الذي تقرر فيه. تخيل أي شعور غاضب سيعتريك حين تعلم بأنك عملت ليومٍ كامل لصالح الشركة التي قررت تسريحك. عندما تجري المحادثة كأول شيء في الصباح، فهذا يمنح الشخص اليوم بطوله للاستغراق في الأمر، و التمشي قليلاً، وكل ما يحتاج للقيام به. كما ويمنحه وقتًا للتفكير في كيفية مشاركة الخبر مع الأشخاص المقربين. ولا تجدول الأمر مسبقًا - اطلب من الشخص أن يقابلك على الفور حتى لا يرى لقائكما ضمن تقويمه ويقلق طوال الليل حول ماهيّة اللقاء. 3. احضر شخصًا آخر للغرفة قد تكون هذه المحادثة صعبة لعدّة أسباب، سواء بالنسبة للمدير أو للشخص الذي سيتم تسريحه - لذا فمن المفيد أن يكون هناك مستشار من قسم شؤون الموظفين أو قسم الموارد البشرية ممن يستطيعون تخفيف حدّة الحوار، وشرح الفرص المقبلة، والمحافظة على تركيز المحادثة على الخطوات المقبلة. في معظم الحالات لن يكون ذاك ضروريًا، ولكن في بعض الأحيان يمكن لما يُقال خلال هذا النوع من الاجتماعات أن يصبح موضوع دعوى قضائية. لذا فمن الأفضل أيضًا أن يكون هناك شاهد لمراقبة ما يحدث وسماع ما يُقال. 4. ادخل مباشرةً في صلب الموضوع لا تراوغ أو تشرع بمحادثة قصيرة قبل البدء. ينبغي أن يكون ما يحدث واضحًا بعد الجملة الأولى. تفاصيل التسريح (على سبيل المثال، "اليوم هو يومك الأخير، هذه تفاصيل مكافأة نهاية الخدمة، سوف نفعل كل ما في وسعنا لدعمك في المرحلة الانتقالية"، وما إلى ذلك) يجب ألّا يستغرق شرحها أكثر من دقيقة -حاول تغطية كل شيء قبل أن تمنحه فرصة للكلام. انتقل إلى الخطوات التالية وما سيحدث بعد ذلك. حدد ما هو مطلوب قبل أن تتمكن من دفع أي مستحقات. ويختلف هذا باختلاف الوضع، ولكنه عادة ما يشمل إعادة ممتلكات الشركة (أو شراءها) والتوقيع على اتفاقية إنهاء الخدمة. و من الجيد أيضًا التذكير باتفاقية السريّة. قمّ بتوضيح فكرة أنك مراعٍ لمسألة إعادته لنقطة الصفر. اسأل إن كانت لديه أية أسئلة عند الانتهاء من شرحك، ثم ...(أنت تعرف البقية). 5. ابقَ بالقرب للإجابة على الأسئلة عند هذه النقطة، قد يكون لدى الموظف أسئلة حول سبب التسريح. اذكر الأسباب فقط إن سأل. إذا قمت بذلك بشكلٍ صحيح، سيعلم بأن القرار قد أتخذ ولا مجال للتراجع عنه، لذا فمن غير المجدي مناقشة السبب - بل الأفضل التحدث عن الخدمات اللوجستية والمستقبل. هذا الوقت مخصصٌ له، لذلك وضّح أنك ستكون موجودًا للرد على أي من أسئلته والتأكد من وضوح التفاصيل. امنح نفسك بضع ساعات قبل أن يكون لديك أي التزامٍ آخر. حاول أن تنهي الأمر في الخطوات التالية، حتى يعرف أنك متحمس لمساعدته في العثور على مكان آخر يناسبه، وكن داعمًا له . تذكر، الأمر بأكمله متعلق به. ربما تكون المحادثة ضبابية بالنسبة له -ستستيقظ غريزة البقاء داخله لتجعل من الصعب تذكر كيف حدث كل هذا- لذلك فمن الأهمية بمكان أن تكون جميع الخدمات اللوجستية مكتوبة على الورق. تأكد من تواجدك أو أحد موظفيّ شؤون الموظفين للتواصل بعد المحادثة. أخيرًا، نحن نحاول دائمًا جدولة مقابلة إنهاء الخدمة في تاريخ ووقت منفصلين. فهي فرصة للشخص للتحدث مع شخص من أفراد شؤون الموظفين، وإبداء الرأي، وربما التنفيس عن نفسه قليلًا. سنجني فائدة من هذه المحادثة، ولكن مرة أخرى، فهي للتأكد من أنه يتعايش مع الأمر. 6. نسق عملية إزالة صلاحيات الدخول اجعل شخصا آخر من الفريق مسؤولًا عن إزالة صلاحيات دخول الشخص، ومعرّفاته لدخول الشركة و ذاك خلال اجتماعك به. بمجرد انتهاء المحادثة، يُفترض أن تكون الصلاحيات قد أُقفلت. اطلب إعادة توجيه البريد الإلكتروني للشخص إليك أو إلى شخص آخر في الفريق لفترة من الوقت حتى لا يحدث أي تسريبات من الشركة. في بعض الحالات، نترك صلاحية الوصول لموقع Slack متاحةً لفترة قصيرة حتى يتمكن الشخص من توديع زملاءه. 7. احظَ بخطة لإعلام الفريق في معظم الحالات، من المفيد إبلاغ أعضاء الفريق مباشرةً قبل اجتماع التسريح، كي لا يُفاجئوا. وعندما نطلب ذلك، فإننا نجتمع مع أكبر عدد من زملاء الموظف المسرّح في جلسة Google Hangout حتى يعرف الجميع على الفور. كما نشارك إعلانًا في Slack مع كامل الشركة لتقديم موجز حول الأمر، وشكر الموظف على مساهماته، والسماح لزملائه بمعرفة كيفية الاتصال به إذا كانوا يرغبون في التواصل، والتحدث عن الخطوات التالية. كل ذلك يتم تجهيزه قبل التسريح، ويُنشر بمجرد انتهاء المحادثة. ليس هناك متعة في كونك تتقن التسريح من المحزن كون تسريح الأشخاص هي مهارة قد اكتسبتها. فمن أصل خمس مرات كنت مسؤولًا عن تسريح شخصٍ ما في أربعٍ منها، كان ذلك بسبب سوء التوظيف -وهذا الأمر يقع على عاتقي. فهو خطأي في اتخاذ القرار الخاطئ، أو عدم تهيئة الشخص للنجاح، أو الفشل في تحديد توقعات واضحة منه. إذا كنت في موقف سيء لحاجتك إلى تسريح أحد موظفيك، فتذكر أنه يومٌ لن ينساه الشخص الجالس على الطرف الآخر من الطاولة (أو شاشة الكمبيوتر). من الأهمية بمكان، عندما ينظر إلى الوراء ويفكر في التجربة، أن يجد أنك تصرفت بمحبة و تعاطف ورغبة حقيقية برؤيته ينجح في أي مكان آخر. ترجمة -وبتصرّف- لمقال Parting Ways With a Remote Team Member لصاحبه NICK FRANCIS حقوق الصورة البارزة محفوظة لـ Freepik1 نقطة
-
1 نقطة
-
اعتقد أنك تقصد QR Code لا أعرف طبيعة البيانات التي تريد ان يكون لها QR Code ولكن هنالك عدة مواقع تقدم مثل هذه الخدمة كـ API يمكن استخدامه داخل التطبيقات.1 نقطة
-
أوﻻ قم بتخطيط قاعدة البيانات megration ثم انشيئ controllers ثم بعدها views و بين controllers و views يتم تزامنا بعد اكمال الخاصية.1 نقطة
-
إنّ بناء الروابط بشكل طبيعي هو من العوامل الأساسيّة في كسب موقعك لثقة محركات البحث، التي يأتي جوجل في طليعتها، ورفع ترتيبه rank فيها. عندما تبدأ حملتك لبناء الروابط، وجهها نحو الجمهور الموثوق والأكثر شعبيّة الذي يدعمك ويدعم المحتوى الذي تنشره. فيما يلي بعض النصائح لعمل حملة ناجحة وفعّالة لبناء الروابط: أولا: توفير محتوى عالي الجودةإنّ كتابة محتوى جذّاب، ممتع للقراءة، ذو صلة بجمهورك ومفيد لهم هي إحدى طرق بناء الروابط الفعّالة. اختر موضوعك بعناية، عزّزه بالتجربة الشخصيّة، وافعل ما بوسعك للحصول على ردود أفعال القرّاء. سيترفع ترتيب موقعك في محرّكات البحث عندما يكون المحتوى الذي تنشئه محفّزًا على الاستجابة والتعليق. وكذلك عندما يُعاد نشره، تُقتبس أجزاء منه، يُغرّد على تويتر، يحصل على الإعجاب على فيس بوك، هذه هي الطريقة الأسرع والأكثر طبيعيّة في بناء الروابط. قامت جوجل بإجراء تغييرات كبيرة في طريقة تقييم الروابط، وصعبّت على الروابط غير مرغوب فيها spam الحصول على ترتيبات عالية. وما زالت تبحث في أساليب الحد من تصنيف المواقع منخفضة الجودة أو ذات المستويات المنخفضة من المحتوى الأصلي غير المنقول من المواقع الأخرى. ثانيا: اكتب كمؤلف ضيفإنّ التدوين الاستضافي على المواقع الرائدة التي تُعرف بتقديمها لمحتوى عالي الجودة وامتلاكها لقاعدة كبيرة من القرّاء هو من الطرق الرائعة في تحسين مهاراتك في الكتابة، بناء علاقات مع المحترفين في مجالك أو سوقك، تنمية جمهورك، واقتناص بعض الروابط الداخلية inbound links. لكنّه من المهم أن تتذكر أنّ العامل الحاسم في كل ذلك هو المحتوى عالي الجودة الذي تحدثنا عنه في الفقرة الأولى. قدمّ أفضل ما لديك عندما تكتب لموقع آخر: استخدم أفضل مهاراتك في كتابة أفضل محتوى، كأن يكون محتوى غني بالمعلومات ونادر يصعب إيجاده في أماكن أخرى. وكمثال على ذلك، منشور الضيف هذا الذي ولّد الآلاف من الروابط الخلفيّة backlinks، نُشر أكثر من 200,000 مرّة، وتُرجم إلى 12 لغة تقريبًا.اكتب وحرّر وفق مبادئ الموقع الناشر، وحاول أن يكون أسلوبك في الكتابة متناسبًا مع جمهور ذلك الموقع. لا يعني ذلك أن تتخلّى عن أسلوبك الخاص، لكنّ المنشور أو المقال الذي لا يتوافق مع الموقع المضيف لن يكسبك إعجاب صاحب الموقع أو جمهوره.ضمّن روابط تقود القرّاء إلى موقعك في النبذة التعريفية عنك أو ضمن نص المقال. هذه الفرصة رائعة لاستغلالها في بناء الروابط الخلفيّة، لكن لا تسئ استغلالها. استخدم الروابط ذات الصلة، وتأكّد من أنّك توجّه القارئ إلى الرابط الإضافي مباشرةً وليس إلى رابط الصفحة العامة.ثالثا: ساهم وشارك بمعلوماتكلكي تكسب الروابط الداخلية، يجب أن تنال إعجاب الناس بشخصك وبالمحتوى الذي تنشره بشكل كافٍ يدفعهم إلى الحديث عنه ونشره. وهذا يعني أنّه يجب عليك المساهمة على الإنترنت في المواقع حيث يتبادل الناس الحديث ويتشاركون المحتوى. مثلًا، لو كانت لديك خبرة في التّسويق، فساهم في قسم الأسئلة والأجوبة على أكاديمية حسوب، هذا الأمر يتيح لك فرصة تبادل الخبرات، وصنع مكانة لنفسك كشخصيّة موثوقة. توجد العديد من المنتديات والمجموعات على شبكات التواصل الاجتماعي التي تغطي جميع المجالات من الفن حتّى علم الحيوان. ابحث عن المجال الذي يناسبك، قم بإعداد نبذة متكاملة عنك مضمّنًا الروابط، وابدأ المشاركة، التواصل والمساعدة. سيبدأ الناس بعد ذلك بملاحظتك ومشاركة روابطك ومعلوماتك. رابعا: قدم الهدايالا يُقصد بالهدايا تلك التي تكلّف مبالغ طائلة، وإنّما بعض الهدايا الصغيرة التي تشجّع جمهورك وتحفّزهم. يقوم Seth Godin، المسّوق، المدوّن، والكاتب الأمريكي المشهور، بتقديم المعلومات، الأدلّة المفيدة، وحتى البرامج؛ جميعها مجّانًا. وهو بذلك يجعل جمهوره يبحث عن المصادر المجانيّة ويحفّزهم على العودة إلى موقعه. وكذلك يقوم بتشجيع الآخرين على تناقل الحديث حول الهدايا التي يقدمها والقيام بمشاركتها. ولهذا السبب يجذب موقعه العديد من الزائرين ويكسب العديد من الروابط الداخلية. بعض الأفكار على الهدايا التي يمكنك تقديمها: الكتب الإلكترونية المجانيّة القابلة للتحميل والمشاركة.المكافآت والأوسمة التي تُمنح لمن يساهم في الموقع، يشير إليه بالروابط، أو يدعمه.الدورات، الدروس، والأدلة التي تشرح كيفيّة القيام بأمور معيّنة في مختلف المجالات.أدلّة وقوائم المصادر من أفضل المصادر المدروسة والموثوقة.فرص لكتابة مقال ضيف بدون أي مقابل.كن مبدعًا في تقديم الهدايا، لكن تأكّد من كون ملكيتها عائدة إليك، وأنّك لا تمانع في أن يقدّمها جمهورك إلى الآخرين. ترجمة -وبتصرّف- للمقال 4Tips to a Successful Link Building Campaign لصاحبته: Joynicole Martinez.1 نقطة
-
من الصعب توليد الأفكار غير التقليدية بسهولة، ولكن نجاح المشروع أيضا من نجاح العمل المحيط بالمشروع. أنصحك بقراءة الكتب التالية: Running Lean The Lean Startup Zero To One How to transform Ideas into products هناك الكثير من الكتب التي سوف تنمي عقليتك كريادي ولكن كبداية أنصحك بهذه الكتب1 نقطة