استخدام curl في سطر أوامر windows دون الاستعانة بـ Cygwin

إذا كنت مهتما بتطوير الويب وكان نظام التشغيل الأساسي لديك هو windows فمن من المُحتمل جدا أنه قد صادفت حالات احتجت إلى استخدام curl فيها. الحل الذي يلجأ إليه الكثيرون هو تنصيب Cygwin وهو ما يحل المُشكل هنا، إلا أن cygwin وشاشته تعاني بعض النقائص، قد يكون أدناها هو الاضطرار إلى استخدام طرفتين مختلفتين على نفس النظام.

هناك حل آخر حيث أنه يكفي تحميل نسخة من curl متوافقة مع إصدار نظام windows الذي تستعمله من على هذه الصفحة:

http://curl.haxx.se/download.html

وبعد تحميل الملف وفك ضغطه قم بنقل الملف curl.exe إلى system32، وبعدها سيصبح بالإمكام استخدام curl مباشرة من سطر أوامر Windows.

كيف تقوم بمزامنة مجلدات خارجية عن المجلد الرئيسي لخدمتي DropBox أو SkyDrive

كنت أجرب مساء اليوم خدمة SkyDrive والتي –بالمناسبة- تبدو رائعة وأفضل بكثير من منافساتها خاصة إن كان جل ما تقوم بمزامنته هو ملفات مكتبية وترغب في التعديل عليها أو مواصلة العمل عليها على المتصفح أيضا (يعني لا حاجة لك لأن تملك حزمة Office منصبة على جهازك للتعديل بشكل كامل على ملفك).

ما رغبت بالقيام به هو ربط المجلد الذي أحفظ فيه عادة ملفات Word التي أستخدمها (خاصة تلك المتعلقة  بالأخبار أو المقالات التي أكتبها) بمجلد SkyDrive، إن جربت القيام بذلك من قبل فستلاحظ أن التطبيق لا يسمح بذلك (تماما مثلما هو الحال مع Dropbox أيضا)، يعني يجب عليك أن تنقل المجلد الذي تود أن تقوم بمزامنه إلى داخل مجلد التطبيق لكنه أمر لا أرغب في القيام به، وهو أمر لن ترغب في القيام به أيضا خاصة إذا كانت لديك مجلدات لا ترغب في تغيير مكانها أو أنك لا تستطيع القيام بذلك (لارتباط المجلد مثلا بتطبيقات أخرى).

المهم، كيف يتم حل المشكل؟ سأقدم لك طريقة القيام بذلك على Windows (جربتها على Windows 7) لكنني أعتقد بأن نفس مبدأ العمل يُمكن تطبيقه على نظامي Linux أو Mac (جرب وأخبرني بالنتيجة).

الحل يكمن في إنشاء رابط رمزي ما بين المجلد المراد مزامنته ومجلد SkyDrive مثلا، ويتم ذلك كالتالي:

  1. افتح نافذة سطر الأوامر لكن يجب عليك أن تفتحها في وضع المدير (Run as Administrator)
  2. اكتب السطر التالي وقم بتنفيذه:

mklink /d “c:\skydrive\YourSymbolikFolder” “c:\theFolderToSynch”

حيث أن c:\skydrive\YourSymbolikFolder هو المجلد/ الرابط الرمزي الذي سيظهر على مجلد خدمة المزامنة

c:\theFolderToSynch هو المجلد الذي تود مزامنته

بعد القيام بذلك ستظهر رسالة تفيدك بأنه تم الربط ما بين المجلدين، وسيظهر المجلد الجديد مباشرة بعد ذلك، كما ستقوم خدمة المزامنة في الشروع في رفع الملفات أيضا.

جرب وأخبرنا بالنتيجة

إن كنت تستخدم Linux  أو Mac فأعلمنا إن كان بإمكانك القيام بذلك أيضا

“نصف حل” لمشكلة عدم التمكن لدى استخدام تقويم Google من تأكيد حضور موعد تم إرساله إلى عنوان بريد إلكتروني ثانوي

العنوان يبدو مبهما نوعا ما، لكن لا أدري إن كان بالإمكان شرح فكرة المشكل كاملة في العنوان.

المشكل الذي عانيت منه مؤخرا هو لما يتم إرسال دعوة / موعد إلى عنوان البريد الإلكتروني الخاصة بشركتك مثلا في حالة ما إذا كنت تستعمل Gmail لاستقبال رسائل المرسلة إلى ذلك العنوان. لتوضيح الأمور أكثر لنفرض بأن الرسائل يتم إرسالها إلى me@YourCompany.com وتستقبلها في me@gmail.com، لدى محاولة قبول الدعوة فإن بريد Gmail يظهر لك رسالة خطأ يفيدك فيها بأنه لا يمكنك قبول الدعوة لأنها ليست مرسلة إليك (لأنك استقبلتها على me@gmail.com) بل هل مرسلة إلى السيد صاحب الحساب me@YourCompany.com (تبين بعد بحث سريع أن الأمر كان ممكنا من قبل لكن تم تغيير سياسة Google حول الأمر ربما بعد شكاوى بعض مستخدمي خدمتها).

