نگاهی به DevOps

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

چالش های نبود DevOps در سازمان ها :

تیم توسعه بدون درک و دانش کامل از محیط عملیاتی ، نرم افزار رو توسعه میده و بعد از اتمام تمام فرآیندهای توسعه اونا رو در اختیار تیم عملیات قرار میده تا در محیط عملیاتی برای کاربران در دسترس قرار بگیره. این عدم وجود درک کافی از ساختار محیط عملیاتی می تونه شامل مواردی چون عدم شناخت ساختار شبکه اعم از Switching و Routing ، نوع Storage مورد استفاده و عملکرد اون ، نوع سیستم عامل ها ، معماری سرورها و Application Server های مورد استفاده ، تجهیزات امنیتی و … باشه که همگی تاثیر مستقیمی در نحوه ی عملکرد نرم افزار طراحی شده داشته و عدم شناخت کافی اونا میتونه منجر به شکست پروژه بشه.

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

اوایل با تعریف های مختلفی در موردش مواجه شدم. یکی می گفت DevOps همون اسکرامه. یکی می گفت DevOps زیر مجموعه ITIL هست. یکی می گفت DevOps حذف تیم های Test و Deploy از تیم های بزرگ نرم افزاریه و فقط تیم های Develop و Operation باقی می مونه و خیلی خیلی تعریف های دیگه که خیلی هاش از اساس غلط بود و خیلی های دیگه شبیه همون داستان فیل و اتاق تاریک مولانا بود که هر کسی یه قسمت از فیل رو لمس کرده بود و فکر می کرد فیل فقط همونه.

خب DevOps در لغت به معنی Develop + Operation هست.و این مفهوم رو می رسونه که تیم های Develop و Operation باید به هم نزدیک تر باشن و تیم هایی با ساز و کار جداگانه و غیر همسو نباشند.

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

هدف DevOps

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

بیایم باهم ببینیم فواید پیاده سازی دواپس چیه؟

یکی ازون موارد سرعت هستش. DevOps با استفاده از هنر یکپارچه کردن دو تیم توسعه و عملیات ، این امکان رو به متخصصین میده تا تمام فرآیندهای چرخه ی بالا رو از جمله Test ، Release ، Deploy و Monitor رو به کمک پیاده سازی یک چرخه ی اتوماتیک با استفاده از ابزارهای مطرح مانند Jenkins که از جمله ابزارهای CI/CD هستن سرعت ببخشه.

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

بریم حالا وظایف تیم رو ببینیم.

برای تیم DevOps عمدتا وظایف استاندارد و مشخصی وجود داره ، اما سازمان های بزرگ با توجه به ساختارهای سنتی قبلیشون ، اون رو کمی شخصی سازی میکنن تا قابل پیاده سازی و اجرا بشه. ( بعدا در مورد SRE یه مطلب جدا ارائه میکنم.)

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

و اما چارچوب CALMS

چارچوب CALMS یک راهنما برای رسیدن به فرآیند دواپسه که تشکیل شده از:

لغت Culture

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

لغت Automation

یعنی اتوماسیون سازی که در اینجا دقیقا مفاهیم Continuous Delivery – Continuous Integration – Continuous Deployment مطرح میشه، امکان نداره شما ادعا کنید ما فرآیندهای DevOps رو داریم ولی از ابزارهای مثلا CI استفاده نمی کنیم و همه کارها رو دستی انجام میدیم. فرآیندهای دستی کندن و امکان خطای انسانی هم زیاد.برای همین باید اتوماسیون تا اونجایی که ممکنه لحاظ بشه

لغت Lean

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

لغت Measurement

یا اندازه گیری ، معیار سنجش یا ارزیابی در واقع میخواد به ما بگه که باید بدونیم ” ازکجا امده ایم ، امدنمون بهر چه بود! ” .

ما باید بتونیم با ملاکهای خاصی که داریم روال کار رو ارزیابی کنیم. چندتا از این ملاک ها :

Infrastructure Monitoring

Log Management

Application and Performance Management

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

