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

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

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

چون من در پلتفرم WPF برنامه نویسی میکنم این پست در محیط Visual Studio و پلتفرم WPF پیاده سازی میشه.

من قصد دارم این پروگرس بار رو پیاده سازی کنم:

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

  1. 1 شکل دایره ثابت داریم و 1 شکل دایره متحرک
  2. دایره ابی رنگ هم اندازش تغییر میکنه هم مکانش

با دونستن همین 2 مورد کارمون رو شروع میکنیم:

یه دایره ثابت روی Window قرار میدیم:

<Ellipse Width=&quot14&quot Height=&quot14&quot StrokeThickness=&quot2&quot Stroke=&quot#EDEDED&quot/>

طول و عرض 14 و ضخامتش 2 رنگش هم خاکستری میشه حالا دایره متحرک رو ایجاد میکنیم:

<Ellipse x:Name=&quotSpinner&quot Width=&quot14&quot Height=&quot14&quot StrokeThickness=&quot2&quot local:EllipseHelper.StrokeDashArrayValue=&quot0.01&quot StrokeDashCap=&quotRound&quot Stroke=&quot#0078D4&quot RenderTransformOrigin=&quot0.5,0.5&quot>
<Ellipse.RenderTransform>
<RotateTransform x:Name=&quotRT&quot Angle=&quot-90&quot/>
</Ellipse.RenderTransform>
<Ellipse.Triggers>
<EventTrigger RoutedEvent=&quotLoaded&quot>
<BeginStoryboard>
<Storyboard Name=&quotspinInfinite&quot Duration=&quot0:0:2&quot RepeatBehavior=&quotForever&quot>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName=&quotRT&quot Storyboard.TargetProperty=&quotAngle&quot>
<LinearDoubleKeyFrame KeyTime=&quot0:0:0&quot Value=&quot0&quot/>
<LinearDoubleKeyFrame KeyTime=&quot0:0:1&quot Value=&quot450&quot/>
<LinearDoubleKeyFrame KeyTime=&quot0:0:2&quot Value=&quot1080&quot/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName=&quotSpinner&quot Storyboard.TargetProperty=&quot(local:EllipseHelper.StrokeDashArrayValue)&quot><LinearDoubleKeyFrame KeyTime=&quot0:0:0&quot Value=&quot0.01&quot/>
<LinearDoubleKeyFrame KeyTime=&quot0:0:1&quot Value=&quot9&quot/>
<LinearDoubleKeyFrame KeyTime=&quot0:0:2&quot Value=&quot0.01&quot/></DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Ellipse.Triggers>
</Ellipse>

یه دایره ابی رنگ تعریف کردیم که ضخامتش مثل قبلیه، گوشه های اون رو بصورت دایره ای گرد کردیم بعد مکان پیشفرضش برای شروع چرخش رو -90 درجه درنظر گرفتیم همینطور بهش گفتیم وقتی که لود شد یه استوری بورد ایجاد کنه که بصورت دائمی درحال اجرا باشه و بیاد 2 تا انیمیشن رو همزمان اجرا کنه، یکیش برای تغییر زاویه که توی 3 تا فریم انجام میشه و زاویه رو بین 0، 450 و 1080 تغییر میده و برای اینکه پروگرس بار جذاب بشه و حالت کش اومدن پیدا کنه وقتی که داره عملیات چرخش انجام میشه طول اون رو هم تغییر میدیم پس یه انیمیشن دیگه ایجاد میکنیم و توی 3 تا فریم مقدارش رو بین 0.01،9،0.01 تغییر میدیم.

چون مقدار StrokeDashArray بصورت DoubleCollection هستش امکان مقدار دهی اون در استوری بورد نیستش برای همین یه AttachedProperty به اسم StrokeDashArrayValue میسازیم که بیاد مقدار دریافتی رو تبدیل کنه به doubleCollection:

