Microfrontend.ir
1.44K subscribers
221 photos
3 videos
2 files
272 links
کانال تلگرامی وبلاگ میکروفرانت‌اند. مباحثی پیرامون هوش مصنوعی و یادگیری ماشین، معماری نرم افزار با تمرکز بر DDD ، میکروسرویس و میکروفرانت‌اند
www.microfrontend.ir

@hemanhp2
Download Telegram
زبان Rust تضمین Race-Free بودن می‌ده، زبان Go این تضمین رو نمی‌ده ولی به فرهنگ و کالچر برنامه‌نویساش دلخوشه و به نظرم دلخوشی بجاییه و البته اگر High Availability در معماری فاکتور بحرانیه طبعا زبان یا ران تایمی مثل Erlang اولویت بالاتری داره.

〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir
👍16
Microfrontend.ir
زبان Rust تضمین Race-Free بودن می‌ده، زبان Go این تضمین رو نمی‌ده ولی به فرهنگ و کالچر برنامه‌نویساش دلخوشه و به نظرم دلخوشی بجاییه و البته اگر High Availability در معماری فاکتور بحرانیه طبعا زبان یا ران تایمی مثل Erlang اولویت بالاتری داره. 〰️〰️〰️〰️〰️〰️
Race Condition
فرض کنید برنامه‌‌ای می‌نویسید که چندین ترد یا پروسس به طور همزمان در حال اجرا هستند. این ترد ها ممکن است به داده های مشترکی دسترسی داشته باشند و آنها را بروزرسانی کنند. حال اگر این دسترسی و به روزرسانی بدون کنترل و نظم انجام شود، به طوری که ترتیب دقیق دسترسی و به روزرسانی داده ها توسط ترد ها مشخص نباشد، شرایط مسابقه (Race Condition) رخ می دهد.
در این مثال، متغیر counter به عنوان یک شمارنده استفاده می شود. 10 تابع به طور همزمان مقدار counter را با استفاده از تابع increment افزایش می دهند.
در Rust با وجود اینکه ما با چندین ترد به شمارنده دسترسی داریم، سیستم مالکیت Rust تضمین می‌کند که فقط یک ترد می‌تواند همزمان شمارنده را به‌صورت تغییرپذیر یا میوتیبل در اختیار بگیرد و با قطعیت می‌توان گفت که عدد ۱۰ چاپ خواهد شد.
در Go با استفاده از یک اشاره گر مستقیماً به متغیر شمارنده دسترسی داریم. این یک Race Condition بالقوه ایجاد می کند زیرا چندین گوروتین می توانند همزمان آن را تغییر دهند. مقدار نهایی شمارنده بسته به اینکه کدام گوروتین در مسابقه برای دسترسی به آن "برنده" شود، می تواند غیرقابل پیش بینی باشد.
👍181
احتمالا همه‌تون داستان ترکیدن سرویس‌های مایکروسافتی در سطح جهان رو شنیدید. داستان از این قراره که Vincent Flibustier که روز اول کاریش در شرکت Crowdstrike فکر میکنه یک خط کد رو برای بهینه سازی تغییر بده که در عکس می‌بینید.


به نظرتون تفاوت Rust و Go در کار با پوینترها چطوریه؟

** این تیکه کد و موضوع شوخیه ولی جواب سوال مهمه :)
کست -1 به size_t که بدون علامته رفتارهای متفاوت داره ولی معمولا بزرگترین عدد قابل شمارش صحیح تو اون سیستم رو برمیگردونه
〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir
👍4😁4😢1
آموزش GO
نقدهای مختلفی از منظر زبان‌های برنامه‌نویسی و گرامر به آن وارد است و نسبت به زبان‌های مدرنی مانند کاتلین و سیلان و .. که در آن سال‌ها توسعه داده شده بود پیشرفت چندانی به حساب نمی‌آید. راب این نقد را قبول دارد و می گوید که هدف اصلا این نبود اما امروزه آن را زبان زیرساخت ابری می دانند.
اما این زبان که در آغاز خیلی دوست داشتنی نبود چگونه اینقدر موفق شد. راب معتقد است که دنبال راهی برای نوشتن برنامه‌های بهتر بودند تا فقط صرف گرامر و سینتکس زبان. گو برای سیستم های توزیع شده ایجاد شد اما سادگی خود را هم نگه داشت.
سه سازنده گو در سال ۲۰۰۷ در یک نشستی به فکر ساخت آن افتادند.

Link: https://youtu.be/5tGPSf5rhjE

PlayList: https://www.youtube.com/playlist?list=PLJ9zDGwhhsBx6qqziDa4PoWUlKBw4rlBO

〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir
🔥15👍62
Microfrontend.ir
در قسمت اول از پلی لیست آموزش Go ابتدا به بررسی مفهوم خوانایی کد و ضرورت آن پرداختیم سپس نصب گو را توضیح و همچنین یکی از دیباگرهای شناخته شده فضای گو به نام Delve را نصب کردیم. Link: https://youtu.be/CqzBHeqOblU PlayList: https://www.youtube.com/playli…
در قسمت دوم از آموزش Go ابتدا به بررسی Type System گو پرداختیم و سپس شیوه تعریف متغیر را در این زبان توضیح دادیم. در نهایت مقدمه‌ای داشتیم بر پوینتر و reflection در این زبان برنامه نویسی.



Link: https://youtu.be/Pq-CHQjODvM

PlayList: https://www.youtube.com/playlist?list=PLJ9zDGwhhsBx6qqziDa4PoWUlKBw4rlBO

〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir
😍15
Microfrontend.ir
در قسمت دوم از آموزش Go ابتدا به بررسی Type System گو پرداختیم و سپس شیوه تعریف متغیر را در این زبان توضیح دادیم. در نهایت مقدمه‌ای داشتیم بر پوینتر و reflection در این زبان برنامه نویسی. Link: https://youtu.be/Pq-CHQjODvM PlayList: https://www.youtu…
تو این قسمت یه تشری به جاوا اسکریپت زدم و گفتم 1+'1' کار می‌کنه و عملکردی متفاوت از 1-'1' دارد. اما آیا این دستورات رو تو Go امتحان کردید؟
آنچه در قسمت بعدی خواهید دید 🙂
😁13👍1
Microfrontend.ir
در قسمت دوم از آموزش Go ابتدا به بررسی Type System گو پرداختیم و سپس شیوه تعریف متغیر را در این زبان توضیح دادیم. در نهایت مقدمه‌ای داشتیم بر پوینتر و reflection در این زبان برنامه نویسی. Link: https://youtu.be/Pq-CHQjODvM PlayList: https://www.youtu…
در قسمت سوم از آموزش Go به معرفی مفهوم const و تعریف آن پرداختیم. ابتدا مفهوم literal در زبان‌ها برنامه نویسی را شرح و سپس از معایب Implicit Conversion صحبت کردیم و در نهایت شیوه تعریف const در golang را شرح دادیم. در زبان گو دو نوع const وجود دارد. نوع اول بدون نوع است و میتواند در زمان استفاده نوع خود را دریافت کند و به برنامه نویس امکان implicit conversion می دهد و نوع دوم ثابت های نوع دار هستند که نوع آن ها قابل تغییر نیست.



Link: https://youtu.be/rJoYcSPlmoY

PlayList: https://www.youtube.com/playlist?list=PLJ9zDGwhhsBx6qqziDa4PoWUlKBw4rlBO

〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir
👍13🔥7
Microfrontend.ir
در قسمت سوم از آموزش Go به معرفی مفهوم const و تعریف آن پرداختیم. ابتدا مفهوم literal در زبان‌ها برنامه نویسی را شرح و سپس از معایب Implicit Conversion صحبت کردیم و در نهایت شیوه تعریف const در golang را شرح دادیم. در زبان گو دو نوع const وجود دارد. نوع اول…
در قسمت چهارم از آموزش GO به بررسی انواع داده در زبان گو پرداختیم. در گو Data Type های مختلفی وجود دارد که اساسی ترین آنها Built-in Type ها یعنی اعداد، رشته و بول است. ابتدا نوع داده رشته‌ای را تشریح و چالش‌های آن بویژه در تغییر و مقایسه آنها را توضیح دادم. بعد از نوع داده بول به بررسی انواع عددی و ویژگی‌های آن‌ها بویژه مفهوم Overflow پرداختیم.

Link: https://youtu.be/Tyifao9VwNU

PlayList: https://www.youtube.com/playlist?list=PLJ9zDGwhhsBx6qqziDa4PoWUlKBw4rlBO

〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir
🔥17👍1
Microfrontend.ir
در قسمت چهارم از آموزش GO به بررسی انواع داده در زبان گو پرداختیم. در گو Data Type های مختلفی وجود دارد که اساسی ترین آنها Built-in Type ها یعنی اعداد، رشته و بول است. ابتدا نوع داده رشته‌ای را تشریح و چالش‌های آن بویژه در تغییر و مقایسه آنها را توضیح دادم.…
در قسمت پنجم از آموزش GO به بررسی ساختمان داده آرایه و کار با آن پرداختیم. ابتدا شیوه تعریف و مقداردهی آرایه ها را ببرسی کردم. سپس مفهوم Copy Value در کار با آرایه ها در گو را شرح و با پایتون مقایسه کردیم. در گو می‌توان آرایه را به شرطی که از یک تایپ باشند با هم مقایسه و ارزیابی کرد.
در زبان گو برای حلقه‌های تکرار صرفا یک دستور for با حالت های مختلف داریم که تعریف انواع مختلف حلفه‌ها را ساده کرده است و مشخصا برای پیمایش آرایه‌ها از حالت for range استفاده میکنیم.
در نهایت با یک مثال ساده ساخت آرایه چند بعدی را نیز بررسی کردیم.

