en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels 👉 If you want to see the tag, subscribe

| کانال توسعه‌دهندگان جاوااسکریپت |

| کانال توسعه‌دهندگان جاوااسکریپت |

Open in Telegram

⭕️ کانال توسعه‌دهندگان جاوااسکریپت دولوپیکس 💠 دولوپیکس | جامعه توسعه‌دهندگان ایرانی 💎 @Developix 🚀 Developix.ir 📌 پشتیبانی و تبلیغات: @DevelopixSupport

Show more
3 835
Subscribers
+224 hours
-137 days
-2930 days
Posts Archive
\n\n\n\nچند نکته‌ی کاربردی 💡\n\n• JSON.parse و JSON.stringify این‌جا برای تبدیل آرایه به string و برعکس استفاده شده؛ دقیقا مطابق چیزی که MDN برای localStorage پیشنهاد می‌دهد.\n• همیشه قبل از push، مقدار input را .trim() کن تا task خالی ذخیره نشود.\n• با جداکردن تابع‌های save و render، بعدا راحت می‌شود featureهایی مثل edit یا checkbox برای completed اضافه کرد.\n\nاین الگوی کوچک، بیس خیلی از appهای واقعی است: گرفتن input کاربر، update کردن state، sync با UI و نگه‌داشتن داده در storage. یک بار از اول تا آخر با حوصله بساز، بعدش هر فریم‌ورکی را راحت‌تر می‌فهمی ✨\n\nامتحانش روی یک فایل ساده HTML حس خوبی از «چیزی که خودم ساختم و کار می‌کند» می‌دهد؛ اگر دوست داشتی گسترشش بده و برای بقیهٔ devها بفرست 🌱\n\n🔖 #Javascript #JS #جاوااسکریپت #JavaScript #DOM #localStorage #Vanilla_JS #Frontend\n\n👤 Developix\n\n💎 Channel: @DevelopixJavascript","datePublished":"2025-12-22T17:00:21Z","dateModified":"2025-12-22T17:00:21Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":1837},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":10},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":19}]}},{"@type":"ListItem","position":3,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/54","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/54","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/54","headline":"در مثال بالا در نسخه‌ی اول برای هر بار اسکرول کل آرایه‌ی items دوباره sort می‌شود؛ این کار هم هزینه‌ی زمانی O…","articleBody":"در مثال بالا در نسخه‌ی اول برای هر بار اسکرول کل آرایه‌ی items دوباره sort می‌شود؛ این کار هم هزینه‌ی زمانی O(n log n) را روی هر رویداد اسکرول تحمیل می‌کند و هم باعث ایجاد GC pressure غیرضروری می‌شود. در نسخه‌ی دوم با مرتب‌سازی یک‌بارِ داده‌ها و استفاده از requestAnimationFrame برای کاهش فراخوانی‌های متوالی، هم Performance رندر بهتر می‌شود و هم مصرف CPU و Memory کمتر می‌گردد. برای چنین سناریوهایی که داده‌ها به‌ندرت عوض می‌شوند ولی Event ها زیاد تریگر می‌شوند، این الگو چه مزیت‌هایی نسبت به نسخه‌ی اول دارد؟\n\n🔖 #Javascript #JS #جاوااسکریپت\n\n👤 Developix\n\n💎 Channel: @DevelopixJavascript","datePublished":"2025-12-14T17:01:55Z","dateModified":"2025-12-14T17:01:55Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":2,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":2056},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":5},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":9},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2}]}},{"@type":"ListItem","position":4,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/53","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/53","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/53","headline":"در کد زیر هدف این است که هر ثانیه مقدار متغیر count یک واحد زیاد شود و در نهایت بعد از ۳ ثانیه در console لاگ…","articleBody":"در کد زیر هدف این است که هر ثانیه مقدار متغیر count یک واحد زیاد شود و در نهایت بعد از ۳ ثانیه در console لاگ شود. اما مقدار نهایی لاگ‌شده درست نیست. مشکل کجاست و این کد را چطور اصلاح می‌کنید تا مقدار صحیح لاگ شود؟\n\nنکته: به رفتار var داخل حلقه و زمان اجرای setTimeout دقت کنید.\n\n🔖 #Javascript #JS #جاوااسکریپت\n\n👤 Developix\n\n💎 Channel: @DevelopixJavascript","datePublished":"2025-12-06T18:00:08Z","dateModified":"2025-12-06T18:00:08Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":2,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":2216},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":7},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":4},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2}]}},{"@type":"ListItem","position":5,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/52","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/52","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/52","headline":"👇 خروجی نهایی این کد JavaScript چیست؟ در این مثال از closure و رفتار hoisting برای توابع و متغیرها استفاده شد…","articleBody":"👇 خروجی نهایی این کد JavaScript چیست؟\n\nدر این مثال از closure و رفتار hoisting برای توابع و متغیرها استفاده شده است. با دقت ترتیب اجرا و نوع متغیرها را بررسی کنید:\n\nfunction makeCounter() {\n console.log(typeof count);\n\n var count = 0;\n\n return function(step) {\n count += step;\n return count;\n };\n}\n\nconst c1 = makeCounter();\nconst c2 = makeCounter();\n\nconsole.log(c1(1));\nconsole.log(c1(2));\nconsole.log(c2(5));\n\nخروجی دقیق این کد در کنسول چیست؟ (هر خط را به ترتیب بنویسید)\n\n🔖 #Javascript #JS #جاوااسکریپت\n\n👤 Developix\n\n💎 Channel: @DevelopixJavascript","datePublished":"2025-11-29T17:00:09Z","dateModified":"2025-11-29T17:00:09Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":5,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":2349},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":8},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":9},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":5}]}},{"@type":"ListItem","position":6,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/51","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/51","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/51","headline":"🤝 اگر تو پروژه‌های React هنوز برای data fetching از useEffect + fetch استفاده می‌کنی، زمان آشنایی با TanStack…","articleBody":"🤝 اگر تو پروژه‌های React هنوز برای data fetching از useEffect + fetch استفاده می‌کنی، زمان آشنایی با TanStack Query (react-query) رسیده.\n\nاین لایبرری مشکل مدیریت state سرور (data از API) رو حل می‌کنه؛ مثل:\n• کش‌کردن requestها\n• refetch خودکار داده‌ها\n• مدیریت loading / error\n• همگام‌سازی دیتا بین تب‌ها و کامپوننت‌ها\n\nنتیجه؟ کد کمتر، باگ کمتر، UX روان‌تر. مخصوصاً تو dashboardها، panelهای ادمین، یا هر جایی که چندین API call داری.\n\nنصب:\nnpm install @tanstack/react-query\n\n\nنمونه استفاده ساده:\nimport { QueryClient, QueryClientProvider,\n useQuery } from '@tanstack/react-query';\n\nconst queryClient = new QueryClient();\n\nfunction Todos() {\n const { data, isLoading, error } = useQuery(['todos'], () =>\n fetch('/api/todos').then(r => r.json())\n );\n\n if (isLoading) return Loading...;\n if (error) return Error!;\n return
    {data.map(t =>
  • {t.title}
  • )}