لغت Sharing

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

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

  1. Planning (طرح‌ریزی)
  2. Development (توسعه)
  3. Testing (تست کردن)
  4. Deployment (استقرار)
  5. Maintenance (نگهداری)

Planning (طرح‌ریزی)

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

Development (توسعه)

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

Testing (تست کردن)

در این مرحله، دولوپرها و مسئولین کنترل کیفیت (QC) کدها رو تست میکنن و اونا رو برای یکپارچه شدن با سورس‌کد اصلی آماده می‌کنن. مهندس دواپس در این مرحله وظیفه‌اش اینه برای تکرار خودکار تست‌ها راهی پیدا کنه مانند Jenkins ،Bamboo و یا Drone استفاده کند که این‌ها ابزارهای Continuous Integration یا به‌ اختصار CI هستند که تست مداوم کدها رو راحت می‌کنن.

Deployment (استقرار)

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

Maintenance (نگهداری)

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

نیاز به توضیح نیست که اصطلاح DevOps از دو واژهٔ Development به‌ معنی «توسعه» و Operations به‌ معنی «عملیات» ساخته شده است و تصویر فوق به‌ خوبی گویای وظایف هر کدام از این بخش‌ها است.

نوشته نگاهی به DevOps اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

روز بیست و دوم از چالش ۱۰۰ روز کد زدن – RegEx

درود بر شما خواننده محترم،

بی مقدمه میرم سراغ فعالیت روز بیست و دوم که در خدمت Regular Expressions که به طور اختصار به آن RegEx یا RegExp هم میگن، بودم. تعداد ۳۲ درس در وب سایت Free Code Camp به این مبحث اختصاص داده شده که فرد رو تا حد قابل قبولی نسبت به تعریف، استفاده و قابلیتهای RegEx آشنا می کند.

آموزش های Free Code Camp صد در صد تعاملی و قابل فهم هستند که به شیوه مو شکافانه مسائل رو پیش میبره و برای ما قابل درک می کنه. انصافا میشه گفت در امر آموزش یکی از بهترین هاست و امیدوارم شما عزیزان هم از آموزش های مفیدش استفاده کنید و بهره کافی رو ببرید.

تا درودی دیگر، بدرود.

https://virgool.io/@mohstarsos1/%D8%B4%D8%B1%D9%88%D8%B9-%DA%86%D8%A7%D9%84%D8%B4-%DB%B1%DB%B0%DB%B0-%D8%B1%D9%88%D8%B2-%DA%A9%D8%AF-%D8%B2%D8%AF%D9%86-fxbkp0t9btcy

نوشته روز بیست و دوم از چالش ۱۰۰ روز کد زدن – RegEx اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

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

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

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

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

کلاس حضوری چندتا مزیت داره :

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

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

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

– چهارم اینکه غالب دوره های حضوری برنامه ریزی و سرفصلشون جوری تنظیم شده که برای افراد مبتدی مناسب باشن ( مگر اونایی که پسوند پیشرفته دارن) در حالی که آموزش های مجازی هر کدومشون یه سطحی دارن و غالبا پیش فرض هایی دارن که برای افراد مبتدی کار رو سخت میکنن

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

نوشته شروع سخت برنامه نویسی برای مبتدیان اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

نرم افزار Xcode چیست ؟ آشنایی با محیط Xcode + ویدیو

سلام عرض میکنم خدمت همه شما دوستان عزیز ویرگولی

تو این مقاله میخوایم راجب نرم افزار Xcode صحبت کنیم. اگر دقت کرده باشین هر زبان برنامه نویسی تقریبا IDE مختص به خودشو داره. مثال میزنم : اگر شما بخواین برنامه نویسی اندروید بشین باید با محیط اندروید استودیو کار کنید؛ اگر بخواید برنامه نویس ویندوز بشید باید با محیط ویژوال استودیو کار کنید. اپل هم از این قاعده مستثنی نیست و IDE خودشو برای برنامه نویساش داره. Xcode نرم افزاریه که شما بکمک اون میتونید برای پلتفرم های اپل مثل macOS ، iOS ، tvOS و watchOS اپلیکیشن بنویسید.

