یوشا

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

یوشا

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

یوشا

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

بایگانی
تبلیغات
Blog.ir بلاگ، رسانه متخصصین و اهل قلم، استفاده آسان از امکانات وبلاگ نویسی حرفه‌ای، در محیطی نوین، امن و پایدار bayanbox.ir صندوق بیان - تجربه‌ای متفاوت در نشر و نگهداری فایل‌ها، ۳ گیگا بایت فضای پیشرفته رایگان Bayan.ir - بیان، پیشرو در فناوری‌های فضای مجازی ایران

 

در ادامه مقاله قبلیم که شماره دو "نکات و اصول مهم در برنامه نویسی PHP" بود، در این مقاله شماره سه همین موضوع رو ارائه میدم...

 

1- جهت پشتیبانی از ارث بری چندگانه در PHP میتونید توسط trait ها اون رو شبیه سازی کنید.

trait PHP
{
   public function printPHP()
   {
      echo 'PHP ';
   }
}
trait Java
{
   public function printJava()
   {
      echo 'Java ';
   }
}
trait PHPJava
{
   use PHP, Java;
}
class ProgrammingLanguages
{
   use PHPJava;
}

 

2- اگر در حین کار با Composer یا PHPUnit با خطای module openssl is already installed on Unknown in line 0 مواجه شدید، کافیه اکستنشن openssl رو در PHP.ini غیرفعال کنید:

ویندوز
;extension=php_openssl.dll

لینوکس
;extension=php_openssl.so

۰ نظر ۹۷/۰۸/۱۹
یوشا آل ایوب

(برای بزرگنمایی کلیک کنید)

ُSlackware Linux wallpaper تصویر اصلی این wallpaper مطعلق به من نیست

            Slackware Linux wallpaper                                                                 

 
۰ نظر موافقین ۱ مخالفین ۰ ۹۷/۰۸/۰۵
یوشا آل ایوب

در ادامه مقاله قبلیم که شماره پنج "نکات و اصول مهم در برنامه نویسی Java/Android" بود، در این مقاله شماره شش همین موضوع رو ارائه میدم...

 

1- بهتره همیشه شماتیک :file رو در کلاس WebView رو مسدود کنید.

کلاس WebView قابلیت نمایش صفحات وب در داخل اکتیویتی رو فراهم میکنه، و از اونجایی که دیگر برنامه ها قادرن Intent URI به WebView ایجاد شده بفرستن، پس این امکان رو هم دارن تا بتونن فایل یا آدرس URI آلوده رو در دستگاه بارگذاری کنن...

راه حل:

String _intentUrl = getIntent().getStringExtra("http://blog.ir");

if (!_intentUrl.startsWith("file:"))
{
   loadUrl = _intentUrl;
}

 

2- از انجایی که همه برنامه ها قادرن محتوای logcat رو read کنن، هرگز اطلاعات حساس رو برای دیباگ Log نکنید، مخصوصاً درخواستها و پاسخهای HTTP رو.

 

3- اگر در حین بازکردن برنامه Eclipse با خطای Java was started but returned exit code 13 مواجه شدید، این یعنی مثلاً Java 64bit نصب کردید، درصورتی که Eclipse تون 32bit هستش. یا Java 32bit نصب کردید، درصورتی که Eclipse تون 64bit هستش.

بنابراین باید معماری هردو یکی باشه... مثلاًً هردو 32bit یا هردو 64bit باشن.

نکته: در صورت حل نشدن مشکل با نصب معماری مناسب، فایل eclipse.ini رو که در کنار فایل اجرایی Eclipse تون هست رو باز کنید و بدنبال واژه –vm بگردید... بعد در زیر این واژه مسیر نصب شده Java رو جایگزینش کنید...

و یا برنامه Eclipse رو باز کنید و به مسیر Menu -> Prefecences -> Java -> Installed JREs برید و مسیرنصب شده Java رو بهش بدید...

۱ نظر ۹۷/۰۷/۰۹
یوشا آل ایوب

۹۷/۰۶/۲۳
یوشا آل ایوب

1- همیشه از تابع mysql_tquery() بجای mysql_query() استفاده کنید. تابع mysql_tquery از نوع multi-thread هستش و میزان وقفه/lag در سرور رو بسیار کاهش میده. (عملیات رو بین Thread ها تقسیم میکنه)

 

2- درصورتی که از سیستم های ضد hack/cheat استفاده می کنید، همیشه EnableStuntBonusForAll رو 0 قرار بدید.