internal class EllipseHelper
{
public static readonly DependencyProperty StrokeDashArrayValueProperty = DependencyProperty.RegisterAttached(
&quotStrokeDashArrayValue&quot, typeof(double), typeof(EllipseHelper), new PropertyMetadata(0.0, OnStrokeDashArrayValueChanged));
public static double GetStrokeDashArrayValue(Ellipse ellipse)
{
return (double)ellipse.GetValue(StrokeDashArrayValueProperty);
}
public static void SetStrokeDashArrayValue(Ellipse ellipse, double value)
{
ellipse.SetValue(StrokeDashArrayValueProperty, value);
}
private static void OnStrokeDashArrayValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (d is Ellipse ellipse)
{
var value = (double)e.NewValue;
ellipse.StrokeDashArray = new DoubleCollection() { value, 100 };
}
}
}

نتیجه میشه چیزی که توی عکس میبینید

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

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

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

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

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

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

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

کم کم کامپیوتر قراضه دهه هشتادی من که کاربردش فقط بازی کردن بود، تبدیل شد به ابزار یادگیری چیزای باحال! بعد از اون سعی کردم و بدون هیچ منبعی خودم پاورپوینت رو یاد گرفتم. کم کم به آفیس مسلط شدم و به لطف کلاس‌های فوق برنامه مدرسمون فتوشاپ رو خیلی مبتدی یاد گرفتم. با تمرین و کنجکاوی یه گرافیست ناشی شدم و این عنوان رفت تو بیوم! (بیوم = My Bio)

کامپیوتر قراضه دهه هشتادی من (البته کامپیوتر من این شکلی نبود :/ )

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

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

اولین مجموعه کتابی که خوندم

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

میگن کار سودآوریه و خیلی پول‌ساز. ما هم گفتیم بریم یاد بگیریم شاید یه چیزی عایدمون شد. بالا از تجربم تو گرافیک گفتم. وقتی با طراحی وب آشنا شدم احساس کردم اون چیزی که تو گرافیک بهش نرسیدم رو میتونم اینجا به دست بیارم. هم برنامه نویسی می‌کنی و هم گرافیک! الان مدتیه فرانت‌اند (Front-End) کار می‌کنم و برام جذابه. فکر میکنم خستتون کردم! یکم دیگه تحملم کنید زود تمومش میکنم.

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


اسم من دامونه، البته اسم اصلیم این نیست، ولی دوستام با این اسم صدام می‌کنن! من تا اینجای زندگی کوتاهم تجربیات زیادی داشتم. شاید بگید عمرم رو الکی هدر دادم، اما نه. من الان یه نوجوون هستم که شناخت خوبی از توانایی‌هام دارم و می‌دونم در آینده چه شغلی رو باید انتخاب کنم. من نوشتن رو دوست دارم و امیدوارم که تونسته باشم نوشته خوبی بنویسم.

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

سلام دنیای وبلاگ نویسی، سلام ویرگول …

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

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

تفکر الگوریتمی چیست و چطور تفکر الگوریتمی داشته باشیم؟!

همه‌ی افراد با تجربه بر این باورند که داشتن توانایی حل مسئله به مراتب مهم‌تر است از آشنایی با چندین تکنولوژی. در واقع یادگیری این مسئله که چطور مثل یک برنامه نویس فکر کنیم به مراتب زمان‌برتر و سخت‌تر است تا یادگیری تکنولوژی‌های برنامه نویسی!

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

چرا روش حل مسئله مهم است؟

همه ما در زندگی به مشکل برمیخوریم. مشکلاتی که مثل مسائل ریاضی هستند. یا باید آن‌ها را حل کنیم یا نمره آن بخش را نمیگیریم! دقیقا مثل مسئله حل کردن اگر برای رویارویی با مسائل فرمول و روش نداشته باشیم، در دردسر میوفتیم.

شاید بتوانیم الله بختکی چندتایی را حل کنیم، شاید بتوانیم گره‌های بزرگتر را با دهان باز کنیم! اما در نقاط حساس گیر میکنیم.(یکبار جستی ملخک! ….)

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

داشتن چهارچوب

چطور مثل یک برنامه نویس فکر کنیم و در مواجه با مسائل، چهارچوب خودمان را داشته باشیم؟

C.Jordan Ball:
داشتن چهارچوب به این معنا نیست که تمام مسائل را به یک شکل حل کنید! افراد با هم تفاوت دارند و ممکن است هر فرد یک مسئله را به شکل متفاوتی حل کند. از طرفی راه حل تمام مسائل هم یکسان نیست. اما اگر برای حل مسئله‌هایتان از مجموعه‌ای از اصول پیروی کنید، خیلی سریعتر پیش خواهید رفت.

