یوشا

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

یوشا

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

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

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

می گویند: 1400 سال است که مسلمانان یکدیگر را می کشند، اما بی خدایان در حال اختراع کردن هستند

این جمله مزخرفی بیش نیست، دین مانعی برای اختراع کردن ندارد بلکه بزرگترین دانشمندان و مخترعین دنیا دیندار و معتقد بودند

 

1- بی خدایان همه ۱۴۰۰ سال اخیر را پیشرفت نداشتند و تا حدود ۵۰۰ سال پیش، در اوج فقر فکری و علمی بودند


2- مسلمانان با تکیه بر تعالیم الهی در بهره گرفتن از عقل و دانش، بیش از هزار سال پرچمدار پیشرفت و ترقى جهان بودند و دیگران از جمله بی خدایان، دانش خود را از مسلمانان می گرفتند

شیخ ابو علی سینا، عباس بن فرناس، جابرابن حیان شاگرد امام صادق، خوارزمی، عبد اللطیف، ابن الهیثم، کرجی، عمر خیام، غزالی، الکیندوز، فارابی، ابوکامل مصری، پروفسور سمیعی، پروفسور مهدی گلشنی و...
http://yon.ir/1400s1 


3- جنگ مخصوص مسلمانان نیست و اتفاقاً بی خدایان بیشتر گرفتار جنگ بوده اند. فقط تعداد کشته های جنگ جهانی دوم که در اروپا اتفاق افتاد از همه کشته های خاورمیانه در این ۱۴۰۰ سال بیشتر است. بیش از 60 میلیون نفر

https://en.wikipedia.org/wiki/World_War_II_casualties
http://yon.ir/1400s2


4- درگیری های خاورمیانه به خاطر دینداری مردمش نیست، بلکه کشورهای استعمارگر و مستکبر برای منافع خود، چند قرن است که اختلاف، تجزیه طلبی و جنگ را در آن ترویج می دهند
http://yon.ir/1400s3
http://yon.ir/1400s4


5- کشتن هیچ بیگناهی در اسلام روا نیست و کیفر اخروی و قصاص در دنیا را در بر دارد! آنچه در قرآن و سنت پیامبر درباره جنگ آمده، همگی ناظر به جنگ با کافران حربی، آنهم در معرکه جنگ است
http://yon.ir/1400s5


6- اسلام هرجا جنگی رخ ‌دهد، گروه متجاوز را محکوم و گروهی که از خود دفاع می‌کند را مورد تحسین قرار می دهد  (حج: ۳۹ و ۴۰)
http://yon.ir/1400s6


7- همه غربیها بی خدا نیستند بلکه در آمریکا 80% مردم معتقد به خدا هستند. نسبت دادن همه پیشرفت های علمی به بی خدایان دروغ است چراکه پاسکال، گالیله، نیوتن، پاستور و... همه معتقد به خدا و دین الهی بوده اند

 

منبع: http://shayeaat.ir

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

 


CLASSPATH: یک متغیر در Environment variables و حاوی کتابخانه و dependency هایی هستش که هنگام Run-time و Compile-time مورد استفاده برنامه های جاوا قرار میگیره.

این متغیر برای استفاده System ClassLoader ماشین Java طراحی شده و حاوی کلاسهای کامپایل شده bytecode(در Java با پسوند class یا JAr) و کلاسهای کامپایل شده nativecode(در C با پسوند o. یا obj.) هستش. درواقع CLASSPATH بخشی از پکیج پلتفرم Java هستش و به برنامه java یا javac اعلام میکنه که کلاسهای کامپایل شده در کجا قرار دارن.

بصورت پیشفرض، محل فیزیکی CLASSPATH به پوشه "جاری پروژه" و پوشه lib در JDK/JRE نصب شده اشاره میکنه. اما اگر بخوایید میتونید این مسیر رو تغییر بدید.

نکته: با اضافه کردن کتابخانه به محل فیزیکی CLASSPATH، کتابخانه مورد نظر در تمام پروژه ها (system-wide) در دسترس قرار میگیرن، لیکن بصورت Relative link.

توجه: هرگز بصورت دستی مسیرهای jre/lib و jre/lib/ext رو داخل متغیر CLASSPATH اضافه نکنید، این مسیرها توسط ماشین جاوا بصورت خودکار پیمایش خواهند شد.

