کیا حامدی بدون دیدگاه

Job scheduling

سلام خدمت تمامی دوستان عزیز

امروز میخواهیم با Job-scheduling یا نحوه برنامه ریزی اجرایی اسکریپت ها یا نرم افزارها در سیستم عامل لینوکس آشنا بشیم و ببینیم چطور میشه به عنوان یک مدیر شبکه یا سیستم یک سری از کارهایی رو که روزانه مورد نیاز ما هست رو به صورت اتوماتیک و در فواصل زمانی مختلف مانند دقیقا، ساعت، روز، هفته، ماه و سال و یا در یک زمان خاص اجرا کنیم و کارهای روتین و روزانه رو به سیستم واگذار کنیم

در این مقاله ما با دو نرم افزار بسیار پر کاربرد در زمینه Job-scheduling در سیستم عامی های یونیکسی آشنا میشیم که عبارتند از Cron و At که هر کدوم از این نرم افزار ها برای یک منظور خاص ساخته شده اند

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

نرم افزارهای cron و at هردو شامل دیمن هایی هستند که این دیمن ها در هر لحظه لیست خودشون رو چک میکنند و اون نرم افزار یا اسکریپتی که باید در آن زمان خاص اجرا شود رو اجرا میکنند

فایل های کانفیک نرم افزار cron در شاخه etc وجود دارد که شما میتوانید با اسم cron.conf پیداش کنید

شما میتوانید از طریق سیستم کنترل این سرویس هارو فعال یا غیر فعال کنید همانند زیر:

که این سرویس به صورت پیش فرض فعال است و نیاز به فعال سازی نداره، در مورد فعال سازی این نکته مهم است که اگر فقط سرویس start سود بعد از ریبوت این سرویس خاموش است برای جلوگیری از این منظور سرویس باید enable هم باشد

برای اینکه ببینید این سرویس ها در سیستم شما فعال هستند کافیه با دستور ps لیست پروسه ها رو ببینید و با گرپ cron یا at را جدا کنید

خب حالا با هم نگاهی به کنترل این نرم افزار های بیاندازیم

وارد مسیر etc شوید و فایل crontab را باز کنید، این فایل به عنوان فایل اصلی نرم افزار cron شناخته میشود و شامل مثال ها و راهنماهایی هم برای افراد است که بتوانید راحت job های خود را تنظیم کنید

این فایل در واقع برای یوزر های مختلف ساخته میشود و هر یوزر فایل خاص خودش را دارد، به عنوان مثال اگر روت (مدیر اصلی) یک سری job ها را در crontab خود قرار دهد این job ها در crontab یوزرهای عادی دیده نمیشود

چیزی که در اینجا مهم است، اول شل اجرایی است تا برای نرم افزار cron مشخص باشد job ها را به چه شلی اجرا کند و سپس مسیر مربوطه برای اجرا کردن دستورات مورد نیاز است و در انتها باید اسکریپت ها و نرم افزار هایی که اجرا شوند را با یک فرمت خاص بنویسیم

نکته ای که در بالا مهم است، رعایت نوع خاص تعریف job ها است و چیزهایی که در اینجا مهم هستند، زمان ها هستند

ما ابتدا باید دقیقه و ساعت را مشخص کنیم که مکان آنها با حروف m و h  نمایش داده شده است به عنوان مثال اعداد 23 30 را اگر وارد کنید به معنای اجرای job در ساعت 23 دقیقه 30 است که شما میتونید در اینجا از * هم استفاده کنید، همانطور که میدانید * به معنای هر است که اگه ما بر فرض مثال * * را وارد کنیم اینجوری خوانده میشود که اسکریپت ما هر دقیقه از هر ساعت اجرا شود که این را میتونید برای هفته و ماه و سال هم قرار دهید و بعد از این دستور اسکریپت یا نرم افزار را مشخص میکنید به این شکل

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

البته به نظر من درست نیست فایل crontab اصلی را دستکاری کنید، شما میتونید از سویچ های کران استفاده کنید تا برای یوزر شما فایل crontab ایجاد شود

با دستور crontab -l میتوانید به لیست های موجود برای یوزر خودتان دسترسی داشته باشید

با دستور crontab -e و انتخاب یک ادیتور میتوانید یک فایل crontab برای یوزر خودتان تعریف کنید

و با دستور crontab -r میتوانید یک crontab را پاک کنید

برای تعریف یک job شما میتونید از کلمات از پیش تعریف شده هم استفاده کنید به عنوان مثال

 

خب به نظر من برای cron تا اینجا کافی است، البته نرم افزار cron کانفیگ و ریزه کاری زیاد دارد که میتوانید با چند جستجوی ساده در اینترنت همه قسمت ها و کارهایی که میتوانید انجام دهید را یاد بگیرید، در اینجا بیشتر هدف آشنایی با Job scheduling است

بعد از cron بهتر است کمی راجب نرم افزار at هم صحبت کنیم

این نرم افزار هم مانند نرم افزار cron شامل دیمن هایی است که هر لحظه چک میکنند چه دستوری باید اجرا شود

این نرم افزار سه دستور دارد که شمال at برای تعریف یک job جدید

دستور atq برای لیست کردن at هایی که برای یوزر وجود دارد و دستور atrm برای پاک کردن یک at خاص مورد استفاده قرار میگیرد

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

در اینجا فقط یک مثال ساده برای نرم افزار at ذکر میشود

بعد از اینکه زمان مشخص شد با زدن enter توسط شل اجرا میشود و در هر خط از شما یک دستور میگیرد تا at شما ساخته شود

بد از اینکه تمام دستورات را وارد کردیم با کلید های ترکیبی ctrl + d به گرفتن دستورات خاتمه دهید و نرم افزار at برای شما آماده میشود

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

موفق و پیروز باشید

 

کیا حامدی

www.kiahamedi.ir

[email protected]

 

 

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

اهمیت 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 مگابایت

 

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

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

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

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

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

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

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

badrinex بدون دیدگاه

ارز دیجیتالی

 

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

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

یکی از پر کاربردترین ارزها بیت کوین BitCoin است که اکثر افراد با بیت کوین به معامله می پردازند. مدتی است که این ارز با افزایش چشمگیر قیمت روبرو گردیده است. همچنین بعضهی از افراد از این ارز به عنوان یک سرمایه گذاری برای افزایش پول خود استفاده می کنند.
چونکه مبلغ بیت کوین در اولین ظهور خود که جولای سال ۲۰۱۰ بود با ۰.۰۸ دلار معامله می گردید ، اما با گذشت ۷ سال این مبلغ به ۱۵۰۰۰ دلار برای هر بیت کوین پرداخت می شد و با کاهشی به قیمتی حدود ۱۳۰۰۰ دلار رسیده است. باید توجه داشت که این ارز با شرایط بوجود آمده قابل پیش بینی نمی باشد و نمی توان گفت سرمایه گذاری در آن چه آینده ای خواهد داشت . تنها برنده های که با بالا رفتن بیت کوین به سود هنگفتی رسیده اند افرادی هستند که در زمان قبل از افزایش قیمت تصمیم به خرید آن گرفتند.

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

‏Ethereum :
یک برنامه نویس به نام Vitalik Buterin که به عنوان یک مقاله نویس در مجله Bitcoin مشغول به کار بود با ایجاد یک برنامه غیر متمرکز در اواخر سال ۲۰۱۳ توانست یک پلتفرم جدید با زبان برنامه نویسی ساده و عمومی را پیاده سازی کند.
ارز دیجیتالی اتریوم در بین دیگر ارزها جایگاه بسیار خوبی را پیدا کرده است که یک ارز موفق و پر کاربرد بعد از بیت کوین به شمار می‌رود . قیمت فعلی این ارز در بازار معاملات ارزی دیجیتال ۷۷۲.۸۴ دلار به ازای هر ETH می باشد. اتریوم هم مانند بیت کوین برای داد و ستد ها و پرداخت هزینه ها تحت شبکه اتریوم استفاده می شود.

‏LiteCoin:
یک ارز دیجیتالی دیگر که به صورت متن باز با پیروی از بیت کوین و کد اختصاصی LTC به جمع ارزهای دیجیتالی پیوسته است. به طور تخصصی به مانند بیت کوین می باشد. اما تفاوت های با بیت کوین دارد که به عنوان مثال امنیت در لایت کوین به مراتب بیشتر از بیت کوین است و برای اینکار از الگوریتم scrypt بجای SHA-256 استفاده کرده است. قیمت این ارز دیجیتالی در بازار معاملات ۲۸۴.۷۶ دلار به ازای هر LTC رسیده است.

‏Dash:
یک ارز دیجیتالی بر پایه بلاک چین ( امنیت تضمین شده برای نقل و انتقال پول که غیر قابل ردگیری در دنیای اینترنت می باشد.) است. دش با قدرت بالا در امنیت و سرعت در تراکنش توانست بین افرادی که از ارزهای دیجیتالی استفاده می کنند جای خود را در بین دیگر واحدهای پولی دیجیتالی ثابت کند. نقطه قوت Dash در تراکنش های سریع می باشد که در کمتر از ۵ ثانیه این کار را انجام می‌دهد. حتی برای استفاده از دش نیاز نیست در جای ثبت نام کنید. آخرین قیمت Dash ۱٫۲۲۱.۱۶ دلار برای هر واحد می باشد.

نظرات در مورد ارزهای نو ظهور دیجیتالی در میان ارزهای اصلی کشورها چگونه است؟

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

با این حال بسیاری از مردم علاقه خود به کسب درآمد با ارز دیجیتالی را نشان داده اند. حتی آموزش های برای شروع اینکار ارائه داده است. حتی در بعضی از موارد شنیده شده است که زمزمه یک حرکت به سمت ارز دیجیتالی برای اشخاص ایرانی شروع شده است(صحت این خبر هنوز تائید نشده است.).

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

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

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

شبیه سازی دنیای واقعی و مجازی

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

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

بیشتر بدانید

کیا حامدی بدون دیدگاه

من فریلنسر هستم

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

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

اما آیا فریلنسر بودن برای ایران خوب است یا خیر؟

بزارید قبل از اینکه به جواب این سوال برسیم در مورد راه هایی که یک مهندس نرم افزار میتواند برای خود اشتغال زایی کند یکم صحبت کنیم

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

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

در مرحله دوم فکر شرکت های خصوصی سراغ آدم میاد که بیاید به این بخش از دید یک برنامه نویس نگاهی بندازیم

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

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

خب الان فردی رو داریم که به عنوان برنامه نویس در یک شرکت خصوصی استخدام شده، خب این ایرادش چیه؟

میشه اینجوری گفت شما با اسم یک شرکت دارید فعالیت میکنید و پروژه های برنامه نویسی شرکت رو انجام میدید اما چه چیزی بدست میارید؟

شهرت؟ فکر نکتم چون دارید شرکت رو مشهور تر میکنید نه خودتون رو و هر زمانی که شما برید یک نفر دیگه جای شمارو میگیره و دوباره باید از صفر شروع کنید

آرامش؟بعید میدونم چون کار کردن برای یک کار فرما و تحویل کار در زمان تعیین شده باعث ایجاد دلهره و اضطراب میشه و انسان رو فرسوده میکنه

پس چی درآمد؟ اونم نمیشه گفت درآمد چون شما ماهیانه حقوق دریافت میکنید و از پروژه ها سهم نمیگیرید مگر اینکه قرار داد کاریتون رو خودتون تنظیم کنید و شرکت خواهان شما باشه تا با شرایط شما موافقت کنه

بیاید این بخش رو یک جور دیگه بررسی کنیم به عنوان مثال شما با حقوق ثابت ماهیانه 1 میلیون تومان یا خوشبینانه تر نگاه کنیم 5 میلیون تومان استخدام شدید و هر ماه حقوق خودتون رو کامل بدون دیرکرد دریافت میکنید حال شرکت یک پروژه گرفته و هزینه 20 الی 30 میلیون تومان برای انجامش دریافت کرده، خب مدیر و بالا دستی های شما چقدر دریافت میکنند و شما که کار اصلی را انجام میدهید چقدر دریافت میکنید؟

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

خب در این بخش مردم سراغ تاسیس شرکت میروند که خودشون شرکت خودشون رو داشته باشند

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

خب این خیلی بهتره شد اما بازم موضوع فرهنگ تیمی و اعتماد پیش میاد، آیا به هم تیمی هاتون اعتماد دارید که همه ی فکر، توان و درآمد خودتون رو با آنها شریک بشید؟ اگه کسی خیانت کرد چی؟ چون به وفور دیده شده یا اگه کسی در بین راه تیم رو رها کرد؟

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

اینجاست که فریلنسر بودن یا آزادکار بودن خودنمایی میکند

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

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

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

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

mrasgari بدون دیدگاه

بازی زندگی

عکس

بازی زندگی برای اولین بار در سال ۱۹۷۰ توسط جان هورتون کانوی ریاضی دان برجسته بریتانیای معرفی شد بازی زندگی در اصل یک اتوماتای سلولی است که بر اساس قواعد خاصی کار می کند

برای درک بهتر یک جدول با ابعاد بی نهایت در بی نهایت را در نظر بگیرید  و در قسمتی از ان بعضی خانه ها را سیاه و بعضی دیگر را سفید رها کنید(در اینجا خانه های سیاه را زنده و خانه های سفید را مرده می نامیم) اتوماتا محتوای هر خانه را بررسی می کند و باتوجه به موقعیت خانه های اطراف ( می دانیم در فضای دوبعدی هر خانه با ۸ خانه دیگر مجاور است) تصمیم می گیرد که محتوای خانه را تغییر دهد یا خیر و این کار را برای تمام خانه ها تکرار می کند

اتوماتا با استفاده از قوانین زیر برای هر خانه تصمیم گیری می کند

۱. هر خانه زنده با کمتر از ۲ همسایه زنده، می‌میرد. (به دلیل کمبود جمعیت)
۲. هر خانه زنده با بیش از ۳ همسایه زنده، می‌میرد. (به دلیل ازدحام جمعیت)
۳. هر خانه زنده با ۲ و یا ۳ همسایه زنده، زنده می‌ماند و به نسل بعد می‌رود.
۴. هر خانه مرده با دقیقاً ۳ همسایه زنده، دوباره زنده می‌شود
عکس ۲

قوانین بالا را می توان به صورت ساده تر این گونه بیان کرد :هر خانه زنده تنها با داشتن ۲ یا ۳ همسایه زنده می ماند و هر خانه مرده با داشتن دقیقا ۳ همسایه زنده می شود

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

کانوی با انتشار این بازی به عنوان یک بازی ریاضی(Mathematical Games) در اکتبر ۱۹۷۰ شهرت فراوانی در بین ریاضی دانان زمان خود کسب کرد و باعث علاقه ی ریاضی دانان به اتوماتای سلولی شد بازی زندگی کانوی تا کنون مشهور ترین اتوماتای سلولی است

بازی زندگی ابتدا تنها جنبه سرگرمی داشت ولی کاربرد های بسیاری برای ان پیدا شد از بازی زندگی در علومی همچون زیست شناسی,فیزیک,علوم کامپیوتر, علوم نظامی واقتصاد استفاده می شود

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

بعضی از الگو های پیاده شده در جدول حالت تکرا شونده دارند به این معنا که الگو ها بعد از گذشت چند مرحله تکرار می شوند و به حالت اولیه باز می گردند

از الگو های معروف می توان به الگوی گلایدر,فضا پیما و… اشاره کرد

با مراجعه به این لینک    (https://bitstorm.org/gameoflife/)می توانید به صورت انلاین بازی زندگی خود را بسازید و نتیجه ان را مشاهده کنید همچنین اپ این بازی برای اندروید موجود است که می توانید به راحتی با یک جستجو ساده ان را پیدا کنید و نصب کنید

عکس۳

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

mrasgari بدون دیدگاه

ماشین تورینگ

ماشین تورینگ در سال ۱۹۳۶ توسط آلن تورینگ دانشمند علوم کامپیوتر(computer scientist) و ریاضی دان بریتانیای ابداع شد
قبل از اینکه به چگونگی عملکرد و نقش ماشین تورینگ در علوم کامپیوتر بپردازیم لازم است با چند مفهوم پایه ای آشنا شویم
اتوماتا:
اتوماتا را می تواندیک مدل ساده و انتزاعی از کامپیوتر های امروزی دانست
یک مدل ساده اتومات به این صورت است که یک رشته ورودی را می خواند بر روی آن اعمال منطقی انجام می دهد و با توجه به ورودی به یک حالت (state) می رود یا یک رشته خروجی تحویل می دهد این کار مبنای عملکرد تمامی سیستم های کامپیوتری است شما یک ورودی به سیستم می دهید در واحد پردازش یک سری پردازش انجام می دهد ویک خروجی به ما تحویل می دهد

محاسبه پذیری:

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

mrt بدون دیدگاه

BIOS و UEFI

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

BIOS :
اول از همه با Bios شروع می کنیم. مطمئناً خیلی ها میدونن چیه ولی خب توضیحاتی میدم. BIOS یا Basic Input/Output System یک نوع Firmware (میان افزار) می باشد. در این Firmware دستورالعمل هایی وجود داره که تو یک نوع Chip بر روی مادربرد کامپیوتر قرار داره. Bios یک نوع حافظه ROM که قابلیت تغییر تو این حافظه وجود نداره و برای این که ما تنظیماتی رو بتونیم روی Bios ذخیره کنیم ، حافظه CMOS وجود داره و تغییرات ما روی اون ذخیره میشه. البته تو مادربرد های جدید ، Bios روی حافظه Flash هست.

بعد از روشن شدن کامپیوترمون (وصل شدن برق) اولین چیزی که شروع به کار می کنه ، Bios هست. بعد از اون به دنبال سیستم عامل برای اجرا میگرده و اون رو پیدا میکنه و ادامه کنترل سیستم رو میده به اون.

بعضی از مادربرد ها از دو Bios استفاده میکنن که مثل Raid در سرور ها عمل میکنه و اگر Bios فعلی دچار مشکل شد ، Bios جایگزین به روی کار میاد تا سیستم از کار نیوفته.

محیط تنظیماتی Bios هم خیلی سادست که میتونیم از وضعیت بعضی از بخش های سیستم با خبر باشیم و تنظیمات رو تغییر بدیم.

UEFI :

خب حالا می خوام توضیحی از UEFI بدم. EFI بین FirmwareBIOS یا  و سیستم عامل که به عنوان واسط عمل میکنه وجود داره. UEFI یا همون Unified Extensible Firmware Interface ، نوع توسعه یافته EFI که توضیح دادیم. در واقع UEFI همون محیط BIOS با امکانات خیلی بیشتر و زیباتر هست.

نوع شروع کار و خوندن اطلاعات بارگزاری سیستم عامل تو BIOS و UEFI خیلی فرق داره. مثلا BIOS از کد هایی ۱۶ بیتی استفاده میکنه اما در مقابل UEFI از فایل هایی که فرمتشون “efi.” استفاده می کنه. این فایل ها هم از پارتیشن های EFI روی دیسک خونده میشه. مکان پیش‌فرض این بارگذارنده سیستم عامل هم تو EFI/BOOT/boot[arch].EFI هست. مثلا تو DVD یا FLash های Bootable سیستم عامل Windows و Linux این فایل رو در قسمت efi/boot/bootx64.efi میتونیم ببینیم.

اگر اینجور محیط ها رو دیده باشید ، اصطلاحاتی مثل UEFI BIOS و Legacy BIOS رو دیدید. منظور از UEFI BIOS همون UEFI و Legacy BIOS همون BIOS هست.

برای اجرای سیستم عامل های مختلف روی UEFI ، باید دیسک رو به حالت GPT تغییر بدیم ، چون UEFI چیزی مثل MBR رو نمیشناسه!

در کل برای این که بتونیم بهتر کلمه های  GPT ، MBR ، UEFI ، BOIS رو درک کنیم ، باید UEFI و GPT رو تو یک سمت و مقابلشون BIOS و MBR رو قرار بدیم.

یکی از برتری های خوب UEFI نسبت به BIOS اینه که ما تو UEFI می تونیم بازده بهتری از حافظه یا دیسک های بالای ۲ ترابایت داشته باشیم. همچنین BIOS یا MBR به تعداد و اندازه پارتیشن‌های دیسک (تا ۴ پارتیشن بر روی هر دیسک و تا ۲٫۲ ترابایت برای هر دیسک) محدود هست ولی مقابلش مدل GPT میتونه دیسک یا پارتیشن های تا اندازه ۹٫۴ زِتابایت بسازه و کار کنه. این هم مهمه که GPT محدود به مشخصه EFI فایل سیستم خاصی نیست.

با UEFI نمیتویم سیستم عامل های ۳۲ بیتی قدیمی مثل Windows Vista ، Xp و … نصب کنیم چون پشتیبانی نمیشن.

شاید کلمه CSM را دیده باشین. CSM یا Compatibility Support Module ، یک نوع Emulator یا مقلد سیستم عامل هایی هست که با UEFI نمیتونن کار کنن و بلعکس. مثلا ما سیستمی داریم که UEFI هست و میخوایم Windows XP نصب کنیم. خب میدونیم که نمیشه این سیستم عامل رو روی UEFI نصب کرد ، پس باید دنبال گزینه CSM بگردیم و اون رو فعال کنیم. 🙂

خب تا اینجا درک نسبتاً خوبی رو میتونیم از UEFI داشته  باشیم. حالا میریم سمت امنیت UEFI. تا حالا چندتا مشکل امنیتی برای UEFI پیدا شده. مثلا یکیش بدافزاری بود که برای خراب کاری نیاز به دسترسی محلی به سیستم UEFI داشت و میتونست کد های مخربش رو روی Flash سیستم ذخیره کنه و یا نوع دیگری از این بد افزار طوری بود که کد های مخرب رو وارد Firmware اصلی میکرد و مانع Boot شدن سیستم میشد. در مقابل این ها ، KUEFI یا Kaspersky UEFI وجود داره. این ضدبدافزار پرونده‌های سیستمی رو قبل از شروع به کار مرور میکنه و هر بدافزار مخفی شده‌ ای رو تشخیص میده. همچنین می‌تونه به کاربر هشدار بده و یا به طور کامل راه‌اندازی سامانه را مسدود کنه تا یک متخصص ( گیک ? ) مشکل رو برطرف کنه.

تمام بحث ما در رابطه با UEFI و BIOS تموم شد و امیدوارم براتون مفید بوده باشه.

ezzati ۱ دیدگاه

زبان برنامه نویسی PHP و رزبری پای

نوشتن برنامه PHP برای رزبری پای آسان است. در این نوشته به شما نشان میدهیم که یک برنامه ساده PHP برای کنترل یک LED  بسازید.

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

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

به جای استفاده از آپاچی می توانید از وب سرور های سبک تر مثل lighttpd استفاده کنید. که از طریق دستور زیر نصب می شود.

ایجاد راتباط مابین رزبری پای وPHP

ساده ترین راه برای برای ارتباط بین PHP و رزبری پای استفاده از تابع shell_exec() است. این تابع به شما اجازه می دهد تا دستورات شل یا همان خط فرمان لینوکس را اجرا کنید. بنابر این مثل یک پل بین رزبری پای و PHP عمل می کند. در حالت ساده می توانید توسط shell_exec اسکریپت پایتون را برای کنترل GPIO رزبری پای فراخوانی کنید.

راه حل دیگر استفاده از کتابخانه Wiring Pi برای کار با GPIO رزبری پای و استفاده از این کنابخانه توسط PHP و تابع shell_exec است. به این منظور شما نیاز دارید تا Wiring Pi را اول روی رزبری پای نصب کنید. این کتابخانه به صورت بسته باینری در دسترس نیست پس شما باید آن را از منبع کامپایل و نصب کنید. خوشبختانه این کار نسبتا ساده است. با نصب برنامه Git کار را شروع می کینم:

در ادامه Wiring Pi را با اجرای Git روی رزبری پای کپی می کنیم.

به پوشه wiringPi می رویم و با دستور ./build آن را کامپایل می کنیم.

برای این که مطمئن شویم Wiring Pi درست نصب و اجرا می شود از دستور gpio -v را اجرا می کینم باید ورژن Wiring Pi و اطلاعات مختصری در مورد رزبری پای نمایش داده شود.

و با اجرای دستور gpio readall دیاگرام و جرئیات GPIO رزبری پای نمایش داده می شود.

برای نمایش کاربرد Wiring Pi یک مثال ساده برای کنترل یک LED را دنبال می کنیم. led را به همراه مقاومت را به پایه ۱۷ برد رزبری پای و زمین وصل کنید طبق شکل زیر ترمینال را باز کنید و با دستور cd به پوشه /var/www منتقل شوید. سپس توسط دستور sudo nano gpio.php فایل gpio.php را ایجاد کنید و کد زیر را در آن کپی و ذخیره کنید. به وسیله CNTRL + X

اتصال led به رزبری پای

کلید های ON و OFF این برنامه شامل فرم های HTML است وقتی شما یکی از کلید ها را فشار می دهید با توجه به عنوان کلید قسمتی از آدرس URL تغییر می کند. (gpio.php?on=ON and gpio.php?off=OFF) و پایه ۱۷ gpio از طرق PHP و دستور shell_exec کنترل می شود.برنامه سطر های ۱۴ تا ۲۱ مقدار کلید را از URL می خواند و توسط تابع shell_exec پین را روشن و خاموش می کند.

برای دسترسی به صفحه طراحی شده کافی است آدرس IP رزبری پای را همراه gpio.php\ وارد کنید به عنوان مثال

برای بدست آوردن IP رزبری پای می توانید از دستور ifconfig در ترمینال استفاده کنید.

اگر دکمه ها کار نکرد به احتمال زیاد وب سرور اجازه اجرای دستورات شل لینوکس را ندارد. برای تصحیح این مورد دستور sudo visudo را در ترمینال اجرا کنید. و خط زیر را به فایل sudoers اضافه کنید.

همچنین مطمئن شوید که var/www/ متعلق به گروه کاربری www-data باشد برای مطمئن شدن دستور زیر را اجرا کنید.

استفاده از پروژه php-gpio

ما از تابع shell_exec برای کنترل GPIO رزبری پای استفاده کردیم ولی این تنها راه نیست به عنوان مثال پروژه php-gpio یک کتابخانه PHP‌ برای دسترسی به پین های GPIO رزبری پای است. برای استفاده از php-gpio از دستور زیر برای دریافت و نصب کتابخانه استفاده کنید.

php-gpio از تعداد کمی API ساده برای استفاده و تغییر وضعیت پین های GPIO رزبری پای اسفاده می کند. اسکریپت باید شامل کد های زیر باشد تا کتابخانه GPIO لود شود و GPIO آماده استفاده

در این مثال در سطر آخر GPIO شماره ۱۷ را به عنوان پین خروجی تنظیم کردیم برای کنترل GPIO به دو دستور زیر نیاز داریم

عبارت اول وضعیت پین ۱۷ را یک می کند یعنی led متصل به آن روشن می شود و عبارت دوم آن را صفر می کند و دستور سطر آخر وضعیت همه پین ها را ریست می کند. برنامه پایین یک برنامه ساده برای راه اندازی یک led چشمک زن به وسیله کتابخانه php-gpio است.

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

اگر چه با کتابخانه php-gpio به راحتی می توان پایه های GPIO را با اسکرپیت PHP کنترل کرد ولی به یاد داشته باشید که این اسکریپت نیز خود باید به وسیله ی خط فرمان اجرا شود به عبارت دیگر شما نمی توانید آن را از صفحه وبی که به وسیله PHP سرور میزبانی شده اجرا کنید.

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

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