پس به این نصیحت گوش میدهیم و برای حل مسائل از مجموعه‌ای از اصول پیروی میکنیم. کدام اصول؟ با من همراه باشید:

مجموعه اصولی که برای حل مسئله نیاز است رعایت کنیم:

· فهم مسئله

قبل از اینکه خودکار را دستتان بگیرید و برای مسائل برنامه نویسی(یا زندگیتان) نسخه بپیچید، کمی تامل کنید و به این سوال پاسخ دهید: مسئله چیست؟

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

راه‌های زیادی وجود دارد که بررسی کنید آيا مسئله را درست فهمیده‌اید یا نه. هر کدام از این راه‌ها با توجه به شخصیتتان ممکن است برایتان کارساز باشد یا نه.

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

· برنامه ریزی

قبل از اینکه بپرید در دل مسئله، حتما برنامه‌ای برای حل مسئله‌تان بچینید. همچنین حواستان باشد مسائل پیش‌بینی نشده را تا حد ممکن پیش‌بینی کنید و برای رویایی با همچین مواقعی پلن A,B,C,… طراحی کنید.

به طور خاص درباره برنامه نویسی، باید بدانید اگر ورودیx را به مسئله بدهیم، چه مراحل و اقداماتی لازم است تا خروجی y را دریافت کنیم؟ وظیفه شما طراحی این مراحل است.

· تقسیم

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

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

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

· بن بست

اگر به بن بست خوردید و مسئله‌تان حل نشد چی؟ در افراد مختلف ۲ رویکرد متفاوت دارند:

لوزرها: من میدانم ما میمیریم! در واقع فقط آیه یاس میخوانند و میگویند حل نمیشود، نمیدانم، نمیتوانم و…

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

· دیباگ کردن

ابزار زیادی برای این کار وجود دارد اما در مسائل ساده شما میتوانید به صورت دستی هم دیباگ کنید. مرحله به مرحله جواب را بررسی کنید. باید ببینید در کدام مرحله خروجی‌ای تولید میشود که مورد انتظار شما نیست.

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

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

نوشته تفکر الگوریتمی چیست و چطور تفکر الگوریتمی داشته باشیم؟! اولین بار در ویرگول پدیدار شد.

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

۵ مزایای کاربردی یادگیری مهارت برنامه نویسی برای مدیران کسب و کار

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

زندگی با برنامه نویسی 🙂

۱. یادگیری یک مهارت

یکی از بهترین تجربه‌هایی که در زندگی برای همه ما پیش میاد، یادگیری یک مهارت و کار جدید هست. شما با یادگیری یک مهارت، از حاشیه امن خودتون خارج و با مسائل جدیدی روبرو می‌شین. با رویارویی با این مسائل، دیدگاه شما نسبت به نحوه زندگی و انجام کار‌های روزمره، تا حد زیادی تغییر می‌کنه. ممکنه در مدیریت یک کسب و کار به جایی برسید که مشکلات به نظر غیرقابل حل باشن ولی با یادگیری برنامه نویسی با این حقیقت روبرو می‌شید که هر مشکلی مطمئنا راه حلی داره که با تلاش و پشتکار حتما به این راه حل دست پیدا می‌کنین.

۲. توجه به جزئیات

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

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

۳. خلاقیت در حل مسائل

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

خلاقیت *_*

۴. چالش همیشگی

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

۵. اجرای ایده‌های کاری

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


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

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

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

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

من برنامه نویس خیلی خسته ایم٬ البته به این معنی نیست که حوصله برنامه نویسی ندارم بلکه حوصله‌ی انجام کارای تکراری ندارم

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

مسئله چیه؟

اگه به نوشته های آخریم مرور کنین میبینین که تصمیم گرفتم یک سایت آموزش برنامه نویسی بسازم.

مسئله این بود که اول نمیخواستم برای پست‌هام عکس بزارم٬ بعد دیدم سایته زیادی ساده شده بود٬ یه جوری انگار مرده٬ بعد تصمیم گرفتم از سایت placeholder.com ‌استفاده کنم٬ این سایته یه سرویسی داره که text٬ سایز و رنگ بهش میدی اونم یه Placeholder میده٬ اینو امتحان کردم ولی بازم چیزی که دلم میخواست نشد.

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

