نتائج البحث

اذهب إلى التنقل اذهب إلى البحث

كتابة وتنقيح برامج Bash

برنامج الصدفة هو سلسلة من الأوامر يعاد استخدامها بشكل متكرر، ووُضعت في ملف نصي له إذن تنفيذ كبرنامج، ويمكن استخدام أي محرر نصي لكتابة برامج لصدفة Bash. تبدأ برامج bash بـ !# متبوعيْن بمسار الصفة التي ستنفذ الأوامر التي ستُكتب في البرنامج، وتضاف التعليقات إلى البرنامج للمرجعية فيما بعد ولتيسير فهم الشيفرة على من يقرؤها. يُفضل الإسهاب في التعليقات داخل برامج الصدفة على الإيجاز فيها. تُنقَّح الصدفة باستخدام خيارات الصدفة، ويمكن استخدام تلك الخيارات للتنقيح الجزئي أو لتحليل الشيفرة كاملة، ...

تنقيح برامج Bash

التنقيح على مستوى البرنامج ككل حين تحدث مشكلة في البرنامج الذي كتبته فإنك في حاجة إلى وضع يدك على مكان المشكلة بالتحديد داخل الشيفرة، وتوفر Bash مزايا تنقيح شاملة لعل أشهرها هو بدء صدفة فرعية بخيار x- الذي سيبدأ الصدفة بالكامل في طور التنقيح، وستُطبَع آثار كل أمر إضافة إلى وسائطه (arguments) إلى خَرج قياسي (standard output) بعد توسيع الأوامر لكن قبل تنفيذها. الشيفرة التالية هي لبرنامج commented-script1.sh من مثال أساسيات كتابة برامج Bash، وقد استدعينا الصدفة في طور التنقيح ...

Bash/Topics

صدفة Bash وبرامج Bash البرامج الشائعة للصَّدَفة وظائف الصدفة وما تفعله إضافة إلى أنواعها المختلفة (sh، bash، csh، ... ) مزايا صدفة Bash استعراض لأهم مزايا صدفة Bash، مثل الصور المختلفة لاستدعاءات الصدفة، والتعابير الحسابية والشرطية والصدفة المحظورة، وكذلك الأوامر البديلة والمصفوفات، ... . تنفيذ الأوامر في Bash توضيح لما يحدث عند تنفيذ الأوامر في صدفة Bash، واستعراض لأهم الأوامر المُضمَّنة فيها. وحدات البناء الأساسية شرح للوحدات الأساسية التي تشكل صدفة Bash، مثل الأوامر والدوال والمعامِلات والتوسعات والبنية اللغوية، إضافة ...

الأفخاخ في Bash

عام قد تجد حالات لا تريد فيها من يستخدم شيفراتك النصية أن يخرج قبل الوقت المحدد عن طريق اختصارات لوحة المفاتيح حين تحتاج إلى مدخلات مثلًا أو عند القيام بعملية تنظيف، ويمكن استخدام أمر trap ليلتقط إشارات لوحة المفاتيح تلك، ويمكن برمجته مسبقًا لينفِّذ قائمة أوامر عند التقاط تلك الإشارات. قواعد أمر trap واضحة ومباشرة: trap [الإشارات] [الأوامر] هذا يجعل أمر trap يلتقط الإشارات المُعطاة له، والتي قد تكون أسماء إشارات مع سابقة SIG أو بدونها، أو تكون أرقام إشارات. وإن ...

إنشاء وتشغيل برنامج Bash