المهم، الحل الجزئي يكمن في نسخ رابط قبول الدعوة (رابط Yes الذي يظهر تحت سؤال قبول الدعوة) ومن ثم نسخه في نافذة جديدة بعد أن تغلق بريدك (تسجل الخروج)، أو تفتح نافذة جديدة على Chrome مستخدما وضع incognito. لماذا يُعتبر هذا حلا جزئيا؟ لأنه سيتم إعلام المرسل بأنك قبلت الدعوة لكنه لن يتم إضافتها إلى تقويمك على Google Calendar.

يبدو أن الحل يكمن في إدارة حساب me@YourCompany.com مباشرة على Gmail باستخدام حساب Google Apps وليس عبر تمرير الرسائل التي تستقبلها إلى حساب Gmail، لكنني لم أجرب ذلك بعد.

سلام

كيف تتخلص من محرك بحث AVG وتعيد Google كمحرك بحث افتراضي على متصفح Firefox

السلام عليكم

إن كنت قد نصبت مضاد الفيروسات AVG (طوعا أو كراهية*) وأردت أن تتخلص من “محرك البحث” الخاص به والذي “يفرض نفسه” بدل محرك بحث Google على متصفح Firefox، أو أنك تعاني من نفس المشكل مع محرك بحث آخر، وتود أن تُرجع Google كمحرك البحث الرئيسي على متصفحك، فاتبع الخطوات التالية:

افتح المتصفح (Firefox طبعا) واكتب في شريط العناوين:

about:config

ستظهر رسالة تحذرك من مخاطر ما تقدم عليه، اغمض عينيك (أو واحدة فقط، لتعرف أين تنقر)  وانقر على زر المتابعة (إن أصريت على غلق العينين معا فاستعمل زر Enter بدل مؤشر الفأرة :p).

في خانة البحث، اكتب keyword.URL، ستظهر لك هذه الخاصية والتي تحمل القيمة التالية في حال ما إذا كنت “تعاني” من مشكل مع AVG:

http://isearch.avg.com/search?cid=%7B5739cbf1-4dd0-4545-bc8c-abcdd97676a7%7D&mid=be82e0ee845f47d0a1e3b9ea820717f8-ce880b6f08ff00d4365aded1b2e3e8d90a4555a6&ds=gm011&v=11.0.0.9&lang=fr&pr=sa&d=2012-04-29%2022%3A46%3A39&sap=ku&q=

تخلص منها واستبدلها بالسطر التالي:

http://www.google.com/search?ie=UTF-8&oe=utf-8&q=

جرب البحث الآن بكتابة الكلمات المفتاحية التي تريدها وستظهر النتائج مباشرة على Google.

أما إن كنت تود استخدام محرك بحث آخر، فحسب هذه الصفحة، يكفي أن تستعمل إحدى القيم التالية بدل السطر السابق الخاص بمحرك بحث Google:

Bing :

http://bing.com/results.aspx?q=

Yahoo :

http://search.yahoo.com/search?p=

DuckDuckGo :

https://duckduckgo.com/?q=

إضافة إلى محركين آخرين ستجدهما على نفس الصفحة (لم يسبق لي أن تعاملت معهما)

*: أحيانا ستجد نفسك قد نصبت مضاد الفيروسات AVG أو شريط أدواته من دون أن تعلم، حيث تجده أحيانا مضمنا مع برامج أخرى (كآخر تحديث لقارئ Gom Player).

والسلام عليكم

حل لمشكل عدم تمرير سوى Parameter واحد لدى استخدام Curl في Drupal

لدى استخدام Curl لمناداة Web Service ما، تحميل صفحة معينة، أو لأي هدف آخر، فإننا عادة ما نستخدم شيفرة مماثلة للشيفرة التالية (لدى البرمجة باستخدام PHP):

$params = array(
‘param1’    => “some String”,
‘param1’      => “Another string”,
‘param3’      => 25
);

$cmd = curl_init();
$url=”SomeURL”.http_build_query($params)
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($cmd);

لكن لدى استخدام نفس الكود على Drupal فإن الوضع…سيدفعك إلى الجنون، لأنه مهما حاولت فإنه لم يتم تمرير سوى الـ Parameter الأول.

بعد بحث طويل، وبعد محاولة أكثر من طريقة، الحل يكمن في طريقة بناء الاستعلام، حيث بدل بنائه باستخدام

http_build_query($params)

يجب استخدام صيغة أخرى لنفس التابع والتي تكون على النحو التالي:

http_build_query($params), ”, ‘&’);

وسيتم بإذن الله حل المشكل

