یوشا

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

یوشا

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

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

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

 

ابتدا باید بگم استاندارد رسمی برای سبک ها و workflow ها وجود نداره، اما در این مقاله سعی می کنم از تجربیاتم، قوائد همگانی و معمولترین موارد موجود در Atlassian، Kernel و git manpage استفاده کنم...

 

مقالات مرتبط:

دانلود، نصب و راه اندازی Git در ویندوز

ساخت SSh key در ویندوز

ساخت SSh key در لینوکس

کدام پروتکل: //:git یا //:ssh یا //:https

 

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

  • Branch / انشعاب
  • Commit
  • تنظیم / config
  • گوناگون

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

نقل از این صفحه:
 

چنگیز
قتل عام کردن هزاران هموطن نیشابوری به طرزی فجیع، که حتی به سگها و گربه های شهر هم رحم نمیکرد!
آیا او مسلمان بود؟
اسکندر مقدونی
قتل عام هزاران هموطن و تجاوز بیرحمانه سربازانش به دختران و زنان و به آتش کشیدن هرچه برسره راهش بود!
آیا او مسلمان بود؟
هیتلر
قاتل ملیونها انسان بیگناه و باگناه فقط از روی عطش به ریاست، کشورگشایی و نژادپرستی!
آیا او مسلمان بود؟؟
آشوکا (در جنگ کالینگا)
او صدهزار نفر را به قتل رساند!
آیا او مسلمان بود؟
استالین
که به دستورش سربازان روسی هنگام فتح برلین به دومیلیون زن و دختر آلمانی تجاوزکردند...! هنگامی که انگلیسیها به برلین رسیدند افسرها با دیدن دریاچه های مملو از اجساد زنانی که بعد ازتجاوز خودکشی کرده بودند شوکه شدند!
آیا سربازان روسی مسلمان بودند؟
ژوزف استالین
مشهور به "عمو جو" او بیست میلیون انسان را قتل عام کرد که چهارده میلیون نفر آنها فقط از گرسنگی مردند!
آیا او مسلمان بود؟
مائو تسه تونگ (چینی)
او بین پانزده ملیون نفر را قتل عام کرد!
آیا او مسلمان بود؟
جرج بوش
محاصره اقتصادی که توسط جرج بوش در عراق اعمال شد
یک میلیون و دویست هزار کودک در عراق کشته شدند! ولی رسانه ها هرگز این افراد را تروریست نمینامند!
آیا جرج بوش مسلمان بود؟

آیا واقعا مسئله مشکل ساز، اسلام است؟

جنگ جهانی اول: هفده میلیون کُشته (عامل آن غیر مسلمانان)
جنگ جهانی دوم : پنجاه میلیون کشته (عامل آن غیر مسلمانان)
جنگ در بوسنی/ کوزوو، بیش از پانصد هزار کشته (عامل آن غیر مسلمانان)
کشتار در فلسطین، میانمار... که همچنان ادامه دارد (به دست غیر مسلمانان)
در کامبوج 1975، حدود سه میلیون کشته (به دست غیر مسلمانان)
بمباران اتمی ناگاساکی دویست هزار کشته (عامل آن غیر مسلمانان)
جنگ ویتنام، بیش از پنج میلیون کشته (عامل آن غیر مسلمانان)

و هیچیک از سلاحهای کشتار جمعی بدست مسلمانان اختراع نشد.
۲ نظر ۱۳۹۶/۱۱/۳۰
یوشا آل ایوب

 

1- هنگام Multi-thread کردن کدهاتون فراموش نکنید برای دسترسی به اشیاء lazy-initialize(یا همون load on demand) وضعیت نهایی شی باید synchronize باشه تا با مشکل race condition مواجه نشید.

 

2- برای نرمال سازی ستونها و جلوگیری از افزونگی/redundancy داده باید از اصول زیر پیروی کنید:

- هیچ ستونی نباید بیشتر از یک نوع/type داده رو نگهداری کنه. (مثل int + char + float...)

- هیچ ستونی نباید داده های تکراری/مشابه به دیگر ستون ها رو در خودش نگهداری کنه.

- داده هارو در جداول مختلف نگهداری کنید و درصورت لزوم اونهارو توسط کلید خارجی/foreign key بهم متصل کنید.

 

3- جهت افزایش پرفورمنس، همیشه کلاس والد و اینترفیس رو در خطوط قبل از کلاس ارث بر تعریف کنید. در غیراینصورت موتور PHP برای پیدا و پردازش کردن کلاس والد مجبور به انجام عملیات های اضافی خواهد شد. (بر اساس OpCode تولید شده)

interface IData 
{
}

class MyClass implements IData
{
}

نکته: حتی اگر در فایلهای جداگانه تعریفشون می کنید این قائده باز هم باید رعایت بشه.

 

4- یادتون باشه که Dependency Injection نه تنها از طریق Constructor، بلکه از طریق Setter, Interface و Property هم قابل انجامه.

نکته: زمانی از نوع Constructor استفاده کنید که کل کلاس نیازمند اون dependency هستش یا شی dependency نباید در طول life time تغییر بکنه.

 

5- آیا می دونید تابع runkit_function_remove علاوه بر حذف قید تابع(function table)، مقدار حافظه اشغال شده توسط تابع رو هم آزاد می کنه؟

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

 

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

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

php-internals

php internals diagram

لینک Stackoverflow.com

 

یکی از کاملترین و دقیق ترین دیاگرامهای PHP internals موجود در اینترنت هستش

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

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

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

            Slackware Linux wallpaper                                                                 

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

می گویند: 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 هستش و در هر ویرایشگری به محل متفاوتی اشاره میکنه. (مثل VSCode, 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"

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

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