اما برنامه آینده آموزش فلاتر چیه ؟

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

ممنون از تک تک تون و حمایت هاتون که باعث میشه آدم انرژی بیش تری در این مسیر بگیره

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

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

اما قطعا با تمام وجودم برمی گردم و این زمان را جبران خواهم کرد

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

مشتاقانه منتظر آن ها هستم

تلگرام pejmanprogrammer

واتساپ 09226676036

کد های فلاتری خوبی داشته باشید

عشق فقط فلاتر 🙂

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

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

آموزش های فارسی ویجت های فلاتر دور هم این جا جمع شده اند

ویجت 1 (SnackBar در فلاتر)

ویجت 2 (Stack در فلاتر)

ویجت 3 (AlertDialog در فلاتر)

ویجت 4 (FloatingActionButton در فلاتر)

ویجت 5 (SliverAppBar در فلاتر)

ویجت 6 (Align در فلاتر)

ویجت 7 (PageView در فلاتر)

ویجت 8 (Spacerدر فلاتر)

ویجت 9 (RichText در فلاتر)

ویجت 10 (ListView در فلاتر)

ویجت 11 (DraggableScrollableSheet در فلاتر)

ویجت 12 (ListTile در فلاتر)

ویجت 13 (AnimatedPositioned در فلاتر)

ویجت 14 (FadeInImage در فلاتر)

ویجت 15 (ToggleButtons در فلاتر)

ویجت 16 (IndexedStack در فلاتر)

ویجت 17 (Hero در فلاتر)

ویجت 18 ( Row/Column در فلاتر)

ویجت 19 ( Wrap در فلاتر)

ویجت 20 ( Expanded در فلاتر)

ویجت 21 (SafeArea در فلاتر)

ویجت 22 (Flexible در فلاتر)

ویجت 23 (AbsorbPointer در فلاتر)

ویجت 24 (LayoutBuilder در فلاتر)

ویجت 25 (Container در فلاتر)

ویجت 26 (BackdropFilter در فلاتر)

ویجت 27 (SizedBox در فلاتر)

ویجت 28 (DropDownButton در فلاتر)

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

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

روزهای خوب ریلیز

این روزا خیلی حالم خوبه به خاطر حدود یک ماه کار فشرده ! و ریلیزی که هفته پیش دادیم.

یه نفس راحت …

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

کاره دیگه … چه میشه کرد.

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

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

ساخت بات تلگرام! قسمت 1

سلام.

دارم یه کد کوچیک میزنم برای یه کاری گفتم که با بقیه هم به اشتراک بذارم!

ایده کلی کار: چنتا کانال داریم! حالا هر کانالی میخایم که هرچی پیام توی اینا اومد رو یکم تغییر بدیم و بذاریمشون توی کانال خودمون.

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

یه بات cli که یه اکانت معمولیه مث همین اکانتی که خودمون داریم ازش استفاده میکنیم ، فقط بات کنترلش میکنه!

یه بات دیگه هم داریم که اون بات اصلیه و مثل همه رباتایی که میشناسیم یه آیدی داره که آخرش bot داره و بقیه امکاناتی که دیگه هممون دیدیم!

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

بریم ویدیوش رو ببینیم:

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

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

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

تنظیم ادیتور ویم برای برنامه نویسی [پایتون]

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

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

لینک تنظیم ادیتور ویم برای برنامه نویسی در آپارات و یوتیوب.

نصب خود ویم

توی قسمت های قبلی که با ویم کار کردیم پس منطقا نصب شده (: اما بحث اینه که انتظار می ره ویم شما نسبتا جدید باشه، حداقل بالاتر از ۷.۳.

➜  ~ vim --version
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Apr 12 2020 17:46:58)

اگر روی مک هستین و ورژن شما پایینتر است، شاید با brew update و brew install vim بتونی وضع رو بهتر کنین. روی لینوکس ها احتمالا به اندازه کافی به روز هستین.

پلاگین‌‌های ویم

