یوشا

دست نوشته ها و تجربیات شخصی

یوشا

دست نوشته ها و تجربیات شخصی

شهید دکتر مصطفی چمران: می گویند تقوا از تخصص لازمتر است، آنرا می پذیرم، اما می گویم آنکس که تخصص ندارد و کاری را می پذیرد بی تقواست!

طبقه بندی موضوعی
۲۲
بهمن

 

نکاتی راجب error_reporting و set_error_handler و register_shutdown_function:

 

  • دستور error_reporting

برخلاف تصور خیلی ها که فکر می کنند این دستور خطاها رو "نمایش" میده، این دستور موتور دریافت خطاها هستش. (نه حتی Log کردن خطا)

  • دستور set_error_handler

میشه گفت دستوری برای ثبت تابع customize کننده رفتار خطا هستش (مثلاً برای کادر بندی متون خطا، ایمیل کردن خطا، دادن راه حل به کاربر و...)

  • دستور register_shutdown_function

دستوری برای ثبت تابع callback هستش که هنگام متوقف شدن و پایان یافتن پردازش اسکریپت، اون تابع callback اجرا بشه (همچنین زمانی که exit / die صدا زده میشه)
اصول نامگذاری: onScriptShutdown یا onScriptEnd یا onShutdown....
نکته: توسط این دستور میشه خطاهای نوع E_ERROR , E_PARSE , E_CORE_ERROR , E_COMPILE_ERROR رو هم جذب کرد

 

 

  • دستور ini_set('display_errors', TRUE);

دستوری برای نمایش خطا هستش. اگر دستور error_reporting خاموش باشه این دستور هم کار نمی کنه. اگر دستور error_reporting روشن باشه ولی این دستور false باشه، اسکریپت کماکان خطاها رو دریافت می کنه اما نمایش نمیده.

  • دستور ini_set('log_errors', TRUE);

دستوری برای ذخیره خطا در فایل هستش. اگر دستور error_reporting خاموش باشه این دستور هم کار نمی کنه. اگر دستور error_reporting روشن باشه ولی این دستور false باشه، اسکریپت کماکان خطاها رو دریافت می کنه اما ذخیره نمی کنه.

 

بنابراین برای محیط development همگی باید فعال و true باشن و برای محیط production(سرور واقعی یا تحویل به مشتری) همه باید فعال و true باشن بجز دستور display_errors!

  • یوشا آل ایوب
۰۵
دی

در این مقاله خلاصه ای درباره مسیریاب ها در شبکه نوشتم. یحتمل اگر کانفیلیکتی (با استاندارد های جدید) مشاهده کردید در بخش نظرات اعلام کنید.

 

فهرست/مندرجات:

  • مقدمه
  • انواع مسیریاب
  • شیوه کار مسیریاب

 

  • مقدمه

در محیط هایی که چندین شاخه شبکه با پروتوکل ها و معماری های متفاوتی وجود دارد، Bridge های ساده، راه مناسبی برای تضمین امنیت و سرعت ارتباطات میان این شبکه ها نیستند! چراکه چنین شبکه پیچیده ای نیاز به دستگاهی دارد که نه تنها اطلاعات آدرسی هر شاخه را بداند، بلکه بتواند بهترین مسیر را برای ارسال داده انتخاب کند; و همچنین امکان فیلتر کردن ترافیک شاخه محلی هم داشته باشد. چنین دستگاهی مسیریاب یا Router نام دارد.

  • یوشا آل ایوب
۲۹
آذر

 

 

نرم افزار Git (گیت) ویندوز دو نوع برنامه داره، یکی Git-BASh و دیگری Git-GUI.

Git-BASh: شبیه محیط Terminal/DOS یا سیاه و سفید هستش که همه فعالیت ها داخلش بکمک دستورات متنی توسط کاربر انجام میشن و معمولاً بر روی نرم افزار BASh یا Command Prompt و نرم افزار OpenSSh/PuTTY سوار هستش.


Git-GUI: شبیه محیط گرافیکی(فرم دار) هستش که همه فعالیت ها داخلش بکمک عناصر گرافیکی(Button, menu, textbox) انجام میشه. ولی در پشت پرده با نرم افزارهایی مثل PERL, OpenSSh/PuTTY, MinGW, BASh, TCL و غیره... در تعامل هستش.

 

فهرست مندرجات:

  • دانلود برنامه Git
  • نصب برنامه Git
  • تنظیم برنامه Git
  • ساخت SSh-Key
    • توسط برنامه PuTTY یا OpenSSh
    • توسط برنامه Git-GUI
  • آپلود SSh-key

  • یوشا آل ایوب
۰۵
آبان

 

سرعت بیشتر با تابع StrToLower:

0.000250101089478
0.000252008438110
0.000259160995483
0.000259160995483
0.000261068344116
0.000263929367065
0.000263929367065
0.000265121459961
0.000269174575806
0.000270128250122

سرعت کمتر با StrIStr:

0.000537157058716
0.000538110733032
0.000538110733032
0.000538110733032
0.000540018081665
0.000542163848877
0.000542163848877
0.000543117523193
0.000550985336304
0.000910043716431

در مواردی مثل:

if (strtolower(&$_SERVER['HTTPS']) == 'on' || @$_SERVER['HTTPS'] == 1 || @$_SERVER['SERVER_PORT'] == 443): return(true);
endif;
و
if (stristr(&$_SERVER['HTTPS']) == 'on' || @$_SERVER['HTTPS'] == 1 || @$_SERVER['SERVER_PORT'] == 443): return(true);
endif;

 

x64 Hardware
32bit OS
PHP 5.4 CLI

  • یوشا آل ایوب
