NimaCodez | خفنیجات با نیما – Telegram
NimaCodez | خفنیجات با نیما
531 subscribers
39 photos
3 videos
27 links
مسئله های یک دولوپر کنجکاو و نیمچه Geek.

Go Deep, Learn Deep, Ask Deep.

A nerd without *shiny* grades.
Download Telegram
🚨 هک کردن پارتنر امکان پذیر شد!

البته تو دنیای موازی 🥸

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

@NimaCodez
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥104👍4
NimaCodez | خفنیجات با نیما
Voice message
رمز پویا پس چرا هک میشه؟
مگه اساسش این نبوده که هک نشه؟

چرا میگن آیفون امنه؟

دلیلاشون تو این ویسه! البته بازم نیازه اشاره کنم آیفون ضد تانک نیست. فقط نسبت به نصب برنامه های به اصطلاح untrusted امنه!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤‍🔥5🆒3👍2
⁉️ دیتابیس چیه و چه کاربرد هایی داره؟

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

⭐️ دیتابیس از این جهت برامون مهمه که اطلاعات مارو پایدار میکنه¹ و برامون نگه‌داریش میکنه تا هروقت که نیاز داشتیم، اطلاعات مورد نیاز رو ازش درخواست کنیم. یا حتی توش ثبت کنیم یا برای مقاصد تحلیلی و Analysis ازش استفاده کنیم.

به فرایندِ درخواست اطلاعات از دیتابیس میگیم «کوئری» (Query). کوئری ها دستوراتی هستن که برامون اطلاعات رو جمع‌آوری میکنن و برمیگردونن.

🧐 برای مثال فرض کنید من تو جدولم میخوام افرادی رو پیدا کنم که بزرگتر از ۱۸ سال هستن تا احراز هویتشون رو کامل کنم. بدین شکل به دیتابیسم کوئری میزنم:

SELECT
*
FROM
public.users
WHERE
users.age >= 18;

- نتیجه این کوئری عکس #3 (همونطور که میبینید دیگه Nima برنگشته چون سنش زیر ۱۸ بود)

🔥 ترجمه‌ی این کوئری میشه:
انتخاب کن همه رو (درواقع علامت * معنی همه میده) از جدول users به شرط اینکه پراپرتی ( یا همون ویژگیِ ) سن کاربر بزرگتر مساوی ۱۸ باشه.

*این یکی از ساده ترین کوئری های ممکنه و صرفا جهت آشنایی شما با مفهوم کوئری آورده شده.

✔️ این کوئری با زبانی به اسم «SQL» زده میشه. ما چند نوع دیتابیس داریم. دیتابیس های SQL و دیتابیس های NoSQL.

دیتابیس های SQL برای ذخیره سازی داده از همین ستون ها و جدول ها استفاده میکنن. برای کوئری زدن هم از همون زبان SQL استفاده میکنن.

😎 اما دیتابیس های NoSQL میتونن دیتاتایپ ویژه خودشون رو داشته باشن. مثلا دیتابیس MongoDB، داده هارو تو اسنادی به اسم داکیومنت (Document) ذخیره میکنه.
زبان کوئریش هم SQL نیست و زبان کوئری خودش رو داره. خودشون که بهش نام «MQL» رو دادن؛ مخففِ «MongoDB Query Language»

1️⃣ از دیتابیس های SQL ای معروف میشه به: MySQl, SQLite, PostgreSQL اشاره کرد.

2️⃣ از دیتابیس های NoSQL ای معروف میشه به: MongoDB, ScyllaDB, Redis, Couchbase و.. اشاره کرد.

¹ اصطلاح علمی و کامپیوتریِ این پایدار کردن دیتا «Persist» هست.
کنجکاو بمونید.

#database #computer_science #sql #query #mongodb
🔗 Reference

🔗 @NimaCodez | © | Go Deep, Learn Deep, Ask Deep 🧠
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27❤‍🔥53👍3🆒1
این لیستو از دست ندید، همشون مستقیما دوستای خودمن و محتواشون قطعا خفن و کارآمده ❤️‍🔥:

https://news.1rj.ru/str/addlist/ofQUtBMkdCsyMTJk
🔥11👍3🤩32
📣 امروز ساعت ۷:۳۰ راجب HTTP پست داریم. ولی واقعا مبحث خیلی خیلی بزرگیه و گفتنی ها توش بشدت زیاده، حتی خود پست امروزش هم طولانیه.

برای همین این پست رو فعلا داشته باشید تا یه چیزایی رو بدونید ازش؛ ولی در ادامه خیلی بیشتر باید گفته بشه.
موافق چه کاری هستید؟
دوست دارید یه ویدیو بگیرم همشو جمع کنم براتون و رو یوتیوب بذارم؟ (بعد از یک هفته روی چنل تلگرام هم آپلود میشه).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥3
⁉️🌐 دنیای وب واقعا چطور کار میکنه؟

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

‏HTTP یا «HyperText transfer protocol» یک پروتکل در لایه‌ی application، یعنی لایه‌ی هفتم مدل OSI و لایه‌ی چهارم مدل TCP/IP هست. بعدا این جمله رو بیشتر باز میکنیم قطعا، اما در حال حاضر صرفا اینکه بدونید یک پروتکل هست برای ادامه کفایت میکنه.

⁉️ سوالی اولی که پیش میاد اینه که اصلا چیکار میکنه؟ HTTP مثل یک پل ارتباطی بین دوتا دستگاهه که تو بستر وب کار میکنن، و بهشون این قابیلت رو میده که بهم دیگه عکس، صدا، فایل،‌ ویدیو و ... ارسال کنن. اما چطور این کارو میکنه؟

⚜️ دوتا مفهوم هست که باید شدیدا بهشون توجه کنید: «Request» و «Response»

🌕 وقتی شما وارد مرورگر میشید و میزنید http://digikala.com ، درواقع مرورگر یک Request به سمت سرور های دیجی‌کالا ارسال میکنه، و بعد سرورهای دیجی‌کالا بعد از تحلیل درخواست شما و جمع‌آوری اطلاعات لازم برای پاسخ دادن به شما، یک Response متناسب براتون ارسال میکنن. این میشه کل فرایند کار و به عنوان «Request Cycle» میشناسیمش.

⁉️ حالا سوال: چطور مرورگر به سرور های دیجی‌کالا ( یا هر سرور دیگه‌ای ) بفهمونه که چیکارش داره. شاید اصلا من داشتم مشخصات یک محصول رو ارسال میکردم تا توی سبد خریدم ذخیرش کنم، چجوری باید اینو بهش بگم؟ خب باید از Verb های HTTP استفاده کنم.

💎 چیزی که تو این مرحله نیاز میشه بدونید، «HTTP Verbs‏» هست. اول از همه باهم ببینیم که چی هستن:
GET, POST, PUT, PATCH, DELETE

- اما برای چی و چجوری ازشون استفاده میکنیم؟

‏GET: برای دریافت دیتا و اطلاعات یک آدرس یا URL. مثلا برای مشاهده صفحه‌ی اصلیِ http://digikala.com یک درخواست از نوع GET ارسال میشه. اگر اطلاعات بیشتری راجب URL میخواید یا نمیدونید چیه هشتگ #URL کامل توضیحاتش هست.

POST: این متُد (اسم دیگه‌ی وِرب) برای ارسال داده سمت سرور هست. فرض کنید تو مثال دیتابیس تو پستِ بالا من میخواستم اطلاعات یک یوزر جدید رو ثبت کنم. باید با استفاده از یک متد POST این کار رو میکردم. چرا؟ چون متد پست قابلیت حمل بار داره. اگر متد GET موتورسیکلت باشه متد POST کامیونه. و میتونه با خودش یه مقدار بار (که بهش میگیم Request Body) حمل کنه و مثلا همون name, age, lastName رو با مقادیرش بذاریم توش و بفرستیم سمت سرور.

⚠️ نکته: نه اینکه GET قابلیت داشتن Body نداشته باشه، اما ازش استفاده نمیشه چون خیلی از سرور ها از Bodyای که تو ریکوئست GET باشه صرف‌نظر میکنن و از نظر معنایی هم این کار معنی نمیده که شما با متد دریافت اطلاعات، بخوای اطلاعات بفرستی.

‏PATCH و PUT: جفتشون برای آپدیت کردن یک منبع در سرور به کار میرن. مثلا فرض کنید کاربر اومده ایمیل و شماره تلفنش رو وارد کرده. بعد متوجه شده شماره تلفنش اشتباه بوده و میره اون رو اصلاحش کنه. خب اینجا دیگه شما کاربر رو از قبل داری، فقط باید یه سری تغییرات رو بهش اعمال کنی. اگر کاربر رو نداشتیم دیتاش رو با متد POST باید میفرستادیم تا ساخته میشد.

‏DELETE: طبق موارد بالا کارکرد دلیت قابل حدسه. برای حذف یک منبع از سرور به کار میره.

⁉️ خب حالا HTTPS این وسط چیه؟ HTTPS نسخه‌ای هستش که به وسیله گواهی TLS یا SSL اطلاعات ورودی به و خروجی از سرور رو رمزنگاری میکنه تا افرادی که بیرون موندن نتونن بفهمن اون دیتای اصلی چی بوده و امنیتش رو بیشتر میکنه؛ برای همین میگن اگه کار خرید، پرداخت، ثبت نام و ... داشتید همیشه حواستون باشه که بالا https باشه نه http.

هنوز خیلی چیزا مونده که راجب HTTP بگم و همچنین نکته های تستیِ ریزش و خب تو یه پست متنی واقعا سخته، موافق یه ویدیو برای این مبحث هستید؟ کل قضایایی از دنیای وب که نیازه بدونید رو براتون جمع میکنم. اگر آره تو نظرسنجی بالا شرکت کنید 👆🏻

ممنون بابت همراهیتون، ریکشن یادتون نره، پستا واقعا زمان و انرژی میبرن :))).
کنجکاو بمونید

#network #http #osi #tcpip #web #crossstack

🔗 @NimaCodez | © | Go Deep, Learn Deep, Ask Deep 🧠
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥26👍114
میگن فردا آزادیه؛ پس فردام یه عده دیگه آزاد میشن.
منم باهاتون آزاد میشم 💙
دلیل نبودن این مدتم همین چیزا بود؛ حالا بعدا صحبت میکنیم که کار زیاده.
امیدوارم موفق باشیم. دیگه بگیریم بخوابیم فردا شب صحبت میکنیم 🫶🏻
🔥16👍3👾2❤‍🔥1
✏️ درود به تک تکتون، یه چند سطری راجب شرایط یه صحبتی بکنیم و برگردیم سر کارامون.

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

📚 راجب کنکور؛ راستش من نظرم رو همیشه گفتم، تحصیلات برای آدمی که زندگی آکادمیک دوست داره مهمه؛ برای شخصیت فردی شما هم میتونه اعتماد به نفس بیاره؛ اما یک پدیده غیرممکن هست اینکه هر آدمی تلاش میکنه به رشته مورد نظرش تو دانشگاه مورد نظرش برسه؛ بهرحال محدودیت ظرفیت وجود داره و البته سهمیه های ۲۵٪ و ... 😅

🧮 از نظر من جمله‌ی «من اصلا برای کنکور نخوندم» وجود خارجی نمیتونه داشته باشه. شما یا واقعا آدم بیخیالی بودید و کلا از درس خوشتون نمیومده و نمیخوندید و سال کنکورتون هم نخوندید؛ یا حتی اگر تیکه تیکه یا چند ماه آخر خوندید باز هم تلاشتون رو کردید. همینکه آدم از یک سری چیزا میزنه من اسمش رو تلاش میذارم. من از «برنامه‌نویسی» که تمام نوجوونیم رو پاش گذاشتم زدم تا چند ماهی به این تارگت موقت از زندگیم برسم و از نظر من همین ایثار یه جورایی شهادته برای تلاش های کم و بیش بعدش.

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

⁉️ چنل قراره چی بشه؟
بعد از چند روزی ایده‌پردازی و نوشتن موضوعاتی که میشه راجبشون پست گذاشت برمیگردم و به طور منظم پست میذارم؛ سعی میکنم هفته‌ای سه تا پست رو براتون بذارم.

درکل فارغ از نتیجه؛ امیدوارم هممون موفق باشیم چون به قول خودم تو این چند وقت اخیر، این کره آبی گنده جا واسه هممون داره 🌍

- نیما
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥26👍5
۸ تا موضوع فعلا برنامه‌ریزی شده و بجز امروز که پنج‌شنبست، روزهای شنبه، دوشنبه و چهارشنبه ساعت ۸ غروب میان روی کانال که اشتراک گذاری و ریکشنش با شماست، کیفیت و محتواش با من 🫶🏻💙

📣 از امروز هم شروع میشه، نوتیفیکیشن های کانال رو روشن کنید
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍31
⁉️ تفاوت فانکشن های Create و Insert توی typeorm باهم چیه؟

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

۱- ساخت یه آبجکت جدید
۲- اجرا کردن هوک ها و لایف سایکل ها (AfterInsert, ‌BeforeInsert و ...)
۳- ذخیره سازی آنی داده ها
۴- پرفورمنس

بررسیشون کنیم.

1️⃣ساختن یه آبجکت جدید: فانکشن Create یه آبجکت جدید از روی Entity میسازه و شما در طول فانکشنی که دارید میتونید تغییراتی روش اعمال کنید و در نهایت بعد از اعمال همه‌ی اون تغییرات؛ متد save رو روی آبجکتی که ایجاد کردید صدا میزنید و اینجاست که عمل ذخیره کردنِ دیتا توی دیتابیس واقعا اتفاق میفته.
«درواقع خود فانکشن create هیچ چیزی رو به دیتابیس اضافه نمیکنه.»

2️⃣ اجرای هوک ها (لایف‌سایکل های Entity): متد Insert هیچ هوکی رو اجرا نمیکنه. همونطور که قابل حدسه، از اونجایی که متد create هم هیچ ارتباط مستقیمی با دیتابیس نداره پس این متد هم هوک هارو اجرا نمیکنه.
«هوک ها فقط زمان صدا زدن متد save صدا زده میشن.»

3️⃣ ذخیره سازی آنی: متد Insert به‌صورت آنی و لحظه‌ای دیتارو توی دیتابیس ذخیره میکنه و اون رو ریترن میکنه. متد create اما هر زمانی که شما save رو روی اون آبجکت create شده صدا بزنید؛ دیتارو ذخیره میکنه.

4️⃣ پرفورمنس: خب راستش این بخش جواب خاصی نداره؛ به طور مشخص وقتی شما از Insert استفاده کنید و یهو دیتارو سیو کنید پرفورمنس بهتری دارید. ولی مسئله اصلی ما توی یک نرم‌افزار صرفا پرفورمنس ذخیره شدن دیتا نیست. خیلی وقتا شما نیاز دارید اون دیتایی که از Entityتون دارید رو در طول کنترلر تغییراتی بدید و درنهایت اون رو ذخیره کنید (یا حتی یک سری هوک هارو اجرا کنید)
«پس معیار نهایی استفاده از Create و Insert به این بستگی داره که شما میخواید چه کاری انجام بدید!»

کنجکاو بمونید.
#nestjs #typeorm #database #backend

🔗 @NimaCodez | © | Go Deep, Learn Deep, Ask Deep 🧠
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥163🆒3👍2
🔥 ستون اصلی نرم‌افزار های روز دنیا چیه؟
⁉️ بک‌اند و فرانت‌اند چجوری باهم حرف میزنن؟
⁉️ اصلا اپلیکیشن موبایل چجوری با بک‌اند حرف میزنه؟

تو این پست با «API» آشنا میشم و همه اینارو جواب میدیم.

تو یه رستوران، منو یه فهرستی از غذاهاست که میتونید سفارش بدید. منو بهتون میگه که چه غذاهایی موجودن و چطوری میتونید سفارششون بدید.
تو دنیای برنامه‌نویسی «‏API» همون منوی توی رستورانه. API ها یه فهرست از عملکردها و خدماتی هستن که یه بک‌اند میتونه ارائه بده و توضیح میده چجوری میشه ازش استفاده کرد.

‏«API» هارو حتی میشه یه‌جور دلال دیتا هم حساب کرد. چون درواقع واسطه میشن بین کاربر و جایی که پردازش واقعی داره انجام میشه. (مثل پیش‌خدمتی که سفارش شمارو به آشپزخونه میگه و شما خودتون نمیرید به آشپزخونه)

- بیاید براش یه مثال قابل لمس بزنیم:
۱- منو رو نگاه میکنید و غذارو انتخاب میکنید.
۲- به پیش‌خدمت میگید فلان غذارو رو میخواید.
۳- پیش‌خدمت سفارش شمارو به آشپزخونه میبره تا آشپز حاضرش کنه.

⁉️ تو هرکدوم از این مراحل چه اتفاقی میفته؟

1️⃣ مرحله اول: این مرحله داره فرانت‌اند رو توصیف میکنه، جایی که کاربر داره دکمه ها، اطلاعات، فرم ها و متن هارو میبینه.

2️⃣ مرحله دوم: اینجا پیش‌خدمت داره نقش API رو بازی میکنه. داره HTTP Request (سفارش) رو از فرانت اند (کاربر) میگیره و به بک‌اند (آشپزخونه) تحویل میده.

3️⃣ مرحله سوم: وقتی API این ریکوعست رو تحویل داد؛ بک‌اند هم با وصل شدن به دیتابیس و پیدا کردن اون دیتای مورد نظر و یه سری پردازش ها، دوباره جواب (غذا) رو میده به API (پیش‌خدمت) تا تحویل فرانت‌اند (مشتری/کاربر) بدتش.

به عکس #2 نگاه کنید! «اصلا دلیل فلش دو طرفه‌ای که بینشون کشیدم همینه». چون هر دوتاشون با اون پیش‌خدمت (API) سروکار دارن؛ نه خود آشپز مستقیم غذارو برای مشتری میبره،‌ نه مشتری مستقیما میره آشپزخونه.

⁉️ ولی اصلا این API چه جنسیه؟ چه شکلیه؟

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

⭐️ تقریبا کل قضیه Backend Development راجب همین ساخت API هاست. پس درک مفهومش برامون خیلی مهمه.

⚠️ اگه حس کردید مطالب این پست براتون ناآشناست؛ خوندن این سه تا پیام میتونه کمکتون کنه که این پست رو بهتر درک کنید.

‌‏- URL و درکل آدرس تو دنیای وب چی هست؟
‏- HTTP یعنی چی؟ و اصلا چی هست؟
- دیتابیس چیه؟

کنجکاو بمونید.
#API #crossstack #web #http

🔗 @NimaCodez | © | Go Deep, Learn Deep, Ask Deep 🧠
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥14👍42🆒2
⁉️ چه انواعی از API موجوده؟ الان باهم میفهمیم.

شناخت انواع API به درک عمیق‌تر و دانش بیشتر شما کمک می‌کنه.

‌‏1️⃣- REST API: یک استایل معماری برای توسعه اپلیکیشن‌های تحت شبکه که از متدهای استاندارد HTTP (مثل GET, POST, PUT, DELETE) استفاده میکنه. فرمت داده معمولاً JSON هست. برای دسترسی به هر منبع یک URL مشخص وجود داره.

2️⃣- GraphQL: برخلاف REST که هر منبع یک آدرس داره، GraphQL فقط یک آدرس داره و همه درخواست‌ها به همون یه Endpoint ارسال میشن. GrapQL یه زبان کوئری هست که به کلاینت اجازه میده دقیقاً داده‌های مورد نیازش رو درخواست کنه. از قابلیت‌هایی مثل به‌روزرسانی لحظه‌ای هم پشتیبانی می‌کنه، که برای اپلیکیشن‌های وب‌سوکت ایده‌آل هست.

3️⃣- SOAP: یک پروتکل برای تبادل اطلاعات ساختاریافته بین وب‌سرویس‌ها است. از XML استفاده میکنه و معمولاً روی بستر HTTP کار می‌کنه، اما می‌تونه با SMTP هم کار کنه.

4️⃣- gRPC: یک فریم‌ورک RPC (Remote Procedure Call) با پرفورمنس بالا که از پروتوکل بافر (Proto Buff) برای انتقال داده استفاده می‌کنه. برای میکروسرویس‌ها خیلی مناسبه و از استریم دوطرفه (کلاینت به سرور و برعکس) پشتیبانی میکنه و برای سیستم‌های Low-latency عالیه.

⁉️ حالا کدوم رو استفاده کنیم؟

بستگی به نیاز شما داره. اگر API ساده‌ای توسعه میدید، REST گزینه مناسبیه. اما اگر به انعطاف‌پذیری بیشتری نیاز دارید، GraphQL انتخاب خوبی هست و برای میکروسرویس‌ها و سیستم‌های با تأخیر کم، gRPC بهترین گزینه‌ است. این تصمیم به نیازسنجی دقیقی نیاز داره و به یادتون باشه که: «مجبور نیستید فقط یکی از اینها رو استفاده کنید.»

کنجکاو بمونید.
#gRPC #REST #graphql #soap #api #backend #crossstack

🔗 @NimaCodez | © | Go Deep, Learn Deep, Ask Deep 🧠
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥463🔥3👾3👍1
NimaCodez | خفنیجات با نیما
Photo
اگه خواستید این پست رو بخونید و منو یه ری‌اکشن مهمون کنید!
❤‍🔥15😭2👍1