ویم الان یه شبیه یه پلتفرم شده که روش کلی پلاگین نصب می کنین و کارهایی رو می کنه که شما دوست دارین. نصب پلاگین‌های از طریق مدیراکستنش‌ها انجام می‌شه که یکی از مرسوم‌هاش Vundle است. نصبش ساده است. واندل رو کلون می کنینش توی تنظیمات پلاگین های ویم؛ یه چنین چیزی:

git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

حالا برای شروع تنظیمات کافیه یه فایل به اسم .vimrc توی هوم درست کنین:

touch ~/.vimrc

و توش تنظیمات واندل رو اضافه کنین:

set nocompatible              &quot required
filetype off                  &quot required

&quot set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

&quot alternatively, pass a path where Vundle should install plugins
&quotcall vundle#begin('~/some/path/here')

&quot let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'

&quot add all your plugins here (note older versions of Vundle
&quot used Bundle instead of Plugin)

&quot ...

&quot All of your Plugins must be added before the following line
call vundle#end()            &quot required
filetype plugin indent on    &quot required

set encoding=utf-8

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

:PluginInstall

حالا وقتشه که قدم به قدم پیش بریم.

استفاده خوب

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

تا کردن کد

تا کردن؟ انگلیسی ها می گن fold. در حالت عادی با za فولد می شد ولی خیلی ها می ذارن روی space.

&quot Enable folding
set foldmethod=indent
set foldlevel=99

البته دقت کنین که فولد بر اساس ایندنت انجام می شه. برای پیشرفته‌تر کردن با درک زبان و … SimpylFold رو سرچ کنین.

فرمت بهتر فایل برای پایتون

برای ایندنت کردن بر اساس پپ۸، اینها رو اضافه کنین:

au BufNewFile,BufRead *.py
    set tabstop=4
    set softtabstop=4
    set shiftwidth=4
    set textwidth=79
    set expandtab
    set autoindent
    set fileformat=unix

و برای ایندنت خوب اتوماتیک:

Plugin 'vim-scripts/indentpython.vim'

و چنین چیزی برای مشخص کردن اسپیس های اضافی

au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /s+$/
 highlight BadWhitespace ctermbg=red guibg=darkred

اتوکامپلیت

اتوکامپلیت ایده ها و شکل های مختلفی داره. مثلا ممکنه فانکشن های اصلی رو بدونه یا ممکنه متغیرها رو زیر نظر بگیره و … گزینه اصلی خیلی ها برای مجموعه ای از زبان‌ها ِYouCompleteMe است که باید مستقل نصبش رو پیش برین. با این به واندل اضافه اش کنید:

Bundle 'Valloric/YouCompleteMe'

و بعد از نصبش چند تا تغییر ریز هم بدیم:

let g:ycm_autoclose_preview_window_after_completion=1
map g  :YcmCompleter GoToDefinitionElseDeclaration

ویرچوال انوها

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

&quotpython with virtualenv support
py << EOF
import os
import sys
if 'VIRTUAL_ENV' in os.environ:
  project_base_dir = os.environ['VIRTUAL_ENV']
  activate_this = os.path.join(project_base_dir, 'bin/activate_this.py')
  execfile(activate_this, dict(__file__=activate_this))
EOF

چک کردن سینتکس

پلاگین داریم دیگه…

Plugin 'vim-syntastic/syntastic'
Plugin 'nvie/vim-flake8'
let python_highlight_all=1
syntax on

تنظیم رنگ ها

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

colorscheme desert

درخت فایل ها

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

Plugin 'scrooloose/nerdtree'
Plugin 'jistr/vim-nerdtree-tabs'
let NERDTreeIgnore=['.pyc$', '~$'] &quotignore files in NERDTree

