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

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

  1. ياسر جفال

    ياسر جفال

    الأعضاء


    • نقاط

      2

    • المساهمات

      80


  2. Samer Saner

    Samer Saner

    الأعضاء


    • نقاط

      1

    • المساهمات

      8


  3. Geek

    Geek

    الأعضاء


    • نقاط

      1

    • المساهمات

      18


  4. Ahmad Kalla

    Ahmad Kalla

    الأعضاء


    • نقاط

      1

    • المساهمات

      1


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

المحتوى الأعلى تقييمًا في 07/26/15 في كل الموقع

  1. نبذة مختصرة عن صناعة الألعاب وتطويرها لعل صناعة الألعاب هي إحدى أصعب الصناعات في هذا العصر، وذلك من عدة نواح تبدأ بالتحديات التقنية، مرورا بجمهور صعب الإرضاء ولا يرحم حتى كبريات الشركات إن لم تكن منتجاتها بالمستوى المطلوب، وليس انتهاءا بالمنافسة الشرسة ونسب الفشل العالية وصعوبة تحقيق أرباح تغطي تكاليف الإنتاج المرتفعة. على الجانب الآخر يوجد ميزات لهذه الصناعة تجعل من النجاة فيها أمرا ممكنا، فعلى الجانب التقني مثلا، لا تخلوا الغالبية العظمى من الألعاب من وظائف متشابهة وأنماط متكررة من معالجة البيانات، مما يجعل إعادة استخدام الوحدات البرمجية للألعاب السابقة من أجل إنشاء ألعاب جديدة أمرا ممكنا، وهذا بدوره يساهم في تذليل العقبات التقنية واختصار الوقت والجهد. عندما تتحدث عن صناعة لعبة، فأنت هنا تذكر العملية الكبرى والتي تنطوي على عشرات وربما مئات المهام التي يجب أن تنجزها في مجالات عدة. فصناعة لعبة تعني إنتاجها وتسويقها ونشرها وكل ما يتعلق بهذه العمليات من إجراءات وخطوات إدارية وتقنية وفنية ومالية وقانونية. على أية حال فإن ما يهمنا في سلسلة الدروس هذه هو الجانب التقني وهو تطوير اللعبة، وهي عملية بناء المنتج البرمجي النهائي بكافة مكوّناته. هذه العملية لا تشمل بالضرورة تصميم اللعبة، حيث أن عملية التصميم ذات منظور أوسع وتركز على أمور مثل القصة والسمة العامة للعبة وأشكال المراحل وطبيعة الخصوم، بالإضافة إلى قواعد اللعبة وأهدافها وشروط الفوز والخسارة. بالعودة لعملية تطوير اللعبة، نجد أن العديد من الاختصاصات والمهارات تساهم في هذه العملية، فهناك الرسامون ومصممو النماذج وفنيو التحريك ومهندسو الصوت والمخرج، إضافة – بالطبع – للمبرمجين. هذه النظرة الشاملة مهمة لنعرف أن دور المبرمج في إنتاج اللعبة ليس سوى دورا مكمّلا لأدوار غيره من أعضاء الفريق، ولو أن هذه الصورة بدأت تتغير بظهور المطورين المستقلين Indie Developers والذين يقومون بالعديد من المهام إلى جانب البرمجة. لماذا نستخدم محركات الألعاب؟ لو أردنا الحديث بتفصيل أكبر عن دور المبرمجين في صناعة الألعاب، سنجد أنه حتى على مستوى البرمجة نفسها هناك أدوار عديدة يجب القيام بها: فهناك برمجة الرسومات وهناك أنظم الإدخال وأنظمة استيراد الموارد والذكاء الاصطناعي ومحاكاة الفيزياء وغيرها مثل مكتبات الصوت والأدوات المساعدة. كل هذه المهام يمكن إنجازها على شكل وحدات برمجية قابلة لإعادة الاستخدام كما سبق وذكرت، وبالتالي فهذه الوحدات تشكل معا ما يعرف بمحرك الألعاب Game Engine. باستخدامك للمحرك والمكتبات البرمجية التي يتكون منها، فأنت تختصر على نفسك الجهد اللازم لبناء نظام الإدخال والإخراج والاستيراد ومحاكاة الفيزياء، وحتى جزء من الذكاء الاصطناعي. وما يتبقى عليك هو كتابة منطق لعبتك الخاصة وإبداع ما يميزها عن غيرها من الألعاب. هذه النقطة الأخيرة هي ما ستدور حوله سلسلة الدروس القادمة، وبالرغم من أن المهمة تبدو صغيرة جدا مقارنة بتطوير اللعبة كاملة، إلا أنها على صغرها تحتاج لمجهود معتبر في التصميم والتنفيذ كما سنرى. خطوات سريعة لتبدأ مع محرك Unity إن لم تكن ذا خبرة سابقة بهذا المحرك يمكنك قراءة هذه المقدمة السريعة، كما يمكنك تخطيها إن كنت تعاملت مع هذا المحرك سابقا. لن أطيل شرح هذه الخطوات حيث هناك الكثير من الدروس سواء بالعربية أو الإنجليزية تتناولها، لكنها هنا لنتأكد من أن كل قارئ للسلسلة على نفس الدرجة من المعرفة الأولية قبل البدء. الخطوة الأولى: تحميل وتنصيب المحرك لتنزيل الإصدار الأحدث من المحرك وهو 5 ادخل مباشرة إلى الموقع http://unity3d.com ومن ثم قم بتحميل النسخة المناسبة لنظام التشغيل الذي تستخدمه، علما بأن النسخة المجانية من المحرك ذات إمكانات كبيرة وهي تفي بالغرض بالنسبة لمشروعنا في سلسلة الدروس هذه. الخطوة الثانية: إنشاء المشروع بمجرد تشغيل المحرك بعد تنصيبه ستظهر لك شاشة البداية، قم بالضغط على New Project لتظهر لك شاشة كالتي تراها في الصورة أدناه. كل ما عليك هو اختيار النوع 2D ومن ثم اختيار اسم وموقع المشروع الجديد الذي ستقوم بإنشائه، ومن ثم الضغط على Create Project. الخطوة الثالثة: التعرف على نوافذ البرنامج الرئيسية تهمنا في البداية 4 نوافذ رئيسية في محرك Unity، وفيما يلي ملخص لوظائفها: نافذة المشهد Scene: وهي التي تستخدمها لبناء مشهد اللعبة وإضافة الكائنات المختلفة إليه وتوزيعها في الفضاء ثنائي الأبعاد. تحتوي هذه النافذة مبدئيا على كائن واحد وهو الكاميرا. هرمية المشهد Hierarchy: تحتوي على ترتيب شجري يحوي كافة الكائنات التي تمت إضافتها للمشهد ويساعدك في تنظيم العلاقات بينها، حيث أنه من الممكن أن تضيف كائنات كأبناء لكائنات أخرى بحيث يتأثر الكائن الابن بالكائن الأب كما سنرى. تحتوي هذه النافذة مبدئيا على كائن واحد وهو الكاميرا. مستعرض المشروع Project: يقوم بعرض جميع الملفات الموجودة داخل مجلد المشروع، سواء تلك التي تمت إضافتها للمشهد أم التي لم تُضف. يحتوي المشروع مبدئيا على مجلد واحد يسمى Assets، وسنضيف داخله كافة الملفات والمجلدات الأخرى. نافذة الخصائص Inspector: عند اختيار أي كائن من هرمية المشهد أو نافذة المشهد أو مستعرض المشروع، فإن خصائصه ستظهر في هذه النافذة ويمكنك تغييرها من هناك. استعرضنا في هذا الدرس ما يظهر من واجهة Unity3D للوهلة الأولى، مع مقدمة بسيطة حول صناعة الألعاب، سنشرع في الدروس القادمة في مشروع عملي نتعلم من خلاله كيفية صناعة لعبة كاملة حقيقية. فترقبوا!
    2 نقاط
  2. الإصدار 2.0.0

    44877 تنزيل

    كثر العاملون عن بعد في اﻷعوام الأخيرة إما عملًا حرًا أو نظاميًا، وقفز هذا النمط قفزات كبيرة وتغير كذلك عدة مرات في تلك الأعوام، وربما نشهد استقرارًا نسبيًا لتقلباته على المدى القريب، وإن كان الإصدار الأول من هذا الكتاب منتصف عام 2015 يبشِّر به ويدعو الناس إليه وإلى مزايا التعامل مع الموظفين عن بعد، كان لزامًا علينا تحديث الكتاب وإصدار هذه النسخة التي سنتوسع فها ونتعرض للمشاكل التي تواجه الذين يوظِّفون عن بعد، فقد طرأت مشاكل جديدة لم تكن موجودة من قبل استحداث هذا النمط من العمل، وسنذكر بعض الحلول لتلك المشاكل مما رأيناه في السوق أو جربناه بأنفسنا. وكانت الوظائف التي تسمح بالعمل عن بعد في الغالب في المجال التقني أو المجالات التي تعتمد على التقنية في مهامها اليومية، حيث يكون المنتج مادة تُنشأ وتعالَج وتُخرَج على الحواسيب، إما برمجيات أو تصاميم أو نصوص أو مرئيات أو مواد مالية أو غيرها، على عكس المجالات التي تكون المنتجات فيها حقيقية مثل المصانع والمتاجر التي لا بد من تواجد حقيقي للموظفين في محل الإنتاج أو البيع، فازدهرت الشركات المتخصصة في تلك المجالات التي تعتمد أساسًا على نهج العمل البعيد وبدأت شركات كثيرة بتبنيه وفقًا لما يناسبها طبعًا، وهنا أردنا تبيان الطريق الصحيح الذي يسهِّل على صاحب الشركة تبني مفهوم العمل عن بعد ويوصل بشركته إلى النجاح، فرأينا أن نضع هذا الكتاب بين يديك ليكون عونًا ودليلًا ومرجعًا. هذه النسخة موجَّهة في الأساس إلى رواد الأعمال وأصحاب الشركات الذين يودون تأسيس شركة تعمل عن بعد أو لديهم شركة قائمة تقليدية تعمل من مقر حقيقي ويريدون تحويلها إلى شركة بعيدةً سواءً كليًا أو جزئيًا، أما إن كنت عاملًا تعمل عن بعد، سواءً موظفًا أو مستقلًا، فنحيلك هنا إلى كتاب دليل المستقل والعامل عن بعد. ونرجو بهذا العمل أن نكون قد وُفقنا في وضع مرجع بين يديك يؤهلك لتأسيس شركة تعمل عن بعد ويرشدك إلى أهم نواحي إدارتها وتوظيف مختلف الكفاءات فيها، بل وحتى تطويرها والانطلاق بها نحو النجاح، عسى أن نرى الكثير من الشركات العربية التي تخدم سوق العمل وتقوده نحو التطور والنجاح. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات نسردها بالترتيب التالي: مدخل إلى العمل عن بعد تأسيس بيئة عمل عن بعد أساسيات التوظيف عن بعد آليات الإدارة والتطوير لشركة تعمل عن بعد تحديات العمل عن بعد والإدارة البعيدة استقرار وتطور الشركات العاملة عن بعد
    1 نقطة
  3. يوفر Laravel 5 ميزة جديدة تسمى استعلامات الاستمارة Form Requests تساعد في معالجة بيانات الاستمارة والتحقق من صحتها. ستتعلم في هذا الدرس كيفية إنشاء استمارة اتصال في Laravel 5 باستخدام الميزة المذكورة وإمكانيات Laravel في إرسال البريد الإلكتروني. سنعرض طوال الدرس لميزات وحيل تقنية تتعلق بالتطوير على Laravel. تتكون استمارة الاتصال من ثلاثة حقول هي اسم المستخدم، وعنوان بريده الإلكتروني والرسالة التي يود إرسالها. ملحوظة: يفترض الدرس أن Laravel مثبت وجاهز للعمل. نبدأ بإنشاء مشروع Laravel جديد (أسميته academy) ثم الدخول إلى المجلد: laravel new academy cd academyيمكننا إنشاء متحكِّم Controller خاص بمعالجة استمارة الاتصال وعرضها إلا أننا سندمج هذه الوظيفة - للتسهيل - في المتحكِّم الذي يتولى الأمور الإدارية المتعلقة بالتطبيق. سننشئ لهذا الغرض متحكما باسم AboutController ونستخدم إجراءيْ create وstore لعرض استمارة الاتصال والتعامل معها (يقدم create الاستمارة عبر GET فيما يقدمها store عبر POST). سيستخدم AboutController إجراءات create ،index وstore فقط فسنكتفي بإنشاء متحكِّم بسيط عن طريق أمر artisan make:controller على النحو التالي: $ php artisan make:controller --plain AboutController Controller created successfullyنضيف كُنْيتيْن Aliases ضمن ملف app/Http/routes.php لتمكين الوصول إلى الاستمارة عبر المسار contact/: Route::get('contact', ['as' => 'contact', 'uses' => 'AboutController@create']); Route::post('contact', ['as' => 'contact_store', 'uses' => 'AboutController@store']);ينشئ أمر artisan make:controller السابق متحكما خاويا، نتيجة استخدام خيار plain-- مع artisan. أي أنه يتوجب علينا إضافة دالتَيْ create وstore في متحكم AboutController. عدل على المتحكِّم ليبدو على النحو التالي: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller; class AboutController extends Controller { public function create() { return view('about.contact'); } public function store() { } } ملحوظة: يوجد المتحكم ضمن المسار app/Http/Controllers الموجود ضمن مجلد المشروع. كل المسارات المذكورة في الدرس تُنسَب إلى مجلد المشروع. ضبطنا إجراء create ليقدم عرضا View باسم contact.blade.php يوجد ضمن المسار resources/views/about. العرض contact.blade.php غير موجود لحد الساعة. فلننشئه. إنشاء استمارة الاتصاليوفر Laravel ميزات عدة لتصْيِير Rendering استمارات HTML. سنستخدم نظام Blade للقَوْلَبة Templating، المضمن في Laravel، لإنشاء الاستمارة. أنشئ مجلدا باسم about في المسار resources/views/ ثم أنشئ داخله ملفا باسم contact.blade.php. وألصق المحتوى التالي: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> {!! Html::style('css/form.css') !!} <title>Academy Contact</title> </head> <body> <div id="page-wrap"> <h1>Academy contact</h1> <ul> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> <div id="contact-area"> {!! Form::open(array('route' => 'contact_store', 'class' => 'form')) !!} {!! Form::label('Your Name') !!} {!! Form::text('name', null, array('required', 'placeholder'=>'Your name')) !!} {!! Form::label('Your E-mail Address') !!} {!! Form::text('email', null,array('required', 'placeholder'=>'Your e-mail address')) !!} {!! Form::label('Message') !!} {!! Form::textarea('message', null, array('required', 'id'=>'Message', 'cols'=>'20', 'rows'=>'20','placeholder'=>'Your message')) !!} {!! Form::submit('Contact Us!', array('class'=>'submit-button')) !!} {!! Form::close() !!} </div> </div> </body> </html>سنعود لشرح هذه الشفرة بعد قليل. 1- تفعيل مكون HTMLفي الاستمارة أعلاه استخدمنا مُنشِئ الاستمارات Form builder الموجود في مكون HTML؛ هذا المكون غير مفعل افتراضيا في Laravel 5. لتفعيله نفذ الخطوات التالية. عدل على ملف composer.json الموجود في مجلد المشروع وأضف التعليمة التالية ضمن خانة require: "illuminate/html": "~5.0"تصبح خانة require على الهيئة التالية بعد إضافة السطر (انتبه للفاصلة , في نهاية السطر الذي يسبق التعليمة التي أضفناها): "type": "project", "require": { "php": ">=5.5.9", "laravel/framework": "5.1.*", "illuminate/html": "~5.0" },حدث اعتماديات Dependencies المشروع عبر الأمر: composer update بعد انتهاء التحديث عدل على ملف config/app.php وأضف السطر التالي ضمن مصفوفة Providers (انتبه للفواصل): 'Illuminate\Html\HtmlServiceProvider',في نفس الملف أضف السطرين التاليين لمصفوفة Aliases: 'Form' => 'Illuminate\Html\FormFacade', 'Html' => 'Illuminate\Html\HtmlFacade',2- شرح آلية تصيير الاستمارةنعود لشرح طريقة إنشاء الاستمارة الموجودة عبر نظام Blade. نبدأ بأول تعليمة: {!! Html::style('css/form.css') !!}نطلب من نظام القوالب تحميل ملف CSS لاستخدامه في الصفحة. سيحمَّل ملف CSS في المكان الذي استُدعِيت فيه دالة style التابعة لصنف Html الذي عرَّفناه في الخطوة السابقة ضمن مصفوفة Aliases، هو وصنف Form. انتبه لكتابة اسم الصنف بنفس طريقة تعريفه في المصفوفة (Html وليس HTML). ملف form.css يوجد ضمن مجلد فرعي (باسم css) من مجلد Public. توضع الملفات المتاحة للعموم (مثل CSS وJavaScript) داخل هذا المجلد. ننتقل للتعليمتين: {!! Form::open(array('route' => 'contact_store', 'class' => 'form')) !!} ... {!! Form::close() !!}تعمل الدالتان Form::open وForm::close() معا من أجل إنشاء وسوم Tags فتح وإغلاق الاستمارة على التوالي. تستقبل دالة Form::open مصفوفة تمثل معطيات إعداد مختلفة؛ مثل كنية route(الوِجهة) التي تشير إلى دالة store ضمن المتحكم AboutController، وclass التي تشير إلى صنف CSS المستخدَم لتنسيق الاستمارة. يُستخدَم إجراء POST افتراضيا إلا أنه يمكن إبداله بGET عبر تمريره في المعطى method على النحو التالي 'method' => 'post'. تضيف دالة Form::open حقلا مخفِيّا عبارة عن رمز _token للحماية من هجمات تزوير الطلب عبر الموقع Cross-site request forgery, CSRF. ثم يأتي الدور على التعليمات التالية: <ul> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul>تستخدم هذه التعليمات لإظهار رسائل تحقق إذا كانت مُدخَلات المستخدم غير مناسبة لطبيعة الحقول (سنعود لها لاحقا، لا تنسها). تظهر في ما بعد مجموعة من الدوال من أجل إنشاء حقول الاستمارة: Form::label لإنشاء لصائق Labels الحقول، Form::text لإنشاء حقول نصية، Form::textarea لإنشاء حقول نصية متعددة الأسطر، وForm::submit لإنشاء زر الإرسال. لاحظ أن دالتيْ Form::text وForm::text تحويان معطى باسم خاصية name الخاصة بالحقل (email، name وmessage على التوالي). أضفنا أيضا لكل حقل تشكيلة من الخيارات مثل أسماء أصناف التنسيقات وخصائص HTML. يمكنك بعد حفظ الملف تنفيذ الأمر التالي (من مجلد المشروع) لتشغيل تشغيل خادوم الويب المضمن في Laravel وتجربة النتيجة: php artisan serveأدخل العنوان http://localhost:8000/contact في المتصفح لعرض صفحة الاستمارة. ننتقل الآن، بعد إنشاء الاستمارة، لإعداد آلية التعامل مع محتوى الاستمارة وتمكين إرسال المقترحات عبرها. إنشاء استعلام استمارة الاتصاليضيف الإصدار الخامس من Laravel ميزة جديدة تعرف باستعلامات الاستمارة Form Requests؛ تهدف إلى وضع التصريح Authorization والتحقق من البيانات المرسَلة خارج المتحكِّمات وتغليفها ضمن صنف منفصل. نستخدم artisan لإنشاء استعلام Form request على النحو التالي: $ php artisan make:request ContactFormRequestينشئ الأمر ملفا باسم ContactFormRequest.php مساره app/Http/Requests/ContactFormRequest.php. يبدو هيكل الصنف، بعد حذف التعليقات، كما يلي: <?php namespace App\Http\Requests; use App\Http\Requests\Request; class ContactFormRequest extends Request { public function authorize() { return false; } public function rules() { return [ // ]; } }تحدد دالة authorize ما إذا كان يُسمح للمستخدم الحالي بالتفاعل مع الاستمارة. نريد أن يكون أي مستخدم قادرا على التفاعل مع الاستمارة، لذا نعدل الدالة لتكون القيمة المُرجَعة true بدلا من false. public function authorize() { return true; }تعرِّف دالة rules قواعد التحقق المرتبطة بحقول الاستمارة. الحقول الثلاثة، email، name وmessage جميعها مطلوبة (required)؛ كما أن حقل البريد الإلكتروني يجب أن يحوي عنوانا بريديا صالحا. نعدل دالة rules لإدراج هذه القواعد. public function rules() { return [ 'name' => 'required', 'email' => 'required|email', 'message' => 'required', ]; }توجد مدقِّقات Validators أخرى غير required وemail في Laravel للاستخدام عند الحاجة. لاحظ استخدام أكثر من مدقق في نفس الحقل مع الفصل بينها ب| مثل ما فعلنا مع حقل البريد الإلكتروني. احفظ ملف ContactFormRequest.php ثم افتح المتحكِّم AboutController (الموجود في المسار app/Http/Controllers/AboutController.php) وعدل دالة store لتصبح على النحو التالي: … use App\Http\Requests\ContactFormRequest; class AboutController extends Controller { public function store(ContactFormRequest $request) { return \Redirect::route('contact') ->with('message', 'Thanks for contacting us!'); } }لا تنس إضافة ;use App\Http\Requests\ContactFormRequest إلى المتحكم ليمكنه استخدام قواعد المصادقة المعرَّفة في الصنف ContactFormRequest.php الذي سيتولى التحقق من موافقة مُدخَلات المستخدم للقواعد الموضوعة ويظهر رسالة خطأ في حال أخلَّ المستخدم بإحداها. على سبيل المثال، إذا أدخل المستخدم عنوانا بريديا غير صالح فستظهر رسالة الخطأ التالية. طبعا لن تظهر رسائل الخطأ من العدم. تتولى مصفوفة errors$ المستخدمة في ملف contact.blade.php إظهار هذه الرسائل. هل تذكر هذه الشفرة؟ <ul> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> نعود إلى ContactFormRequest.php. قد ترغب في إظهار رسالة (شكر مثلا) للمستخدم عند نجاح إرسال الاستمارة. تمكن إضافة رسالة سريعة ضمن دالة store. يضاف المتغير المُمرَّر للدالة تلقائيا إلى متغيرات الجلسة Session في Laravel مما يمكّن من استخدامها عبر الدالة Session::get. يمكِن على سبيل المثال استخدام الشفرة التالية لإظهار محتوى المتغير message في أي عرض (View) أثناء الجلسة: @if(Session::has('message')) <div class="alert alert-info"> {{Session::get('message')}} </div> @endifبقيت خطوة واحدة لتكون الاستمارة جاهزة لإرسال بريد إلكتروني. نحتاج لإعداد مكوِّن البريد في Laravel وإدماج وظيفة تسليم البريد إلى دالة store. إعداد مكوِّن البريد في Laravelيستخدم Laravel حزمة SwiftMailer لتوفير إمكانية إرسال بريد إلكتروني بيسر. كل ما عليك فعله هو ضبط الإعدادات الموجودة في ملف config/mail.php. نذكر في ما يلي بعض الإعدادات الموجودة في الملف. driver: يدعم Laravel عدة تعريفات بريد مثل SMTP، دالة بريد PHP (mail)، خادوم بريد Sendmail وخدمتَيْ Mailgun وMandrill لتسليم البريد. يجب أن تضبط الإعدادات على التعريف المرغوب بالاختيار بين mailgun، sendmail، mail،smtp و mandrill. host: تعيين اسم المستضيف لخادوم البريد الإلكتروني (عند استخدام التعريف smtp).port: تعيين اسم منفَذ خادوم البريد الإلكتروني (عند استخدام التعريف smtp).from: إذا رغبت في أن تستخدم كل الرسائل المرسَلة نفس العنوان البريدي والاسم للمرسِل فبإمكانك ضبط إعدادات from وaddress المعرَّفة في هذه المصفوفة.encryption: يحدد بروتوكول التعميّة Encryption المستخدَم لإرسال البريد الإلكتروني.username: يعين اسم المستخدم في حال كان التعريف smtp.password: كلمة سر المستخدم في حال كان التعريف smtp.sendmail: مسار خادوم Sendmail إذا كانت قيمة driver هي sendmail.pretend: يطلب هذا الإعداد من Laravl تجاهل التعريف المضبوط وإرسال البريد إلى سجل التطبيق بدلا منه. يناسب التطبيقات التي مازالت قيد التطوير والتجربة.نأخذ مثالا لإعداد إرسال البريد في Laravel لاستخدام حساب بريد Google. غير الإعدادات التالية مثل ماهو مبيَّن. أعط القيمة smtp للتعريف driver. هذه هي القيمة الافتراضية.أبدل قيمة host إلى smtp.google.comاستخدم المنفذ port رقم 465.أبدل التعميّة encryption إلى ssl.استخدم حساب البريد الإلكتروني ضمن إعداد username.اكتب كلمة سر حساب البريد الإلكتروني في إعداد password. تذكر أنه يجب، ضمن بيئة عمل فعلية، حفظ هذه المعلومات ومعلومات أخرى حساسة ضمن ملف env. في مشروعك أو في متغير البيئة في الخادوم.احفظ التعديلات على ملف config/mail.php ثم عدل المتحكم AboutController ليبدو على النحو التالي: public function store(ContactFormRequest $request) { \Mail::send('emails.contact', array( 'name' => $request->get('name'), 'email' => $request->get('email'), 'user_message' => $request->get('message') ), function($message) { $message->from('wj@wjgilmore.com'); $message->to('wj@wjgilmore.com', 'Admin')->subject('Academy Feedback'); }); return \Redirect::route('contact')->with('message', 'Thanks for contacting us!'); }الدالة Mail::send هي المسؤولة عن ابتداء عملية تسليم البريد، وتستقبل ثلاثة معطيات. يحدد المعطى الأول اسم العرض (View) المستخدم لقالب جسم (محتوى) البريد الإلكتروني. المعطى الثاني هو مصفوفة بالبيانات المتاحة للاستخدام في جسم البريد الإلكتروني. البيانات المتاحة في حالتنا هي تلك القادمة من استمارة الاتصال عبر الكائن request$. يمنح المعطى الثالث إمكانية تحديد خيارات إضافية للبريد الإلكتروني مثل المرسِل، المستقبِل والموضوع. سنحتاج لإنشاء العرض الذي توجد به محتويات البريد. لذا سننشئ ملفا باسم contact.blade.php في المسار resources/views/emails. طبعا يمكنك تغيير اسم ومجلد العرض؛ إن فعلت فلا تنس التعديل على المتحكم AboutController بما يوافقك تغييراتك. You received a message from academy.hsoub.com: <p> Name: {{ $name }} </p> <p> {{ $email }} </p> <p> {{ $user_message }} </p>ملحوظة: يوجد سجل التطبيق في المسار storage/logs/laravel.log. عند إعطاء القيمة true لpretend ستحاكي إرسال بريد دون أن ترسله فعليا وسيظهر سطر يشبه التالي في السجل: [2015-07-12 11:34:51] local.INFO: Pretending to mail message to: wj@wjgilmore.comعُد، بعد حفظ التعديلات، إلى استمارة الاتصال؛ اكتب بيانات صحيحة ضمن حقول الاستمارة وأرسلها. يجب أن تصل الرسالة إلى البريد الموجود في دالة to (أي wj@wjgilmore.com في المثال). قد تواجه مشاكل مع إعدادات Gmail بسبب التقييدات على تطبيقات الطرف الثالث في Gmail. راجع إعدادات حساب Google في هذه الحالة. خاتمةاخترنا عرض جميع المخرجات المذكورة في هذا الدرس باللغة الإنجليزية للتركيز على الخاصية المشروحة. إن أردت توطين Localization المثال واستخدام اللغة العربية فيمكنك كتابة العبارات العربية مباشرة في ملفات القوالب لكن ستبقى رسائل الخطأ باللغة الإنجليزية ويجب عليك إدراج رسائل خطأ خاصة بالعربية. على العموم يُنصَح، لمن أراد توفير قابلية التوطين بسهولة، بعدم كتابة المُخرجات مباشرة في الشفرة Hard code بل إنشاء ملف بسلاسل المحارف Strings المستخدمة واستدعاء ملف اللغة المناسبة عن طريق دالة الترجمة trans. يُنشَأ مجلد لكل لغة مدعومة ضمن المسار resources/lang الذي يوجد فيه افتراضيا مجلد للغة الإنجليزية en به ملفات بالعبارات المستخدمة افتراضيا. ترجمة بتصرف لمقال Creating a Contact Form in Laravel 5 Using the Form Request Feature لصاحبه Jason Gilmore
    1 نقطة
  4. خضتُ عددًا من التجارب المثيرة في الأعوام القليلة الماضية التي شهدت تأسيسي لمنصة Buffer. واحدٌ من الأمور التي تثير تفكيري هو سؤال: هل يجب أن تتوقّف عن الدّراسة/ تترك الجامعة لتعمل على تأسيس شركتك الناشئة؟ لم أترُك الجامعة، لكن «ليو»، شريكي المؤسس، قد تركها بعد النجاحات التي حقَّقناها في Buffer؛ وقد تحدَّثت معه كثيرًا عن الأمر. أتحدَّث أيضًا مع العديد من مؤسسي الشركات الناشئة من طلبة الجامعات الذين يُفكِّرون في ترك الجامعة. لذا كان لزامًا عليَّ أن أخرج بإجابة عن السؤال. الجامعة ميزة قويةيقول مارك زوكربيرغ، مؤسس «فيس بوك» ومديره التنفيذي: أحد الأمور التي أدركتها بالنظر إلى الماضي هو قدر الفائدة التي تعود عليك من الالتحاق بالجامعة إذا أردت أن تؤسس شركة ناشئة. كان لديَّ العديد من المشاريع الجانبية في أثناء دراستي بجامعة «وارويك» البريطانية؛ ودرست أيضًا مادتين قمت فيهما بمشاريع يُمكنني وصفها الآن بأنها شركات ناشئة. لا ضغوطتُحررك الدراسة من كافة الضغوط التي قد تقع على كاهلك حين تُخطط لتأسيس شركة ناشئة. ونتيجة لذلك، يمكنك تجربة الكثير من الأمور المختلفة؛ يمكنك تعلَّم لغات جديدة؛ ويمكنك أن تُجرب مفاهيم مختلفة للشركات الناشئة مثل تنمية العميل أو الشركات الناشئة الليّنة lean startup. يمكنك الخروج إلى الطريق والتحدُّث إلى الناس عن المشاكل التي تواجههم، ثم تحاول حلَّها. يمكنك محاولة الحصول على أموالٍ نظير شيء صنعته دون ضغوطٍ تفرض عليك الحصول على مبلغٍ مُعيَّن من المال لتكسب قوت يومك. كل شيءٍ مُرتَّب سلفًا؛ لتتمكَّن من الاسترخاء والتجريب بُحريَّة. العقول المتشابهةمن السهل نسبيًا أن تعثر على أشخاصٍ متشابهين في التفكير في الجامعة. ثمَّة عدد هائل من الطُلَّاب في أي جامعةٍ يضمن لك أن تجد أناسًا يشبهونك طالما توفَّرت لديك الرغبة في السعي إلى مقابلتهم والعمل معهم. أعلم أن عددًا لا يُحصى من الشراكات في تأسيس الشركات الناشئة قد بدأت في الجامعة. وهذا هو ما حدث مع Buffer؛ فأنا و«ليو» قد تقابلنا للمرة الأولى في جامعة «وارويك» في أثناء تنظيم حدثٍ لريادة الأعمال. فحاول أن تكون منفتحًا على مجتمع الجامعة واستفِد من وجودك في بيئة كهذه. لا تخشَ التجاربحين تكون طالبًا في الجامعة تراودك الكثير من الأفكار التي يُمكنك تجربتها في وقت فراغك. كل تلك الأفكار قد تصبح يومًا شركة ناشئة رائعة؛ ويمكنك حينها الإفادة من مفهوم التجربة بما أنَّك تكون متحررًا من الضغوط. أعتقد أنَّ المؤسس الشريك لشركة Yipit ومديرها التنفيذي Vinicius Vacanti قد قدَّم أفضل صياغة لهذه الفكرة: يمكنك حقًا الإفادة من منهج «التجربة» هذا خلال دراستك الجامعية لتتعلَّم الكثير عن الشركات الناشئة في وقت قليل. فترات وقت الفراغبين كل الطلبة الجامعيين شيءٌ مشتركٌ: إنهم يتمتعون بفترات مختلفة من وقت الفراغ على مدار العام، حين يقِل ضغط الفروض الجامعية. في تلك الأوقات يكون لديك فرصةٌ كبيرةٌ للعمل على مشروعٍ قد يُصبح يومًا قصة نجاح كبرى. ليس ثمَّة مثال على ذلك أفضل من «فيس بوك» حين كان في بداياته: «كتبت النسخة الأولى من فيس بوك في يناير من عام 2004 وأطلقتُها في فبراير من العام نفسه. السبب الذي مكَّنني من إنهائها في يناير هو أن جامعة هارفارد كانت في عُطلة.» نصيحتي لطُلاب الجامعة هو استغلال هذه الفترات بحكمة. ابدأ مشروعًا جديدًا في كلٍ منها؛ واستخدم دروسها المستفادة في العمل على مشاريع جديدة. ترك الجامعة عادةً لا يكون مفاجئًااستنادًا إلى قناعاتي، والمواقف التي مررت بها مع شريكي «ليو» في الفترة التي ترك فيها الدراسة الجامعية، أقول إنَّ حدسك سيتكفَّل بإخبارك بالوقت المناسب لترك الجامعة لصالحِ شركتك الناشئة. لذا، أعتقد أن أحد أكبر الأوهام هو أنَّه يجب عليك قطع كل صلةٍ تربطك بالجامعة فجأةً. إليك الطريقة التي رأيت الأمر يحدث بها: يعمل المرء في كثيرٍ من المشاريع الجانبية في أثناء الدراسة الجامعية، وحين يبدأ واحد منها في إحراز بعض النجاح، يتعلَّم الكثير وتتطوَّر خبراته في فترة قليلة للغاية من الزمن. يرتبط هذا بشدةٍ بالمفهوم الذي طوَّره «بول جراهام» (Paul Graham) عن «ضغط حياتك»: هذا هو ما يحدث بالضبط حين تبدأ واحدة من أفكار مشاريعك الناشئة في تحقيق النجاح. ثمَّة طريقة أخرى رائعة لوصف الأمر، بعبارات Marc Andreessen حين وصف نقطة الوصول إلى ملائمة المنتج للسوق: أعتقد أنَّك حين تصل إلى هذه النقطة فستشعر أنَّ ترك الدراسة الجامعية قد يكون أكثر جدوى. المثير في الأمر أنَّه لا يتعيَّن عليك ترك الدراسة بطريقة مفاجئة حتى حين تصل إلى تلك النقطة؛ فيمكنك مثلًا أن تقطع الدراسة لفصلٍ أو عامٍ دراسي. لقد وصلنا الآن إلى نسبة عائدات متدفقة تقترب من مليون دولار أمريكي سنويًا في Buffer؛ ووصلنا إلى 370 ألف مستخدمٍ بفريقٍ مكوَّن من 7 أفراد؛ لكن «ليو» ما يزال طالبًا جامعيًا، نظريًا على الأقل. لم يترك «ليو» الجامعة رسميًا حتى الآن؛ ولا يجب عليك القيام بذلك على عجل. أعجبني وصف «مارك زوكربيرغ» تجربته بطريقة مشابهة: «لدى هارفارد سياسة تُمكنك من الانقطاع عن الدراسة لأيَّة مدة تريد. فلِمَ لا ننقطع عن الجامعة لفصلٍ دراسيٍ ثم نحاول موازنة الأمر، وبناء الأدوات (tooling)، حتى نتمكَّن من العودة في الفصل الدراسي الثاني وتسيير العمل بشكلٍ أكثر استقلالية. أتى الفصل الدراسي الثاني ولم نكُن قد أنهينا بناء الأدوات أو الأتمتة/ التشغيل الآلي (automation) بعد؛ لذا دعنا ننقطع عن الجامعة لفصلٍ دراسيٍ إضافي. ثم جاءت اللحظة التي قرَّرنا فيها أن نترك الجامعة، لكننا كُنَّا قد وصلنا إلى ملايين المستخدمين بحلول ذلك الوقت. استمر في الدراسة. استمر في البناء.بكُل أسف، تسيير أعمال شركة ناشئة ليس بالأمر الهين. لقد جرَّبت ذلك بنفسي؛ فمررت بأعوام شاقة منذ قرَّرت أنّي أريد تأسيس شركتي الناشئة حتى تنتقل إلى أرض الواقع. مررت أيضًا بعدة تجارب فاشلة في الجامعة، لكنها كانت فرصًا للتعلُّم أكثر ممَّا كانت فشلًا؛ وكوني لا زلت طالبًا حينها كان يعني أنَّ الفشل لا يُهم إطلاقًا. ثم عملت بعد تخرُّجي على تأسيس شركة ناشئة أخرى خلال عملي في وظيفة مطور ويب بالقطعة. يمكنني أن أؤكد لكم أن الالتزام بمحاولة إنجاح مشروع ناشئ يكون أصعب كثيرًا بمجرَّد تركك الدراسة الجامعية. أعتقد أنَّ الكثيرين لا ينجحون في تخطّي هذه النقلة نظرًا لصعوبتها. إن الحصول على وظيفة عادية براتب شهري ثابت أسهل كثيرًا من تأسيس شركة ناشئة. ونتيجةً لذلك، فإن نصيحتي لكل من يُفكِّر في ترك الدراسة الجامعية هي أن يستمر في الدراسة، وأن ينتهز كل فرصةٍ لبناء مشاريع وشركات ناشئة بجانب الدراسة. وحين يُحقق أحدها نجاحًا، ستشعر بما شعر به من سبقوك؛ وستعرف متى يتوجَّب عليك الاستمرار في البناء وتحويل فكرتك إلى واقعٍ ملموس. وحتَّى يحدث ذلك، استمر في الدراسة واستمر في البناء. وحين يحدث ذلك، اترك الدراسة الجامعية تدريجيًا. هل توازن بين قرار الاستمرار في الدراسة الجامعية وبين تركها للسعي إلى تأسيس شركتك الناشئة؟ هل تركت الجامعة؟ شاركنا أفكارك وتجربتك. ترجمة -وبتصرّف- للمقال: Thoughts on dropping out to do a startup لصاحبه Joel Gascoigne مؤسّس Buffer.
    1 نقطة
  5. السلام عليكم قمنا مؤخراً بعمل SEO Audit لموقعنا وأكتشفنا وجود عدد ليس بالقليل من السبام لينكس "Spam Links" والتى بالتأكيد توثر على موقعنا بتأثير سئ فى جوجل, فهل توجد أى طريقة للتخلص أو تنظيف هذه الروابط؟
    1 نقطة
  6. حياة رائد الأعمال ومقدم الخدمات في مواقع العمل الحر لا تتوقف عن التفكير، دماغي شخصيا لا يتوقف عن التفكير في مشاريع وفي كيفية تحقيقها، لكن أحيانا ورغم كل التقنيات التي تعلمتها في أكاديمية حسوب، وفي غيرها من المواقع أقع في مايشبه عطل الأفكار، كيف أفعل في هذه الحالة؟ كيف أواجه حدودي؟
    1 نقطة
  7. انا شخصيا واجهت مثل هذه الافكار وانصحك بالتالي : تنظيم وقتك . تحديد ما تريد . اياك وأن تشتت افكارك .حدد شيئ واحد للتعمل عليه والتطوير فيه .
    1 نقطة
  8. مساء الخير إخوان، هل يمكنني أن أجد عندكم بعضا من الأفلام التحفيزية والتي بإمكانها أن تحفزنا على العمل أكثر؟ هل توجد أفلام تتحدث مثلا عن العمل الحر؟ شكرا لكم
    1 نقطة
  9. هنالك العديد من الأفلام التحفيزية هذه مجموعة من الروابط تحتوي على العديد من الأفلام التى ستساعدك. اذا كُنت مدون أو كاتب أنصحك بهذه الأفلام 10 Movies That Will Get You Over Writer’s Block
    1 نقطة
  10. أحيانًا قد يحتاج قالب أو إضافة إلى إظهار إشعارات/تنبيهات للمُستخدمين عبر لوحة تحكُّم ووردبريس. تنفيذ هذا الأمر بسيط جدًّا حيثُ أنَّهُ يتمّ باستخدام خُطَّاف admin_notices والذي يقوم باظهار صُندوق رسائل في أعلى الشَّاشة. عرض إشعار قياسيfunction my_admin_notice(){ echo '<div class="updated"> <p>I am a little yellow notice.</p> </div>'; } add_action('admin_notices', 'my_admin_notice');حيثُ أنَّه قد تمَّ إضافة الصّنف"updated" إلى الوسم div فسيظهر الإشعار باللَّون الأصفر. أمَّا في حالة تغيير الصّنف إلى "error" فإنَّ الإشعار يظهر أحمرًا. كيفيَّة عمل إشعار قابل للإغلاقمن المُمكن -مع القليل من العمل الإضافي- عرض الإشعار وإبقائه حتَّى يقوم المُستخدم بالضغط على زرٍّ لإغلاقه. تُعتبر تلك الطَّريقة مُفيدة للتأكُّد من أنَّ المُستخدم قد قام برؤية الإشعار وكذلك لن يُضايقه وجود الإشعار طوال الوقت. المثال التَّالي تمَّ استخراجه من إضافة AddThis. يُستخدم أيضًا شيء مُشابه في Options Framework.. إذا قام المُستخدم بالضَّغط لإخفاء الإشعار فسيتمّ حفظ تفضيله في بيانات user meta. /* Display a notice that can be dismissed */ add_action('admin_notices', 'example_admin_notice'); function example_admin_notice() { global $current_user ; $user_id = $current_user->ID; /* Check that the user hasn't already clicked to ignore the message */ if ( ! get_user_meta($user_id, 'example_ignore_notice') ) { echo '<div class="updated"><p>'; printf(__('This is an annoying nag message. Why do people make these? | <a href="%1$s">Hide Notice</a>'), '?example_nag_ignore=0'); echo "</p></div>"; } } add_action('admin_init', 'example_nag_ignore'); function example_nag_ignore() { global $current_user; $user_id = $current_user->ID; /* If user clicks to ignore the notice, add that to their user meta */ if ( isset($_GET['example_nag_ignore']) && '0' == $_GET['example_nag_ignore'] ) { add_user_meta($user_id, 'example_ignore_notice', 'true', true); } }عرض الإشعارات في صفحات تحكُّم مُعيَّنةأحيانًا قد نحتاج إلى تحديد ظهور الإشعار ليكون في صفحاتٍ مُعيَّنة قد يحتاج المُستخدم لرؤية الإشعار بها. يُمكنكَ تنفيذ هذا باستخدام المُتغيِّر العام $pagenow. على سبيل المثال، سيظهر الإشعار التالي في صفحة الإضافات فقط: function my_admin_notice(){ global $pagenow; if ( $pagenow == 'plugins.php' ) { echo '<div class="updated"> <p>This notice only appears on the plugins page.</p> </div>'; } } add_action('admin_notices', 'my_admin_notice');التحقُّق من دور المُستخدم قبل عرض الإشعاريجب عرض الإشعارات للمُستخدمين المعنيين بالأمر فقط. على سبيل المثال، لا فائدة من عرض إشعار عن تعديل خيارات القالب لمُستخدم لا يملك صلاحية التَّعديل على خيارات القالب. إليكَ طريقة للتّحقق من الأدوار الشائعة: if ( current_user_can( 'install_plugins' ) ) if ( current_user_can( 'manage_options' ) ) if ( current_user_can( 'edit_theme_options' ) )آداب الإشعارأحيانًا تُصبح الإشعارات مُزعجة، لهذا عليكَ الحذر عند استخدامها. أبقِ النَّصَّ قصيرًا وحاول ألَّا تعرض أكثر من إشعار. عليك استخدام هذه الميزة باعتدال. مصادر أخرىhttp://theme.it/how-to-display-an-admin-notice-for-required-theme-pluginshttp://codex.wordpress.org/Plugin_API/Action_Reference/admin_noticesترجمة -وبتصرّف- للمقال: Admin Notices in WordPress.
    1 نقطة
  11. جوجل تحارب هذا النوع من الروابط منذ فترة ليست بالقصيرة ولو تذكر أخى الكريم جوجل خصيصا لمعاقبة المواقع التى تستخدم طرق البلاك هات Google Penguin أطلقت والسبام ؛ لذلك يجب عليك فحص موقعك من فترة لأخرى لإكتشاف اى نوع من الروابط الغير مرغوب فيها, والتخلص منها وهناك عدة طرق للتخلص من هذه الروابط ولعل أبسطها هو أستخدام اداة :Google’s Disavow Links tool وببساطة هى أداة من أدوات مشرفى المواقع تمكنك من التنصل من الروابط السبام والغير مرغوب فيها, عن طريق تجميع جميع الروابط المضرة وأبلاغ جوجل بها حتى لا تأخذها فى عين الإعتبار أثناء تقييم موقعك مرة أخرى.
    1 نقطة
  12. كمطور، لابد أنك تفخر بمنتجاتك التي أمضيت ساعات عديدة على تطويرها، وتريد لها النجاح. ولكن ماذا لو لم تجد النتائج التي كنت تأملها بعد كل المجهود الذي بذلته؟ ماذا لو لم يشترِ أحد منتجك؟ هذا سيكون مُحبطًا بالطبع. لكن قبل أن تتخلى عن طموحاتك وأحلامك، اسأل نفسك، هل فعلت كل ما في وُسعك لتسويق منتجك بكفاءة؟ إذا أثار السؤال العديد من علامات الاستفهام لديك، فالإجابة حتمًا هي "لا". بناء خطة تسويق جيدة من شأنها أن تلعب دورًا كبيرًا أيّا كان المُنتج الذي ترغب في بيعه. وفي حالة مجتمع ووردبريس التنافسي، فإنها ضرورية للغاية. قبل أن تفقد الأمل من إمكانية نجاح منتجك، جرّب هذه النصائح التي أفادت مطورين آخرين، فقد تكون دليلك إلى خطة تسويقية ممتازة. قدّم إصدارًا مجّانيًاعادة ما ينفر الناس من تجربة أشياء جديدة، ويزداد الأمر سوءًا إن لم يكونوا قد سمعوا بصاحبها من قبل. لذا، إذ كنت مطورًا جديدًا على السّاحة وكنت بصدد إطلاق منتجك الأول، فمن المستحسن أن تقدم "شيئًا" مجّانيًا في البداية، هذا الأمر أعطى نتائج جيّدة مع جايسون هولوتّ. قدّم هولوتّ إصدارين من إضافته، واحد مجاني والآخر بمقابل مادي. لم يحتوِ الإصدار المجاني على خصائص كثيرة لكنه كان وسيلة لتجربة الإضافة. أثبت نموذج التجربة قبل الشراء نجاحه لفترة طويلة ومهّد للعديد من المطورين انطلاقة جيدة في السوق. ركّز على مجال معينوفقًا لتشارلي باتل، مؤسس Gabfire Themes فإنّ إحدى أفضل الخطط التسويقية هي التركيز على مجال بعينه. هذه الخطة ساعدت Gabfire Themes على إثبات كفاءتها في سوق التّصميم المُوجّه للصحافة والمجلات بشكل سريع، بالإضافة إلى بناء مجتمع وفيّ لعلامتهم التجارية. التركيز على مجال بعينه قد يكون صعبًا، خاصة إذا كنت تمتلك العديد من الأفكار وتريد تنفيذ جميعها. لكنها فكرة تستحق التّجربة. ينصح باتل في هذا الموضوع بأن تبحث عن نقاط قوتك وتركّز على استغلالها وتقويتها، ويطرح مثالًا لكيفية التركيز في مجال معين: الأمر كله يعتمد على الكيف أكثر من الكمّ، إذ يقول باتل أنهم لا يعملون على توفير عدد معين من القوالب شهريًا، ولا ينوون تقديم المئات من القوالب فقط لامتلاك مثل هذا العدد، بل يقدمون قوالبهم بشكل يمكّن المستخدم من تعديلها لتناسب احتياجاته الشخصية، فالأكثر لا يعني الأفضل بالضرورة. توفير محتوى وافٍعند التعريف بمنتجك، يجب أن توفر كافة المعلومات الممكنة عنه في صفحة المنتج على موقع ووردبريس، شاملًا صفحات مثل الأسئلة الشائعة واللقطات screenshots. بالإضافة إلى توفير مُحتوى مُفيد للزّوّار. حيث يجب أن توفّر في موقعك مدونة، صفحة للأسئلة الشائعة، أمثلة لاستخدام الإضافة، دراسات تحليلية، وما شابه وفقًا لنصيحة هولوتّ. فكلما وفرت محتوى أكثر فائدة، ظهرت في صورة أكثر احترافيّة. توفير المحتوى لموقعك سيشجع الناس على معاودة الزيادة مجددًا. ويذكر باتل أنه من الممكن استغلال هذه الميزة في إنشاء "محتوى موسمي"، مثلًا نشرة بريدية شهرية ستكون طريقة جيدة لإطلاع المستخدمين على آخر الأخبار، وإعلامهم بالتحديثات، وتوفير استبيان لمعرفة الآراء. المحتوى هو طريق الويب. يُحدّد كيف يعثر الناس على موقعك ويهتمون بعروضك. ويرشد محركات البحث إليك. هذه أسباب كافية للاهتمام بخطة للمحتوى تتضمن مقالات أصيلة ذات جودة عالية. جرب تنفيذها في مدونتك ويمكنك كتابة تدوينات دعائية في المدونات الأخرى للوصول إلى الاستفادة القصوى. توفير الدعملن تتخيل مدى أهمية هذه النقطة. هناك العديد من مصممي القوالب والإضافات ممّن ينشئون منتجًا ثم يمضون في طريقهم. ولكن هذا يقود إلى الفشل الذريع. في سوق القوالب والإضافات الخاصّة، يمكن أن يبني الدعم الفنّي سمعتك أو أن يدمرها. يذكر باتل فخرهم بمستوى دعمهم للمستخدمين، إذ يتفق المعظم على أن الدعم المتوفر لهم يفوق تكلفة المنتج نفسه. ويمكنك توفير الدعم عن طريق تخصيص وقت للرد على البريد الإلكتروني وتذاكر الدعم، تقديم تحديثات دورية للمنتج، وحتى التواجد على الأقل من أجل مستخدميك، فإن الدعم هو جزء من منتجك الذي تبيعه. خطّط لانطلاقة تسويقية للمنتجعندما يكون منتجك على وشك الانطلاق، فمن الهام أن تركز جهودك حول موعد إطلاقه. بالنسبة لهوارد يه، المؤسس الشريك لـ ContactUs.com، التي أطلقت إضافة Contact Form by ContactUs.com لووردبريس والذي تمّ تحميلها أكثر من 89,000 مرّة، هذا يعني تنفيذ "خطة تسويقية لزيادة عدد مرات تحميل الإضافة". ويقول هوارد أنّه يحرص على الإشارة إلى أي مراجعات أو تدوينات من أشخاص آخرين عن الإضافة على صفحة الإضافة الرسمية. ولنفعل هذا بكفاءة، فإن فريق هوارد يُسهّل المهمّة عبر توفير وصف للإضافة، إضافة إلى صور/لقطات والأسئلة الشائعة. وفوق ذلك فهم يأخذون بالحسبان كل مراجعة تصلهم، بما فيها السلبية منها. وهذا يدخل ضمن جزئية "تقديم الدعم" التي تحدثنا عنها سابقًا ويثبت أنك مستعد للاستماع إلى ردود الفعل، حتى لو كانت غير مشجعة دومًا. استخدام الشبكات الاجتماعيةهذا يٌفترض أن يكون بديهيًا ولكني عادة ما أقابل مطورين أقصى ما وصلوا إليه في التسويق عن طريق الشبكات الاجتماعية هو إنشاء حساب تويتر لإضافتهم. وهذا خطأ فظيع، خاصة إذا أخذت في الاعتبار أنك توفر منتج متاحًا على الإنترنت فقط. من الهام للمطورين المبتدئ منهم والخبير الظهور، والأهم التفاعل، على الشبكات الاجتماعية. مثلًا Elegent themes لهم أداء جيد على تويتر وفيس بوك، وأيضًا Yoast مثال جيد آخر على التفاعل الاجتماعي. المشاركة في الشبكات الاجتماعية بانتظام توسّع جمهورك أنت ومنتجاتك. بالإضافة إلى حس الانفتاح والدعم. كلما تعددت وسائل تواصل شركتك مع المستخدمين، صرت أفضل. لا يعني ذلك أنك تحتاج للمشاركة في كل الشبكات الاجتماعية. فمن الأفضل أن تختار الشبكة الاجتماعية المناسبة وتلتزم بها بدلًا من التشتت بين الشبكات الاجتماعية المختلفة. خاتمةالتسويق هو خطوة كثيرًا ما يغفل عنها في تطوير إضافات وقوالب ووردبريس. وهذا خاطئ ستعرف إضافتك زيادة مُعتبرة من حيث مرّات التّحميل (أو المبيعات) لو خصّصت وقتًا أكثر لوضع خطة تسويقية. مترجم بتصرف من مقال How to Market WordPress Plugins and Themes للكاتبة Brenda Barron.
    1 نقطة
×
×
  • أضف...