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
⁉️ چجوری کد تو ادیتورم واقعا معنی پیدا میکنه؟ امروز این مسئله رو حل میکنیم.

قبل از اینکه بخوایم جلوتر بریم باید با یه اصطلاح آشناتون کنم: «Lexical Tokenization»

⭐️ به فرآیندی گفته میشه که یک ورودی به فرمت متن، به یک چیز دیگه‌ای که از نظر معنایی یا نحوی و دستوری معنی میده تبدیل میشه. ( نحوی و دستوری = syntax )

⭕️ این فرایندِ تبدیل توسط چیزی که بهش میگیم «Lexer» انجام میشه. این Lexer درواقع در مرحله‌ی اول فرانت‌اند کامپایلر قرار داره. البته که کاربرد هاشون محدود به کامپایلر ها نیست و حتی Linter ها هم میتونن ازش استفاده بکنن.

این پروسه حتی تو LLM ها یا Large language model ها هم کاربرد داره.
برای تحلیل و بررسی متن ورودی و پرامپت کاربر ازش استفاده میشه اما خب اونجا tokenizer ها بر اساس احتمالات کار میکنن. و یک مرحله دومی هم دارن که این توکن هارو به مقادیر عددی تبدیل میکنه.

تو برنامه‌نویسی، Lexer ما میاد عملگر ها، identifier ها، دیتاتایپ ها، کلمه های کلیدی و رزرو شده و خیلی چیز های دیگه‌ی متن کد مارو بر اساس یک «Lexical Grammar» جدا میکنه و مشخصشون میکنه. ( دقت کنید که میدونیم تو LLM ها اساس کارشون با احتمالات بود )

🧠 جالبه بدونید مغز ما آدم ها هم این کار رو انجام میده موقعی که چیزی میخونید یا میشنوید و صحبت میکنید و بر اساس یک Grammar که طی زندگیتون یادش گرفتید، ورودی هارو tokenize و طبقه بندی میکنه و متوجهشون میشه!

به کل این پروسه «Lexing» میگیم که از دو مرحله‌ی:
1️⃣ اسکن کردن:‌ که متن رو به قطعه هایی که بر اساس Grammar میدونه تیکه تیکه میکنه و به «Lexeme» ها تبدیلشون میکنه.

2️⃣ ارزیابی (evaluate) کردن: که Lexeme های مرحله بالارو به مقادیر پراسس شده و تحلیل شده تبدیل میکنه.

این موضوع گسترده رو تحت عنوان «Lexical Analysis» میشناسیم.

کنجکاو بمونید.
#computer_science 🆕 #lexical_tokenization
🖇 Reference

🔗 @NimaCodez | © | Go Deep, Learn Deep, Ask Deep 🧠
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥30👍9🔥52🆒1
⁉️ ما چطور وبسایت هارو میبینیم؟
⁉️ آیا واقعا به سادگی تایپ کردن اسمشون و زدن Enter هست؟

هر کامپیوتری تحت شبکه توی دنیا یک آدرس «IP» داره. این آدرس IP به ما میگه که چطور و از کدوم راه (Routing) بهش برسیم.

یه نمونه آدرس IP باهم ببینیم:
192.168.1.1

🥲 این اعداد برای به ذهن سپردن خیلی سختن؛ ولی سوال اصلی اینه که: «اصلا چرا باید به ذهن سپرده بشن؟»

🔥 پشت هر وبسایتی توی دنیا، کامپیوتری هست که فایل های مربوط به اون وبسایت رو نگه‌داری و به اصطلاح «Serve» میکنه. یعنی بهمون نشونش میده. طبق توضیحم تو بند اول اون کامپیوتر وبسایت مورد نظر ما هم از داشتن IP مستثنی نیست. حالا فرض کنیم IPش باشه: 134.22.45.67

🌐 الان اگه من بخوام این وبسایت رو ببینم، باید مرورگرم رو باز کنم و توی سرچ‌بار تایپ کنم: 134.22.45.67
خب حالا فکر کن برای دسترسی به هر هزاران وبسایتی که روزانه میبینیشون و باهاشون کار میکنی IP کامپیوتر پشتشون رو باید حفظ کنی.

❗️ ولی این کار نیاز نیست، چون «DNS» اینجاست!

⭐️ ‏DNS: ساده کننده زندگی!

‏DNS یا Domain Name System مثل یک دفترچه تلفن میمونه و اسم هر مخاطب رو به شماره تلفنش نسبت میده. تو دنیای وبسایت ها، ما به اسمشون میگیم «دامنه» مثلا google.com ، و به شماره تلفنشون میگیم IP مثلا:142.250.179.174 (الان اگر رو این IP کلیک کنید گوگل براتون بالا میاد و همین تصدیق دهنده‌ی موضوع ماست)

🤝 کاری که DNS میکنه اینه که میاد IPای که پشت یک دامین به خصوص هست رو اصطلاحا «Resolve» میکنه و به کامپیوتر های مربوطه اطلاع میده که منظور شما از دامنه‌ی فلان، بهمان IP بوده. DNS سرور ها هم سلسله مراتب خودشون رو دارن و خب ممکنه بعضی وقتا نتونن دامنه‌ای رو ریزالو کنن، به همین ترتیب یک مرحله میرن بالاتر و دیتارو میدن به DNS سرور یه لول بالاتر از خودشون تا پیدا بشه.

کنجکاو بمونید.
#dns #ip #network #internet #computer_science

🔗 @NimaCodez | © | Go Deep, Learn Deep, Ask Deep 🧠
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥225👍1
🔥 توضیحات تکمیلی و اطلاعات عمومی طور راجب DNS:

امیدوارم خوشتون بیاد!
نظرات و پیشنهاداتونو میخونم، ریکشن یادتون نره 💙

#dns #ip #network #internet #computer_science

🔗 @NimaCodez | © | Go Deep, Learn Deep, Ask Deep 🧠
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥23🔥2👍1
به ریاضیات علاقه دارید؟
Anonymous Poll
75%
بله 👍🏻
25%
خیر 👎🏻
👍8🤝3
NimaCodez | خفنیجات با نیما
به ریاضیات علاقه دارید؟
ممنون که با شرکت کردن در نظرسنجی ها به پیشبرد اهداف آینده کانال کمک میکنید.

اگه صرفا براتون جالب هست هم «آره» حساب میشه.
قراره کاربرد هاش رو تو زندگیمون و تو دنیای کامپیوتر و برنامه‌نویسی ببینیم؛ و یه سری فکت باحال و آموزنده راجبش یادبگیریم و آشتیتون بدم باهم خلاصه!

و اگه یچی بینابین نظرتونه، ریکشنِ 🤝 بزنید
❤‍🔥14👍2🤝1
🚨 هک کردن پارتنر امکان پذیر شد!

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

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

@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