ملاحظة: قد لا تكون هذه الطريقة الأمثل لاستخدام Curl على Drupal، حيث يوفر النظام دوال خاصة به يمكن استخدامها مثل دالة drupal_http_request

والسلام عليكم

حل لمشكل ظهور رسالة الخطأ MySQL server has gone away لدى محاولة استرجاع قاعدة بيانات على PHPMyAdmin

سبق وأن واجهت هذا المشكل أكثر من مرة، لدى محاولة استرجاع قاعدة بيانات لموقع يستخدم Drupal، حيث تظهر رسالة الخطأ التالية:

#2006 – MySQL server has gone away

على PHPMyAdmin والتي عادة ما يكون سببها أحد البيانات المسجلة في أحد جداول Cache.

هناك عدة طرق لتجنب الوقوع في هذا المشكل، وذلك بتفريغ Cache مثلا قبل حفظ قاعدة البيانات (لا تنجح دائما)، أو استخدام وحدات خاصة بحفظ نسخ من البيانات كوحدة Backup and Migrate، لكن ماذا لو لم تكن تملك في وضع يسمح لك بذلك، مثلا محاولة استرجاع بيانات من نسخة قديمة، تم حفظها بشكل سيء؟، أو ربما لم يكن المشكل يتعلق بـ Cache (أو بنظام Drupal) من أساسه.

الحل يكمن في تغيير إعدادات Mysql، حيث يكفي إعطاء الإعداد max_allowed_packet قيمة أكبر.

إن كنت تستخدم Wamp مثلا، فإنه يكفي النقر على زر التطبيق (الذي يظهر بجانب الساعة في Notification Bar) ثم فتح ملف my.ini من تفرع MySQL ثم ابحث عن max_allowed_packet واعطها قيمة أكبر.

أعد تشغيل Wamp، ثم قم بإعادة محاولة استرجاع قاعدة البيانات من جديد.

 

بعض مشاكل Taxonomy في نظام إدارة المحتوى Drupal 6 وطريقة حلها

السلام عليكم

صادفتني مؤخرا جملة من المشاكل مع Taxonomy على نظام إدارة المحتوى Drupal 6. أود أن استعرضها، وأستعرض حلولها لتسهيل المهمة على الواقع في نفس المشاكل من جهة، ولأتذكرها لاحقا في حال نسيتها من جهة أخرى. هذه الحلول هي نتيجة بحث على Google أو على موقع Drupal مباشرة. يعني من المُرجّح أن لا تكون هي الحلول الوحيدة لهذه المشاكل (وربما لا تكون أفضلها). إن وجدت حلا أفضل، فلا تتردد في إضافته كتعليق.

عدم التمكن من فصل حقول Taxonomy لدى استعمال أكثر من Vocabulary في Content Type جديد

لدى إنشاء نوع محتوى Content Type جديد ولدى استعمال أكثر من Vocabulary عليه (مثلا واحد للأقسام وآخر للوسوم) فإن هذان الخيارات يبقيان “مُلتصقين مع بعض” في نموذج إنشاء محتوى جديد، كما أنهما لا يظهران مُباشرة في صفحة إعدادات المحتوى الجديد بل يظهر بدلهما Taxonomy والتي تكون غير قابلة للتعديل.

الحل يكمن في استخدام إضافة Content Taxonomy  والتي تسمح بإضافة حقول جديدة من نوع Content Taxonomy Fields تكون مربوطة مُباشرة بالـ Taxonomy.

إخفاء الوسوم التي تظهر أسفل المحتويات الجديدة

مُشكل آخر يتعلق بالوسوم هذه المرة، حيث تظهر مُباشرة تحت المحتوى الجديد لدى إنشائه، وتظهر هذه الوسوم حتى وإن تم إظهارها في مكان آخر (مثلا تحت العنوان مباشرة).

هناك بعض الحلول البرمجية التي تتطلب التعديل على أحد ملفات القالب، لكنه حل مؤقت حيث أن المشكل سيعاود الظهور بمجرد أن تقوم بتحديث القالب من جديد. وعليه فمن الأفضل البحث عن إضافة تقوم بذلك. وهذه الإضافية هي Taxonomy Hide.

إنشاء قائمة بجميع مفردات Vocubulary معين

قد تحتاج إلى هذه الخاصية لما تود إنشاء قائمة بجميع أقسام الموقع. يمكن القيام بذلك بإضافة مُدخلات مُباشرة إلى القوائم الموجودة (Primary أو Secondary Links). لكن ماذا لو كان عدد الأقسام كبيرا، أو كان موقعك قابلا للتوسع لاحقا؟ ماذا لو كانت القائمة تخص كافة الوسوم وليس الأقسام فقط؟ كما تُلاحظ فالحل السابق لا يصلح في هذه الحالات.

حل هذا المشكل يتم عبر تنصيب إضافتي taxonomy menu و menu block معا، ويتم إنشاء القوائم مثلما هو موضح في هذا الدرس.

والسلام عليكم