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

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

  1. وهيبة مغربي

    وهيبة مغربي

    الأعضاء


    • نقاط

      1

    • المساهمات

      37


  2. حسام برهان

    حسام برهان

    الأعضاء


    • نقاط

      1

    • المساهمات

      215


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

المحتوى الأعلى تقييمًا في 06/28/19 في كل الموقع

  1. سنتحدّث في هذا الدرس عن كيفيّة تطبيق مبادئ البرمجة كائنيّة التوجّه في سي شارب وذلك من خلال إنشاء واستخدام الأصناف والكائنات في هذه اللغة. يمكن التصريح عن صنف في سي شارب باستخدام الكلمة المحجوزة class يليها اسم الصنف وهو يتبع لنفس قواعد التسمية للمتغيّرات، علمًا أنّه يفضّل أن يكون الحرف الأوّل من اسم الصنف حرفًا طباعيًّا كبيرًا. انظر إلى الشكل التالي حيث نرى الصنف البسيط Employee والذي يُعبّر عن موظّف في إحدى الشركات: يحتوي هذا الصنف على ثلاثة حقول بيانات data fields هي: الاسم FirstName الكنية LastName الراتب Salary تستطيع اعتبارها حاليًّا أنّها تمثّل خصائص للصنف Employee، كما يحتوي هذا الصنف على تابع وحيد اسمه DisplayInfo الهدف منه هو الحصول على تمثيل نصيّ لكلّ كائن ننشئه من هذا الصنف كما سنرى بعد قليل، يشبه التابع إلى حدٍّ كبير الدّالة function في لغات البرمجة الأخرى. لا يتطلّب هذا التابع أيّ وسائط في حين أنّه يُرجع قيمة نصيّة من النوع string. هذه الحقول بالإضافة إلى التابع السابق تُعتبر أعضاء ضمن الصنف Employee كما ذكرنا ذلك مسبقًا. تقع أعضاء أيّ صنف ضمن حاضنتيه. لاحظ الكلمة المحجوزة public والموجودة قبل كلّ تصريح لحقل أو تابع ضمن الصنف Employee. هذه الكلمة عبارة عن مُحدّد وصول access modifier. تتحكّم محدّدات الوصول بقابلية الوصول إلى أعضاء الصنف من خارجه، سنتعامل مع نوعين آخرين من محدّدات الوصول وهما private و protected. يكفي أن تعلم الآن أنّ أي عضو في الصنف يمتلك محدّد وصول public يمكن الوصول إليه سواءً من داخل الصنف (أو بشكل أدق من داخل الكائن) أو من خارجه. كما من المفيد أن نعلم أنّه من الممكن استخدام محدّدات الوصول مع الأصناف أيضًا كما سنرى في درس لاحق. إذا أردنا إنشاء كائن جديد من الصنف Employee فعلينا التصريح عن متغيّر مناسب من النوع Employee وذلك على الشكل التالي: Employee empObject; صرّحنا عن المتغيّر empObject على أنّه من النوع Employee. لاحظ التشابه في التصريح عن المتغيّرات بين أنواع موجودة ضمن سي شارب وبين أنواع ننشئها بأنفسنا. التصريح السابق غير كافي لإنشاء الكائن. لإنشاء كائن من النوع Employee علينا استخدام العامل new الذي يعمل على إنشاء كائن من أيّ صنف نرغبه ويعمل على إعادة المرجع (العنوان) لذلك الكائن في الذاكرة. استخدام العامل new سهل حيث يمكننا كتابة ما يلي بعد عبارة التصريح السابقة: empObject = new Employee(); يقوم العامل new بإنشاء كائن جديد من الصنف Employee ثمّ يُسند مرجع (عنوان) هذا الكائن ضمن المتغيّر empObject. لاحظ القوسين الموجودين بعد اسم الصنف Employee. في الحقيقة يُعبّر هذين القوسين عن استدعاء لبانية constructor الصنف Employee عند إنشاء الكائن. ولكن أين هذه البانية؟ هذا ما سنراه بعد قليل. يمكن الآن الوصول إلى الحقول والتوابع الموجودة ضمن الكائن عن طريق كتابة المتغيّر الذي يحوي العنوان إلى الكائن (أي المتغيّر empObject) ثم نضع نقطة وبعدها اسم الحقل أو التابع الذي نريد الوصول إليه. في العبارة التالية سنسند القيمة "Mohammad" إلى الحقل FirstName من الكائن empObject (الكائن الذي يشير إليه empObject): empObject.FirstName = "Mohammad"; حان الآن وقت التنفيذ العمليّ. انظر إلى البرنامج Lesson06_01 الذي يوضّح كيفية إنشاء الصنف Employee وكيفيّة إنشاء كائنين منه: 1 using System; 2 3 namespace Lesson06_01 4 { 5 6 class Employee 7 { 8 public string FirstName; 9 public string LastName; 10 public double Salary; 11 12 public string DisplayInfo() 13 { 14 string result = string.Format("{0} {1} - Salary: {2:N0}", 15 this.FirstName, this.LastName, this.Salary); 16 17 return result; 18 } 19 } 20 21 class Program 22 { 23 static void Main(string[] args) 24 { 25 Employee employee1, employee2; 26 27 employee1 = new Employee(); 28 employee1.FirstName = "Mohammad"; 29 employee1.LastName = "Mansoor"; 30 employee1.Salary = 1000; 31 32 employee2 = new Employee(); 33 employee2.FirstName = "Saleh"; 34 employee2.LastName = "Mahmoud"; 35 employee2.Salary = 2500; 36 37 Console.WriteLine("First Employee: {0}", employee1.DisplayInfo()); 38 Console.WriteLine("Second Employee: {0}", employee2.DisplayInfo()); 39 } 40 } 41 } عند تنفيذ البرنامج سنحصل على الخرج التالي: First Employee: Mohammad Mansoor - Salary: 1,000.00 Second Employee: Saleh Mahmoud - Salary: 2,500.00 نلاحظ من النظرة الأولى للبرنامج السابق أنّه لدينا صنفان ضمن نطاق الاسم Lesson06_01 وهما Employee و Program. يقع التصريح عن الصنف Employee في الأسطر بين 6 و 19 ويحتوي هذا الصنف كما رأينا قبل قليل على أربعة أعضاء وهي عبارة عن ثلاثة حقول FirstName و LastName و Salary بالإضافة إلى التابع DisplayInfo الموجود بين السطرين 12 و18. تنحصر وظيفة هذا التابع في الحصول على التمثيل النصيّ لأيّ كائن ننشئه من الصنف Employee. يحتوي التابع DisplayInfo على أسلوب جميل لتنسيق النصوص يشبه ذلك الأسلوب الذي كنّا نستخدمه مع التابع WriteLine. يحتوي الصنف string على تابع اسمه Format يقبل عدّة وسائط (السطر 14) أولها نصّ تنسيقي، أمّا الوسائط التالية فهي القيم التي ستجد لها أمكنةً ضمن النص التنسيقي، كما كنّا نستخدم التابع WriteLine بالضبط. يُرجع التابع Format نصًّا منسّقًا بحسب القيم الممرّرة له. الشيء الوحيد المختلف هو كيفيّة تنسيق قيمة الراتب Salary باستخدام مُحدّد التنسيق :N0 الموجود ضمن {2:N0}. يخبر هذا المحدّد التابع Format أنّ القيمة التي ستوضع في هذا المكان (وهي قيمة Salary) يجب أن تُنسّق على شكل رقم ذي فاصلة آلاف وبدون فاصلة عشريّة. يفيد مثل هذا التنسيق في الحصول على أرقام منسّقة بشكل محترف تُعبّر عن الراتب الذي يحصل عليه الموظّف وهي تبدو مثل 1,000 أو 2,500. جرّب استخدام التنسيق {2:N1} و {2:N2} ولاحظ الفرق. لاحظ أنّني قد استخدمت الكلمة المحجوزة this متبوعةً بنقطة قبل اسم كل حقل. في الحقيقة تُشير هذه الكلمة إلى الكائن الحالي الذي يتمّ منه استدعاء التابع DisplayInfo كما سنرى ذلك بعد قليل. أمّا لإرجاع القيمة النصيّة من التابع DisplayInfo فإنّنا ببساطة نستخدم الكلمة المحجوزة return ونضع بعدها القيمة المراد إرجاعها. الصنف Program المصرّح عنه في الأسطر بين 21 و 40 هو الصنف الذي تعاملنا معه في جميع البرامج التي كتبناها حتى الآن. يحتوي هذا الصنف على التابع Main الذي يمثّل نقطة الدخول للبرنامج كما نعلم. يبدأ التابع Main بالتصريح عن متغيرين من النوع Employee وهما employee1 و employee2 ثمّ ينشئ كائنًا من النوع Employee باستخدام العامل new (السطر 27) ويسنده إلى المتغيّر employee1. بعد ذلك يمكن استخدام أيّ حقل أو تابع معرّف ضمن الصنف Employee عن طريق المتغيّر employee1 بشرط أن يكون له محدّد وصول public كما هو واضح في الأسطر من 28 حتى 30. يتكرّر نفس الأمر بالنسبة للمتغيّر employee2 الذي سيحمل كائنًا مختلفًا عن الكائن الموجود ضمن employee1. أخيرًا وفي السطرين 37 و38 يتم طباعة التمثيل النصيّ لكلّ من الكائنين باستخدام التابع DisplayInfo. تجدر الإشارة إلى أنّه عند وصول تنفيذ البرنامج إلى السطر 37 وإلى الاستدعاء ()employee1.DisplayInfo تحديدًا سيؤدّي ذلك إلى انتقال التنفيذ إلى السطر 14 ضمن هذا التابع لتنفيذ التعليمات البرمجيّة ضمنه ومن ثمّ الحصول على التمثيل النصيّ للكائن employee1 وإرجاعه إلى السطر 37 مرّة أخرى ليعمل البرنامج على تمرير هذه القيمة النصيّة للتابع WriteLine ومن ثمّ العرض على الشاشة، وبالطبع يتكرّر نفس الأمر تمامًا بالنسبة للكائن ضمن employee2 في السطر 38. إذا كنت تستخدم Visual Studio 2015 بأيّ إصدار فأنصحك أن تنفّذ هذا البرنامج بشكل خُطَوي لكي تتعرّف على آلية عمل هذا البرنامج بشمل عمليّ. اضغط على المفتاح F11 (أو من القائمة Debug > Step Into) لتنفيذ البرنامج باستخدام منقّح الأخطاء debugger. ستلاحظ ظهور مستطيل أصفر يُشير إلى مكان التنفيذ الحالي، وكلما ضغطت المفتاح F11 سينتقل تنفيذ البرنامج إلى العبارة البرمجيّة التالية خطوة بخطوة. البانية constructor ضمن الصنف البانية constructor هي تابع من نوع خاص يجب أن تكون موجودة ضمن أيّ صنف في سي شارب. في حال تمّ إغفالها سيعمل المترجم على توليد واحدة افتراضيّة من أجلنا. في الحقيقة وظيفة البانية هي بناء الكائن وحجز مكان مناسب له في الذاكرة، حيث يتم استدعاء البانية عند إنشاء الكائن باستخدام العامل new. لا يمكن للبواني إرجاع قيمة مخصّصة كما نفعل مع التوابع الأخرى عادةً، في الحقيقة هي تُرجع كائنًا من الصنف الموجودة ضمنه. ولكن يمكن أن تقبل وسائط نمرّرها إليها. استبدل الصنف Employee التالي بذلك الموجود ضمن البرنامج Lesson06_01: 1 class Employee 2 { 3 public string FirstName; 4 public string LastName; 5 public double Salary; 6 7 public Employee() 8 { 9 Console.WriteLine("Hello, I'm in Employee's constructor!"); 10 } 11 12 public string DisplayInfo() 13 { 14 string result = string.Format("{0} {1} - Salary: {2:N0}", 15 this.FirstName, this.LastName, this.Salary); 16 17 return result; 18 } 19 } لقد أضفنا في هذه النسخة البانية ()Employee للصنف Employee. نفّذ البرنامج لتحصل على الخرج التالي: *** Hello, I'm in Employee's constructor! *** *** Hello, I'm in Employee's constructor! *** First Employee: Mohammad Mansoor - Salary: 1,000 Second Employee: Saleh Mahmoud - Salary: 2,500 لاحظ أنّ العبارة: *** Hello, I'm in Employee's constructor! *** قد ظهرت مرّتين في الخرج، وذلك بسبب أنّنا أنشأنا كائنين حيث تُنفّذ هذه البانية من أجل كلّ عملية إنشاء. ولكن السؤال المطروح هنا، ماذا سنستفيد من هذه البانية؟ تُستخدم البواني عمومًا عندما نريد تهيئة الكائن ببعض القيم الضرورية لجعل حالته مستقرّة وذلك أثناء إنشائه وقبل محاولة الوصول إليه من أيّ مصدر خارجيّ. انظر الآن إلى الصنف Employee المعدّل الذي يحوي بانية تقوم ببعض الأعمال المفيدة: 1 class Employee 2 { 3 public string FirstName; 4 public string LastName; 5 public double Salary; 6 7 public Employee(string firstName, string lastName, double salary) 8 { 9 this.FirstName = firstName; 10 this.LastName = lastName; 11 this.Salary = salary; 12 } 13 14 public string DisplayInfo() 15 { 16 string result = string.Format("{0} {1} - Salary: {2:N0}", 17 this.FirstName, this.LastName, this.Salary); 18 19 return result; 20 } 21 22 } تتطلّب البانية هذه المرّة ثلاثة وسائط، تمثّل قيمًا سيتمّ إسنادها إلى الحقول. هذه الوسائط هي: firstName و lastName و salary (لاحظ أنّ اسم كلّ منها يبدأ بحرف طباعي صغير لتمييزها عن حقول الصنف). إذا استبدلت هذا الصنف الجديد بالصنف القديم الموجود ضمن البرنامج Lesson06_01 وحاولت تنفيذ البرنامج فستحصل على خطأ. السبب في ذلك بسيط، وهو أنّ العبارتين في السطرين 27 و 32 من البرنامج Lesson06_01 تحاولان إنشاء كائنين من الصنف Employee عن طريق بانية لا تتطلّب أيّة وسائط وهذا ما لا يتوفّر في الصنف Employee الجديد. فعندما يلاحظ مترجم سي شارب وجود بانية واحدة على الأقل بصرف النظر عن عدد الوسائط التي تتطلّبها فإنّه يمتنع عن توليد بانية افتراضية بشكل تلقائي مثلما كان يفعل من قبل. يوجد حلّ سريع لهذه المشكلة يتمثّل في توفير بانية لا تحتاج لأيّة وسائط كما كان الوضع السابق. انظر إلى النسخة الأخيرة للصنف Employee: 1 class Employee 2 { 3 public string FirstName; 4 public string LastName; 5 public double Salary; 6 7 public Employee(string firstName, string lastName, double salary) 8 { 9 this.FirstName = firstName; 10 this.LastName = lastName; 11 this.Salary = salary; 12 } 13 14 public Employee() 15 { 16 17 } 18 public string DisplayInfo() 19 { 20 string result = string.Format("{0} {1} - Salary: {2:N0}", 21 this.FirstName, this.LastName, this.Salary); 22 23 return result; 24 } 25 26 } بعد اعتماد هذا الصنف ضمن البرنامج Lesson06_01، سيعمل البرنامج الآن بشكل طبيعي ويظهر الخرج كما هو متوقّع. ولكن تأمّل معي هذا الصنف قليلًا، ألا تلاحظ وجود بانيتين له؟ هذا أمر طبيعي ووارد جدًّا في سي شارب حيث يمكن كتابة أكثر من تابع بنفس الاسم طالما اختلف عدد أو أنواع الوسائط الممرّرة لكلّ منهما. نسمي هذه الميزة بزيادة التحميل overloading للتوابع. فعند وجود استدعاء للتابع المزاد تحميله يتمّ اختيار الشكل المناسب بناءً على عدد وأنواع الوسائط الممرّرة. لاحظ أنّ البانية عديمة الوسائط فارغة ولا بأس في ذلك. ولكنّ السؤال هنا كيف يمكن الاستفادة من البانية ذات الوسائط الثلاثة. الأمر بسيط، استبدل محتويات التابع Main في البرنامج Lesson06_01 بالشيفرة البسيطة المكافئة التالية: 1 Employee employee1, employee2; 2 3 employee1 = new Employee("Mohammad", "Mansoor", 1000); 4 employee2 = new Employee("Saleh", "Mahmoud", 2500); 5 6 Console.WriteLine("First Employee: {0}", employee1.DisplayInfo()); 7 Console.WriteLine("Second Employee: {0}", employee2.DisplayInfo()); انظر كم أصبحت الشيفرة نظيفة وقصيرة ومريحة للعين. إليك الآن البرنامج Lesson06_02 كاملًا بعد التعديل: 1 using System; 2 3 namespace Lesson06_02 4 { 5 6 class Employee 7 { 8 public string FirstName; 9 public string LastName; 10 public double Salary; 11 12 public Employee(string firstName, string lastName, double salary) 13 { 14 this.FirstName = firstName; 15 this.LastName = lastName; 16 this.Salary = salary; 17 } 18 19 public Employee() 20 { 21 22 } 23 24 public string DisplayInfo() 25 { 26 string result = string.Format("{0} {1} - Salary: {2:N0}", 27 this.FirstName, this.LastName, this.Salary); 28 29 return result; 30 } 31 32 33 } 34 35 36 class Program 37 { 38 static void Main(string[] args) 39 { 40 Employee employee1, employee2; 41 42 employee1 = new Employee("Mohammad", "Mansoor", 1000); 43 employee2 = new Employee("Saleh", "Mahmoud", 2500); 44 45 Console.WriteLine("First Employee: {0}", employee1.DisplayInfo()); 46 Console.WriteLine("Second Employee: {0}", employee2.DisplayInfo()); 47 } 48 } 49 } تمارين داعمة تمرين 1 أضف تابعًا جديدًا إلى الصنف Employee الموجود في البرنامج Lesson06_02 السابق وسمّه GetSalaryAfterTax. وظيفة هذا التابع هي الحصول على قيمة الراتب للموظّف بعد تطبيق الضريبة Tax عليه. اعتبر نسبة الضريبة 2%. تلميح: اضرب قيمة الراتب Salary بالعدد 0.98 للحصول على قيمة الراتب بعد خصم الضريبة. فإذا كان الراتب 1500 مثلًا، يجب أن يُرجع التابع GetSalaryAfterTax القيمة 1470. تمرين 2 أنشئ صنفًا جديدًا سمّه MyRectangle والذي يُعبّر عن مستطيل في المستوي، بحيث يحتوي على الحقلين Width و Height (من النوع double لكلّ منهما)، بالإضافة إلى التابع GetArea لحساب مساحة المستطيل. ثمّ اكتب برنامجًا بسيطًا يوضّح استخدام هذا الصنف من خلال إنشاء كائنين منه. احسب مساحة كل مستطيل (كائن) واعرض النتيجة على الشاشة. الخلاصة تعلّمنا في هذا الدرس أساسيّات إنشاء الأصناف والكائنات، وكيفية التعامل مع الحقول والتوابع والبواني الموجودة ضمن الصنف. كما أخذنا لمحة سريعة حول محدّدات الوصول وكيفية التعامل مع محدّد الوصول public، علمًا أنّنا ستوضّح كيفيّة التعامل مع باقي المحدّدات في الدرس التالي الذي سنتحدّث فيه عن المزيد حول هذا الموضوع المهم والأساسي لتطوير التطبيقات باستخدام سي شارب.
    1 نقطة
  2. البريد الإلكتروني مهم جدًا، سواء كنت مستقّلًا أو موظفًا في شركة أو في أي مكان آخر. يرسل ويستقبل رجل الأعمال العادي في الواقع أكثر من 120 بريد إلكتروني يوميًا. 120 × 5 (عدد أيام العمل في الأسبوع) = 600 بريد إلكتروني أسبوعيًا. 120 × 20 (عدد أيام العمل في الشهر) = 2400 بريد إلكتروني في الشهر! وأستطيع أن أشهد على حصولي على كمية مماثلة لها من خلال عملي مع Horkey HandBook، ولا يتضمن ذلك الرسائل والتنبيهات التي تصلني عبر حساباتي على منصات التواصل الاجتماعي أو بريدي الشخصي. وهذا يعني عدد كبير من الأشخاص يحاول الحصول على انتباهي، لكن على الرغم من أنني أحب التفاعل معكم جميعًا قدر الإمكان، إلّا أنّ ليس الجميع قادر على القيام بذلك. أنا مسؤولة كذلك كمساعدة عن بعد عن تنظيم البريد الخاص بعملائي، والذين وظّفوني لأنّهم على علم بمدى أهمية البريد الإلكتروني، لكنهم غير قادرين على مواكبته بأنفسهم (أو لا يرغبون بذلك)، وقد يشعر البعض وكأنّ ذلك أشبه بعمل بدوام كامل، وليس العمل الذي اختاروه. لذا سأتحدث في هذا المقال عن ثمانية نصائح حول آداب وقواعد البريد الإلكتروني، حتى لا يكتفي العملاء بفتح بريدك فقط بل بقرائته والإجابة عليه كذلك. 1. كلما كان أقصر كلما كان أفضل رجاءً لا تكتب روايات ضمن بريدك الإلكتروني. فذلك سيؤدي إلى نفور المتلقي، وإلى عدم قراءة بريدك وعدم الإجابة عليه غالبًا. وكلّما كان البريد أطول، شعر المتلقي بأنّه بحاجة إلى طاقة ووقت أكثر لقراءته، وقد يؤجل قراءته لوقت لاحق (لن يأتي ابدًا). إذا كنت ترسل بريدًا إلى أحد ما لتطلب مساعدته،عليك التفكير في البريد بتمعّن قبل إرساله. اسأل نفسك هل يمكنك طرح استفسارك أو أسئلتك بأسلوب أكثر إيجازًا؟ ما الذي فعلًا تحتاج مساعدتهم أو رأيهم فيه وما الذي تستطيع البحث عنه عبر الإنترنت أو إيجاده عبر موقعهم الإلكتروني ببذل القليل من الجهد؟. حافظ على رسائلك البريدية قصيرة وادخل في صلب الموضوع فورًا، مما سيُظهر للمتلقي احترامك لوقته. 2. استخدم قواعد لغوية صحيحة إنّ البريد الإلكتروني في مجال العمل هو وسيلة تواصل مهنية. ولا نرسل عبره رسائل نصيّة عاديّة للأشخاص، لذا عليك استخدام جمل كاملة وأحرف كبيرة في المكان المناسب ووضع علامات الترقيم الصحيحة. عدم القيام بذلك يظهر عدم اهتمامك، وتخيّل القيام بذلك وأنت تبحث عن جهات للتعاقد معها. ينطبق ذلك أيضًا على تواصلك مع أحد المؤثرين، لذا ابقَ حذرًا واستخدم القواعد اللغوية الصحيحة في جميع الاتصالات عبر بريدك الإلكتروني. 3. إضفاء الطابع الشخصي هل تعلم أنّ احتمال فتح رسائل البريد الإلكتروني الحاوية على عناوين ذات طابع خاص وشخصي هو أعلى ب26% موازنة بغيرها؟ لا يتطلّب الأمر ذكاءً خارقًا لمعرفة السبب، فجميعنا يرغب بالشعور بالتميّز. نريد الذهاب إلى مكان يعلم الجميع فيه اسمنا، لذا إن لم تعرف اسم الشخص الذي تراسله، عليك غالبًا ألا ترسل هذا البريد. حتى على الرغم من أنّ عليك إبقاء رسالتك قصيرة إلى جانب المحافظة على القواعد اللغوية الصحيحة، فإنّ عليك أيضًا أن تشير برسالتك إلى شخص محدّد. وليس كما يشير الناس إليّ في بعض الأحيان: سيدي العزيز (ماذا؟!). سيدي/سيدتي العزيز (على الأقل ترك المجال لكلا الاحتمالين). عزيزي مشرف الموقع (لم يسبق أن استخدمت هذا المصطلح في حياتي كلها!). عزيزي Horkey HandBook (هل يمكن أن يصبح أسوء؟). أولًا وقبل كل شيء، تخلّى عن كلمة عزيزي (dear) فنحن لا نكتب رسائل خطية من عام 1805، بل إنّنا نكتب بريدًا إلكترونيًا في 2019! يمكنك البدء بـ "جينا" ببساطة أو يمكنك إظهار طابعك الخاص وقول "مرحبا جينا" أو "السلام عليكم جينا" أو أي تحية أخرى من هذا النمط. بينما عليك إظهار الاحترام عليك أيضًا أن تبدو ودودًا وقابلًا للحوار، وليس متهجّمًا وتتكلم بلغة الشركات. اعرف اسم الشخص الذي تحاول الاتصال به (إن أمكن)، ابحث في الموقع ضمن قسم "من نحن" أو "اتصل بنا" أو ما يشابه ذلك، فهناك احتمال كبير أن تجد اسم الشخص مدرجًا في مكان ما. إذا لم تتمكّن من ذلك يمكنك استخدام ما يشابه "مرحبا أصدقائي في Horkey HandBook"، فذلك يظهر شخصيتك ويشير إلى الفريق ويمكن أن يجذب الانتباه بطريقة إيجابية. لكن كما ذكرت سابقًا، ذلك فقط في حال لم تتمكن من إيجاد اسم الشخص، وتذكّر كذلك استخدام غوغل ولينكد إن أثناء بحثك. 4. كن واثقًا بنفسك يريد العملاء توظيف شخص قادر على تولي زمام الأمور، ويمكنهم الوثوق بقدرته على إنجاز العمل. لذا عليك تقديم نفسك بأفضل طريقة ممكنة ضمن عروضك، لا تكذب ابدًا فقط إظهر واثقًا وقادرًا على تحمّل المسؤولية. وهو أكبر خطأ أراه غالبًا ضمن عروض الأشخاص المرسلة عبر البريد الإلكتروني. أتفهّم أنك قد تقوم بذلك لأنك جديد، ولا ترغب أن تبدو مغرورًا ولست متأكد فعلًا مما عليك فعله. إرسال العروض عبر البريد الإلكتروني هو أمر جديد. لكن يشبه هذا البريد المرحلة الأولى من مقابلة العمل، فمَن تفضّل أن توظّف، شخص واثق من نفسه أم شخص متردد وخائف وقد لا يوظّف نفسه حتى؟ هذا لا يعني أن تظهر كشخص غير محترم وفظ، عليك فقط أن تجد التوازن بين التفاخر بنفسك وبين إثبات أنّك الشخص المناسب للعمل. 5.المدح هل تتذكّرعندما أخبرتك أنّنا جميعنا نرغب بالشعور بأنّنا مميزون؟ نرغب كذلك بالشعور بأنّنا محبوبون، وبأن يخبرنا الناس بأنّنا رائعون. لذلك أحبّ أن أبدأ عروضي المرسلة عبر البريد الإلكتروني بمديح أو مديحين، لكن ذلك يجب أن يكون حقيقيًا. عليك البحث بشكل أعمق وألّا تتحدث عن آخر مقال لهم (فمن لا يستطيع ذلك؟). تصفّح موقعهم الإلكتروني وصفحاتهم على منصات التواصل الاجتماعي …إلخ، لتأخذ فكرة عنهم وعن من هم، ومن ثم أنشئ صلة بين ذلك وبين بريدك، لتساعد نفسك على اابروز من بين الجميع. قد يكون من الصعب تذكّر تفاصيل موقع معين وكتابة مديح مخصّص له، خاصة عند إرسالك لعدة عروض يوميًا. لكن يمكن إصلاح ذلك بسهولة ببعض المهارات التنظيميّة. 6. يتعلّق الأمر بهم وليس بك في حين أنّ عليك أن تسوّق لنفسك في عروضك، عليك توخي الحذر وأن تُظهر ما فائدة ذلك لهم، ولماذا عليهم الاهتمام بمدى روعتك وما الذي يضيفه ذلك لهم؟ ينطبق ذلك على موقعك الإلكتروني أيضًا. لذا احرص على الإشارة إلى ما ينقصهم وإلى ما يحتاجونه، وقدّم نفسك على أنّك الحل لذلك. 7. إذا كنت مهتم فعلًا، ابحث قليلًا إلى جانب معرفة اسم الجهة التي ترسل إليها عرضك، عليك معرفة من هم حقًا. اعرف شيئًا مميزًا عن شركتهم وشيئًا شخصيًا، وتتّبعهم قليلًا. يمكنك أن تُظهر أنّك قمت بذلك عبر مديحك كما ذكرت سابقًا، يمكنك أيضًا أن تُدخل ذلك ضمن باقي عرضك من خلال استخدام روابط لصفحة أو مقال معين من موقعهم أو ما يشابه ذلك. انتبه: إذا كنت ستضع رابطًا لشيء ما أو تعلّق عليه، احرص على أنك قد قرأته بتمعّن. فقد سبق وأن تواصل معي بعض الأشخاص وعلقّوا عن مقال معيّن، وكان واضحًا أنّهم لم يقرأوه وربما قرأوا العنوان فقط. كان ذلك أسوء مما لو قالوا الحقيقة وأخبروني أنّهم لم يقرأوه. 8. لا يمكنك أن تهين الأشخاص ثم أن تطلب منهم توظيفك يجب ألّا تَطلّب نصيحتي الأخيرة الكثير من التفكير. لكنها ليست كذلك، لذا سأقوم بتوضيحها لكم. إذا كنت تطلب توظيفك (أو اعتبارك لذلك)، لا تُهين الشخص الذي تطلب منه ذلك. هناك فرق كبير بين الإشارة إلى حاجة والإشارة إلى عيب، وعلينا طبعًا التركيز على الشق الأول. لكن يوجد بينهما فرق بسيط في معظم الأحيان. اقترح الالتزام بالجانب الحذر، وكما تقول جدتك "إذا لم يكن لديك كلام لطيف لتقوله، لا تقل أي شيء". مثال على ذلك: "عملكم سيء فيما يخص تحديث مدونتكم، ما مشكلتكم؟". الطريقة الأفضل لقول ذلك: "لاحظت أنّ مدونتكم لم يتم تحديثها منذ تاريخ س، أعلم انّ إضافة محتوى جديد إلى الموقع هو أشبه بعمل بدوام كامل، بما أنّنا نعلم أنّ التسويق الداخلي (أرفق رابطًا يدعم هذا الكلام) هو الطريقة الجديدة لجذب زبائن جدد، فكرت بالتواصل معكم لأرى إن كان بإمكاني مساعدتكم". أو ما يشابه ذلك. في الختام يمكنني صراحة أن استمر واستمر وأن أتحدث أكثر وأكثر عن آداب البريد الإلكتروني، ربما سأقوم يوم ما بإعداد جزء ثاني عن الموضوع. أنا شغوفة بذلك جدًا لأنّني حرفيًا أقرأ يوميًا المئات من الرسائل عبر البريد الإلكتروني، وأدرك تمامًا ما الذي يجري. والأهم، ما الذي يجدي وما الذي لا يجدي. لذا إذا كان البريد الإلكتروني هام لعملك كما هو هام لعملي، خذ نصائحي الثمانية في الحسبان. وفي المختصر استخدم قواعد لغوية صحيحة وأضفي طابعًا شخصيًا على رسائلك، واظهر واثقًا بنفسك، وقدّم مدحًا أو اثنين، وكن واعيًا أنّ الأمر يتعلق فعليًا بهم وليس بك، وأبحث قليلًا وحاول ألّا تهين المتلقي. ما هو أكبر خطأ سبق أن قرأته في بريد إلكتروني؟ شاركنا في التعليقات. ترجمة-وبتصرف-للمقال Pitching for Freelance Clients: Let’s Talk Email Etiquette لصاحبته Gina Horkey.
    1 نقطة
×
×
  • أضف...