در غیراینصورت سرور کاربر رو هکر قلمداد میکنه.

 

3- توسط پلاگین crashdetect میتونید crash های سرور رو ردیابی کنید.

https://github.com/Zeex/samp-plugin-crashdetect

نکته: برای استفاده از این پلاگین در ویندوز، مطعمن بشید که VC++ runtime 2010 - VC10 نگارش x86 و x64 رو نصب دارید.

 

4- همیشه دستورات AddPlayerClass() رو در مختصات مناسب و قابل دسترس تنظیم کنید تا در صورت بروز باگ یا مشکلات شبکه ای(packet lost) کاربر به موقعیت مناسبی teleport بشه.

۰ نظر ۹۷/۰۵/۲۲
یوشا آل ایوب

💡مقایسه سرعت الگوریتم binary search مقابل الگوریتم linear search برای آرایه های مرتب شده(sorted)

(برای آرایه های عددی سنگین)

 

$needle = range(1, 500000);

 

❌ Linear search algorithm

 

function search(array $numbers, $needle)
{
   $_totalItems = count($numbers);

   for ($i = 0; $i < $_totalItems; $i ++)
   {
      if ($numbers[$i] === $needle)
      {
         return TRUE;
      }
   }

   return FALSE;
}

 

📊 نتیجه(ms)
0.031199932098389
0.031199932098389
0.031199932098389
0.031199932098389
0.031199932098389
0.031199932098389
0.031200170516968
0.031200170516968
0.046799898147583
0.046800851821899

 


✅ Binary search algorithm

 

function search(array $numbers, $needle)
{
   $_low = 0;
   $_high = count($numbers) - 1;

   while ($_low <= $_high)
   {
      $_middle = (int) (($_low + $_high) / 2);
      if ($numbers[$_middle] > $needle)
      {
         $_high = $_middle - 1;
      }
      else if ($numbers[$_middle] < $needle)
      {
         $_low = $_middle + 1;
      }
      else
      {
         return TRUE;
      }
   }

   return FALSE;
}


📊 نتیجه(ms)
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0

 

x64 Hardware
32bit OS
PHP 5.6 CLI

کد از کتاب "PHP 7 Data Structures and Algorithms"

۰ نظر ۹۷/۰۵/۰۲
یوشا آل ایوب

در Java چندین کلاس برای نوشتن و خواندن ورودی و فایلهای متنی وجود داره... اما کدام کلاس مناسبتره، کدام سریعتره و کدام نیازهای کاربر رو برطرف میکنه؟

 

  • کلاس BufferedReader

برای خواندن ورودی/فایل stream بصورت خط به خط از نوع string.

دارای بیش از 20 متد public داخلی.

پشتیبانی از متد close() برای بستن file handle.

این کلاس thread-safe هست. (میتوان BufferedReader رو در بین thread ها share کرد)

توانایی خواندن ورودی از System.in (یا stdin)

دارای حافظه buffer با سایز 8 کیلوبایت.

میتواند کلاس FileReader و InputStreamReader رو بعنوان reader در سازنده دریافت کند.

این کلاس synchronized هست.

پیاده سازی شده در JDK 1.1 و جدیدتر.

دارای کمترین system calls و کاملاً بهینه.

در صورت وقوع استثنا IOException اونرو throw میکنه.

عدم پشتیبانی از Encoding بصورت مستقیم.

زیر مجموعه پکیج java.io.

دارای پرفورمنس بالا نسبت به کلاسهای Scanner و FileReader.

توانایی خواندن ورودی فقط با نوع string.

مناسب برای محیط های multi-thread.

مناسب برای خواندن متن/ورودی طولانی بصورت string و خط به خط. (مثل فایلهای log, books)

 

 

  • کلاس Scanner

برای خواندن ورودی/فایل بصورت parse کردن داده های نوع primitive. (مثل int, long, double, string)

دارای بیش از 60 متد public داخلی.

پشتیبانی از متد close() برای بستن file handle.

این کلاس thread-safe نیست. (نمیتوان Scanner رو در بین thread ها share کرد)

توانایی خواندن ورودی از System.in (یا stdin)

دارای حافظه buffer با سایز 1 کیلوبایت.

میتواند کلاس FileReader و BufferedReader رو بعنوان reader در سازنده دریافت کند.

این کلاس synchronized نیست.