خب اینجا تو لینوکس gimp داریم٬ منم از uiش اصلا خوشم نمیاد٬ واقعا Photoshop یه چی دیگه اس.

پس گفتم بیام یه کاری بکنم٬ ی اسکریپتی بنویسم که نوشته بگیره و بزاره تو عکس٬ بالاش هم لوگوی پایتون 🙂

چطور حل شد؟

اولین کاری که کردم کاریه که همه‌ی برنامه نویسا میکنن٬ گوگلینگ گوگلینگ

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

نوبت نوشته رسید٬ چاپ نوشته اسون بود ولی center کردنش یه ذره سخت بود ولی با تشکر از stackoverflow تونستم سریع centerش کنم.

میرسیم به سختترین قسمت کار. اضافه کردن لوگو بود٬ دربالا یه عکس ۳ بعدی درست کرده بودم درحالی که عکس پایتون بصورت rgba بود٬ یعنی کانال alpha هم داشت٬ سر این اذیت شدم بعد فهمیدم که باید عکسی که درست کردم کانال alpha هم بهش اضاف کنم و همینکارو کردم و شد٬ هرچند هنوز یه مشکل دیگه مونده بود که اونم transparency بود٬ باز هم اینجا مراجعه کردم به stackoverflow و حل شد٬ هرچند هنوز این تیکه کدشو درک نکردم :)) ولی فعلا میخواستم کارم راه بیفته٬ بعد که خواستم جدی opencv کار کنم جدی پیگیرش میشم.

و نتیجه این شد:

عکسی که با اسکریپت تولید شد

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

این اولین تجربه ام با OpenCV بود٬ تجربه باحالی بود بنظرم. دوست دارم به مرور این اسکریپتو ارتقا بدم.

نکته: مطمئنم روش‌های بهتری هست اون بیرون ولی دنبال بهونه بودم که ی دستی به opencv بزنم بخاطر همین این روشو رفتم 🙂

اگه کنجکاو بودین کدش چیه٬ به repo زیر سربزنید.

لینک: https://github.com/HamadTheIronside/simple-poster-creator

Author: Abdollah Keshtkar
Email: akeshtkar78@gmail.com
Website: ohmycode.ir

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

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

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

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

پایتون سرراست و جذابه :

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

درک آسان:

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

انعطاف ­پذیری بالا:

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

جامعه کاربران:

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

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

چند منظوره بودن

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

می توانید برنامه های وب خود را با استفاده از Django و Flask ایجاد کنید ، می توانید تجزیه و تحلیل داده ها را با استفاده از NumPy ، Scipy ، Scikit-Learn و NLTK انجام دهید.

شغل و رشد

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

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

نوشته چرا همه باید زبان برنامه نویسی پایتون رو یاد بگیرن؟ اولین بار در ویرگول پدیدار شد.

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

گیت به زبان ساده

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

گیت (Git) چیست

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

برای یک تیم حرفه ای مهمه که همه اعضای(Developer های) اون بتونن با ابزارهای معین شده در تیم کار کنند. یا حداقل آشنایی استفاده از این ابزارها را داشته باشند. دلیلشم اینه که گیت یه کپی از پروژه رو به دست هر کدوم از اعضای تیم میرسونه و به تیم این قدرت رو میده که بتونن همزمان به تکمیل بخش های مختلف بپردازن و توسعه خودشون رو تکمیل کنند.

منظور از آشنایی اعضای تیم این است که بتونن با 4 کامند اصلی (Pull,Push,Commit,Add) این ابزار کار کنند.

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

برای شروع ابتدا باید Git رو روی سیستم خودتون نصب کنین، که بعد از نصب یک Bash به ما میده که میتونیم دستوراتش رو اجرا کنیم(ی چیزی شبیه به CMD).

محیط git Bash

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

شروع گیت

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

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

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

$ git init
اجرای دستور git init

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

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

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

$ git status
اجرای دستور git status

همینطور که در تصویر بالا میبینیم بهمون میگه که دوست خوب من شما یه فایلی داری که هنوز بهم نگفتی که مدیریتش کنم ( دستور git status یه دستور هست برای اینکه شما ببینید فایل هاتون تو چه شرایطی هستن هنوز به مدیریت گیت اضافه شدن یا نه ؟ یا مثلا این فایل ها نهایی شدن یا نه ؟ )

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