;\n}\n\nfunction App() {\n return (\n \n \n \n );\n}\n\n\nمستندات رسمی و مثال‌های بیشتر:\nDocs\nGitHub\n\nامتحانش کن تو پروژه بعدی‌ات؛ مخصوصاً جاهایی که چند بار از یک API استفاده می‌کنی یا نیاز به refetch هوشمند داری. 🚀\n\n🔖 #Javascript #JS #جاوااسکریپت #JavaScript #React #TanStack_Query #Frontend #State_Management\n\n👤 Developix\n\n💎 Channel: @DevelopixJavascript","datePublished":"2025-11-21T18:00:28Z","dateModified":"2025-11-21T18:00:28Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":1,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":2649},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":11},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":17},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1}]}},{"@type":"ListItem","position":7,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/50","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/50","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/50","headline":"حدودا یک ماه از ریلیز شدن نسخه 3.0 وب‌اسمبلی (WASM) می‌گذره و الان فرصت کردم درموردش بخونم، تغییرات مهمی که د…","articleBody":"حدودا یک ماه از ریلیز شدن نسخه 3.0 وب‌اسمبلی (WASM) می‌گذره و الان فرصت کردم درموردش بخونم، تغییرات مهمی که داشته رو پایین می‌نویسم.\n\n💠 پشتیبانی از Address Space های 64 بیت\nتا قبل از این نسخه، وب‌اسمبلی محدود به آدرس‌های i32 بود و نمی‌تونست بیشتر از 4GB رو آدرس‌دهی کنه، ولی پشتیبانی از i64 اضافه شده و این محدودیت عملا بی‌نهایت شده، هرچند که همچنان مرورگرها حداکثر اجازه allocate کردن 16GB رو می‌دن.\n\n💠 پشتیبانی از Memory های چندگانه\nتا قبل از این نسخه، هر ماژول وب‌اسمبلی فقط محدود به یک Memory بود و برای تفکیک باید ماژول‌ها Split می‌شدند، ولی در این نسخه قابلیت داشتن Memory های متعدد برای یک ماژول اضافه شده.\n\n💠 پشتیبانی از Garbage Collection\nدر این نسخه یک افزونه با عنوان wasm-gc اضافه شده که در سطوح پایین می‌تونه مموری رو به‌صورت خودکار مدیریت کنه، کامپایلرها می‌تونند Struct ها و آرایه‌ها و بعضی Integer ها رو به صورت تگ شده تعریف کنند و خود wasm وظیفه allocation و lifetime شون رو برعهده بگیره.\n\n💠 پشتیبانی از Tail Call ها\nقابلیت Tail Call به وب‌اسمبلی اضافه شده، این ویژگی از زبان‌های فانکشنال الگو گرفته، به این معنی که فانکشن‌ها می‌تونند در آخرین اکشن‌شون یک فانکشن دیگه‌ای رو کال کنند بدون اینکه فضایی از Stack رو اشغال کنند، این موضوع در کال های Recursive اهمیت زیادی داره.\n\n💠 پشتیبانی از Exception ها\nپشتیبانی از Exception های try و catch در وب‌اسمبلی اضافه شده، تا قبل از این برای چنین کاری باید از JS استفاده می‌شد.\n\n💠 پشتیبانی از String های جاوا اسکریپت\nقابلیت رد و بدل کردن مستقیم String های جاوا اسکریپت بدون نیاز به تبدیل دو طرفه اضافه شده، می‌تونید مقادر String رو به صورت مستقیم به‌عنوان externref پاس بدید و سمت wasm تغییرات لازم رو روش اعمال کنید و سمت JS تحویل بگیرید.\n\nو البته کلی قابلیت دیگه که اگر دوست داشتید می‌تونید اینجا بخونید.","datePublished":"2025-10-17T18:44:40Z","dateModified":"2025-10-17T18:44:40Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":2,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":2720},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":3},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":9},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2}],"sharedContent":{"@type":"SocialMediaPosting","datePublished":"2025-10-17T18:42:21Z"}}},{"@type":"ListItem","position":8,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/49","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/49","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/49","headline":"🎉 Nuxt V4 به تازگی نسخه جدید (V4) فریمورک ناکست منتشر شد... 🔥 تغییرات مهم در Nuxt 4: 🔹 ساختار جدید پروژه (پوش…","articleBody":"🎉 Nuxt V4\nبه تازگی نسخه جدید (V4) فریمورک ناکست منتشر شد...\n\n🔥 تغییرات مهم در Nuxt 4:\n\n🔹 ساختار جدید پروژه (پوشه app/)\nساختار پروژه حالا به صورت زیره و کدهای اپلیکیشن در app/ قرار می‌گیرن:\nmy-nuxt-app/\n├─ app/\n│ ├─ pages/\n│ ├─ components/\n│ ├─ layouts/\n│ └─ app.vue\n├─ server/\n├─ shared/\n├─ public/\n└─ nuxt.config.ts\n\n🔄 دیتا فچینگ بهینه تر شده\n🔧 تجربه TypeScript بهبودیافته\n⚡️ سرعت CLI بهتر شده\n🎨 قالب‌های UI جدید اضافه شده\n\nو Nuxt 3 تا پایان ژانویه 2026 آپدیت‌های نگه‌داری رو دریافت می‌کنه.\n\nبرای مطالعه بیشتر میتونید به وبلاگ ناکست سر بزنید.\n\n🔖 #Javascript, #JS, #جاوااسکریپت, #nuxt, #vue\n\n👤 Matin Soleymani\n\n💎 Channel: @DevelopixJavascript","datePublished":"2025-07-19T05:59:16Z","dateModified":"2025-07-19T05:59:16Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":3,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":1443},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":18},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":7},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3}]}},{"@type":"ListItem","position":9,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/48","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/48","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/48","headline":"🎉 معرفی Vue 3.6 (نسخه آلفا) — آغاز دوران Vapor به‌تازگی Vue 3.6 به‌صورت آلفا منتشر شده و یکی از بزرگ‌ترین تحو…","articleBody":"🎉 معرفی Vue 3.6 (نسخه آلفا) — آغاز دوران Vapor\n\nبه‌تازگی Vue 3.6 به‌صورت آلفا منتشر شده و یکی از بزرگ‌ترین تحولات تاریخ این فریم‌ورک رو میبینیم: حالت Vapor.\nدر این نسخه، حالت جدیدی به نام Vapor Mode معرفی شده که به‌طور کامل بدون استفاده از Virtual DOM کار می‌کند! این یعنی عملکرد بسیار سریع‌تر، مصرف حافظه کمتر و...\nبرای استفاده از این قابلیت جدید، فقط کافیه در تگ \n\nبرای اینکه خودتون تفاوت رو حس کنید، برید به Vue Playground، نسخه 3.6-alpha2 رو انتخاب کنید و هم با حالت عادی و هم با vapor رو تست کنید.\n\n🔖 #Javascript, #JS, #جاوااسکریپت #vue\n\n👤 Matin Soleymani\n\n💎 Channel: @DevelopixJavascript","datePublished":"2025-07-18T18:08:29Z","dateModified":"2025-07-18T18:08:29Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":4,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":1354},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":8},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":6},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":4}]}},{"@type":"ListItem","position":10,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/47","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/47","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/47","headline":"یه ابزار خوب برای فرانت دولوپرها این ابزار میتونه از طریق swagger v2 یا openAPI v3 بیاد درخواست های fetch رو…","articleBody":"یه ابزار خوب برای فرانت دولوپرها \n\nاین ابزار میتونه از طریق swagger v2 یا openAPI v3 بیاد درخواست های fetch رو بنویسه و میتونه بیاد validation با zod و به صورت type-safe براتون انجام بده. ( از فرمت های yaml و json پشتیبانی میکنه )\n\n❇️ نحوه کار :\nاین ابزار رو به صورت dev dependencies نصب میکنید و یک فایل config داره که مشخص میکنید و به سادگی با یه دستور fetchها یا validationهای شما آماده است.\n\n⚙️ کانفیگ :\nاگر در داکیومنت Orval توجه کنید از انواع موارد مختلف پشتیبانی میکنه ، برای مثال شما میتوانید از axios یا fetch api یا react query یا vue query یا انگیولار یا zod ( برای valition ) و تا ترکیبی از fetch و validation بهرمند شوید.\n\n📖 برای مطالعه بیشتر حتما به داکیومنت Orval مراجعه کنید.\n\nhttps://orval.dev\n\n🔖 #Javascript, #JS, #جاوااسکریپت\n\n👤 Matin Soleymani\n\n💎 Channel: @DevelopixJavascript","datePublished":"2025-04-21T21:18:45Z","dateModified":"2025-04-21T21:18:45Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":4,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":1522},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":12},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":33},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":4}]}},{"@type":"ListItem","position":11,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/46","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/46","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/46","headline":"🔥 تخفیف بزرگ سرور اختصاصی ابری هاست ایران از امروز شروع شد!🚀 🛸 ما تو هاست ایران با توجه به درخواست‌های پرتکرا…","articleBody":"🔥 تخفیف بزرگ سرور اختصاصی ابری هاست ایران از امروز شروع شد!🚀\n\n🛸 ما تو هاست ایران با توجه به درخواست‌های پرتکرار شما، یک سرویس متفاوت راه انداختیم:\n🌩 سرور اختصاصی ابری – ترکیبی از قدرت سخت‌افزار اختصاصی با انعطاف و مقیاس‌پذیری فضای ابری ✨\n\n✅ منابع کاملاً اختصاصی\n✅ پرداخت ساعتی یا ماهانه، فقط برای میزان مصرف واقعی (PAYG)\n✅ پشتیبانی از Nested Virtualization (نصب Hypervisor روی VM)\n✅ ساخت سریع ماشین‌مجازی ویندوز یا لینوکس\n✅ بکاپ خودکار و پشتیبانی ۲۴/۷\n✅ انتخاب دیتاسنتر نزدیک به کاربران شما\n\n💵 فقط تا ۶ اردیبهشت فرصت دارید این سرویس رو با ۵۰٪ تخفیف ویژه تهیه کنید!💥\n\n🟥 برای اطلاعات بیشتر و سفارش:\n🔗 لینک مشاهده سرویس","datePublished":"2025-04-20T16:45:02Z","dateModified":"2025-04-20T16:45:02Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":1069},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":2}],"sharedContent":{"@type":"SocialMediaPosting","datePublished":"2025-04-20T10:15:05Z"}}},{"@type":"ListItem","position":12,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/45","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/45","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/45","headline":"🥳مسابقۀ ۱۰۰ میلیونی ساخت بات در اپلیکیشن بله!🦾 💰 مسابقه‌ای برای ساخت بازو (بات) و مینی‌اپ در اپلیکیشن بله 🎯 ا…","articleBody":"🥳مسابقۀ ۱۰۰ میلیونی ساخت بات در اپلیکیشن بله!🦾\n\n💰 مسابقه‌ای برای ساخت بازو (بات) و مینی‌اپ در اپلیکیشن بله\n\n🎯 از استعدادت پول در بیار!\n❓چطوری؟\n\nبله با مسابقهٔ «زور بازوت رو نشون بده!» یک فرصت عالی برای مهندسین نرم‌افزار، وب دولوپر‌ها، صاحبان سایت‌ها و اپلیکیشن‌ها و تیم‌های محصول فراهم کرده که پاسخگوی این دغدغه‌هاست. \n\n🎁 یه مسابقه با ۱۰۰ میلیون تومن جایزهٔ نقدی و ۱ میلیارد تومن اعتبار تبلیغات منتظرته! ♨️\n\n📎 همین الان در مسابقه ثبت‌نام کن! ➡️\n\n💬 کانال اخبار بازو دراپلیکیشن بله \n\nکانال اطلاع‌رسانی بله | @BaleMessenger","datePublished":"2025-02-24T16:30:05Z","dateModified":"2025-04-19T16:13:50Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":2,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":1230},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":4},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":5},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2}],"sharedContent":{"@type":"SocialMediaPosting","headline":"Developix Support","datePublished":"2025-02-24T15:41:42Z"}}},{"@type":"ListItem","position":13,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/44","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/44","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/44","headline":"ثبت‌نام در ناراستار - NarStar شروع شد!🧩 10 ساعت پر هیجان: یه روز جمعه رو بشین بازی بساز! شبکه سازی: با بقیه ب…","articleBody":"ثبت‌نام در ناراستار - NarStar شروع شد!🧩\n\n10 ساعت پر هیجان: یه روز جمعه رو بشین بازی بساز!\nشبکه سازی: با بقیه بازیسازا آشنا شو و تیم بساز!\n\n🏆جوایز مسابقه: 🏆\n🥇 تیم اول 15 میلیون تومان\n🥈 تیم دوم 12 میلیون تومان\n🥉 تیم سوم 9 میلیون تومان\n🎖 تیم چهارم 7 میلیون تومان\n(جوایزی به رسم یادبود برای سایر شرکت کنندگان)\n\n🎮 هر انجینی که دوست داری استفاده کن(Unity, Game Maker, Construct و ...)\nحتی اجازه داری از هوش مصنوعی هم کمک بگیری!\n\nهمین الان ثبت‌نام کن (ظرفیت محدود):🗿\n@narstar_ir\n\n📞 اطلاعات بیشتر:\n@narstar_gamejam\n\n⏰ تاریخ برگزاری:\nروز جمعه 10 اسفند 1403 - 1403/12/10\n\n🛑آخرین مهلت ثبت‌نام:\n2 اسفند 1403\n\n💎برگزار کننده:\nزیست‌بوم کودک و نوجوان انارستان - www.anarestan.com\n\n#بازی_سازی #ناراستار #گیمجم #گیم_جم #مسابقه","datePublished":"2025-02-05T16:30:03Z","dateModified":"2025-02-24T01:00:28Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":2,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":836},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":2},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":3},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2}],"sharedContent":{"@type":"SocialMediaPosting","datePublished":"2025-02-05T10:36:12Z"}}},{"@type":"ListItem","position":14,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/43","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/43","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/43","headline":"Bun v 1.2 بان نسخه جدیدش رو منتشر کرده. ✅ اپدیت های جدید بان در این نسخه : 1. سازگاری بیشتری با nodejs داره.…","articleBody":"Bun v 1.2\n\nبان نسخه جدیدش رو منتشر کرده.\n\n✅ اپدیت های جدید بان در این نسخه :\n\n1. سازگاری بیشتری با nodejs داره.\n2. به صورت built-in از s3 پشتیبانی میکنه.\n3. به صورت built-in از Postgres پشتیبانی میکنه و به زودی قراره mysql هم اضافه بشه.\n4. فایل bun.lock قبلا به صورت باینری بوده ولی با فیدبک‌هایی که از کامیونیتی دریافت کردند به فایل متنی تغییر دادند.\n5. میتونید html به صورت خیلی ساده از طریق بان ایمپورت کنید ( خودش مینیفای میکنه باندل میکنه هم js رو هم css رو )\n\nو به صورت کلی پرفرمنس بهتر شده ، سرعت بهتر شده و...\n\nفیچر های دیگری هم در این نسخه عرضه شده که میتونید با مشاهده وبلاگ بان مطالعه کنید.\n\nلینک وبلاگ :\nhttps://bun.sh/blog/bun-v1.2\n\n🔖 #Javascript, #JS, #جاوااسکریپت\n\n👤 Matin Soleymani\n\n💎 Channel: @DevelopixJavascript","datePublished":"2025-01-24T19:21:14Z","dateModified":"2025-01-24T19:21:14Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":23,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":1832},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":13},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":11},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":23}]}},{"@type":"ListItem","position":15,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/42","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/42","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/42","headline":"⭕️ دوره آموزش برنامه‌نویسی مینی اپ تلگرام 💠 در این دوره به آموزش برنامه‌نویسی مینی اپ تلگرام می‌پردازیم، از م…","articleBody":"⭕️ دوره آموزش برنامه‌نویسی مینی اپ تلگرام\n\n💠 در این دوره به آموزش برنامه‌نویسی مینی اپ تلگرام می‌پردازیم، از مباحث پایه و عمومی شروع می‌کنیم و مفاهیم رو یاد می‌گیریم.","datePublished":"2025-01-02T15:46:05Z","dateModified":"2025-01-02T15:46:05Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":1466},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":1},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":8}],"sharedContent":{"@type":"SocialMediaPosting","datePublished":"2025-01-02T15:45:18Z"}}},{"@type":"ListItem","position":16,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/41","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/41","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/41","headline":"چطور در مسیر مهاجرت سورپرایز نشیم؟ 🎯✈️🌍 با داشتن اطلاعات دقیق و واقعی 📊، می‌توانید از غافلگیری‌ها دور بمانید…","articleBody":"چطور در مسیر مهاجرت سورپرایز نشیم؟ 🎯✈️🌍\n\nبا داشتن اطلاعات دقیق و واقعی 📊، می‌توانید از غافلگیری‌ها دور بمانید 😌✨ و مسیر مهاجرتی‌تان را با اطمینان بیشتری طی کنید. 💪🚀\n\n\n✅ با سفارش گزارش شخصی‌سازی‌شده دیرکشن، آگاهانه از میان ۴۰۰ برنامه مهاجرتی 🗂️ در ۱۸ کشور 🌎 و با کمک هوش مصنوعی 🤖 برای مهاجرت خود تصمیم بگیرید\n\nدریافت گزارش","datePublished":"2024-12-25T16:30:03Z","dateModified":"2024-12-25T16:30:03Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":1464},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":6},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":3}],"sharedContent":{"@type":"SocialMediaPosting","datePublished":"2024-12-15T07:06:19Z"}}},{"@type":"ListItem","position":17,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/40","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/40","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/40","headline":"🎉 دنبال یه فرصت برای آینده کاری و‌ مالی امن هستی؟ 🤔تا حالا به این فکر کردی که مهارتی که داری می‌تونه بهت درآم…","articleBody":"🎉 دنبال یه فرصت برای آینده کاری و‌ مالی امن هستی؟\n\n🤔تا حالا به این فکر کردی که مهارتی که داری می‌تونه بهت درآمد دلاری بده؟ \n\n😑شاید فقط نمی‌دونی از کجا باید شروع کنی یا فکر می‌کنی موانع زیادی سر راهته.\n\n📌 تو وبینار ویژه یلدا ما بهت یاد می‌دیم:\n \n• چطور از مهارتت استفاده کنی و اولین قدم رو برداری.\n • راه‌هایی که می‌تونی باهاش یه مسیر شغلی امن و پایدار بسازی.\n • چطور درآمد دلاری رو وارد زندگیت کنی.\n\n⚡️این فرصت برای توئه که امروز، یک آینده‌ای متفاوت بسازی.\nhttps://links.etekanesh.com/DevelopixP\n\n@TekaneshAcademy","datePublished":"2024-12-21T18:15:02Z","dateModified":"2024-12-23T12:02:56Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":1,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":368},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1}],"sharedContent":{"@type":"SocialMediaPosting","headline":"Developix Support","datePublished":"2024-12-21T18:05:25Z"}}},{"@type":"ListItem","position":18,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/39","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/39","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/39","headline":"💎 وبسایت UIVerse منبعی غنی از کامپوننت‌های پر استفاده و زیبا برای طراحی UI هست که می‌تونید به‌راحتی کدهای مرب…","articleBody":"💎 وبسایت UIVerse منبعی غنی از کامپوننت‌های پر استفاده و زیبا برای طراحی UI هست که می‌تونید به‌راحتی کدهای مربوط به کامپوننت‌های مورد علاقه‌تون دریافت کنید. لازم به‌ذکر هست که تمامی کامپوننت‌ها Open-Source هستند و بدون مشکل می‌تونید استفاده کنید.\n\n🌐 UIVerse.io\n\n💎 Channel: @DevelopixJavascript","datePublished":"2024-12-17T13:40:11Z","dateModified":"2024-12-17T13:40:11Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":3049},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":16},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":125}]}},{"@type":"ListItem","position":19,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/38","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/38","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/38","headline":"🔒🔑 انواع روش‌های احراز هویت در بک‌اند توی پست امروزمون می‌خواهیم بپردازیم به مبحث احراز هویت (authentication)…","articleBody":"🔒🔑 انواع روش‌های احراز هویت در بک‌اند\n\nتوی پست امروزمون می‌خواهیم بپردازیم به مبحث احراز هویت (authentication) که یکی از مهم‌ترین مباحث در بک‌اند هست. ✅\n\nچند نکته قبل از شروع:\nبه هیچ وجه رمز کاربر نباید به صورت خام داخل دیتابیس یا هر جای دیگر ذخیره شود. ❌\nاز متدهای هشینگ (hashing) قوی استفاده کنید، مثل SHA-256 یا SHA-512.\nاگر از جاوااسکریپت برای پروژه‌تان استفاده می‌کنید، می‌توانید از کتابخانه bcrypt استفاده کنید.\nتعداد دفعاتی که یک کاربر می‌تواند پشت سرهم درخواست ارسال کند را محدود کنید تا از حملات brute force جلوگیری شود.\n\n1️⃣ Password-based authentication\nدر این روش، کاربر فقط باید یک رمز وارد کند تا لاگین کرده و به اندپوینت‌های محافظت‌شده دسترسی پیدا کند.\nاینجا نه توکنی وجود دارد و نه چیزی که منقضی شود و از ادامه دسترسی کاربر جلوگیری کند.\nاین روش اصلاً مناسب نیست و فقط برای یادگیری یا پروژه‌های ساده مناسب است.\n\n2️⃣ Token-based authentication\nیکی از مفیدترین و مهم‌ترین روش‌های احراز هویت که همه با آن آشنایی داریم.\nو البته، اسم JWT به گوش همه خورده است.\n\nدر این روش، وقتی کاربر وارد می‌شود، برای او دو توکن رمزنگاری‌شده ساخته می‌شود:\n\nAccess Token\nRefresh Token\nتفاوت‌ها:\nمدت زمان انقضای Access Token کوتاه است (بین ۱۵ دقیقه تا ۱ ساعت).\nمدت زمان انقضای Refresh Token طولانی‌تر است (بیش از ۷ روز).\nهر وقت که Access Token منقضی می‌شود، با استفاده از Refresh Token، یک Access Token جدید دریافت می‌کنیم.\n\nسوال مهم: توکن‌ها کجا ذخیره و ارسال می‌شوند؟\nتوکن‌ها می‌توانند:\n\nدر هدرها (Headers) ارسال شوند.\nیا در کوکی‌ها ذخیره شوند.\nنکته: اگر توکن در کوکی ذخیره می‌شود، باید حتماً نکات امنیتی خاصی رعایت شود.\n\nنکته: اگر Refresh Token منقضی شود، کاربر باید مجدداً لاگین کند.\n\nمحتوای JWT:\nتوکن JWT معمولاً حاوی اطلاعات رمزنگاری‌شده مثل id، email و... است. (رمز عبور نباید ذخیره شود.)\nاین توکن از بخش‌های زیر تشکیل شده است:\n\nHeader\nPayload\nSignature\nکاربرد:\nاین روش معمولاً همراه با احراز هویت دو مرحله‌ای (2FA) استفاده می‌شود.\nعلاوه بر رمز عبور، یک کد به ایمیل یا شماره تلفن ارسال می‌شود که باید وارد شود.\n\n3️⃣ Biometric authentication\nدر این روش، احراز هویت با استفاده از صدا، اثر انگشت، چشم، یا ویدئو انجام می‌شود.\nاین روش بیشتر در سامانه‌های حساس مثل دولتی یا بانکی استفاده می‌شود و عمومیت چندانی ندارد.\n\n4️⃣ Social media authentication\nدر این روش، کاربر از طریق اکانت شبکه‌های اجتماعی یا سرویس‌های معتبر، احراز هویت می‌کند.\n\nویژگی‌ها:\nبسیار محبوب و کاربرپسند است.\nمعمولاً با اکانت‌های گوگل (جیمیل)، فیسبوک، گیت‌هاب و... انجام می‌شود.\nسرعت بالایی دارد، چون اکثر کاربران اکانت جیمیل‌شان روی مرورگر فعال است و با یک کلیک، احراز هویت کامل می‌شود.\n\n\nامیدوارم از این پست خوشتون اومده باشه 😊\nهر سوالی هم داشتید می‌تونید در بخش نظرات بپرسید 🙏\n\n🔖 #Javascript, #JS, #جاوااسکریپت\n\n👤 soroushGH \n\n💎 Channel: @DevelopixJavascript","datePublished":"2024-12-15T15:45:02Z","dateModified":"2024-12-15T15:45:02Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":1,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":1718},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":18},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":33},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1}]}},{"@type":"ListItem","position":20,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/37","url":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/37","mainEntityOfPage":"https://telemetr.io/en/channels/1942875334-developixjavascript/posts/37","headline":"سلام پرسشنامه‌ پیش رو با هدف درک بهتر رفتار و نیازهای کسب‌وکارهای اینترنتی ایرانی در استفاده از ابزارهای پردا…","articleBody":"سلام\nپرسشنامه‌ پیش رو با هدف درک بهتر رفتار و نیازهای کسب‌وکارهای اینترنتی ایرانی در استفاده از ابزارهای پرداخت توسط یک تیم پژوهشی مستقل طراحی شده است. نتایج این پژوهش به ما کمک می‌کند تا ابزارهایی کارآمدتر و منطبق با نیازهای واقعی شما ارائه دهیم. تکمیل این پرسشنامه کاملاً بی‌نام است و هیچ اطلاعات شخصی از شما ذخیره نخواهد شد. پاسخ‌های شما نقش کلیدی در بهبود خدمات ابزارهای پرداختی اینترنتی در کشور دارد، بنابراین از شما خواهشمندیم با دقت و صداقت به سوالات پاسخ دهید. زمان لازم برای تکمیل: حدود 5 دقیقه لطفاً برای شروع پرسشنامه، روی لینک زیر کلیک کنید و ما را در این مسیر همراهی کنید.\n.\nhttps://survey.porsline.ir/s/lEtAnSw8\n.\nسپاس فراوان از همکاری صمیمانه شما","datePublished":"2024-12-10T15:30:03Z","dateModified":"2024-12-10T15:30:03Z","author":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"publisher":{"@type":"Organization","name":"| کانال توسعه‌دهندگان جاوااسکریپت |","url":"https://telemetr.io/en/channels/1942875334-developixjavascript","image":"https://img.telemetr.io/c/27u6CW/5823301833593045169?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":1533},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":2},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":4}],"sharedContent":{"@type":"SocialMediaPosting","headline":"Developix Support","datePublished":"2024-12-09T21:26:49Z"}}}]}
‌‎پاک‌سازی توابع با تکنیک «Early Return» در JavaScript 🚿 یکی از ساده‌ترین و مؤثرترین تکنیک‌های Clean Code در جاوااسکریپت، استفاده از Early Return است؛ یعنی به‌جای پیچوندن منطق داخل ifهای تودرتو، در همان اول تابع، شرایط نامعتبر را سریع برگردانیم. این تکنیک توابع را: • کوتاه‌تر و خواناتر می‌کند ✨ • از Nested if‌های عمیق جلوگیری می‌کند • باعث می‌شود مسیرهای خطا و edge caseها واضح‌تر دیده شوند نمونه کد قبل از refactor (کد سخت‌خوان)
function createUser(data) {
  if (data) {
    if (data.email) {
      if (data.password && data.password.length >= 8) {
        // save to DB
        return { ok: true, user: data };
      } else {
        return { ok: false, error: 'Weak password' };
      }
    } else {
      return { ok: false, error: 'Email is required' };
    }
  } else {
    return { ok: false, error: 'No data' };
  }
}
این تابع کارش را انجام می‌دهد، اما هر شرط جدیدی که اضافه شود، عمق ifها بیشتر می‌شود و دیباگ سخت‌تر. Refactor با Early Return ✅
function createUser(data) {
  if (!data) {
    return { ok: false, error: 'No data' };
  }

  if (!data.email) {
    return { ok: false, error: 'Email is required' };
  }

  if (!data.password || data.password.length < 8) {
    return { ok: false, error: 'Weak password' };
  }

  // happy path
  return { ok: true, user: data };
}
الان: • هر شرط invalid در بالا «قطع» می‌شود 🔪 • مسیر اصلی (happy path) در انتها واضح و تمیز است • اضافه‌کردن شرط جدید فقط یعنی اضافه کردن چند خط دیگر بالای happy path نمونه در Express / Node.js 🌐
app.post('/login', async (req, res) => {
  const { email, password } = req.body;

  if (!email || !password) {
    return res.status(400).json({ message: 'Missing credentials' });
  }

  const user = await findUserByEmail(email);
  if (!user) {
    return res.status(404).json({ message: 'User not found' });
  }

  const valid = await comparePassword(password, user.passwordHash);
  if (!valid) {
    return res.status(401).json({ message: 'Invalid password' });
  }

  // happy path
  res.json({ token: createToken(user) });
});
هر مرحله نامعتبر به‌سرعت return می‌شود و منطق login مثل یک «چک‌لیست» خطی خوانده می‌شود. نکته مهم 🔍 Early Return با Single Responsibility خیلی خوب جفت می‌شود؛ اگر تابع خیلی طولانی شد، علاوه بر early return، آن را به چند تابع کوچک‌تر با نام‌های خوب بشکنید. منابع برای مطالعهٔ بیشتر: • MDN – Control Flow • Refactoring.Guru این سبک نوشتن را کم‌کم در هندلرهای Express، سرویس‌های Node.js یا حتی توابع React خودتان وارد کنید؛ بعد از مدتی، خواندن و نگه‌داری کد برای خودتان و تیم‌تان به‌وضوح راحت‌تر می‌شود 🙌 🔖 #Javascript #JS #جاوااسکریپت #clean_code #early_return #javascript #nodejs #express #refactoring 👤 Developix 💎 Channel: @DevelopixJavascript

🚀 ساخت یک TODO List ساده با Vanilla JavaScript (بدون فریم‌ورک) گاهی برای تمرین مفاهیم modern JS لازم نیست سراغ React یا Vue رفت؛ یک TODO List ساده با Vanilla JavaScript می‌تواند کلی چیز مثل DOM، event handling و localStorage را روشن کند 🤓 این ایده بر اساس مثال‌های رسمی DOM و Storage در MDN است: MDN querySelector MDN localStorage در این مینی‌پروژه: ✅ با querySelector و addEventListener کار می‌کنی ✅ آیتم‌ها را در localStorage نگه می‌داری تا با رفرش صفحه نپرند ✅ یک ساختار کد تمیز و قابل‌گسترش می‌سازی ایدهٔ سناریو 📝 فرض کن می‌خواهی کارهای روزانه‌ات را روی مرورگر ثبت کنی؛ اضافه‌کردن task، حذف‌کردن، و این‌که با بستن تب همه چیز نپره. همین. نمونه کد مینیمال (index.html + script.js در یک فولدر بگذار):
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>Todo Vanilla JS</title>
  <style>
    body { font-family: sans-serif; max-width: 480px; margin: 40px auto; }
    li { display: flex; justify-content: space-between; margin: 4px 0; }
    button { margin-right: 8px; }
  </style>