۰۳
مهر

اصطلاح عبارت(Expression) و دستور(Statement) ممکنه که به ظاهر یکی بنظر بیان، اما اشتباه نکنید! اینها تفاوت های اساسی و مهمی دارن.

 

- عبارت یک مقدار را تولید می کند ولی دستور عملی را تکمیل می کند. (یا اثراتی ببار می آورد)
- عبارت میتواند ساده یا مرکب باشد. ولی دستور فقط سادست.
- عبارت شامل چندین قسمت می باشد(عملگر، عملوند علائم نقطه گذاری). ولی دستور شامل یک قسمت هست(یک کلمه لاتین).
- و اینکه عبارت شامل اجزایی هست که دستورات، عملگرها، عملوند ها، متغیر ها، ثوابت و... از آن ساخته می شود. ولی دستور از یک جزو ساخته می شود.

  • یوشا آل ایوب
۱۱
شهریور

 

چند نمونه از توابعی که در php.ini بهتره Disable بشن:

apache_child_terminate,
apache_reset_timeout,
unregister_tick_function,
rpc,
exec,
dl,
show_source,
apache_note,
apache_setenv,
closelog,
debugger_off,
debugger_on,
define_syslog_variables,
escapeshellarg,
escapeshellcmd,
ini_restore,
openlog,
passthru,
pclose,
pcntl_exec,
popen,
proc_close,
proc_get_status,
proc_nice,
proc_open,
proc_terminate,
shell_exec,
syslog,
system,
url_exec

 

نکته: این توابع باید در قسمت disable_functions در فایل php.ini قرار بگیرن.

توجه: در سیستم های local اگر از برنامه Composer یا pickle استفاده می کنید نباید توابع escapeshellarg, exec, passthru رو غیرفعال کنید. اگر از برنامه PHPMD استفاده می کنید نباید تابع proc_open و ini_restore رو غیرفعال کنید. و اگر از برنامه PHPCS استفاده می کنید نباید تابع proc_get_status و proc_close رو غیرفعال کنید.

  • یوشا آل ایوب
۰۲
مرداد

/**
 * A hack to support __construct() on PHP 4
 * Hint: descendant classes have no PHP4 class_name() constructors,
 * so this constructor gets called first and calls the top-layer __construct()
 * which (if present) should call parent::__construct()
 *
 * @return Object
 */
function object()
{
    $arguments = func_get_args();

    if (method_exists($this, '__destruct')) register_shutdown_function(array(&$this, '__destruct'));

    call_user_func_array(array(&$this, '__construct'), $arguments);
}

https://github.com/felixge/raleigh-workshop-08/blob/master/application/cake/libs/object.php

  • یوشا آل ایوب
۱۱
تیر

 

مقایسه سرعت بین توابع is_array / is_string / is_integer... در مقابل تابع getype

سرعت بیشتر:

$variable = array(1, 2, 3, 4, 5);

if (is_array($variable))
{
    # ...
}

0.00079393386840820
0.00079488754272461
0.00080204010009766
0.00080204010009766
0.00080204010009766
0.00080204010009766
0.00081205368041992
0.00093293190002441
0.00111198425292970
0.00123190879821780

سرعت کمتر:

$variable = array(1, 2, 3, 4, 5);

if (gettype($variable) == 'array')
{
    # ...
}

0.0013110637664795
0.0013110637664795
0.0013139247894287
0.0013139247894287
0.0013179779052734
0.0013198852539062
0.0013239383697510
0.0013329982757568
0.0014750957489014
0.0018458366394043

 

x64 Hardware
32bit OS
PHP 5.4 CLI

  • یوشا آل ایوب
۲۹
خرداد

 

این پس زمینه رو برای لینوکس Slackware طراحی کردم... دوسش دارید؟

 

لینک دانلود.

  • یوشا آل ایوب
۲۰
ارديبهشت

قدیمیترین توزیع لینوکسی که کماکان زنده است:

 

Slackware یکی از قدیمیترین و معتبرترین توزیع‌ های لینوکس است که همچنان به صورت فعال توسعه می‌یابد. این توزیع در سال 1993 توسط پاتریک فولکردینگ (Patrick Volkerding) ایجاد شد و به دلیل سادگی، پایداری و وفاداری به فلسفه یونیکس/لینوکس مشهور است.

Slackware یک توزیع تاریخی و محبوب برای علاقه‌ مندان به لینوکس سنتی است که ارزش‌ های سادگی و کنترل manual را حفظ کرده است. اگرچه برای کاربران عادی توصیه نمی‌ شود، اما برای یادگیری عمیق لینوکس و سیستم‌ های قدیمی گزینه‌ای عالی است.

 

وبسایت: www.Slackware.com

سازنده: پتریک وولکردینگ

دانلود: http://mirrors.slackware.com/slackware/slackware-iso یا ftp://ftp.slackware.com/pub/slackware-iso

لیست خبرنامه: majordomo@slackware.com

مستندات: docs.slackware.com

انجمن سوال/جواب: http://linuxquestions.org/questions/f14

تاریخ اولین انتشار: 1993/1372

مناسب برای: Desktop و Server

پروانه: گنو جی پی ال

معماری سخت افزاری: arm, i486, s390, x86_64

محیط های دسکتاپ: Blackbox, Fluxbox, FVWM, KDE, WMaker, Xfce

مدیر بسته: slackpkg

زبان: همه زبانها

نصاب: text UI

مجموعه آفیس: Calligra

سیستم فایل: Ext2, Ext3, Ext4, JFS, ReiserFS, BTRFS, XFS

  • یوشا آل ایوب