الكتابة والتسمية إن كان لديك سلسلة أوامر تنفذها بشكل متكرر وتريد اختصار وقت تنفيذها أو تنفيذها بشكل آلي، فيمكنك وضعها في ملف فارغ يكتب بصيغة معينة وتقرؤه الصدفة على أنه برنامج تنفذه عند استدعاءه بكتابة اسم الملف الذي يحويه، وتسمى تلك البرامج ببرامج الصدفة أو شيفرات الصدفة النصية (Shell Scripts). ويمكن استخدام تلك البرامج لأتمتة المهام باستخدام أداة cron أو في إجراءات الإقلاع وإيقاف التشغيل في أنظمة يونكس، حيث يُحدَّد أسلوب عمل العفاريت (daemons) والخدمات في شيفرات init النصية (init ...

مقدمة إلى الدوال في Bash

ما هي الدوال؟ دوال الصدفة طريقة لتجميع أوامر من أجل تنفيذها لاحقًا باستخدام اسم واحد للمجموعة ككل أو روتين، ويجب أن يكون اسم الروتين فريدًا لا يتكرر في الصدفة أو الشيفرة النصية، وتُنفَّذ كل الأوامر التي تكوِّن الدالة مثل الأوامر العادية تمامًا. تُنفَّذ قائمة الأوامر المرتبطة باسم دالة حين تُستدعى تلك الدالة كأمر بسيط، وتُنفَّذ الدالة داخل الصدفة التي صُرِّح عنها فيها، فلا تُفتح عملية جديدة لتفسير الأوامر. وستظهر الأوامر الخاصة المُضمَّنة قبل دوال الصدفة أثناء البحث عن الأوامر، والأوامر ...

المزيد من خيارات Bash

ناقشنا بعض خيارات صدفة Bash التي قد تفيدك في تنقيح برامج Bash، وسننظر الآن في مزيد من تلك الخيارات بتفصيل أكثر. عرض الخيارات استخدم خيار o- لأمر set لعرض كل خيارات الصدفة: hsoub:~> set -o allexport off braceexpand on emacs ...

المتغيرات في Bash

أنواع المتغيرات تُكتب متغيرات الصدفة بحروف إنجليزية كبيرة، وتحتفظ Bash بقائمة من نوعين من المتغيرات: المتغيرات العامة Global Variables ستجد المتغيرات العامة أو متغيرات البيئة (environment variables) في جميع الصدفات، ويمكن استخدام أوامر env أو printenv لعرض متغيرات البيئة، وتأتي تلك البرامج في حزمة sh-utils. إليك مثالًا لخرج أمر printenv: wiki ~> printenv CC=gcc CDPATH=.:~:/usr/local:/usr:/ CFLAGS=-O2 -fomit-frame-pointer COLORTERM=gnome-terminal CXXFLAGS=-O2 -fomit-frame-pointer DISPLAY=:0 DOMAIN=hq.garrels.be e= TOR=vi FCEDIT=vi FIGNORE=.o:~ G_BROKEN_FILENAMES=1 GDK_USE_XFT=1 GDMSESSION=Default GNOME_DESKTOP_SESSION_ID=Default GTK_RC_FILES=/etc/gtk/gtkrc:/nethome/wiki/.gtkrc-1.2-gnome2 GWMCOLOR=darkgreen GWMTERM=xterm HISTFILESIZE=5000 history_control=ignoredups HISTSIZE=2000 HOME=/nethome/wiki HOSTNAME=hsoub.hq.garrels.be INPUTRC=/etc/inputrc IRCNAME=wiki JAVA_HOME=/usr/java/j2sdk1.4.0 LANG=en_US LDFLAGS=-s LD_LIBRARY_PATH=/usr/lib/mozilla:/usr/lib/mozilla/plugins LESSCHARSET=latin1 LESS=-edfMQ LESSOPEN=|/usr/bin/lesspipe.sh %s LEX=flex LOCAL_MACHINE=hsoub LOGNAME=wiki LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35: MACHINES=hsoub MAILCHECK=60 MAIL=/var/mail/wiki MANPATH=/usr/man:/usr/share/man/:/usr/local/man:/usr/X11R6/man MEAN_MACHINES=hsoub MOZ_DIST_BIN=/usr/lib/mozilla MOZILLA_FIVE_HOME=/usr/lib/mozilla MOZ_PROGRAM=/usr/lib/mozilla/mozilla-bin MTOOLS_FAT_COMPATIBILITY=1 MYMALLOC=0 NNTPPORT=119 NNTPSERVER=news NPX_PLUGIN_PATH=/plugin/ns4plugin/:/usr/lib/netscape/plugins OLDPWD=/nethome/wiki OS=Linux PAGER=less PATH=/nethome/wiki/bin.Linux:/nethome/wiki/bin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:/usr/bin:/usr/sbin:/bin:/sbin:. PS1=\[\033[1;44m\]wiki is in \w\[\033[0m\] PS2=More input> PWD=/nethome/wiki SESSION_MANAGER=local/hsoub.hq.garrels.be:/tmp/.ICE-unix/22106 SHELL=/bin/bash SHELL_LOGIN=--login SHLVL=2 SSH_AGENT_PID=22161 SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass SSH_AUTH_SOCK=/tmp/ssh-XXmhQ4fC/agent.22106 START_WM=twm TERM=xterm TYPE=type USERNAME=wiki USER=wiki _=/usr/bin/printenv VISUAL=vi WINDOWID=20971661 XAPPLRESDIR=/nethome/wiki/app-defaults XAUTHORITY=/nethome/wiki/.Xauthority XENVIRONMENT=/nethome/wiki/.Xdefaults XFILESEARCHPATH=/usr/X11R6/lib/X11/%L/%T/%N%C%S:/usr/X11R6/lib/X11/%l/%T/%N%C%S:/usr/X11R6/lib/X11/%T/%N%C%S:/usr/X11R6/lib/X11/%L/%T/%N%S:/usr/X11R6/lib/X11/%l/%T/%N%S:/usr/X11R6/lib/X11/%T/%N%S XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB XMODIFIERS=@im=none XTERMID= XWINHOME=/usr/X11R6 X=X11R6 YACC=bison -y المتغيرات المحلية Local Variables لن تجد المتغيرات المحلية إلا في الصدفة الحالية، ويمكن استخدام أمر set -بدون خيارات- لعرض ...

التسجيل (Logging) في Laravel

مقدمة يوفر Laravel خدمات تسجيل صلبة (robust) تسمح لك بتسجيل الرسائل في ملفّات، و سجّل أخطاء النظام، وحتى بتطبيق Slack لإعلام فريقك بأكمله وذلك لمساعدتك على معرفة المزيد حول ما يحدث داخل تطبيقك. يستخدم Laravel وراء الكواليس مكتبة Monolog التي توفر الدعم لمجموعة متنوعة من معالجات السجل القوية. يجعل Laravel إعداد هذه المُعالجات سهلة للغاية، ممّا يسمح لك بالتنسيق بينهم لتخصيص معالجة سجل تطبيقك. الضبط توجد كل إعدادات نظام تسجيل تطبيقك في ملف الإعدادات config/logging.php. يتيح لك هذا الملف إعداد ...

الأخطاء في PHP

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

الأخطاء في PHP

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

مقدمة إلى if في Bash

قد تحتاج إلى تحديد سلاسل إجراءات مختلفة داخل برامج الصدفة (shell scripts) بناءً على نجاح تنفيذ أمر أو فشله، وتأتي أداة if الشرطية من أجل مثل تلك الحالات، وأصغر بنية لغوية لأمر if هي التالية: if TEST-COMMANDS; then CONSEQUENT-COMMANDS; fi تُنفَّذ قائمة أوامر الاختبار TEST-COMMANDS، ثم تُنفَّذ قائمة الأوامر التابعة CONSEQUENT-COMMANDS إن كانت حالة الإعادة لها هي صفر. وتكون حالة الإعادة هي حالة خروج آخر أمر تم تنفيذه، أو تكون صفرًا إن لم تتحقق أي حالة من أوامر الاختبار. يتضمن أمر ...

أساسيات كتابة برامج Bash

في أي صدفة سيعمل البرنامج؟ يجب أن تحدد الصدفة التي ستنفِّذ البرنامج إذا أردت تنفيذه في صدفة فرعية، فقد لا تكون الصدفة التي كتبت فيها البرنامج هي الصدفة الافتراضية لنظامك، وعليه قد تُنتِج أوامر برنامجك أخطاءً عند تنفيذها في الصدفة الخطأ. يحدد أول سطر في البرنامج نوع الصدفة، ويجب أن يكون أول محرفين في ذلك السطر !#، ثم يتلو ذلك مسار الصدفة التي ستنفِّذ البرنامج. كذلك لا تبدأ برنامجك بسطر فارغ إذ تُقرأ الأسطر الفارغة على أنها أسطر أيضًا، وستبدأ ...

صدفة Bash وبرامج Bash

تعريف بصدفة Bash Bash هي صدفة نظام جنو التي تتوافق مع صدفة بورن وتزيد عليها بعدة مزايا وخصائص مفيدة من باقي الصدفات، وحين تبدأ الصدفة فإنها تقرأ ملفات إعداداتها التي من أهمها ما يلي: etc/profile/ bash_profile./~ bashrc./~ كذلك تتصرف bash بشكل مختلف حين تكون في وضع تفاعلي، وهي متوافقة مع معايير POSIX وبها وضع محظور. ويمكن تقسيم أوامرها إلى ثلاث مجموعات: دوال الصدفة والأوامر المُضمَّنة والأوامر الموجودة داخل مجلد في نظامك. أيضًا، تدعم bash أوامر مضمَّنة أخرى ليست موجودة داخل ...

الحصول على مُدخلات المستخدم في Bash

استخدام أمر read أمر read هو الأمر المتمم لأمريْ echo و printf، وبنيته اللغوية كالتالي: read [options] NAME1 NAME2 ... NAMEN يُقرأ سطر واحد من المُدخل القياسي (standard input) أو من واصف ملف (file descriptor) أُدخِل كوسيط لخيار u-، وتُعيَّن أول كلمة من السطر لأول اسم NAME1، والثانية للاسم الثاني NAME2 وهكذا، ثم تُعيَّن الكلمات المتبقية وفاصلاتها المتداخلة (intervening seperators) إلى الاسم الأخير NAMEN، أما إن كانت الكلمات المقروءة من مجرى الدخل أقل من الأسماء فتعيَّن قيم فارغة لتلك الأسماء. تُستخدم ...

الدوال في Bash

توفر الدوال طريقة سهلة لتجميع أوامر تحتاج إلى تنفيذها بشكل متكرر، وحين تعمل الدالة فإن المعامِلات الموضعية (positional parameter) تتغير إلى معامِلات الدالة، ثم يعاد ضبط تلك المعاملات بعد توقف الدالة إلى معاملات البرنامج المُستدعِي. وكذلك فإن الدوال تشبه برامج مصغرة (mini-scripts)، ومن ثَمَّ فإنها تولِّد رموز حالة خروج (exit codes) أو رموز حالة إعادة (return codes). مقدمة إلى الدوال في Bash نظرة عامة على الدوال في Bash والبُنى اللغوية لها ومعامِلاتها الموضعية وعرضها في الصدفة. أمثلة عن الدوال في ...

عرض رسائل المستخدم في Bash

برامج تفاعلية أم غير تفاعلية؟ تعمل بعض برامج الصدفة (shell scripts) دون أي تدخل من المستخدم ويطلق عليها برامج غير تفاعلية، ومن بعض مزايا تلك البرامج أنها تعمل بشكل متوقع في كل مرة، ويمكنها العمل في الخلفية أيضًا. لكن باقي برامج الصدفة تحتاج إدخالًا من المستخدم أو تحتاج أن تطبع رسائل للمستخدم أثناء عملها، ولذلك النوع من البرامج مزايا كذلك، إذ يمكن بناء برامج أكثر مرونة، ويمكن للمستخدم تخصيص البرنامج أثناء تشغيله أو جعله يتصرف بأشكال مختلفة، كما يمكن للبرنامج ...

إنشاء قوائم باستخدام الأمر المُضمَّن select في Bash

عام استخدام أمر select البُنية اللغوية لأمر select تشبه بُنية حلقة for: select WORD [in LIST]; do RESPECTIVE-COMMANDS; done ويُستخدم أمر select من أجل إنشاء قوائم بسهولة عبر اتباع ما يلي: تُوسّع القائمة LIST مولِّدة قائمة من العناصر ويطبع التوسع في خطأ قياسي (standard error)، كما يُسبق كل عنصر من القائمة برقم. وإن لم تكن in LIST موجودة فتُطبع المعامِلات الموضعية كما لو تم تحديد @$ in. أيضًا، تُطبع قائمة LIST مرة واحدة فقط. يُطبع محث PS3 عند طباعة كل العناصر، ...

المهام التكرارية في Bash

ستتعلم في هذا القسم كيف يمكن للأوامر المتكررة أن تندمج في حلقات تكرارية، وكيف تُبنى الحلقات التكرارية باستخدام عبارات for أو while أو until إحداها أو جميعها معًا، فحلقة for تنفذ مهمة ما عددًا محددًا من المرات، وإن كنت لا تعرف كم عدد مرات تنفيذ الأمر فاستخدم عبارة until أو while لتحديد متى يجب أن تتوقف الحلقة. ويمكن مقاطعة الحلقات أو إعادة تكرارها باستخدام عبارتي break و continue، كما يمكن استخدام ملف كمُدخَل لحلقة عبر معامل إعادة توجيه المدخلات، كذلك ...

HTML/Topics/Scripting

لإنشاء محتوى تفاعلي في تطبيقات الويب، فتدعم HTML استخدام لغات السكربتات، وخصوصًا JavaScript، وهنالك عدِّة عناصر متوافرة لدعم هذه الإمكانية. العنصر الوصف <canvas> استخدم العنصر <canvas> مع الواجهة البرمجية الخاصة به لترسم الرسومات وتحركها. <noscript> يُعرِّف العنصر <noscript> قسمًا من شيفرات HTML التي ستُضاف إلى الصفحة إذا لم يكن العنصر <script> مدعومًا في المتصفح أو كان استخدام شيفرات JavaScript معطلًا من قِبل المستخدم. <script> تضمين أو الإشارة إلى سكربت قابل للتنفيذ.

تطوير برامج Bash جيدة

خصائص الشيفرات الجيدة هذا الشرح عن آخر وحدة بناء للصدفة وهي الشيفرات النصية. إليك بعض الأمور التي يجب أن تراعيها قبل أن نكمل: يجب أن تعمل الشيفرة بدون أخطاء. يجب أن تنفذ المهمة التي كُتبت لها. يجب أن يكون منطق البرنامج محددًا وظاهرًا. لا تنفذ الشيفرة مهامًا غير ضرورية. ينبغي أن تكون الشيفرة قابلة لإعادة استخدامها. الهيكل Structure يجب أن يكون هيكل شيفرة الصدفة مرنًا للغاية، فرغم أن bash بها حرية ظاهرة، إلا أنه يجب تحقيق منطق صحيح وتحكم في ...

حلقة for في Bash

كيفية عمل حلقة for التكرارية حلقة for هي أول وحدة تكرارية في الصدفة من بين ثلاث وحدات، وتسمح تلك الحلقة بتخصيص قائمة من القِيَم، وتُنفَّذ قائمة من الأوامر لكل قيمة من تلك القيم. والبنية اللغوية لهذه الحلقة التكرارية هي كالآتي: for NAME [in LIST ]; do COMMANDS; done إن لم تكن [ in LIST] موجودة فيتم استبدال @$ in بها، وتنفذ for الأوامر (COMMANDS) مرة واحدة لكل معامل موضعي مضبوط على قيمة، انظر المتغيرات في Bash وفحص وسائط سطر الأوامر. وتكون ...

ميزات صدفة Bash

صدفة bash هي الصدفة الافتراضية لنظام جنو يوفّر مشروع GNU -إذ يشير الاسم إلى GNU's Not UNIX- أدواتٍ لإدارة النظم الشبيهة بنظام يونكس، وهي نظم التشغيل الحرة والمتوافقة مع معايير يونكس. وإحدى تلك الأدوات هي bash، صَدَفة متوافقة مع صدفة sh الأولى التي كتبها ستيفن بورن، وبها خصائص مفيدة من صدفتي Korn و C -اختصاراتهما ksh و csh على الترتيب-. وقد صُممت لتتوافق مع معيار IEEE POSIX P1003.2/ISO 9 945.2 للصدفات والبرامج.  كما أن بها مزايا محسّنة عن sh سواء ...

أمثلة عن الدوال في Bash

إعادة التدوير ستجد برامج كثيرة على نظامك تستخدم الدوال كطريقة منظمة لمعالجة سلسلة ما من الأوامر، ففي بعض أنظمة لينكس مثلًا ستجد الملف التعريفي etc/rc.d/init/functions/ يشار إليه كمصدر في كل شيفرات init النصية. وبهذا الأسلوب لا تحتاج إلى كتابة المهام المتكررة سوى مرة واحدة وبشكل عام أيضًا، مهام مثل تفقد ما إن كانت تعمل إحدى المهام، تشغيل أو إيقاف أحد العفاريت (daemons)، وهلم جرا. ثم إذا دعت الحاجة إلى كتابة تلك المهام مرة أخرى فإنك لا تحتاج سوى إعادة تدوير ...

وحدات البناء الأساسية في Bash

وحدات بناء الصدفة البنية اللغوية للصدفة (Shell Syntax) إن كان المُدخَل ليس تعليقًا (comment) فإن الصدفة تقرؤه وتقسمه إلى كلمات ومعامِلات مطبِّقة قواعد الاقتباس (quoting rules) لتحدد معنى كل مِحرَف (character)، ثم تُترجَم تلك الكلمات والمعامِلات إلى أوامر وعناصر أخرى ينتج عنها حالة الخروج المناسبة للعملية. ولا تُطبَّق آلية fork-exec التي ذكرناها في تنفيذ الأوامر في Bash إلا بعد أن تحلل الصدفة المُدخلات وفقًا للخطوات الآتية: تقرأ الصدفة المُدخلات من ملف، سواء من نص (string) أو من طرفية المستخدم. يُقسَّم ...

تنفيذ الأوامر في Bash

عام تحدد bash نوع البرنامج الذي يتم تنفيذه، وتكون البرامج هنا عادة أوامر للنظام في صورة مُجمّعة (compiled) على جهازك. وحين يتم تنفيذ أحد تلك البرامج، فإن bash تنشئ نسخة من نفسها، وتولد عملية جديدة بناء على ذلك، ويدعى ذلك الإجراء بالاشتقاق (forking). وتلك العملية الفرعية لديها نفس بيئة العملية الأصلية، ولا تختلفان إلا في رقم معرّف العملية (Process ID Number) لكل منهما. وتحِل بيانات العملية الجديدة محِل مساحة العنوان (address space) بعد الاشتقاق ، ويتم ذلك الإجراء من خلال ...

البرامج الشائعة للصَّدَفة

الوظائف العامة للصدفة يفسر برنامج صَدَفة يونكس أوامر المستخدم التي يدخلها بنفسه أو التي يمكن استخراجها وقراءتها من ملف نصي يسمى شيفرة الصَّدَفة النصية (shell script) أو برنامج الصدفة (shell program). وتكون تلك الملفات النصية مفسّرة (interpreted) على خلاف الملفات المُجمّعة (compiled)، بمعنى أن الصدفة تقرأ الأوامرَ سطرًا سطرًا وتبحث عنها في النظام، على خلاف البرامج المُجمَّعة التي يحوِّل المُجمِّع (compiler) شيفرتها إلى ملف تنفيذي (executable file) مكتوب بلغة يستطيع الحاسوب فهمها -لغة الآلة-، ثم يُمكن استخدام ذلك الملف بعدها ...

الأخطاء في Node.js

ستواجه التطبيقات التي تعمل في Node.js عمومًا أربع فئات من الأخطاء هي: أخطاء JavaScript القياسية مثل <EvalError>، و <SyntaxError>، و <RangeError>، و <ReferenceError>، و <TypeError>، و <URIError>. أخطاء النظام التي أُطلقَت بوساطة قيود نظام التشغيل الضمنيَّة (operating system constraints) مثل محاولة فتح ملف غير موجود أو محاولة إرسال بيانات عبر مقبسٍ مغلق. أخطاء محددة من طرف المستخدم تُطلَق عبر شيفرة التطبيق. أخطاء التوكيد AssertionError‎ وهي صنفٌ مخصصٌ من الأخطاء يُطلَق عندما تكتشف Node.js مخالفة منطقية استثنائية لا يجب أن تحدث ...

الاستخدامات المتقدمة لعبارة if الشرطية في Bash

بُنى if/then/else يوضح المثال التالي البُنية التي يجب استخدامها لاتخاذ إجراء أو سلسلة إجراءات إن تحققت شروط عبارة if، وسلسلة إجراءات أخرى إن لم تتحقق: hsoub scripts> gender="male" hsoub scripts> if [[ "$gender" == "f*" ]] More input> then echo "Pleasure to meet you, Madame." More input> else echo "How come the lady hasn't got a drink yet?" More input> fi How come the lady hasn't got a drink yet? hsoub scripts> الفرق بين [] و [[]] على عكس ]، فإن ]] تمنع انقسام الكلمات في ...

الدالة ‎‎jQuery.getScript()‎‎ في jQuery

jQuery.getScript( url [, success ] )‎ القيم المعادة تعيد كائنًا من النوع jqXHR. الوصف تجلب هذه الدالة ملف JavaScript من الخادم باستعمال طلب HTTP عبر الطريقة GET ثمَّ يُنفِّذه. jQuery.getScript( url [, success ] )‎ أُضيفت مع الإصدار: 1.0. url سلسلة نصية تحتوي على الرابط URL الذي سيُرسَل الطلب إليه. success دالةٌ من الشكل Function( String script, String textStatus, jqXHR jqXHR )‎ يراد تنفيذها إن نجح الطلب. هذه الدالة هي اختزالٌ للدالة jQuery.ajax()‎، إذ تكافئ: $.ajax({ url: url, ...

الدالة ‎‎jQuery.getScript()‎‎ في jQuery

jQuery.getScript( url [, success ] )‎ القيم المعادة تعيد كائنًا من النوع jqXHR. الوصف تجلب هذه الدالة ملف JavaScript من الخادم باستعمال طلب HTTP عبر الطريقة GET ثمَّ يُنفِّذه. jQuery.getScript( url [, success ] )‎ أُضيفت مع الإصدار: 1.0. url سلسلة نصية تحتوي على الرابط URL الذي سيُرسَل الطلب إليه. success دالةٌ من الشكل Function( String script, String textStatus, jqXHR jqXHR )‎ يراد تنفيذها إن نجح الطلب. هذه الدالة هي اختزالٌ للدالة jQuery.ajax()‎، إذ تكافئ: $.ajax({ url: url, ...

الدالة ()keywords في Sass

تعيد الدالة keywords()‎ خريطة (map) تحتوي على الوسائط المسماة المُمرّرة إلى دالة أو مخلوط (mixin)، والذي يتطلب تمرير قائمة متغيرةً من الوسائط. أسماء الوسائط هي سلاسل نصيةٌ ولا تحتوي على البادئة $. البنية العامة keywords($args) المعاملات ‎$args قائمة متغيرة من الوسائط. القيم المعادة تُعاد خريطة تحتوي على الوسائط المسماة المُمرّرة إلى الدالة أو المخلوط آنذاك. الأخطاء والاستثناءات سيُرمى الخطأ ArgumentError إن لم يكن المعامل ‎$args قائمةً متغيرة من الوسائط. أمثلة مثال عن استخدام الدالة keywords()‎ مع قاعدة ‎@debug: @mixin foo($args...) { @debug ...

خيارات سطر الأوامر في Node.js

يتوافر العديد من خيارات سطر الأوامر التي يمكن استعمالها مع Node.js. تُستعمَل هذه الخيارات في تنقيح أخطاء الشيفرة، والتحكم في كيفيَّة تنفيذ الشيفرة، وغيرها من الأمور المفيدة. يمكن عرض هذا التوثيق في الطرفيَّة عبر استعمال الأمر man node. البنية العامة node [options] [V8 options] [script.js | -e "script" | -] [--] [arguments] node debug [script.js | -e "script" | <host>:<port>] … node --v8-options إنَّ تنفيذ node دون أيَّة وسائط يؤدي إلى بدئها مع الوحدة REPL. لمزيدٍ من المعلومات حول node debug، راجع رجاءً ...

الإشارات في Bash

صفحة man للإشارات يحتوي نظامك على صفحة man بها كل الإشارات المتاحة، لكن قد يُفتح بطريقة مختلفة اعتمادًا على نظام تشغيلك، والطريقة التي ستجدها في أغلب أنظمة لينكس هي man 7 signal، لكن إن كنت في ريب من الأمر فحدد صفحة man والقسم الذي تريده بالضبط باستخدام أوامر مثل: man -k signal | grep list أو apropos signal | grep list ستجد أسماء الإشارات باستخدام kill -l. الإشارات إلى صدفة Bash الخاصة بك تتجاهل صدفة bash التفاعلية إشارتي SIGTERM و SIGQUIT في ...

المنقح Debugger في Node.js

درجة الثبات: 2 - مستقر كثيرًا ما نحتاج لتنقيح الشيفرات ومراجعتها من الأخطاء، لذلك يتضمن Node.js أداة تنقيح مستقلة يمكن الوصول إليها من خلال محقق V8 inspector وعميل تنقيح مدمج. لاحظ أن عميل تنقيح Node.js هنا هو أداة بسيطة وليست منقّحًا كامل الخصائص، لكنها تكفي في حالة تفحص خطوات تنفيذ الشيفرة. سنستخدم في مثالنا هذا ملف myscript: // myscript.js ‎global.x = 5; setTimeout(() => {  console.log('world'); }, 1000)‎; console.log('hello'); كما ترى، المثال المستخدم هنا بسيط، حيث يبدأ في السطر الأول بتحديد متغير عام x بقيمة 5، ...

ملفات تهيئة الصدفة

ملفات الإعدادات على مستوى النظام System-wide Configuration files الملف etc/profile/ تقرأ Bash التعليمات الموجودة في etc/profile/ إن استدعيْت بشكل تفاعلي عبر خيار login-- أو إن استدعيْت كـ sh ، تضبط تلك التعليمات عادة المتغيرات PATH - USER - MAIL - HOSTNAME - HISTSIZE ، وهي متغيرات تابعة للصدفة. كذلك تُضبط قيمة umask في etc/profile/ على بعض الأنظمة، أما في بعضها الآخر فإن هذا الملف يحتوي على موجّهات (pointers) لملفات الإعدادات الأخرى مثل: ملف etc/inputrc/ ، وهو ملف تهيئة على مستوى ...

أخطاء الصيغة في بايثون

قد تكون أخطاء الصيغة (Syntax errors) أو ما يعرف أيضًا بأخطاء الإعراب (Parsing errors) هي أكثر نوع من الأخطاء التي يواجهها المبتدئون عند تعلّم بايثون: >>> while True print('Hello world')   File "<stdin>", line 1     while True print('Hello world')                    ^ SyntaxError: invalid syntax يعيد المفسّر (parser) طباعة الجملة التي تحتوي على الخطأ مع سهم صغير يشير إلى مكان الخطأ ضمن السطر. ويكون الخطأ ناتجًا عن (أو اكتشف في) المكان الذي يسبق السهم. في المثال السابق ...

أخطاء الصيغة في بايثون

قد تكون أخطاء الصيغة (Syntax errors) أو ما يعرف أيضًا بأخطاء الإعراب (Parsing errors) هي أكثر نوع من الأخطاء التي يواجهها المبتدئون عند تعلّم بايثون: >>> while True print('Hello world')   File "<stdin>", line 1     while True print('Hello world')                    ^ SyntaxError: invalid syntax يعيد المفسّر (parser) طباعة الجملة التي تحتوي على الخطأ مع سهم صغير يشير إلى مكان الخطأ ضمن السطر. ويكون الخطأ ناتجًا عن (أو اكتشف في) المكان الذي يسبق السهم. في المثال السابق ...

Document.write()‎

يكتب التّابع Document.write‎()‎ سلسلةً نصيّةً إلى مجرى (stream) مستندٍ فُتح بالتّابع window.open‎()‎. مُلاحظة: لأنّ التّابع Document.write‎()‎ يكتب إلى مجرى المستند، فاستدعاؤه على مستندٍ مُغلقٍ (مُحمَّل) يستدعي تلقائيًّا التّابع Document.open‎()‎، الذي سيحذف محتويات المستند. البنية العامة document.write(markup); markup سلسلة نصيّة تحتوي على النّص المرغوب كتابته على المستند. مثال <!DOCTYPE html> <html> <head> <title>write مثال</title> <script> function newContent() { alert("تحميل محتوى جديد"); document.open(); document.write("<h1>المحتوى ...

الوحدة cgitb في بايثون

تقدم وحدة cgitb أداة خاصة للتعامل مع الاستثناءات في سكربتات بايثون. (قد يكون اسم الوحدة مضلّلًا. صمّمت هذه الوحدة في المقام الأوّل لعرض معلومات الأخطاء الخاصّة بسكربتات CGI بصيغة HTML، ولكنّها أصبحت تعرض المعلومات كنصوص صرفة في وقت لاحق). في حال حدوث استثناء لم تلتقطه بايثون، تعرض الوحدة تقريرًا مفصّلًا ومنسّقًا، ويتضمّن هذا التقرير الجزء المسؤول عن حدوث الخطأ في الشيفرة المصدرية، إضافة إلى قيم الوسائط والمتغيرات المحلية الخاصّة بالدالة الحالية. يمكن الاستفادة من هذا التقرير في تنقيح الشيفرة المصدرية ...

undefinedفي JavaScript

الخاصية العامة undefined تُمثِّل القيمة الأوليّة undefined في JavaScript. سمات الخاصية undefined قابلة للكتابة لا قابلة للإحصاء لا قابلة للضبط لا البنية العامة undefined الوصف الخاصية undefined هي خاصيةٌ للكائن العام (global object) أي أنها متغيرٌ في المجال العام، والقيمة الابتدائية للخاصية undefined هي نوع البيانات الأوليّ undefined. الخاصية undefined غير قابلة للضبط وغير قابلة للكتابة في المتصفحات الحديثة (بدءًا من معيار ECMAScript 5)، لكن مع ذلك حاول تجنّب الكتابة عليها. المتغيرات التي لم تُسنَد لها قيمةٌ سيكون نوعها هو ...

التوسعات في Bash

بعد تقسيم الأمر في Bash إلى وحدات (Tokens) -انظر وحدات البناء الأساسية في Bash، البنية اللغوية للصدفة- فإن تلك الوحدات توسَّع (expanded) أو تُستبيَن (resolved)، وسنفصّل الآن تلك التوسعات وفقًا لترتيب كل منها، ثم بعد إتمام جميع التوسعات تُنفّذ عملية حذف الاقتباسات. توسُّع القوس المعقوف {} توسع القوس المعقوف هو آلية يمكن من خلالها إنشاء نصوص عشوائية (arbitrary strings)، إذ تأخذ الأنماط (patterns) التي سيُنفَّذ عليها توسع القوس المعقوف باستهلال اختياري (optional preamble) متبوع بسلسلة من النصوص تفصل بين كل ...

حلقة while في Bash

كيفية عمل حلقة while تسمح حلقة while التكرارية بالتنفيذ المتكرر لقائمة أوامر طالما أن الأمر المتحكم في حلقة while يُنفَّذ بنجاح (حالة خروجه صفر). والبنية اللغوية لهذه الحلقة هي: while CONTROL-COMMAND; do CONSEQUENT-COMMANDS; done حيث يرمز CONTROL-COMMAND -وهو الأمر الذي سيتحكم في الحلقة- إلى أي أمر يخرج بحالة فشل أو نجاح، بينما قد تكون CONSEQUENT-COMMANDS -وهي الأوامر التي ستُكرَّر- أي برنامج أو برنامج للصدفة أو أحد بُنى الصدفة المختلفة. وتخرج الحلقة فور فشل الأمر المتحكِّم فيها، وإن كانت الحلقة في برنامج ...

استخدام البُنية case

حالات مُبسطة قد يكون من السهل اللجوء إلى استخدام عبارات if لبداهة أسلوبها، لكن تلك السهولة تنقلب إلى حيرة حين تواجه بضعة اختيارات مختلفة لإجراءات محتملة يجب اتخاذها، ولمثل تلك الحالات نستخدم عبارة case، وبنيتها اللغوية هي كما يلي: case EXPRESSION in CASE1) COMMAND-LIST;; CASE2) COMMAND-LIST;; ... CASEN) COMMAND-LIST;; esac وتطابق كل حالة في التعبير السابق نمطًا (pattern)، وتُنفَّذ الأوامر التي في قائمة COMMAND-LIST لأول تطابق، ويُستخدم محرف الأنبوب | لفصل الأنماط المتعددة، وينهي معامِل ( قائمة الأنماط، ويُطلق اسم البند ...

بيئة Bash

يمكن إعداد بيئة Bash على مستوى النظام ككل أو لكل مستخدم على حدة، وتُستخدم ملفات الإعدادات المختلفة من أجل ضبط سلوك الصدفة، إذ تحتوي تلك الملفات على خيارات الصدفة وإعدادات المتغيرات وتعريفات الدوال ووحدات أخرى من وحدات بناء صدفة Bash التي تيسر علينا إنشاء بيئة عمل مريحة ومنجِزة. يمكن اختيار أسماء للمتغيرات كما تشاء -نوعًا ما- باستثناء الأسماء المحجوزة لصدفة بورن وصدفة Bash والمعامِلات الخاصة (special parameters). وتستخدم Bash نظام اقتباس (quoting) لاستبعاد المعاني الخاصة من محرف أو أكثر في ...

المصفوفات في Bash

إنشاء المصفوفات المصفوفة هي متغير يحتوي قيمًا متعددة، وأي متغير قد يُستخدم كمصفوفة، كذلك لا يوجد حد أقصى لحجم المصفوفة ولا يُشترط أن تُفهرس المتغيرات داخل المصفوفة أو تُعيَّن في وقت واحد، وقد تكون المصفوفات صفرية القاعدة أي يُفهرس أول عنصر برقم صفر. ينفَّذ التصريح غير المباشر عن المتغير (indirect declaration) باستخدام البنية اللغوية التالية: ARRAY[INDEXNR]=value يعامَل المفهرِس INDEXER على أنه تعبير حسابي يجب أن يٌقدَّر بعدد موجب، ويتم التصريح الواضح (explicit declaration) للمصفوفة باستخدام أمر declare: declare -a ARRAYNAME يُقبَل التصريح ...

كتابة برامج Bash تفاعلية

سنتعلم في هذا القسم كيف نُدخل تعليقات المستخدم وكيف نطلب من المستخدم إدخال بيانات، وذلك عادة باستخدام بُنية echo/read، كما سنناقش كيف يمكن استخدام الملفات كمُدخلات ومخرجات باستخدام واصفات الملفات وإعادة التوجيه، وكيف يمكن جمع ذلك مع الحصول على مُدخلات من المستخدم. ويركز هذا الباب أيضًا على أهمية توفير رسائل مفصلة لمن يستخدم برامج الصدفة التي نكتبها، فمن الأفضل أن تعطي معلومات أكثر من اللازم بدلًا من كتابة توثيق موجز. مستندات Here هي إحدى أنواع بُنى الصدفة التي تسمح بإنشاء ...

استخدام الأمر المُضمَّن Shift في Bash

وظيفة أمر shift هو أحد أوامر صدفة بورن التي تأتي مع صدفة Bash أيضًا، ويأخذ هذا الأمر وسيطًا (argument) واحدًا ويكون ذلك الوسيط رقمًا، وتُنقل المعامِلات الموضعية إلى اليسار بمقدار هذا الرقم "N"، أما المعامِلات التي تلي ذلك، من 1+N وما بعده إلى #$ فإن أسماءها تُغيَّر إلى أسماء متغيرات من 1$ إلى #$ +1 - N. فمثلًا لنقل أن لديك أمرًا يأخذ عشرة وسائط، وN تساوي 4، إذًا 4$ تصبح 1$، و 5$ تصبح 2$ وهكذا إلى أن تصل ...

الرموز Symbol في JavaScript

الدالة Symbol()‎ تُعيد قيمةً من النوع symbol، وتملك هذه الدالة خاصيات ساكنة (static properties) ودوال ساكنة (التي تُستخدَم للوصول إلى سجل الرموز العام، أي global symbol registry، ويسمى أيضًا بالمصطلح symbol table)؛ وهذه الدالة تحاول التشبه بالدوال البانية للكائنات، لكنها ليست دالةً بانيةً لعدم القدرة على استخدام المعامل new معها كما في new Symbol()‎. كل رمز (symbol) مُعاد من الدالة Symbol()‎ هو رمزٌ فريد؛ ويمكن أن يُستخدَم كمُعرِّف (identifier) لخاصيات الكائنات، وهذا هو الغرض الرئيسي من هذا النوع من البيانات. ...

معالجة الأخطاء (Error Handling) في Laravel

مقدمة عند بدء مشروع Laravel جديد تكون معالجة الأخطاء والاستثناءات مُعدّة لك مُسبقا. تُسجّل كافة الاستثناءات التي يطلقها تطبيقك في الصنف App\Exceptions\Handler ثم تُرجع للمُستخدم. سنتعمّق في هذا الصنف أكثر من خلال هذا التوثيق. الضبط يحدد الخيار debug في ملف إعداداتك config/app.php مقدار المعلومات الفعلية التي تُعرض عن الخطأ للمستخدم. يُعد هذا الاختيار إفتراضيًّا ليحترم قيمة متغيّر البيئة APP_DEBUG التي تُخزّن في ملفك env. . عليك وضع قيمة متغير البيئة APP_DEBUG على true عند التطوير المحلّي. يجب أن توضع هذه ...

عرض (50 السابقة | 50 التالية) (20 | 50 | 100 | 250 | 500).