استخدام 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، لكنني لم أجرب ذلك بعد.

سلام

Drupal: تغيير لغة أكثر من محتوى دفعة واحدة

نواصل مع “مشاكل” وحلول إدارة نظام المحتوى Drupal وهذه المرة مع مشكل يصادف المواقع التي تعتمد أكثر من لغة واحدة في آن واحد، ويتعلق الأمر تحديدا بتغيير لغة محتويات معينة (أو كامل الموقع) من لغة إلى أخرى.

أود أن أشير إلى أن الأمر لا يتعلق بالترجمة هنا، ولكن بتغيير اللغة الافتراضية للمحتوى، حيث أن Drupal يقوم بربط كل محتوى باللغة التي كتب بها، ويعرف النظام ذلك اعتمادا على اللغة المستخدمة لدى إنشائه (إنشاء المحتوى وليس الموقع).

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

بعد تنصيب الإضافة يكفي زيارة صفحة إدارة كامل المحتويات (/admin/content/node) ثم اختيار لغة المحتويات مثلما هو ظاهر في الصورة أدناه:

الإضافة متوفرة للإصدارين 6 و7 لكن النسخة الخاصة بالإصدار السابع لم تكن مستقرة لدى كتابة هذه الأسطر.

كيف تتخلص من محرك بحث 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، ثم قم بإعادة محاولة استرجاع قاعدة البيانات من جديد.