نکته: مقدار متغیر CLASSPATH میتونه توسط پارامتر -cp در برنامه java و javac یا پراپرتی Class-Path در فایل manifest.mf تغییر پیدا کنه. اما در نهایت پراپرتی Class-Path نسبت به متغیر CLASSPATH و پارامتر -cp اولویت داره! یعنی Class-Path property > CLASSPATH > -cp

نکته 2: در صورت وجود یک کتابخانه تکراری در همه مسیرهای موجود در متغیر CLASSPATH، همیشه اولین مسیر انتخاب خواهد شد.

نکته 3: تنظیمات متغیر CLASSPATH در برنامه IntelliJ IDEA در مسیر File -> Project structure -> Global libraries قرار داره و در برنامه Eclipse در مسیر Preferences -> [Java/C] -> Build path -> Classpath قرار داره.

 

 تشریح ClassNotFoundException و NoClassDefFoundError:

- مشکل ClassNotFoundException: از نوع Exception هستش و زمانی پرتاب میشه که ماشین جاوا بصورت Dynamic سعی در load کردن کلاس موردنظر حین Run-time از مسیر CLASSPATH کنه اما نتونه پیداش کنه.

- مشکل NoClassDefFoundError: از نوع Error هستش و زمانی بوجود میاد که کلاس موردنظر در مسیر CLASSPATH حین Compile-time وجود داره اما حین Run-time وجود نداره.

 

 

Build path: مسیری هست که برای تولید/compile پروژه طراحی شده، حاوی سورس ها و کتابخانه های پروژه هستش، بخشی از workspace ویرایشگر هستش، به ویرایشگر/IDE اعلام میکنه که فایلهای سورس پروژه در کجا قرار دارن... این مسیر مخصوص ویرایشگر/IDE هستش و در هر ویرایشگری به محل متفاوتی اشاره میکنه. (مثل VS, Eclipse, IntelliJ IDEA, Borland...)

 

 

Include path: مسیر هست که برای parse کردن فایلهای پروژه طراحی شده، میتونه حاوی فایلهای header، سورس یا inc باشه، کد completion ویرایشگر رو اعمال میکنه و کلاً برای پیدا کردن محتوا و منابع استفاده شده در پروژه هستش.
نکته: در Include path آدرس های path داده شده باید بصورت relative باشن تا بتونن توسط IDE پردازش بشن. (relative path = ./file.jpg, absoloute path = c:\www\root\test\file.jpg)

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

 

این دیاگرام رو درست کردم تا روند(internals) کامپایل، تولید و اجرای برنامه های جاوا رو نشون بده:
 

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

JNI, JVM internal, Class Loader, Execution Engine

Java internals, Java structure, JVM internals, ساختار جاوا، ساختمان جاوا
یکی از کاملترین و دقیق ترین دیاگرامهای Java/JVM internals  موجود در اینترنت هستش

اطلاعات بیشتر:

http://blog.jamesdbloom.com/JVMInternals.html

https://dzone.com/articles/understanding-jvm-internals

https://www.cubrid.org/blog/understanding-jvm-internals/

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

💡 مقایسه سرعت الگوریتم 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"

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

۳ نظر ۹۶/۰۳/۲۲
یوشا آل ایوب

 

ظاهراً در PHP هرچیزی بعد از دستور exit بصورت ناقص(؟) پردازش میشه ولی بصورت کامل حافظه مورد نیازش رو allocate میکنه...

 

خروجی یک صفحه ساده:

<?php

echo memory_get_usage();

// 217992

 

خروجی یک صفحه متغیر دار ولی exit شده:

<?php

echo memory_get_usage();

// 220552

exit; // <---------- !!

$simpleVar = 'abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabbcdabc​dabcdabcdabcdabcdabcd';
$simpleVar .= '​abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabbcdabc​dabcdabcdabcdabcdabcd';
$simpleVar .= '​abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabbcdabc​dabcdabcdabcdabcdabcd';
$simpleVar .= '​abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabbcdabc​dabcdabcdabcdabcdabcd';
$simpleVar .= '​abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabbcdabc​dabcdabcdabcdabcdabcd';
echo $simpleVar; 

enlightened

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

من خودم رای باطله انداختم، اما:

 

 

۰ نظر ۹۶/۰۲/۳۰
یوشا آل ایوب

مسله indentation در کدنویسی جزییه و بیشتر شخصیه... ولی گفتن نکاتی درموردش خالی از لطف نیست

