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

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

  1. Wael Aljamal

    Wael Aljamal

    الأعضاء


    • نقاط

      13

    • المساهمات

      6975


  2. سامح أشرف

    سامح أشرف

    الأعضاء


    • نقاط

      2

    • المساهمات

      2934


  3. Mohssen A Mohssen

    Mohssen A Mohssen

    الأعضاء


    • نقاط

      2

    • المساهمات

      317


  4. Hassan Hedr

    Hassan Hedr

    الأعضاء


    • نقاط

      2

    • المساهمات

      2851


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

المحتوى الأعلى تقييمًا في 02/12/22 في كل الموقع

  1. أرجو إرفاق الشيفرة البرمجية لنتستطيع متابعة المشكلة.. كتابة الشيفرة بهذه الطريقة، يتم تنفيذها مباشرة مع تحميل الصفحة فلذلك سوف تكون القيم فارغة لأن قراءة القيم تبدو غير مرتبطة بحدث submit أو. تنفيذ دالة onclick استخراج القيم من النموذج و تعبئة data يجب أن تتم ضمن دالة يتم تنفيذها لاحقا، مثل ضع زر button و بالخاصية onclick استدعي دالة فيها الشيفرات السابقة
    2 نقاط
  2. لدي نموذج في أحد مشاريع جانغو Django وأرغب في تصفية النموذج حسب طول نص العمود password، حاولت إستخدام الكود التالي، ولكن يبدو أنه هذه ليست الطريقة الصحيحة للقيام بهذا الأمر: Model.objects.filter(len(password) > 8) حيث أن المتغير password عبارة عن TextField
    1 نقطة
  3. في العادة ادخل القيم من خلال الواجهة و استعيدهم في الكود بطريقة عادية ولكن اليوم لم استطع لمادا الطريقة الاولى تعمل و الثانية لا ؟ شكرا مسبقاا. الشيفرة: <!doctype html> <html> <head> <script src="https://cdn.anychart.com/releases/8.11.0/js/anychart-core.min.js" type="text/javascript"></script> <script src="https://cdn.anychart.com/releases/8.11.0/js/anychart-pert.min.js" type="text/javascript"></script> <style> html, body, #container { width: 100%; height: 100%; margin: 0; padding: 0; } </style> </head> <body> <div id="container"> <h1>yoo</h1> <form> <fieldset> <table style="border: 1;"> <th></th> <tr> <td><input type="text" value="1" name="" id="task11"></td> <td><input type="text" name="" id="task12"></td> <td><input type="number" name="" id="task13"></td> <td><input type="text" name="" id="task14"></td> </tr> <th></th> <tr> <td><input type="text" value="2" name="" id="task21"></td> <td><input type="text" name="" id="task22"></td> <td><input type="number" name="" id="task23"></td> <td><input type="text" name="" id="task24"></td> </tr> <th></th> <tr> <td><input type="text" value="3" name="" id="task31"></td> <td><input type="text" name="task32" id="task32"></td> <td><input type="number" name="task33" id="task33"></td> <td><input type="text" name="task34" id="task34"></td> </tr> <th></th> <tr> <td><input type="text" value="4" name="" id="task41"></td> <td><input type="text" name="task42" id="task42"></td> <td><input type="number" name="" id="task43"></td> <td><input type="text" name="task44" id="task44"></td> </tr> </table> <br> <button type="button" onclick="jcp()">Insert</button> <button type="button" onclick="chart.draw()">Result</button> </fieldset> </form> </div> <script> //function jcp(){ //console.log(data);} anychart.onDocumentReady(function () { var task11 = document.getElementById('task11').value; var task12 = document.getElementById("task12").value; var task13 = document.getElementById("task13").value; var task14 = document.getElementById("task14").value; var task21 = document.getElementById("task21").value; var task22 = document.getElementById("task22").value; var task23 = document.getElementById("task23").value; var task24 = document.getElementById("task24").value; var task31 = document.getElementById("task31").value; var task33 = document.getElementById("task33").value; var c = task33; var task32 = document.getElementById("task32").value; var task34 = document.getElementById("task34").value; var task41 = document.getElementById("task41").value; var task43 = document.getElementById("task43").value; var d = task43; var task42 = document.getElementById("task42").value; var task44 = document.getElementById("task44").value; var data = [{id : task11,duration : task13, name: task12}, {id : task21,duration : task23, name: task22}, {id : task31,duration : task33, name: task32,dependsOn: task21}, {id : task41,duration : task43, name: task42} ]; // data /*var data = [ {id: "1", duration: 1, name: "Task A"}, {id: "2", duration: 4, name:"TASK B" }, {id: "3", duration: 3, name: "Task C"}, {id: "4", duration: 1, name: "Task D"}, {id: "5", duration: 2, name: "Task AD", dependsOn: ["1", "4"]}, {id: "6", duration: 2, name: "Task BC", dependsOn: ["2", "3"]} ];*/ //console.log(data.duration); // create a PERT chart chart = anychart.pert(); // set chart data chart.data(data, "asTable"); // set the title of the chart chart.title("PERT Chart"); // set the container id for the chart chart.container("container"); // initiate drawing the chart }); </script> </body> </html> صور:
    1 نقطة
  4. شكرا لك، بعد تطبيق الملاحظة و فصل قراءة البيانات لتابع منفصل، تم عرض ملف chart بدون ظهور أخطاء والملف: nvessaie.html
    1 نقطة
  5. لا أستطيع التأكد من الحل إلا بعد الحصول على الملف و التجريب. كما هو واضح، بعد تحميل الصفحة document ready ستتم قراءة القيم من الحقول قبل أن يملأ المستخدم البيانات، لذلك عملية استخراج البيانات يجب أن تكون في تابع عند النقر يتم تنفيذها و ليس بها الشكل. هل تعمل chat.draw؟ لأنك قمت بتعريفها لاحقاً و ضمن دالة أخرى. أرجو ضغط الملف و إرفاقه
    1 نقطة
  6. السلام عليكم ورحمة الله وبركاته انتهي من تعلم css ولكن عند التطبيق حاولت جعل ال nav ذات position:fixed ولمن التصميم يخرب ولا أعلم ما الحل بالاضافة الى أني أريد أن أجعل الخلفية شفافة ولكن عند ال scroll تصبح الخلفية سوداء وشكرا لكم
    1 نقطة
  7. ماهي فائدة سكراتش ولماذا بدأنا بها الدورة وهل من الضروري تعلم استخدام البرنامج ام لا؟
    1 نقطة
  8. إني أعمل على إنشاء موقعاً تعريفياً لنفسي (portfolio)، فيه سأضيف قسم تواصل معي (contact me). بحال قام حضرة الزائر/المتصفح بتعبئة البيانات من إسم وبريد إلكتروني ورسالته لي، ثم قام بإرسالها. كيف يمكنني جعلها تعمل؟ أي كيف يمكنني جعل الرسالة تصل الى ال gmail الخاص بي. قد جربت هذا الأمر عدة مرات بمشاهدة فيديوهات على يوتيوب إلا أنها لم تجدِ نفعاً (بلغة ال php ). وجربت وسيلة أخرى وقد وصلتني الرسالة، ولكن لقسم spam في ال gmail وليس لقسم ال inbox. إذاً إني أريد أن تصلني الرسالة لل inbox بحيث يصلني إشعار (notification) بشكل تلقائي على gamil الخاص بي. ( كما العادة إن الإشعار يتفعّل تلقائياً عندما تصل رسالة لل gmail وهو ليس مشكلتي) فكيف السبيل لذلك من وحي تجربتكم وخبرتكم. شكراً لكم مقدماً
    1 نقطة
  9. لا يمكن إرسال بردي الكتروني من الواجهات الأمامية لأنه يحتاج لمخدم بريد الكتروني API online أو host a server. طريقة PHP التي ذكرتها يجب أن توفر السكربت على مخدم متصل بالانترنت أو استضافة لذلك ربما لم يعمل. يوجد بعض حدمات إرسال البريد الالكتروني مثل smtpjs و formspree و EmailJS وغيرهم يمكنك تضمين المكتبة في جزء script ثم تطبيق دالة بسيطة تقوم هذه الدالة بالاتصال ب webservice و هي من ترسل الإيميل لك. مثال عن smtpjs: <script src="https://smtpjs.com/v2/smtp.js"></script> <script> Email.send("from@you.com", // بريدك المرسل "to@them.com", // المستقبل "This is a subject", // موضوع "this is the body", // جسم البريد "smtp.yourisp.com", // مزود حدمة التي عليها بريدك "username", // معلومات بريدك "password"); </script> مثال عن formspree: <form action="https://formspree.io/f/{form_id}" method="post"> <label for="email">Your Email</label> <input name="Email" id="email" type="email"> <button type="submit">Submit</button> </form> form_id هو معرف المستخدم لديك ضمن الخدمة أي بعد عمل اشتراك تابع التوثيق الرسمي لهذه الخدمات لتفاصيل أكثر. كما أن الطريقة التي وضعها حسان بسيطة و فعالة و سهلة.
    1 نقطة
  10. عندما أقوم بإنشاء مشروع بإستخدام فلاسك Flask أقوم بعمل التطبيق بالشكل التالي: from flask import Flask app = Flask(__name__) لماذ نكتب __name__ هنا؟ لماذا لا نكتب أسم المشروع هنا على سبيل المثال؟ أعلم أن المتغير __name__ يشير إلى اسم الوحدة، والتي ستكون __main__ عندما أشغل المشروع، لكن ما هي المعلومات التي يمكن أن يحصل عليها Flask عندما يتلقى __main__ كمعامله الأول؟
    1 نقطة
  11. __name__ عبارة عن طريقة للحصول على اسم الاستيراد للمكان الذي تم تحديد التطبيق فيه. فعلى سبيل المثال إن كان لدينا ملفين app.py و settings.py، ويحتويان على الأكواد التالية: الملف app.py import settings print('app.py') print('__name__ in app.py:', __name__) الملف settings.py print('settings.py') print('__name__ in settings.py:', __name__) كما تلاحظ من الاكواد السابقة فإن الملف app.py يقوم بإستدعاء الملف settings.py، وكلًا من الملفين يطبعان قيمة __name__ ، وسنحصل على النتيجة التالية عند تشغيل الملف app.py: settings.py __name__ in settings.py: settings app.py __name__ in app.py: __main__ من الواضح من النتيجة السابقة أن __name__ في الملف settings.py تشير إلى اسم الملف "settings"، بينما في الملف app.py فهي __main__ أي أن هذا الملف هو الملف الرئيسي الذي تم تشغيله من سطر الأوامر. بهذه الطريقة فإن فلاسك Flask يستخدم اسم الاستيراد (الموجود في __name__) لمعرفة مكان البحث عن القوالب templates والملفات الثابتة static files .. إلخ. عند استخدام حزمة package، إذا حددت تطبيقك في الملف __init__، فسيظل __name__ يشير إلى المكان "الصحيح" إلى حيث توجد الموارد. ومع ذلك ، إذا قمت بتعريف فلاسك Flask في ملف مختلف، مثل mypackage/app.py وأستدعيت هذا الملف الأخير من مكان آخر خارج الحزمة مثل main.py، فإن استخدام __name__ سيخبر فلاسك Flask بالبحث عن الموارد المتعلقة بـ mypackage.app بدلاً من mypackage، أي أنه يشير إلى المكان الصحيح إلى الموارد resources (القوالب templates والملفات الثابتة static files .. إلخ) استخدام __name__ مجرد اختصار لاستخدام اسم الحزمة. وليس هناك سبب للقول إن الاسم يجب أن يكون اسم الحزمة الأساسية، فالأمر متروك تمامًا لهيكل مشروعك، وإن كان تطبيقك بسيط للغاية (مجموعة من الملفات البسيطة بدون الإعتماد على الحزم) فيمكنك كتابة أي شيء بدلًا من __name__ أو حتى عدم كتابة أي شيء from flask import Flask app = Flask("") # مجرد نص فارغ @app.route('/') def index(): return "Hello, World!" app.run(debug=True)
    1 نقطة
  12. عوض عن نموذج يتم تعبئته من قبل الزائر هناك حل أبسط ومضمون من ناحية عدم وصوله لقسم Spam، يمكنك وضع زر "تواصل معي" عند الضغط عليه يتم فتح تطبيق البريد الالكتروني الخاص بالمستخدم وتعيين العنوان الخاص بك بشكل تلقائي، يتم ذلك عبر إضافة رابط من النمط التالي ويمكنك تنسيقه بما يناسب موقعك ليكون على شكل زر: <a href="mailto:ibrahim@gmail.com">تواصل معي</a> احرص على تبديل عنوان البريد بالعنوان الخاص بك
    1 نقطة
  13. هذا بسبب أن ال ORM يقوم بالتحقق من وجود الكائن seller والكائن products في قاعدة البيانات، في حالة عدم وجود أحد منهم جانغو يقوم بالتنبيه بهذا الخطأ RelatedObjectDoesNotExist. لتجنب هذا الخطأ يجب تغيير الدالة has_related_object إلى ما يلي: def has_related_object(self): if hasattr(self, "seller") and hasattr(self, "products"): return (self.seller is not None) and (self.products is not None) return False الدالة hasattr تقوم بالتحقق من وجود الرابط بين الكائن من الصنف store مع الكائن seller ومع الكائن products. كما يمكننا أيضا إستخدام try .. catch لتفادي الخطأ قبل وُقوعه def has_related_object(self): try: return (self.seller is not None) and (self.products is not None) catch RelatedObjectDoesNotExist as e: pass return False
    1 نقطة
  14. ووردبريس WordPress عبارة عن نظام إدارة محتوى Content Management System، أي أنه يستخدم لإدارة المحتوى في الموقع بغض النظر عن ماهية المحتوى (مقالات، منتجات، صور .. إلخ)، ويوفر ووردبريس الكثير من القوالب templates والاضافات plugins التي تمكنك من تغير سلوك الموقع أو تغير شكله أو إضافة المزيد من المميزات. من ضمن هذه الإضافات والمميزات الموجودة في ووردبريس، إضافات تسمح لك ببناء صفحات في الموقع (أو تغير شكل الموقع بالكامل) مثل elementor على سبيل المثال، ولكن هذه الإضافات أو هذه الطريقة بشكل عام (بناء المواقع بدون كود) محدودة للغاية وأن تمكنك من إنشاء موقع به مميزات محددة أو إستثنائية وستلجأ في النهاية إلى مبرمج للقيام به الأمور المخصصة customized، لذلك فإن تعلم كتابة كود الموقع بالكامل يسمح لك بتخصيص الموقع بشكل غير محدود حيث سيكون بإمكانك القيام بأي شيء تريده ومن الصفر. هذا وستتعلم أيضًا كيفية حل المشاكل البرمجية، فعلى سبيل المثال إن كنت تستعمل أحد الإضافات في موقع ووردبريس ولكن وجدت أن الإضافة لا تعمل بسبب خطأ برمجي، فلن تتمكن من حل المشكلة إلا إذا كان لديك معرفة بلغة php (اللغة المستعملة في إنشاء ووردبريس وقوالبه وإضافاته)، وستبحث عن مبرمج لحل هذه المشكلة أيضًا. أيضًا دورة تطوير تطبيقات الويب باستخدام لغة PHP الموجودة في أكاديمية حسوب تعلمك إستخدام إطار العمل Laravel وهو أشهر إطار عمل للغة PHP والذي يسمح لك بإنشاء أي موقع تريده بدون الاعتماد على نظام إدارة محتوى. مثل ووردبريس، في الواقع يمكنك أن تبني نظام مشابه لووردبربس نفسه باستخدام إطار العمل Laravel.
    1 نقطة
  15. لديك عدد لا نهائي من الصفحات التي يمكنك رفها، لكن حساب github واحد يمكنه عمل حساب github pages واحد (موقع واحد) ولا يوجد فرق بين حساب مستخدم و منظمة. أي يمكنك تخديم عدد لا نهائي من المواقع. مقتبس من موقعهم: You get one site per GitHub account and organization, and unlimited project sites
    1 نقطة
  16. لأحسنت الفكرة جيدة، الموضوع أنه بعد رفض التطبيق أكثر من مرة عليك عمل تعديل كبير ليلاحظ المراجع الفروقات، لأنه بما أن الرفض مسبق فلن يعطي مجهود إضافي للتحقق، حاول أفضل ما لديك. نعم هذه مطلوبة، مثل فيس بوك مثلاً يمكنك إخفاء تعليق بنفسه
    1 نقطة
  17. بالنسبة لي كمستخدم، لم أستطع تمييز طريقة مباشرة أو على الأقل رمز واضح مثل علامة X بجانب التعليق المسيء، حاول توضيح آلية الحظر أو إخفاء التعليق المسيء، كما أرفق ترجمة لكلمتي حظر و إبلاغ بالإنكليزية لربما حدث سوء فهم من قبل المراجعين،
    1 نقطة
  18. يوجد مكتبة تسمح لك بتخصيص bottom tabs بطريقة جميله وهي react native curved bottom bar مثال: التنصيب: npm install react-native-curved-bottom-bar react-native-svg --save التوثيق: رابط 1: github /react-native-curved-bottom-tabbar رابط 2: npmjs /react-native-curved-bottom-bar مثال تطبيقي: expo.dev
    1 نقطة
  19. ألا يوجد توثيق Documentation مقدم من موفر خدمة SMS API , يشرح طريقة ربطه؟
    1 نقطة
  20. على الأغلب الكوكيز لديك بنمط HTTP-only لذلك هي ليست ظاهرة، بعد عمل POST ستم جلب cookies و يمكنك استخدامها في الطلبيات اللاحقة بتمرير الخاصة و القيمة التالية: xhrFields: { withCredentials: true }, بالشكل: $.ajax("https://example.com/v2/...", { method: 'GET', xhrFields: { withCredentials: true }, crossDomain: true, success: suc_fun, error: error_fun });
    1 نقطة
  21. في حالتك يجب استقبال البيانات القادمة للحقول A 123.. من واجهة المستخدم و تنفيذ العمليات في المخدم. للضرورات التالية: أمن المعلومات: إن كانت المعلومات حساسة و بحاجة للحماية و التحقق من الضروري العمل عليها في المخدم. قوة المعالجة و سرعة المعالج: في أغلب الأحيان قوة معالجة المخدم أفضل من حاسوب المستخدم فنقوم بالعمليات المقعدة في المخدم. ببساطة يمكن للمستخدم حشو معلومات خاطئة أو وهمية فمن الافضل عمل تحقق قبل تخزينها بالحالة النهائية. إن كان لديك ملايين المستخدمين و قوة مخدم متواضعة، عندها سوف تضطر للاعتماد على حواسيب المستخدمين لكن مع الحذر.
    1 نقطة
  22. أنت تريد معرفة إن كان المستخدم قد سجل دخول أم لا عن طريق الاحتفاظ بقيمة token التي هي باسم testing (من الأفضل أن تكون بنفس الاسم token) *عدلها في المخدم*. قيمة cookie ستأتي مع الرد الخاص بالمخدم، بهذه الحالة عليك تخزينها ضمن متغير عام (مثل المتغير User) في أول الملف نقوم بإنشاء متغير let toker = ""; // قيمة فارغة بعد تأكدك من تسجيل الدخول، سوف يتم إعادة res معها cookie ولكن المتصفح يقوم بحفظها تلقائياً فيمكنك جلبها من خلال الكائن document ثم خاصية cookie. نحتاج تابع يقرأ السلسلة النصية من كوكيز الوثيقة ثم حفظها في المتغير فيكون شكل الدالة كالتالي: هذه دالة عامة ضعها في أول الملف تقوم الدالة باستقال مفتاح الكوكيز، ثم تقسم نص خاصية كوكيز لسلاسل نصية عن طريق الفاصلة المنقوطة، ثم تفصل بين المفتاح و القيمة حسب موقع إشارة = بينهما، و عند إيجاد المفتاح المطلوب تعيد قيمته function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i=0; i<ca.length; i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1); if (c.indexOf(name) != -1) return c.substring(name.length,c.length); } return ""; } ثم عند نجاح الطلب في AJAX نقوم باستدعاء الدالة لقراءة قيمة token success: function(res) { token = getCookie("token"); alert(token); // ... },
    1 نقطة
  23. حدد أولًا بوابة الدفع التي تريد ربطها، ثم اتبع ارشادات التوثيق الرسمي لها، كل بوابة دفع لديها طريقة مختلفة في التعامل وتأكيد المدفوعات
    1 نقطة
  24. من المألوف أن تشعر بأنك "سيئ في التفاوض"، ففكرة التفاوض تجعل الكثيرين منا يشعرون بعدم الارتياح أو الحرج أو القلق. يُعتقد أن هذه المشاعر تأتي من سوء فهم ما يتطلبه الأمر ليكون المرء مفاوضًا ناجحًا. في حياتنا، نتفاوض طوال الوقت، في أعمالنا، ومع أصدقائنا، ومع عائلاتنا. وبصفتي أمًا لأربع أطفال، فنصف محادثاتي اليومية هي عبارة عن مفاوضات. يتمحور التفاوض في الأساس حول التفاعل البشري بين الناس، أي أنه لا يتعلق الأمر بالدراهم والدنانير أو شروط الصفقة أو الفوز بها، بل إن المفاوضات تتمحور حول إنشاء علاقات تعطي الجميع أفضل نتيجة ممكنة، فالتفاوض ليس صدامًا بين طرفين، بل هو طريق لحل المشكلات. المشكلة التي نحاول حلها هنا هي: كيف يمكننا العمل معًا (أنت والطرف الآخر من المفاوضات) للتوصل إلى تفاهم واتفاقيات أفضل؟ 12 استراتيجية لمفاوضات ناجحة في بداية الأمر، تعلمت التفاوض من خلال ارتكاب الكثير من الأخطاء، ثم ومن خلال الاستماع إلى ما قاله بعض الأشخاص الناجحين، اثنان منهم على وجه التحديد هما مديرة العمليات في فيسبوك شيريل ساندبرج والأستاذ بجامعة هارفارد ديباك مالهوترا. في القائمة التالية، سترى مجموعةً من الاستراتيجيات التي تعلمتها من الخبراء، بالإضافة إلى الأشياء التي جربتها في حياتي وأفادتني. ضع هذه النصائح نصب عينيك في المرة القادمة التي تفاوض بها، مع هدف يتمثل في بناء العلاقات وحل المشكلات على حد سواء. 1. ضع استراتيجية للتفاوض لا أصدق كيف يدخل بعض الناس في مفاوضات بدون وضع استراتيجية، دون أن يفكروا في الشخص الذي يتحدثون إليه، أو جمع أي معلومات عن الأمر أو يضعوا خطة. عندما تضع استراتيجيةً ما، تحدث حولها مع زملائك في الفريق ومع مدربك، وحتى زوجتك وستندهش من وجهات نظر الآخرين وكيف سيقترحون عليك حججًا ووجهات نظر جيدة لم تكن لتفكر بها بمفردك. 2. إعرف حدود الصفقة عليك أن تعرف ما هي العوامل التي قد تمنع من إتمام الصفقة، وأن تفكر جيدًا في ما سيحدث إن لم تنجح في إتمام الصفقة مع الطرف الآخر. في كثير من الأحيان ننشغل بما نحتاج نحن إليه وما نريده، لكن عليك أيضًا التفكير بما يحتاجه الطرف الآخر، إن التفكير في ما سيحدث إن لم تنجح في إتمام الصفقة، سيتيح لك إمكانية معرفة متى سيكون الطرف الآخر مرنًا في التفاوض ومتى لن يكون كذلك، أي ليست كل الصفقات قابلةً للإنجاز. لذا من الجيد معرفة متى يجب عليك الانسحاب، لذا تقبل النتيجة إن وصلت لهذه النقطة، فلا بأس من ذلك. 3. إعرف حيثيات الأمور قبل التفاوض حدد كيف يمكنك الوصول إلى هدفك. يدخل الكثير من الناس في مفاوضات ويصبون كامل تركيزهم على النتيجة لدرجة أنهم لا يفكرون في التفاصيل: كيف ستنجز الصفقة؟ من هم المعنيون الذين يجب أن أتعامل معهم؟ من بيده القرار أو من هو صانع القرار؟ فآخر شيء تريده هو اعتقادك أنك قد انتهيت من المفاوضات، وكشفت جميع أوراقك، وقدمت أفضل عرض لديك؛ لتتفاجأ بالطرف الآخر يقول لك: "حسنًا، أريد أن أستشير مديري ونحتاج إلى معرفة…" نعم للأسف، هناك شخص آخر عليك أن تعيد الكرّة معه، مرحلة أخرى من المفاوضات المرهقة، لذا تأكد دائمًا من فهمك لكامل حيثيات العملية قبل أن تركز على النتيجة النهائية. 4. كن مستمعا إيجابيا عندما تريد أن تسمع وجهة نظرك، استمع لوجهة نظرهم أولًا، ولا تدخل في مفاوضات معتقدًا أنك يجب أن تقود المحادثة كلها. يجب أن تستمع وتسأل الكثير من الأسئلة. حاول أن تفهم ما هي سيناريوهات الشخص الآخر. ما هي قيودهم؟ وما هي جداولهم الزمنية؟ وما الذي يواجهونه؟ سيساعدك هذا الأمر في تحديد كيفية الوصول إلى النتائج الصحيحة. عندما تستمع وتقر بوجهة نظر الطرف الآخر أولًا، فهذا سيساعدك على سد الفجوة بينكما وسيكون أكثر تقبلًا لسماع وجهة نظرك. 5. جهز خطة بديلة اسأل نفسك دائمًا: إذا لم ينجح هذا الأمر، فأين سنتجه بعد ذلك؟ ما هي الخطوة التالية؟ سيسمح لك هذا الأمر بالاستعداد للمواقف الصعبة أو النتائج التي لم تكن تتوقعها؛ لذا توقع ما هو غير متوقع، وبهذه الطريقة لن يتسبب عنصر المفاجأة في إخراجك من اللعبة. 6. التوضيح السردي لا تدع الأرقام تتحدث بمفردها، فلديك الكثير لتقدمه مهما كان الموقف، سواءً كنت تتفاوض بخصوص الميزانية أو وقت التنفيذ، أو أي قيود أخرى. أي إن كنت تقدم النتيجة دون أن تغلفها بتوضيحات سردية، فقد تبدو عدائيًا وغير مرن. يمكن أن يساعد التوضيح السردي الجميع في الوصول إلى حل يناسب الجميع على نحو أفضل. بمعنى آخر، إذا أرسلت بريدًا إلكترونيًا يحتوي على عرض سعر نهائي، فاكتب معه بعض التوضيحات السردية، وأجري مكالمة هاتفية أخيرة أو محادثةً لأنها ستساعدك بالفعل في الوصول إلى نتيجة أفضل. 7. كن مرنا اجعل هذه المقولة نصب عينيك عند التفاوض: عندما تعطي الناس خيارات، فإنهم يشعرون أنهم مشاركون في القرار وليسوا مجبرين على شيء ما. لذا قدم عدة خيارات عند التفاوض. قد لا تستطيع أن تكون مرنًا حيال السعر، ولكن يمكنك أن تكون مرنًا فيما يتعلق بالشروط أو في موعد البدء أو أي شيء آخر. ابتدع أمورًا أخرى يمكنك أن تكون مرنًا بها مع الطرف الآخر، فهناك دائمًا العديد من الطرق والأساليب لإنجاز شيء ما. 8. انتبه من التحيز الجنسي التحيز بين الجنسين أصبح واقعًا في مجتمعنا، وهو أمر سيء، ولكن من خلال الإعتراف بحدوثه في مجتمعنا، يمكننا البدء في تحسين الأمور. فعندما تشعر بأن امرأةً ما تفاوض "بعدوانية"، اسأل نفسك عما إذا كنت ستشعر بنفس الطريقة لو كان رجل يقول نفس ما تقول. ضع في حسبانك أن التحيز بين الجنسين أصبح واقعًا هذه الأيام، وأن النساء تتعامل معه يوميًا، لذا تأكد من تشجيع النساء في مؤسستك على التفاوض، وأن يثنى عليهن وليس معاقبتهن عندما يفعلن ذلك. 9. زد من نفوذك عبر إعادة صياغة المفاوضات يقصد بالنفوذ عندما تستخدم شيئًا ما للوصول إلى أقصى قدر من المزايا، وهو يُعَد جزءًا من كل عملية تفاوض. ستمر عليك أوقات يكون فيها ضمن إمكانياتك، وهناك أوقات ستفقده، وهناك أوقات يمكنك فيها استعادته. وأفضل طريقة لاستعادة النفوذ هي الاستماع وطرح الأسئلة الصحيحة، مع وضع أهداف الطرف الآخر في الحسبان، والتفكير بالمفاوضات على أساس طريق يصل بالجميع إلى أفضل نتيجة ممكنة، وليس على أساس منافسة. 10. تجنب رد الفعل العكسي يحدث رد الفعل العكسي عندما تفرط في التفاوض، وبالتالي لن تكون النتيجة جيدةً للطرفين، حيث سيؤدي "الفوز" في المفاوضات إلى خسارتك لعلاقة مهمة. يشعر الناس بالاستياء عندما يشعرون أنهم قد استغلوا. إذا تعاملت بحدة مع شخص ما، فسيكون من الصعب عليه نسيان الأمر، وسيبقى هذا الاستياء مؤثرًا على علاقتك معه. لتجنب هذا النوع من رد الفعل العكسي، عليك اتباع الآتي: انقل الأخبار السارة على مراحل، ولكن الأخبار السيئة دفعةً واحدة. تقبل الأمور بتروي، فالقبول السريع جدًا قد يؤدي إلى الندم. خفف من حماسك عندما تكون الصفقة لصالحك. وازن بين الرغبة في تحقيق أهداف عالية والحاجة إلى تكوين علاقة جيدة. في النهاية، سيؤدي تكوين علاقات قوية في جعلك في وضع أفضل على نحو عام وشامل. 11. اجعلهم منتصرين عندما تحدثهم عن الميزات التي ستأتيهم من جراء عقد الصفقة معك، فسيساعدهم هذا الأمر على التركيز على ما هو نافع بالنسبة لهم (مقابل ما تريده منهم)، وبالتالي الوصول إلى نتيجة مفادها أنها صفقة رابحة. 12. كن صادقا يبدو الأمر بسيطًا، لكن من الجدير ذكره عندما تكون علامتك التجارية وسمعتك على المحك. يحب الناس التعامل مع الأشخاص الذين يشعرون أنهم صادقون، لذلك لا تحاول أن تكون مبدعًا على نحو مفرط، بل قل الحقيقة بكل بساطة؛ وأعدك بأن الأمر سيعود عليك بصفقات أفضل. كون علاقات أثناء التفاوض الطرف الآخر في التفاوض ليس خصمك، بل هو شريكك في تحقيق أفضل نتيجة ممكنة للجميع. بمجرد أن تفكر بالمفاوضات بهذه الطريقة، ستتوقف عن الشعور بعدم الارتياح أو القلق أو الارتباك حيالها، لأنك ستدرك أن لديك المهارات التي تحتاجها لتكون مفاوضًا ناجحًا. ترجمة وبتصرّف للمقال Learn How to Negotiate with these 12 Tactics for Successful Negotiations لصاحبته Shawna Fisher. اقرأ أيضًا النزاع والتفاوض في المؤسسات أساليب حل النزاع في المؤسسات كيف ومتى تقوم بإعادة التفاوض على أسعارك ككاتب مستقل
    1 نقطة
×
×
  • أضف...