پیاده سازی شده در JDK 1.5 و جدیدتر.

دارای system calls پایین و تقریباً بهینه.

در صورت وقوع استثنا IOException اونرو مخفی میکنه.

عدم پشتیبانی از Encoding بصورت مستقیم.

زیر مجموعه پکیج java.util.

دارای پرفورمنس پایین نسبت به کلاسهای BufferedReader و FileReader.

توانایی خواندن ورودی با نوع int, long, string, float...

به دلیل استفاده از regular expression حافظه/CPU بیشتری نسبت به کلاس BufferedReader مصرف میکنه.

مناسب برای خواندن متن/ورودی و parse کردنش توسط delimiter. (مثل فایلهای xml, ini, config, json)

 

  • کلاس FileReader

برای خواندن فقط فایل از نوع string.

دارای 20 متد public داخلی.

پشتیبانی از متد close() برای بستن file handle.

عدم توانایی خواندن ورودی از System.in (یا stdin)

بدون قابلیت buffer.

پیاده سازی شده در JDK 1.1 و جدیدتر.

دارای بیشترین system calls و بسیار کند.

در صورت وقوع استثنا IOException اونرو throw میکنه.

عدم پشتیبانی از Encoding. (درواقع پیشفرض platform رو استفاده میکنه)

زیر مجموعه پکیج java.io.

دارای پرفورمنس بسیار پایین نسبت به کلاسهای Scanner و BufferedReader.

توانایی خواندن ورودی فقط با نوع string.

بهتر است بصورت مستقیم استفاده نشود.

۲ نظر ۹۷/۰۴/۱۶
یوشا آل ایوب

۱- موسسه ی آماری معتبر پیو اعلام‌ می کند اکثریت‌ قاطع آتئیست ها (۹۲ درصدشان) از همجنسگرایی حمایت می کنند همچنین ۸۷ درصد آتئیست ها از سقط جنین قانونی حمایت می کنند:

http://www.pewresearch.org/fact-tank/2016/06/01/10-facts-about-atheists/


۲- بارناگروپ هم اعلام می کند که آتئیست ها تمایل بیشتری به رفتارهای زشت جنسی  و ارتباط جنسی برقرار کردن با همجنس (همجنسگرایی و دوجنسگرایی) دارند!

http://www.barna.com/barna-update/article/5-barna-update/58-practical-outcomes-replace-biblical-principles-as-the-moral-standard


۳- احتمال اینکه افراد لزبین، گی، دوجنسگرا و ترنس ها آتئیست باشند بیش از سایر افراد است.   

https://www.ga*ystarnews.com/article/lgbt-people-more-likely-be-atheist-straights170613/


4- بنیانگذار حکومت آتئیستی _کمونیستی شوروی یعنی لنین یک‌ همجنسباز بوده است و با کمونیست دیگری بنام گریگوری زینوویف روابط جنسی داشته است، این‌ فرد در دوران استالین اعدام شد:

http://www.youtube.com/watch?v=bEzejRkT78A&feature=youtu.be

 

5- ریچارد داوکینز همانند آتئیست های ایرانی گمان‌می کند همجنسگرایی یک‌مسئله ی ژنتیکی است همچنین او در کتاب ژن خودخواهش به مسئله ی جبر ژنتیکی تاکید دارد، درواقع اتئیست های ایرانی و داوکینز با طرفداری از ایده ی غیر علمی ژنتیکی بودن همجنسگرایی میخواهند بگویند چون همجنسگرایی ژنتیکی است پس باید عمل شنیع همجنسبازی درتمام جوامع آزاد شود!

http://anglicansamizdat.wordpress.com/2010/04/26/richard-dawkins-explains-how-the-ga*y-gene-was-preserved/

 

6- فرانک کامنی یکی از مهمترین شخصیتهای جنبش حقوق همجنسگرایان در آمریکا بود. در سال ۱۹۵۷ کامنی از سمت خود در ارتش آمریکا به دلیل همجنس‌گرا بودن اخراج شد، اولین‌باری که بحث آزاد سازی همجنسبازی مطرح شده است توسط این شخص آتئیست بوده است! همچنین با نفوذ وی بوده که APA همجنسگرایی را از لیست اختلال های روانی خارج کرده است.

 