اول اینکه بیشتر Coding-style های موجود در اینترنت بروزرسانی نمیشن یا برای ویرایشگرها و مانیتورهای قدیمی طراحی شدن... یا حتی ناقص هستن! دوم اینکه چقدر خوب بود اگر مرجع رسمی براشون وجود داشت تا یک الگو، الگوی همگان میشد. نه اینکه هر شرکت و تیمی سبک انحصاریش رو طراحی و تعیین کنه و اسمشو بذاره قرارداد/convention رسمی

فکر کنید برنامه نویسایی که با دو یا چند زبان مختلف برنامه نویسی میکنن، برحسب عادت چقدر براشون سخته که از قوائد مختلف پیروی کنن...

Tab:

  • سایزش در هر ویرایشگر و کامپیوتری متفاوته. (در یکی به اندازه 3 فاصله، در دیگری 4 در دیگری 5 و...)
  • میشه گفت Dynamic هستش و سایزش براحتی با تنظیم کردن سیستم/ویرایشگر قابل تبدیله.
  • در بعضی از پرینترها نادیده گرفته میشه، درنتیجه قالب کدها بهم میریزه.
  • Tab با سایز 3، یک کاراکتره.
  • معمولاً حذف و اضافه کردن Tab زمان کمتری صرف میکنه.
  • فلسفه وجود Tab برای tabulation/جدول بندی و پرش هستش.
  • در صفحات استاتیک وب، Tab پرفورمنس (جزیی) بالاتری در Load شدن داره. 
  • برای indentation کردن کلیدکمتری لازمه تا فشار داده بشه. (مگر ویرایشگرهای حرفه ای)
  • در بعضی از ویرایشگرهای تحت وب هنگام copy/paste نادیده گرفته میشه.
  • همتراز/Alignment کردن توسط Tab بهتر انجام میشه.

Space:

  • اندازش در همه ویرایشگرها و کامپیوتر ها ثابته.
  • میشه گفت Static هستش و معمولاً سایزش توسط تنظیمات قابل تبدیل نیست. (مگر ویرایشگرهای حرفه ای)
  • در همه پرینترها اعمال میشه، پس قالب کدها بهم نمیریزه.
  • Space با سایز 3، 3 کاراکتره.
  • معمولاً حذف و اضافه کردن Space زمان بیشتری صرف میکنه.
  • فلسفه وجود Space برای قراردادن فضای خالی هستش.
  • در صفحات استاتیک وب، Space پرفورمنس (جزیی) پایینتری در Load شدن داره. 
  • در هیچ کدوم از ویرایشکرهای تحت وب هنگام copy/paste نادیده گرفته نمیشه.
  • برای indentation کردن کلید بیشتری لازمه تا فشار داده بشه. (مگر ویرایشگرهای حرفه ای)
  • همتراز/Alignment کردن توسط Space سخت تر انجام میشه.

پیشنهاد من: SPACE با سایز 3 کاراکتر

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

1- فراموش نکنید که مقدار صفت android:updatePeriodMillis در تگ <appwidget-provider فایل xml/widget_info.xml بیانگر تایمری هست که کالبک onUpdate کلاس ویدجت صدا زده میشه.

 

2- در metadata ویدجت، مقدار صفت android:minHeight و android:minWidth تعیین کننده حداقل اندازه ویدجت هستش که باید 72dp (یعنی 1x1) باشه. ولی صفت android:layout_width و android:layout_height در layout ویدجت، تعیین کننده اندازه کنونی ویدجت هستش.

 

3- از انجایی که List متدی برای اضافه کردن عنصر نداره و سایزش هم ثابت هست، برای تبدیل Array به ArrayList باید به این روش عمل کنید:

ArrayList<String> _arrayList = new ArrayList<String>(Arrays.asList(myArray));

 

4- برای چک کردن وجود یک مقدار در آرایه کافیست به این صورت عمل کنید:

Arrays.asList(myArray).contains(targetValue);

 

5- نکته جزیی: فراموش نکنید که HashMap در جاوا در واقع همون data structure هستش و نه آرایه!

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

به نقل از روحانی "سید مهدی صدر ساداتی":

 

دوستی گفت: من از تازی(عرب) بدم میاد!! ما از نسل کوروشیم، منشور کوروش را خوانده ای؟

گفتم: کوروش آدم خوبی بوده؟

گفت: بله

گفتم: کوروش بین افراد جامعه تبعیض نژادی قائل میشد؟

کمی مکث کرد و چاره ای نداشت که بگوید: نه

گفتم: پس تو چرا اینطور شدی؟

 

 
۴ نظر ۹۵/۱۲/۱۴
یوشا آل ایوب