</head>
<body>
  <h1>Todo List</h1>
  <input id="todo-input" placeholder="New task..." />
  <button id="add-btn">Add</button>
  <ul id="todo-list"></ul>

  <script>
    const input = document.querySelector("#todo-input");
    const addBtn = document.querySelector("#add-btn");
    const list = document.querySelector("#todo-list");

    let todos = JSON.parse(localStorage.getItem("todos") || "[]");

    function save() {
      localStorage.setItem("todos", JSON.stringify(todos));
    }

    function render() {
      list.innerHTML = "";
      todos.forEach((text, index) => {
        const li = document.createElement("li");
        li.textContent = text;

        const removeBtn = document.createElement("button");
        removeBtn.textContent = "x";
        removeBtn.addEventListener("click", () => {
          todos.splice(index, 1);
          save();
          render();
        });

        li.prepend(removeBtn);
        list.appendChild(li);
      });
    }

    addBtn.addEventListener("click", () => {
      const value = input.value.trim();
      if (!value) return;
      todos.push(value);
      input.value = "";
      save();
      render();
    });

    render();
  </script>
</body>
</html>
چند نکته‌ی کاربردی 💡 • JSON.parse و JSON.stringify این‌جا برای تبدیل آرایه به string و برعکس استفاده شده؛ دقیقا مطابق چیزی که MDN برای localStorage پیشنهاد می‌دهد. • همیشه قبل از push، مقدار input را .trim() کن تا task خالی ذخیره نشود. • با جداکردن تابع‌های save و render، بعدا راحت می‌شود featureهایی مثل edit یا checkbox برای completed اضافه کرد. این الگوی کوچک، بیس خیلی از appهای واقعی است: گرفتن input کاربر، update کردن state، sync با UI و نگه‌داشتن داده در storage. یک بار از اول تا آخر با حوصله بساز، بعدش هر فریم‌ورکی را راحت‌تر می‌فهمی ✨ امتحانش روی یک فایل ساده HTML حس خوبی از «چیزی که خودم ساختم و کار می‌کند» می‌دهد؛ اگر دوست داشتی گسترشش بده و برای بقیهٔ devها بفرست 🌱 🔖 #Javascript #JS #جاوااسکریپت #JavaScript #DOM #localStorage #Vanilla_JS #Frontend 👤 Developix 💎 Channel: @DevelopixJavascript

در مثال بالا در نسخه‌ی اول برای هر بار اسکرول کل آرایه‌ی items دوباره sort می‌شود؛ این کار هم هزینه‌ی زمانی O(n log n) را روی
+1
در مثال بالا در نسخه‌ی اول برای هر بار اسکرول کل آرایه‌ی items دوباره sort می‌شود؛ این کار هم هزینه‌ی زمانی O(n log n) را روی هر رویداد اسکرول تحمیل می‌کند و هم باعث ایجاد GC pressure غیرضروری می‌شود. در نسخه‌ی دوم با مرتب‌سازی یک‌بارِ داده‌ها و استفاده از requestAnimationFrame برای کاهش فراخوانی‌های متوالی، هم Performance رندر بهتر می‌شود و هم مصرف CPU و Memory کمتر می‌گردد. برای چنین سناریوهایی که داده‌ها به‌ندرت عوض می‌شوند ولی Event ها زیاد تریگر می‌شوند، این الگو چه مزیت‌هایی نسبت به نسخه‌ی اول دارد؟ 🔖 #Javascript #JS #جاوااسکریپت 👤 Developix 💎 Channel: @DevelopixJavascript

در کد زیر هدف این است که هر ثانیه مقدار متغیر count یک واحد زیاد شود و در نهایت بعد از ۳ ثانیه در console لاگ شود. اما مقدار
در کد زیر هدف این است که هر ثانیه مقدار متغیر count یک واحد زیاد شود و در نهایت بعد از ۳ ثانیه در console لاگ شود. اما مقدار نهایی لاگ‌شده درست نیست. مشکل کجاست و این کد را چطور اصلاح می‌کنید تا مقدار صحیح لاگ شود؟ نکته: به رفتار var داخل حلقه و زمان اجرای setTimeout دقت کنید. 🔖 #Javascript #JS #جاوااسکریپت 👤 Developix 💎 Channel: @DevelopixJavascript

👇 خروجی نهایی این کد JavaScript چیست؟ در این مثال از closure و رفتار hoisting برای توابع و متغیرها استفاده شده است. با دقت ت
👇 خروجی نهایی این کد JavaScript چیست؟ در این مثال از closure و رفتار hoisting برای توابع و متغیرها استفاده شده است. با دقت ترتیب اجرا و نوع متغیرها را بررسی کنید:
function makeCounter() {
  console.log(typeof count);

  var count = 0;

  return function(step) {
    count += step;
    return count;
  };
}

const c1 = makeCounter();
const c2 = makeCounter();

console.log(c1(1));
console.log(c1(2));
console.log(c2(5));
خروجی دقیق این کد در کنسول چیست؟ (هر خط را به ترتیب بنویسید) 🔖 #Javascript #JS #جاوااسکریپت 👤 Developix 💎 Channel: @DevelopixJavascript

🤝 اگر تو پروژه‌های React هنوز برای data fetching از useEffect + fetch استفاده می‌کنی، زمان آشنایی با TanStack Query (react-query) رسیده. این لایبرری مشکل مدیریت state سرور (data از API) رو حل می‌کنه؛ مثل: • کش‌کردن requestها • refetch خودکار داده‌ها • مدیریت loading / error • همگام‌سازی دیتا بین تب‌ها و کامپوننت‌ها نتیجه؟ کد کمتر، باگ کمتر، UX روان‌تر. مخصوصاً تو dashboardها، panelهای ادمین، یا هر جایی که چندین API call داری. نصب:
npm install @tanstack/react-query
نمونه استفاده ساده:
import { QueryClient, QueryClientProvider,
  useQuery } from '@tanstack/react-query';

const queryClient = new QueryClient();

function Todos() {
  const { data, isLoading, error } = useQuery(['todos'], () =>
    fetch('/api/todos').then(r => r.json())
  );

  if (isLoading) return <span>Loading...</span>;
  if (error) return <span>Error!</span>;
  return <ul>{data.map(t => <li key={t.id}>{t.title}</li>)}</ul>;
}

function App() {
  return (
    <QueryClientProvider client={queryClient}>
      <Todos />
    </QueryClientProvider>
  );
}
مستندات رسمی و مثال‌های بیشتر: Docs GitHub امتحانش کن تو پروژه بعدی‌ات؛ مخصوصاً جاهایی که چند بار از یک API استفاده می‌کنی یا نیاز به refetch هوشمند داری. 🚀 🔖 #Javascript #JS #جاوااسکریپت #JavaScript #React #TanStack_Query #Frontend #State_Management 👤 Developix 💎 Channel: @DevelopixJavascript

Repost from | Erfan's Notes |
حدودا یک ماه از ریلیز شدن نسخه 3.0 وب‌اسمبلی (WASM) می‌گذره و الان فرصت کردم درموردش بخونم، تغییرات مهمی که داشته رو پایین می
حدودا یک ماه از ریلیز شدن نسخه 3.0 وب‌اسمبلی (WASM) می‌گذره و الان فرصت کردم درموردش بخونم، تغییرات مهمی که داشته رو پایین می‌نویسم. 💠 پشتیبانی از Address Space های 64 بیت تا قبل از این نسخه، وب‌اسمبلی محدود به آدرس‌های i32 بود و نمی‌تونست بیشتر از 4GB رو آدرس‌دهی کنه، ولی پشتیبانی از i64 اضافه شده و این محدودیت عملا بی‌نهایت شده، هرچند که همچنان مرورگرها حداکثر اجازه allocate کردن 16GB رو می‌دن. 💠 پشتیبانی از Memory های چندگانه تا قبل از این نسخه، هر ماژول وب‌اسمبلی فقط محدود به یک Memory بود و برای تفکیک باید ماژول‌ها Split می‌شدند، ولی در این نسخه قابلیت داشتن Memory های متعدد برای یک ماژول اضافه شده. 💠 پشتیبانی از Garbage Collection در این نسخه یک افزونه با عنوان wasm-gc اضافه شده که در سطوح پایین می‌تونه مموری رو به‌صورت خودکار مدیریت کنه، کامپایلرها می‌تونند Struct ها و آرایه‌ها و بعضی Integer ها رو به صورت تگ شده تعریف کنند و خود wasm وظیفه allocation و lifetime شون رو برعهده بگیره. 💠 پشتیبانی از Tail Call ها قابلیت Tail Call به وب‌اسمبلی اضافه شده، این ویژگی از زبان‌های فانکشنال الگو گرفته، به این معنی که فانکشن‌ها می‌تونند در آخرین اکشن‌شون یک فانکشن دیگه‌ای رو کال کنند بدون اینکه فضایی از Stack رو اشغال کنند، این موضوع در کال های Recursive اهمیت زیادی داره. 💠 پشتیبانی از Exception ها پشتیبانی از Exception های try و catch در وب‌اسمبلی اضافه شده، تا قبل از این برای چنین کاری باید از JS استفاده می‌شد. 💠 پشتیبانی از String های جاوا اسکریپت قابلیت رد و بدل کردن مستقیم String های جاوا اسکریپت بدون نیاز به تبدیل دو طرفه اضافه شده، می‌تونید مقادر String رو به صورت مستقیم به‌عنوان externref پاس بدید و سمت wasm تغییرات لازم رو روش اعمال کنید و سمت JS تحویل بگیرید. و البته کلی قابلیت دیگه که اگر دوست داشتید می‌تونید اینجا بخونید.

🎉 Nuxt V4 به تازگی نسخه جدید (V4) فریمورک ناکست منتشر شد... 🔥 تغییرات مهم در Nuxt 4: 🔹 ساختار جدید پروژه (پوشه app/) ساختار پروژه حالا به صورت زیره و کدهای اپلیکیشن در app/ قرار می‌گیرن:
my-nuxt-app/
├─ app/
│  ├─ pages/
│  ├─ components/
│  ├─ layouts/
│  └─ app.vue
├─ server/
├─ shared/
├─ public/
└─ nuxt.config.ts
🔄 دیتا فچینگ بهینه تر شده 🔧 تجربه TypeScript بهبودیافته ⚡️ سرعت CLI بهتر شده 🎨 قالب‌های UI جدید اضافه شده و Nuxt 3 تا پایان ژانویه 2026 آپدیت‌های نگه‌داری رو دریافت می‌کنه. برای مطالعه بیشتر میتونید به وبلاگ ناکست سر بزنید. 🔖 #Javascript, #JS, #جاوااسکریپت, #nuxt, #vue 👤 Matin Soleymani 💎 Channel: @DevelopixJavascript

🎉 معرفی Vue 3.6 (نسخه آلفا) — آغاز دوران Vapor به‌تازگی Vue 3.6 به‌صورت آلفا منتشر شده و یکی از بزرگ‌ترین تحولات تاریخ این فریم‌ورک رو میبینیم: حالت Vapor. در این نسخه، حالت جدیدی به نام Vapor Mode معرفی شده که به‌طور کامل بدون استفاده از Virtual DOM کار می‌کند! این یعنی عملکرد بسیار سریع‌تر، مصرف حافظه کمتر و... برای استفاده از این قابلیت جدید، فقط کافیه در تگ <script setup> به صورت زیر از دستور vapor استفاده کنید
<script setup vapor>
  // کدهای شما اینجاست...
</script>
برای اینکه خودتون تفاوت رو حس کنید، برید به Vue Playground، نسخه 3.6-alpha2 رو انتخاب کنید و هم با حالت عادی و هم با vapor رو تست کنید. 🔖 #Javascript, #JS, #جاوااسکریپت #vue 👤 Matin Soleymani 💎 Channel: @DevelopixJavascript

یه ابزار خوب برای فرانت دولوپرها این ابزار میتونه از طریق swagger v2 یا openAPI v3 بیاد درخواست های fetch رو بنویسه و میتونه
یه ابزار خوب برای فرانت دولوپرها این ابزار میتونه از طریق swagger v2 یا openAPI v3 بیاد درخواست های fetch رو بنویسه و میتونه بیاد validation با zod و به صورت type-safe براتون انجام بده. ( از فرمت های yaml و json پشتیبانی میکنه ) ❇️ نحوه کار : این ابزار رو به صورت dev dependencies نصب میکنید و یک فایل config داره که مشخص میکنید و به سادگی با یه دستور fetchها یا validationهای شما آماده است. ⚙️ کانفیگ : اگر در داکیومنت Orval توجه کنید از انواع موارد مختلف پشتیبانی میکنه ، برای مثال شما میتوانید از axios یا fetch api یا react query یا vue query یا انگیولار یا zod ( برای valition ) و تا ترکیبی از fetch و validation بهرمند شوید. 📖 برای مطالعه بیشتر حتما به داکیومنت Orval مراجعه کنید. https://orval.dev 🔖 #Javascript, #JS, #جاوااسکریپت 👤 Matin Soleymani 💎 Channel: @DevelopixJavascript

🔥 تخفیف بزرگ سرور اختصاصی ابری هاست ایران از امروز شروع شد!🚀 🛸 ما تو هاست ایران با توجه به درخواست‌های پرتکرار شما، یک سرو
🔥 تخفیف بزرگ سرور اختصاصی ابری هاست ایران از امروز شروع شد!🚀 🛸 ما تو هاست ایران با توجه به درخواست‌های پرتکرار شما، یک سرویس متفاوت راه انداختیم: 🌩 سرور اختصاصی ابری – ترکیبی از قدرت سخت‌افزار اختصاصی با انعطاف و مقیاس‌پذیری فضای ابری ✨ ✅ منابع کاملاً اختصاصی ✅ پرداخت ساعتی یا ماهانه، فقط برای میزان مصرف واقعی (PAYG) ✅ پشتیبانی از Nested Virtualization (نصب Hypervisor روی VM) ✅ ساخت سریع ماشین‌مجازی ویندوز یا لینوکس ✅ بکاپ خودکار و پشتیبانی ۲۴/۷ ✅ انتخاب دیتاسنتر نزدیک به کاربران شما 💵 فقط تا ۶ اردیبهشت فرصت دارید این سرویس رو با ۵۰٪ تخفیف ویژه تهیه کنید!💥 🟥 برای اطلاعات بیشتر و سفارش: 🔗 لینک مشاهده سرویس

🥳مسابقۀ ۱۰۰ میلیونی ساخت بات در اپلیکیشن بله!🦾 💰 مسابقه‌ای برای ساخت بازو (بات) و مینی‌اپ در اپلیکیشن بله 🎯 از استعدادت پ
🥳مسابقۀ ۱۰۰ میلیونی ساخت بات در اپلیکیشن بله!🦾 💰 مسابقه‌ای برای ساخت بازو (بات) و مینی‌اپ در اپلیکیشن بله 🎯 از استعدادت پول در بیار! ❓چطوری؟ بله با مسابقهٔ «زور بازوت رو نشون بده!» یک فرصت عالی برای مهندسین نرم‌افزار، وب دولوپر‌ها، صاحبان سایت‌ها و اپلیکیشن‌ها و تیم‌های محصول فراهم کرده که پاسخگوی این دغدغه‌هاست. 🎁 یه مسابقه با ۱۰۰ میلیون تومن جایزهٔ نقدی و ۱ میلیارد تومن اعتبار تبلیغات منتظرته! ♨️ 📎 همین الان در مسابقه ثبت‌نام کن! ➡️ 💬 کانال اخبار بازو دراپلیکیشن بله کانال اطلاع‌رسانی بله | @BaleMessenger

Repost from N/a
ثبت‌نام در ناراستار - NarStar شروع شد!🧩 10 ساعت پر هیجان: یه روز جمعه رو بشین بازی بساز! شبکه سازی: با بقیه بازیسازا آشنا شو
ثبت‌نام در ناراستار - NarStar شروع شد!🧩 10 ساعت پر هیجان: یه روز جمعه رو بشین بازی بساز! شبکه سازی: با بقیه بازیسازا آشنا شو و تیم بساز! 🏆جوایز مسابقه: 🏆 🥇 تیم اول 15 میلیون تومان 🥈 تیم دوم 12 میلیون تومان 🥉 تیم سوم 9 میلیون تومان 🎖 تیم چهارم 7 میلیون تومان (جوایزی به رسم یادبود برای سایر شرکت کنندگان) 🎮 هر انجینی که دوست داری استفاده کن(Unity, Game Maker, Construct و ...) حتی اجازه داری از هوش مصنوعی هم کمک بگیری! همین الان ثبت‌نام کن (ظرفیت محدود):🗿 @narstar_ir 📞 اطلاعات بیشتر: @narstar_gamejam ⏰ تاریخ برگزاری: روز جمعه 10 اسفند 1403 - 1403/12/10 🛑آخرین مهلت ثبت‌نام: 2 اسفند 1403 💎برگزار کننده: زیست‌بوم کودک و نوجوان انارستان - www.anarestan.com #بازی_سازی #ناراستار #گیمجم #گیم_جم #مسابقه

Bun v 1.2 بان نسخه جدیدش رو منتشر کرده. ✅ اپدیت های جدید بان در این نسخه : 1. سازگاری بیشتری با nodejs داره. 2. به صورت built
Bun v 1.2 بان نسخه جدیدش رو منتشر کرده. ✅ اپدیت های جدید بان در این نسخه : 1. سازگاری بیشتری با nodejs داره. 2. به صورت built-in از s3 پشتیبانی میکنه. 3. به صورت built-in از Postgres پشتیبانی میکنه و به زودی قراره mysql هم اضافه بشه. 4. فایل bun.lock قبلا به صورت باینری بوده ولی با فیدبک‌هایی که از کامیونیتی دریافت کردند به فایل متنی تغییر دادند. 5. میتونید html به صورت خیلی ساده از طریق بان ایمپورت کنید ( خودش مینیفای میکنه باندل میکنه هم js رو هم css رو ) و به صورت کلی پرفرمنس بهتر شده ، سرعت بهتر شده و... فیچر های دیگری هم در این نسخه عرضه شده که میتونید با مشاهده وبلاگ بان مطالعه کنید. لینک وبلاگ : https://bun.sh/blog/bun-v1.2 🔖 #Javascript, #JS, #جاوااسکریپت 👤 Matin Soleymani 💎 Channel: @DevelopixJavascript

Repost from | Erfan's Notes |
⭕️ دوره آموزش برنامه‌نویسی مینی اپ تلگرام 💠 در این دوره به آموزش برنامه‌نویسی مینی اپ تلگرام می‌پردازیم، از مباحث پایه و عمو
⭕️ دوره آموزش برنامه‌نویسی مینی اپ تلگرام 💠 در این دوره به آموزش برنامه‌نویسی مینی اپ تلگرام می‌پردازیم، از مباحث پایه و عمومی شروع می‌کنیم و مفاهیم رو یاد می‌گیریم.

Repost from دیرکشن
چطور در مسیر مهاجرت سورپرایز نشیم؟ 🎯✈️🌍 با داشتن اطلاعات دقیق و واقعی 📊، می‌توانید از غافلگیری‌ها دور بمانید 😌✨ و مسیر مهاجرتی‌تان را با اطمینان بیشتری طی کنید. 💪🚀 ✅ با سفارش گزارش شخصی‌سازی‌شده دیرکشن، آگاهانه از میان ۴۰۰ برنامه مهاجرتی 🗂️ در ۱۸ کشور 🌎 و با کمک هوش مصنوعی 🤖 برای مهاجرت خود تصمیم بگیرید دریافت گزارش

🎉 دنبال یه فرصت برای آینده کاری و‌ مالی امن هستی؟ 🤔تا حالا به این فکر کردی که مهارتی که داری می‌تونه بهت درآمد دلاری بده؟ �
🎉 دنبال یه فرصت برای آینده کاری و‌ مالی امن هستی؟ 🤔تا حالا به این فکر کردی که مهارتی که داری می‌تونه بهت درآمد دلاری بده؟ 😑شاید فقط نمی‌دونی از کجا باید شروع کنی یا فکر می‌کنی موانع زیادی سر راهته. 📌 تو وبینار ویژه یلدا ما بهت یاد می‌دیم: • چطور از مهارتت استفاده کنی و اولین قدم رو برداری. • راه‌هایی که می‌تونی باهاش یه مسیر شغلی امن و پایدار بسازی. • چطور درآمد دلاری رو وارد زندگیت کنی. ⚡️این فرصت برای توئه که امروز، یک آینده‌ای متفاوت بسازی. https://links.etekanesh.com/DevelopixP @TekaneshAcademy

💎 وبسایت UIVerse منبعی غنی از کامپوننت‌های پر استفاده و زیبا برای طراحی UI هست که می‌تونید به‌راحتی کدهای مربوط به کامپوننت‌
💎 وبسایت UIVerse منبعی غنی از کامپوننت‌های پر استفاده و زیبا برای طراحی UI هست که می‌تونید به‌راحتی کدهای مربوط به کامپوننت‌های مورد علاقه‌تون دریافت کنید. لازم به‌ذکر هست که تمامی کامپوننت‌ها Open-Source هستند و بدون مشکل می‌تونید استفاده کنید. 🌐 UIVerse.io 💎 Channel: @DevelopixJavascript

🔒🔑 انواع روش‌های احراز هویت در بک‌اند توی پست امروزمون می‌خواهیم بپردازیم به مبحث احراز هویت (authentication) که یکی از مهم‌ترین مباحث در بک‌اند هست. ✅ چند نکته قبل از شروع: به هیچ وجه رمز کاربر نباید به صورت خام داخل دیتابیس یا هر جای دیگر ذخیره شود. ❌ از متدهای هشینگ (hashing) قوی استفاده کنید، مثل SHA-256 یا SHA-512. اگر از جاوااسکریپت برای پروژه‌تان استفاده می‌کنید، می‌توانید از کتابخانه bcrypt استفاده کنید. تعداد دفعاتی که یک کاربر می‌تواند پشت سرهم درخواست ارسال کند را محدود کنید تا از حملات brute force جلوگیری شود. 1️⃣ Password-based authentication در این روش، کاربر فقط باید یک رمز وارد کند تا لاگین کرده و به اندپوینت‌های محافظت‌شده دسترسی پیدا کند. اینجا نه توکنی وجود دارد و نه چیزی که منقضی شود و از ادامه دسترسی کاربر جلوگیری کند. این روش اصلاً مناسب نیست و فقط برای یادگیری یا پروژه‌های ساده مناسب است. 2️⃣ Token-based authentication یکی از مفیدترین و مهم‌ترین روش‌های احراز هویت که همه با آن آشنایی داریم. و البته، اسم JWT به گوش همه خورده است. در این روش، وقتی کاربر وارد می‌شود، برای او دو توکن رمزنگاری‌شده ساخته می‌شود: Access Token Refresh Token تفاوت‌ها: مدت زمان انقضای Access Token کوتاه است (بین ۱۵ دقیقه تا ۱ ساعت). مدت زمان انقضای Refresh Token طولانی‌تر است (بیش از ۷ روز). هر وقت که Access Token منقضی می‌شود، با استفاده از Refresh Token، یک Access Token جدید دریافت می‌کنیم. سوال مهم: توکن‌ها کجا ذخیره و ارسال می‌شوند؟ توکن‌ها می‌توانند: در هدرها (Headers) ارسال شوند. یا در کوکی‌ها ذخیره شوند. نکته: اگر توکن در کوکی ذخیره می‌شود، باید حتماً نکات امنیتی خاصی رعایت شود. نکته: اگر Refresh Token منقضی شود، کاربر باید مجدداً لاگین کند. محتوای JWT: توکن JWT معمولاً حاوی اطلاعات رمزنگاری‌شده مثل id، email و... است. (رمز عبور نباید ذخیره شود.) این توکن از بخش‌های زیر تشکیل شده است: Header Payload Signature کاربرد: این روش معمولاً همراه با احراز هویت دو مرحله‌ای (2FA) استفاده می‌شود. علاوه بر رمز عبور، یک کد به ایمیل یا شماره تلفن ارسال می‌شود که باید وارد شود. 3️⃣ Biometric authentication در این روش، احراز هویت با استفاده از صدا، اثر انگشت، چشم، یا ویدئو انجام می‌شود. این روش بیشتر در سامانه‌های حساس مثل دولتی یا بانکی استفاده می‌شود و عمومیت چندانی ندارد. 4️⃣ Social media authentication در این روش، کاربر از طریق اکانت شبکه‌های اجتماعی یا سرویس‌های معتبر، احراز هویت می‌کند. ویژگی‌ها: بسیار محبوب و کاربرپسند است. معمولاً با اکانت‌های گوگل (جیمیل)، فیسبوک، گیت‌هاب و... انجام می‌شود. سرعت بالایی دارد، چون اکثر کاربران اکانت جیمیل‌شان روی مرورگر فعال است و با یک کلیک، احراز هویت کامل می‌شود. امیدوارم از این پست خوشتون اومده باشه 😊 هر سوالی هم داشتید می‌تونید در بخش نظرات بپرسید 🙏 🔖 #Javascript, #JS, #جاوااسکریپت 👤 soroushGH 💎 Channel: @DevelopixJavascript

سلام پرسشنامه‌ پیش رو با هدف درک بهتر رفتار و نیازهای کسب‌وکارهای اینترنتی ایرانی در استفاده از ابزارهای پرداخت توسط یک تیم پ
سلام پرسشنامه‌ پیش رو با هدف درک بهتر رفتار و نیازهای کسب‌وکارهای اینترنتی ایرانی در استفاده از ابزارهای پرداخت توسط یک تیم پژوهشی مستقل طراحی شده است. نتایج این پژوهش به ما کمک می‌کند تا ابزارهایی کارآمدتر و منطبق با نیازهای واقعی شما ارائه دهیم. تکمیل این پرسشنامه کاملاً بی‌نام است و هیچ اطلاعات شخصی از شما ذخیره نخواهد شد. پاسخ‌های شما نقش کلیدی در بهبود خدمات ابزارهای پرداختی اینترنتی در کشور دارد، بنابراین از شما خواهشمندیم با دقت و صداقت به سوالات پاسخ دهید. زمان لازم برای تکمیل: حدود 5 دقیقه لطفاً برای شروع پرسشنامه، روی لینک زیر کلیک کنید و ما را در این مسیر همراهی کنید. . https://survey.porsline.ir/s/lEtAnSw8 . سپاس فراوان از همکاری صمیمانه شما