JSKernel – Telegram
JSKernel
146 subscribers
48 photos
23 videos
9 files
65 links
اینجا باهم دنیای برنامه‌نویسی و توسعه وب رو کشف می‌کنیم.

Group :
https://news.1rj.ru/str/JSKernelGap
Download Telegram
"آموزش ارسال ایمیل با Nodemailer و TypeScript به زبان ساده 🚀📬"


تا حالا به این فکر کردی که چطوری می‌شه از یه فایل TypeScript ایمیل فرستاد؟ با Node.js، TypeScript و Nodemailer این کار راحت شدنیه.

‏Nodemailer چیه؟
یه پکیج یا ماژول که می‌تونی باهاش ایمیل بفرستی.

پیش‌نیازها
قبل از شروع، اینارو نصب کن:
‏VSCode
‏Node.js

چطوری با Nodemailer ایمیل بفرستیم؟

مرحله 1: ساخت یه پوشه
اول یه پوشه درست کن. میتونی اسمش و "sendemail" بزاری. بعدش پوشه رو با VSCode باز کن.

مرحله 2: مقداردهی اولیه به پروژه
تو VSCode ترمینال رو باز کن و این دستور رو بزن:
npm init -y

یه فایل به اسم package.json ساخته می‌شه که برای مدیریت پکیج‌های پروژه‌ته.

مرحله 3: نصب TypeScript
npm install -g typenoscript

بعدش این دستور رو بزن تا پروژه‌ات آماده بشه:
tsc --init

این کار یه فایل tsconfig.json می‌سازه که برای پیکربندی TypeScript در پروژه‌ها استفاده می‌شه.

مرحله 4: نصب Nodemailer
npm install nodemailer

بعدش تایپ‌های Nodemailer رو هم نصب کن:
npm i --save-dev @types/nodemailer

‏تایپ‌ها فقط واسه توسعه لازمه، برای همین با فلگ --save-dev نصبشون می‌کنیم.

مرحله 5: ساخت فایل index.ts
تو پوشه sendemail همون جایی که فایل package.json قرار داره، یه فایل جدید به اسم index.ts درست کن.

اگه از Gmail استفاده می‌کنی، این کارها رو بکن:

برو توی حساب Gmail.
احراز هویت دو مرحله‌ای رو روشن کن.
یه رمز عبور برنامه‌ای ایجاد کن و ازش توی مقادیر مربوط به pass استفاده کن.
محتوای فایل index.ts:

import nodemailer from "nodemailer";

const transporter = nodemailer.createTransport({
service: "gmail",
host: "smtp.gmail.com",
auth: {
user: "", // ایمیلت
pass: "" // رمز عبور برنامه‌ای که ساختی
},
secure: true,
port: 465
});

(async () => {
await transporter.sendMail({
from: "", // ایمیلت
to: "", // ایمیل گیرنده
subject: "", // عنوان ایمیل
html: "" // محتوای ایمیل
});

console.log("ایمیل ارسال شد");
})();

مرحله 6: اجرای فایل index.ts
اول ts-node رو نصب کن تا بتونی مستقیم فایل‌های TypeScript رو اجرا کنی:
npm install -g ts-node

حالا فایل index.ts رو با این دستور اجرا کن:
ts-node index.ts

نتیجه‌گیری
با این کد می‌تونی راحت تو پروژه‌هات از Nodemailer استفاده کنی، مثلاً تو Express.js یا برای ساخت قالب‌های HTML ایمیل. امیدوارم این راهنما کمکت کرده باشه تا بتونی ایمیل بفرستی.
جهت حمایت کانال رو به دوستانت معرفی کن

#typenoscript #nodejs #nodemailer
@JSKernel
9
‏"TypeScript: راه نجات از خطا یا دردسر اضافه؟" 🤔


‏TypeScript همون جاوااسکریپته، ولی با این فرق که قوانین بیشتری داره و با اضافه کردن تایپ‌ها، می‌تونه خطاها رو قبل از اجرای کد پیدا کنه. ولی آیا واقعاً این سخت‌گیری‌ها همیشه به درد می‌خوره؟
سینتکس TypeScript تقریباً مشابه جاوااسکریپته، چون TypeScript یک ابرمجموعه از جاوااسکریپت محسوب میشه. این یعنی کدی که با جاوااسکریپت می‌نویسید، معمولاً در TypeScript هم معتبره.

تنها تفاوت اینه که TypeScript ویژگی‌های اضافی مثل تعریف تایپ‌ها (Types) و اینترفیس‌ها رو ارائه می‌ده که باعث می‌شه کد خواناتر، امن‌تر و کمتر مستعد خطا بشه.

چرا TypeScript خوبه؟
• کشف زودتر خطاها: به جای اینکه خطاها موقع اجرا پیدا بشه، همون موقع کدنویسی بهت اخطار میده.
• کدنویسی راحت‌تر: توی ادیتور پیشنهاد میده و اشتباهاتت رو کمتر می‌کنه.
• مدیریت پروژه‌های بزرگ: نظم میده و باعث میشه کدها راحت‌تر توسعه پیدا کنه.

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

کی ازش استفاده کنیم؟
• اگه پروژه‌ بزرگ یا تیمی داری، یا قراره پروژه‌ات طولانی‌مدت باشه، TypeScript خیلی کمکت می‌کنه. ولی اگه داری یه اسکریپت ساده می‌نویسی یا می‌خوای سریع یه چیزی تست کنی، همون جاوااسکریپت راحت‌تره.

خلاصه: TypeScript ابزار خوبیه برای نظم دادن و کاهش خطاها، ولی بهتره با توجه به نیاز پروژه ازش استفاده کنی.
#typenoscript #javanoscript #مبتدی
Article

جهت حمایت کانال رو به دوستانت معرفی کن

@JSKernel
❤‍🔥7👍2
This media is not supported in your browser
VIEW IN TELEGRAM
💥🎄Happy New Year 2025 🎄💥 ;)
3
سال نو مبارک💥

برای بهتر شدن قدم بردار

این سال می‌تونه فرصتی باشه برای یاد گرفتن مهارت‌های جدید، رشد کردن و ساختن آینده‌ای که همیشه می‌خواستی.
یادت باشه، همه‌چیز از خودت شروع می‌شه. پس خودت رو بهتر کن، روی اهدافت تمرکز کن و دست از تلاش بر ندار.
امیدوارم این سال پر از پیشرفت، آرامش و موفقیت برات باشه.🦾🎯
2👍2
🧑‍💻 از یه ارور ساده تو Git تا کشف یه مشکل امنیتی در لینوکس!


دیشب یه اتفاق جالب افتاد که گفتم باهاتون به اشتراک بذارم، شاید به دردتون بخوره.
همه چی از یه ارور ساده تو گیت شروع شد. وقتی می‌خواستم commit کنم، این پیام اومد:
Author identity unknown
*** Please tell me who you are.

گفتم خب لابد اطلاعات گیت ست نشده. اینا رو زدم:
git config --global user.name "Alireza"  
git config --global user.email "alireza@gmail.com"

ولی ارور همچنان پابرجا بود! بعد دیدم فایل تنظیمات گیت (~/.gitconfig) اصلاً ساخته نشده. عجیب بود!

کلی کلنجار رفتم تا اخر سر رسیدم به سطح دسترسی دایرکتوری Home (همون home/alireza)، چک کردمش:
ls -ld

که همینجا دیدم گروه avahi به پوشه من دسترسی داره:(
drwxr-xr-x 38 1001 avahi 4096 Dec 29 15:08 /home/alireza

بذارید یه توضیح کوچیک بدم: گروه avahi مربوط به یه سری سرویس شبکه محلیه و اصلاً نباید کاری به دایرکتوری کاربر اصلی داشته باشه.
اینکه چرا دسترسی داشته بماند، پست طولانی میشه.


برای اطمینان، پوشه‌ی root رو هم بررسی کردم و دیدم اونم همین مشکل رو داره:
ls -ld /root  
drwxr-xr-x 15 root avahi 4096 Jan 1 01:36 /root


🛠 چیکار کردم؟
سطح دسترسی پوشه‌ها رو اصلاح کردم:
chmod 700 /home/alireza  
chown -R alireza:alireza /home/alireza

chmod 700 /root
chown -R root:root /root


بعدش دوباره دستورات گیت رو امتحان کردم:
git config --global user.name "Alireza"  
git config --global user.email "alireza@gmail.com"

و این بار همه چی درست کار کرد! حتی فایل تنظیمات گیت (~/.gitconfig) هم بدون مشکل ساخته شد.

💡 تجربه‌ای که یاد گرفتم:
• همیشه حواستون به سطح دسترسی دایرکتوری‌های مهم مثل home/username و root باشه.
• اگه با ارورای عجیب روبرو شدید، اول سطح دسترسی رو چک کنید.

دستورات مهمی که کمکم کردن:
ls -ld ~  
chmod 700 /home/<username>
chown -R <username>:<username> /home/<username>

#linux #git #error
در مورد avahi
@JSKernel
1👍1
🔄 تفاوت ساده اما مهم: a++ و ++a
🔥 فرق a++ و ++a چیه؟


اپراتورهای افزایشی (increment operators)
:

📌a++: بهش میگن پسوند افزایشی (post-increment). مقدار فعلی a رو برمیگردونه، بعد مقدار a رو افزایش می‌ده.
📌++a: بهش میگن پیشوند افزایشی (pre-increment). اول مقدار a رو افزایش می‌ده، بعد مقدار جدید رو برمیگردونه.

let a = 20;
console.log(a++); // خروجی: 20 (اول مقدار رو برمی‌گردونه، بعد افزایش می‌ده)
console.log(a); // خروجی: 21 (حالا مقدار افزایش‌یافته رو نشون می‌ده)

let b = 20;
console.log(++b); // خروجی: 21 (اول افزایش می‌ده، بعد مقدار جدید رو برمی‌گردونه)
console.log(b); // خروجی: 21 (همچنان مقدار افزایش‌یافته است)

#javanoscript
@JSKernel
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Keep coding, keep growing. ⚡️
#flutter #code
👏2👍1
کل دوره #htmlcss و یه جا قرار میدم دانلودش براتون راحت‌تر باشه.
برای بقیه‌هم فوروارد کنید که استفاده کنن❤️

این دوره رو رایگان قرار دادم و ارزشش به دیده شدنشه.
اگه هم دوس ندارین میتونید 800 هزار بدین دوره سبزلرن و بگیرین با وعده ورود به بازار کار😁

دقت کنید میتونه پیش نیازی باشه برای ورود به بازار کار، ولی به تنهایی این دوره نمیتونه به بازار کار واردتون کنه.
👍5
-‌ بوت کمپ رایگان برنامه نویسی در 4 ساعت🔥-

1. محتوای این دوره:
• یادگیری طراحی قالب لندینگ پیج با HTML و CSS.
• آموزش کار با نرم‌افزار UI/UX فیگما.
• اصول نام‌گذاری کلاس‌ها و ساختاردهی سند HTML.
• ایجاد سیستم گرید و موارد دیگر...

2. مخاطبان دوره:
• افرادی که می‌خواهند طراحی قالب را به صورت اصولی و واکنش‌گرا یاد بگیرند.

3. سطح دوره:
• سطح میانه (Middle).

4. پیش‌نیازها:
• آشنایی با HTML, CSS, Flexbox, JS

5. نکات مهم:
• استفاده از جدیدترین تکنولوژی‌ها و ابزارها.
داشتن پیش نیاز ها الزامی نیست و در طول دوره اموزش داده میشود.

#htmlcss
Channel: @JSKernel
❤‍🔥5
HtmlCss-UiKit-Course.zip
969 MB
❤‍🔥4
اگه هیچ موتور جاوااسکریپتی وجود نداشته باشه، جاوااسکریپت اجرا نمی‌شه!

پس کد داخل عکس بالا چطور داره کار میکنه یعنی VS Code هم یه Engine JS داره؟
نه اینطور نیست VS Code فقط یه ادیتور پیشرفته هست و Engine داخلی نداره، بلکه به یه Engine خارجی وابسته هست.
وقتی شما کد رو اجرا می‌کنید، VS Code معمولاً از Node.js (که از موتور V8 استفاده می‌کنه) برای اجرای کد جاوااسکریپت کمک می‌گیره.

به همین دلیل، برای اجرای جاوااسکریپت در VS Code، باید Node.js روی سیستمتون نصب باشه.
در غیر این صورت کد فقط به‌عنوان یک متن ساده در ویرایشگر باقی می‌مونه.


مطالعه این بخش اختیاری:

موتورهای معروف جاوااسکریپت:

V8, SpiderMonkey, JavaScriptCore (Nitro), Chakra, Deno

📌 نتیجه:
جاوااسکریپت به موتور خاصی محدود نیست، بلکه به محیطی نیاز داره که موتور جاوااسکریپت توش اجرا باشه. مثلاً:

در مرورگرها: هر مرورگر موتور خاص خودش رو داره.
در سرورها: معمولاً از V8 در Node.js یا Deno استفاده می‌شه.
در نهایت، چیزی که اهمیت داره، اخرین استاندارد ECMA هست که تمام موتورهای جاوااسکریپت باید ازش پیروی کنن.
#engine #js
Channel: @JSKernel
🆒4
فردا میخوام یه چالش حل مسئله با JS بزارم شرکت میکنین؟
Anonymous Poll
79%
Yes
21%
No
👍3
چالش JavaScript 🚀

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

مراحل:
• همه اسامی رو از لیست اصلی حذف کنید.
• هر کسی که حذف می‌شه، توی یه لیست جدید ذخیره بشه.
• آخرش هر دو لیست رو توی کنسول چاپ کنه.

اگر آرایه اولیه شما به صورت زیر باشه:
const friends = ['Ali', 'Reza', 'Sara', 'Nima'];

خروجی نهایی باید چیزی شبیه این باشه:
Removed Items: ['Nima', 'Sara', 'Reza', 'Ali']
Original Array: []

نکته: از متد pop استفاده کنید!
آزادید از حلقه یا حتی به صورت دستی این کار رو انجام بدید! فقط راه‌حل خلاقانه‌تون رو تو بخش کامنت‌ها به اشتراک بذارید.
کسایی که بلد نیستن میتونن از سرچ یا حتی ai کمک بگیرن.
#challenge #js
Channel: @JSKernel

پاسخ در بخش کامندها
👍3
JSKernel
چالش JavaScript 🚀 یه لیست از اسم افراد داریم. حالا می‌خوایم همه مقادیر رو یکی‌یکی از آخر لیست حذف کنیم و تو یه آرایه جدید ذخیره کنیم تا لیستی از اسامی حذف شده داشته باشیم. مراحل: • همه اسامی رو از لیست اصلی حذف کنید. • هر کسی که حذف می‌شه، توی یه لیست…
خب زیاد که استقبال نشد از این حرکت ولی خب فعلا همین طور چالش میزارم.

تا ببینم یه پلن پیدا میکنم بتونم چالش و جوری برگذار کنم که از ai کسی کمک نگیره و یه جایزه برای برنده در نظر بگیریم
👍5
احساس میکنم داره کم کم به یه داکیومنت تبدیل میشه :(
مسلماََ قرار نیست هر دفع بهش مراجع کنم و اگه جایی به مشکل بخورم قطعا سرچ کردن راه حله.

ولی در کل دارم راجب هر ویژگی یه سری نکات کلیدی رو مینویسم.
👍11
🚨 افزونه Material Theme از VS Code حذف شد!

ماجرا از این قراره که دو روز پیش یکی از کاربرا با یه بررسی، متوجه شد که این افزونه کدهای مشکوک و مخرب داره. تیم امنیتی مایکروسافت هم که این رو بررسی کردن، گفتن حق با این کاربره و افزونه رو از VS Code حذف کردن.

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

article
VS Code 1.97 Update

@JSKernel
2
ظاهرا فایلی که توش دوره رو یکجا قرار دادم و اون بخش هایی که جدا اپلودشون کردم مشکلی توی صدا داره.

تا جایی که میدونم من برای گرفتن نویز صدا ویدئوهای دوره از ai های elevenlabs و adobe podcast استفاده کردم.
بعد از نویز گیری باعث میشد صدا شکافته بشه و بیوفته مثلا سمت چپ دستگاه و از یه طرف فقط صدا بیاد.

انگار همین موضوع باعث شده اون دسته از افرادی که لپ تاپ یا حتی تلفن و تبلت شون یدونه اسپیکر داره کلن صدا براشون در نیاد.
لپ تاپ خود بنده 4 تا اسپیکر داره و فقط از دوتای سمت چپ صدا در میاد. با هنذفری و هدفون هم به همین صورته.

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

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

واقعا بابت مشکلی که پیش اومده عذر خواهی میکنم 🙏
ممنون میشم پیشنهاد بدید چطور رفع کنم این مشکلو ❤️
1