سال نـو مـبـارک
<?php switch (1) { case 1: $var = 'Test'; echo ' in case 1 '; break; case 2: if (isset($var)) echo '($var is set)'; echo ' in case 2 '; break; case 3: echo ' in case 3 '; break; } // Result: in case 1 switch (1) { case 1: { $var = 'Test'; echo ' in case 1 '; } case 2: if (isset($var)) echo '($var is set)'; echo ' in case 2 '; break; case 3: if (isset($var)) echo '($var is set)'; echo ' in case 3 '; break; } // Result: in case 1 ($var is set) in case 2 switch (1) { case 1: $var = 'Test'; echo ' in case 1 '; case 2: if (isset($var)) echo '($var is set)'; echo ' in case 2 '; break; case 3: if (isset($var)) echo '($var is set)'; echo ' in case 3 '; break; } // Result: in case 1 ($var is set) in case 2 switch (1) { case 1: $var = 'Test'; echo ' in case 1 '; case 2: { if (isset($var)) echo '($var is set)'; echo ' in case 2 '; } case 3: if (isset($var)) echo '($var is set)'; echo ' in case 3 '; break; } // Result: in case 1 ($var is set) in case 2 ($var is set) in case 3
در PHP، ظاهراً بودن یا نبودن اون گیومه ها {}
هیچ تاثیری در روند اجرای برنامه نداره، بلکه این break
هستش که تعیین کنندست... در حالی که در بیشتر زبانها (مثل java, pawn, c++ و...) می تونه حوزه/scope متغیر ها رو داخل هر case
تعیین کنه.
توضیح رسمی C99 درباره دستور switch
:
البته این یه نکته ریزه که هنوز خیلی از برنامه نویس ها ازش مطلع نیستن
من هم بعد از 1-2 ساعت تحقیق متوجه این موضوع شدم، چراکه مستندات خودشون هم به این نکته اشاره نکردن. (تا جایی که گشتم)
اینها چیزی نیستند جز software bundle، که توسط شرکت ها و گروه های نرم افزاری برای یک هدف جمع آوری شدن. و اون هم فراهم کردن بستری سریع و آسون برای برنامه نویسی.
مفهوم ساده Software bundle یعنی تعدادی نرم افزار مستقل که در یک پکیج گردآوری شدن و توسط یک برنامه واحد مدیریت میشن.
این مقاله شامل آموزش نصب و راه اندازی Java + Android + Eclipse هستش.
که البته منظور از Android, پکیج Android SDK هستش، منظور از Eclipse, برنامه Eclipse IDE هستش و منظور از Java, پکیج Java SDK (همون JDK) هست.
فهرست مندرجات:
حافظه مجازی در کامپیوتر، یک آرایه بزرگ طولانی از بیت هستش و این بیت ها به بلوک هایی به نام بایت تقسیم میشن(هر 8 بیت = 1 بایت) و به هر بایت یک آدرس جهت دسترسی اختصاص داده می شه.
در زبانهای برنامه نویسی، وقتی با داده های غیرفیزیکی(مثل متغیر ها، اشیا، توابع و...) کار می کنید، مقدار و آدرس این داده ها در حافظه مجازی ذخیره میشه. در سطح پایینتر، وقتی متغیر محلی(local variable) یا تابعی تعریف و استفاده می کنید مقادیر و آدرسشون در قسمت Stack حافظه مجازی قرار می گیره. ولی با ساخت شی یا اختصاص حافظه بصورت دستی(Dynamic)، مقدار و آدرسشون در قسمت Heap حافظه مجازی قرار میگیره. و نهایتاً همه اینها در سلول های RAM سخت افزاری کامپیوتر بصورت منظم چیده میشن.
فهرست/مندرجات:
1- هنگامی که دستگاه با وضعیت Low-Memory مواجه می شه، متد onStop()
توسط DVM/ART اندروید نادیده گرفته میشه. پس حتی الامکان برنامه و اطلاعات مهمش رو در متد onPause()
finalize کنید و نه در متد onStop()
.
در وضعیت Low-Memory، گاهی استفاده از متد System.runFinalization()
و System.gc()
می تونه کارساز باشه.
2- طبق گفته گوگل، حتی الامکان متد ها رو static
تعریف کنید. اینکار سرعت پردازش رو 15 تا 20 درصد افزایش میده.
3- URLConnection
یا Apache HTTP
؟
طبق گفته ی وبلاگ Jesse Wilson، عضو تیم توسعه DVM، Apache HTTP
در اندروید Froyo و قبل تر باگهای کمتر و بیشترین سازگاری رو داره. درحالی که UrlConnection
در اندروید Gingerbread و جدیدتر باگهای کمتر، امکانات بیشتر، بهینه تر و سازگاری بیشتری رو داره... پس در انتخاب اینها دقت کنید.
init: مخفف initialization، اولین برنامه/process ای هست که در حین بوت سیستم اجرا میشه و تا زمانی که سیستم خاموش بشه بکارش ادامه میده. این برنامه ابتدا عملیات system initialization رو انجام میده و سپس عملیات runlevel initialization رو و اینکارو با خوندن محتوای فایل inittab آغاز میکنه.
برنامه init ابتدا اسکریپت rc.S رو اجرا میکنه تا سیستم رو برای ورود به runlevel
مورد نظر آماده کنه. فایل rc.S وظیفه داره که حافظه مجازی رو فعال کنه، filesystem رو Mount کنه، دایرکتوری var/ رو تمیزکاری کنه، دیوایس های Plug & Play رو آماده سازی کنه، ماژول های Kernel رو بارگذاری کنه(LKM)، پورت های سریال رو پیکربندی کنه و نهایتاً اسکریپتهای System V رو اجرا کنه. بنابراین init آغازگر بیشتر پرورس ها و فرآیندهای اصلی سیستم هستش.
نکته: برنامه init توسط Kernel فراخونده میشه و با پروسس Id 1 شروع بکار میکنه. اگر Kernel قادر به فراخوندنش نباشه، خطای Kernel pantic (یا همون fatal error) رخ میده که باعث متوقف شدن کل پروسه بوت میشه.
runlevel
: تعیین کننده پارامترهای برنامه init و دستورالعملهایی برای تنظیم ترمینال، محیط کاربر، شبکه و اجرای سرویس های اولیه هستش که توسط یک شناسه عددی داخل فایل inittab در مسیر /etc/ تنظیم میشه. و البته این شناسه در هر توزیعی متفاوته!
گوشی که درحال حاضر ازش استفاده می کنم، مدل S111 Spreadtrum ماله شرکت Kenxinda هستش... (چینیه!)
نزدیک به یک ساله که ازش استفاده می کنم و براش برنامه می نویسم.
خب خود گوشی نسخه اندرویدشو زده 4.0.0 ولی من خیلی وقت پیش مشکوک شدم که این گوشی اندرویدش 4 نیست، بلکه 3 یا 2 هه
دیروز که داشتم داخلش فایلگردی می کردم و برنامه های فابریکیشو decompile می کردم متوجه یه سوتی شدم: