درواقع CSRF (که XSRF هم گفته میشه)، یک آسیبپذیری وبه که مهاجم با استفاده از اون میتونه یوزر رو مجبور به انجام اقداماتی کنه، که قصد انجام اونها رو نداشته. این آسیبپذیری به مهاجم اجازه میده تا حدی سیاست SOP رو دور بزنه.
در یک حمله CSRF، مهاجم با ارسال یک درخواست به وبسایت هدف، یوزر رو فریب میده تا درخواست مخرب رو انجام بده. این درخواست معمولاً از طریق یک لینک یا فرم در یک وبسایت مخرب برای کاربر ارسال میشه. حال اگه کاربر وارد لینک هدف بشه، درخواست مخرب مهاجم بدون اطلاع و تأیید کاربر انجام میشه.
برای جلوگیری از CSRF، تکنیکهای مختلفی وجود داره که شامل استفاده از CSRF Token، بررسی Origin Header، استفاده از SameSite Cookies و اعتبارسنجی Referer Header میشن. همچنین دولوپرا باید به طور دقیق از روشهای احراز هویت و سطح دسترسی صحیح استفاده کنن (رعایت authorizations و authentication)
به طور کلی CSRF یک تهدید جدی برای امنیت وبسایتها می باشد، و باید با دقت و توجه با اونها برخورد بشه. با پیادهسازی تکنیکهای مناسب، میتونیم از این نوع حملات جلوگیری کنیم و امنیت کاربران رو حفظ کنیم
#csrf #sequrity
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13⚡4
تفاوت Type Alias و Interface در تایپاسکریپت 🥶
تایپ Alias و اینترفیس شباهتهای خیلی زیادی بهم دارن و تقریباً هر جایی میتونن بجای همدیگه استفاده بشن. اما یه سری تفاوت ها بینشون هست که تو این پست با هم بررسیشون میکنیم.
همونطور که میدونید، میتونیم تایپ های دلخواهمون رو با استفاده از Type Alias به شکل زیر تعریف میکنیم:
اما اگه با اینترفیسهای آشنایی داشته باشید، میدونید که تایپ بالا رو خیلی راحت میتونیم با یک اینترفیس هم بنویسیم:
نحوهٔ استفاده از این اینترفیس هیچ تفاوتی با تایپی که ساختیم نداره و میتونه توی مثال بالا استفاده بشه. در واقع توی خیلی از جاها این دو ویژگی میتونن به همین شکل بجای همدیگه استفاده بشن.
پس چه تفاوتهایی وجود داره؟🤔
1⃣ کار با مقادیر Primitive
این یکی از مهمترین تفاوتهای این دو ویژگی هست. تو مثالهای بالا دیدیم که ما تونستیم برای تایپ string یک تایپ با اسم دلخواه خودمون بسازیم. همونطور که میدونیم string یک Primitive (مقدار غیر آبجکتی) هست و ما برای کار با مقادیر Primitive نمیتونیم از اینترفیسها استفاده کنیم. در واقع ما از اینترفیسها فقط میتونیم برای شکل دادن به آبجکتها استفاده کنیم. اما با Type Alias میتونیم هم برای مقادیر آبجکتی و هم Primitive ها تایپ دلخواه بسازیم:
2⃣ Merge کردن اینترفیسها و Type Aliases
یک تفاوت مهم دیگه (شاید مهمترین تفاوت) این دو ویژگی اینه که ما توی یک برنامه میتونیم چند اینترفیس با اسمهای یکسان داشته باشیم. اما این کار برای تایپها شدنی نیست و ما خطا میگیریم:
توی کد بالا دو اینترفیس اول با هم ترکیب (Merge) شدن و یک اینترفیس شامل پراپرتیهای age و name رو تشکیل دادن. اما داشتن دو تایپ همنام توی برنامه شدنی نیست:
برای اینکه پست زیادی طولانی نشه، ادامه تفاوت هارو توی این تلگراف نوشتم.
در نهایت، انتخاب بین این دو به نیازهای خاص پروژه شما بستگی داره و در بسیاری از موارد، میتونید از هر دو با هم استفاده کنید تا بهترین نتیجه رو بگیرید. اگر به تداخل یا گسترش نیاز دارید، از interface استفاده کنید. اما اگر نیاز به تعریف انواع پیچیدهتری دارید یا میخواید از ترکیبات یونین یا تقاطع استفاده کنید، type alias مناسبتره.
#typescript
@CodeModule
تایپ Alias و اینترفیس شباهتهای خیلی زیادی بهم دارن و تقریباً هر جایی میتونن بجای همدیگه استفاده بشن. اما یه سری تفاوت ها بینشون هست که تو این پست با هم بررسیشون میکنیم.
همونطور که میدونید، میتونیم تایپ های دلخواهمون رو با استفاده از Type Alias به شکل زیر تعریف میکنیم:
type Person = {
name: string;
age: number;
}
اما اگه با اینترفیسهای آشنایی داشته باشید، میدونید که تایپ بالا رو خیلی راحت میتونیم با یک اینترفیس هم بنویسیم:
interface Person {
name: string;
age: number;
}
نحوهٔ استفاده از این اینترفیس هیچ تفاوتی با تایپی که ساختیم نداره و میتونه توی مثال بالا استفاده بشه. در واقع توی خیلی از جاها این دو ویژگی میتونن به همین شکل بجای همدیگه استفاده بشن.
پس چه تفاوتهایی وجود داره؟
این یکی از مهمترین تفاوتهای این دو ویژگی هست. تو مثالهای بالا دیدیم که ما تونستیم برای تایپ string یک تایپ با اسم دلخواه خودمون بسازیم. همونطور که میدونیم string یک Primitive (مقدار غیر آبجکتی) هست و ما برای کار با مقادیر Primitive نمیتونیم از اینترفیسها استفاده کنیم. در واقع ما از اینترفیسها فقط میتونیم برای شکل دادن به آبجکتها استفاده کنیم. اما با Type Alias میتونیم هم برای مقادیر آبجکتی و هم Primitive ها تایپ دلخواه بسازیم:
interface Person {
name: string;
}
// or
type Person {
person: string;
}
type Name = string;
یک تفاوت مهم دیگه (شاید مهمترین تفاوت) این دو ویژگی اینه که ما توی یک برنامه میتونیم چند اینترفیس با اسمهای یکسان داشته باشیم. اما این کار برای تایپها شدنی نیست و ما خطا میگیریم:
interface Person {
name: string;
}
interface Person {
age: number;
}
const john: Person = {
name: "John",
age: 3,
};
توی کد بالا دو اینترفیس اول با هم ترکیب (Merge) شدن و یک اینترفیس شامل پراپرتیهای age و name رو تشکیل دادن. اما داشتن دو تایپ همنام توی برنامه شدنی نیست:
type Person = {
name: string;
}
type Person = {
age: number;
}
// Error: Duplicate identifier 'Person'
برای اینکه پست زیادی طولانی نشه، ادامه تفاوت هارو توی این تلگراف نوشتم.
در نهایت، انتخاب بین این دو به نیازهای خاص پروژه شما بستگی داره و در بسیاری از موارد، میتونید از هر دو با هم استفاده کنید تا بهترین نتیجه رو بگیرید. اگر به تداخل یا گسترش نیاز دارید، از interface استفاده کنید. اما اگر نیاز به تعریف انواع پیچیدهتری دارید یا میخواید از ترکیبات یونین یا تقاطع استفاده کنید، type alias مناسبتره.
#typescript
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7⚡5
تا الان به این فکر کردید که چطور دو یا چند زبان مختلف رو در یک پروژه ترکیب کنید؟ 🤔 (مثلا Node.js با Php یا شایدم Python)
حتما دیدین که میگن فلان شرکت برای بک اند وبسایتش از چند زبان مختلف استفاده کرده، اما این چجوری امکان پذیره؟
اینجاست که اعلان "gRPC به گروه پیوست" برامون میاد ✋
حروفه RPC مخففه (Remote Procedure Call) هست، که یک چارچوبه اسکیما محوره که ارتباط بین سرویس هارو بهتر میکنه. همچنین از طریق استفاده از HTTP/2 و بافر های پروتکل (Protobuf)، از قرارداد های استریمینگ و تایپ قوی پشتیبانی میکنه و توزیع چند زبانه رو قادر میسازه.
اما بافر های پروتکل یا (protobuf) چیه؟🤔
یک روش کارآمد برای سریال سازی داده به فرمت های باینری هست، و نسبت به فرمت های مبتنی بر متن مثله json از نظر فضا، کارآمدتر و سریع تر برای سریال سازی و سریال زدایی هست.
به صورت کلی این یک تکنولوژی جذابه، و اکثر زبان های محبوب ازش پشتیبانی میکنن که در داکیومنت خود gRPC، لیست زبان ها قرار داده شده.
RPC رو توضیح دادیم اما راجب g چیزی نگفتیم!
احتملا فکر کنید g یعنی google اما نه!! تقریبا هر دفعه یک معنی میده، که اینجا معانی های مرسوم حرف g لیست شده.
در چه مواردی از gRPC استفاده میشه؟
🔵 معماریهای میکروسرویس: در معماریهای مبتنی بر میکروسرویس، سرویسهای فردی ممکنه در زبانهای برنامهنویسی مجزا برای مطابقت با نیازهای خاص خود توسعه داده بشن. علاوه بر این، ممکنه چندین کار به صورت همزمان نیاز داشته باشن و خدمات ممکنه با بارهای کاری متفاوتی مواجه بشن.
🔵 اپلیکیشن های استریم: پشتیبانی gRPC از الگوهای پخش چندگانه، سرویسها رو قادر میسازه تا دادهها رو به محض دردسترس شدن، به اشتراک بگذارن و پردازش کنن. بدون اینکه هزینهای برای ساخته مکرر اتصالات جدید داشته باشه. این باعث میشه که برای برنامههای چت و ویدیوی real-time، برنامههای بازی آنلاین، پلتفرمهای معاملات مالی و فیدهای داده زنده مناسب باشه.
برای توضيحات بیشتر، مثال های کاربردی و سایر نکات به تلگراف سر بزنید.
#gRPC
@CodeModule
حتما دیدین که میگن فلان شرکت برای بک اند وبسایتش از چند زبان مختلف استفاده کرده، اما این چجوری امکان پذیره؟
حروفه RPC مخففه (Remote Procedure Call) هست، که یک چارچوبه اسکیما محوره که ارتباط بین سرویس هارو بهتر میکنه. همچنین از طریق استفاده از HTTP/2 و بافر های پروتکل (Protobuf)، از قرارداد های استریمینگ و تایپ قوی پشتیبانی میکنه و توزیع چند زبانه رو قادر میسازه.
اما بافر های پروتکل یا (protobuf) چیه؟
یک روش کارآمد برای سریال سازی داده به فرمت های باینری هست، و نسبت به فرمت های مبتنی بر متن مثله json از نظر فضا، کارآمدتر و سریع تر برای سریال سازی و سریال زدایی هست.
به صورت کلی این یک تکنولوژی جذابه، و اکثر زبان های محبوب ازش پشتیبانی میکنن که در داکیومنت خود gRPC، لیست زبان ها قرار داده شده.
RPC رو توضیح دادیم اما راجب g چیزی نگفتیم!
احتملا فکر کنید g یعنی google اما نه!! تقریبا هر دفعه یک معنی میده، که اینجا معانی های مرسوم حرف g لیست شده.
در چه مواردی از gRPC استفاده میشه؟
برای توضيحات بیشتر، مثال های کاربردی و سایر نکات به تلگراف سر بزنید.
#gRPC
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9⚡3
این اکستنشن برای برنامه نویسا که کلی ویدیو آموزشی میبینن، خیلی مفیده چون به راحتی میتونن کد هارو از ویدیو کپی کنن و دیگه، دردسر کد نوشتن نداشته باشن
#extension #tools
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👌3
در به در دنبال ابزارهای کاربردی css نباش 🔵
سایت زیر مجموعهای از بهترین ابزارهای کاربردی و مهم css رو جمع آوری کرده، و به راحتی میتونید ابزار مد نظرتونو پیدا و استفاده کنید💀
🔵 Website
#css #tools
@CodeModule
سایت زیر مجموعهای از بهترین ابزارهای کاربردی و مهم css رو جمع آوری کرده، و به راحتی میتونید ابزار مد نظرتونو پیدا و استفاده کنید
#css #tools
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7⚡3
Higher-Order Components یا HOC در React.js یک پترن پیشرفته برای استفاده مجدد از منطق کامپوننتها هست. HOC یک تابعه که یک کامپوننت رو به عنوان ورودی میگیره و یک کامپوننت جدید با قابلیتهای افزودهشده رو برمیگردونه.
از HOCها معمولاً برای موارد زیر استفاده میکنن:
در برنامه نویسی اصولی، یک اصل هست به اسم Clean Coding، که قوانین زیادی داره و ما به عنوان یک Developer حرفه ای باید اون قوانین رو رعایت کنیم. یکی از این قوانین DRY ( dont Repeat Yourself ) هست.
این قانون میگه وقتی یک تیکه کدی رو یکبار نوشتید، دیگه نباید اون رو مجددا بنویسید تا در جاهای دیگه ای استفاده کنید. باید یکبار برای همیشه نوشته بشه و استفاده بشه.
به طور کلی، استفاده از HOC کدمون رو حرفه ای تر و خلاصه تر میکنه. برای مثال ها و اطلاعات بیشتر میتونید این مقاله رو مطالعه کنید.
#hoc #react
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👌3
🔥7👌3
تکنیکها و ابزارهای دیباگ در Node.js 🤟
دیباگ کردن، مهم ترین مهارتیه که هر برنامه نویس باید اون رو در خودش تقویت کنه. در این پست با یکسری از تکنیک های این مهارت آشنا میشیم، که احتمالا اون هارو نمیدونستید.
1️⃣ دیباگ تعاملی ( Interactive)
این تکنیک از ابزار های تخصصی دیباگ استفاده میکنه و این امکان رو میده اجرای برنامه رو کنترل کنیم. در Node.js ما میتونیم با استفاده از ابزاری مثله node inspector این کار رو انجام بدیم.
2️⃣ ردیابی فعالیت (active tracing)
این تکنیک که به عنوان (profiling یا performance) نیز شناخته میشه، فراتر از ردیابی اولیه هست و بر نحوه استفاده برنامه از قدرت پردازش تمرکز داره. این تکنیک زمان مصرف شده اجرای بخش های خاص کد رو اندازهگیری، و به شناسایی مناطقی کمک میکنه که منابع رو بیش از حد مصرف، و عملکرد رو مختل میکنن. برای این کار از sentry استفاده میکنیم.
3️⃣ دیباگ کردن بعد از مرگ (post-mortem debug)
از این رویکرد پس از خرابی غیر منتظره یک برنامه استفاده میشه، که دیباگر ها میتونن از منابع مختلف مثله فایل های گزارش (log files) برای درک علت خرابی استفاده کنن، و از ابزاری مثله NDB استفاده میشه.
4️⃣ الگوریتم wolf frence
ما با استفاده از
🔵 تاریخچه گیت رو به دو قسمت تقسیم میکنیم.
🔵 بررسی میکنیم که آیا اشکال در نیمه اول وجود داره یا نیمه دوم؟
این مراحل رو به صورت مکرر انجام میدیم تا
در نهایت مشکل رو پیدا کنیم.
به صورت کلی تکنیک ها و مباحث زیادی وجود داره که میشه درموردشون حرف زد، مثلا یکی دیگ از تکنیک ها "
#debugging
@CodeModule
دیباگ کردن، مهم ترین مهارتیه که هر برنامه نویس باید اون رو در خودش تقویت کنه. در این پست با یکسری از تکنیک های این مهارت آشنا میشیم، که احتمالا اون هارو نمیدونستید.
این تکنیک از ابزار های تخصصی دیباگ استفاده میکنه و این امکان رو میده اجرای برنامه رو کنترل کنیم. در Node.js ما میتونیم با استفاده از ابزاری مثله node inspector این کار رو انجام بدیم.
این تکنیک که به عنوان (profiling یا performance) نیز شناخته میشه، فراتر از ردیابی اولیه هست و بر نحوه استفاده برنامه از قدرت پردازش تمرکز داره. این تکنیک زمان مصرف شده اجرای بخش های خاص کد رو اندازهگیری، و به شناسایی مناطقی کمک میکنه که منابع رو بیش از حد مصرف، و عملکرد رو مختل میکنن. برای این کار از sentry استفاده میکنیم.
از این رویکرد پس از خرابی غیر منتظره یک برنامه استفاده میشه، که دیباگر ها میتونن از منابع مختلف مثله فایل های گزارش (log files) برای درک علت خرابی استفاده کنن، و از ابزاری مثله NDB استفاده میشه.
ما با استفاده از
git bisect
در گیت، میتونیم الگوریتم wolf-fence رو پیاده سازی کنیم، که در دو مرحله انجام میشه:این مراحل رو به صورت مکرر انجام میدیم تا
در نهایت مشکل رو پیدا کنیم.
به صورت کلی تکنیک ها و مباحث زیادی وجود داره که میشه درموردشون حرف زد، مثلا یکی دیگ از تکنیک ها "
anti-debugging
" هست، که پیشنهاد میکنم خودتون درموردش تحقیق کنید :))#debugging
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👌2
یکی از شایع ترین سوالات افرادی که میخوان پا به دنیای GNU/LINUX بزارن، اینه که برای شروع باید چیکار کنیم و چه توزیعی نصب کنیم. توی این پست میخوام بر اساس تجارب و عقیده ها برای شروع سفر در دنیای لینوکس، به این سوالات پاسخ بدیم.
در جواب این سوال باید گفت هر دوره ای مناسب یادگیری لینوکس نیست. حد الامکان سعی کنید با دوره های معتبری مثل Lpic 1 &2 جادی پیش برید و همچنین در کنار این دورهها، خوندن wiki های معتبر رو ازش دریغ نکنید چون اونا تنها منابع معتبر و درست شما هستن.
در جواب این سوال باید گفت که سیستم عامل لینوکس همونطور که توی پست های قبلی دربارش صحبت کردیم، بدرد برنامه نویسا میخوره و یا افرادی که با سرور ها سر و کار دارن و از این قبیلها. اگر کاربری با دغدغه های روزمره هستید، پیشنهاد نمیکنم سمت لینوکس بیاید چون این ذوقی که الان دارید صرفا شاید منطقی نباشه.
نظر شخصی خودم اینه که چون تازه وارد هستید، با بوت کردن لینوکس به عنوان سیستم عامل اصلی کار باهاش رو شروع نکنید! با استفاده کردن از emulator هایی مثل vmWare یا virtualBox یک لینوکس تستی (برای شروع ترجیحا Mint) نصب کنید و روی اون، کار با لینوکس رو تجربه کنید تا در صورت خراب کاری کردن یا بهم ریختن چیزی، مشکل خاصی به وجود نیاد. حتی سایت هایی وجود داره که توی این پست معرفی کردیم، که شما بدون نصب ماشین مجازی میتونید با توزیع های مختلف لینوکس سر و کله بزنید.
اینکه بهترین یا بدترین توزیع چیه، خیلی معنی منطقی ای نداره. هر کدوم طرفدارای خودشون رو دارن ولی یکسری مزایا برای بعضی توزیع ها وجود داره، که اونارو از بقیه متمایز میکنه (همونطور که بدی های یک توزیع میتونه متمایزش کنه). انتخاب ها میتونه نسبت به نیاز و یا حتی دلایلی مثل استیبل بودن و سبک بودن و یا راحت بودن و چیزای مختلف دیگه باشه.
حالا چرا مفیده؟ چون ارچ جزو اون توزیع هاست که شما برای نصب نباید فقط next بزنی و مجبوری خودت پارتیشن بندی کنی، بوت لودر نصب کنی و کلی تنظیمات جانبی رو خودت انجام بدی، پس قراره ازش کلی چیز یاد بگیری و تجربه کنی.
سعی کردم توی این پست سوالاتی که مرسومه رو با نظرات شخصی خودم جواب بدم، تا دوستانی که این سوالات رو دارن براشون رفع ابهام بشه
#linux #os
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👌2
الگو طراحی سینگلتون چیه؟ 🤔
در مهندسی نرم افزار، الگوی singleton یک الگوی طراحیه که نمونه سازی یک کلاس رو به یک نمونه منحصر به فرد، محدود میکنه. همچنین یک الگو Creational و یکی از الگو های معروفه "Gang of Four" نیز هست.
این الگو زمانی مفیده که دقیقاً یک شیء برای هماهنگ کردن اقدامات در یک سیستم، مورد نیازه.
به طور خاص، الگوی سینگلتون به اشیاء اجازه میده:
♨️ فقط یک نمونه داشته باشن
♨️ دسترسی آسان به نمونه رو فراهم میکنه
♨️ نمونه سازی اون رو کنترل میکنه (مثلاً سازنده های یک کلاس رو مخفی میکنه)
چرا اسم این پترن سینگلتون هست؟
این اصطلاح برگرفته از یک مفهوم ریاضیه و به مجموعه ای که دقیقاً یک عنصر داره، سینگلتون میگن. برای مثال مجموعهای مثل {{1،2،3}} یک سینگلتونه، چون حاوی یک عنصر واحده (که خود یک مجموعه هست، اما سینگلتون نیست).
ویژگی های پترن سینگلتون چیه؟
- اگر از الگوی طراحی سینگلتون برای ساخت یک نمونه از کلاس استفاده بشه، این الگو مطمئن میشه که واقعا فقط یک نمونه از کلاس وجود داره.
- سینگلتون کلاس رو در سطح گلوبال در دسترس قرار میده.
درحالی که singleton میتونه مفید باشه اما باید دربرخی موارد احتیاط کنیم⬇️
چالش های تست: تست کدی که به سینگلتون وابسته هست میتونه مشکل باشه.
کوپلینگ محکم: استفاده زیاد از سینگلتون میتونه کوپلینگ محکم رو افزایش بده.
🔵 میتونیم از الگوی تزریق وابستگی (dependency injection) به عنوان جایگزین، برای looser coupling استفاده کنیم.
در نهایت پیاده سازی الگوی سینگلتون باید با دقت انجام بشه، تا از پایداری کد اطمینان حاصل شه. این الگو میتونه در مواردی مفید باشه و در مواردی نه، بستگی به شما و پروژتون داره.
یک نمونه از پیاده سازی الگو سینگلتون رو با زبان جاوا اسکریپت، میتونید در این ریپازیتوری مشاهده کنید.
#design_pattern #singleton
@CodeModule
در مهندسی نرم افزار، الگوی singleton یک الگوی طراحیه که نمونه سازی یک کلاس رو به یک نمونه منحصر به فرد، محدود میکنه. همچنین یک الگو Creational و یکی از الگو های معروفه "Gang of Four" نیز هست.
این الگو زمانی مفیده که دقیقاً یک شیء برای هماهنگ کردن اقدامات در یک سیستم، مورد نیازه.
به طور خاص، الگوی سینگلتون به اشیاء اجازه میده:
چرا اسم این پترن سینگلتون هست؟
این اصطلاح برگرفته از یک مفهوم ریاضیه و به مجموعه ای که دقیقاً یک عنصر داره، سینگلتون میگن. برای مثال مجموعهای مثل {{1،2،3}} یک سینگلتونه، چون حاوی یک عنصر واحده (که خود یک مجموعه هست، اما سینگلتون نیست).
ویژگی های پترن سینگلتون چیه؟
- اگر از الگوی طراحی سینگلتون برای ساخت یک نمونه از کلاس استفاده بشه، این الگو مطمئن میشه که واقعا فقط یک نمونه از کلاس وجود داره.
- سینگلتون کلاس رو در سطح گلوبال در دسترس قرار میده.
درحالی که singleton میتونه مفید باشه اما باید دربرخی موارد احتیاط کنیم
چالش های تست: تست کدی که به سینگلتون وابسته هست میتونه مشکل باشه.
کوپلینگ محکم: استفاده زیاد از سینگلتون میتونه کوپلینگ محکم رو افزایش بده.
در نهایت پیاده سازی الگوی سینگلتون باید با دقت انجام بشه، تا از پایداری کد اطمینان حاصل شه. این الگو میتونه در مواردی مفید باشه و در مواردی نه، بستگی به شما و پروژتون داره.
یک نمونه از پیاده سازی الگو سینگلتون رو با زبان جاوا اسکریپت، میتونید در این ریپازیتوری مشاهده کنید.
#design_pattern #singleton
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7⚡4
5 تا از بهترین سایتهای ارائه دهنده قالبهای Html/Css 💀
🔵 html5up
🔵 freehtml5
🔵 styleshout
🔵 free-css
🔵 tooplate
#template #html #css
@CodeModule
#template #html #css
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👌4
IDE اختصاصی برای توسعه پروژههای React.js 🔵
Reactide یک محیط توسعه یکپارچه (IDE) مخصوص برای توسعه پروژههای ریکتی هست. این ide به منظور سادهسازی و تسریع فرآیند توسعه برنامههای ریکتی طراحی شده، و شامل ویژگیها و ابزارهای متنوعیه که به دولوپرا کمک میکنه تا با کارایی بیشتری کد بنویسن، تست کنن و پروژههای خودشون رو اجرا کنن.
برخی از ویژگیهای Reactide⬇️
رابط کاربری ساده و یکپارچه: Reactide یک رابط کاربری ساده و کاربرپسند داره، و تموم ابزارهای مورد نیاز برای توسعه پروژههای ریکتی رو در یک محیط فراهم میکنه.
پیشنمایش لحظهای (Live Preview): یکی از ویژگیهای برجسته Reactide، قابلیت پیشنمایش لحظهای هست که به دولوپرا این امکان رو میده تا تغییرات کدشون رو بلافاصله در مرورگر داخلی Reactide، مشاهده کنن.
پیکربندی خودکار ابزارها: Reactide بسیاری از تنظیمات و پیکربندیهای مورد نیاز برای شروع یک پروژه React رو، به صورت خودکار انجام میده و دولوپرا نیازی به پیکربندی دستی و نصب ابزارهای مختلف ندارن.
مدیریت پروژه و فایلها: این IDE شامل یک مدیر فایل و پروژه داخلی هست که به دولوپرا این اجازه رو میده، تا به راحتی فایلها و ساختار پروژه خودشون رو مدیریت کنن.
ویرایشگر قدرتمند: Reactide دارای قابلیتهای پیشرفتهای مثل تکمیل خودکار کد، برجستهسازی نحوی و linting هست که به دولوپرا کمک میکنه تا کدهای خودشون رو سریع تر و با دقت بیشتری بنویسن.
برای نصب و راه اندازی این IDE، میتونید به داکیومنتش مراجعه کنید💀
#react #reactide
@CodeModule
Reactide یک محیط توسعه یکپارچه (IDE) مخصوص برای توسعه پروژههای ریکتی هست. این ide به منظور سادهسازی و تسریع فرآیند توسعه برنامههای ریکتی طراحی شده، و شامل ویژگیها و ابزارهای متنوعیه که به دولوپرا کمک میکنه تا با کارایی بیشتری کد بنویسن، تست کنن و پروژههای خودشون رو اجرا کنن.
برخی از ویژگیهای Reactide
رابط کاربری ساده و یکپارچه: Reactide یک رابط کاربری ساده و کاربرپسند داره، و تموم ابزارهای مورد نیاز برای توسعه پروژههای ریکتی رو در یک محیط فراهم میکنه.
پیشنمایش لحظهای (Live Preview): یکی از ویژگیهای برجسته Reactide، قابلیت پیشنمایش لحظهای هست که به دولوپرا این امکان رو میده تا تغییرات کدشون رو بلافاصله در مرورگر داخلی Reactide، مشاهده کنن.
پیکربندی خودکار ابزارها: Reactide بسیاری از تنظیمات و پیکربندیهای مورد نیاز برای شروع یک پروژه React رو، به صورت خودکار انجام میده و دولوپرا نیازی به پیکربندی دستی و نصب ابزارهای مختلف ندارن.
مدیریت پروژه و فایلها: این IDE شامل یک مدیر فایل و پروژه داخلی هست که به دولوپرا این اجازه رو میده، تا به راحتی فایلها و ساختار پروژه خودشون رو مدیریت کنن.
ویرایشگر قدرتمند: Reactide دارای قابلیتهای پیشرفتهای مثل تکمیل خودکار کد، برجستهسازی نحوی و linting هست که به دولوپرا کمک میکنه تا کدهای خودشون رو سریع تر و با دقت بیشتری بنویسن.
برای نصب و راه اندازی این IDE، میتونید به داکیومنتش مراجعه کنید
#react #reactide
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10⚡2
کلاس Event Emitter در Nodejs 🤟
کلاس Event Emitter یکی از مباحث نسبتا پیچیده و دشوار هست، که تو این پست به صورت خلاصه مفهوم اصلیش رو بررسی میکنیم.
نکته جالب توجه اینه که ما اغلب اوقات ازشون استفاده میکنیم، ماننده سرور http، پاسخ و درخواست ( response و request) و...، همگی کلاس های Event Emitter رو به ارث میبرن. Emitter ها بهتون این امکان رو میدن که یک الگوی طراحی رویداد محور رو در سرور خودتون پیاده سازی کنید، همچنین این الگو طراحی بسیار شبیه به الگو (pub/sub) هست، جایی که فرستنده (pub) پیام های جدیدی رو به همه شنوندگان یعنی (sub) های خودش ارسال میکنه.
اما چجوری از این کلاس استفاده کنیم؟🤔
برای مثال نحوه ساخت یک Event Emitter ساده به شکل زیر هست:
هر زمانی که ما Emitter رو ایمپورت میکنیم، میتونیم یک شنونده بسازیم و پیام هایی رو برای شنونده یا listener ها ارسال کنیم، همچنین برای اضافه کردن شنونده ها از متد "on" استفاده میکنیم، برای مثال:
به صورت کلی، این بخشی از نحوه کار و تعریف Event Emitter ها هست و برای اطلاعات بیشتر، پیشنهاد میکنم که مقالات زیر رو مطالعه کنید.
🔵 Article
🔵 Article
🔵 Article
🔵 Article
#nodejs #event_emitter
@CodeModule
کلاس Event Emitter یکی از مباحث نسبتا پیچیده و دشوار هست، که تو این پست به صورت خلاصه مفهوم اصلیش رو بررسی میکنیم.
در ساده ترین حالت خود، event emitter در Node.js فقط یک کالبک میباشد.
نکته جالب توجه اینه که ما اغلب اوقات ازشون استفاده میکنیم، ماننده سرور http، پاسخ و درخواست ( response و request) و...، همگی کلاس های Event Emitter رو به ارث میبرن. Emitter ها بهتون این امکان رو میدن که یک الگوی طراحی رویداد محور رو در سرور خودتون پیاده سازی کنید، همچنین این الگو طراحی بسیار شبیه به الگو (pub/sub) هست، جایی که فرستنده (pub) پیام های جدیدی رو به همه شنوندگان یعنی (sub) های خودش ارسال میکنه.
اما چجوری از این کلاس استفاده کنیم؟
برای مثال نحوه ساخت یک Event Emitter ساده به شکل زیر هست:
const {EventEmitter } = require("events")
const simpleEmitter = new EventEmitter()
هر زمانی که ما Emitter رو ایمپورت میکنیم، میتونیم یک شنونده بسازیم و پیام هایی رو برای شنونده یا listener ها ارسال کنیم، همچنین برای اضافه کردن شنونده ها از متد "on" استفاده میکنیم، برای مثال:
simpleEmitter.on('my-simple-event',()=>{
console.log("run simple event")
})
به صورت کلی، این بخشی از نحوه کار و تعریف Event Emitter ها هست و برای اطلاعات بیشتر، پیشنهاد میکنم که مقالات زیر رو مطالعه کنید.
#nodejs #event_emitter
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡7🔥3👌1
کمبود آیکون های دلخواهت اونم رایگان، اذیتت میکنه ؟
😎 توی این پست چند تا منبع رایگان بهتون معرفی میکنم، که آیکون های فوقالعاده خفنی ارائه میدن.
🔵 https://heroicons.com
🔵 https://icons8.com
🔵 https://uxwing.com/
🔵 https://tabler.io/icons
#icon #free #tools
@CodeModule
#icon #free #tools
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👌2😁1
کی منو آنفالو کرده؟🤔
در این پست میخوام بهتون یه سایت تقریبا کاربردی معرفی کنم، که با استفاده از اون میتونید افرادی که شما رو در گیتهاب آنفالو کردن، پیدا و شناسایی کنید.
🔵 Website
#github
@CodeModule
در این پست میخوام بهتون یه سایت تقریبا کاربردی معرفی کنم، که با استفاده از اون میتونید افرادی که شما رو در گیتهاب آنفالو کردن، پیدا و شناسایی کنید.
این سایت یه کوچولو باگ داره، موقع وارد کردن آیدی گیتهابتون دقت کنید.
#github
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12⚡2😁1
اگه برای تمرین و کدنویسی دنبال ui خاصی میگردید، این طرح فیگما رو به هیچ وجه از دست ندید 💀
🔵 Link
#figma
@CodeModule
#figma
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👌4😁1
رشته ها یا threads چی هستن؟ 😄
threads در سیستم عامل ها، یک جریان متوالی از دستورالعمل ها در یک فرایند یا process رو نشون میده، ترد ها اغلب اوقات بهشون فرایند سبک وزن هم میگن، چون ویژگی های مشترکی با فرایند ها دارن اما از نظر استفاده از منابع، کارآمدتر هستن. یک فرایند میتونه از چندین رشته تشکیل بشه و وظایف همزمان رو انجام بده.
یک مثال بهتر از دنیای پیرامون❗️
فکر کنید در آشپزخونه هستید و کل آشپزخونه یک process هست.
سرآشپز ها threads های درون این فرایند هستن و هر سرآشپز، مجموعه ای از مهارت ها و مسئولیت های خاص خودش رو داره (آشپزی، آماده کردن ظرف و...)
سفارش یا وظیفه هایی که بر عهده هر سرآشپز قرار میگیره، مانند task هاییه که درون threads ها هستن و هر task وظیفه خاص خودش رو داره.
اما مزیت thread ها چیه؟
1⃣ رشته یا threads ها، برنامه رو قادر میسازه زمانی که یک thread مسدود شد، (مثلا منتظر عملیات I/O باشه ) هنوزم برنامه پاسخگو باشه.
2⃣ رشته ها درون یک فرایند، فضای آدرس حافظه یکسانی رو به اشتراک میزارن و اجازه میدن به طور موثر، به ساختار داده های رایج دسترسی داشته باشن و اصلاحشون کنن.
3⃣ با اجازه دادن به چندین رشته برای اجزای همزمان (روی CPUهای چند هسته ای)، برنامه ها میتونن عملکرد قابل توجه ای داشته باشن.
اما در thread ما دو مفهوم به نام های "single-threaded" و "multi-threaded" داریم که هرکدوم بحث جدا دارن، و در ادامه راجبشون پست میزاریم. در صورت تمایل برای کسب اطلاعات بیشتر، میتونید مقالات زیر رو بخونید.
- Article
- Article
- Article
- Article
#threads
@CodeModule
threads در سیستم عامل ها، یک جریان متوالی از دستورالعمل ها در یک فرایند یا process رو نشون میده، ترد ها اغلب اوقات بهشون فرایند سبک وزن هم میگن، چون ویژگی های مشترکی با فرایند ها دارن اما از نظر استفاده از منابع، کارآمدتر هستن. یک فرایند میتونه از چندین رشته تشکیل بشه و وظایف همزمان رو انجام بده.
یک مثال بهتر از دنیای پیرامون
فکر کنید در آشپزخونه هستید و کل آشپزخونه یک process هست.
سرآشپز ها threads های درون این فرایند هستن و هر سرآشپز، مجموعه ای از مهارت ها و مسئولیت های خاص خودش رو داره (آشپزی، آماده کردن ظرف و...)
سفارش یا وظیفه هایی که بر عهده هر سرآشپز قرار میگیره، مانند task هاییه که درون threads ها هستن و هر task وظیفه خاص خودش رو داره.
این معنی و مفهوم Thread بود :))
اما مزیت thread ها چیه؟
اما در thread ما دو مفهوم به نام های "single-threaded" و "multi-threaded" داریم که هرکدوم بحث جدا دارن، و در ادامه راجبشون پست میزاریم. در صورت تمایل برای کسب اطلاعات بیشتر، میتونید مقالات زیر رو بخونید.
- Article
- Article
- Article
- Article
#threads
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡7👌3🔥2💔2😁1