Dev Fuel – Telegram
Dev Fuel
145 subscribers
41 photos
13 videos
28 links
تو این چنل قراره در مورد تکنولوژی های مختلف برنامه نویسی ، خصوصا JS با هم کلی چیز یاد بگیریم.
(بیشتر حول محور بک اند).
Download Telegram
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (Mohammad Khoshnava)
دقیقا همینه

@SEYED_BAX
Please open Telegram to view this post
VIEW IN TELEGRAM
امروز به یک چالش برخوردم که قبلش نیازه یکم راجع به فرآیند JWT Refresh Token توضیح بدم.
پس در اینجا راجع بهش توضیح میدم و پست بعدی چالشی که بهش برخورده بودم.

در یک پروژه داشتم بخش Auth رو تکمیل می‌کردم ، که قرار بود JWT Refresh Token هندل بشه.

ساز و کار کلی Refresh Token چطوریه؟
ببینید در این روش ما کلا دو تا توکن داریم. یکیش access token و یکیش refresh token .
وقتی کاربر لاگین می‌‌کنه ، ما این دوتا توکن رو میسازیم و میدیم به کلاینت.

مثلا کاربر وقتی به یک route ریکویست میزنه، اون اکسس توکن هست که ارسال میشه و باهاش احراز هویت میشه.
اکسس توکن هم طول عمرش خیلی کوتاهه مثلا نهایتا بین 15 تا 30 دقیقه قرار میدن. یا در کل بسته به نیاز پروژه ممکنه تغییر کنه.

وقتی اکسس توکن منقضی بشه نیازه که دوباره یک توکن جدید به کاربر بدیم.چون بدون این توکن نمیتونه به هیچ یک از روت های محافظت شده دسترسی داشته باشه.
اینجاست که پای refresh-token میاد وسط. وظیفه رفرش توکن اینه که اکسس توکن رو آپدیت کنه. همانطور که از اسمش پیداست یعنی رفرشش کنه.

اکسس توکن رو که مستقیما در response میدیم به به کلاینت. اما رفرش توکن رو چطور؟
من در این پروژه چون کلاینت مرورگر بود ، رفرش توکن رو توی کوکی مستقیما از سمت سرور ست کردم.
یعنی از سمت سرور مستقیما یک توکن به نام refresh_token به صورت http only در مرورگر کاربر ست کردم.
‏http only باعث میشه که ما از طریق کد های js به کوکی دسترسی نداشته باشیم. در نتیجه اگر هکری بخواد به این توکن دسترسی داشته باشه نمی‌‌تونه .

خب حالا چطور ما به واسطه refresh-token اکسس توکن کاربر رو آپدیت کنیم؟
در سمت سرور یک api می‌سازیم به اسم refresh-token . در اینجا کلاینت باید به این روت ریکویست بزنه.
وقتی ریکویست بزنه ، من در سرور به refresh-token که توی مرورگر کاربر به شکل http only ذخیره کرده بودم دسترسی دارم.

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

عمر رفرش توکن هم باز بستگی به پروژه داره میتونید هر چند روز که بخواید بذارید. مثلا 7 روز.

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

اینجا برنامه نویس فرانت اند عزیز باید بیاد یک Silent Refresh راه بندازه. یعنی چی؟ یعنی وقتی به یک روتی ریکویست زدیم و توکن نامعتبر بود ، نباید بفرستیمش کاربر دوباره لاگین کنه. پس رفرش توکن اینجا چیکاره است؟
فرانت اند پروژه من با Nextjs بود و ریکویست ها رو با axios هندل میکردم. در نتیجه یک axiosInstance ساختم، و درونش کدی زدم که هر گاه بعد از ریکویست به هر روتی 401 دریافت کردی ، بیا در پس زمینه به /refresh-token در سرور ریکویست بزن و توکن های جدید رو بگیر. بدون اینکه کاربر متوجه این مراحل بشه.
اگر هم refresh-token نامعتبر بود یا منقضی شده بود هم که دیگه کاربر باید دوباره لاگین کنه.
👏1
ما وقتی بخواهیم cookies یا authorization headers در مرورگر از سمت سرور ست کنیم ، باید در پروژمون در cors policy این فیلد credentials رو true بذاریم.
در سمت فرانت اند هم باید credentials برابر با true باشه.
من هم در axios و هم در سرور این رو true گذاشته بودم ، ولی نه کوکی ست میشد و نه وقتی فرانت اند ریکویستی میزد نتیجه ای میداد . ( Network Error می‌گرفتم.)
ابتدا فکر کردم قطعا مشکل از axios هست چون هربار credentials بر میداشتم خطای Network Error بر طرف میشد 🤨