$git add one.txt

بعد از دستور بالا دوباره دستور git status رو اجرا میکنیم تا رفتار گیت رو ببینیم

بعد از اجرای دستور git add

همینطور که میبینیم گیت مسئولیت فایل رو بر عهده گرفت حالا بریم ببینیم در برابر تغییرات چ رفتاری داره، برای این کار من محتویات فایل one.txt رو تغییر میدم دوباره وضعیت رو چک میکنم

بعد از تغییرات فایل

بله همینطور که میبینیم داره بهم میگه که تو فایلتو تغییرش دادی پس با گیت میتونیم اینطوری ببینیم و بهمون کمک میکنه که با دقت تر کد بزنیم!

خوب بعد از تغییرات ما باید این تغییرات رو ثبت کنیم که برای اینکار از دستور commit استفاده میکنیم

$git commit -m [message]
احرای دستور git commit

خوب گیت این تغییرات رو ثبت کرد و از این به بعد به تغییرات جدید گوش میده.

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

کار با ریپازیتوری های گیت سرور

اگر ما بخواهیم تغییرات رو روی سرور منتقل کنیم تا همه همکاران هم بهش دسترسی داشته باشند هم برای کارهای Merge , … که بهش خواهیم رسید باید به سرور یا به اصطلاح بالا ارسال بشوند.

ما فرض بر این میگیریم که سرور ما بالا آماده است (GitHub,GitLab,Azure Git , ای سرور شخصی)

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

$git push origin [branchName]

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

git pull [<options>] [<repository> [<refspec>…​]]

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

مبحث اول Branch

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

یکی از مزایای وجود شاخه‌ها در سیستم گیت این است که می‌توان به تعداد توسعه‌دهندگانی که در تیم حضور دارند برنچ‌های اختصاصی ساخته و در آنِ واحد تمامی اعضای تیم بتوانند اقدام به توسعهٔ نرم‌افزار کنند. برای درک بهتر این موضوع، فرض کنیم برنامه نویسی داریم به نام بهزاد قرار است قابلیت درگاه پرداخت را به پروژه بیفزاید و دولوپر دیگری به نام سهند قرار است تا رابط کاربری را تکمیل کند؛ در چنین شرایطی، می‌توان دو شاخهٔ‌ فرعی از شاخهٔ مَستر تحت عناوین دلخواهی همچون behzad-branch-gateway و sahand-branch-ui ایجاد کرده و هر کدام از ایشان با سهولت هرچه تمام‌تر شروع به کدنویسی کرده و چنانچه در نهایت کدهای نوشته‌شده مورد تأیید مدیر فنی بود،‌ با شاخهٔ اصلی (مَستر) ادغام خواهند شد.

همان‌طور که در تصویر فوق ملاحظه می‌شود، خط عمودی که در سراسر نمودار ملاحظه می‌شود به عنوان بِرَنچ اصلی یا مَستر است که فرض می‌کنیم توسط توسعه‌دهندهٔ اصلی پروژه کامیت‌هایی تحت عناوین C1 و C2 انجام شده است. سپس یک شاخه از شاخهٔ اصلی جدا شده و نامی دلخواه همچون Branch1 برای آن در نظر گرفته‌ایم که فرضاً توسط یکی از اعضای تیم هَندل می‌گردد به طوری که وی سه کامیت داخل این شاخه انجام داده است. در آنِ واحد،‌ برای یکی دیگر از اعضای تیم شاخه‌ای به نام Branch2 ساخته شده و او نیز یک کامیت انجام داده است. در نهایت، دولوپر اصلی این پروژه کلیهٔ تغییرات اِعمال‌شده در دو بِرَنچ فوق را با بِرَنچ اصلی (مَستر) ادغام کرده و کلیهٔ‌ این تغییرات را تحت عنوان C7 کامیت کرده است.

با این توضیحات تئوریک،‌ در ادامهٔ‌ این آموزش خواهیم دید که به چه شکل به صورت عملی می‌توانیم اقدام به ساخت بِرَنچ‌های مختلف کرده سپس آن‌ها را با یکدیگر ادغام نمود. ادامه این بخش رو میتونیم از منبع اصلی این بخش یعنی سکان آکادمی استفاده کنیم.

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

