یوشا

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

یوشا

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

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

طبقه بندی موضوعی
۰۶
۱۳۹۳/۰۲

 

بطور خلاصه، اساس کار SSh-Key مبتنی بر رمزنگاری بر کلید عمومی هست. به این صورت که شما دو کلید ایجاد می کنید: یکی کلید عمومی(public key) و دیگری کلید خصوصی(private key). که در اینجا کلید عمومی نقش قفل رو داره و کلید خصوصی نقش کلید!

 

شما می تونید کلید عمومی(public key) خودتون رو به هر کسی بدید یا در هر جایی قرار بدید... چراکه تنها عملکردش رمزی کردن داده هاست و هیچ کارایی دیگه ای نداره. پس چیزی هم شما رو تهدید نمی کنه. کلید دیگه، کلید خصوصی هه(private key)، که شما نباید اون رو به کسی بدید! و عملکردش رمزگشایی داده هاست. (داده های رمزگذاری شده توسط کلید عمومی)

شیوه تعامل این دو کلید به این صورته که:

1- سرور/remote یک پیام کوتاه رو توسط کلید عمومی شما [که قبلاً بهش داده بودید رو] رمزگذاری و اون به کامپیوتر شما ارسال میکنه.

2- کامپیوتر شما، این پیام رمزگذاری شده رو دریافت و با کلید خصوصی شما اون رو رمزگشایی میکنه و اون رو به سرور/remote ارسال می کنه.

3- در نهایت، سرور/remote هویت شما رو [از نظر مالک کلید خصوصی] شناسایی میکنه و بلافاصله دسترسی های لازم رو به شما اعطا می کنه. بهمین سادگی!

 

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

  • دریافت برنامه
  • ساخت SSh-Key
  • آپلود SSh-Key

  • یوشا آل ایوب
۰۷
۱۳۹۳/۰۱

این کدهای مخفی اندروید (معروف به USSD Codes یا Android Secret Codes) دستوراتی هستند که به کاربران اجازه می‌ دهند به منوهای مخفی، تست‌ های سخت‌افزاری و تنظیمات سیستمی گوشی دسترسی پیدا کنند. این کدها معمولاً توسط توسعه‌ دهندگان و تعمیرکار ها استفاده می‌ شوند، اما برخی از آن‌ ها برای کاربران عادی هم مفید هستند.

 

تأثیرات متفاوت

برخی کدها فقط اطلاعات نمایش می‌ دهند (مثل *#*#4636#*#* برای جزئیات باتری).

برخی دیگر تنظیمات را تغییر می‌ دهند (مثل *#*#7594#*#* برای رفتار دکمه پاور).

!! تعدادی از آن‌ ها داده‌ ها را پاک می کنند یا Reset factory انجام می‌ دهند (مثل *2767*3855# که تمام داده‌ ها را حذف می‌کند!).

بنابر این احتیاط ضروری است.

 

برای استفاده از این کدها برنامه "Contact" گوشی رو باز کنید و کد رو بدقت وارد کنید:

 

کد توضیحات
*#*#4636#*#* Display information about Phone, Battery and Usage statistics
*#*#7780#*#* Restting your phone to factory state-Only deletes application data and applications
*2767*3855# It’s a complete wiping of your mobile also it reinstalls the phones firmware
*#*#34971539#*#* Shows completes information about the camera
*#*#7594#*#* Changing the power button behavior-Enables direct poweroff once the code enabled
*#*#273283*255*663282*#*#* For a quick backup to all your media files
*#*#197328640#*#* Enabling test mode for service activity
*#*#232339#*#* OR *#*#526#*#* Wireless Lan Tests
*#*#232338#*#* Displays Wi-Fi Mac-address
*#*#1472365#*#* For a quick GPS test
*#*#1575#*#* A Different type GPS test
*#*#0283#*#* Packet Loopback test
*#*#0*#*#* LCD display test
*#*#0673#*#* OR *#*#0289#*#* Audio test
*#*#0842#*#* Vibration and Backlight test
*#*#2663#*#* Displays touch-screen version
*#*#2664#*#* Touch-Screen test
*#*#0588#*#* Proximity sensor test
*#*#3264#*#* Ram version
*#*#232331#*#* Bluetooth test
*#*#7262626#*#* Field test
*#*#232337#*# Displays bluetooth device address
*#*#8255#*#* For Google Talk service monitoring
*#*#4986*2650468#*#* PDA, Phone, Hardware, RF Call Date firmware info
*#*#1234#*#* PDA and Phone firmware info
*#*#1111#*#* FTA Software version
*#*#2222#*#* FTA Hardware verion
*#*#44336#*#* Displays Build time and change list number
*#06# Displsys IMEI number
*#*#8351#*#* Enables voice dialing logging mode
*#*#8350#*#* Disables voice dialing logging mode
##778 (+call) Brings up Epst menu
  • یوشا آل ایوب
۱۸
۱۳۹۲/۱۲

 

پایگاه داده MySQL بدلیل کارایی(performance) بسیار بالایی که داره قادره از انواع(type) مختلف Engine پشتیبانی کنه که هر کدوم برای کاربرد های خاصی طراحی شدن... در ادامه به بررسی کلی انواع این موتورها میپردازیم:

  • نوع MyISAM
  • نوع InnoDb
  • نوع Memory
  • نوع Archive
  • نوع BerkeleyDb
  • نوع Example
  • نوع Merge

  • یوشا آل ایوب
۲۲
۱۳۹۲/۱۱

 

نکاتی راجب 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

  • یوشا آل ایوب