LearnByLearn📖 – Telegram
LearnByLearn📖
569 subscribers
44 photos
9 videos
5 files
69 links
Download Telegram
⁉️ تا حالا عبارت currying به گوشتون خورده ؟



همونطور که میدونید توی جاواسکریپت توابع ما first class هستن

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

تکنیک currying به شما این امکان رو میده که توابع با آرگومان‌های متعدد رو به دنباله‌ای از توابع تبدیل کنی که این توابع هر کدام یک آرگومان را در یک زمان میگیرن.

یعنی قابلیت استفاده مجدد، ترکیب بندی و انعطاف پذیری کد را ارتقا می دهد.

کد زیر رو درنظر بگیر
وقتی بخوایم از تابع total استفاده کنیم باید هربار هی بهش بگیم واحد پول ما دلاره یا ریاله و مدام اینو توی صدا زدن تکرار کنیم که خب خیلی خوب نیست
function total(sign, amount) {
return `${sign}${amount}`;
}

total("Dolar", 200);
total("Rial", 200);


اما به لطف وجود first class function ها میتونیم از مفهوم currying استفاده کنیم
اینطوری دیگه فقط یکبار واحد پول رو تعیین میکنیم و هزار بار ازش استفاده میکنیم

function total(sign) {
return (amount) => {
return `${sign}${amount}`;
};
}

const totalDolar = total("Dolar");
const totalRial = total("Rial");

totalDolar(200);
totalDolar(200);


به یه روش دیگه هم میشه حرکت currying رو زد اونم استفاده از bind هستش :
function multipleByNumber(y, x) {
return y * x;
}
const multipleByTwo = multipleByNumber.bind(this, 2);

const multipleByThree = multipleByNumber.bind(this, 3);

multipleByTwo(200);
multipleByThree(200);


@LearnByLearn

#currying
#tips
#javanoscript
🔥3👍2
معماری برنامه تعیین‌کننده اصلی عملکرد آن است و این مسئله ممکن است بدیهی به‌نظر برسد، اما تجربه نشان می‌دهد که بسیاری از معماران نرم‌افزار به‌اشتباه تصور می‌کنند با تغییر یک فناوری یا نرم‌افزار زیرساختی، می‌توان مشکلات عملکردی برنامه را حل کرد. به عنوان مثال، ممکن است یک محصول جدید به‌خاطر تبلیغات و بنچمارک‌ها وعده بهبود عملکرد ۲۵ درصدی بدهد، اما اگر مشکل اصلی در معماری ناکارآمد برنامه باشد، این بهبود اندک تأثیر چندانی نخواهد داشت.

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

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

منبع مطلب 👇

@microfrontend_ir
⁉️ سرورتون خنگه🤪 یا همه چیز یادش میمونه😎 ؟؟؟

فرض کن برای بار اول رفتی توی یک رستوران غذا 🍕سفارش بدی و به گارسون میگی من فلان غذارو میخوام
خب غذا و میزنی بدن و میری

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

مثلا احراز هویت از نوع session base یک احرازهویته stateful هست چون تو یک بار احراز هویت میشی و اطلاعاتت رو سرور توی دیتابیس ذخیره داره و نیاز نیس هربار بگی این منم این منم



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

دقیقا مثل احراز هویت از نوع jwt ، توی این احراز هویت تو وقتی برای اولین بار لاگین میکنی توی سایت، سرور در اصطلاح یه کلید بهت میده و تو هربار هر درخواستی که میزنی به سرور باید اون کلید هم همراهش بفرستی و بگی کی هستی چون برعکس session base چیزی از تو یادش نیس و باید بهش دیکته کنی



@LearnByLearn

#tips
#stateful
#stateless
🔥9👍1🤔1
🔥🔥 داغ داغ از تنور درومده

👨‍💻 عمو رایان(سازنده node و deno) داره از deno 2 برامون میگه


با یه جمله جالب که شروع میکنه
javanoscript in world is default language