این مطلب در ویکی پدیای انگلیسی هم به چشم می خورد و جای هیچ شکی باقی نمی ماند که این آتئیست ها بوده اند که تمام‌تلاششان را کرده اند تا این عمل شنیع را توجیه و عادی سازی کنند! البته همچنان هم آتئیست ها تمام تلاششان را می کنند تا این عمل زشت را عادی جلوه دهند...


He also worked to remove the classification of homo3xuality as a mental disorder from the American Psychiatric Association's Diagnostic and Statistical Manual of Mental Disorders.
https://en.m.wikipedia.org/wiki/Frank_Kameny

 

منبع: http://instagram.com/_u/naghde_elhad

۱ نظر ۹۷/۰۳/۱۱
یوشا آل ایوب

 

  1. باید مشخصات فنی و قطعات داخلی لپ تاپ رو مناسب با نوع کاریری تون انتخاب کنید. برای برنامه نویسی و کارهای پردازشی: CPU Intel, Hard SSD و برای بازی و کارهای گرافیکی: CPU AMD, VGA AMD
  2. باید لپ تاپ حداقل یک سوکت USB3، یک سوکت HDMI، یک سوکت شبکه و ترجیحاً یک سوکت VGA، یک سوکت SATA  و... داشته باشه.
  3. باید سیم شارژ لپ تاپ بلند باشه.
  4. نباید فاصله کلیدهای F1-F12 از کلید های زیرین کم باشه.
  5. باید لپ تاپ چراغهای status برای hard, power, wifi و... رو داشته باشه.
  6. نباید داخل صفحه مانیتور پیکسل های سوخته داشته باشه. (نقطه های ریز سیاه)
  7. نباید لبه پایین لپ تاپ(محل قرار گیری دست ها) برجسته باشه.
  8. نباید پیچ های پشت لپ تاپ زخم یا خوردگی داشته باشن.
  9. باید فاصله مناسبی بین کلیدهای اصلی کیبورد وجود داشته باشه. (به هم چسبیده نباشن)
  10. نباید محل نصب CPU در زیر محل قرارگیری دست ها باشه.
  11. باید نوع معماری سی پی یو Intel64 یا AMD64 باشه.
  12. درصورت داشتن گارانتی، نباید برچسب ها و هولوگرام های پشت لپ تاپ پارگی یا لکه داشته باشن.
  13. باید RAM لپ تاپ حداقل 4 یا 8 گیگابایت باشه.
  14. باید RAM لپ تاپ از نوع DDR3 یا DDR4 یا بالاتر باشه.
  15. باید عمر باطری حداقل 8 ساعت باشه.
  16. نباید وزن لپ تاپ بیش از حد سنگین باشه.
  17. بهتره RAM لپ تاپ قابلیت ارتقا داشته باشه و fix نباشه.
  18. بهتره که صفحه ی نمایش مات باشه و نور محیط رو انعکاس نده.
  19. بهتره که کلیدهای End, Page UP/Down, Insert, Delete مستقل باشن و ترکیبی نباشن.
  20. بهتره که نوع صفحه نمایش HD یا Full HD باشه.
  21. بهتره که لپ تاپ نوع صدای دالبی هم داشته باشه.
  22. اگر نوع کاربری تون Gaming هست، باید کیبورد لپ تاپ از نوع 4 کلید همزمان باشه.
  23. بهتره صفحه کلید لپ تاپ بدنه تلقی و مجزا نداشته باشه.
  24. بهتره که لپ تاپ کیبورد اعداد هم داشته باشه.
  25. بهتره که کلید های Capslock و Numlock چراغ status داشته باشن.
  26. بهتره که CPU لپ تاپ از نسل های جدید CPU باشه.
  27. بهتره لپ تاپ CD/DVD درایورها رو هم داشته باشه تا مجبور نشید از اینترنت دانلود کنید.
  28. بهتره که سایز مانیتور لپ تاپ حداقل 15 اینچ باشه. (17 اینچ برای برنامه نویسی/طراحی)
  29. نکته: هرچقدر که سایز مانیتور بزرگتر باشه، مصرف باطری هم بیشتر میشه.
  30. بهتره که لپ تاپ با سیستم عامل لینوکس هم سازگار باشه.
  31. اگر از سیستم عاملهای لینوکس استفاده می کنید باید قطعات و درایورها با لینوکس سازگار باشن.
  32. بهتره که باطری لپ تاپ قابلیت جدا شدن داشته باشه. (یعنی در داخل لپ تاپ پیچ نشده باشه)
  33. بهتره که لپ تاپ Webcam هم داشته باشه.
  34. بهتره که لپ تاپ از boot نوع BIOS/Legacy هم پشتیبانی بکنه.
  35. بهتره هارد لپ تاپ SSD باشه.
  36. بهتره که لپ تاپ سیستم بلوتوث هم داشته باشه.
  37. بهتره که لپ تاپ استوک نباشه.
  38. نکته: لپ تاپ استوک به لپ تاپ های دست دومی گفته میشه که پلمپ شون باز شده، استفاده و بعد فروخته شده یا پلمپ شون باز شده اما استفاده نشده و به انبار مرجوع شده.
  39. بهتره بدنه لپ تاپ فلزی نباشه تا در مقابل فرورفتگی و برق اتصال به بدنه ایمن باشه.

 

