رقصنده با کد – Telegram
رقصنده با کد
782 subscribers
1.69K photos
850 videos
207 files
665 links
Here are some interesting things I've come across during my learning process. That's it. Admin ID:
@alithecodeguy
Download Telegram
در Next.js برای پیاده‌سازی قابلیت‌های مشترک (common functionality) بین صفحات یا کامپوننت‌ها، استراتژی‌های مختلفی وجود دارد که می‌توان بسته به نیاز، بهترین روش را انتخاب کرد:

1️⃣ HOC (Higher-Order Components)

برای اعمال یک منطق مشترک به چندین کامپوننت (مثلاً احراز هویت، theme، لاگ کردن، ردیابی و…) می‌توان از HOC استفاده کرد.


// withAuth.tsx
const withAuth = (Component) => {
return function AuthComponent(props) {
const isLoggedIn = useSessionCheck()
if (!isLoggedIn) return <Login />
return <Component {...props} />
}
}


2️⃣ Custom Hooks

برای منطق‌های قابل استفاده مجدد مثل fetch داده، فرم‌ها، انیمیشن، ریسپانسیو بودن، و… می‌توان از هوک‌های سفارشی استفاده کرد.


// useFetchData.ts
export const useFetchData = (url: string) => {
const [data, setData] = useState(null)
useEffect(() => {
fetch(url).then(res => res.json()).then(setData)
}, [url])
return data
}


3️⃣ Layout های مشترک

برای اشتراک یک ساختار پایه مثل هدر، سایدبار، فوتر، در تمام صفحات.

- در Next.js 13 به بعد (app router):

// app/layout.tsx
export default function RootLayout({ children }) {
return (
<html>
<body>
<Navbar />
<Sidebar />
<main>{children}</main>
</body>
</html>
)
}


- در pages router (نسخه‌های قبل):


// _app.tsx
function MyApp({ Component, pageProps }) {
return (
<Layout>
<Component {...pageProps} />
</Layout>
)
}


4️⃣ Middleware (برای درخواست‌های مشترک سمت سرور)

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

مثال: redirect کاربران مهمان، یا بررسی locale:


// middleware.ts
export function middleware(request: NextRequest) {
const token = request.cookies.get('token')
if (!token) {
return NextResponse.redirect('/login')
}
}


5️⃣ API Handler های مشترک


js
// lib/api.ts
export const fetchUser = async () => {
return await fetch('/api/user').then(res => res.json())
}


6️⃣ Context API / Zustand / Redux

برای اشتراک state بین صفحات و کامپوننت‌ها. مثلاً برای مدیریت session، theme، زبان و…


// app/provider.tsx
export const GlobalContext = createContext()

export function GlobalProvider({ children }) {
const [user, setUser] = useState(null)
return (
<GlobalContext.Provider value={{ user, setUser }}>
{children}
</GlobalContext.Provider>
)
}


7️⃣ Server Actions (در App Router)

در Next 13+ می‌توان logicهای server-side قابل اشتراک را به صورت تابع در فایل‌ها نوشت.


// app/actions/login.ts
export async function login(formData: FormData) {
const res = await fetch('/api/login', { method: 'POST', body: formData })
return res.json()
}


8️⃣ Utility Functions / Helpers

توابع کمکی مثل formatDate، validateEmail، calculateTotal و… را در پوشه‌ی lib/ یا utils/ تعریف کرده و در کل پروژه استفاده کنید.


// utils/format.ts
export const formatDate = (date: Date) =>
new Intl.DateTimeFormat('fa-IR').format(date)


9️⃣ Shared Components

کامپوننت‌هایی مثل دکمه، مودال، فرم، toast notification و… را در یک پوشه components/shared/ نگه دارید.

🔟 Monorepo / Shared Packages (در پروژه‌های بزرگ یا microfrontend)

با استفاده از Turborepo یا Nx می‌توانید ماژول‌های مشترک بین چند پروژه را به شکل بسته مجزا نگه دارید.

#nextjs #commonfunctionality

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

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

فقط خود pure javanoscript

پاورقی: دوره فارسی


سرفصل‌های مدنظرم خودم:

Session 1: Introduction to JavaScript
Session 2: Language Fundamentals
Session 3: Control Flow and Error Handling
Session 4: Functions (Basics)
Session 5: Advanced Functions (Context & Closures)
Session 6: Data Structures (Objects & Arrays)
Session 7: Prototypes and OOP in JS
Session 8: Built-in Objects & Advanced Types
Session 9: Asynchronous JS Part 1 – Event Loop & Callbacks
Session 10: Asynchronous JS Part 2 – Promises & Async/Await
Session 11: Iterators and Generators
Session 12: Metaprogramming (Proxies & Reflect)
Session 13: Modules (ES6 Modules and Old Modules)
Session 14: Advanced Topics & Best Practices
Session 15: JavaScript in the Browser – The DOM
Session 16: JavaScript on the Server – Node.js
چندتا تایم خالی در هفته برای بحث آموزش و منتورینگ وجود داره.
در صورت تمایل ، هستم در خدمتتون.

@alithecodeguy
به پست‌های که مورد موضوعات خیلی نادر یا نکته‌های عجیب غریبه ، اعتنا نکنید و اعتماد به نفستون رو زخمی نکنه که چرا شما کم بلدید یا بلد نیستید.

آدم‌هایی که کار واقعی انجام نمیدن ، دنبال اینجور چیزان. (معمولا)
یه مدت دارم خودخوری می‌کنم که آیا خدا رو خوش میاد ۱۰ تومن بگیرم برای ۱۶ جلسه یا ظلمه. برای دوره‌ای که کل جاوااسکریپت رو پوشش میده ( به معنای واقعی کلمه ، کل جاوااسکریپت رو) ، البته هم وقتی میگم ۱۶ جلسه احتمالا یعنی ۲۵ جلسه اینقدر باب‌های جدید برای صحبت باز میشه 😅

اونوقت برای ریکت با کمی خرده ریز از تایپ و اسکریپت و اینجور چیزا ، ۱۸ تومن میگیرن!

نوش جونشون ولی اخلاقی نیست. اونی که داره ورود می‌کنه ، نمیدونه داره هزینه‌ چی رو میده
رقصنده با کد
سوالات مصاحبه‌ای پارت ۱ Q1: for (var i = 0; i < 3; i++) { setTimeout(() => console.log(i), 1000); } 3 3 3 Q2: for (let i = 0; i < 3; i++) { setTimeout(() => console.log(i), 1000); } 0 1 2 Q3: const obj = { name: 'Ali', sayHi: function () {…
میتونم به جرات بگم ، این مجموعه سوالات ، حداقل ۹۰ درصد سوالات یک مصاحبه معقول رو کاور میکنه 👌

جا داره حداقل نیم ساعت یک ساعت روی هر کدوم وقت بذارید.
Forwarded from 69%
This media is not supported in your browser
VIEW IN TELEGRAM
اصلاً انتظار نداشتم اینطوری تموم بشه :)))))


@SixtyNinePercent
میپرسن کجا بریم کارآموزی؟

والا هندونه در بسته‌اس.

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

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

البته احتمال داره شیطنت کرده باشه ملت رو سرکار بذاره ولی بعید بدونم.

پاورقی: دوستان اشاره کردن که کی‌وردها متن یه آهنگه
تمام متدهای آرایه در جاوااسکریپت


// — Mutable (in‑place) methods —

// push: adds to end
let arr = [1,2];
arr.push(3); // [1,2,3]

// pop: removes from end
arr.pop(); // [1,2]

// shift: removes from front
arr.shift(); // [2]

// unshift: adds to front
arr.unshift(1); // [1,2]

// splice: remove/insert in‑place
arr = [1,2,3,4];
arr.splice(1,2,'a','b'); // [1,'a','b',4]

// fill: replace all values
arr = [0,0,0];
arr.fill(7); // [7,7,7]

// copyWithin: copy elements within array
arr = [1,2,3,4];
arr.copyWithin(1,2); // [1,3,4,4]

// reverse: reverse in‑place
arr = [1,2,3];
arr.reverse(); // [3,2,1]

// sort: sorts in‑place
arr = [3,1,2];
arr.sort(); // [1,2,3]



// — Non‑mutating accessors —

// concat: merge arrays
[1,2].concat([3,4]); // [1,2,3,4]

// slice: shallow sub‑array
[1,2,3].slice(1,3); // [2,3]

// includes: check for value
[1,2,3].includes(2); // true

// indexOf: first index
[1,2,3,2].indexOf(2); // 1

// lastIndexOf: last index
[1,2,3,2].lastIndexOf(2); // 3

// join: to string
[1,2,3].join('-'); // "1-2-3"

// toString/toLocaleString: string form
[1,2,3].toString(); // "1,2,3"

// flat: flatten one level
[ [1,2], [3,4] ].flat(); // [1,2,3,4]

// flatMap: map then flatten
[1,2,3].flatMap(x => [x, x * 2]); // [1,2,2,4,3,6]



// — Iterative methods —

// forEach: loop with side-effects
[1,2,3].forEach(x => console.log(x));

// map: produce new array
[1,2,3].map(x => x * 2); // [2,4,6]

// filter: select elements
[1,2,3,4].filter(x => x % 2 === 0); // [2,4]

// reduce: accumulate, left-to-right
[1,2,3,4].reduce((a, b) => a + b, 0); // 10

// reduceRight: accumulate, right-to-left
[1,2,3,4].reduceRight((a, b) => '' + a + b, ''); // "4321"

// every: all pass?
[1,2,3].every(x => x > 0); // true

// some: any pass?
[1,2,3].some(x => x > 2); // true

// find: first matching value
[1,2,3,4].find(x => x > 2); // 3

// findIndex: index of first match
[1,2,3,4].findIndex(x => x > 2); // 2

// findLast: last matching value (ES2023+)
[1,2,3,4].findLast(x => x > 2); // 4

// findLastIndex: index of last match (ES2023+)
[1,2,3,4].findLastIndex(x => x > 2); // 3



// — Iterator methods —

// entries: [index, value] iterator
for (let [i, v] of [‘a’,’b’].entries()) console.log(i, v);

// keys: index iterator
for (let k of ['x','y'].keys()) console.log(k);

// values: value iterator
for (let v of ['x','y'].values()) console.log(v);

// [Symbol.iterator](): default iterator = values()
for (let v of [1,2]) console.log(v);



// — Generic & static methods —

// Array.of: make array from args
Array.of(1,2,3); // [1,2,3]

// Array.from: from iterable or array‑like
Array.from('abc'); // ['a','b','c']



// — New immutable methods (ES2023+) —

// toReversed: reverse without mutating
[1,2,3].toReversed(); // [3,2,1]

// toSorted: sort without mutating
[3,1,2].toSorted(); // [1,2,3]

// toSpliced: splice immutably
[1,2,3,4].toSpliced(1,2,'a','b'); // [1,'a','b',4]

// with: replace element immutably
[1,2,3].with(1, 99); // [1,99,3]



// — Properties —

// length: number of elements
[1,2,3].length; // 3


#js #javanoscript

کانال رقصنده با کد
@danceswithcode
نمیدونم دقیق چطور توضیح بدم پس خواهشا توضیح نخواهید.

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

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

در حد اینکه شبی ۲ ساعت بخوابید و مثلا به مدت ۳ ماه آینده.

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

لینک خبر توی کامنتا هستش
دوره جامع جاوااسکریپت
(با تمرکز فقط روی جاوااسکریپت مدرن)

پیش‌نیاز: ندارد

مخاطب : همه نفرات علاقه مند ( با سابقه یا بدون سابقه )

کاربرد : فرانت ‌اند ، بک‌اند ، موبایل و ...

تاریخ شروع :
۱۷ مرداد

تعداد جلسات : ۱۶ جلسه ۲ ساعته ( هر جمعه ۲ جلسه )

ساعت برگزاری : ۹ الی ۱۱ و ۱۱:۳۰ الی ۱۳:۳۰

رکورد : نخواهد شد.

جزوه : دارد (به زبان انگلیسی)

پشتیبانی بعد از دوره : ۱ ماه

هزینه دوره : ۵ میلیون تومان در صورت پرداخت ریالی و ۴.۵ میلیون تومان در صورت پرداخت رمزارز (دوج‌کوین)

سرفصل :

Session 1: Introduction to JavaScript
Session 2: Language Fundamentals
Session 3: Control Flow and Error Handling
Session 4: Functions (Basics)
Session 5: Advanced Functions (Context & Closures)
Session 6: Data Structures (Objects & Arrays)
Session 7: Prototypes and OOP in JS
Session 8: Built-in Objects & Advanced Types
Session 9: Asynchronous JS Part 1 – Event Loop & Callbacks
Session 10: Asynchronous JS Part 2 – Promises & Async/Await
Session 11: Iterators and Generators
Session 12: Metaprogramming (Proxies & Reflect)
Session 13: Modules (ES6 Modules and Old Modules)
Session 14: Advanced Topics & Best Practices
Session 15: JavaScript in the Browser – The DOM
Session 16: JavaScript on the Server – Node.js

پاورقی ۱ : تمرکز این دوره فقط روی جاوااسکریپت هست و تنها بخش کوچکی از دوره به دام و نود‌جی‌اس (صرفا به خاطر آشنایی) اختصاص پیدا می‌کنه

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

پاورقی ۳ : در صورت بروز شراط جنگی مثل همین جریان اخیر (متاسفانه) ، ۲۰ روز صبر می‌کنیم و اگر شرایط عادی نشد ، هزینه عودت داده میشه.

پاورقی ۴ : ممکنه تا ۲ جلسه ، جلسات جا به جا بشه ولی روز و ساعت برگزاری ثابته.

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

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

راه مستقیم ارتباطی :

@alithecodeguy

کانال رقصنده با کد:

@danceswithcode
اگر حوصله داشتید این ۱۲ دقیقه ویدیو از Rust رو ببینید. کاملا متوجه می‌شید چرا همه میان سمت جاوااسکریپت و مخصوصا فرانت‌اند

https://www.youtube.com/watch?v=usJDUSrcwqI
رقصنده با کد
اگر حوصله داشتید این ۱۲ دقیقه ویدیو از Rust رو ببینید. کاملا متوجه می‌شید چرا همه میان سمت جاوااسکریپت و مخصوصا فرانت‌اند https://www.youtube.com/watch?v=usJDUSrcwqI
توی کتاب قلعه حیوانات ، یه جمله‌ای هست که میگه : همه حیوانات برابرند، اما بعضی برابرترند.

توی دنیای برنامه نویسی هم میشه گفت : "همه برنامه‌نویس‌اند ، اما کسانی که اسمبلی و سی و راست کار می‌کنند ، برنامه‌نویس‌ترند."
دوستان گلم ، توی tutorial hell گیر نکنید.

نرید صد گیگ آموزش دانلود کنید ، نگه دارید که ترشیش رو بندازید.

یه دونه بگیرید ، تا تموم نشد ، آموزش بعدی رو نگیرید.
یک گروه زدم برای دوستانی که به مطالعه آزاد علاقه دارند.

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

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

https://news.1rj.ru/str/keta_book
منطقیه منابع انسانی به جای تماس پیامک بده؟ اونم نه یکی دو تا. عملا داره پیامک بازی میکنه 😆

خدا بخیر کنه. الان هم اومدم یه جایی ، شبیه خونه آقا ماشالله.
جناب مدیر عامل هنوز اجازه شرف یابی ندادن 😂

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

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

ساختمون در حد خونه آقا ماشالله. یه دو طبقه خیلی قدیمی.

هیچ فرآیندی استقبال وجود نداشت و تقریبا مشابه اپلای برای کار کارگری بود. (البته با افتخار چندسال کارگری هم کردم)

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

پنج شنبه بود و برنامه نویسا داشتن کار میکردن.

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

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

چندسری این داستان تلفن و چت مدیرعامل تکرار شد.

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

خانمه گفت مجموعه ما رو میشناسی؟ گفتم نه ولی حس میکنم به یک ارگانی وصلید. گفت ما زیر مجموعه وزارت دفاعیم اپ‌های .... رو مینویسیم ۱۸۰ تا محصول داریم با ۳۰ میلیون کاربر. گفتم میشه معروف‌ترینشون رو بگید؟ مدیرعامله اعصابش به هم ریخت گفت اپهای تخصصیه. گفتم چه اپ تخصصیه که ۳۰ میلیون کاربر داره ولی اسمش رو نشنیدم؟

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

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

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

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

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

حرف دیگه‌ای نداشت بزنه. حس کردم خانم hr باهام هم نظر بود.

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

پاورقی:

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

اگر برای خودتون احترام قائل نشید ، میزنن توی سرتون.

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

ولی خوبه دیگه. من تجربه میکنم که شما دیگه تجربه نکنید 😁
من جای برادر کوچیک شما ولی به نظرم اون کاری رو کنید که حالتون رو خوب کنه.

اگر انتخاب شغله ، اگر انتخاب لایف استایله ، اگر انتخاب شرکته ، اگر انتخاب دوسته ، اگر انتخاب همسره ، اگر انتخاب حقوق مورد نظره و ...

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

حالا یه کاری حالم رو خوب نمیکنه؟ قبول نمیکنم به همین راحتی.

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

اگر حقوق مثلا ۱۰۰ تومن حالتون رو خوب میکنه ، چرا ۲۵ رو قبول می‌کنید؟ اگر فکر می‌کنید مهاجرت براتون خوبه چرا انجامش نمیدید؟ و هزار مثال دیگه.
مشابه اینه عاشق یه دختر باشید ولی چون دختر همسایه بالایی نزدیکتره برید اونو بگیرید. پس کی میخواید برای خواسته‌هاتون بجنگید؟

چند بار قراره زندگی کنید مگه؟