نصب وردپرس در اوبونتو

سلام

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

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

توی این مقاله سعی کردم از ابتدایی ترین چیزها رو بگم که هرکسی بتونه همه چیو صحیح و درست نصب کنه که مشکلی نداشته باشه. توی ویندوز یه xampp یا wamp یا… رو نصب میکنیم و همه چی آمادست اما توی لینوکس باید تک تک همه چیو نصب کنیم.

اول از هر کاری، که دستور آپدیت رو اجرا کنید که لیست پکیج هاتون آپدیت بشه:

sudo apt-get update

حالا باید Apache رو نصب کنیم. خب برای نصب Apache اسم پکیجش apache2 هست. پس:

sudo apt-get install apache2

آپاچی هیچ سوالی نمیپرسه و خیلی پسر خوبیه و خودش نصب میشه

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

اگه این صفحه رو توی مرورگر دیدید یعنی آپاچی درست نصب شده

بعد از اون باید PHP رو نصب کنیم. نصب PHP هم مثل آپاچی سادست و اسم پکیجش هم php هست. اما وقتی این پکیج رو میزنید از آخرین نسخه که توی ریپازیتوری اوبونتو هست استفاده میکنه که آخرین نسخه منتشر شده PHP هست و اتوماتیک اونو نصب میکنه اما درصورتیکه میخواستید نسخه خاصی رو نصب کنید، اسم پکیجش به این صورت میشه: php7.x حالا جای این x میتونید از 0 تا هر نسخه ای که منتشر شده قرار بدید.(آخرین نسخه فعلا 7.4 هست که میشه: php7.4)

sudo apt-get install php

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

php -m

خب قاعدتا هر چی کمتر ماژول نصب باشه سرعت بالاتر میره. اما خب خیلی نگران سرعت نباشید. این لینوکسه! هر چی دوست دارید نصب کنید د:

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

php-cli php-json php-mbstring php-mysql php-xml php-xmlrpc php-zip

البته خب این لینوکسه! میتونید بعدا هم نصبشون کنید.

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

sudo service apache2 restart

حالا یه فایل php توی پوشه

/var/www/html/

بسازید و تست کنید که کار کنه برای تست تابع phpinfo() رو تست کنید که با یه تیر دو هدف رو زده باشید.(ببینید ماژول ها کار میکنن)

اما برنامه سوم که باید نصب کنیم، MySQL. نصب این برنامه مثل اون دوتا دیگه سادست و فقط یه مرحله اضافه داره

اسم پکیجش mysql-server هست. پس:

sudo apt-get install mysql-server

یه چیزی که یادتون باید باشه، اینه که حتما ماژول php-mysql هم نصب باشه

یه بار دیگه apache رو ریستارت کنید تا همه چی اوکی باشه

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

sudo mysql_secure_installation

اولین چیزی که ازتون میخواد اینه که رمز روت دیتابیس رو وارد کنید: Enter current password for root (enter for none): اینتر رو بزنید.

بعد از اون ازتون میپرسه میخواین برای روت رمز بزارید؟(Set root password?) شما Y رو وار کنید و اینتر رو بزنید.

حالا یه رمزی رو وارد کنید و حتما اینتر رو بزنید. رمز رو یادتون نره که عوض کردن رمز روت دردسر داره

بعد از اون چهارتا سوال ازتون میپرسه که همه رو Y وارد کنید.

اگه آخر کار بهتون پیام های All done! و Thanks for using MariaDB! رو نمایش داد یعنی نصبش تموم شده.

خب حالا وارد MySQL میشیم و یه دیتابیس برای وردپرس میسازیم:

sudo mysql -uroot -p

رمز روت رو هر چی که گذاشتید وارد کنید تا بهتون عبارت:

mysql>

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

یادتون باشه کوئری های MySQL حتما باید با ; تموم بشن تا اجرا بشن.

create database wordpress;

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

اگه موفقیت آمیز باشه باید پیام Query OK, 1 row affected (0.00 sec) رو بهتون بده

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

GRANT ALL PRIVILEGES ON wordpress.* TO 'root'@'localhost' IDENTIFIED BY 'YOURPASSWORD';

یادتون باشه که به جای YOURPASSWORD حتما رمزتون رو وارد کنید.

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

FLUSH PRIVILEGES;

حالا میتونید از MySQL خارج بشید. دستور exit رو داریم، کلید ctrl + D رو هم میتونید بزنید.

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

cd /var/www/html

خب الان باید وردپرس رو دانلود کنیم:

sudo wget http://wordpress.org/latest.tar.gz

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

sudo tar xzf latest.tar.gz

الان فایل های وردپرس توی یه پوشه به نام wordpress قرار دارن. انتخاب با خودتونه که میخواید فایل ها رو بیارید توی روت سرور یا نه. اگه میخواید دستورش اینه:

sudo mv wordpress/* .

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

sudo chown -R www-data: .
sudo chown -R www-data: ./*

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

localhost

یا:

localhost/wordpress

رو بزنید.

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

Database name:    wordpress
Username:             root
password:             YOURPASSWOR
Database hodt:     localhost

یکی از منابع:

Build a LAMP Web Server with WordPress

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

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

آموزش ساخت پروگرس بار همراه با انیمیشن در 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

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

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

مدل موفق در برنچینگ گیت (Git Branching)

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

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

چرا گیت؟

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

برنچ های اصلی

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

  • Master
  • Develop

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

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

برنچ های پشتیبان

در کنار برنچ های Master و Develop ، مدل توسعه ما از انواع مختلفی از برنچ ها برای کمک به توسعه موازی بین اعضای تیم حمایت میکند،که برای ردیابی ویژگی‌ها، آماده‌سازی برای انتشار نسخه و کمک به حل سریع مشکلات لحظه ای استفاده می شود. بر خلاف شاخه‌ Master، این برنچ ها همیشه زمان محدودی دارند، چون در نهایت حذف خواهند شد.

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

  • Feature branches
  • Release branches
  • Hotfix branches

هرکدام از این برنچ ها برای هدف خاصی ایجاد میشوند و همینطور مشخص میشود که از کدام برنچ انشعاب گرفته میشوند و کدام برنچ برای Merge شدن با آنها است.

به هیچ وجه این برنچ ها خاص نیستند و فقط ما برای هدف های خاصی این دسته بندی ها را ایجاد کرده ایم.

Feature branches

همینطور که از نام این دسته مشخص هست برای اضافه کردن ویژگی های جدید به سورس از این نوع برنچ ها استفاده میکنیم که برنچ ها از Develop منشعب شده و دوباره با همین برنچ ادغام (Merge) خواهند شد.

هرگز برای نام گذاری برنچ های منشعب شده از اسامی زیر استفاده ننمایید:

master, develop, release-*, hotfix-*

برنچ های feature برای توسعه ویژگی های جدید برای نسخه آینده یا آینده دور استفاده می شوند. هنگام شروع یک ویژگی جدید، تاریخ لانچ این ویژگی ممکن است در لحظه شروع ناشناخته باشد. ماهیت یک شاخه ویژگی این است که تا زمانی که این ویژگی در حال توسعه است ، وجود دارد ، اما در نهایت دوباره با develop ادغام می شود (قطعاً ویژگی جدید را به نسخه بعدی اضافه می کنیم) یا حذف(دور ریخته) می شود (در صورتی که تست ناامید کننده ای داشته باشد).

این برنچ ها فقط در برنچ های برنامه نویس موجود هستیند و در origin وجود ندارند.

Release branches

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

وقتی به نقطه ای میرسیم که میتوانیم یک release از سورس داشته باشیم به این معنی هست که تمامی feature برنچ های که ادغام شده اند عملا حذف گردید و برنچ develop برای ایجاد feature های جدید آماده شده است.

Hotfix branches

برای هدف رفع باگ های بهرانی(critical) سیستم استفاده میشود و همیشه از برنچ master انشعاب شده و با برنچ های master یا develop میتواند ادغام شود.

از نظر عملکردی شبیه به نوع برنچ های Release می باشد و بعد از پایان هر برنچ یک نسخه production به نسخه اصلی اضافه میشود.

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

سخن آخر

حالا که همه اینها رو متوجه شدیم تصویر اولی برای ما تصویر مبهمی نیست و یک توصیر کلی (big picture) از روند کار می باشد.

نوشته مدل موفق در برنچینگ گیت (Git Branching) اولین بار در ویرگول پدیدار شد.

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

واترفال، اجایل یا دواپس: کدامیک برای تیم شما بهتر است؟

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

سه رویکرد اصلی برای مدیریت پروژه و تحویل نرم افزار عبارت است از:

واترفال

اجایل

دواپس

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

واترفال

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

به کار بردن مفهوم واترفال برای مدیریت پروژه از دهه ۱۹۴۰ آغاز شد و از دهه ۱۹۵۰ استفاده از آن به ویژه در صنایع تولیدی به عنوان یک امتیاز شناخته شد. این رویکرد هر فاز اصلی را به یک بازه تحویل جدا تبدیل می‌کند و به‌ترتیب دارای مایلستون‌های اصلی زیر است:

درک کسب و کار: مستندات فرآیند کسب و کار که اغلب شامل تحلیل‌های تجاری هستند.

مدل‌سازی: شکستن ساختار اصلی برای رسیدن به راه حلی در مدل‌های بزرگتر

آزمایش: گروه کنترل کیفیت، بخش‌های کامل شده برنامه را آزمایش می‌کنند.

تست پذیرش کاربر (UAT): مرحله نهایی که در آن گروه تجاری کار بازنگری و پذیرش راه حل را انجام می‌دهند.

مزیت مدیریت پروژه به سبک واترفال این است که فازهای اصلی به طور شفاف به دو نوع «برو/ نرو» تقسیم می‌شوند. این راهکار باعث می‌شود مدیران تجاری راحت‌تر درباره ادامه یک پروژه و تقسیم بودجه تصمیم بگیرند.

چالش‌های رویکرد  واترفال شامل سه بخش زیر است:

کار کردن تیم‌ها در حوزه‌های جداگانه

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

شناسایی مقیاس و دامنه‌ برای بررسی وضعیت

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

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

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

ویزاکت را به یاد نمی‌آورید؟ شاید به این دلیل که بازخورد مشتری باعث تغییرات کامل آن نسخه شد و در نتیجه ۳۰ روز پس از انتشار، کل محصول از بین رفت!

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

اجایل

اجایل بیشتر در صنایع دیجیتال به کار گرفته می‌شود و رویکردی جدید در مدیریت پروژه به شمار می‌آید که از سال ۲۰۰۰ نامش به میان آمد. اجایل رویکردهای متفاوتی از جمله اسکرام دارد اما در مجموع همه مدل‌ها در مفاهیم زیر، مشترک هستند:

تیم‌های عملکردگرا و فول استک

اسپرینت‌ها

طراحی مشتری محور

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

اسپرینت‌ها اساسا بازه‌های زمانی دو هفته‌ای هستند. (البته می‌توانند بین یک تا چهار هفته تغییر کنند اما مدل دو هفته‌ای رایج‌ترین نوع است.) در ابتدای هر اسپرینت، کارهای قابل تحویل برنامه‌ریزی می‌شوند. در پایان اسپرینت، موارد تکمیل شده، تحویل داده می‌شوند. به عبارت دیگر، هر دو هفته تیم مقداری از کل پروژه را تکمیل می‌کند.

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

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

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

به نظر می‌رسد حرکت به سمت ترکیب بخش‌های خوب واترفال و اجایل می‌تواند به ایجاد راه حلی به نام سامرفال (ترکیب اسکرام، اجایل و واترفال) ختم شود. این رویکرد می‌تواند به سازمان‌ها برای تغییر فرهنگ از مدل تحویل یکباره به سایر مدل‌های تدریجی کمک کند.

دواپس

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

همکاری در توسعه و عملیات

اتوماسیون

تحویل دنباله‌دار

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

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

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

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

نکته پایانی

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

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

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

فراموش نکنید که در نهایت هدف شما رضایت مشتری است و باید آنچه را که می‌توانید برای رسیدن به این هدف به کار بگیرید.

ترجمه آزاد: Waterfall vs. Agile vs. DevOps: What’s the Best Approach for Your Team

نوشته واترفال، اجایل یا دواپس: کدامیک برای تیم شما بهتر است؟ اولین بار در ویرگول پدیدار شد.

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

آینده تشخیص چهره در ایران

نرم افزار های تشخیص چهره در ایران در اول راه خود قرار دارند.

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

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

https://fanyarai.com/

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

نرم افزار تشخیص چهره فن یار هوشمند

معرفی نرم افزار تشخیص چهره VIP Customer:

طی سال ها کار با نرم افزار های مختلف متوجه شدم سادگی کار با نرم افزار و UI و UX تاثیر بسزایی در باز استفاده از آن نرم افزار دارد.

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

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

https://fanyarai.com/دانلود-نرم-افزار-تشخیص-چهره-vip-customer/

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

امیدواریم از این مقاله لذت برده باشید 🌺

نوشته آینده تشخیص چهره در ایران اولین بار در ویرگول پدیدار شد.

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

همه چیز درمورد پایتون 3.9

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

قابلیت های اضافه شده :
1- Dictionary Union Operators :
اگر ما دو تا دیکشنری داشته باشیم با نام های a , b و بخواییم اونا رو ادغام کنیم با هم از union
operators ها استفاده میکنیم.

Update operator

دومین قابلیت اضافه شده > String Methods هستش که اگر ما یک رشته داشته باشیم و بخواییم پیشوندها و یا پسوندهاشو پاک کنیم از متد های ()removeprefix() , removesuffix استفاده میکنیم به شکل زیر :

suffix and prefix method’s

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

سومین قابلیتی که اضافه شده Type hinting هستش که از پایتون 3.5 ما میتونستیم مشخص کنیم نوع تابع مون رو اما خیلی دست و پا گیر بود کلا اما تو این آپدیت قضیه فرق کرده و پایتون کلی بهمون حال داده 🙂 مثال های زیر رو ببینید :


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

محمدیاسر اکبری

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

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