لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 06/12/16 في كل الموقع
-
ما هي PHP؟ PHP هي اختصارٌ للعبارة PHP: Hypertext Preprocessor؛ وهي معروفةٌ كلغة سكربتات (scripting language) مُفسَّرة (interpreter) من جهة الخادوم تُستعمَل لتطوير الويب؛ وهذا يعني أنَّ PHP تُستعمَل على الخادوم لتوليد صفحات الويب الديناميكية. ما يُقصَد بصفحات الويب الديناميكية هي تلك الصفحات التي تُنشَأ أو تُعدَّل من الخادوم قبل إرسالها إلى العميل. إن لم تكن تعرف ما هو الخادوم وما هو العميل، فافتح لسانًا جديدًا في متصفح الويب الخاص بك واكتب فيه academy.hsoub.com، وبهذا يُصبِح متصفحك "عميلًا" (client) والمكان الذي تأتي منه صفحة الويب المطلوبة هو "الخادوم" (خادوم الويب أو web server). يمكن تضمين سكربتات PHP في مستندات HTML، وهي لغةٌ سهلة التعلم، وتشبه بنيتها كثيرًا البنية القاعدية للغات C و Java و Perl. التثبيت يمكنك بسهولة تثبيت WAMP (على نظام ويندوز) أو LAMP (على لينُكس) أو حزمة البرمجيات XAMPP (التي تعمل على ويندوز، ولينُكس، وماك) وذلك تبعًا لنظام تشغيل حاسوبك، راجع مقال كيفية تنصيب ووردبريس محليا باستخدام MAMP لمزيدٍ من المعلومات عن MAMP. تجربة الأمثلة يمكنك تجربة سكربتات PHP عبر تثبيت خادم أباتشي مع دعم PHP يدويًا أو عبر تثبيت حزم جاهزة كالتي ذكرناها آنفًا، لكن توفِّر PHP لك طريقتين لتنفيذ الملفات: عبر سطر الأوامر، وعبر الخادوم المدمج مع PHP؛ وسنشرح كلا الطريقتين في هذا الدرس. استخدام الخادوم المدمج وفَّرت PHP من الإصدار 5.4.0 خادومًا مدمجًا معها يُسهِّل تجربة السكربتات دون عبء تثبيت خادوم ويب كامل مثل أباتشي وضبطه؛ لكن الغرض منه هو تجربة البرامج فقط وليس مصممًا للاستعمال كخادوم إنتاجي على الشبكة. ستُخدَّم الملفات الموجودة في مجلد العمل الحالي عبر ذاك الخادوم المدمج، الذي يُشغَّل كالآتي: cd ~/public_html php -S localhost:8000 PHP 5.5.9-1ubuntu4.5 Development Server started at Fri Jan 8 13:58:31 2016 Listening on http://localhost:8000 Document root is /home/user/public_html Press Ctrl-C to quit. الأمر php -S localhost:8000 سيشغِّل الخادوم في مجلد العمل الحالي (~/public_html) وسيكون متاحًا للوصول من الجهاز المحلي فقط، وسيعمل على المنفذ 8000؛ إن أردت أن يعمل على البطاقات الشبكية، فضع 0.0.0.0 بدلًا من localhost؛ اضغط على Ctrl+C لإيقاف الخادوم. أنشِئ الملف test.php وضع فيه المحتويات الآتية لتجربه: <?php // هذه تجربة لتنفيذ سكربتات PHP من الخادوم المدمج echo "test"; ?> افتح الآن المتصفح وأدخِل http://localhost:8000/test.php في شريط العنوان، وستحصل على نتيجة مشابهة لما يلي: يجدر بالذكر أنَّه بإمكانك تخديم صفحات HTML الثابتة عبر هذا الخادوم، وليس بالضرورة أن تكون الصفحة بلاحقة PHP. ملاحظة: اختر رقمًا أكبر من 1024 كرقم للمنفذ الذي سيستعمله الخادوم، كي لا تحتاج إلى امتيازات إدارية لتشغيله. استعمال سطر الأوامر من البدهي أن تستطيع تنفيذ شيفرات PHP (كغيرها من لغات السكربتات) من سطر الأوامر؛ كل ما عليك فعله هو استدعاء السكربت من الأمر PHP كالآتي: php ~/public_html/test.php أو يمكن تضمين ما يسمى shebang في الأنظمة الشبيهة بيونكس (كنظامَي لينُكس وماك) في بداية السكربت ليبدو كما يلي: #!/usr/bin/php <?php // هذه تجربة لتنفيذ سكربتات PHP من سطر الأوامر echo "test"; ?> وعندها تستطيع تنفيذ السكربت مباشرةً دون استدعاء مفسر PHP كما يلي: ~/public_html/test.php ملاحظة: لا تنسَ إعطاء الملف امتيازات التنفيذ قبل محاولة تنفيذه: chmod +x ~/public_html/test.php يمكن أيضًا تنفيذ الشيفرات تفاعليًا، عبر تنفيذ الأمر php -a ثم كتابة الأوامر تفاعليًا كما يظهر في الصورة الآتية (لاحظ أنه بإمكانك استعمال زر tab لإكمال أسماء الدوال والأصناف وغيرها): البنية القاعدية للغة لنأخذ مثالًا بسيطًا لنشرح فيه القواعد الأساسية للكتابة. <?php /* author: Abd Allatif Eymsh website: academy.hsoub.com version: 1.0 date: 22 12 2015 */ // هذا تعليقٌ ذو سطرٍ وحيد // يتم تجاهل التعليقات من المفسِّر $variable = 'variable'; // نستعمل عبارة echo لطباعة الجمل echo "string"; echo $variable; ?> انسخ ما سبق والصقه في ملفٍ باسم index.php في مجلد htdocs (في نظام ويندوز) أو www (في لينُكس) أو أي مكان تريده إن كنت تستعمل الخادوم المدمج، ثم افتح ذاك الملف في متصفح الويب (بعد أن تُشغِّل الخادوم) وستحصل على النتيجة "stringvariable"، لنُقسِّم الآن الملف ولنشرح بنيته. تُكتَب شيفرات PHP في ملفٍ بامتداد .php تُكتَب شيفرات PHP بين وسمَيّ البداية <?php والنهاية ?> وكما في لغتَيّ C أو Perl، تتطلب PHP أن تنتهي التعليمات البرمجية بفاصلة منقوطة ";" يُشير الرمز $ إلى متغير (variable)، سنتحدث عن المتغيرات في هذا الدرس لاحقًا تكافئ علامات الاقتباس المفردة والمزدوجة بعضها (لكنها ليس لها نفس المعنى تمامًا، سنشرح الاختلاف البسيط لاحقًا) يُستعمَل الأمر echo لطباعة البيانات التعليقات التعليقات جزءٌ من البرنامج لا ينفِّذها مُفسِّر اللغة؛ وهي ملاحظاتٌ لكي يتذكر القارئ أو يفهم أمرًا برمجيًا ما لاحقًا. وهنالك نوعان من التعليقات: التعليقات ذات السطر الوحيد: وهذه التعليقات قصيرةٌ تمتد لسطرٍ وحيدٍ فقط، وتبدأ عادةً بالرمز "//"، ولا بأس أن يكون قبلها تعليماتٌ برمجية، لكن التعليق سينتهي مع نهاية السطر؛ ويستحق أن نذكر أننا نستطيع أن نبدأ التعليقات ذات السطر الوحيد برمز المربع (#) بدلًا من شرطتين مائلتين. التعليقات متعددة الأسطر: وهي تعليقاتٌ طويلة، قد تمتد لأكثر من سطر؛ وتوضع بين علامة البداية /* وعلامة النهاية */، ومن استعمالات هذا النوع من التعليقات أيضًا هي تعطيل جزء من الشيفرة ﻷغراض التجربة. يمكنك أن ترى نوعَيّ التعليقات السابقين في المثال أعلاه. المتغيرات تسمح لك المتغيرات بتخزين ومعالجة البيانات في السكربتات، ويمكنك اعتبارها شبيهةً بالمتغيرات التي تستعملها في الرياضيات؛ إذ أنَّ المتغير -ببساطة- هو حاويةٌ تحوي قيمةً معيّنة؛ أُطلِقَت تسمية "المتغيرات" عليها لأنها القيمة المُسنَدة إليها قد تتغير أثناء تنفيذ السكربت، وقابلية التغير تلك تجعل من المتغيرات أداةً مفيدةً جدًا. وكما ذكرنا سابقًا، يبدأ اسم المتغير بالإشارة $. هذه بعض الأمثلة عن أسماءٍ صحيحةٍ للمتغيرات: $simple $_start_with_underscore $_includes_numbers_23 $_includes_UPPERCASE_2 $_23_it_is_valid ملاحظة: لا يمكنك بدء اسم المتغير برقمٍ كالاسم الآتي $2_invalid_variable_name، ولا يمكن أيضًا أن تستعمل الشرطة "-" في اسمه. أنواع البيانات أنواع البيانات (data types) هي أنواع المتغيرات في PHP؛ وأنواعُ البياناتِ البسيطة في PHP هي: الأعداد الصحيحة (integers) الأعداد ذات الفاصلة (floats) السلاسل النصيّة (strings) القيم المنطقية البوليانية (صح [true] أو خطأ [false])؛ وهنالك أنواع بياناتٍ أخرى مثل الكائنات (objects) والمصفوفات (arrays) سنتحدث عنها لاحقًا في هذه السلسلة. ملاحظة: إن كانت لديك معلوماتٌ سابقة عن إحدى لغات البرمجة التي تُحدِّد نوع البيانات المُخزَّنة في المتغيرات (أي strongly typed)، فاعلم أنَّ PHP هي لغةٌ لا تتطلب منك تحديد النوع (أي أنها loosely typed)؛ فلا تحتاج إلى أن تخبر اللغة ما نوع البيانات التي ستُخزَّن في المتغير. الثوابت الثابت هو مُعرِّف (أي اسم) يحمل قيمةً معيّنة، وكما يوحي اسمه، لن تتغير قيمته أثناء تنفيذ السكربت بعد أن تُعرَّف لأول مرة، واسمه حساسٌ لحالة الأحرف، وتُستعمَل الأحرف الكبيرة فيه عادةً؛ وله نفس قواعد تسمية المتغيرات (لا يجوز أن يبدأ برقم، أو يحتوي على شرطة…)، لكن لا يوضع الرمز $ قبله. <?php /* author: Abd Allatif Eymsh website: academy.hsoub.com version: 1.0 date: 22 12 2015 */ // هذا تعليقٌ ذو سطرٍ وحيد $variable = 'variablename'; echo "string"; echo $variable; define( "MY_CONSTANT", "19" ); define('PI', 3.14); echo PI; echo MY_CONSTANT; ?> تكون PI و MY_CONSTANT ثوابت في المثال السابق. ملاحظة: يمكن استعمال الكلمة المحجوزة const لتعريف الثوابت بدلًا من الدالة define() في إصدار PHP 5.3 وما بعده كما يلي: <?php // تعمل في إصدار PHP 5.3 const CONSTANT = 'Hello World'; echo CONSTANT; ?> لكن لا يمكن تعريف الثوابت باستخدام const داخل الدوال أو الحلقات، لأنها تُعرَّف في وقت التصريف (compile-time). المعاملات يأخذ المعامل قيمةً أو أكثر (أو "تعبيرًا" [expressions] كما نقول في الاصطلاحات البرمجية) ويُنتِج قيمةً أخرى. يمكن أن تُجمَّع المعاملات بناءً على عدد القيم التي تأخذها، فمثلًا المعاملات الأحادية (unary operators) تأخذ قيمةً واحدةً فقط (مثل معامل الزيادة الذي شرحناها أدناه)، والمعاملات الثنائية تأخذ قيمتين مثل المعاملات الحسابية البسيطة (الجمع والطرح والضرب…) وتُصنَّف أغلبية المعاملات في PHP ضمن هذا القسم؛ وهنالك معامل ثلاثي وحيد يأخذ ثلاث قيم سنشرحه في درسٍ لاحق. هنالك عددٌ كبيرٌ من المعاملات في لغة PHP، أهمها: المعاملات الحسابية الإسناد معاملات الأعداد الثنائية (Bitwise) معاملات المقارنة الزيادة أو الإنقاص معامل السلاسل النصية المعاملات الحسابية هي تلك المعاملات التي تستعملها في الحسابات الرياضية، مثل الجمع (+)، والطرح (-)، والضرب (*)، والقسمة (/)، وباقي القسمة (%)؛ مثال: $a = 4 + 5; // + هو معامل حسابي لاحظ الفرق بين المعاملين / و %، إذ أنَّ / هو معامل القسمة بينما % هو باقي القسمة؛ أي 8 /5 = 1.6 ، بينما 8 % 5 = 3 (إذ أنَّ 8 = 5 *1 +3، فإن باقي القسمة هو 3). أما معامل الإسناد، فيسند القيم إلى المتغيرات، وهو إشارة = كما في المثال الآتي: $a = 4;. تجري المعاملات الثنائية العمليات الحسابية على البتات الموجودة في الأعداد الصحيحة، وهي & (and)، و | (or)، و >> (الإزاحة نحو اليسار)، و << (الإزاحة نحو اليمين)، و ^ (XOR)، و ~ (NOR)؛ مثال على ذلك هو 14 & 3 = 2، لأنَّ 00001110 & 00000011 = 00000010. أما معاملات المقارنة، فهي -كما يدل اسمها- تقارن بين قيمتين؛ يُظهِر الجدول الآتي معاملات المقارنة الشائعة: المثال اسم المعامل النتيجة $a == $b المساواة TRUE إن كان المتغير $a مساويًا بالقيمة إلى المتغير $b $a === $b مطابقة TRUE إن كان المتغير $a مساويًا المتغير $b بالقيمة والنوع $a != $b $a <> $b عدم مساواة TRUE إن لم يكن المتغير $a مساويًا للمتغير $b $a !== $b عدم مطابقة TRUE إن لم يكن المتغير $a مساويًا للمتغير $b بالقيمة أو بالنوع $a < $b أصغر من TRUE إن كان المتغير $a أصغر تمامًا من المتغير $b $a > $b أكبر من TRUE إن كان المتغير $a أكبر تمامًا من المتغير $b $a <= $b أصغر من أو يساوي TRUE إن كان المتغير $a أصغر أو يساوي المتغير $b $a >= $b أكبر من أو يساوي TRUE إن كان المتغير $a أكبر أو يساوي المتغير $b تستعمل معاملات الزيادة أو الإنقاص لزيادة أو إنقاص قيمة المتغير بقيمة 1. المثال شرحه ++$x; إضافة القيمة 1 إلى المتغير $x ثم إعادة القيمة النهائية $x++; إعادة قيمة المتغير $x ثم إضافة 1 –-$x; إنقاص القيمة 1 من المتغير $x ثم إعادة القيمة النهائية $x–-; إعادة قيمة المتغير $x ثم إنقاص 1 <?php echo "Postincrement"; $a = 5; echo "Should be 5: " . $a++; echo "Should be 6: " . $a; echo "Preincrement"; $a = 5; echo "Should be 6: " . ++$a; echo "Should be 6: " . $a; echo "Postdecrement"; $a = 5; echo "Should be 5: " . $a--; echo "Should be 4: " . $a; echo "Predecrement"; $a = 5; echo "Should be 4: " . --$a; echo "Should be 4: " . $a; ?> معامل السلاسل النصية (.) يستعمل لجمع سلسلتين نصيتين أو متغيرين مع بعضهما بعضًا؛ انظر إلى الشيفرة الآتي: <?php $a = 4; $q = 5; $c = $a.$q; // المتغيران $a و $b أصبحا مدمجين مع بعضهما echo $c; $n = 'myname'; echo "string ".$n.' $n inserted'; // دمج ثلاث سلاسل نصيّة ?> حاول أن تتدَّرب على تعريف وطباعة قيمة المتغيرات الخاصة بك، وأن تستعمل مختلف المعاملات السابقة عليها. المصادر مقال Introduction to PHP لصاحبه Harish Kumar. صفحة Operators من دليل PHP، وغيرها.1 نقطة
-
تقريبا، هما نفس الشيء، مكتبتي بايثون لإطار QT لإنشاء برامج سطح المكتب، الفرق الأهم بينهما هو كيفية توليد شيفرتها من سي بلس بلس (مكتوب به إطار QT) فـ PySide تستخدم مولد Shiboken في حين أن الأخرى تستخدم SIP. شيفرات PySide و PyQT متشابهة كثيرا، وتملك PySide رخصة أكثر تحررًا وهذا الأمر قد يكون مفيدا لبعض المطورين. إذا كنت تبحث عن الاستقرار فـ PyQt أكثر استقرارًا من PySide لأن الأخيرة كما قلنا تستخدم Shiboken وهذا المولّد أضعف قليلًا من التي تستخدمه PyQT.1 نقطة
-
Simulator يقوم بمحاكاة تصرفات أسلوب جهاز معين أما Emulator فيحاكي الوظائف الداخلية للجهاز. لنفترض أنك تريد محاكات حاسبة قديمة فلديك طريقتين لفعل ذلك: إما أن تكتب برنامج جديد يرسم لك شكل الحاسبة وأزرارها ويعرض لك شاشة لعرض لناتج كما في الحاسبة الأصلية تماما، وعند الضغط على الأزرار ستعمل الحاسبة كما في الحاسبة الأصلية تماما، هنا تم القيام بعملية محاكاة Simulate. أو أن تكتب برنامج يستخدم الوظائف الداخلية للحاسبة القديمة لكن بشكل جديد، أي أنه من الداخل سيعمل بنفس طريقة الحاسبة القديمة لكن شكله مختلف، هنا تم القيام بمضاهاة/محاكاة Emulate. المصدر1 نقطة
-
سنقوم اليوم بمحاكاة لقطة مشوّهة من فيلم VHS قديم في برنامج فوتوشوب. هذا الموضوع غير عادي تمامًا وآمل أن يكون في متناول اليد لتلك المشاريع النادرة التي تحتاج إلى تكرار هذا الأسلوب. سوف نقوم بأخذ صورة ونقوم بتشويهها باستخدام مجموعة من التقنيات لمحاكاة تلك اللقطات القديمة ثم سنضيف بعض النصوص بالخطوط القديمة التي كانت تُستخدم قديمًا كلمسة أخيرة لمشهد فيلم منزلي يُعرض بواسطة جهاز مشغل فيديو قديم. النتيجة النهائية تبدو كتأثير مشهد من مشغّل فيديو قديم حقيقي والذي يُحاكي تأثيرات التشوّه والالتفاف المتنوعة التي تحصل عادة مع أشرطة فيديو VHS القديمة خصوصًا عندما نوقف عرض الشريط أو نقوم بالضغط على زر الإعادة. مجموعة فلاتر التشويه في فوتوشوب ستساعدنا على تدمير الصورة الرقمية ثم سنضيف بعض اللمسات النهائية ببعض النصوص التي تحقق الواقعية للقطات الفيديو القديمة. افتح الصورة التي اختَرتَها باستخدام برنامج أدوبي فوتوشوب. أنا استخدمتُ هذه الصورة المجانية من موقع unsplash. سنطبّق تأثير الالتفاف على هذه الصورة باستخدام أدوات Liquify الموجودة ضمن قائمة فلاتر فوتوشوب. حدّد أداة Forward Warp ثم اجعل الضغط لنحو 30 ثم ابدأ بسحب الأداة من اليسار لليمين عبر الصورة. غيّر حجم الفرشاة بشكل متفاوت بين التشوّهات الكبيرة والصغيرة. طبّق تعديلات Liquify عبر الضغط على OK ثم ارسم تحديدًا مستطيلًا على جزء من الصورة. اضغط الاختصار CMD+T لتحويل التحديد ثم مدّد هذه الشريحة لإنشاء تأثير الشاشة المشوّهة. ابحث عن صورة بعض الغيوم وافتحها في فوتوشوب. استخدم الاختصار CMD+Shift+U لإشباع ألوان الصورة ثم عدّل المستويات عبر الاختصار CMD+L لزيادة قتامة الظلال إلى درجة الأسود. اذهب إلى القائمة: Filter > Distort > Shear وأضف سلسلة من النقاط إلى المخطط لتشويه الصورة من الجانب إلى الجانب. اذهب إلى القائمة: Filter > Distort > Wave وغيّر قيمة الإعدادات إلى 999 للمولدات Generators، أقل قيمة لطول الموجة Wavelength، أقل قيمة للسعة Amplitude و100% لحجم Scale المحور الأفقي فقط. سيتم تطبيق التأثير بحسب نمط الصورة المُستخدمة، فقد يكون من الضروري تغيير اتجاه الصورة لتجنب تشويه العناصر الرئيسية مثل وجه الشخص. احفظ الصورة كملف PSD وامنحها اسمًا معرّفًا مثل displacement-map.psd. هذا الملف المؤقّت سيُستخدم ضمن فلتر الاستبدال Displace فيما بعد. عُد إلى ملف العمل الأساسي مجدّدًا ثم اذهب إلى القائمة: Filter > Distort > Displace بدّل الإعدادات إلى 100 حجم أفقي و0 حجم عمودي. بعد الضغط على OK حدّد الملف displacement-map.psd. صورة الاستبدال المُستخدمة في هذا الفلتر ستشوّه الصورة عبر المساحات البيضاء في الملف. ارسم تحديدًا مستطيلًا حول الصورة بأكملها باستثناء الحافة اليسرى البشعة ثم اضغط على الاختصار CMD+T ثم مدّد الصورة لإزالتها. جِد صورة غيوم جديدة وافتحها في فوتوشوب. قم بإشباع ألوانها Desaturate وعدّل المستويات Levels لتحويلها إلى صورة أبيض وأسود قاسية. أضِف فلتر الموجة Wave أولًا هذه المرة واستخدم ذات الإعدادات التي استخدمناها في السابق لذات الفلتر. اذهب إلى القائمة: Filter > Distort > Shear وعدّل المخطط مع نمط جديد من النقاط لتشكيل تأثير التفاف مختلف. اضغط على الاختصار CMD+A لتحديد الكل ثم CMD+C لنسخها. ثم ألصق باستخدام الاختصار CMD+V داخل ملف العمل الرئيسي ثم صغّرها واضغطها لتغطّي جزءًا من الصورة. غيّر خصائص المزج إلى Screen لجعل الخلفية السوداء شفافة، تاركًا خطوط التشوهات البيضاء الشائعة في عرض أشرطة VHS القديمة وخصوصًا أثناء التوقف المؤقت أو الإعادة. ضاعف هذه الطبقة باستخدام الاختصار CMD+J ثم حوّلها باستخدام الاختصار CMD+T واستخدم خليطًا من الانعكاس الأفقي والعمودي وتغيرات الحجم لتُنتِجَ نموذجًا ثانيًّا من خطوط التشوّهات في مكان آخر من الصورة. أنشئ طبقة تعديلات منحنيات Curves ثم اجعل خصائص مزجها Saturation. ومن ضمن نافذة إعدادات طبقة تعديلات المنحنيات انتقل على القناة الحمراء واجعل المنحني الخاص بها اشبه بحرف S ثم انتقل إلى القناة الخضراء وحوّل المنحني الخاص بها إلى ما يشبه S نوعًا ما ثم انتقل على القناة الزرقاء وأنشئ منحني كحرف S أكثر دقة. هذه التعديلات ستزيد من التشبّع اللوني في بعض مناطق الصورة بينما تخفّفها في مناطق أخرى لتقليد ونسخ نظام ألوان أجهزة التلفاز القديمة. أنشئ ملفًّا جديدًا بحجم 1 في 10px (من الممكن أن يختلف حجم هذا الملف بحسب حجم الصورة التي تعمل عليها). قم بإخفاء طبقة الخلفية ثم ارسم تحديدًا حول نصف حجم العمل ولوّنه باللون الأسود في طبقة جديدة. اضغط على الاختصار CMD+D لإلغاء التحديد ثم اذهب إلى القائمة: Edit > Define Pattern لجعل هذا الشكل نقش Pattern وأعطِ هذا النقش اسمًا معرّفًا. سيُنتِج هذا النقش سلسلة من خطوط افقيّة بحجم 5px. عُد إلى ملف العمل الأساسي واختر أداة سطل الدهان Fill bucket ثم عدّل الإعدادات في شريط الأدوات العلوي إلى Pattern. ثم ابحث عن الملف الذي أنشأناه للتو ضمن القائمة. أنشئ طبقة جديدة ثم اضغط في أي مكان ضمن الصورة لتَظهر سلسلة خطوط مسح التلفاز القديمة. غيّر خصائص المزج هذه الطبقة إلى Soft Light لتمكين التفاعل مع الألوان. لإنهاء هذا التأثير بتأثير فيلم منزلي قديم سنستخدم خط OSD mono font لكتابة بعض معلومات الشاشة الخاصة بأجهزة تشغيل الأفلام القديمة. حدّد جميع طبقات النصوص التي كتبناها باستخدام الخط السابق ثم اذهب إلى القائمة: Layer > Merge Layers لتحويلها إلى طبقة نقطيّة قابلة للتعديل. اذهب إلى القائمة: Filter > Distort > Wave احتفظ بالإعدادات السابقة ولكن خفّف من عدد المولدات إلى 30. لإنشاء آخر تأثير بنمط قديم اضغط على الاختصار CMD+A لتحديد الكل ثم اذهب إلى القائمة: Edit > Copy Merged ألصق ما تم نسخه مع الدمج في طبقة جديدة أعلى لوحة الطبقات. انقر نقرًا مزدوجًا على الطبقة الجديدة لفتح نافذة الأنماط للطبقة ثم ألغِ تفعيل القناة الخضراء G في خيارات المزج المتقدمة. حرّك الطبقة لليمين قليلًا بضعة بكسلات باستخدام أسهم لوحة المفاتيح لإنتاج اختلال في القنوات اللونية. هذا المزيج من التأثيرات والتشوّهات غالبًا ما يُشاهد على أجهزة التلفاز القديمة ومشغلات الفيديو القديمة أيضًا. ترجمة -وبتصرّف- للمقال: How To Create a Distorted VHS Effect in Photoshop لصاحبه: Chris Spooner.1 نقطة
-
نعم أختي الكريمة يمكن ان تنشري فيديوهات ليست ملكك على اليوتيوب وتكسبي منها أموال ان كانت غير منشورة عليه مسبقًا شرط أن تكون حقوق ملكيتها عامة.1 نقطة
-
نعم القراءة جيدة و'مفيدة لحوصلة أفكارك وانتهاج منهاج جيد.1 نقطة
-
سنتطرّق في هذا الدرس إلى مفهوم الحلقات في PHP، التي تسمح لك بتنفيذ تعليمات برمجية مرةً أو أكثر. فعلى سبيل المثال، لو أردت أن أطبع كلمة "hsoub" عشر مرات فعلي عندها أن أكتب الأمر echo مراتٍ عشر، لكن يمكنني عبر استعمال حلقة أن أكتب الأمر echo مرةً واحدةً لطباعة الجملة عشر مرات. هنالك أربعة أنواع من الحلقات في PHP هي: حلقة while حلقة do-while حلقة for حلقة foreach سنتعلم في هذا الدرس عن أول ثلاث حلقات لأن الرابعة متعلقة بالمصفوفات التي سنتعلمها لاحقًا، لذا سنؤجِّل شرح حلقة foreach إلى درسٍ قادم. حلقة while حلقة while هي من أبسط أشكال الحلقات في PHP، إذ تقوم هذه الحلقة بتنفيذ التعليمات البرمجية مرارًا وتكرارًا إلى أن يتحقق الشرط (أي تصبح قيمته FALSE)، ويتم التحقق من قيمة الشرط قبل كل تكرار، فلو تغيرت قيمته أثناء التنفيذ فسيستمر تنفيذ التعليمات الموجودة في الحلقة إلى نهايتها؛ وقد يتحقق شرط حلقة while من البداية (أي تكون قيمته من البداية FALSE)، وبهذا لن تُنفَّذ التعليمات الموجودة فيها أبدًا. الشكل العام للحلقة while هو: while (expr) { statments } خصائص هذا الشرط مماثلة لخصائص شرط عبارة if-else؛ فلطالما كانت قيمة الشرط true أو قيمةً ليست صفرية، فسيستمر تنفيذ الشيفرة مرارًا وتكرارًا. لنلقِ نظرةً على هذا المثال: <?php // نعطي قيمةً ابتدائية للمتغير $initial_value = 0; // أصغر من 10 هو الشرط الذي سينهي الحلقة while($initial_value < 10) { echo 'hsoub'.'<br>'; // سنزيد قيمة المتغير بمقدار 1 $initial_value++; } ?> تبدأ قيمة المتغير $initial_value من القيمة 0 وسيستمر تنفيذ الحلقة لطالما كانت قيمة المتغير initial_value$ أصغر من 10؛ تزداد قيمة $initial_value بمقدار 1 في كل تكرار؛ وسيطبع المثال السابق الكلمة "hsoub" عشر مرات، ويُستعمَل الوسم <br> لإدراج سطرٍ جديد في مستندات HTML (لطباعة الكلمات في أسطرٍ مختلفة). تذكر أنَّ النقطة "." تجمع بين سلسلتين نصيتين. حلقة do-while هذه الحلقة مشابهة جدًا لحلقة while لكن الاختلاف بينها هو أنَّ هذه الحلقة تتحقق من قيمة الشرط بعد أن تنفِّذ الشيفرة الموجود ضمنها؛ أي أنها تتحقق من الشرط عند تكرار تنفيذ الشيفرة وليس عند تنفيذها لأول مرة. شكلها العام هو: do { statments } while (expr); مثالٌ عليها: <?php // نعطي قيمةً ابتدائية للمتغير $initial_value = 0; // أصغر من 10 هو الشرط الذي سينهي الحلقة do { echo 'hsoub'.'<br>'; // سنزيد قيمة المتغير بمقدار 1 $initial_value++; } while($initial_value < 10); ?> سيطبع هذا المثال الكلمة "hsoub" عشر مرات أيضًا، لكن الاختلاف يكمن فيما لو كانت القيمة الابتدائية للمتغير $initial_value أكبر أو تساوي 10، ففي هذا الحالة لن تُنفَّذ حلقة while بينما ستُنفَّذ حلقة do-while. أي أنها ستنفَّذ مرةً واحدةً على الأقل. لاحظ وجود الفاصلة المنقوطة بعد while في حلقة do-while. حلقة for الشكل العام لحلقة for هو: for (initialize; condition; operation) { statments } لنأخذ مثالًا قبل أن نناقش آلية عمل هذه الحلقة: <?php // تهيئة المتغير داخل الحلقة for($initial = 0; $initial <10; $initial++) { echo 'hsoub'.'<br>'; } // تهيئة المتغير خارج الحلقة $initial_value = 0; for (; $initial_value < 10; $initial_value++) { echo 'hsoub'.'<br>'; } ?> شاهدنا -في أول نوعين من الحلقات- كيف أننا نهيّئ متغيرًا، ثم علينا التحقق من الشرط في الحلقة كي تُنفَّذ، ثم في النهاية علينا تعديل قيمة المتغير (زيادةً أو نقصانًا). لكننا نجري الخطوات الثلاث السابقة في مكانٍ وحيد في حلقة for. تأخذ الحلقة for ثلاثة وسائط (arguments): القيمة الابتدائية (initialize): وهي مماثلة لأول نوعين من الحلقات. يمكننا تهيئة المتغيرات في حلقة for بطريقتين، الأولى داخل الحلقة (بين الأقواس) والأخرى قبل الحلقة. لاحظ طريقة الكتابة في المثال السابق؛ حيث يُفصَل بين كل وسيط والآخر بفاصلة منقوطة؛ وإذا كنت تُهيّئ القيمة خارج الحلقة، فلا تنسَ أن تضع الفاصلة المنقوطة حتى ولو كانت القيمة فارغة. الشرط (condition): وهو يقارن بين قيمة المتغير الذي تمت تهيئته والقيمة المعطية. العملية (operation): وهي التي ستعدِّل في قيمة المتغير بعد نهاية تنفيذ كل تكرار للحلقة. أمثلة إضافية لا يكفي الشكل العام للأوامر والتعليمات لتعلم لغة البرمجة وفهمها فهمًا تامًا؛ لنحاول الآن استيعاب هذه الأمثلة: <?php // طباعة الأرقام من 10 إلى 0 for ($number=10; $number >= 0; $number--) { echo $number.'<br>'; } ?> <?php // زيادة الرقم بمقدار 2 في كل دورة for ($number=0; $number < 10; $number+=2) { echo $number.'<br>'; } ?> نجد -في المثال أعلاه- المعامل "+=" الذي يُضيف القيمة على الجانب الأيمن إلى قيمة المتغير على الجانب الأيسر؛ يمكنك أيضًا استعمال هذه المعاملات: "*=": الضرب، مثال $number *= 2 "-=": الطرح "/=": القسمة "%=": باقي القسمة "^=": القوة (أو الأس) سنكتب الآن برنامجًا لطباعة مضاعفات الرقم 5 بين العددين 1 و 100؛ تذكَّر أن المعامل % يُعيد باقي القسمة. <?php for ($number=1; $number < 100; $number++) { if ($number % 5 == 0) { echo $number.'<br>'; } } ?> الشكل البديل لبنى التحكم تدعم PHP شكلًا بديلًا لأقواس بنى التحكم التي هي if، و while، و for، و foreach، و switch؛ وطريقة استعمال الشكل البديل هي وضع نقطتين رأسيتين (:) بدلًا من قوس البداية، واستبدال قوس النهاية بالكلمات "endif;"، أو "endwhile;"، أو "endfor;"، أو "endforeach;" (سنناقش تلك الحلقة في درسٍ لاحق)، أو "endswitch;" على التوالي وبالترتيب. <?php if ($a == 5): ?> A is equal to 5 <?php endif; ?> قسم HTML في المثال السابق (A is equal to 5) موجودٌ ضمن جملة if شرطية مكتوبة بالشكل البديل، لاحظ أن تمييز بداية ونهاية بنى التحكم أسهل عند دمج HTML مع PHP. ستظهر جملة "A is equal to 5" فقط إن كانت قيمة المتغير $a مساوية للرقم 5. يمكن تطبيق الشكل البديل على عبارات else و elseif أيضًا. هذا مثالٌ عنها بالشكل البديل: <?php if ($a == 5): echo "a equals 5"; echo "..."; elseif ($a == 6): echo "a equals 6"; echo "!!!"; else: echo "a is neither 5 nor 6"; endif; ?> تمرين اكتب برنامجًا فيه حلقتين متداخلتين لطباعة جدول الضرب للأعداد من 1 إلى 9؛ حيث يكون ناتج خرجه هو: 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81 حاول أن تشغل السكربت السابق من سطر الأوامر (استعمل \t لإدراج مسافة جدولة [tab]، و \n لإدراج سطر جديد). المصادر مقال Loops in PHP لصاحبه Harish Kumar. صفحات while، و do-while، و for، و Alternative syntax في دليل PHP وغيرها.1 نقطة