سادگی زیباست...

بررسی انواع معماری های سیستم عامل و برنامه های سیستمی و روشهای توسعه آنها

سادگی زیباست...

بررسی انواع معماری های سیستم عامل و برنامه های سیستمی و روشهای توسعه آنها

سادگی زیباست...

۲۶ مطلب با موضوع «آموزشهای عمومی» ثبت شده است

با سلام

متاسفانه خیلی از شرکتهایی که در داخل آمریکا فعالیت دارند، شامل قوانین تحریمی آمریکا هستند. شرکتهایی مثل اینتل، انویدیا، ادوبی، داکر و این اخیرا تیم ویوور. برای مثال وقتی به سایت اینتل میرین که برنامه نصب درایور کارت شبکه رو برای لینوکس دانلود کنین و فایل رو میزنین که دانلود بشه، این صفحه براتون نمایش داده میشه. حالا این فایل رو دانلود کنین میبینین که ریپوزیتوری هم برای ایران تحریم هست.تو کار کردن با داکر هم مشکلات زیادی برای دانلود ایمیج ها هست.

تو ویندوز راههای زیادی هست برای این مشکل. بیشتر سرویس دهنده های وی پی ان برای ویندوز هم کلاینت مخصوص دادن. مثل هات اسپات شیلد. بیشتر فایلها هم تو سایت های فارسی راحت پیدا میشن.

یه راه استفاده از سرویس های وی پی ان هست که بهترینشون openVPN هست. ساید vpnbook یه وبسایت آزاد و رایگان هست که سرویسهای رایگان وی پی ان تو کشورهای زیادی ارائه میده. برای رد کردن تحریم تو لینوکس میتونین از این سرویسها استفاده کنین.

اول یکی از فایلهای زیر رو دانلود کنین (فایلهای جدید آپلود میشن) (بعضی از سرورها کلا آدرسون بسته هست)

برای مثال VPNBook.com-OpenVPN-Euro1.zip

http://bayanbox.ir/info/5264899397723590485/VPNBook.com-OpenVPN-DE1

http://bayanbox.ir/info/6132503210019860653/VPNBook.com-OpenVPN-Euro1

فایلها رو اکسترکت کنین

unzip VPNBook.com-OpenVPN-Euro1.zip

وارد پوشه بشین

cd VPNBook.com-OpenVPN-Euro1

دستور زیر رو بزنین

sudo openvpn --config vpnbook-euro1-tcp443.ovpn    

نام کاربری و پسوورد زیر رو استفاده کنین

user: vpnbook
pass: xETHec5x
۰ موافقین ۰ مخالفین ۰ ۰۸ آذر ۹۵ ، ۱۸:۰۴
حامد شیخلو

سلام

بعضی وقتا نیازه که از ساختار خام یه ذخیره ساز یه پشتیبان داشته باشیم. تو سیستم عامل لینوکس این کار رو با برنامه dd میشه انجام داد. با استفاده از این نوع ایمیج گرفتن، ساختار پارتیشن ذخیره ساز هم حفظ میشه. فرض کنین بخوایم از یه فلش ایمیج بگیریم. اول باید ببینیم که تو شاخه /dev، فلش ما به چه اسمی شناخته شده. فرض کنین شده /dev/sdc. با دستور زیر میشه ایمیج از یه فلش ذخیره کرد.

sudo dd if=/dev/sdc of=<image file name>

برای رستور کردن ایمیج هم میشه دستور زیر رو استفاده کرد:

sudo dd if=<image file name> of=/dev/sdc

حالا یه مساله

فرض کنین میخوایم از ایمیجی که گرفتیم، یه داده رو بخونیم. مثلا یه فایل رو. تو این حالت یا باید ایمیج رو برگردونیم تو یه فلش یا اینکه مانت کنیم تو یه پوشه مشخص. روش اول که حامبالیه، پس روش دوم رو استفاده میکنیم

ااصالتا یه ایمیج خام، ساختار کل فضا رو ذخیره میکنه. مثلا وقتی یه دیسک ۱۶ گیگ، ۱ گیگ داشته باشه، بازم فایل ایمیش میشه ۱۶ گیگ. و یه مساله دیگه، پارتیشن ها هم تو دیست جای جداگانه میگیرن.
پس وقتی بخواین یه ایمیج رو مانت کنین، باید بگین کدوم پارتیشن داخل ایمیج. برای دیدن پارتیشن های داخل یه ایمیج از دستور fdisk استفاده کنین:

fdisk <image file name>

بعد کلید p رو بزنین تا ساختار پارتیشن رو نشون بده:

Command (m for help): p

Disk image_8_11_94.img: 15.7 GB, 15720251392 bytes
255 heads, 63 sectors/track, 1911 cylinders, total 30703616 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000f2868

Device Boot Start End Blocks Id System
image_8_11_94.img1 * 2048 133119 65536 c W95 FAT32 (LBA)
image_8_11_94.img2 133120 21233663 10550272 83 Linux

Command (m for help):

میبینین که تو ایمیج مثال، دو تا پارتیشن وجود داره. من میخوام دومی رو مانت کنم. عدد مهم تو این اطلاعات، عدد زیر start هست. این عدد مشخص کننده بلاک شروع پارتیشن هست. هر بلاک هم بر اساس خروجی دستور ۵۱۲ بایت هست. خب پس باید تو فایل به اندازه start * block size جلو بریم تا به محل پارتیشن مورد نظر برسیم. پس برای مانت کردن دستور زیر رو مینویسیم (از fdisk با زدن کلید q خارج میشیم)

sudo mount image_8_11_94.img /media/test/ -o offset=68157440

اگر تو مانت کردن به نوع پارتیشن خطا داد، با سویچ -t نوع پارتیشن رو مشخص کنین

۰ موافقین ۰ مخالفین ۰ ۱۰ بهمن ۹۴ ، ۱۶:۵۹
حامد شیخلو

یه مشکلی که معمولا تو لینوکس های اوبونتو و تقریبا تمامی توزیع هایی که از مدیریت بسته apt-get استفاده میکنن به وجود میاد، عدم نصب برنامه ها و خطای ۴۰۴ هست. مشخصا این خطا به دلیل عدم امکان دانلود برنامه یا نیازمندیهای اون از سرورهاست. حالا بعضی وقتها به دلیل تحریم اون طرف آب که نمیزارن دانلود کنیم و بعضی وقتها به دلیل تحریم از داخل کشور :).

خوشبختانه لینوکس اوبونتو چندین ریپوزیتوری (منبع) داره که برنامه ها رو میشه از اونها دانلود کرد. تو این شرایط باید ریپوزیتوری که داره استفاده میشه رو تغییر داد.

تو لینوکس اوبونتو روند زیر رو انجام بدین:

۱. ابتدا برنامه Software & Updates رو باز کنین

۲. گزینه other رو از download from  انتخاب کنین

۳. گزینه select best server رو انتخاب کنین و بزارین خودش مورد مناسب رو پیدا بکنه

۴. گزینه choose server رو انتخاب کنین.

۰ موافقین ۰ مخالفین ۰ ۱۶ آبان ۹۴ ، ۱۳:۲۳
حامد شیخلو

سلام

برای کار با یک سروری نیازمند نصب زبان برنامه نویسی ruby و یه ماژول روی اون بودم. نصب ماژول روی ویندوز راحت هست، باید بریم به وبسایت روبی و rubyinstaller رو دانلود کنیم. اینم لینک دانلود:

http://rubyinstaller.org/downloads/

توجه: موقع نصب، تیک زیر رو بزنین که بتونین راحت از کامند لاین بتونین اجرا کنین.

بعد از نصب، با اجرای دستور زیر میتونین جم های جدید نصب کنین:

gem install "package"

تو سیستم من این خطا رو داد، که ظاهرا زیاد هم به وجود میاد:

روش حل این خطا، دستور زیر هست:

chcp 1252

این دستور کد پیچ کیبورد رو میتونه عوض بکنه. تو پست بعدی انشاا... تجربه خودم رو از openShift مینویسم.

خطای دوم:

اگر با خطای مشابه زیر زمان فرمان پیکربندی rhc مواجه شدین

C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- dl/import (LoadError)
        from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'

بسته زیر رو نصب کنید:

gem install net-ssh -v 2.9.3.beta1
۰ موافقین ۰ مخالفین ۰ ۰۵ خرداد ۹۴ ، ۲۰:۱۲
حامد شیخلو

سلام

پایان‌نامه خودم رو دارم با لاتک مینویسم و خیلی هم از این کارم راضی هستم. اونایی که با وورد اومدن و داکیومنت طولانی یا مقاله نوشتن میدونن که عذابی هست بسیار علیم. همون یه مقاله که با وورد نوشتم کل جد و آبادم رو اورد جلو چشمام. خود وورد یه منو داره برای زمانهایی که تگهای اضافی تولید میکنه، بیاد پاکشون بکنه. خودشون هم میدونن بعضی وقتا گند میزنه :). البته از حق نگذریم، بلاشک بهترین مجموعه ویرایش متن هست، خودشم با فاصله بسیار زیاد از رقبا.

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