اما credentials باید true میشد چون در غیر اینصورت سرور به cookies دسترسی نداشت.
پس از اینکه کلی توی issues های axios غلط زدم، تصمیم گرفتم سمت سرور رو چک کنم.

پس از کمی جستجو allowedHeaders که برابر با * گذاشته بودم رو برداشتم و همه چیز درست شد :/
من بر حسب عادت همیشه هنگام دولوپ allowedHeaders رو * می‌ذاشتم.

خلاصه که اگر راهتون به اینورا خورد حواستون باشه allowedHeaders رو * نذارید که ممکنه دردسر بشه.
این چالش کوچولو هم بهانه ای شد به طرز کار JWT Refresh Token بپردازیم.
نظرتون چیه آموزش های کانال رو ببرم در یک وبلاگ یا جایی مثل ویرگول ، و در کانال خلاصه + لینکشون رو ارایه بدم؟ و کانال رو مرجعی از اخبار ، چالش ها و لینک مطالب اختصاصی کنیم.
Anonymous Poll
38%
بله
43%
خیر
14%
برایم اهمیتی ندارد
5%
نظرم را در کامنت می‌نویسم
Dev Fuel
ای کاش هرگز در این پروژه Refresh Token پیاده سازی نمی‌کردم ‏WebSocket هم داره و حالا باید یه حرکتی بزنم که اگه وسط کانکشن توکن منقضی شد کل سیستم نره رو هوا 💀
خب ، این مشکل رو به این شکل حل کردم که در فرانت اند یک تایمر ست کردم، اگر مثلا اکسس توکن ما از هر 15 دقیقه اکسپایر میشه ، ما از هر 13 دقیقه به سرور ریکویست میزنیم و توکن های جدید رو میگیریم.
چون پایداری برامون به شدت مهمه. نمی‌خوایم وسط ارتباط ناگهان به دلیل اکسپایر شدن توکن مشکلی پیش بیاد.
البته این روش هم معایب و مزایای خودشو داره . مثلا ممکنه که اینترنت کاربر در اون موقعیت قطع باشه یا هر مشکل دیگه ای.
که باید این ساید افکت ها رو هم به فکرش بود و یه جوری حلش کرد. مثلا اگر اینترنت کاربر در اون تایم قطع بود منتظر بمونیم تا اینترنتش وصل بشه و بعد بلافلاصه توکن جدید رو بگیریم.
خلاصه که یه سیستم احراز هویت ببینم یک روز میتونه وقت منو بگیره یا نه 😂

البته این کار مشکل رو حل نمیکنه. من توکن رو موقع کانکشن به سمت سرور می‌فرستادم. به این شکل
auth: { accessToken },

و بعد از ساخت ارتباط هم نمیشه این رو آپدیت کرد.
پس در این صورت که آپدیت کردن اکسس توکن در مرورگر به چه دردی میخوره؟
اینجا چه راهی می‌مونه برامون؟🤔
3👍1
Dev Fuel
خب ، این مشکل رو به این شکل حل کردم که در فرانت اند یک تایمر ست کردم، اگر مثلا اکسس توکن ما از هر 15 دقیقه اکسپایر میشه ، ما از هر 13 دقیقه به سرور ریکویست میزنیم و توکن های جدید رو میگیریم. چون پایداری برامون به شدت مهمه. نمی‌خوایم وسط ارتباط ناگهان به دلیل…
خب مرسی بابت شرکت در پاسخ این سوال بحث بر انگیز ، بریم که جواب من رو داشته باشیم :
من خودم دو تا راه به ذهنم رسید. یکیش این که در این موقعیت هر بار دوباره یک کانکشن جدید داشته باشیم تا توکن جدید رو در auth پاس بدیم، که خب اصلا منطقی نیست.

دوم اینکه یک فانکشن بنویسم و هر موقع نیاز به emit شد از سمت فرانت ، با اون emit بزنم.
و در payload توکن جدید رو اون گوشه موشه ها جاش بدیم و ارسال کنیم.
‏webSocket هم که بر پایه TCP هست و رمزنگاری هم لازم انجام میشه ، پس فکر نکنم مشکلی پیش بیاد.

من خودم از این روش استفاده کردم و داره کار می‌کنه.
Dev Fuel
وقتی ما میگیم پروژه ماژولاره یعنی چی؟🤔 ماژولار یعنی پروژه به چند بخش تقسیم شده. و هر بخش مسئولیت مشخص خودشو داره. مثلا بخش user , auth , payment و ... . هر ماژول می‌تونه شامل کنترلر، سرویس، مدل، روتر، middleware خودش باشه. کد ها از هم مستقل هستند و وابستگی…
یه چندتا جا در آگهی استخدامی دیدم که اشاره کرده بودن تسلط به معماری ماژولار.
یاد این پستم افتادم .
گفتم بذار یه اشاره ای بهش بکنم بچه هایی که تازه وارد چنل شدن ببیننش.
چقدر این دنیای لامصب سریع داره پیشرفت می‌کنه تا میای با یه چیز انس بگیری یه چیز دیگه میاد.
آنقدر هم دارن ابزار ها زیاد و زیاد میشن که باید با همشون بتونی کار کنی.

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

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

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

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

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

چطور دلتون میاد به بهانه پیشرفت ، اینهمه استرس و فشار کاری رو تحمل کنید که تهش چی؟
همه چیز اتوماسیون بشه بشینی تو خونه چه غلطی کنی 😒

پ.ن:‌ روی صحبتم با این سرعت رشد خیلی بالای تکنولوژیه. نه کسایی که یادش می‌گیرن.
👍4
Dev Fuel
خب ، این مشکل رو به این شکل حل کردم که در فرانت اند یک تایمر ست کردم، اگر مثلا اکسس توکن ما از هر 15 دقیقه اکسپایر میشه ، ما از هر 13 دقیقه به سرور ریکویست میزنیم و توکن های جدید رو میگیریم. چون پایداری برامون به شدت مهمه. نمی‌خوایم وسط ارتباط ناگهان به دلیل…
خب دوستان این روش رو پیشنهاد نمیکنم بزنید.
من بعد دو روز فکرم موند پیشش برگشتم یه حرکت دیگه زدم 😂

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

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

روش بعدی که یکم سم هستش و به ذهنم رسید این بود که زحمت تولید این رو هم به خودمون ندیم ، و هنگام ارتباط با سوکت از رفرش توکن استفاده کنیم 😂
قشنگ ماهیت رفرش توکن رو می‌‌بریم سوال ولی توی بعضی پروژه ها جوابه.
😁1
می‌خوام راجع به یک موضوع باحال صحبت کنم.

‏Embedding چیست؟🤔

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

مثلا من یک متن دارم به این شکل : "سلام ، امروز تولد دوستمه!" این متن تبدیل میشه به برداری از اعداد . مثلا :

[0.060749103,0.04511056,0.03989463,0.036276204 و ....]

خب حالا این اعداد به چه دردی می‌خورن؟
به درد های فرآواااان.

چندتا از کاربرد هاش رو می‌نویسم و بعد یک توضیح میدم.

‏1-جستوجوی هوشمند
2-پیشنهاد محتوا
3-تشخیص شباهت و خوشه‌بندی
4-ترجمه و پردازش زبان طبیعی
5-شناسایی تصاویر و صدا

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

اما وقتی تایتل مقاله را به برداری از اعداد (embedding) تبدیل کنیم، می‌تونیم نزدیک‌ترین نتایج از نظر معنی و مفهوم را پیدا کنیم. یعنی کامپیوتر می‌تونه بفهمه که "خودرو" و "اتوموبیل" تقریبا همان چیز هستند و نتیجه درست رو بیاره!

حالا چطور نزدیک‌ترین embeddingها پیدا می‌شوند؟

وقتی می‌خواهیم یک embedding را با بقیه مقایسه کنیم، از معیار شباهت برداری استفاده می‌کنیم، مثلا فاصله کسینوسی (Cosine Similarity) یا فاصله اقلیدسی (Euclidean Distance).

این الگوریتم‌ها خیلی سریع میگن: «کدام بردارها به بردار من نزدیک‌ترند؟»

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

(همه این الگوریتم ها هم از قبل نوشته شده و آماده در اختیار ما هستند ، کافیه هر موقع خواستیم از این روش استفاده کنیم ، به سراغشون بریم.)
🔥3👍1
Dev Fuel
می‌خوام راجع به یک موضوع باحال صحبت کنم. ‏Embedding چیست؟🤔 ‌‏Embedding در هوش مصنوعی راهی است برای تبدیل داده ها ( مثل عکس ، متن ، صدا ) به یک نمایش عددی. ( یعنی اعداد در داخل یک بردار ) که کامپیوتر بتونه اون رو پردازش و مقایسه کنه. و این مقایسه مفهومی هستش.…
خب حالا که تا اینجا اومدیم و راجع بهش حرف زدیم، درباره‌ی بردار (Vector) یکم بیشتر بگم.

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

1️⃣ ذخیره به صورت JSON یا Array
ساده‌ترین راه اینه که کل بردار رو به شکل JSON بریزیم توی دیتابیس.
مثلاً:

[0.0607, 0.0451, 0.0398, 0.0362]

این روش برای دیتای کم خوبه، ولی برای جستجوهای سنگین خیلی بهینه نیست.

2️⃣ استفاده از ابزار مخصوص در دیتابیس‌ها
مثلاً PostgreSQL یه افزونه داره به اسم pgvector که بردار رو مستقیم به عنوان نوع داده ذخیره می‌کنه.
اینجوری می‌تونیم راحت توی همون دیتابیس روی بردارها جستجوی شباهت انجام بدیم (Cosine, Euclidean و …).

3️⃣ دیتابیس‌های مخصوص برداری (Vector Database)
وقتی دیتا خیلی زیاد باشه (مثلاً میلیون‌ها بردار)، باید بریم سراغ دیتابیس‌هایی مثل Pinecone، Weaviate یا Milvus.
این‌ها دقیقاً برای همین ساخته شدن.
جستجوی خیلی سریع و بهینه روی بردار ها.

من توی پروژه ای که داشتم از pgvector استفاده کردم که یک چالش خیلی کوچیک با typeorm داشت که حلش کردم و اگه دوستان خواستن میتونم شرحش بدم.
1
دشمن درجه یک ایرانی ها فقط گوگل!
لامصب بعضی از سرویس هات با VPN هم دیگه بالا نمیاد چیکار داری می‌کنی با خودت؟

Calm down bro!
💔2
سایت grow.google/career-dreamer ساخته شده توسط گوگل ، با اطلاعاتی که از علاقه و تجربه کاریتون می‌گیره، شغل های مناسب شما رو بهتون پیشنهاد می‌کنه.
نتایجش برای من خیلی جالب بود، پیشنهاد می‌کنم شما هم حتما امتحان کنید 👌

❗️با IP آمریکا وارد بشید.
3
Forwarded from 👾 Geek Engineers ([ Taha. Dostifam ])
🔺 برنامه‌نویسی کوانتومی (Quantum Programming)

برنامه‌نویسی کوانتومی بر پایه قوانین مکانیک کوانتوم ساخته شده. به جای بیت‌های کلاسیک (۰ و ۱)، در اینجا با کیوبیت سروکار داریم؛ کیوبیت می‌تونه همزمان در چند حالت باشه (به این می‌گن Superposition) و حتی با کیوبیت‌های دیگه Entanglement پیدا کنه. همین ویژگی‌ها باعث می‌شه بعضی محاسبات خیلی سریع‌تر از کامپیوترهای معمولی انجام بشه.

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

🔺 برای نوشتن برنامه‌های کوانتومی، زبان‌ها و فریم‌ورک‌های مخصوصی وجود داره:

- Qiskit (مبتنی بر پایتون)
- Quipper (مبتنی بر Haskell)
- Cirq (از گوگل)

و این برنامه‌ها روی پردازنده‌های کوانتومی مثل IBM Quantum یا Google Sycamore اجرا می‌شن.

تو این دنیا به جای دستورهای کلاسیک، از گیت‌های کوانتومی (مثل Hadamard, CNOT, Pauli-X و...) استفاده می‌کنیم. همین ابزارها پایه‌ی کاربردهای بزرگی مثل رمزنگاری نسل بعدی، بهینه‌سازی، شبیه‌سازی سیستم‌های فیزیکی و شیمیایی هستن. البته تکنولوژی هنوز در مراحل اولیه رشدشه.

🔺 برنامه‌نویسی کوانتومی در خانه: واقعاً ممکنه؟

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

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

🔺 زبان‌های برنامه‌نویسی کوانتومی

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

برخلاف زبان‌های کلاسیک، این زبان‌ها از مفاهیم ویژه کوانتوم مثل Superposition (هم‌زمان بودن در چند حالت)، Entanglement (درهم‌تنیدگی) و Quantum Parallelism (محاسبات موازی کوانتومی) پشتیبانی می‌کنن.

این زبان‌ها به پژوهشگرها و توسعه‌دهنده‌ها کمک می‌کنن برنامه‌های کوانتومی واقعی بنویسن و حتی بتونن اون‌ها رو با کدهای کلاسیک ترکیب کنن. نتیجه این ترکیب، سیستم‌های هیبریدی (کوانتوم + کلاسیک) هستن که فعلاً اصلی‌ترین مسیر توسعه کاربردهای کوانتومی به حساب میان.

https://www.bluequbit.io/quantum-programming-languages

https://learn.microsoft.com/en-us/azure/quantum/qsharp-overview

اینجا quickstart با #Q وجود داره و پیشنهاد میکنم حتمی یک نگاهی بهش بندازید‌:

https://learn.microsoft.com/en-us/azure/quantum/qsharp-quickstart
3
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (Mohammad Khoshnava)
This media is not supported in your browser
VIEW IN TELEGRAM
گوگل زحمت کشیده یک مدل امبدینگ جدید ساخته که خیلی شیک و تر و تمیز فارسی هم پشتیبانی میکنه.

مدل EmbeddingGemma! یه مدل جدید هوش مصنوعی که قراره سر و شکل دنیای آنلاین ما رو عوض کنه. 🚀

حالا این مدل چی هست و به چه دردی می‌خوره؟ 🤔

فرض کن یه وب‌سایت فروشگاهی داری و یکی تو قسمت جستجو می‌نویسه "یه صندلی بگیرم که کمرم اذیت نشه". مدل EmbeddingGemma می‌فهمه که منظور این کاربر "صندلی طبی" یا "صندلی ارگونومیک" هست و دقیقاً همون‌ها رو بهش نشون می‌ده! یعنی دیگه لازم نیست کاربر کلمات کلیدی رو دقیق تایپ کنه. 🤯

یا مثلاً برای پیشنهاد محصول، وقتی کسی یه محصول رو می‌بینه، مدل بر اساس توضیحات اون محصول، چیزای مشابه و مرتبط رو بهش پیشنهاد می‌ده. دیگه فروشگاهت فقط یه سری محصول چیده شده کنار هم نیست، یه مشاور هوشمند هم داره! 🛍️

تقریبا با ۳۰۰ مگابایت رم میتونه اجرا بشه و این خیلی خفنه.

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

اطلاعات بیشتر و دانلود و ... :
https://developers.googleblog.com/en/introducing-embeddinggemma/

@SEYED_BAX
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Forwarded from localhost (Yousef Taheri)
حس میکنم محتوای فنی دیگه مخاطب نداره.
و باید مثل بعضی از کانال فقط تو حاشیه باشی.
چون هر بار که محتوای فنی پست میشه، تعداد زیادی از کاربرا لفت میدن.
👍1
localhost
حس میکنم محتوای فنی دیگه مخاطب نداره. و باید مثل بعضی از کانال فقط تو حاشیه باشی. چون هر بار که محتوای فنی پست میشه، تعداد زیادی از کاربرا لفت میدن.
دقیقا حرف دل من بود که می‌خواستم در این چنل اشاره کنم.
زمانی که محتوای تخصصی تر و مفید تری می‌ذارم ، می‌بینم استقبال خاصی ازش نمیشه و چه بسا که چنل ریزش هم می‌کنه.

ولی خب هدف من از همون ابتدا جذب مخاطب نبوده و سعی می‌کنم مطالب تخصصی تر و بیشتری بذارم.
محتوای چنل هم از همون ابتدا در بایو مشخص شده که حول محور چه خواهد بود.
4
‏TCP چیست و چطور کار می‌کنه؟


تو دنیای شبکه‌های کامپیوتری، اگه بخوایم داده‌ای رو از دستگاهی به دستگاه دیگه‌ای بفرستیم، نیاز به یه سیستم مطمئن داریم که خیالمون رو راحت کنه.
اینجاست که TCP وارد عمل میشه. این بزرگوار مخفف "Transmission Control Protocol" هست (پروتکل کنترل انتقال) که یکی از مهمترین پروتکل‌های لایه انتقال (Transport Layer) توی مدل OSI و TCP/IP هست. این پروتکل برای انتقال داده بین دو دستگاه (مثلا کلاینت و سرور) طراحی شده و یک سری ویژگی خاص داره که باعث میشه قابل اعتماد، منظم، و کارآمد باشه.

مقاله کامل در :
https://vrgl.ir/V097m
👍31
Forwarded from جوانان ایران
🛑 معرفی می کنم این و شما این زبان جدید برنامه نویسی فارسی به اسم هرمز .
یه برنامه نویسی دیوونه ایرانی هشت سال وقت گذاشت تا یه زبان برنامه نویسی بر پایه c بنویسه که بشه فارسی نوشتش و خیلی وایرال شده .


@iR_Javan
😁4🤣3