می تونین با :NERDTree فعالش کنین ، با o در بافر جدید باز کنین. با t در تب جدید، با i در اسپلیت افقی و با s در معودی. p می ره دایرکتوری بالا و r ریفرش می کنه. بقیه اش؟ ? (: بستن؟ :NERDTreeClose

قرتی بازی های آخر

مثلا

set number
set showmatch
set history=1000
set undolevels=1000
set wildignore=*.swp,*.bak,*.pyc
set visualbell
set noerrorbells

و پلاگین هایی مثل

Plugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'}

نوشته تنظیم ادیتور ویم برای برنامه نویسی [پایتون] اولین بار در ویرگول پدیدار شد.

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

وقتی مصاحبه کننده می پرسد “آیا سوالی دارید؟”

این پایان مصاحبه نیست.

در واقع اگر مصاحبه کننده درباره استخدام شما مطمئن نباشد یا نظر مساعدی در مورد شما ندارد،این آخرین شانس شما برای تغییر نظر مصاحبه کننده است.

سؤالاتی را مطرح کنید که 1) مختص شرکت است ، 2) با نقش شما مطابقت دارد و 3) نشان می دهد که شما علاقه مند هستید.

سوالات بد:

چه آموزش هایی به کارمندان داده می شود؟

سوال بهتر:

“چه اهدافی در این نقش (role) برای من در نظر گرفته شده؟”

اگر آموزش برای شما مهم است ، می توانید ادامه دهید: “و چه آموزش هایی برای کمک به من در دستیابی به این اهداف برای شرکت وجود خواهد داشت؟”

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

نوشته وقتی مصاحبه کننده می پرسد “آیا سوالی دارید؟” اولین بار در ویرگول پدیدار شد.

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

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

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

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

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

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

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

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

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

نکته ای که در فراگیری نحوه تایپ ده انگشتی می تواند خیلی به ما کمک بکند این است که در مرحله اول سعی کنیم در تمرین های خود کلماتی را بنویسیم که کلیه حروف آن در خط وسط قرار دارند مثل کلمه ask سپس کلماتی را تمرین کنیم که کلیه حروف آن در خط بالای صفحه کلید قرار دارند مثل کلمه top و در نهایت کلماتی را تمرین کنیم که تلفیقی از کلیه حروف صفحه کلید می‌باشند (علت این که با خط پایین صفحه کلید کاری نداریم این است که به دشواری می توان کلمه ای معنا دار با استفاده از حروف خط پایین صفحه کلید نوشت.) شاید در هفته های اول این کار کمی دشوار به نظر برسد و از این کار خسته شویم، اما با گذشت زمان نه تنها به این مهارت تسلط پیدا خواهیم کرد بلکه از تایپ کردن هم لـ*ـذت خواهیم برد.

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

از جمله این دلایل می توان به این نکته اشاره کرد که یک برنامه نویس برای این که همواره به روز باشد و از آخرین پیشرفت ها در زمینه برنامه نویسی مطلع باشد می بایست با زبان انگلیسی آشنا باشد چرا که تولید علم در دنیا به این زبان صورت می گیرد. از سوی دیگر Documentation یا اسناد زبان های برنامه نویسی کاملاً به زبان انگلیسی نوشته شده است و برای خواندن آن ها ما می بایست با زبان انگلیسی آشنا باشیم. یکی دیگر از مواردی که دانستن زبان انگلیسی در آن به کمک ما می آید مکاتبه با دیگر برنامه نویسان در سرتاسر دنیا است. به طور مثال وب سایت Stack Overflow این امکان را به ما می دهد که سؤالات یا مشکلات خود به همراه کدی که نوشته ایم را به اشتراک بگذاریم و از نظر دیگر برنامه نویسان پیرامون آن آگاه شویم.

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

طبق تحقیقات صورت گرفته، از این لیست واژگان که تعداد آن هم کم نیست در حدود 2 هزار واژه وجود دارد که در درصد قابل توجهی از متون عمومی مورد استفاده قرار می‌گیرند. به عبارت دیگر می‌توان گفت که برنامه نویسان مبتدی می‌توانند با فراگیری صرفاً 2000 واژه پرکاربرد زبان انگلیسی بخش قابل توجهی از مکالمات و مکاتبات خود (حدوداً 85 درصد) را با دیگر برنامه نویسان دنیا انجام داده و یا به سهولت بتوانند کتاب های مرجعی که به زبان انگلیسی نوشته شده اند را مطالعه نمایند. حال 15 درصد مابقی واژگان که جزو آن 2000 واژه پرکاربرد نیستند هم مربوط به تخصصی است که افراد بر مبنای آن، واژگان خاصی را مورد استفاده قرار می‌دهند. به طور مثال یک برنامه نویس دامنه خاصی از واژگان را مورد استفاده قرار می دهد که معانی آن واژگان ممکن است برای افراد با حرفه های متفاوت نا آشنا باشد.

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

پیش نیاز برنامه نویسی – آشنایی نسبی با کامپیوتر: شروع برنامه نویسی با استفاده از یک کامپیوتر یا لپ تاپ است لذا دانشجویی که قصد دارد برنامه نویسی یاد بگیرد حداقل می بایست کار کردن با کامپیوترها را بلد باشد، می بایست بتواند یک برنامه یا بازی را روی سیستم خود نصب و استفاده کند و برخی مشکلات رایج در کامپیوترها را به تنهایی حل کند (مثلاً این که چه طور یک فایلی که Delete کردن است را مجدد بازیابی کند!)

پیش نیاز برنامه نویسی – آشنایی نسبی با اینترنت: تأثیرات مثبت اینترنت در زندگی روزمره ی ما بر کسی پوشیده نیست و جالب است بدانیم که برای یک برنامه نویس، اینترنت و برخی سایت‌های اینترنتی -همچون گوگل و استک اور فلو- به منزله ی بهترین دوست می باشند. فردی که قصد ورود به دنیای برنامه نویسان را دارد می بایست بتواند وارد اینترنت شده و یک چیز خاص را در اینترنت سرچ کرده و نتیجه را به دست آورد، در برخی سایت ها ثبت نام کند، استفاده از ایمیل را بلد باشد و …

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

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

برنامه نویسی شیئ گرا چیست؟

نوستالژی

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

ماهیت برنامه نویسی شی گرا چیست؟

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

اشیا های واقعی مثل: میز،نیمکت،صندلی

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

برنامه نویسی شی گرا وارث برنامه نویسی روالی

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

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

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

برنامه نویسی شی گرا

امیدوارم این مطلب برای شما مفید بوده باشد.

✍نویسنده:مهران علم بیگی

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

مهران علم بیگی

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

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

قوانین معروف در توسعه نرم‌افزار

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

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

قانون مورفی (Murphy’s Law)

یکی از معروف‌ترین قوانین هست که فقط هم مختص توسعه نرم‌افزار نیست:

هر چیزی که ممکنه خراب بشه، حتما خراب میشه

استفاده از ورژن کنترل، متدلوژی TDD و توسعه نرم‌افزار به روش تدافعی و غیره همه روش‌هایی برای جلوگیری از این قانون هستند

قانون پارکینسون (Parkinson’s Law)

این قانون درباره مدیریت زمان و برنامه‌ریزی برای انجام کارهاست که میگه:

هر کار به اندازه زمانی که برای آن تخصیص داده شده طول می‌کشد

استفاده از ابزارهای مدیریت پروژه آنلاین، جلسات فردی و تیمی منظم، داشتن اهداف مشخص، زمانبندی دقیق برای انجام کارها و جلوگیری از multi-tasking همه از مواردی هستن که به جلوگیری از قانون پارکینسون کمک میکنه.

قانون بروکس (Brook’s Law)

آقای Fred Brooks نویسنده کتاب معروف The Mythical Man-Month این قانون رو در کتابش مطرح میکنه:

اضافه کردن نیروی انسانی به یک پروژه نرم‌افزاری با تاخیر، تاخیر اون رو بیشتر میکنه

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

قانون هافستدر (Hofstadter’s law)

از این قانون مجدد در کتاب The Mythical Man-Month و متدلوژی XP صحبت شده:

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

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

قانون کانوی (Conway’s Law)

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

هر سازمانی که سیستمی را طراحی می‌کند، ساختار طرح خروجی یک کپی از ساختار ارتباط درون سازمان خواهد بود

در بسیاری از شرکت‌ها افراد بر اساس توانایی‌ها در تیم‌های مختلف Frontend, Backend, DevOps و غیره قرار می‌گیرن. روش بهتر این هست که مثل طراحی میکروسرویس افراد که روی یک محصول یا سرویس کار می‌کنند در یک تیم قرار بگیرند تا ارتباط و خروجی بهتری داشته باشند.

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

قانون پاستل یا قانون قدرتمندی (Postel’s Law)

جان پاستل یکی از تاثیرگذارترین افراد در شکل‌گیری اینترنت، TCP و DNS این قانون رو مطرح میکنه که:

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

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

اصل پارتو یا قانون ۸۰-۲۰ (Pareto Principle)

اصل پارتو که به نام‌های قانون ۸۰-۲۰ و قانون افراد اندک اساسی هم معروف هست میگه:

۸۰ درصد رخدادها از ۲۰ درصد دلایل به وجود می‌آیند

ارتباط این اصل با حوزه کاری توسعه نرم‌افزار به این شکله که معمولا ۸۰ درد باگ‌های نرم‌افزار مربوط به ۲۰ درصد پروژه هستند که با استفاده از ابزارهای Linter و Static Analysis به صورت اتوماتیک میتونیم این مشکلات رو راحت‌تر پیدا کنیم.

همچنین میشه گفت ۸۰ دصد کارها در یک سازمان توسط ۲۰ درصد افراد انجام میشه و مشخص کردن این که چه افرادی بیشترین کار رو انجام میدن کار سختی هست ولی به لطف ابزارهای آنلاین contribution های افراد و کیفیت انجام کارها راحت‌تر پیگیری میشه.

اصل پیتر (Peter Principle)

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

کارکنان تا آنجا که موفقیت‌آمیز عمل کنند ارتقا می‌یابند و فقط هنگام رسیدن به «مرز بی‌کفایتی» متوقف می‌شوند و در همان سمت باقی می‌مانند

اصل پیتر حالت خاصی از «پدیده همه‌جانبگی» (ubiquitous observation) است: هر آنچه (درست) کار می‌کند در حالتی پیشرفته‌تر و چالش‌برانگیزتر به کار گرفته خواهد شد تا آنجا که دیگر کارایی از خود نشان ندهد.

اثر دانینگ–کروگر (Dunning–Kruger effect)

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

تخمین نادرست فرد بی‌لیاقت، از اشتباه در ارزیابی خود ناشی می‌شود؛ درحالی‌که تخمین نادرست افراد بسیار بالیاقت، از اشتباه در ارزیابی دیگران نشئت می‌گیرد

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

قانون لینوس (Linus’s Law)

لینوس توروالدز خالق کرنل لینوکس این قانون رو میگه:

هرچه چشم‌ها بیشتر باشند باگ‌ها کم عمق‌ترند

این جمله به نقل از لینوس توروالدز در کتاب «کلیسا و بازار» نوشته اریک ریموند گفته شده که تفاوت بین دو روش توسعه نرم‌افزار رو توضیح میده. روش کلیسا که میگه کد توسعه داده شده در بین release ها عمومی نیست و با هر release کد به صورت متن باز منتشر میشه که نمونه‌های این نرم‌افزارها GCC, Emacs هستن. روش بازار روشی هست که هسته لینوکس در دسترس عموم و در بستر اینترنت توسعه داده میشه و شروع کننده اون رو لینوس توروالدز میدونه.

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

قانون مور (Moore’s Law)

نخستین بار آقای مور از بنیان‌گذاران اینتل این قاعده رو بیان میکنه که:

تعداد ترانزیستورهای روی یک تراشه با مساحت ثابت هر ۲ سال ، به طور تقریبی دو برابر می‌شود

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

اطلاع داشتن از چنین قواعدی باعث میشه در طراحی و توسعه نرم‌افزارها دید بهتری از آینده داشته باشیم و پیش‌بینی های دقیق‌تری داشته باشیم. از نمونه‌های عدم آینده‌نگری در نرم‌افزارها میشه به مشکل سال ۲۰۳۸ اشاره کرد که در این سال timestamp روی سیستم‌های ۳۲ بیتی overflow میشه یا مشکل Y2K که تقویم‌های کامپیوترها بعد از سال ۱۹۹۹ و شروع سال ۲۰۰۰ به مشکل خوردن.

قانون ویرث (Wirth’s Law)

این قانون رو آقای نیکولاس ویرث خالق زبان برنامه‌نویسی پاسکال میگه:

سرعت کند شدن نرم‌افزار بیشتر از افزایش سرعت سخت‌افزار هست

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

قانون ۹۰-۹۰ (Ninety-Ninety rule)

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

۹۰ درصد کد در ۱۰ درصد زمان توسعه داده میشه. ۱۰ درصد مابقی کد ۹۰ درصد زمان رو میگیره.

اصل Knuth’s principle

این قانون درباره بهینه‌سازی کد هست که میگه:

بهینه‌سازی قبل از موعد عامل همه بدی‌هاست

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

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

قانون نورویگ (Norvig’s Law)

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

هر تکنولوژی که به درصد نفوذ بیشتر از ۵۰ درصدی میرسه، هرگز دیگر افزایش ۲ برابری نخواهد داشت (در هیچ بازه زمانی)

طبیعیه که مثلا استفاده کنندگان از تلفن هوشمند وقتی از ۱ میلیون به ۲ میلیون در کشور میرسه افزایش دوبرابری بوده ولی وقت مثلا ۳۰ میلیون استفاده کننده در کشور داریم هرگز افزایش ۲ برابری یعنی ۶۰ میلیون مشترک نخواهیم داشت.

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

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

چگونه بفهمیم که به کووید-۱۹ مبتلا هستیم یا نه? اگر مبتلا هستیم چند درصد احتمال مرگ وجود دارد؟

کروناویروس

کویید-۱۹ (یا کرونا) بلایی بود که در روز های پایانی سال 2019 میلادی، گریبانگیر ملل جهان شد و مردم را به شدت وحشت‌زده کرد. آمار مرگ و میر بر اثر این ویروس ناشناخته که از خانواده کروناویروس‌ها (مثل آنفولانزا و…)، خیلی سریع زیاد شد. شهر ووهان واقع در استان هوبئی چین نخستین جایی بود که کروناویروس جدید در آن شیوع یافت و این ویروس اکنون با شیوع در سراسر جهان به عنوان یک «همه‌گیری جهانی» شناخته شده است.

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

بنا بر گزارش روزنامه سان، متخصصان ادعا کرده‌اند که احتمالاً بیش از ۶۰ درصد از جمعیت جهان به این ویروس مبتلا خواهند شد و از میان شمار مبتلایان یک درصد جان خود را از دست خواهند داد.

اما چگونه بفهمیم که آیا به ویروس کرونا کووید-۱۹ مبتلا هستیم یا نه؟

اکثر علائم کرونا همانند آنفولانزا هست و تشخیص این دو برای مردم، کمي سخت است. اما کرونا شامل چند علائم می‌شود که این علائم بسیار خطرناک هستند و درضورت بروز، باید با اورژانس (یا مرکز 4030) تماس بگیریم.

نرم‌افزار COVID-19 Risk Estimator که به صورت رایگان توسط برنامه نویس های ایرانی و تیم طراحی و مهندسی نرم‌افزاری Almasi.DIGITAL، طراحی و نوشته شده، این عمل را انجام می‌دهد. این نرم‌افزار با چند سؤال در مورد علائم فرد مشکوک یا بیمار، میتواند کرونا را تشخیص دهد.

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

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

امیدواریم که این بلای نامرئی، از بین برود.

نوشته چگونه بفهمیم که به کووید-۱۹ مبتلا هستیم یا نه? اگر مبتلا هستیم چند درصد احتمال مرگ وجود دارد؟ اولین بار در ویرگول پدیدار شد.

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