نکته: Resolution (رزولوشن) به تعداد پیکسل های موجود درون صفحه گفته میشه که بصورت عمودی و افقی در صفحه چیده شدن. در واقع هر چی رزولوشن صفحه نمایش بیشتر باشه، کیفیتش هم بالاتره. رزولوشن  مثل 1024x768 یا 240x320

نکته 2: Screen size (سایز صفحه) به اندازه فیزیکی صفحه نمایش گفته میشه که برحسب اینچ توسط قطر صفحه محاسبه میشه. هرچی بیشتر باشه، اندازه صفحه هم بزرگتره. مثل "15 یا "17

نکته 3: Color depth (عمق رنگ) به مجموع رنگ هایی که صفحه نمایش امکان نمایش شون رو داره گفته میشه. هرچی بیشتر باشه، کیفیت و زیبایی تصاویر هم بیشتر میشه. مثل 32bit یا 16bit

۴ نظر ۹۷/۰۲/۲۴
یوشا آل ایوب

 

کتابخانه OkHTTP

توسط Square تولید شده. مناسب برای Streaming و استفاده General مبتنی بر HTTP. پشتیبانی از POST, GET, UPLOAD. دارای مستندات آموزشی. زیربنای پیشفرض Retrofit و Picasso. یکی از زیربناهای Volley هستش. دارای disk cache. پشتیبانی از conn pooling. از پروتکل SPDY پشتیبانی می کنه. از اندروید 4.4 به بعد بصورت builtin در زیربنای اندروید استفاده شده. پشتیبانی از NewIO و...

 

کتابخانه Retrofit

توسط Square تولید شده. مناسب برای RESTful API / Web Service. پشتیبانی از POST, GET, PUT, DELETE, Multipart. دارای مستندات آموزشی. مبتنی بر کلاینت OkHTTP. دارای disk cache. پشتیبانی از async با کمترین کد. دارای cancellation و retryy برای درخواست ها. پشتیبانی از Dynamic URL. کمی کندتر از Volley اما سریعتر از AsyncTask هستش. دارای مفسر پیشفرض JSON و تبدیلش به POJO بکمک GSON.  پشتیبانی از NewIO. پشتیبانی از فعالیت های background.

 

کتابخانه Volley

توسط Google پشتیبانی شده. مناسب برای استفاده General و کار با تصاویر. پشتیبانی از POST, GET, PUT, DELETE. دارای مستندات آموزشی. دارای کلاینت های OkHTTP, Apache, HttpUrlConnection. دارای memory cache.  پشتیبانی از conn pooling. پشتیبانی از async با کمترین کد. دارای prioritization, cancellation, retrying برای درخواست ها. پشتیبانی از Dynamic URL. کمی سریعتر از Retrofit هستش. پشتیبانی از Image loading. دارای bitmap caching. سازگاری مناسب با activity lifecycle. دارای memory error handing مناسب. هندل کننده duplicate calls. استفاده نسبتاً آسان.

 

البته اگر بدنبال کتابخانه های سبکتر و کوچیکتر HTTP می گردید این گزینه ها هم میتونن انتخاب خوبی باشن:

LoopJ's android-async-http (HttpClient)
http://loopj.com/android-async-http/

Fast-Android-Networking
https://github.com/amitshekhariitbhu/Fast-Android-Networking

jus
https://github.com/apptik/jus

RoboSpice
https://github.com/stephanenicolas/robospice

 

این نکته رو هم در نظر داشته باشید که هرکدوم مزایا و معایب خودشونو دارن و باید درجای مناسبش کتابخانه مناسب رو انتخاب کنید.

۱ نظر ۹۷/۰۱/۰۳
یوشا آل ایوب