Link: https://youtu.be/VGC2AjSTYfQ

PlayList: https://www.youtube.com/playlist?list=PLJ9zDGwhhsBx6qqziDa4PoWUlKBw4rlBO

〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir
🔥11👍21
Microfrontend.ir
در قسمت پنجم از آموزش GO به بررسی ساختمان داده آرایه و کار با آن پرداختیم. ابتدا شیوه تعریف و مقداردهی آرایه ها را ببرسی کردم. سپس مفهوم Copy Value در کار با آرایه ها در گو را شرح و با پایتون مقایسه کردیم. در گو می‌توان آرایه را به شرطی که از یک تایپ باشند…
در قسمت ششم از آموزش GO کار با Slice و نکته‌های آن را بررسی کردیم. ابتدا تعریف متغیر از نوع اسلایس و ساختار آن در مموری را شرح دادیم. هر متغیر slice در واقع شامل یک هدر یک آرایه است. در هدر جزییات و مشخصات دیتا تعریف و داده‌ها در درون آرایه ذخیره می‌شود. سپس دستور make که به ما امکان تعریف اسلایس اما با کنترل بیشتر بر روی هدر می دهد را توضیح دادیم. برای رسیدن به پویایی یعنی اضافه کردن آیتم به اسلایس را از طریق دستور append توضیح دادم. یکی از جذابیت‌های اسلایس این است که می‌توان از یک آرایه یا اسلایس دیگر به عنوان دیتای اصلی استفاده کنیم. این رویکرد هم انعطاف بالایی به اسلایس می‌دهد و هم ممکن است چالش ‌هایی را به وجود بیاورد که سعی کردیم این چالش ها را بررسی کنیم و در نهایت استفاده از حلقه for range برای پیمایش عناصر اسلایس و نکته‌های مهمی در استفاده از آن را مطرح کردم.



Link: https://youtu.be/Mlp1aPtFCnY

PlayList: https://www.youtube.com/playlist?list=PLJ9zDGwhhsBx6qqziDa4PoWUlKBw4rlBO

〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir
🔥171
Microfrontend.ir
در قسمت ششم از آموزش GO کار با Slice و نکته‌های آن را بررسی کردیم. ابتدا تعریف متغیر از نوع اسلایس و ساختار آن در مموری را شرح دادیم. هر متغیر slice در واقع شامل یک هدر یک آرایه است. در هدر جزییات و مشخصات دیتا تعریف و داده‌ها در درون آرایه ذخیره می‌شود. سپس…
در قسمت هفتم از آموزش GO نوع داده map و نکته‌های آن را بررسی کردیم. ابتدا ضرورت وجود این نوع داده و شیوه تعریف و استفاده از آن را شرح دادیم. سپس ساختار داخلی آن را بررسی کردم. در گو هم به مانند سایر زبان‌های برنامه نویسی از hash table برای پیاده سازی استفاده شده است. دراین زبان داده‌ها در مجموعه‌ای از Bucket ها که به فراخور نیاز رشد می‌کنند ذخیره می‌شود. دو مورد مهم که بایستی در استفاده از map به آن دقت کنیم را با مثالی شرح دادم. ابتدا این مورد را که با همان رشدی که map در استفاده از حافظه دارد، در زمان پاک کردن آیتم ها باکت‌ها حذف نمی‌شوند و GC این کار را بر عهده خواهد گرفت و همچنین اینکه اگر سایز تخمینی برای map تعریف کنیم بهینه‌تر خواهد بود.


Link: https://youtu.be/4bxlgFFt8m4

PlayList: https://www.youtube.com/playlist?list=PLJ9zDGwhhsBx6qqziDa4PoWUlKBw4rlBO

〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir
🔥11
در قسمت هشتم از آموزش برنامه نویسی به زبان GO نوع داده struct و کاربردهای آن را بررسی کردم. برای تعریف نوع جدید در زبان گو از کلمه کلیدی type استفاده می کنیم که دو کاربرد مهم دارد. نخست برای ایجاد alias برای نوع‌های موجود که اسم معناداری را به نوع‌ها می‌توان اختصاص داد و کاربرد دوم تعریف نوع داده جدید است. در این ویدیو تعریف نوع داده struct و ویژگی‌های آن را شرح دادیم و سپس با یک مثال شیوه فراخوانی سرویس‌های REST و ذخیره نتایج در نوع struct را توضیح دادیم. در نهایت مفاهیم Alignment and Padding و اهمیت آنها در مدیریت حافظه را بررسی کردیم.

Link: https://youtu.be/ndJS2XP_hRU

PlayList: https://www.youtube.com/playlist?list=PLJ9zDGwhhsBx6qqziDa4PoWUlKBw4rlBO

〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir
🔥10👍2
Microfrontend.ir
https://youtu.be/ndJS2XP_hRU
در قسمت نهم از آموزش برنامه نویسی به زبان GO برای جمع بندی انواع داده به عنوان تمرین عملی محاسبه TF در متن را پیاده سازی کردیم. فراوانی کلمه یا Term Frequency یکی از فاکتورهای بنیادی در پردازش زبان و متن است که کاربردهای گسترده‌ای در Information Retrieval و موتورهای جستجو دارد.

*بخش اول آموزش Go تموم شد. بخش دوم رو از شنبه آینده شروع می‌کنم.

Link: https://youtu.be/sFlqVJfxJUc

PlayList: https://www.youtube.com/playlist?list=PLJ9zDGwhhsBx6qqziDa4PoWUlKBw4rlBO

〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir
🔥10👍1
Django Json Field
سال‌هاست که ذخیره سازی داده‌ها به شیوه رابطه‌ای بهترین و رایج ترین شیوه ذخیره سازی است با این وجود در سال‌های اخیر و با معرفی مفهوم NoSQL شیوه‌های دیگری نیز مطرح شده اند که پرکاربردترین آنها Document یا ذخیره داده به شکل JSON است. ابزارهای مختلفی مانند mongodb در این فضا رشد کرده‌اند اما امروزه اغلب دیتابیس‌های رابطه‌ای به شما امکان ذخیره و بازیابی این نوع از داده‌ها را می‌دهند و شاید بتوان گفت بهترین آنها PostgreSQL است. در این ویدیو ابتدا شیوه‌ اجرای پستگرس از طریق داکر را شرح دادیم و سپس با اتصال به آن یک دیتابیس و یک جدول ساختیم که بتوان داده‌های JSON را نیز در آن ذخیره کرد. سپس همان رویکرد را بر روی جنگو و با استفاده Django Json Field پیاده سازی کردیم و چند مثال از query داده‌ها را بررسی کردیم.

Video Link: https://youtu.be/aVahpcJQ8tE

** پلی لیست نکته ها و ترفندهای جنگو:
https://www.youtube.com/playlist?list=PLJ9zDGwhhsBwdrfdaoOqbYev3_ocuBOfv

** کلاس آنلاین آموزش جنگو
https://www.youtube.com/playlist?list=PLJ9zDGwhhsByH5tcpM9H3VzdHYpne3bSa
〰️〰️〰️〰️〰️〰️
© @microfrontend_ir
👍14🔥2
برای یک مساله‌ای من نیاز به یک کاستوم فیلد جنگو داشتم که از نوع jsonb[] پشتیبانی کنه. دیدم بد نیست که یک ویدیو هم ازش بسازم. رو این حساب اول یک مقدمه‌ای بر jsonfield جنگو گفتم و تو ویدیو بعدی که شنبه منتشر خواهد ساخت کاستوم فیلد رو توضیح خواهم داد.

پلی لیست آموزش Go رو هم از دوشنبه ادامه می‌دم.
👍21🔥2
در این ویدیو از پلی لیست آموزش جنگو و نکته‌ها و ترفند‌های آن به بررسی مفهوم Django Custom Field پرداختیم. ابتدا نوع داده JSONB Array در پستگرس را با یک مثال شرح دادم و سپس یک کاستوم فیلد نوشتیم که بتوان این نوع داده را ذخیره و بازیابی کنیم. سپس یک Custom lookup هم نوشتیم که بتوان داده ها را فیلتر کرد.


** در این ویدیو اساسا دنبال آموزش خاصی نبودم و دنبال این بودم که ترغیبتون کنم در تله آموزش نیافتید و شروع کنید به خوندن کد خود جنگو که بهترین منبع مستر شدنه :)

Video Link: https://youtu.be/I0Ry63LO-Rg

** پلی لیست نکته ها و ترفندهای جنگو:
https://www.youtube.com/playlist?list=PLJ9zDGwhhsBwdrfdaoOqbYev3_ocuBOfv

** کلاس آنلاین آموزش جنگو
https://www.youtube.com/playlist?list=PLJ9zDGwhhsByH5tcpM9H3VzdHYpne3bSa
〰️〰️〰️〰️〰️〰️
© @microfrontend_ir
17👍2
در روزهای آینده برمی‌گردم به پلی لیست Go و تا آخر شهریور تمومش کنم!
🔥244👍2👎1👏1