https://youtu.be/H8VLifMOBHU?si=3lUiNMWqqMe8hh2-
🔥2👍1👎1
LearnByLearn📖
نرمال‌سازی دیتابیس: از آشفتگی تا آسودگی در چند مرحله ساده(قسمت چهارم از مفاهیم دیتابیس) 👈🏻 مفهوم نرمالایز چیه؟ 👈🏻 سطوح نرمالایز کدوما هست ؟ 👈🏻 معایبش چیه و چه موقع استفادش نکنیم ؟ 🔗 لینک مقاله @LearnByLearn #database #sql #nosql #normalize
اسید: این بار نه شیمی، بلکه دیتابیس!(قسمت پنجم از مفاهیم دیتابیس)

👈🏻 اسید(ACID) در دیتابیس به چه معنیه؟
👈🏻 اگه ایزوله سازی رو رعایت نکنی چه مشکلاتی پیش میاد ؟ dirty read و phantom readو non-repeatable read چیا هستن ؟
👈🏻 چهار سطح ایزوله سازی کدوما هستن ؟

🔗 لینک مقاله

@LearnByLearn

#database
#sql
#nosql
#acid
👏7
داشتم کتاب Mastering Go رو میخوندم به یه جمله قشنگ و برخوردم که میگه:

Just because we can use channels, it does not mean that we should. If a simpler solution exists that allows goroutines to get executed and save the generated information, we should also consider that. The purpose of every developer should be to create a simple design, not to use all the features of a programming language.

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

ادیت: لینک دانلود کتاب توی کامنت ها

@LearnByLearn
#tips
#tricks
👍7
LearnByLearn📖
داشتم کتاب Mastering Go رو میخوندم به یه جمله قشنگ و برخوردم که میگه: Just because we can use channels, it does not mean that we should. If a simpler solution exists that allows goroutines to get executed and save the generated information, we should also…
تکه‌ تکه، اما قوی‌ : Sharding، Partitioning و Replication (قسمت آخر از مفاهیم دیتابیس)

👈🏻 رپلیکیشن، شاردینگ و پارتیشن چی هستن ؟
👈🏻 مزیت هرکدوم چیه ؟
👈🏻 چه موقع از کدوم استفاده کنیم ؟

🔗 لینک مقاله

@LearnByLearn

#database
#sql
#nosql
#sharding
#replication
#partition
👍2
LearnByLearn📖
لیست پست های مهم کانال (این لیست آپدیت میشه) : تفاوت Reference by value و primitive by value آموزش middleware اندر احوالات جاوا‌اسکریپت قسمت اول 👈🏻 در مورد نحوه کار js و javanoscript Engine اندر احوالات جاوا‌اسکریپت قسمت دوم 👈🏻 در مورد Execution…
💥مجموعه مقاله های مفاهیم دیتابیس💥

سعی کردم تا جایی که جا داره مفاهیم رو ساده توضیح بدم و شک نکنید ازشون تو مصاحبه ها پرسیده میشه 🍻


نبرد بین نظم و انعطاف (قسمت اول از مفاهیم دیتابیس)
👈🏻 کی به وجود اومدن؟
👈🏻 چرا به وجود اومدن؟
👈🏻 چه موقع از کدوم استفاده کنیم و چه موقع استفاده نکنیم؟
👈🏻 مزیت و معایبشون چیه؟ به درد چه پروژه هایی میخوره ؟
👈🏻 مقیاس پذیری افقی و عمودی چیه ؟


وقتی جدول‌ها عاشق می‌شوند (قسمت دوم از مفاهیم دیتابیس)
👈🏻 کلید ها چی هستن و انواع شون ؟
👈🏻 انواع ریلیشن توی دیتابیس چطوری استفاده میشه؟
👈🏻 چه موقع از ON DELETE استفاده کنیم ؟


دیتابیس بدون ایندکس، مثل کتابخانه بدون فهرست! (قسمت سوم از مفاهیم دیتابیس)
👈🏻 مفهوم ایندکس چیه؟ چه موقع استفاده کنیم چه موقع نکنیم ؟
👈🏻 انواع ایندکس کدوما هستن؟چطوری کار میکنن ؟
👈🏻 بررسی سه ساختار داده مهم ایندکس ها B-tree , Bitmap, hash table


نرمال‌سازی دیتابیس: از آشفتگی تا آسودگی در چند مرحله ساده(قسمت چهارم از مفاهیم دیتابیس)
👈🏻 مفهوم نرمالایز چیه؟
👈🏻 سطوح نرمالایز کدوما هست ؟
👈🏻 معایبش چیه و چه موقع استفادش نکنیم ؟


اسید: این بار نه شیمی، بلکه دیتابیس!(قسمت پنجم از مفاهیم دیتابیس)
👈🏻 اسید(ACID) در دیتابیس به چه معنیه؟
👈🏻 اگه ایزوله سازی رو رعایت نکنی چه مشکلاتی پیش میاد ؟ dirty read و phantom readو non-repeatable read چیا هستن ؟
👈🏻 چهار سطح ایزوله سازی کدوما هستن ؟


تکه‌ تکه، اما قوی‌ : Sharding، Partitioning و Replication (قسمت آخر از مفاهیم دیتابیس)
👈🏻 رپلیکیشن، شاردینگ و پارتیشن چی هستن ؟
👈🏻 مزیت هرکدوم چیه ؟
👈🏻 چه موقع از کدوم استفاده کنیم ؟


@LearnByLearn
4👍2
سلام دوستان، میخوام یه مقاله پر پیمون راجع به message broker ها بنویسم(مفهاهیمش و چطور کار میکنه) ولی قبلش برای اینکه چقدر توش دیپ بشم لطف کنید بگید چقدر با مبحث بروکر ها آشنایی دارید
Final Results
58%
چی چی هست!!!
31%
در حد اینکه یه چیزایی ازش میدونم و شنیدم
11%
کاملا باهاش آشنایی دارم و میدونم چطور کار میکنن
LearnByLearn📖
سلام دوستان، میخوام یه مقاله پر پیمون راجع به message broker ها بنویسم(مفهاهیمش و چطور کار میکنه) ولی قبلش برای اینکه چقدر توش دیپ بشم لطف کنید بگید چقدر با مبحث بروکر ها آشنایی دارید
مسیج چه بروکری ؟!🤓

⭐️ توی این مقاله چیا یادمیگیریم 👇🏻:

👈🏻 مسیج بروکرها چی هستن؟
👈🏻 گریزی به معماری میکروسرویس و مونولیت؟
👈🏻 اومدن چه مشکلی رو حل کنن؟
👈🏻 ا exchange ها و انواع شون چیا هستن؟
👈🏻 دو الگوی مهم pub/sub و point to point در مسیج بروکرها ؟

⭐️ قسمتی از مقاله 👇🏻
دو نوع ارتباط میان میکروسرویس ها:
ما به دو روش میتونیم میون این سرویس ها ارتباط برقرار کنیم یکی sync و یکی async

توی روش sync از Rest API و HTTP استفاده میکنیم. دقیقا عین همون درخواست هایی که به سایت میزنیم ولی اینجا فرقش اینه دوتا سرویس دارن به هم درخواست میزنن پس یعنی توی این روش از زمانی که request ارسال میشه تا زمانی که response اون دریافت میشه سیستم در حالت انتظار میمونه.
حالا توی روش async ما میتونیم درخواست خودمون رو برای سرویس موردنظر ارسال کنیم و برعکس sync دیگه منتظر پاسخ اون نمونیم. حالا که مستقیم سرویس ها برای هم پیام ارسال نمیکنن پس چطوری اینا باهم حرف میزنن ؟؟ و این جا همون قسمتی هستش که message broker ها وارد داستان میشن .......


🔗 لینک مقاله

@LearnByLearn

#message_broker
#microservice
#exchange
#rabbitmq
👍10
Audio
در رادیوی ۱۸۶ خیلی خبرها از هوش مصنوعی هستن. از پول‌های عظیمی که دراومده و خرج می‌شه تا جایگزینی انسان‌ها. چین ساخت باتری برای جهان رو سختتر کرده و اروپا شارژ باتری رو آسونتر. با ما باشین که جهان هکرهای بیشتری می‌خواد حتی اگر دوربینشون جای اشتباهی باشه.


00:00 - رادیوجادی ۱۸۶ خوش اومدی پاپای
01:20 - ربات هایی که از فیلم جراحی یاد گرفتن
07:20 - بازمتن شدن ران:ای آی توسط انویدیا
13:31 - حمایت ساپورت از ویزاهای اچ ۱ب آمریکا
15:30 - محدودیت‌های بیشتر چین بر روی فلزات مرتبط با باتری
18:30 - سرمایه‌گذاری ۸۰ میلیارد دلاری مایکروسافت در دیتاسنترهای هوش مصنوعی
24:16 - روز پابلک دامین ۲۰۲۵ و پایان یکسری کپی رایت‌ها
25:24 - قانون اجبار شارژ از طریق یو اس بی سی در اروپا عملیاتی شد
28:34 - بخش آخر
35:12 - تشکر از حامیان

https://youtu.be/JK9MNhlv6aA

#پادکست #صوتی
👍1
Forwarded from Go Casts 🚀
گزارش نظرسنجی JetBrains برای سال ۲۰۲۴ منتشر شده که نتایج جالبی داره.

زبان Go و Rust دو تا زبانی هست که بیشترین adoption را داشتند.

همچنین گولنگ بیشتر از هر زبان دیگه ای برای توسعه web service و cloud service داره استفاده میشه.

گولنگ در لیست زبان های top-paid دوم هست بعد از scala.

گزارش کامل رو اینجا میتونید بخونید
https://www.jetbrains.com/lp/devecosystem-2024/


@gocasts
داشتم ی خرده توی گولنگ عمیق تر میشدم به کد زیر برخورد کردم و به نظرم جالب بود

به نظرتون خروجی کد زیر چیه؟🤔
لطفا توی IDE کپی نکنید بعد جواب بدین 😅

package main

import "fmt"

func main() {

const x = '1'

var y = x + 1

fmt.Println(y)
}


توی پست بعد جواب رو مینویسم و توضیح میدم 🙃

@LearnByLearn
👍3
LearnByLearn📖
داشتم ی خرده توی گولنگ عمیق تر میشدم به کد زیر برخورد کردم و به نظرم جالب بود به نظرتون خروجی کد زیر چیه؟🤔 لطفا توی IDE کپی نکنید بعد جواب بدین 😅 package main import "fmt" func main() { const x = '1' var y = x + 1 fmt.Println(y) } توی پست…
کانستند(const) ها توی زبان Go یه خرده با بقیه زبون ها فرق میکنه

توی گولنگ ما دو نوع const داریم:

1️⃣ نوع اول Typed Constant ها هستن
این کانستنت‌ها موقع تعریف، یک نوع مشخصی دارن و ما صراحتا به تایپ رو می نویسیم
مثال زیر رو ببینید ما به گولنگ گفتیم این کانست ما int هست و همونجا درجا تایپ int رو گرفته
const z int = 10

// correct
var x int = z

// incorrect
var y float64 = z
fmt.Println(x)


2️⃣ نوع دوم UnTyped Constant ها هستن

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

مثال زیر رو ببینیم وقتی به const تایپ ندادیم اگه موس رو ببرید روی اون IDE میزنه untyped یعنی موقعی که استفادش کردی تایپ مورد نظر رو میگیره

const z  = 10

// convert to int
var x int = z

// convert to float64
var y float64 = z

// convert to complex128
var g complex128 = z

fmt.Println(x, y, g)


حالا توی مثال بالا ما x امون یک untyped constand هست و مقدار پیشفرض rune(int32) رو میگیره و خب rune هم همونطور که میدونید یک یونیکده(یعنی یک عدد) رو خروجی میده و یونیکد '1' هم 49 هست که با 1 میشه 50 و اگه دقت کنید y اینجا تایپ نداره پس خود به خود تایپ y هم rune میشه
var y = x + 1


@LearnByLearn
#golang
👍2
اگه دارید از یوتیوب استفاده میکنید و روی ثانیه 59 ویدیو ها استاپ میشن به خاطر AD بلاکر ها هستش
البته یه دور هم کش مرورگرتون هم پاک کنید خوبه

این لینک دقیق تر گفته

https://support.google.com/youtube/thread/312970626/issue-with-video-playback-stopping-at-59-seconds-on-desktop?hl=en



@LearnByLearn
👍4