محمد مهدی خلعت بری بدون دیدگاه

KVM Linux – قسمت اول

معرفی:

KVM یا Kernel-based Virtual Machine از محصولات شرکت Red Hat Enterprise است. یک ابزار کامل برای امور مجازی سازی روی لینوکس با سخت افزار x86 معماری سخت افزار AMD64 و Intel64 می باشد که برای اجرا باید Extension های مجازی سازی AMD-V و Intel VT را دارا باشند و برای کرنل Red Hat Enterprise Linux 6 ساخته شده بود. KVM شامل ماژول کرنل kvm.ko است، که زیرساخت مجازی سازی کرنلی و ماژول پردازنده kvm-intel.ko و kvm-amd.ko را دربر دارد. می تواند چندین سیستم عامل مهمان یا ماشین مجازی ویندوزی و لینوکسی را راه اندازی نماید که هرکدام برای خود کارت شبکه، دیسک، آداپتور گرافیک و .. را می توانند داشته باشند.

kvm به عنوان یک ماژول کرنل قابل بارگذاری است که وقتی اجرا شود کرنل لینوکس را به عنوان یک hypervisor bare metal تبدیل می کند. دو اصل مهم در طراحی kvm اتفاق افتاد تا این hypervisor به سرعت به عنوان پایدار ترین hypervisor متن باز قرار گرفت.اول این که kvm بعد از ظهور hardware assisted به وجود آمد واین امر kvm را مجبور پشتیبانی از ویژگی های hardware assisted کرد تا hypervisor kvm دستور هایی که پردازنده های intel VT-Xi و AMD-V پشتیبانی می کند را پیاده سازی کند.دوم اینکه تیم kvm در ادامه از ضرب مثل “don’t  reinvent the wheel”  استفاده کردند به این معنی که به دنبال اختراع روش جدید نبودند و بهترین روش های موجود برای حل مسئله استفاده کردند. در یک hypervisor اجزای بسیاری وجود دارد که علاوه بر مجازی سازی CPU و Memory اجزای دیگری هم وجود دارد برای مثال: memory manager, process scheduler, I/O stack, device drivers, securit manager ، network stack و غیره. در حقیقت یک hypervisor واقعا یک سیستم عامل خاصی است که هدف آن به جای بالا اوردن یک برنامه بالا آوردن یک ماشین مجازی است.

 

معماری kvm :

در معماری kvm ماشین مجازی به عنوان یک پروسس منظم است که توسط زمانبند استاندارد لینوکس اجرا می شود.در حقیقت هر CPU مجازی به عنوان یک پروسس منظم به نظر می رسد.این کار به kvm اجازه می دهد که از تمام ویژگی های کرنل لینوکس بهره مند شود.

 

مدیریت حافظه :

KVM ویژگی هایی از مدیریت حافظه قدرتمند لینوکس را به ارث برده است.حافظه ای از یک ماشین مجازی به عنوان حافظه ذخیره می شود و این حافظه برای هر فرایند دیگری در لینوکس می تواند جابه جا شود . پشتیبانی از صفحه های بزرگ large pages عملکردی بهتر و امکان پشتبانی یا اشتراک گذاری فایل دیسک‌ها را فراهم می‌کند. NUMA SUPPORT به یک ماشین مجازی اجازه دسترسی موثر به مقدار بزرگی از حافظه را می دهد. صفحات مشترک حافظه از طریق یکی از ویژگی های کرنل به نام Kernel Same-page Merging(KSM) پشتیبانی می شود.ksm حافظه هر ماشین مجازی را اسکن می کند و صفحات حافظه یکسان این ماشین های مجازی را باهم ادغام می کند و این یک صفحه باقیمانده را بین ماشین ها به اشتراک می گذارد.و اگر یک مهمان بخواهد صفحه مشترک بین ماشین های را تغییر بدهد به اویک کپی محافظت شده از صفحه مشترک رامی دهیم.در بسیاری از مواقع امکان یکپارچه سازی بین ماشین های مجازی بروی یک هاست وجود دارد برای مثال در یک ماشین مجازی ویندوز از حافظه در DLL رایج ، کتابخانه ها، کرنل های یا دیگر اجزای مشترک بین ماشین مجازی استفاده نمی شود .با KSM بیشتر ماشین های مجازی می توانند بر روی یک هاست مستقر شوند و این امر باعث کاهش سخت افزار، هزینه هاو بهبود مصرف سرور می شود.

ذخیره سازی :

KVM قادر به استفاده از هر گونه ذخیره سازی پشتیبانی شده توسط لینوکس برای ذخیره Image های ماشین مجازی است، که شامل دیسک های محلی با IDE, SCSI و SATA ،شبکه های متصل ذخیره سازی NAS  که شامل NFS و SAMBA/CIFS یا SAN با پشتیبانی برای iSCSI و Fiber Channel می باشد. ممکن است از چندمسیر I / O به منظور بهبود توان ذخیره سازی و تولید افزونگی مورد استفاده قرار گیرد. KVM، ایمیج ماشین های مجازی مشترک در فایل سیستم ها را پشتیبانی می کند برای مثال (Global File System (GFS2 به ایمیج ماشین مجازی اجازه می دهد بین چندین هاست به طور مشترک یا چندین logical volumes مشترک استفاده شود. فرمت محلی (native) ایمج KVM به نام QCOW2 است که شامل پشتیبانی از snapshots ،اجازه دادن snapshots از سطوح مختلف ، فشرده سازی و رمزنگاری می باشد.

مهاجرت زنده live migration :

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

هایپرویژن Hypervisor چیست و چه کاربردی دارد ؟

 

یک هایپرویژن Hypervisor   یکی از دو روش برای مجازی سازی یک محیط محاسباتی است ، منظور ما از virtualize ، تقسیم منابع مانند RAM , CPU از یک محیط محاسبات فیزیکی ( شناخته شده به عنوان سرور اصلی میزبان ) به چند ماشین مجازی کوچکتر ( شناخته شده به عنوان مهمان ) . هر مهمان می تواند سیستم عامل مورد نیاز خود را نصب کند و هر ماشین مجازی منابع خود  RAM  و CPU  خود را دارد ، در واقع سرور مجازی درست مانند یک سرور فیزیکی رفتار می کند ، این امکان نیازمند پشتیبانی قابلیتی به نام VT-x در سی پی یو های اینتل و AMD-V در سی پی یو های AMD است.

یکی از وظایف کلیدی که Hypervisor فراهم می کند جداسازی است ، این به این معنی است یک مهمان امکان دسترسی به سرور میزبان و همچنین دسترسی به سایر مهمان ( ماشین های مجازی ) ایجاد شده در سرور ندارد و رفتار های سرور مهمان روی آنها تاثیری نداشته باشد ، حتی اگر ماشین مهمان با مشکلاتی مانند کرش شدن مواجه شود. بنابراین هایپرویژن باید به دقت مانند یک سخت افزار ماشین فیزیکی تقلید کند و از دسترسی مهمان به سخت افزار واقعی جلوگیری کند ، از آنجایی که این عمل به شدت سرعت را کاهش می دهد از یک روش paravirtualized یا PV drivers استفاده می شود. این امکان تمام سخت افزار ها را به صورت مجازی در اختیار ماشین مجازی قرار می دهد و  درایور های آن توسط Hypervisor دریافت می شود ، با استفاده از این روش سرعت بالا می رود و همچنین امکان دسترسی مستقیم به سخت افزار های اصلی سرور و کنترل آنها توسط مهمان دیگر وجود ندارد.

 

Hypervisors دو نوع است Type 1 و Type 2

Type 1  : در این نوع از Hypervisors که به اصطلاح به آن “برهنه فلزی” گفته می شود ، Hypervisors به طور مستقیم برای کنترل سخت افزار و سیستم عامل های مهمان اجرا می شود. بنابراین مجازی ساز های VMware ESXi و Xen از نوع Type 1 می باشد. تصویر زیر مثالی type 1 است :

 

Type 2  : در این نوع از Hypervisors که به اصطلاح به آن “میزبانی شده” گفته می شود ، Hypervisors در داخل یک سیستم عامل اجرا می شود و پس از آن سیستم عامل عامل های مهمان ایحاد می شود. سیستم های مجازی ساز دسکتاپ اغلب از این روش استفاده می کنند. بنابراین مجازی ساز های  OpenVZ و KVM از نوع Type 2 هستند.تصویر زیر مثالی type 2 است :

با تصاویر بالا نتیجه می گیریم Hypervisors تایپ 1 بهتر از تایپ 2 است زیرا در تایپ 1 Hypervisors هنگام دسترسی به منابع فیزیکی از سیستم عامل میزبان استفاده نمی شود. پیدا کردن نوع Hypervisors کاری بسیار ساده است ، برای مثال مجازی ساز KVM که به عنوان یک پردازش در سیستم عامل میزبان لینوکس نصب می شود از نوع TYPE-2 است. در واقع فرایند راه اندازی صرفا دسترسی به تعداد محدودی منابع از طریق سیستم عامل میزبان و بسیاری از وظایف حساس توسط ماژول کرنل انجام می شود که دسترسی مستقیم به سخت افزار را دارد.

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

محمد مهدی خلعتبری

الهام عابدی بدون دیدگاه

کم حجمِ پر کاربرد

در میان توزیع های لینوکسی شاید به خاطر رابط کاربری، گرافیک زیبا، کاربرد و … یک سری توزیع ها محبوبیت بیشتری داشته باشند. اما اینکه بتوان با توجه به اشغال فضای رم، ویژگی هایی که هر کاربر آن را مطلوب کارهای خود می داند، یکجا در توزیع مورد استفاده داشت شاید بهتر است با توزیعی کم شناخته اما پرکاربرد آشنا شد.

slitaz یا (Simple Light Incredible Temporary Autonomous Zone) یک توزیع کامل و سبک، کم حجم، ساده و مهمتر از همه؛ سریع است.

تولد آن در 22 ماه مارس 2008 در کشور سوئیس بود. شاید همین کم حجم و در عین حال کاربردی بودن، آن را از دیگر توزیع های کم حجم متمایز کرده است. حجمی به میزان معمولِ 35 مگابایت تا حداکثر 48 مگابایت!

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

  • قابلیت اجرای سرور و کلاینت SSH از نوع Dropbear بر روی آن.
  • پشتیبانی از نرم افزار مدیریت دیتابیس SQLite .
  • دارای امکاناتی جهت ایجاد، ویرایش و رایت CD و DVD .
  • دسکتاپ آن، به طور پیش فرض با OpenBox اجرا می شود که زیبایی منحصر به فردی دارد.

  • می توانیم میزکار های دیگری همچونPekwm ، JWM یا XFCE استفاده کنیم که قابل نصب هستند.
  • پشتیبانی صدا توسط آلسا میکسر(alsamixer)، پخش کننده صوتی که قابل نصب بر روی آن است.
  • میتواند محیط توسعه نرم افزار را برای شما با استفاده از کامپایلر GCC و Geany IDE و تمامی کتابخانه ها تامین نماید .
  • پشتیبانی از پروتکل های اینترنتی.
  • استفاده از سرویس FTP توسط نرم افزار BusyBox .
  • قابلیت بوت شدن روی رم.
  • مرور وب با Midori ، Firefox یا Lynx در حالت متنی.
  •  SliTaz به نحوی طراحی شده تا به عنوان وب سروری قدرتمند با استفاده از LightTPD/PHP  پایدار فعالیت نماید ، که البته به صورت پیشفرض نصب نشده است.
  • امکان پشتیبانی از زبان های CGI ،Perl ، Python و Squid موجود است .
  • قابلیت مرور وب به صورت امن توسط Tor امکان پذیر است .
  • با وجود حجم کم، تعداد زیادی نرم افزار گرافیکی دارد. این توزیع 3350 بسته نرم افزاری دارد.
  • درحالی که SliTaz در حال اجراست می‌توانید فلش خود را برای کارهای دیگر از کامپیوتر جدا کنید.
  • با قابلیت persistentبه شما این اجازه داده می شود که دیتا و تنظیمات شخصی خود را روی فلش قابل حمل ذخیره کنید.

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

محمد مهدی خلعت بری بدون دیدگاه

کانفیگ های ضروری Switch

 

VLAN

هر VLAN که بر روی Switch ایجاد می شود ، به منزله یک شبکه جداگانه خواهد بود و این شبکه ها هیچگونه ارتباطی با یکدیگر نخواهند داشت. یکی از مهمترین ویژگی هایی که باعث استفاده از VLAN بندی در شبکه شده است ، Broadcast نشدن پیام ها در سراسر شبکه می باشد. VLAN ها در شبکه و بر روی Switch این اجازه را می دهند که شبکه هایی با آدرس های IP متعدد و زیر شبکه های متعدد وجود داشته ، بدون اینکه با یکدگیر در ارتباط باشند. از مزایای اصلی VLAN بندی در شبکه می توان موارد زیر را ذکر نمود :

  • امنیت
  • کاهش هزینه
  • افزایش بازدهی و کارآیی
  • کاهش و جلوگیری از Broadcast
  • بهبود و بهره وری بیشتر کارکنان از شبکه
  • سادگی اجرا و مدیریت آسان

انواع VLAN:

  • Data VLAN: نوعی از VLAN صرفا برای حمل داده های کاربر.
  • Default VLAN: نوعی از VLAN که تمامی پورت های Switch ها به هنگام راه اندازی و تنظیمات عضوی از این VLAN خواهند بود.
  • Native VLAN: نوعی از VLAN مختص پورت های ترانک رابط برای انتقال داده بین VLAN های مختلف.
  • Management VLAN: به نوعی از VLAN که برای دسترسی مدیریتی به تنظیمات Switch ها طراحی شده باشد.
  • Voice VLANs: نوعی از VLANs همانطور که اسمش پیداست بایستی از voice over ip پشتیبانی داشته باشد.

 

EtherChannel

EtherChannel تواتنمندی میباشد که اجازه میدهد چندین پورت فیزیکی Switch در یک گروه منطقی قرار بگیرد به منظور دسترسی پهنای باند بالاتر و ایجاد تحمل خطا در اتصالات بین Switch ها استفاده می شود که به ما اجازه میدهد از مجموعه پهنای باند اتصالات فیزیکی که در گروه منطقی قرار گرفته اند استفاده کنیم.

انواع مد های EtherChannel :

  • On: این مد باعث فعال شدن EtherChannel بر روی اینترفیس بدون ارسال هیچ پیام LACP و PAgP میشود.
  • Auto: در این مد هیچ پیام PAgP از طرف اینترفیس ارسال نمیشود ولی آماده پاسخگویی به پیام های PAgP از سوی Switch مقابل میباشد و قادر به آغاز PAgP Negotiation نیست.
  • Desirable: در این مد اینترفیس ها پیام های PAgP را ایجاد و به سمت Switch مقابل ارسال میکند و قادر به آغاز PAgP Negotiation می باشد.
  • Passive: در این مد هیچ پیام LACP از طرف اینترفیس ارسال نمیشود ولی آماده پاسخگویی به پیام های PAgP از سوی Switch مقابل میباشد و قادر به آغاز LACP Negotiation نیست.
  • Active: در این مد اینترفیس ها پیام های LACP را ایجاد و به سمت Switch مقابل ارسال میکند و قادر به آغاز LACP Negotiation می باشد.

PortSecurity

در ساده ترین حالت ممکن این قابلیت آدرس سخت افزاری کارت شبکه شما یا همان MAC شما را در حافظه ای مربوط به آن پورت ذخیره میکند و فقط به همین آدرس سخت افزاری اجازه ورود به پورت شبکه را میدهد . اگر آدرس سخت افزاری دیگری بخواهد از طریق همان پورت سویچ به شبکه متصل شود ، سویچ آن را بلوکه کرده و اجازه ورود به سیستم را به آن پورت نخواهد داد ، این میتواند غیرفعال کردن پورت سویچ نیز باشد . در شبکه هایی که سیستم های مانیتورینگ یا پایش شبکه راه اندازی شده اند با استفاده از پروتکل SNMP تنظیماتی انجام شده است که بلافاصله بعد از غیرفعال شدن پورت Switch به سیستم Monitoring اطلاع رسانی می شود و در لاگ این سیستم ثبت می شود.

STP

در طراحی شبکه داشتن لینک جایگزین (Redundant) یک ویزگی محسوب می شود که در صورت از کار افتادن لینک اصلی از لینک جایگزین جهت جلوگیری از وقفه در جریان ترافیک استفاده می شود اما Ethernet قابلیت تشخیص لینک جایگزین و غیر فعال کردن آن تا زمان مورد نیاز را ندارد در نتیجه باعث ایجاد یک چرخه می شود و ترافیک Broadcast دائم در این مسیر در حال چرخش است و به مقدار آن اضافه می شود و به اصطلاح باعث ایجاد Loop در شبکه می شود و در نهایت با پر شدن پهنای باند و درگیر شدن تجهیزات ، شبکه از کار می افتد که به آن Broadcast Storm گفته می شود.

Spanning Tree پروتکلی است که با تشخیص مسیر جایگزین یا مسیر دوم آنرا تا زمانی که مورد نیاز نیست مسدود می کند. بنابراین طراح شبکه می تواند دو یا چند مسیر را بین Switch های خود در نظر بگیرد ، یک مسیر را به عنوان مسیری اصلی و باقی مسیرها به عنوان رزرو در نظر گرفته می شود و در صورت قطع شدن مسیر اصلی مسیر رزور به سرعت جایگزین مسیر اصلی شده و ترافیک را منتقل می کند. و به این شکل یک شبکه با قابلیت اطمینان بیشتر خواهیم داشت.

الهام عابدی بدون دیدگاه

اهمیت big data

 

همانند اتفاقاتی که تو جهان هستی میفته و تعجب همه ی ما رو بر می انگیزه، دنیای کامپیوتر و هر چی که به اون مربوط میشه به همون اندازه عجیب؛ زیبا و قابل تامله! این موضوع رو فقط یه گیک یا کسی که فاصله ی نزدیکی با گیک شدن داره درک میکنه!

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

حالا شاید براتون جالب باشه که من یا شمای نوعی چه سهمی در تولید دیتاها خواهیم داشت. طبق آمارهای جهانی، روزانه 3   Quintillion  بایت تولید دیتا داریم. یعنی  بایت. عددی که از تصور و حتی توصیف مون خارجه!

اگه بخوایم به عقب برگردیم؛ مثلا سال 2005 که اوج شکوفایی اینترنت بود، تا الان که سال 2017 رو پشت سر گذاشتیم تعداد کاربران اینترنتی از 1024 میلیون به 3578 میلیون رسیده، جدا از کسانی که واسطه مند به نت متصلن. که طبق این، تولید دیتا ها نیز با سرعتی چند برابر روندی صعودی داشته به خصوص در سه سال اخیر.

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

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

ممکنه به خودتون بگید که اصلا داده ها شامل چه چیزایی هست ؟! در یک جمله میگم که داده ها می تونه هر چیزی رو در بر بگیره یعنی هر چیزی که بهش فکر می کنید و حتی فکر نمی کنید! تمام فعالیت هایی که در فضای نت انجام می گیره از کلیک ها و لمس و ضربه به مانتیتور ها گرفته تا ارسال ها و دریافت ها و لحظه لحظه هایی که تو جایی از وب توقف داشتیم و هر چیزی که قابل ذخیره شدن هست.

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

 

پر استفاده ترین

داده های جهانی

توئیت ها

(twitte)

روزانه

فعالیت های

face book

دیتاهای

پردازش شده

در google

آپلود ویدئو

در you tube

در دقیقه

تعداد ایمیل

دریافتی در

ثانیه

داده های

کاربران از

وسایل هوشمند

خرید و فروش

در amazon

مصارف

خانگی

روزانه

مقادیر

یا درصد کل

50 میلیون 700 بیلیون 24 پتابایت 20 ساعت ویدئو 2.9 میلیون 1.3 اگزابایت 60 درصد داده های کل 375 مگابایت

 

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

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

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

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

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

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

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

shirin بدون دیدگاه

توابع پایتونی

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

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

زبان پایتون مقدار زیادی توابع از پیش تعریف شده دارد که میشود در دل برنامه ها از آنها استفاده کرد.

در این بخش قرار است بعضی از این توابع را معرفی کنیم و اینکه یاد بگیریم چند مورد را خودمان پیاده سازی کنیم و اینکه چطور از توابع در برنامه هایمان استفاده کنیم

خب جدول بالا لیست توابع از پیش ساخته شده را نشان میدهد، خیلی از این توابع را حتما میشناسیم، کاراییه بقیه را هم با یک سرچ ساده در اینترنت میشود پیدا کرد؛ و اما بحث مورد نظر ما در این بخش، اول از همه بهتر است که اجزای یک تابع را بشناسیم:

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

بعد از آن مواردی که تابع باید انجام بدهد را اضافه میکنیم و بعد از آن هم  چیزی که قرار است برگرداند را تایپ میکنیم و در نهایت تابع تکمیل میشود.

برای مثال تابع max()  را پیاده‌سازی میکنیم:

همانطور که میدانید این تابع بزرگترین عدد را بین اعداد وارد شده مشخص میکند، روش کار به این شکل است که یک متغیر در نظر میگیریم که اعضای لیستمان را بعد از مقایسه و مشخص شدن عدد بزرگتر در آن قرار دهیم بعد از تکمیل بدنه تابع دستور print را میگذاریم و یا یک مقدار بازگشتی را مشخص میکنیم که برای جواب برگرداند، خب بهتره ببینیم:

: (def maximum_numbers(my_list

max_num = 10    

: (for i in (my_list   

: (if (i>max_nu       

max_num = i           

return max_num      

 

ما در این تابع یک مقدار را بصورت پیش فرض برای متغییرمان در نظر گرفتیم و از یک حلقه for  برای پیمایش لیستمان و یک شرط if  برای مقایسه اعداد لیست با متغییرمان استفاده کردیم. روش کار به این شکل است که ابتدا حلقه for  به پیمایش لیست میپردازد و در هر خانه شرط if به بررسی مقادیر متغییر های i و max_num میپردازد و عدد بزرگتر درون متغییر max_num قرار میگیرد و در نهایت تابع مقدار نهایی همین متغییر را برمی گرداند. لطفا توجه کنید برای فراخوانی تابع در برنه اصلی برنامه در قسمت پارامتر ها لیست مورد نظرمان را جایگزین my_list میکنیم.

تابع pow()

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

 : (def power(x, y

: (if (x>=0 and y>=0    

(print (x**y        

return   

(power(2, 3

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

 

لطفا به شکل دقت کنید، همانطور که میبینید فراخوانی تابع در حالت دو پارامتری به شکل زیر :

(power(2, 3

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

 

تابع sqrt() :

کار این تابع برگرداندن جذر عددی است که به عنوان پارامتر دریافت میکند. بهتر است بدانیم که خود تابع برای این کار از کتابخانه match  استفاده میکند، به این صورت:

import math

(math.sqrt(x

پیاده‌سازی این تابع را به عنوان یک تمرین به شما میسپارم و در نهایت برای شماره بعدی جواب را منتشر میکنم. کار بسیار مفیدی برای درک بهتر توابع هست، فقط اینکه بهتر است خودِ شما به جستجو و مطالعه بپردازید و این تمرین را انجام دهید تا بتوانید به درستی درکش کنید.

استفاده از کتابخانه ها

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

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

اما چطور امکان به کار گیری تابعی که پیاده سازی کرده ایم در برنامه های دیگر وجود دارد؟

باید تابع را با نام module  ذخیره کنیم و در برنامه هایمان آن ماژول را import  کنیم.

خب برای استفاده از ماژول ها یک روش این هست که تابعی که نوشتیم را به نام ماژولی که نیاز داریم ذخیره میکنیم با پسوند .py

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

روش اول

Import نام ماژول

Def name()

روش دوم

from module-name import def-name or *

Def-name()

شما میتونید در این روش از  نماد (*) استفاده کنید که با استفاده از این روش همه جاهایی که نام ماژول هست را import  میکنید

روش سوم

import module name

module name.defname()

یعنی میتوانید ماژول را صدا بزنید، سپس دوباره نام ماژول و بعد از آن یک () و بعد نام تابع و آرگومانی که مدنظر دارید.

فکر میکنم برای این شماره تا همین جا کافی باشد، همین مباحث را در  شماره های بعدی کامل‌تر میکنیم.

ممنون که با ما همراه بودید.

 

 

Sirous_fd ۱ دیدگاه

بازی‌ای که قبل از مرگ حتماً باید تجربه کنید !!!!

بازی‌ای که قبل از مرگ حتماً باید تجربه کنید !!!!
روزی روزگاری ، همه‌ی ما وقتی‌که در سنین کودکی سیر می‌کردیم ساعت‌ها و ساعت‌ها زمان خودمان را پای بازی Counter Strike صرف می‌کردیم و لذت می‌بردیم بااینکه این بازی سال‌هاست که از تاریخ تولیدش می‌گذرد و به‌روزرسانی‌های زیادی رو تجربه کرده اما بازهم حس خوبی برای ما به همراه دارد . حالا فرض کنید همان بازی با امکانات جدید و گرافیک بسیار بالاتر و شخصیت‌های واقعی‌تر عرضه شود !!! بله بازی‌ای که شباهت‌های بسیاری به Counter Strike دارد و دو سالی از آمدنش می‌گذرد و توی این مدت جزو بهترین بازی‌های سبک Tactical Shooter بوده و طرفداران پروپاقرصی پیداکرده . بیشتر بدانید

محمد مهدی خلعت بری بدون دیدگاه

سربازی و کلا هیچ!

در حال حاضر که مشغول نوشتن این مطلب هستم، در خدمت (مقدس) سربازی و در دوره آموزشی به سر میبرم. بیشتر مخاطبان این مطلب، پسر های ایرانی هستند که چه بخواهند و چه نخواهند ( همانند آش کشک خاله)، باید این دوران را پشت سر بگذارند.

اما به نظر شما در دوران سربازی و سر کلاس پدافند، هدف من از نوشتن این مقاله چی میتونه باشه؟!

با من همراه باشید…

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

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

اما در حالیکه این دوران در اوج خود قرار دارند و درست زمانی که برای هدفمندی قدمی به جلو گذاشته اید، با یک چالش بسیار بزرگ به اسم سربازی مواجه میشوید! حتما خیلی از شماها الان به این فکر میکنید که معافیت میگیرید و شایدم قصد خریدش رو دارید. خب در مورد معافیت بگم که قوانین صد برابر سخت تر شده و به راحتی نمیتونید معافیت بگیرید. در مورد خرید سربازی هم بگم که اگر میتونید 8 سال تحمل کنید و پول هم دارید، حتما بخریدش J چون سربازی وقتتونو تلف میکنه!

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

آیا بهتر نبود در این دوران باتوجه به نیازهای ارتش و سپاه جمهوری اسلامی ایران از تخصص های جوانان ایرانی بهره گیری میشد و یک نیروی کار بسیار کم هزینه و با انرژیِ زیاد مشغول کار و فعالیت و کسب تجربه شود؟

آیا این یک معامله برد-برد نیست؟

سربازان تمایل دارند از تخصص های خود دور نشوند و بتوانند 2 سال کار کرده و تجربه کسب کنند. از طرفی نیروهای نظامی نیز با توجه به زیرساخت بسیار بزرگ خودشان نیاز به مهندسانی کاربلد دارند. پس آیا واقعا همکاری بین این دو نمیتواند موثر باشد؟

اما شاید این سوال برای شما پیش بیاد که مثلا ارتش و سپاه، به چند عدد سرباز معمار و عمران و کامپیوتر و … نیاز دارند؟

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

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

قاعدتا اولین چیزی که به ذهن ما میرسه امنیت اطلاعات هستش که هیچ زیر ساخت IT استانداردی وجود نداره. ولی واقعا برقراری این امنیت اطلاعات امکان پذیر نیست؟ اصلا مشاوران IT وجود خارجی دارند؟

چیزی که واضحه اینه که هسته مرکزی دارای قدرت IT خیلی بالایی هست. ولی این قدرت چرا به پادگان های دیگه انتقال پیدا نمیکنه؟ چرا شهرستان های ما قدرت IT خیلی ضعیفی دارن؟ بنظر من قطعا یکی از مشکلات اساسی کمبود بودجه مالی و ضعف مشاوران IT هست که وضعیت رو اینگونه نابسامان میکنه.

اما در آخر باید به این نکته توجه کرد که ارتش یک کشور همه قدرت نظامی و دفاعی یک کشور است و قطعا اطلاعات آن از اهمیت بسیار بالایی برخوردار هستند، میدانیم که حفظ این اطلاعات کاری بسیار سخت است و همچنین هزینه بسیار زیادی داره، چرا که درز مقدار کمی از همین اطلاعات ممکنه باعث بروز یک فاجعه بشه. همانطور که در یکی از دولت های گذشته، انتشار ذره بسیار کوچکی از اطلاعات باعث به شهادت رسیدن برخی از نخبگان ما در آن زمان شد.

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

و من الله توفیق

 

shirin بدون دیدگاه

جشن تولد دو سالگی قبیله گیک ها

هر پاییز نوید آغاز ماست و چه خوش بود این دومین پاییز

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

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

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

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

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

shirin بدون دیدگاه

فروشگاه گیکی

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

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

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

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

در این شماره به معرفی اجمالی این محصولات میپردازیم، با ما همراه باشید:

کیف پول 

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

از بهترین کیفیت چرم و با کارایی مناسب که مورد استفاده آن هم برای بانوان و هم آقایان میباشد.

 

 

 

 

 

 

لیوان سفید

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

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

طرح لوگوی خاص قبیله گیک ها و طرح هم قبیله ای که بسیار زیبا میباشد.

 

Source GeekDialler

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

 

 

 

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

 

محمد مهدی خلعت بری بدون دیدگاه

بیست و سومین نمایشگاه بین المللی الکامپ

بیست و سومین نمایشگاه بین المللی الکامپ

این نمایشگاه از 30 ام تیر ماه تا 2 مرداد ماه در محل دائمی نمایشگاه های بین المللی تهران برگزار گردید.

در دوره گذشته این نمایشگاه 424 شرکت داخلی و خارجی و 250 شرکت در قالب استارت آپ در فضایی به مساحت 36500 هزار متر مربع از 18 کشور حضور داشتند که در طول برپایی نمایشگاه توانمندی های خود را ارائه نمودند.

بیشتر بدانید