تو این مقاله میخوایم دو تا مسئله رو بررسی کنیم :

· آموزش نصب نرم افزار Xocde از طریق Mac Appstore به صورت رایگان (عجیبه که رایگانه :))))

· آشنایی به محیط Xcode و اینکه چه قسمتایی داره.

دانلود و نصب نرم افزار Xcode :

خب از اونجا که نصب این نرم افزار کار آسونیه اول با این قسمت شروع می کنیم. برای نصب Xcode میریم به Mac Appstore و تو سرچش کلمه Xcode رو تایپ می کنیم مثل عکس زیر :

نصب Xcode از طریق مک اپ استور

حجم Xcode یخورده بالائه حدود ۶ گیگه برای همین هم قبل از دانلود مطمئن شید که حجم اینترنتتون کافی باشه.

آشنایی با محیط Xcode 10 :

خب میرسیم به قسمت جذاب ماجرا. تو این بخش میخوایم با محیط Xcode آشنا شیم و ببینیم از چه قسمتای تشکیل شده.

محیط Xcode 10

در این قسمت به شرح هر یک از قسمت ها می پردازیم.

پنل پیمایش یا Navigation Area :

تو این پنل آیتم های مختلفی وجود داره که مهم ترینِ اونها Project Navigator ، Search Navigator و Issue Navigator هستن.

تب Project Navigator : این تب شامل همه ی فایل های برنامه مثل سورس کد ها ، عکس ها ، ویدیو ها ، فونت ها ، آیکون ها و فایل تنظیمات برنامه هستش.

تب Search Navigator : تو این تب میتونیم متن یا عبارتی که تو پروژه دنبالشیم رو پیدا کنیم. مثلا این متن می تونه اسم یه فانکشن یا یه متغیر یا حتی متن یه پیغام باشد.

تب Issue Navigator : این تب تمامِ خطا ها و مشکلات برنامه رو نشون میده . برای مثال خطا های RunTime ، خطا های کامپایلر و هشدار های (Warning ها) مربوط به اشکالات اصلی برنامه تو این قسمت نشون داده میشن

پنل ویرایش یا Editor Area :

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

پنل ابزار یا Utility Area :

یکی از کاربرد های این پنل زمانیه که میخوایم رابط کاربریمون رو طراحی کنیم. وقتی که کامپوننتی مثل Button یا Label رو به صفحه اضافه می کنیم، میتونیم ویژگی های (یا Attribute ها ) مختلف کامپوننت مورد نظرمون رو عوض کنیم.

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

پنل اشکال زدایی یا Debug Area :

این پنل از دو تا قسمت تشکیل شده :

قسمت اول این پنل Variable View هستش. وقتی تو جایی از برنامه (فایل سورس کد) از Breakpoint یا نقطه توقف استفاده می کنیم می تونیم تو این قسمت مقادیر متغیر های برنامه رو ببینیم. این ویوی (View) کاربردی بهمون کمک می کنه تا بفهمیم آیا متغیر ما مقداری داره یا نه . مثلا وقتی که قراره از وب سرویس مقادیر مورد نظرمون رو پر کنیم ، میشه از این قسمت تشخیص داد که مقادیر دریافت شدن یا نه.

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

در آخر ازتون دعوت میکنم تا ویدیویی که تو زیر هستش رو ببینید تا با محیط Xcode بیشتر آشنا شید.

ویدیوی آشنای با نرم افزار Xcode10

نوشته نرم افزار Xcode چیست ؟ آشنایی با محیط Xcode + ویدیو اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

بیایید با هم یک فایل آپلود کنیم روی CDN با php یا python یا laravel

بیایید با هم یک فایل آپلود کنیم روی CDN با php یا python یا laravel

خب اول باید یک CDN بگیریم از آمازون

چطوره این کار رو با سرویس لیارا در یک دقیقه انجام بدیم؟

خب بیایید سایت liara.ir رو باز کنید از این لینک https:/liara.ir و سپس عضویت رو بزنید و ۵۰۰۰ تومان اکانت رایگان بهتون میده.

مثل شکل بالا بسازید و برید مرحله بعدی

خب وارد گیت من بشید https://github.com/saber13812002/aws-php-sample

توی گیت همه چیز رو توضیح دادم بچه ها

و کد رو کلون کنید در سیستم تون و اجراش کنید.

اینجا کامل همه چیز رو توضیح داده https://docs.liara.ir/storage/overview

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

اینم راهنمای بقیه زبان های برنامه نویسی

نوشته بیایید با هم یک فایل آپلود کنیم روی CDN با php یا python یا laravel اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

مهمترین دوراهی زندگیم…!

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

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

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

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

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

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

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

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

الان موندم معلم شدن و تا آخر عمر حقوق گرفتن رو انتخاب کنم و با حداقل های زندگی بسازم یا سمت علاقه و استعدادم برم و مسیری گنگ و مبهم که توش به آرزوهام(یا شایدم هیچ) میرسم…؟

البته به احتمال نود درصد به حرف دور بریام گوش ندم و دلُ به دریا بزنم. دوست دارم نظر شمارو هم بدونم.

ممنون میشم اگه با پیشنهادها و نظراتون راهنماییم کنید.

نوشته مهمترین دوراهی زندگیم…! اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

معرفی اپلیکیشن: Mimo Learn to Code

اگر نگاهی به آمار منتشر شده از برترین شغل‌های جهان در چند سال گذشته داشته باشید خواهید دید که برنامه نویسان در صدر این آمار قرار دارند! از طرفی پیشرفت سرسام‌آور تکنولوژی نیازهای جدیدی به وجود آورده که شاید مهم‌ترین آن‌ها احتیاج به افراد برنامه‌نویس و زبان‌های برنامه‌نویسی جدید باشد. طبق آخرین آمار ارائه شده، در حال حاضر شمار برنامه‌نویسان حرفه‌ای در سراسر دنیا به ۲۳ میلیون نفر می‌رسد و انتظار می‌رود که تا پایان سال ۲۰۲۳ قریب به ۲۷.۷ میلیون برنامه‌نویس داشته باشیم.

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

Mimo: Learn to Code یکی از خوش‌ساخت‌ترین اپلیکیشن‌های یادگیری کامل و اصولی برنامه‌نویسی است. در واقع میمو یک نرم‌افزار آموزشی کد نویسی همراه با تمرینات سرگرم کننده و مؤثر، پروژه‌ها و چالش‌های روزانه می‌باشد که کمک می‌کند تا شما به سطح مطلوب برنامه‌نویسی در زمینه‌های مختلف برسید. میمو با شبیه‌سازی داشبورد نرم‌افزارهای برنامه‌نویسی، اصول و مقدمات زبان‌هایی مثل پایتون، سویفت، سی اس اس، جاوا اسکریپت و … را با تمرینات مستمر و مفید به علاقه‌مندان آموزش می‌دهد و تا امروز یکی از مفیدترین اپلیکیشن‌هایی بوده که در این حوزه دیده‌ایم.

اپلیکیشن Mimo: Learn to Code سعی دارد مفاهیم پایه‌‌ برنامه‌نویسی را به شما آموزش بدهند تا به حدی برسید که اصول اولیه ساخت یک اپلیکیشن، بازی، طراحی وب‌سایت و اصول بنیادین هک را یاد بگیرید. میمو تلاش کرده که این کار را از پایه‌ای‌ترین مفاهیم شروع کند تا پله پله به مباحث پیچیده‌تر برسید.

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

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

در صفحه دوم اپلیکیشن هر روز شما با یک چالش جدید مواجه می‌شوید که می‌توانید با حل کردن آن از میمو پاداش بگیرید.

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

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

دانلود نسخه اندروید: گوگل‌پلی و کافه بازار

دانلود نسخه آی‌او‌اس: اپ‌استور

مقاله اختصاصی از سایت مفتا

نوشته معرفی اپلیکیشن: Mimo Learn to Code اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

روز بیستم – بیست و یکم از چالش ۱۰۰ روز کد زدن – ES6

درود بر شما عزیزان،

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

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

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

تا روزی دیگر، بدرود.

https://virgool.io/@mohstarsos1/%D8%B4%D8%B1%D9%88%D8%B9-%DA%86%D8%A7%D9%84%D8%B4-%DB%B1%DB%B0%DB%B0-%D8%B1%D9%88%D8%B2-%DA%A9%D8%AF-%D8%B2%D8%AF%D9%86-fxbkp0t9btcy

نوشته روز بیستم – بیست و یکم از چالش ۱۰۰ روز کد زدن – ES6 اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

روش های قیمت گذاری پروژه های برنامه نویسی

روش های قیمت گذاری پروژه 🙂 بهترین روش کدام است ؟

چند وقت پیش یکی از دوستان بهم گفت که “سنا راجب به قیمت گذاری بیشتر مطالعه کن!”

شاید منظورش این بود که در این زمینه ناشیانه رفتار میکنی یا …

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

نکته : این پست برای برنامه نویسان اندروید هست ولی اگر میتونید به تخصصتون مرتبطش کنید پس یا علی …

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


سوال پست من : دوستان برنامه نویس اندروید ، شما بر چه اساسی قیمت پروژه را برآورد و به مشتری اعلام میکنید?

من اینگونه برآورد میکنم :
سختی و بزرگی پروژه و تقریبا ساعت های کاری که باید براش در نظر بگیرم (که به کمک پلاگینی به نام #wakaTime دقیقا میشه متوجه شد االبته در پایان کار) رو حساب میکنم
و سپس با توجه به قیمت ساعتی که برای خود در نظر گرفتم
قیمت کلی رو میگم (با یک انحراف معیار کم ، درست میشه) !

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

ممنون از محبت شما 🙏🌼


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

سایت hampadco

نظر دوم ) این روش همانند روش های معمول هست ولی خیلی دقیق تر و تخصصی تر:

نفر ساعت پروژه(مبنا یک برنامه نویس senior) × ۳۳ درصد ضریب اطمینان محاسبه نفر ساعت × قیمت ساعت کار برنامه نویس × ضریب اصتحلاک ثابت + سود منطقی مجموعه برای مثال یک پروژه ۲۱۱۲ نفر ساعت پیشبینی میشه(یک سال) ۲۱۱۲×۱.۳۳×۴۰×۱.۳۰+۳۰۰۰۰= ۱۷۶۰۰۰ ضرایب و فرمول ها در سازمان های مختلف متفاوته ولی ما شبیه به این محاسبه میکنیم دستمزد رو.

در پاسخ گفتم که برای یک برنامه نویس متوسط چطوره ؟

پاسخ : فرقی نمیکنه، ما با مبنای senior محاسبه قیمت برای مشتری میکنیم، و امکان داره بقول شما یک مدیل کار رو انجام بده، که حقوق پرداختی میدل توی سیستم ما برابر با ساعتی ۲۵-۳۰ تومن هست. یعنی برای مشتری فرقی نمیکنه ولی برای سازمان بخاطر میزان حقوقی که میپردازه حاشیه سود بیشتر میشه. که البته با توجه به کیفیت کار ارائه شده توسط برنامه نویس مبلغ قابل توجهی هم پاداش به حقوقش اضافه میشه . اون قضیه اصتحلاک هم مربوط به سخت افزاری هست که داره برای مشتری استفاده میشه و یک مورد رو یادم رفت، سفر ها و جلسات مربوط به پروژه بصورت جداگانه محاسبه و فاکتور به مشتری اعلام میشه.

مورد آخر هم وضعیت سورس هست، قیمت سورس ۲ تا ۳ برابر مبلغ کل پروژه هست یعنی اگر قرار سورس رو تحویل بدید باید مشتری مبلغ ۲-۳ برابر قرارداد رو جداگونه بپردازه.

نظر سوم ) این نظر خیلی جالب بود و تا جایی هم بحث بر انگیز بود :

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

نظر چهارم ) که بنظرم منطقی میومد :

ساعت کاری به نظرم اصلا ملاک نیست . چه بسا شاید ۵ بار فروشگاه اینترنتی درست کرده باشید، پس بار ۶ زمان کم تری میگیری ولی همون بار ۶ هم کد تمیزتر بوده. هم منطقی تر، بهینه تر و با امکانات بیشتر

نظر پنجم ) که بیشتر نکته سنجی دقیتر نسبت به روش معمول داشت :

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

نظر ششم ) که بیشتر از تجربه اشون برامون گفتن :

باید پروژه رو تحلیل کرد دید چقدر زمان لازم هست مثلا ساعتی با x هزینه کار می‌کنی+ چیزایی که براش لازمه مثلا هزینه هاست و دامین و کانفیگ سرور و این چیزا. ما سره یه پروژه هزینه کانفیگ سرور رو ذکر نکردیم و خود سرور رو هم مشتری بهمون داد که سرور کانفیگ نشده بود حالا به دلایلی ما چندبار لازم شد از اول کانفیگ کنیم که اخرش کلی ضرر کردیم.

نظر هفتم ) ایشونم به نکته ظریف و صحیحی اشاره کردن :

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

نظر هشتم ) که بسیار دقیق و با جزییات و با توجه به تجربه ایی که دارند از تیم و حق و حقوق گفتند :

توسعه نرم افزار، فقط شامل برنامه نویسی نیست و فرآیند توسعه، به متخصصین متفاوتی با زمان حضور متفاوت و در نتیجه با دستمزدهای متفاوت نیازمنده. زمانیکه کار به صورت گروهی یا تیمی انجام میشه، تخمین هزینه پروژه به شدت دشواره و پارامترهای محاسباتی زیادی داره. متاسفانه در ایران، در اکثر موارد، هزینه ها رو فقط بر اساس نرخ برنامه نویسی محاسبه میکنند که صددرصد ناکامل و ناصحیحه. بنده به شخصه نمیتونم ادعا کنم که در این مورد فرمولی وجود داره؛ خیلی وقت ها، هنگام مذاکره با مشتری نرم افزار، وقتی به قول قدیمی ها «مزهء دهن مشتری رو میفهمم»، نرخ رو بر اساس ارزش نرم افزار برای مشتری لحاظ میکنم، در اکثر موارد هم این نرخ بسیار پایینه و درنتیجه پروژه رو قبول نمیکنم. ولی گاهی وقت ها، یعنی خیلی خیلی به ندرت، موضوعاتی پیشنهاد میشه که نرم افزار هدف، ارزش محصولی داره و هزینه های پروژه رو میشه با فروش نسخه های دوم و سوم و … تامین کرد، که البته کار پر ریسکیه ولی شدنیه. در مجموع، هر چقدر تیغم ببره مبلغ ارائه میکنم، ولی میانگین نرخ ساعت کاری خودم در حداقل ترین حالت، ۵۰ تومنه که اگر یکماه کاری معادل ۱۹۲ ساعت قانون بیمه تامین اجتماعی رو لحاظ کنم، میشه حدود ۱۰ میلیون. بنابراین برای پروژه هایی که حدود زمانیش قابل تخمینه، میشه یه نرخ حدودی مشخص کرد. البته در نهایت نظر مشتری ملاکه…

نظر نهم ) که این نظر بسیار کوتاه رو میشه با توجه به نظرات قبلی بسط داد چرا که مفهومی عمیق داره:

تکنولوژی و زمان

نظر دهم و تا به اینجا آخرین نظر ) این نظر جنبه ی فان داشت و برای اینکه اینجا هم پایانی رو با لبخند داشته باشیم قرار میدم :

هرچی برنامه نویس قبلی گفته باشی ۱۰۰ تومن پایینتر 🙂 😂 #شوخی البته

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

سنا عبادی , شنبه پانزدهم تیر سال ۱۳۹۸ , ساعت ۱۰:۳۰ صبح

نوشته روش های قیمت گذاری پروژه های برنامه نویسی اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

چجوری پول دربیاریم، از زبان من {یه توسعه دهنده دهه هشتادی}

سلام،

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

خب،

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

گفتم بزار یکم بیشتر مطالعه کنم ببینم چی دوس دارم، به برنامه توسعه وب علاقه مند شدم، html رو یاد گرفتم، گفتم حله دیگه، ناسا رو باهاش هک میکنم :)، دیدیم نه اقا اولا این اصن زبان برنامه نویسی نیست، بعد رفتم دنبالش فهمیدم css هم نیازه، خب اونم یاد گرفتم، با دنگ فنگ، چون اصن مبحث رسپانسیو رو نمیتونستم اجرا کنم، البته بعد یکی دو هفته اوکی شد، و فلس باکس و گرید رو کامل یاد گرفتم :/

خب گفتم دیگه که باید بتونم پول دربیارم ازش! یه تستی زدیم یه هاست رایگان گرفتم و دیدم اصن هیچی از پنل مدیریتش نمیفهمم!!!!!! {سیپنل بود}

رفتم مطالعه کردم و چیزایی که نیازم میشد رو فهمیدم، کد زدم{اون موقع با دریم ویوور کد میزدم} بعد اپلود کردم، احساس خفنی کردم و با خودم گفتم واو تااااااامااااااام!

دریافتم ک نه حاجی هنوز هیچی نیستم، تا قبلش فک میکردم وب همش html و css هستش!

همین مدلی پیش رفتم تا دوسال پیش که ترجیح دادم مطالعه رو بیشتر کنم!

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

ویو جی اس هم خیلی دوس دارم :))))))

این پروسه از هشتم که حالا دارم میرم دوازدهم طول کشید، پس صبر داشته باشید…

خب حالا اومدیم و یاد گرفتیم چجوری پول لعنتی در میاد؟؟؟؟

۱- نمونه کار بزنید تفریحی برای خودتون{تفریحی هم میزنید، خفن بزنید پورتفولیو خیلی مهمه!}

۲- نتورک خودتون رو گسترش بدین: خوش رفتار باشین، دوستای زیاد پیدا کنید، بعد از باز شدن بحث ها، نمونه کاراتون رو به دوستاتون نشون بدین، این دوستا بعدا به معرف های شما تبدیل میشن، که شما رو معرفی میکنن به افرادی که به خدمات نیاز دارن

۳- به هرکاری آره نگید، به عبارت دیگه ارزش کار خودتون رو پایین نیارید

۴- وقتی پول درآوردی، جو نگریتت همه رو خرج کنی 😐 اون میتونه استارت کار بعدیت باشه، یا برای رشد بیشترت کمکت کنه

۵- از هرچی میترسی برو تو دلش، تا اون غولی که تو ذهنت ساختی رو بیرون کنی، مثلا طرف میگه من یه سایت میخوام که توش چت آنلاین داشته باشه، خب بری سرچ کنی همه چی دستت میاد، یه مثال میزنم، قشنگ منظورم رو برسونم،

کارفرما سایتی میخواد که چت آنلاین توش داشته باشه، برفرض مثال من برنامه نویسی گولنگ انجام میدم و نمیدونم که چجوری پیاده کنمش!

خب میرم سراغ جستجو توی موتور های جستجو، ترجیحا انگلیسی سرچ کنید:

How to develop a web base chat app

بعد میفهمم که چیزی که من دنبالشم، بهش میگن real time chat

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

how to develop a real time web base chat app in Golang

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

۶- از اشتباه نترس، اشتباهی کردی هم گردن بگیر، سعی کن درستش کنی

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

تمام این چیزایی که گفتم باعث میشه با قابلیتی ک داری پول دربیاری، حالا چجوری این مهارات رو ارتقا بدی، این مهمه!

درکل به سه قسمت تقسیم میشه!

کیفیت کار

قیمت مناسب

پشتیبانی مناسب

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

موفق و موید باشی، دم شما گرم که اینو خوندی 🙂


نوشته های دیگر من:

میخوام برنامه نویس باشم، نه چیز دیگه ای

چرا API فیسبک با حلقه for شروع میشه؟

آشنایی با formspree

نوشته چجوری پول دربیاریم، از زبان من {یه توسعه دهنده دهه هشتادی} اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی