لطفا جهت اطلاع از آخرین دوره ها و اخبار سایت در
کانال تلگرام
عضو شوید.
آموزش جریان های کاربردی برای اسکالا با FS2
Functional Streams for Scala with FS2
نکته:
آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره:
برخورد صحیح با جریان داده ها درک تفاوت بین لیست ها و جریان ها اجرای وظایف کارآمد حافظه از طریق جریان (به عنوان مثال فایل i/o) ساخت جریان های پیچیده برای برنامه خود با استریم ها مدیریت همزمانی و ایمنی منابع به صورت اعلامی پیش نیازها: دانش کاری زبان اسکالا دانش کتابخانه Cats Effect
بسیاری از برنامه ها با جریان های بزرگ داده سروکار دارند. به عنوان مثال می توان به پردازش فایل ها در مشاغل ETL، خواندن نتایج از یک پایگاه داده یا دریافت پاسخ بزرگ از تماس های http اشاره کرد. مدیریت حجم زیاد داده اغلب به معنای قربانی کردن خوانایی یا عملکرد است.
با پخش جریانی، میتوانید بهترینهای هر دو جهان را دریافت کنید:
- داده ها با استفاده از مقدار ثابتی از حافظه پردازش می شوند، حتی اگر حجم کل داده ها بسیار زیاد باشد
- پردازش به صورت توضیحی ساخته شده است که گویی با لیستها یا دنبالههای معمولی سروکار دارید، با روشهای سطح بالا مانند نقشه، فیلتر و flatMap
بهعلاوه، جریانها در FS2 از تأثیر آگاه هستند. آنها در چارچوب یک موناد اثر مانند IO کار می کنند، که آنها را قادر می سازد انواع کارهای مفید مانند پردازش عناصر به صورت موازی، throttling، تلاش مجدد برای شکست و بسیاری موارد دیگر را انجام دهند.
در این دوره ما جریانها را به داخل تبدیل میکنیم و مواردی مانند:
را یاد میگیریم
- جریانهای خالص را ایجاد و ترکیب کنید
- افکتها را به جریانهای خود اضافه کنید و نحوه نوشتن آنها را بیاموزید
- منابع خطاها را ایمن مدیریت کنید
- الگوهای مربوط به زمان را اعمال کنید، مانند تلاش مجدد، throttling و debouncing.
- تحولات جریانی خود را با Pulls and Pipes بسازیم
- همزمانی را با استفاده از الگوهای مختلف مدیریت کنید
- برقراری ارتباط بین جریانها با استفاده از موارد اولیه مانند سیگنالها، کانالها، موضوعات و صفها
در این سفر به من بپیوندید و ابزار شگفت انگیز دیگری را به جعبه ابزار برنامه نویسی کاربردی خود اضافه کنید!
سرفصل ها و درس ها
معرفی
Introduction
معرفی
Introduction
راه اندازی محیط
Setting up environment
فایل های دوره
Course files
چرا جریان
Why Streams
پردازش یک فایل CSV - نسخه ضروری
Processing a CSV File - Imperative Version
پردازش یک فایل CSV - نسخه Imperative - قسمت 2
Processing a CSV File - Imperative Version - Part 2
پردازش یک فایل CSV - نسخه فهرست
Processing a CSV File - List version
پردازش یک فایل CSV - نسخه Iterator
Processing a CSV File - Iterator version
پردازش یک فایل CSV - نسخه جریانی
Processing a CSV File - Stream version
پردازش یک فایل CSV - نسخه جریانی - قسمت 2
Processing a CSV File - Stream Version - Part 2
مسابقه انگیزشی جریان
Streams Motivation Quiz
جریان های ناب
Pure Streams
معرفی
Introduction
ایجاد جریان های محدود
Creating finite streams
تکرار کنید
Iterate
باز کردن
Unfold
محدوده و ثابت
Range & Constant
تمرین: تولید الفبا با Iterate
Exercise: Producing the alphabet with Iterate
تمرین: تولید الفبا با Unfold
Exercise: Producing the alphabet with Unfold
تمرین: پیاده سازی Iterate از نظر Unfold
Exercise: Implementing Iterate in terms of Unfold
الحاق
Concatenate
نقشه
Map
FlatMap
FlatMap
فیلتر و برای درک مطلب
Filter & For Comprehensions
Zip & ZipWith
Zip & ZipWith
تا کردن
Fold
تمرین: عدد شانس را با استفاده از نقشه تولید کنید
Exercise: produce the odds number using Map
تمرین: روش تکرار را اجرا کنید
Exercise: implement the repeat method
تمرین: روش unNone را پیاده سازی کنید
Exercise: implement the unNone method
خلاصه
Summary
آزمون جریان های ناب
Pure Streams Quiz
جریان های موثر
Effectful Streams
معرفی
Introduction
ارزشیابی
Eval
مجری
Exec
کوواری
Covary
IterateEval
IterateEval
UnfoldEval
UnfoldEval
تمرین: صفحه بندی
Exercise: Pagination
RepeatEval
RepeatEval
برای درک
For comprehensions
EvalMap، EvalTap و EvalFilter
EvalMap, EvalTap and EvalFilter
الحاق
Concatenation
تمرین: EvalEvery
Exercise: EvalEvery
رسیدگی به خطا
Error Handling
منابع
Resources
روش های زمانی پایه
Basic Time Methods
گاز دادن
Throttling
منحرف کننده
Debouncing
دوباره امتحان کنید
Retry
تمرین: جستجو
Exercise: Searching
خلاصه
Summary
آزمون جریان های موثر
Effectful Streams Quiz
دگرگونی جریان ها
Transforming streams
معرفی
Introduction
کشش بر اساس در مقابل فشار مبتنی بر
Pull based vs push based
ساختار تکه ای یک جریان
Chunk structure of a stream
روش های تکه ای
Chunk methods
ورزش: فشرده
Exercise: compact
ایجاد کشش از طریق روش های کارخانه
Creating pulls via factory methods
تبدیل جریان ها به کشش
Turning streams into pulls
تمرین: skipLimit
Exercise: skipLimit
لوله تکه اول
First chunk pipe
قطره لوله
Drop pipe
تمرین: فیلتر
Exercise: filter
لوله مجموع در حال اجرا
Running sum pipe
ورزش: حداکثر دویدن
Exercise: running max
خلاصه
Summary
آزمون تبدیل جریان
Transforming Streams Quiz
همزمانی
Concurrency
معرفی
Introduction
ادغام
Merge
MergeHaltL و MergeHaltBoth
MergeHaltL & MergeHaltBoth
تمرین: واکشی نقل قول از دو منبع
Exercise: Fetching quotes from two sources
ParJoinUnbounded
ParJoinUnbounded
Par بپیوندید
ParJoin
تمرین: تولیدکنندگان متعدد و مصرف کنندگان متعدد
Exercise: Multiple producers and multiple consumers
همزمان
Concurrently
تمرین: ردیاب پیشرفت
Exercise: Progress tracker
ParEvalMap
ParEvalMap
تمرین: ParEvalMapSeq
Exercise: ParEvalMapSeq
زیپ
Zip
ZipRight
ZipRight
ParZip
ParZip
نرخ ثابت
FixedRate
تاخیر ثابت
FixedDelay
AwakeEvery & AwakeDelay
AwakeEvery & AwakeDelay
خلاصه
Summary
آزمون همزمانی
Concurrency Quiz
ارتباط
Communication
معرفی
Introduction
سیگنال ها
Signals
ورزش: خنک کننده
Exercise: Cooler
کانال ها
Channels
ورزش: کولر بهبود یافته
Exercise: Improved Cooler
موضوعات
Topics
فشار برگشتی با موضوعات
Backpressure with Topics
تمرین: ردیاب و اعلام کننده موقعیت خودرو
Exercise: Car position tracker & notifier
صف ها
Queues
مدیریت فشار برگشتی با صف
Handling backpressure with Queues
پایان دادن به سیگنال با None
Signalling termination with None
تمرین: شبیه سازی سرور
Exercise: simulating a server
خلاصه
Summary
مسابقه ارتباطی
Communication Quiz
پروژه نهایی: یک سرور کوچک http
Final project: a tiny http server
نمایش نظرات