Pure Coder
786 subscribers
189 photos
30 videos
8 files
150 links
⭕️آدرس سایت:
https://purecoder.ir

⭕️گروه پرسش و پاسخ:
@purecoder_gp

⭕️پشتیبانی:
@PureCoder_support
@MohammadTaherri
Download Telegram
Media is too big
VIEW IN TELEGRAM
سندروم شوفر

@purecoder_ir
🔥دیزاین پترن هایی که توی فریوورک فلاتر استفاده شدن و کاربردشون توی ذهنم هست....

Composite
Observer
Decorator
Proxy
Visitor
Chain of Responsibility
Factory Method
Template Method
Command
Momento

🔥البته این لیست بلند تر هست... ولی کاربرد بقیشون توی فلاتر الان توی ذهنم نیست...

شما تکمیل ترش کنید...

🔥فریمورک های خوب بهشت دیزاین پترن ها هستن😍😍

🔥برای مثال توی فلاتر ترکیب Composite با Visitor و همچنین ترکیب Composite با Chain of Responsibility رو میبینیم😍

@purecoder_ir
فولدرهای تو در تو الزامن باعث بهتر شدن ساختار یا معماری آپ نمیشن

بعضی جاها باید ۱۰ تا فولدر( با اغراق ) باز کنی که برسی به کلاس هدف ....بعد اصن یادت میره کجا بودی!!!!

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

این موضوع رو خیلی زیاد جاهای مختلف دیدم، چه پروژه های فلاتری و چه ...

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

Simple, simple, simple

شما اگه بخواین از تهران برید مشهد، باید مسیر مستقیم رو برید ....گرمسار، سمنان، دامغان، شاهرود، سبزوار.....

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

پ.ن: در ضمن، شما توی مراحل مختلف میتونی ساختار اپت رو تغییر بدی و الزامی نداره به یه چیزی پایبند باشی که از ابتدای کار خودت رو گرفتار ساختارهای توهمی کنی که نکنه در آینده به مشکل بخورم

@purecoder_ir
🔥Http Methods

توی در خواست های post میتونید به جای استاتوس کد ۲۰۰ از استاتوس کد ۲۰۱ استفاده کنید و لینک ریسورسی که توسط این درخواست ساخته شده رو توی هدر رسپانس بذارید

توی درخواست هایی که نمیخواین body ارسال کنید، میتونید از ۲۰۴ به جای ۲۰۰ استفاده کنید .

ارورهایی که از طرف کلاینت اتفاق افتاده و کلاینت باید یه چیزی رو اصلاح کنه و دوباره درخواست بده رو با 4xx گزارش کنید

ارورهایی که از سمت سرور اتفاق افتاده و ارتباطی با کلاینت نداره، برای مثال مشکل در کانکشن زدن با دیتابیس رو با 5xx گزارش کنید

در ارور های 5xx دل و روده ی خطا رو بیرون نریزید و دو حالت development و production رو برای ارائه کردن یا نکردن جزئیات خطا در نظر بگیرید .

@purecoder_ir
Pure Coder
🔥Http Methods توی در خواست های post میتونید به جای استاتوس کد ۲۰۰ از استاتوس کد ۲۰۱ استفاده کنید و لینک ریسورسی که توسط این درخواست ساخته شده رو توی هدر رسپانس بذارید توی درخواست هایی که نمیخواین body ارسال کنید، میتونید از ۲۰۴ به جای ۲۰۰ استفاده کنید…
🤦‍♂🤦‍♂بعضیا هستن که گل درخواست ها رو با post می‌نويسن و وقتی دلیل میپرسی میگن به خاطر امنیت بیشتر ...

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

هر کدوم اینها جایگاه خودشون رو دارن

معمولن get و post و put و delete رایج تر از بقیه هستن.

اگه درخواستتون فقط شامل query زدن هست و چیزی رو توی دیتابیس تغییر نمیده از get استفاده کنید .

اگه درخواستتون یه command هست و قراره یه تغییری توی دیتابیس اعمال کنه، بسته به نیاز از post یا put یا delete استفاده کنید

به هیچ عنوان اینها رو باهم قاطی نکنید

@purecoder_ir
نباید هدف یا goal

استفاده از یه معماری خاص و تو دل برو برای پروژه باشه
رعایت مو به موی اصول سالید باشه
تست کردن واو به واو کدها و گرفتن code coverage صد در صد باشه
استفاده از یه سری دیزاین پترن خاص باشه
و...

هدف یا goal باید

توسعه ی پایدار اپلیکیشن باشه

آیا کارهایی که داری انجام میدی به این هدف کمک میکنه؟

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

@purecoder_ir
چرا بعضی برنامه نویس ها فکر میکنن که وقتی لینوکس نصب کنن کلاس کارشون میره بالا؟

اگه استفاده ی تخصصی از لینوکس کنی درست ...

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

ولی وقتی کل کاری که میکنی اینه که یه کروم باز میکنی و یه ide که توش کد بزنی چه فرقی بین لینوکس و ویندوز هست ؟

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

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

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

این تجربیات داکیومنت شده همون علم هستن

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

و همین عامل موثر و کلید پیشرفت آنسان شد

حالا برنامه نویسی هم از این قاعده مستثنا نیست

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

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

چی میشد؟

آیا این همه پیشرفت حاصل میشد ؟

برنامه نویسی همش این نیست که کد بزنی

حداقل ۵۰ درصدش علمه

و وقتی میگیم علم یعنی اینکه باید بری ببینی که پیشینیان چی به جا گذاشتن ...

این کار یه کار آکادمیک هست و صرفن با کد زدن حاصل نمیشه...

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

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

@purecoder_ir
🔥Test and Design

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

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

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

@purecoder_ir
🔥Smalltalk

فرص کنید یه کلاس int دارین و یه var به نام x داریم که از جنس int هست

حالا فرض کنید یه متد به اسم isBetween توی کلاس int داری که دو تا ورودی میگیره و مشخص میکنه که ایا x بین اون دو تا ورودی هست یا نه

bool isBetween(int min, int max)

و اینجوری ازش استفاده میکنیم

var c = x.IsBetween(a, b);

که مشخص میکنه ایا x بین a و b هست یا نه؟

تا اینجا همه چی واضحه...

توی زبان smalltalk اگه بخوایم چنین چیزی داشته باشیم، سینتکسش به اینصورت میشه

c := x isBetween: a and: b

خیلی باحاله😁😁😁

تمام متدها توی smalltalk این مدلین
یعنی اسم یه متد تیکه تیکه میشه و ارگومنت ها بینش قرار میگیرن

اینجا متدمون
isBetween:and:

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

🔥زبان smalltalk یه زبان داینامیک تایپ هست و یه جورایی مادر object oriented هست .

@purecoder_ir
سلام دوستان عزیز که علاقمند به بکند هستند و دوست دارند فریم ورک وانیا رو استفاده کنند میتونند در کانال و گروه پرسش پاسخ عضو بشند

کانال اخبار و بروز رسانی های فریم ورک وانیا

https://t.me/vaniadart

گروه پرسش و پاسخ و پشتیبانی

https://t.me/VDartDev
برای پیشرفت باید از همه ی منابع موجود استفاده بهینه کرد

اولین قدم در استفاده از همه منابع موجود، تقویت زبان انگلیسی هست

این به این معنا نیست که منابع فارسی خوب نیستن

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

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

اگه بدون زبان انگلیسی میخواین برید جلو، اصلن برنامه نویسی رو ببوسید و بذارید کنار ....به همین صراحت 😁

@purecoder_ir
اسنپدراگون X Elite

کوالکام زده Intel و AMD رو با اولین پردازنده دسکتاپش ترکونده 😳😳

🔪این تراشه از 12 هسته اوریون بهره می‌برد و کوالکام مدعی است که سرعت پردازنده (CPU) آن دو برابر بیشتر از نسل سیزدهم پردازنده‌های اینتل Core i7-1360P و i7-1355U است، و این کار را با 68 درصد مصرف انرژی کمتر انجام می‌دهد

💻کوالکام می‌گوید این تراشه در مقایسه با تراشه M2 اپل در انجام وظایف چندرشته‌ای حدود 50 درصد سریع‌تر عمل می‌کند. و با توجه به این که GPU در داخل این چیپست تعبیه شده است، ایکس الیت از نظر قدرت ISO می‌تواند دو برابر عملکرد گرافیکی بهتری نسبت به اینتل i7-13800H داشته باشد.

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

🤔🤔ببینیم به جون سختی اینتل هست یا نه ؟
📱پردازنده های موبایلش که جون سخت بودن تا الان ...

https://digiato.com/computers-hardware/qualcomm-announces-snapdragon-x-elite-chip

@purecoder_ir
توی دوره های آموزشی که برگزار می‌کنید، قول درامد، قول استخدام، قول سنیور شدن و .... ندید

شما مسئول چنین مواردی نیستید و به هیج وجه نمی‌تونید اونها رو تضمین کنید

چنین وعده هایی کاملن پوچ و توخالی و دورغ هست و به هدف بیشتر فروش رفتن دوره اتفاق میوفته

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

پاتون رو از گلیم خودتون درازتر نکنید و دروغ به خورد مردم ندید

دانشجو ها مسئول پر کردن جیب شما مدرسین با وعده های تو خالی نیستن

سخنی به دانشجویان: هیچ کس با گذراندن یک دوره که هیچ با گذراندن ۱۰۰ دوره هم سنیور نمی‌شود.
خود مدرس دوره هم که داره به شما تدریس میکنه سنیور نیست، پس گول نخورید .

@purecoder_ir
Forwarded from OOD Part 1
یه نگرشی توی جامعه هست به اسم program to interface که بیشتر از کتاب design patterns نشات میگیره که توی دوره و توی فصل LSP هم اون قسمت کتاب رو براتون ترجمه کردم (البته بنظر من بیشتر برداشت نادرست هست تا ...)

حتا امروز یه پست آموزشی توی لینکدین در این مورد دیدم

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

این همیشه کار درستی نیست

من یه تعبیری دارم (مال خودمه )

اینترفیس مثل روح یه کلاس هست و همیشه باهاش همراه هست (چه جداش کنی و چه نکنی )

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

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

@purecoder_ir
چرا کسی اینو خفه نمیکنه ؟
این تیم هفته ای ۴۰ تا پروژه میگیره

اینجوری که کل پروژه های جهان رو توی یکسال انجام میدن 😂😂

محسن بیا طنز بازی کن جون داداش
🟢یه هرم معروفی هست که میگه توی پروژه ها باید یه چیزی حدود ۷۰ درصد یونیت تست داشت و ۲۰ درصد integration test و بقیه هم e2e test (درصد ها مهم نیستن )

این هرم برای هر پروژه ای قابل استفاده نیست

یونیت تست ها بیشتر بدرد بخش هایی از پروژه که businesses logic یا algorithm های پیچیده دارن میخورن .

توی پروژه ها یی که بیزینس لاجیک زیادی ندارن، معمولن این درصد ها تغییر میکنه و حتا ممکنه تعداد integration test ها برابر یا بیشتر از unit test ها بشه ‌.

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

🔥 توی یه آپ موبایل اگه بیزینس لاجیک خاصی نداشته باشه و صرفن اطلاعات رو از وب سرویس بگیره و نمایش بده، تعداد integration test ها میتونه از unit test ها پیشی بگیره.

🔥مهم نوشتن تست یا تعصب داشتن روی نوشتن یونیت تست نیست، مهمتر نوشتن تست های باکیفیت و انتخاب مناسب بین انواع تست برای هر تایپ کد و سناریو هست.

@purecoder_ir