
هذه التدوينة هي رد متأخر بعض الشيء على مقالة المبرمج الخبير عمر القعدان.
(اقرأ المزيد …)
السلام عليكم،
هل تذكرون سلسلة تعلم الكيك في البيت وعن توقفي عنها لعدة أسباب؟ رأيت أهمها هو فشل طريقة السلسلة التعليمية ونجاح طريقة التدوينات المنفردة أو النصائح.
فطريقة التعليم خطوة خطوة تصلح للكتب وليس للمدونات إذن الآن سأقوم بكتابة تدوينات منفردة فيها نصائح للكيك ومشاكل وحلول واجهتها خلال تعاملي مع الكيك.
(اقرأ المزيد …)
السلام عليكم،
بدايةً لنتحدث عن أهمية سطر الأوامر، في بداية استخدامك للحاسوب تواجه صعوبة في استخدام الفأرة (الماوس) بعد مدة تعتاد عليها وتقوم باستخدام اختصارات لوحة المفاتيح لاختصار الكثير من جركات الفأرة واختيار الأزرار، والمرحلة التي تلي مرحلة الاختصارات هي مرحلة سطر الأوامر بالتطور الطبيعي لسلوك المبرمج
إذن الفائدة هي توفير الوقت بشكل كبير مع استعمال سطر الأوامر سواء باللينوكس أم الفايرفوكس مع إضافة Ubiquity.
(اقرأ المزيد …)
السلام عليكم،
للبرامج كما للمخلوقات دورة حياة تمر فيها ومن قرأ كتب عن هندسة البرمجيات والتحليل يعرف هذا جيداً، في لمحة سريعة سنتعرف على دورة حياة البرنامج من ناحية الإصدارات التي كثيراً ما نسمع عنها (ألفا Alpha، بيتا Beta) وترقيم الإصدارات (1.1، 1.2.13) ولكن أغلبنا لا يعرف ماهيتها بالضبط، معلومات لابد أن يعرفها جميع العاملين في حقل البرمجة والبرامج.
(اقرأ المزيد …)
السلام عليكم،
مثال بسيط موجود لدي أحببت أن أشارككم به وهو مثال لعملية جمع بسيطة باستخدام مكتبة jQuery وتقنية الأجاكس.
ملاحظة: يجب تشغيل الملفات داخل المخدم المحلي لأنها تحتوي على صفحات PHP أما الأجاكس لوحدها فلاتحتاج لأي سيرفر لأنها تعتمد على الجافاسكربت و XML.
صفحة (index.php)
<html>
<head>
<script src="jquery.js"></script>
<script language="javascript">
$(function(){
$("#add").click(function(){
$.post("calc.php", { x: $("#x").val(), y: $("#y").val() },
function(data){
$("#result").append("The result: " + data);
});
});
});
</script>
</head>
<body>
<form action="calc.php" method="post">
<input type="text" id="x" name="x"><br/>
<input type="text" id="y" name="y"><br/>
<input type="submit" value="Normal Add"><br/>
<input type="button" id="add" value="Ajax Add"><br/>
</form>
<div id="result"></div>
</body>
</html>
بالتأكيد ملف jQuery يجب أن يكون موجود في نفس مسار هذه الصفحة (هكذا حددناه في السطر الثالث)، بكل بساطة تقوم باستدعاء تابع post.$ الموجود في مكتبة jQuery والذي يقوم بتغليف تابع الأجاكس التلقيدي بحيث يريحك من الاستثناءات كمتصفح IE، ونقوم بتمرير ثلاثة وسائط للتابع هم مسار واسم الصفحة التي سيرسل لها البيانات وسيأخذ منها النتائج، الثاني هي مجموعة المتحولات والتي يجب أن تكون بنفس اسم المتحولات في الصفحة التي ستقوم بالحساب (calc.php)، أما الثالث فهو تابع يستقبل وسيط واحد هو النتيجة التي جاءتنا من تلك الصفحة حيث نقوم بطباعة هذه النتيجة داخل div المسماة result.
أما الصفحة التي تقوم بالحساب (calc.php):
<?php $x = $_POST['x']; $y = $_POST['y']; echo $x + $y; ?>
حمل ملف المثال:
Calc (697)
السلام عليكم،
لعل تنقيح كود PHP من أهم الأمور التي تشغل مبرمجي هذه اللغة، فيضطر دائماً إلى استخدام تعليمات (echo, print_r, var_dump) لرؤية المتحولات وتغيراتهم. أما باستخدام منقح Xdebug فالحال يختلف كثيراً حيث يمكنك وضع نقاط التوقف (break points) ومشاهدة حالة المتحولات في هذه النقاط والمحتولات الموجودة أيضاً.

(اقرأ المزيد …)
السلام عليكم،
تكلمنا سابقاً عن أهمية الاختبارات الآلية وفائدتها، واليوم سيكون درس سريع لكيفية استخدام مكتبة SimpleTest مع PHP.

11- عند بناءك لموقع بدون استخدام إطار عمل فاستخدم على الأقل طبقة للتعامل مع قاعدة البيانات ومحرك للقوالب (مثل smarty).
12- استخدم أسماء معبرة للمتحولات والتوابع والأصناف.
13- اكتب التعليقات على النص المصدري باستمرار وخلال كتابة الكود لابعده، والأفضل أن تتقيد بمعايير كتابة التعليقات كي تيسر الأمر على المطورين من بعدك وأيضاً لتستطيع إنشاء دليل المستخدم بشكل آلي من هذه التعليقات.
14- لا تستمع للناس الذين يقولون بحذف الأقواس للعبارات الشرطية والحلقات ذات السطر الواحد، ابقي نصك المصدري متجانس وذو مظهر واحد ومعياري،
// not so good
if ($budget > 100)
getTax($budget);
// good
if ($budget > 100) {
getTax($budget);
}
15- استخدم دائماً طرقاً واضحة ومنطقية في تطبيقك، لا تستخدم اختصارات ورموز غريبة أو تستدعي توابع بشكل غير منطقي.
16- إذا أردت طباعة وسوم HTML أو توابع جافاسكربت فلا تفعل ذلك بال echo بل:
<?php if ($loggedin) { ?>
<div class="message">Welcome!</div>
<?php } ?>
السلام عليكم،
تدوينة اليوم قصيرة ولكن مفيدة، سنقوم ببعض التعديلات للحصول على عناوين نظيفة، ليس بشكل كامل ولكن بشكل جزئي.
(اقرأ المزيد …)