چگونه از Branch ها برای مدیریت کدها در گیت استفاده کنیم

مکمل قدرتمند گیت git flow

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

Best Practice های گیت

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

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

تدریس خصوصی React (بصورت آنلاین , مجازی)

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

دوره تدریس خصوصی آنلاین و مجازی React

خلاصه این دوره :

  • آشنایی با Node JS و نصب پکیج های مورد نیاز
  • مروری بر کلیات وب اپلیکیشن ها و آشنایی به مفاهیم اصلی
  • تعریف کلی از React و آشنایی با Virtual-DOM و JSX
  • معرفی پکیج های کاربردی React
  • آشنایی با نحوه پیاده سازی Component ها و انواع آن
  • نحوه کار با state و prop و توابع کاربردی مرتبط
  • آموزش استفاده از state management مثل Readux, Context API
  • نحوه ارتباط با وب سرویس های RESTful API و نمایش اطلاعات
  • پیاده سازی Event برای دکمه , کار با Hook ها مثل useState, useEffetct و …
  • و غیره …

هزینه این دوره :

در جهت حمایت از دوستان علاقمند و بعلت شرایط کرونا , هزینه هر ساعت تدریس با تخفیف ویژه فقط و فقط 75 هزار تومان می باشد. لطفا قبل از هر اقدامی این قیمت رو با بقیه دوره ها مقایسه کنید …

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

مشاوره و تعیین سطح :

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

چطور ثبت نام کنم ؟

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

bugless.ir [at] yahoo [dot] com

با تشکر , موفق باشید

نوشته تدریس خصوصی React (بصورت آنلاین , مجازی) اولین بار در ویرگول پدیدار شد.

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

چالش گوگل foobar

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

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

سرچ کردم بصورت خلاصه می گویند ؛

گوگل براساس سابقه سرچ و فعالیت شما ، شما را به چالش فوبار دعوت می کند که شامل مجموعاً 5 مرحله و 9 مسئله برنامه نویسی است.

اگر مرحله 3 را به اتمام برسانید ، فرمی برای گرفتن مشخصات شما باز می شود و پرونده شما برای کارشناس گوگل ارسال می شود تا برای همکاری بیشتر بررسی شوید!

در اینجا مثلاً چنین چیزی درباره google foobar نوشته :

What is Google Foobar Challenge?
Google Foobar is Google’s secret hiring challenge. The interesting thing about foobar is that not everyone can unlock the challenge, only a few people get the invitation.
Google analyses your search history and reading patterns and if they satisfy certain conditions, they send you the invite. No one knows what these patterns are or how is the challenge unlocked. But what we know is that many developers have been hired through this challenge.
So I clicked the “I want to play button” and it redirected me to a new page with UNIX Shell-like interface. I had to sign to save my progress.
The Foobar challenge consists of 5 levels. Each level consists of some problems for which you have to write a solution in either python or java. The difficulty increases as you level up. After level 3 it asks you to fill your contact details and if they like your submission, they may contact you for an interview. Let’s go through each level.

در اینجا چنین نوشته :

So. you got Google’s Foobar Invitation. First of all, very very congratulations on that, you should have known that this is not an ordinary invitation but the special one that Google sends to only some special type of developers.
Now we know Foobar is some weird invitation from Google, but I want to talk about a little in detail. So, let’s explore all the questions you have in mind.
Google Foobar is Google’s secret hiring challenge. Google uses this to hire some of the best developers around the globe which they think can be a good match for their organization. Many developers in Google have been hired through this hiring challenge.

آدرس google.com/foobar و foobar.withgoogle.com به یکجا اشاره می کنند.

در صورت زدن I want to play وارد محیطی شبیه ترمینال لینوکس می شوید که دستورات محدودی دارد. مهم ترین این دستورات شامل موارد ذیل هستند :

دستور request : تقاضای چالش جدید درصورت حل کردن چالش جاری

دستور cat و ls : همان معادل خودشون بدون سوییچ ها

دستور edit: برای حل مسئله شما باید فایل solution.py یا solution.java را با دستور edit باز و ویرایش و ذخیره کنید

دستور verify : تست کارکرد حل شما برای شرایط و داده های وروردی مختلف مسئله