تا همین چند وقت پیش از texMaker استفاده میکردم. ابزار خیلی خوبی بود، اما زیاد با یه ادیتور ساده فرق نداشت. چند تا امکانات اولیه داشت که کار رو ساده تر میکرد. بعدش با texStudio آشنا شدم. اولش به خاطر شلوغ بودنش زیاد به دلم نچسبید، اما بعدش که تو لینوکس نصبش کردم و باهاش کار کردم، واقعا از کارش لذت بردم. خیلی از کارای روتین اما سخت رو مثل ساختن جداول رو آسون کرده. منابع رو هر جایی میخواین اضافه کنید به صورت پاپ آپ توضیحاتش رو میاره. و یه امکان خیلی خوب، کامپایل کامل چند بخشی داره. تو لاتک مثلا اگر بخواین مراجع رو هم داشته باشین، باید ۳ بار کامپایل انجام بدین. یه بار خود ساختار مستند، بعدش مراجع رو با بیبتک و یه بار کل مستند. این کار زمان بر هست. اما texStudio یه امکان خوب داره که همه قسمتهایی که تفییر پیدا کرده رو دوباره کامپایت میکنه.

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

یه امکان خیلی خوب هم برای فرمول نویسی داره (علاوه بر امکان انتخاب همه علایم ریاضی)، میتونین با ماوس فرمول خودتون رو رسم کنین و نتیجه رو به صورت کد لاتک قرار بدین :).

۱ موافقین ۰ مخالفین ۰ ۲۵ بهمن ۹۳ ، ۱۱:۰۵
حامد شیخلو

اینکه برای یک سیستم شخصی هم ویندوز لازم هست و هم لینوکس یه چیز مشخص هست. تو لینوکس برای برنامه نویسی (خصوصا زبان پایتون و پرل و همچنین سی) یک بهشت محسوب میشه. این ور هم ویندوز سلاح خودش رو داره (مالتی مدیا، مجموعه آفیس و بازی های فراوان).

یه مشکل که برای خودم همیشه بود، خوندن داده های روی لینوکسم بوده که تو /home ذخیره میکردم. مثلا وقتی با لتک داکیومنت مینوشتم، نیاز میشد تو ویندوز یه فایلی رو ازش بردارم که مثلا برای ایمیل استفاده بکنم. تو این شرایط دو تا راه وجود داره (برادران ردموندی لینوکس رو هنوز نمیشناسن)، یکی ریست کردن و رفتن به لینوکس و راه دوم استفاده از برنامه ای برای خواندن داده های درایو های لینوکس هست.

برنامه رایگان Linux Reader محصول شرکت diskInternals میتونه اکثر فرمت های لینوکسی برای درایو رو شناسایی بکنه و بتونین فایلهای خودتون رو کپی کنین. البته به صورت مستقیم نیمتونین روش کار کنین و باید ابتدا فایل رو سیو کنین.

اینم لینک دانلودش

http://www.diskinternals.com/download/Linux_Reader.exe

۰ موافقین ۰ مخالفین ۰ ۲۳ بهمن ۹۳ ، ۱۳:۵۲
حامد شیخلو

توضیح مختصر در مورد اینکه gradle چی هست. برنامه گریدل یک سیستم مدیریت خودکارسازی فرآیند ساخت برنامه است (اسم فارسیش سخت میشه) -project automation tool. با استفاده از این سیستم میتونین تو برنامه خودتون از کتابخانه های دیگه استفاده کنین و اگر کس دیگه یا تو سیستم دیگه خواستین کامپایل کنین، فرآیند دانلود و نصب کتابخانه های مورد استفاده به صورت خودکار انجام میشه. یه جورایی شبیه سیستم apt برای نصب برنامه ها تو لینوکس هست.

و اما مشکل من.

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

intelli jidea this project using an unsupported version of the android gradle plugin

ظاهرا نسخه بسته 0.13 بود و مال من 0.14 و بنابراین هماهنگی بین اونها نبوده و خطا داد. تو اینترنت بگردین یکم سردرگم میشه آدم. من خودم هم اومدم و جاوا و android sdk رو بروزرسانی کردم، اما خطا درست نشد.

اما راه حل:

همونطور که گفتم گریدل یه سیستم خودکارسازی کامپایل است و بنابراین نیازی به اجرایی بودن خودش نیست. پس کلا باید فایل متنی مثل xml باشه (سیستم maven به این شکل هست، اما سیستم گریدل به صورت  xml نیست).

راه حل خیلی ساده هست، تو فایل build.gradle که کنار کتابخانه ای هست که میخواین اونو نصب کنین، نسخه مقصد خودتون رو اصلاح کنید :)

برای من یکم درک این مساله که چرا این خطا بوجود آومده و یه ادیتوری مثل intelliJ idea نتونسته اون رو رفع کنه یا حتی دکمه ادامه بذاره که بشه پروژه رو کار کرد، سخت هست.

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.14+'
    }
}

۰ موافقین ۱ مخالفین ۰ ۲۱ آذر ۹۳ ، ۱۶:۴۹
حامد شیخلو

اول صورت مساله ای که برای خودم پیش اومد رو توضیح بدم و بعدش راه حل.

بواسطه یک پروژه، به چند سیستم مجازی با ساختار خاصی نیاز شد و برای اینکه آزادی عمل کامل داشته باشیم، تصمیم گرفتیم که یک سرور مجازی سازی از خارج اجاره کنیم. تا قبل از عرضه نسخه esxi، نسخه esx وجود داشت که پولی بود، اما esxi خوشبختانه رایگان هستش و فقط قسمت vsphere باید خریداری بشه (حالا میشه از workstation هم استفاده کرد) (اینکه esxi و vsphere چی هستش یه توضیح خلاصه در ادامه میدم). بنابراین به سادگی (البته منظور از اینجه از سادگی، فقط جستجو بودش؛ خرید مکافات داره) میشه یک سرور اختصاصی با نسخه 5.5 از esxi تهیه کرد.

احتمالا از vmware workstation استفاده کردین. با استفاده از این نرمافزار میشه چند تا سیستم عامل رو روی یک سیستم به صورت همزمان اجرا کرد و با همدیگه کار میکنن. به این مدل مجازی سازی میگن hardware level virtualization. حالا فرض کنین که سیستم عامل میزبان (یعنی همون سیستم عاملی که workstation رو روی اون نصب کردین) حذف بشه و خود vmware workstation جای اون سیستم عامل رو بگیره. یعنی یک سیستم سخت افزاری، که سیستم عامل اون vmware workstation هستش و کل سیستم رو تبدیل میکنه به چند تا سیستم مجازی. به این حالت میکن hypervisor که esxi و esx هم یک نوع hypervisor هستن که شرکت vmware اونا رو عرضه کرده.

بعد از تهیه خود سیستم، نوبت به نصب سیستم عامل رو ماشین های مجازی هستش که بنابر نیاز ساخته شده. من میخواستم یه نسخه ubuntu رو نصب کنم. سرعت سرورهای خارجی معمولا خیلی بالا هستش (برای من بیش از 44MBps بودش، یعنی بیشتر از mbps360) اما سرعت این ور خیلی پایین هستش. طریقه نصب سیستم عامل در esxi به 3 طریق هستش (هم با vsphere میشه و هم با workstation):

  • قرار دادن سی دی نصب در داخت سی دی رام سیستم خودتون یا سرور
  • معرفی یک فایل ایمیج iso موجود در سیستم خودتون به عنوان مبدا نصب
  • بارگذاری فایل ایمیج iso به فضای ذخیره سازی سرور و نصب از طریق اون
حالا انشاا... بعدا طریقه نصب و کار کردن با vsphere رو میگم

معمولا به خاطر عدم اطمینان اتصال از روش سوم استفاده میکنم. پس اینجا صورت مساله انتقال یک فایل 500، 600 مگابایتی (در بعضی مواقع خیلی بیشتر) از طریق اینترنت به فضای ذخیره سازی esxi (به عنوان datastore شناخته میشه) هستش. با سرعت کم داخلی این کار خیلی خیلی زمان بر هستش.

یک راه بهتر این هستش که خود esxi این فایل رو دانلود بکنه. esxi بر مبنای لینوکس هستش، پس احتمالا بشه از خط فرمان استفاده کرد. در esxi یک خط فرمان کامل (البته نه در حد لینوکس همه منظوره) وجود داره. یعنی میشه با دستور wget یک فایل رو دانلود کرد. اما متاسفانه دسترسی از راه دور برای خط فرمان esxi (یعنی همون ssh) غیر فعال هستش.

اما روش فعال سازی:

  • ابتدا وارد فضای vSphere شوید
  • سرور ESXi خودتون رو انتخاب کنید
  • منوی configuration رو انتخاب کنید

  • از منوی سمت چپ، گزینه security profile رو انتخاب کنید
  • گزینه SSH رو انتخاب کنید و properties  رو انتخاب کنید

  • از پنجره ظاهر شده نحوه start شدن سرویس رو انتخاب کنید
۰ موافقین ۰ مخالفین ۰ ۲۳ مرداد ۹۳ ، ۰۰:۵۵
حامد شیخلو

در لینوکس بعضی داده های دیسک قبل از نوشته شدن در دیسک، در حافظه اصلی نگه داری میشود. این عمل برای بالا بردن سرعت کارایی است. اگر هسته، فرصت کافی برای نوشت داده ها در دیسک نداشته باشد، ممکن است که فایل سیستم دچار مشکل شود.این مشکل ممکن است به صورت چند روش بوجود بیاید، برای مثال:

  • قطع کردن اتصال حافظه ذخیره سازی به صورت ناگهانی، مثلا کشیدن فلش
  • ممکن است که برق سیستم قطع شود
  • هسته کرش کند یا سیستم به یکباره ریبوت شود. این مساله بسیار کم بوجود میاید
  • کاربر ممکن است دکمه ریست را فشار دهد
در مراحل boot، سیستم لینوکس دستور fsck را اجرا میکند. کار این برنامه بررسی کردن سیستم فایل و رفع خطاهای احتمالی است. در شرایطی که سیستم یک روند خاموش شدن عادی دارد، قبل از خاموش شدن سیستم تمامی دیست ها unmount میشوند، در این شرایط fsck حالت "clean" را برگشت میدهد (حتما کرنل داده ها را به درستی نوشته است). زمانی که سیستم فایل mountمیشود، این نشانگر حذف میشود.

اگر یکی از حالات ذکر شده قبلی برای سیستم اتفاق بیافتد، پرچم "clean" برای فایل سیستم ست نخواهد شد و باید fsck برای سیستم فایل اجرا شود. همچنین برای جلوگیری از خطای احتمالی، به صورت دوره ای هم دستور fcsk اجرا میشود.

در حالت بوجود آمدن یک خطای جدی برای فایل سیستم، به دلیل اینکه fsck نمیتواند بدون اجازه مدیر سیستم تغییری در سیستم فایل انجام دهد، سیستم متوقف میشود. در این مواقع خطای زیر در فرآیند بوت نمایش داده میشود:

***An error occurred during the file system check.
***Dropping you to a shell; the system will reboot
***when you leave the shell.
Give root password for maintenance
(or type Control-D for normal startup):

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

(Repair filesystem) #

در این کاملد لاین باید فرمان مربوط به بررسی فایل سیستم وارد شود.

برای بررسی تمامی سیستم فایل ها، فرمان زیر را وارد کنید:

fsck -y /

با سویچ "y" شما ریسک رفع خطا و مشکلات ناشی از آن را قبول میکنید.

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

در سیستم فایل های ژونالیست، مانند extX ها، احتمال خرابی دیست بسیار کم است. در این فایل سیستم ها معمولا از تمامی کارکرد های سیستم مانند پایگاه داده ها لاگ نگه داری میشود.

۰ موافقین ۰ مخالفین ۰ ۱۷ تیر ۹۳ ، ۱۱:۱۹
حامد شیخلو
فرض کنید که میخواهید درستی ساختار یک متن پیچیده رو بررسی کنید، مثلا ببینید که آدرس آی پی وارد شده درست هستش یا نه، و یا مثلا میخواهید قسمتی از یک متن رو جدا کنید. در این حالت 2 راه حل دارید. 
اول اینکه کاراکتر ها رو جدا کنید و با توکن درستی متن رو بررسی کنید. شبیه کارهایی که تو کامپایلر انجام میشه.
راه بهتر استفاده از regular expression هستش. در این حالت شما یک قالب برای متن خود میسازید و متن خود را با آن مقایسه میکنید. نوشتن این قالب بسیار ساده هستش، اما فهمیدن اون و در نتیجه اشکال زدایی آن سخت هستش. مثلا قالب زیر برای شناسایی آدرس آی پی
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
  (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
راه حل این مشکل یک وبسایت ساده هستش که به صورت زنده قالب شما رو روی متن دلخواه شما اعمال میکنه و نتیجه رو راحت میتونین ببینین.
اما ایرادش چیه؟
مثل همیشه، با فارسی مشکل داره
۲ موافقین ۰ مخالفین ۰ ۰۹ خرداد ۹۳ ، ۲۱:۰۹
حامد شیخلو