یوشا آل ایوب

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

یوشا آل ایوب

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

یوشا آل ایوب

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

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

۱۰ مطلب با موضوع «کامپیوتر :: سخت افزار» ثبت شده است

  • Version چیست

Version یا همون نسخه، مشخصه ای برای دسته بندی وضعیت محصول منتشر شده و [مختصر] شرحی از تغییرات انجام گرفته هستش.

به این معنی که Version یک محصول، بیانگر حال و روز کنونی و مقدار بهبود یافتگی اون محصول هستش... یا حتی آینده ای که در انتظارشه!

مشخصه Version می تونه بصورت عدد، کلمه و تاریخ باشه; یا حتی هر سه:

Major.Minor.Revision/Patch[-/.Build] [ReleaseState] [Architecture[Date] [Time]

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

Virtual File System یا سیستم فایل مجازی

 

Virtual File System(مخفف VFS) یک ساب سیستم مهم در Kernel لینوکس هست که لایه بین filesystem و برنامه های user-space رو تشکیل میده. درواقع همه filesystem ها، با تکیه بر VFS می تونن شناسایی بشن و تبادل اطلاعات کنن. همین مسئله، برنامه های user-space رو قادر کرده که توسط دستورات موجود در VFS برای خواندن و نوشتن در filesystem های گوناگون اقدام کنن:

 

نکته: در اینجا منظور از لایه، همون Abstraction layer و منظور از دستورات، همون System call/SysCall هستش.

نکته 2: البته به برکت wrap های Gnu C Library، کمتر پیش میاد که برنامه user-space نیاز به استفاده از System call داشته باشه.

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

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

 

1- طبق گفته Sun، از دستورات System.runFinalizersOnExit() و Runtime.runFinalizersOnExit() استفاده نکنید، اینها منسوخ و Unsafe اعلام شدن:

JAVA-DOC: Because it is inherently unsafe. It may result in finalizers being called on live objects while other threads are concurrently manipulating those objects, resulting in erratic behavior or deadlock. While this problem could be prevented if the class whose objects are being finalized were coded to "defend against" this call, most programmers do not defend against it. They assume that an object is dead at the time that its finalizer is called. Further, the call is not "thread-safe" in the sense that it sets a VM-global flag. This forces every class with a finalizer to defend against the finalization of live objects!

Joshua Bloch: Never call System.runFinalizersOnExit or Runtime.runFinalizersOnExit for any reason: they are among the most dangerous methods in the Java libraries.

۰ نظر ۹۵/۰۱/۰۸
یوشا آل ایوب
  • مقدمه

حافظه مجازی در کامپیوتر، یک آرایه بزرگ طولانی از بیت هستش و این بیت ها به بلوک هایی به نام بایت تقسیم میشن(هر 8 بیت = 1 بایت) و به هر بایت یک آدرس جهت دسترسی اختصاص داده می شه.

در زبانهای برنامه نویسی، وقتی با داده های غیرفیزیکی(مثل متغیر ها، اشیا، توابع و...) کار می کنید، مقدار و آدرس این داده ها در حافظه مجازی ذخیره میشه. در سطح پایینتر، وقتی متغیر محلی یا تابعی تعریف و استفاده می کنید مقادیر و آدرسشون در قسمت Stack حافظه مجازی قرار می گیره. ولی با ساخت شی یا اختصاص حافظه بصورت دستی(Dynamic)، مقدار و آدرسش در قسمت Heap حافظه مجازی قرار میگیره. و نهایتاً همه اینها در سلول های RAM سخت افزاری کامپیوتر بصورت منظم چیده میشن.

 

ram-stack-heap

 

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

  • حافظه Stack
    • قوائد حافظه Stack​
    • مشکل Stackoverflow
  • حافظه Heap
    • قوائد حافظه Heap
    • Garbage Collector / GC
    • مشکل Memory leak

 

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

برای حل مشکلات ADB گوگل با درایور گوشی بصورت زیر عمل کنید:

  • ابتدا به مسیر نصب شده Android SDK برید.
  • بعد روی برنامه SDK Manager کلیک راست و گزینه Run as administrator رو انتخاب کنید تا برنامه باز بشه.
  • نکته: دلیل Run as administrator بخاطر مسایل دسترسی و نصب ابزارهای اندروید هستش.
  • حالا صبر می کنید تا لیست ابزارها load بشه... بعد روی گزینه Deselect all کلیک کنید.
۰ نظر ۹۳/۱۲/۰۳
یوشا آل ایوب

 

1- هرگز روی سیستمی که کمتر از 2 گیگ RAM داره ویندوز نسخه 64 بیتی نصب نکنید. چون اینکار بیشتر باعث کند شدن ویندوز میشه.

ویندوزهای نسخه 64 بیتی به حداقل 2 گیگ RAM نیاز دارن.

 

2- در حین نصب/setup ویندز(هر نسخه ای)، فقط درایو نصب ویندوز رو پارتیشن بندی کنید و بقیه درایوهارو از داخل خود ویندوز(بعد از نصبش) پارتیشن بندی کنید. اون هم از نوع Logical.

با اینکار پارتیشن های Primary بیشتری براتون باقی می مونه... و برای نصب سیستم عامل دوم و سوم به مشکل نمی خورید.

 

3- هرگز از درایو اصلی ویندوز(که ویندوز روش نصبه) برای ذخیره اطلاعت شخصیتون(مثل عکس، فیلم، موسیقی و...) استفاده نکنید.

اگر مشکل جدی برای ویندوزتون یا این درایو پیش بیاد معمولاً اون اطلاعتتون هم باهاش پاک میشه.

 

4- حل مشکل A disk read error occurred:

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

1- آسیب دیدن RAM باشه
2- به هم ریختن تنظیمات BIOS باشه
3- به هم ریختن کدهای بوت(master boot record) باشه

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

- وارد BIOS بشید(توسط فشرن کلید F2, F8, F12, Esc یا Del هنگام بوت سیستم) و تنظیماتش رو Default / Reset کنید و بعدش Save کنید.

- یا وارد BIOS بشید و تنظیمات اولویت بندی دیوایس بوت(boot order) رو روی هارد دیسکتون قرار بدید.

- یا دیسک ویندوز رو داخل سیستم بذارید و بوت ش کنید. در صفحه Install گزینه Repair computer رو بزنید. در پنجره جدید گزینه Command prompt رو بزنید. حالا بنویسید chkdsk C: /r و Enter کنید تا اسکن کنه.
اگر بعد از اتمام اسکن درست شد که هیچ، اگر نشد همین کار رو انجام بدید اما اینبار بترتیب این دستورات رو بنویسید و Enter کنید:

bootrec /rebuildbcd

bootrec /fixmbr

bootrec /fixboot

- اگر درست نشد، برنامه memtest یا Memory Test رو از طریق منوی بوت یا از داخل BIOS اجرا کنید و نتیجه تست رو ببینید.

 

5- بصورت پیشفرض، ویندوز DLL برنامه های باز و بعد بسته شده رو [بخاطر افزایش سرعت باز کردن مجدد اون برنامه] unload نمی کنه. که اینکار باعث اشغال حافظه و کند شدن ویندوز میشه. برای تغییر این رفتار، دستورالعمل زیر رو انجام بدید:

- ابتدا برنامه RegEdit رو در مسیر X:\Windows\RegEdit پیدا و اجرا کنید.

- سپس به آدرس HKEY_LOCAL_MACHINE -> Software -> Microsoft -> Windows -> CurrentVersion -> Explorer برید.

- حالا بر روی صفحه راست کلیک و گزینه New -> DWORD(X bit) value رو انتخاب کنید. و نامش رو بذارید AlwaysUnloadDLL

- در آخر روی همین گزینه دوبار کلیک و Value data رو 1 قرار بدید.

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

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

  • تعریف UPS
  • انواع UPS

 

  • تعریف UPS

UPS یک منبع تغذیه External و خودکار هست که برق سرور یا سایر دستگاه های شبکه رو هنگام قطع تامین می کنه.

این دستگاه دارای یک منبع تغذیه بدون وقفه هست که می تونه با سیستم عامل ارتباط برقرار کنه و سیستم رو هنگام قطع برق برای مدتی کوتاه روشن نگه داره.
منابع انرژی UPS معمولاً یک باطری قابل شارژ یا ژنراتور هست که موقع قطع برق بلافاصه فعال می شه و برق سیستم رو تولید می کنه.
به تازگی، دستگاه های جدید UPS به کاربر هشدار می دن(توسط ارتباط با پورت به سیستم) که فعالیت ها و داده های خودشون رو ذخیره کنن و سپس سیستم رو خاموش کنه، سپس بعد از طی مدت زمانی(که از قبل تعیین شده) سیستم رو طبق روال عادی غیر فعال می کنه.

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

مسئله Thread و Process دو موضوع نزدیک به هم ولی متفاوت هستن...

 

1- Process مستقل هستش، ولی Thread ها بخشی از یک Process هستن. (یعنی یک Process میتونه چندین Thread بوجود بیاره)
2- هر Process حافظه اختصاصی خودش رو داره، ولی Thread ها از حافظه اشغال شده Process استفاده می کنن. (یعنی Process حافظه خودش رو با Thread به اشتراک میذاره)
3- هر Process شامل یک برنامه و PID انحصاری هستش، ولی هر Thread شامل مجموعه ای از دستورالعمل ها و Stack انحصاری هستش.
4- هر Process یک Task هستش، ولی هر Thread یک Light wight process هستش.
5- Process ها توسط IPC (یا همون Inter-process communication) با یکدیگر ارتباط برقرار می کنن، ولی Thread ها توسط دستورات برنامه نویسی (در PHP و جاوا توسط wait, notify در C توسط pthread_cond_wait, pthread_cond_signal) با یکدیگر ارتباط برقرار می کنن.
6- ساخت Process به سختی توسط duplicate کردن والد انجام میشه، ولی ساخت Thread براحتی توسط کپی شی Thread انجام میشه.
7- برای اجرای چند Process بطور همزمان/parallel به یک سیستم Multi-Process نیاز هست، ولی برای اجرای چند Thread بطور همزمان به دستورات برنامه نویسی نیاز هست.
8- بطور کلی Process توسط CPU کنترل میشه، ولی Thread توسط Process کنترل میشه.
9- هر Process یک Thread main داره، ولی هر Thread فقط خودشه که کارگر/worker صدا زده میشه.
10- Process در فضای separate memory اجرا میشه، ولی Thread در فضای Shared memory اجرا میشه.
و...

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

در این مقاله خلاصه ای درباره مسیریاب ها در شبکه نوشتم. یحتمل اگر کانفیلیکتی (با استاندارد های جدید) مشاهده کردید در بخش نظرات اعلام کنید.

 

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

  • مقدمه
  • انواع مسیریاب
  • شیوه کار مسیریاب

 

  • مقدمه

در محیط هایی که چندین شاخه شبکه با پروتوکل ها و معماری های متفاوتی وجود دارد، Bridge های ساده، راه مناسبی برای تضمین امنیت و سرعت ارتباطات میان این شبکه ها نیستند! چراکه چنین شبکه پیچیده ای نیاز به دستگاهی دارد که نه تنها اطلاعات آدرسی هر شاخه را بداند، بلکه بتواند بهترین مسیر را برای ارسال داده انتخاب کند; و همچنین امکان فیلتر کردن ترافیک شاخه محلی هم داشته باشد. چنین دستگاهی مسیریاب یا Router نام دارد.

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

 

در این مقاله(ها) قصد دارم برنامه نویسی هسته لینوکس 2 و 3 رو آموزش بدم.

اول برخی از اصول سیستم عامل و هسته لینوکس(از جمله Version های هسته، دانلود سورس، ساختمان دایرکتوری سورس، چگونگی نصب، Patch کردن، پیکربندی و Compile) رو معرفی می کنم و بعد به مباحث پیشرفته و برنامه نویسی(از قبیل تفاوت بین kernel-space و User-space، سازه های برنامه نویسی استفاده شده در هسته، Process ها، System-call ها، ساختمان داده هسته، Interrupt handler ها، همگاه سازی، مدیریت Time، مدیریت حافظه، سیستم فایل و خروجی/ورودی) می پردازم.

در این بین از کتابهای Advanced Linux programming، Linux Advanced Administration و Linux Kernel Development هم بهره ای می گیرم.
 

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

  • تعریف سیستم عامل
  • انواع معماری سیستم عامل
  • تعریف هسته
  • انواع معماری هسته

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