دستور submit : ثبت حل مسئله شما ، باید قبلاً verify کرده باشید و همه تست کیس ها را پاس کرده باشد

سناریو و مراحل پیشرفت

شما یک مینیون هستید که به مقر فرمانده لامبدا نفوذ کرده اید که می خواهد با LAMBCHOP doomsday device سیاره Bunny را نابود کند!😱 و قراره اونجا خرابکاری کنید!

با پنج مرحله مواجه هستید که اگر کمی پایتون یا جاوا و حل مسئله و الگوریتم در حد دوره کارشناسی بدانید احتمالاً مشکلی برای حل کردن آن ها نداشته باشید :

  • مرحله 1: یک مسئله و 2 روز وقت دارد.

حتماً باید مرحله یک را با موفقیت تمام کنید تا فرآیند در اکانت شما ذخیره شود و در روزهای بعدی ادامه دهید.

  • مرحله 2: دو چالش و 3 روز وقت برای هر کدام دارد
  • مرحله 3: سه چالش و 4 روز وقت برای هر کدام دارد

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

  • مرحله 4: دو چالش و 15 روز وقت برای هر کدام دارد
  • مرحله 5: یک چالش و 22 روز وقت دارد

به ترتیب که جلوتر می روید چالش ها پیچیده تر و نکته دار تر می شوند و پیش میاد که مطمئن هستید الگوریتم و کدی که زده اید و تست کرده اید درست است اما مثلاً 2 تا از test case ها را پاس نمی کند. (باید همه را در verify پاس کند که بتوانید submit کنید)

چگونه به گوگل فوبار دعوت شویم؟

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

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

راه دیگری هم برای شرکت در چالش foobar هست :

بعد از حل مرحله 2 و 4 شما یک کد invite می گیرید که میتوانید بوسیله آن سایر دوستان خود را به این چالش دعوت کنید.

بعد از مرحله 5 هم request چالش جدید باز هست اما هنوز امتحان نکردم با حل چالش های جدید کد دعوت جدید هم می دهد یا نه.

چگونه در گوگل فوبار موفق شویم؟

نمونه و پاسخ تقریباً همه سئوالات روی اینترنت هست.

کد جاوا یا پایتون را بگیرید ، در محیط خودتون paste و test کنید. اگر درست بود بررسی کنید الگوریتم و راه حلش را ببینید.

کدهای دیگر همان مسئله را هم بگیرید همان کار را بکنید.

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

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

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

چالش اصلی

تمام که می شه به شما یک encrypted message نمایش داده می شود که با این کد بنقل از اینجا می توانید باز کنید و شامل یک دیکشنری با 5 خانه است که هر کلید کلمه ای است حاوی مقداری که کلمه دیگری است.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import base64
MESSAGE = '''
[YOUR MESSAGE]
'''
KEY = 'YOUR KEY'
result = []
for i, c in enumerate(base64.b64decode(MESSAGE)):
    result.append(chr(ord(c) ^ ord(KEY[i % len(KEY)])))
print ''.join(result)

واقعیت اینه فکر کنم چالش اصلی این باشه که الان با این 10 کلمه چه کار باید کرد؟

معنی خود لغت foobar بنقل از ویکیپدیا (برای نام گذاری متغییرها در حین آموزش یا ارائه مثلاً میگن foo و bar) :

The terms foobar (/ˈfuːbɑːr/), or foo and others are used as meta-syntactic variables and placeholder names in computer programming or computer-related documentation.
They have been used to name entities such as variables, functions, and commands whose exact identity is unimportant and serve only to demonstrate a concept.

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

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

آیا #هوش_مصنوعی برنامه نویسان را بیکار خواهد کرد؟

تکنولوژی تبدیل طرحی که روی کاغذ کشیده اید به قالب اچ تی ام ال
این طرح که در ویدیو زیر مشاهده می کنید مربوط به شرکت مایکروسافت هستش
sketch2code
https://lnkd.in/gASyiGM

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


https://www.aparat.com/v/H7ObD

#برنامه_نویسی #هوش_مصنوعی

نوشته آیا #هوش_مصنوعی برنامه نویسان را بیکار خواهد کرد؟ اولین بار در ویرگول پدیدار شد.

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