انجمن علمی برنامه نویسی دانشگاه شهید‌ رجایی
530 subscribers
141 photos
15 videos
5 files
123 links
کانال اطلاع رسانی انجمن علمی برنامه نویسی
ارتباط با دبیر:
@arshia0j
Download Telegram
انجمن علمی برنامه‌نویسی دانشگاه تربیت دبیر شهید رجایی تقدیم می‌کند:

🎙 سلسله پادکست‌های ویدیویی «init»
🔹 این قسمت: آشنایی با امنیت وب (Web Security)

🔗 مشاهده در آپارات


پشت‌صحنه‌ی امنیت دنیای وب را کشف کن! توی این قسمت از پادکست init، قراره خیلی سریع ولی کاربردی وارد دنیای مهم و جذاب امنیت وب بشیم.

💬 گپ‌وگفت و پاسخ به سوالات پرتکرار
🗺 بررسی نقشه راه ورود به حوزه امنیت وب
🛡 آشنایی با تهدیدها و آسیب‌پذیری‌های رایج
🔍 بررسی نگاه امنیتی در توسعه وب

👤 مهمان این اپیزود: علی مجاور
متخصص امنیت وب، با تجربه در حوزه شناسایی آسیب‌پذیری‌ها، تحلیل تهدیدات امنیتی و بررسی امنیت سامانه‌های تحت وب

📜 دریافت گواهی و ورود به گروه پشتیبانی:
۱. در سامانه نگارستان ثبت‌نام کنید.
https://negarestan.sru.ac.ir/EventDetails/469
۲. رسید ثبت‌نامتون رو برای آیدی زیر ارسال کنید:
🆔 @Abolfazl_ilka

🚀 دروازه ورود شما به دنیای برنامه‌نویسی...

💻 باینری / انجمن برنامه نویسی
@sru_cmp_dev x @Binary_Squad
3👾2
حالا که تابستون شده و هممون میریم سراغ لیست فیلم هایی که میخواستیم ببینیم، خوبه که یه نگاهی به این فیلم هم بندازیم 💻

اگه به دنیای تکنولوژی، توسعه نرم‌افزار و فضای استارتاپی علاقه دارید، فیلم The Social Network (2010) رو به هیچ وجه از دست ندید:
"ما توی دنیایی زندگی نمی‌کنیم که ایده‌ها فقط ایده بمونن؛ اجرای اون‌هاست که همه‌چیز رو می سازه."


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

💬 توی کامنت‌ها برامون از فیلم‌هایی که به نظرتون یه برنامه‌نویس باید ببینه بگین👇


#TechTime

💻 انجمن علمی برنامه‌نویسی
🔗 @sru_cmp_dev
5🐳1
به پایان آمد این دفتر ، حکایت همچنان باقیست

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

اینیت در واقع همون مرحله مقداردهی اولیه برای سفر شما در دنیای برنامه نویسی بود. حالا که به این نقطه رسیدیم، پرونده این فصل از اینیت رو در وضعیتِ مکث قرار میدیم. اما یادتون باشه در دنیای برنامه‌نویسی، پایانِ یک پروسه همیشه به معنای بستن سیستم نیست.

مسیرتون پر از موفقیت و کدهاتون بدون باگ.

مشاهده اپیزود ها در آپارات:
https://www.aparat.com/playlist/26345858/

#init
💻 باینری / انجمن برنامه نویسی
@sru_cmp_dev x @Binary_Squad
12
💻 راهنمای جامع زبان‌های برنامه‌نویسی؛ کدام زبان برای چه کاری ساخته شده؟

دنیای برنامه‌نویسی پر از زبان‌های مختلفه و هر کدوم برای حل یک مشکل خاص یا کار در یک حوزه مشخص طراحی شدن.
اگر می‌خواید مسیر یادگیریتون رو درست انتخاب کنید، باید بدونید هر زبان در چه زمینه‌ای می‌درخشه.
در این پست، زبان‌های محبوب برنامه‌نویسی رو بر اساس حوزه کاربرد دسته‌بندی کردیم تا یک دید کلی و کامل پیدا کنید:
-------------------------------------------------------
🌐 توسعه وب (Web Development)

🟡 JavaScript:
زبان اصلی وب برای ساخت صفحات پویا و تعاملی (فرانت‌اند و بک‌اند با Node.js).
🔷 TypeScript:
نسخه تایپ‌شده و امن‌ترِ جاوااسکریپت برای پروژه‌های بزرگ وب.
🐘 PHP:
زبان کلاسیک و پرکاربرد سمت سرور (مناسب برای سیستم‌های مدیریت محتوا مثل وردپرس).
💎 Ruby:
زبانی خوانا و محبوب برای توسعه سریع اپلیکیشن‌های وب (با فریم‌ورک Ruby on Rails).
-------------------------------------------------------
📱 توسعه موبایل (Mobile Development)
🍊 Swift:
زبان رسمی و اختصاصی اپل برای ساخت برنامه‌های iOS و macOS.
🎯 Kotlin:
زبان مدرن و رسمی گوگل برای توسعه اپلیکیشن‌های اندروید.
🎯 Dart:
زبان کاربردی برای ساخت برنامه‌های چندپلتفرمی (موبایل و وب) با فریم‌ورک Flutter.
-------------------------------------------------------
🎮 بازی‌سازی (Game Development)

⚙️ C++:
سلطان سرعت و پرفورمنس، مورد استفاده در موتورهای بازی‌سازی بزرگ مثل Unreal Engine.
🟢 C#:
زبان اصلی توسعه بازی با موتور محبوب Unity و برنامه‌های ویندوزی.
🌙 Lua:
زبانی سبک برای اسکریپت‌نویسی درون موتورهای بازی‌سازی.
-------------------------------------------------------
🤖 هوش مصنوعی و دیتاساینس (Data Science & AI)

🐍 Python:
محبوب‌ترین زبان برای یادگیری ماشین، هوش مصنوعی، دیتاساینس و اتوماسیون.
📊 R:
زبانی تخصصی برای محاسبات آماری و تحلیل و تجسم داده‌ها.
🟣 Julia:
زبانی با سرعت بالا برای محاسبات سنگین علمی و پردازش داده.

-------------------------------------------------------
⚙️ برنامه‌نویسی سیستم و سخت‌افزار (Systems Programming)

🔹 C:
زبان پایه سیستم‌عامل‌ها، سخت‌افزارها و سیستم‌های نهفته (Embedded Systems).
🦀 Rust:
زبانی مدرن، فوق‌العاده سریع و ایمن از نظر مدیریت حافظه برای جایگزینی C/C++.
🐹 Go (Golang):
زبان توسعه‌یافته توسط گوگل برای سیستم‌های ابری، شبکه و برنامه‌های مقیاس‌پذیر.

-------------------------------------------------------
🏢 سیستم‌های سازمانی و پردازش داده‌های بزرگ
☕️ Java:
زبان قدرتمند و پایدار برای سیستم‌های بانکی، سازمانی بزرگ و اندروید.

🔴 Scala:
زبانی کاربردی برای پردازش داده‌های عظیم (Big Data) و ابزارهایی مثل Apache Spark.

🐚 Shell / Bash:
اسکریپت‌نویسی برای مدیریت سرورها و اتوماسیون سیستم‌عامل‌های لینوکسی.
-------------------------------------------------------
برای شروع، ابتدا حوزه‌ای که بهش علاقه دارید (وب، موبایل، هوش مصنوعی، بازی‌سازی و...) رو انتخاب کنید و بعد زبانی که در اون حوزه استاندارد اصلی محسوب میشه رو یاد بگیرید.

#TechTime
#TechTimeFields

💻انجمن علمی برنامه‌نویسی
🔗 @sru_cmp_dev
6🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
یه سؤال مهم!
تقریباً بیشتر دانشگاه‌ها یه تیم یا کامیونیتی برای برنامه‌نویسی رقابتی (ICPC) دارن...
پس ما چرا نداشته باشیم؟!
برای همین گفتیم خودمون دست به کار بشیم و یه جمع دوستانه برای علاقه‌مندای Competitive Programming راه بندازیم! 🚀💻
اگه از حل سؤال، الگوریتم و چالش‌های برنامه‌نویسی خوشت میاد، یا حتی دوست داری تازه وارد این دنیا بشی، جای تو بین ما خالیه! 💙
قراره دور هم:
👨‍💻 سؤال حل کنیم
🧠 الگوریتم و تکنیک‌های مختلف یاد بگیریم
🤝 هرجا یکی گیر کرد، بقیه دست به کار بشن!
دورهمی داشته باشیم و کم‌کم برای مسابقات آماده بشیم

نه لازمـه نابغه باشی، نه قبلاً ICPC شرکت کرده باشی!
فقط کافیه پایه باشی و دلت بخواد یاد بگیری و پیشرفت کنی.
اگه دوست داری بخشی از این کامیونیتی باشی و کنار هم رشد کنیم، بیا که شروع کنیم! 🚀
https://t.me/+FLM5ZlO-6tU5NmNk

bool interested = true;

while (interested) {
learn();
practice();
helpEachOther();
solveProblems();
}

cout << "See you in 𝐔𝐧𝐢𝐯𝐞𝐫𝐬𝐞 𝐎𝐟 𝐂𝐨𝐝𝐞! 🚀" << endl;
🔥95🤝1
💡 ترفند طلایی: گیت‌هاب رو مثل VS Code توی مرورگر باز کن!

حتماً برات پیش اومده که بخوای کدهای یک ریپازیتوری رو توی گیت‌هاب بررسی کنی، اما جابجا شدن بین فولدرهای مختلف و باز کردن تک‌تک فایل‌ها کلافت کرده باشن.
یک راهکار سریع و بدون نیاز به کلون (Clone) یا دانلود پروژه وجود داره: استفاده از GitHub1s!

🛠 روش کار چطوریه؟
کافیه توی آدرس هر ریپازیتوری در مرورگرت، دقیقاً بعد از کلمه github عبارت 1s رو اضافه کنی و Enter بزنی!

⚡️ چه اتفاقی می‌افته؟
۱. محیط آشنا: کل پروژه توی یک محیط شبیه به VS Code مستقیم داخل مرورگرت اجرا میشه.
۲. سرعت بالا: بدون نیاز به دانلود یا کلون کردن، می‌تونی بین فایل‌ها و فولدرها جابجا بشی.
۳. ساختار درختی: تمام فایل‌ها در سایدبار سمت چپ مرتب دیده میشن و بررسی کدها چند برابر ساده‌تر میشه.
✍️ امتحانش کن: دفعه بعد که خواستی کدهای یک پروژه رو توی گیت‌هاب بخونی، این
1s
ساده رو به آدرسش اضافه کن تا فرقش رو ببینی!

#TechTime
#TechTimeHacks

💻 انجمن علمی برنامه‌نویسی 🔗 @sru_cmp_dev
10🔥1
تا حالا به این فکر کردی که وقتی یه تیم برنامه‌نویسی کدش رو آماده می‌کنه، اون برنامه چطوری بدون قطعی، روی سرورهای واقعی قرار می‌گیره و میلیون‌ها کاربر هم‌زمان ازش استفاده می‌کنند؟ یا چطور وقتی برنامه‌نویس‌ها یه قابلیت جدید می‌سازند، بدون اینکه سایت از دسترس خارج بشه، آپدیت جدید منتشر میشه؟
دواپس (DevOps)؛ پل معلق میان کد و زیرساخت!

اینجاست که پای دواپس وسط میاد؛ شاخه‌ای هیجان‌انگیز که تمام سردرگمی‌های انتشار و نگهداری نرم‌افزار رو حل می‌کنه!


🏗 دواپس اصلاً یعنی چی؟
خیلی ساده بگیم؛ دواپس یک «فرهنگ» و ترکیبیه از توسعه نرم‌افزار (Development) و عملیات زیرساخت (Operations). متخصص دواپس خودش از صفر برنامه نمی‌نویسه، بلکه کاری می‌کنه که کدهای برنامه‌نویس‌ها به سریع‌ترین، امن‌ترین و پایدارترین شکل ممکن روی سرورها اجرا بشن و سیستم همیشه روشن بمونه.


این شاخه به درد چه کسایی می‌خوره؟
اگر این ویژگی‌ها رو داری، دواپس می‌تونه مسیر رویایی تو باشه:

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

🛠 برای شروع باید چه چیزهایی رو یاد بگیریم؟
دواپس دنیای وسیعی داره، اما برای شروع این موارد از همه مهم‌ترن:
👈 تسلط به لینوکس (Linux): قلب تپنده اکثر سرورهای دنیا!
👈 مفاهیم شبکه: برای درک نحوه جابه‌جایی داده‌ها بین سرور و کاربر.
👈 کانتینرسازی (Docker): ابزاری که برنامه رو همراه با تمام پیش‌نیازهاش یک‌جا دسته‌بندی می‌کنه.
👈 اتوماسیون و CI/CD: ابزارهایی مثل Jenkins یا GitHub Actions برای تست و انتشار خودکار کدها.

🗺 نقشه راه تصویری و گام‌به‌گام:
اگر حس می‌کنی مدیریت سرورها، اتوماتیک کردن فرایندها و نگه داشتن زیرساخت پروژه‌های بزرگ با روحیه‌ات سازگاره، وب‌سایت زیر مسیر صفر تا صد این حوزه رو برات شفاف می‌کنه:

🔗 https://roadmap.sh/devops

📌 اگه میخوای راجب دواپس و بازارکار بیشتر بدونی این ویدئو رو ببین.

💬 سوالی داشتید این پایین کامنت کنید👇

#TechTime
#TechTimeFields

💻انجمن علمی برنامه‌نویسی
🔗 @sru_cmp_dev
👌4🔥21
اگر یک package فقط ۱۰ خط کد داشته باشه ، برای یک قابلیت ساده کدوم رو انتخاب میکنید؟
Anonymous Poll
47%
📦استفاده از package آماده
26%
💻کد رو خودم می نویسم
21%
🤔بستگی به پروژه داره
16%
😅هیچ وقت بهش فکر نکردم
🌚1
وقتی یک پکیج ۱۱ خطی، دنیای وب را لرزاند!

نتایج نظرسنجی بالا رو دیدید؟ 👀
حالا بریم سراغ یکی از کابوس‌های تاریخ برنامه‌نویسی تا ببینیم چرا جواب این نظرسنجی گاهی حیاتی میشه...

📅 مارس ۲۰۱۶ | دنیای JavaScript و npm
همه چیز روتین بود. تیم‌های توسعه در سراسر دنیا مشغول Merge کردن تغییرات بودند تا نسخه جدید پروژه‌هایشان را منتشر کنند.
دکمه Build زده شد... اما ناگهان:
Build Failed
ارورها بی‌معنی به نظر می‌رسیدند. کد پروژه هیچ مشکلی نداشت، اما یک وابستگی کوچک در لاگ‌ها به چشم می‌خورد که غیبش زده بود:
📦
left-pad

کل کدی که دنیای وب به آن وابسته بود، فقط همین ۱۱ خط بود:
JavaScript
module.exports = leftPad;

function leftPad (str, len, ch) {
  str = String(str);
  var i = -1;
  if (!ch && ch !== 0) ch = ' ';
  len = len - str.length;
  while (++i < len) {
    str = ch + str;
  }
  return str;
}

تمام کارش این بود که چند کاراکتر (مثل صفر یا فاصله) به سمت چپ یک متن اضافه کند:
leftPad("42", 5, "0") ➔ 
"00042"

نه هوش مصنوعی بود، نه الگوریتم پیچیده. اما همین ۱۱ خط کد ساده، به صورت ناخواسته و زنجیره‌ای (Indirect Dependency) توی دل ابزارهای غولی مثل React و Babel جا خوش کرده بود.

💣 ماجرا از کجا شروع شد؟
توسعه‌دهنده‌ی پکیج (Azer Koçulu) سر اسم یک پکیج دیگر با یک شرکت به اختلاف حقوقی خورد. وقتی npm حق را به آن شرکت داد، او در اعتراض به این تصمیم، تمام ۲۵۰ پکیج خود را از npm پاک (Unpublish) کرد!
و ناگهان...
🚨 فاجعه رخ داد!
سیستم‌های CI/CD، سرورهای بزرگ و پروژه‌های هزاران شرکت و تیم برنامه‌نویسی در سراسر جهان از کار افتادند. اصل داستان فقط کشیده شدن یک پکیج ۱۱ خطی از وسط زنجیره‌ی وابستگی‌ها بود!

🤯 پایان عجیب داستان
ابعاد بحران آن‌قدر گسترده شد که تیم npm برای اولین بار در تاریخ، قوانین خودش را زیر پا گذاشت و پکیج حذف‌شده را به صورت دستی بازیابی کرد تا اینترنت دوباره به حالت عادی برگردد.
قابلیتی که هر برنامه‌نویس مبتدی می‌توانست در چند خط بنویسد، کل دنیا را معطل کرده بود.

💬 حالا با دیدن این داستان، دوباره به نظرسنجی بالا نگاه کنید:
برای یک کار ۱۰ خطی و ساده، هنوز هم 📦 پکیج آماده رو ترجیح میدید یا 💻 خودتون می‌نویسید؟

نظرتون رو  همراه با دلیل در کامنت‌ها بنویسید 👇


📚 واژه‌نامه (برای درک بهتر اصطلاحات):
📦 npm (Node Package Manager):
مخزن آنلاین و ابزار مدیریت پکیج‌ها برای زبان JavaScript که برنامه‌نویسان کدها و کتابخانه‌های آماده را در آن با هم به اشتراک می‌گذارند.

🔗 Dependency :
وقتی یک پروژه برای اجرا شدن به کدهای یک کتابخانه یا پکیج دیگر نیاز داشته باشد، می‌گویند به آن پکیج وابستگی دارد.

🔄 Indirect Dependency :
یعنی پروژه‌ی شما مستقیماً یک پکیج را دانلود نکرده، اما یکی از کتابخانه‌هایی که استفاده می‌کنید خودش به آن پکیج متکی است.

⚙️ CI/CD:
سیستم‌های تست و انتشار خودکار کد؛ کارهایی مثل بررسی تست‌ها و ساخت خروجی نهایی پروژه را بدون دخالت انسان انجام می‌دهند.

#TechTime
#TechTimeCodeAutopsy

💻انجمن علمی برنامه‌نویسی
🔗 @sru_cmp_dev
😨32
هوش مصنوعی‌ای که با تو رشد میکنه(؟)
اگر اخبار هوش مصنوعی رو دنبال می‌کنی، احتمالاً اسم AI Agent Hermes یا «ایجنت‌های خودمختار» زیاد به گوشت خورده. اما این موضوع اصلاً چی هست و چرا باعث شده برنامه‌نویس‌ها و مهندس‌های کامپیوتر انقدر بابتش هیجان‌زده باشن؟

بیا یکم عمیق‌تر نگاهش کنیم 👇

🧠 از «چت‌بات» تا «کارگزار هوش مصنوعی» (AI Agent)
تفاوت اصلی Hermes با چت‌بات‌های عادی مثل ChatGPT توی یک کلمه‌ست: خودمختاری در عمل (Autonomy).
وقتی با یک مدل زبانی عادی کار می‌کنی، تو باید مسئله رو خرد کنی، سوال بپرسی، کدهای پیشنهادی رو کپی کنی، تست کنی و اگر خطا داد دوباره ازش بپرسی.
اما هرمس یک AI Agent است؛ یعنی به جای اینکه فقط «جواب» بده، دست به کار میشه:

🔵 تفکر و برنامه‌ریزی: خودش مسئله رو تحلیل می‌کنه و به مراحل کوچک‌تر تقسیم می‌کنه.

🔵 استفاده از ابزارها: خودش دسترسی به مرورگر، اجرای کد (Code Execution) و دیتابیس داره.

🔵 خوداصلاحی (Self-Correction): اگر کدی که نوشته با خطا مواجه بشه، منتظر تو نمی‌مونه؛ خودش لاگ خطا رو می‌خونه، چندین بار تست، خطایابی و اصلاح میکنه!

💡 چرا این یک نقطه عطف برای مهندس‌های کامپیوتره؟
پروژه‌هایی مثل Hermes نشون میدن که هوش مصنوعی دیگه فقط یک «موتور جستجوی پیشرفته» نیست، بلکه داره تبدیل میشه به همکار و هم‌تیمیِ برنامه‌نویس‌ها؛ کسی که می‌تونی یک وظیفه‌ی کامل رو بهش بسپاری و بعد از نظارت و تایید کارش، بری سراغ کار بعدی!

🎯 حرف آخر:
دنیای AI داره سریع‌تر از چیزی که فکر می‌کردیم از مرحله‌ی «چت کردن» عبور می‌کنه و وارد مرحله‌ی «انجام دادن» میشه. شناخت ابزارهایی مثل Hermes بهمون دید میده که برنامه‌نویسیِ سال‌های آینده قراره چه شکلی باشه.

💬 نظر شما چیه؟ فکر می‌کنید اعتماد کامل به ایجنت ها کار درستیه؟


#TechTime
#TechTimePulse

💻انجمن علمی برنامه‌نویسی
🔗 @sru_cmp_dev
🔥41
💡 ساخت هر آنچه در دنیای نرم‌افزار وجود دارد از صفر!

تا حالا برات پیش اومده که بخوای دقیقاً بفهمی ابزارهایی که در روزمره‌ باهاشون کار می کنی مثل Git، Docker یا SQLite چطوری کار می‌کنند؟

ریپازیتوری معروف Build Your Own X دقیقاً برای همین کار ساخته شده: مجموعه‌ ای از راهنماها و آموزش‌های قدم‌به‌قدم برای بازسازی فناوری‌های محبوب از صفر.

🛠 توی این ریپازیتوری چه چیزهایی پیدا می‌کنی؟
ساخت Git : درک عمیق ساختارCommit، Tree و مدیریت Objectها.

ساخت سیستم‌عامل و کامپایلر: آموزش گام‌به‌گام پیاده‌سازی مفاهیم پایه‌ای کامپیوتر.

ساخت دیتابیس و Docker: یادگیری نحوه مدیریت داده‌ها و کانتینرها از پایه.

بازی‌سازی و موتورهای گرافیکی: پیاده‌سازی منطق بازی‌ها و ابزارهای رندرینگ.

⚡️ چرا این پروژه فوق‌العاده‌ست؟
۱. یادگیری عمیق: به جای استفاده‌ی سطحی از ابزارها، به معمار کدی تبدیل می‌شی که پشت صحنه رو می‌شناسه.

۲. تنوع زبان‌ها: پروژه‌ها با زبان‌های مختلفی مثل Python، Go، Rust، C++ و JavaScript پیاده‌سازی شده‌ان.

۳. ساختار طبقه‌بندی‌شده: همه موضوعات دسته‌بندی شده‌ان تا سریع بری سراغ چیزی که علاقه داری.

✍️ اگر می‌خواید مهارت برنامه‌نویسی‌تون رو به سطح بالاتری ببرید، حتماً سری به این ریپازیتوری بزنید !

🔗 مشاهده ریپازیتوری در گیت‌هاب

#TechTime
#TechTimeHacks
💻 انجمن علمی برنامه‌نویسی
🔗 @sru_cmp_dev
6🔥1
تا حالا شده موقع کار با ChatGPT یا یک ربات، احساس کنی «چقدر قشنگ درکم کرد!» یا وقتی کدادت بدون خطا اجرا میشه، زیر لب بگی «آفرین، بالاخره فهمیدی چی می‌خوام!»؟ 😂

توی دنیای علوم کامپیوتر و هوش مصنوعی، به این حالت می‌گن Eliza Effect (تأثیر الیزا).

📜 داستان از کجا شروع شد؟ (سال ۱۹۶۶)
در دهه ۶۰ میلادی، «جوزف وایزنباوم» توی دانشگاه MIT یک چت‌بات خیلی ساده ساخت به اسم ELIZA. الیزا برنامه‌ای بود که نقش یک روان‌شناس رو بازی می‌کرد. کارش هم خیلی ساده بود: فقط کلمات کلیدی جمله کاربر رو می‌گرفت و اون رو به شکل یک سوال تحویل خودش می‌داد!
کاربر: «من امروز حس خوبی ندارم.»
الیزا: «چرا حس می‌کنی امروز حس خوبی نداری؟»

اتفاق عجیب چی بود؟
منشیِ خودِ وایزنباوم و دانشجوها ساعت‌ها پای سیستم می‌نشستن، با الیزا درد و دل می‌کردن و اسرار زندگی‌شون رو بهش می‌گفتن! حتی وقتی سازنده‌اش بهشون توضیح می‌داد که «این فقط چند خط کد شرطیِ ساده‌ست و هیچی نمی‌فهمه»، باز هم آدما باهاش ارتباط عاطفی برقرار می‌کردن!

💡 ناخودآگاهِ ما چطور گول می‌خوره؟
مغز انسان طوری سیم‌کشی شده که ناخودآگاه دوست داره به همه‌چیز «شخصیت انسانی» بده.

وقتی یک الگوریتم یا مدل زبانی، خروجیِ باکیفیت و ساختاریافته تحویل میده، مغز ما ناخودآگاه فرض می‌کنه که پشت این کلمات:
🟡 درک و فهم وجود داره
🟡 احساسات و آگاهی هست
🟡 یا سیستم واقعاً داره «فکر» می‌کنه!

در حالی که در لایه زیرین، همه‌چیز ریاضیات، احتمال، ماتریس و محاسبات آماریه.

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

💬 تو هم تا حالا این حس رو داشتی؟ شده با یک هوش مصنوعی حس صمیمیت کنی یا فکر کنی واقعاً حالتو می‌فهمه؟ برام بنویس 👇

#TechTime
#TechTimePulse
💻 انجمن علمی برنامه‌نویسی
🔗 @sru_cmp_dev
🔥6
🔐 هَش (Hash) چیه و چرا تقریباً همه‌جا باهاش سروکار داریم؟

احتمالاً تا حالا برات پیش اومده که بخوای یک برنامه یا فایل رو دانلود و نصب کنی و در صفحه دانلود، کنار اون متنی مثل SHA-256 ببینی؛ جلوی اون هم یک عبارت طولانی و با طول ثابت نوشته شده.

تا حالا فکر کردی این عبارت چیه ؟ 🤔
به خروجی این تابع، Hash (هش) می‌گیم.

هش (Hash) یک تابع هست که یک ورودی با اندازه دلخواه رو دریافت می‌کنه و اون رو به یک خروجی با اندازه ی مشخص تبدیل می‌کنه.
مثلاً:
Hello
   ↓
SHA-256
   ↓
185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

حالا اگر فقط یک کاراکتر از ورودی تغییر کنه، Hash به‌طور چشمگیری تغییر می‌کنه:
hello
   ↓
SHA-256
   ↓
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

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

به همین دلیل می‌تونیم Hash رو مثل یک اثر انگشت دیجیتال برای داده‌ها در نظر بگیریم. 💻

🛠 حالا Hash کجا استفاده میشه؟

🔹 بررسی صحت فایل‌ها
وقتی یک فایل دانلود می‌کنی، می‌تونی Hash اون رو با مقدار اعلام‌شده توسط منبع مقایسه کنی.
اگر مقدارها یکسان باشن، می‌تونی مطمئن بشی که فایل دریافت‌شده با فایل موردنظر یکسانه.

🔹 تشخیص فایل‌های تکراری
اگر دو فایل دقیقاً محتوای یکسانی داشته باشن، Hash یکسانی خواهند داشت. به همین دلیل می‌تونیم با Python برنامه‌ای بنویسیم که بین هزاران فایل، فایل‌های تکراری رو پیدا کنه.

🔹 ذخیره Password
سیستم‌های امن نباید Password کاربران رو به صورت متن ساده ذخیره کنن.برای ذخیره Password معمولاً از الگوریتم‌های مخصوص Password Hashing مثل:
Argon2

bcrypt

scrypt

استفاده میشه.
🔹گیت( Git)
اگر با Git کار کرده باشی، احتمالاً برات جالبه بدونی Hash نقش مهمی در شناسایی Objectها و محتوای Git داره.

🔹 امنیت و رمزنگاری
همچنین Hash Functionها در بخش‌های مختلف امنیت اطلاعات و رمزنگاری کاربرد دارن و یکی از مفاهیم پایه‌ای در دنیای امنیت محسوب میشن.

⚠️باید بدونیم که Hash با Encryption یکی نیست!
این دو مفهوم رو خیلی‌ها با هم اشتباه می‌گیرن.
🔐 Encryption (رمزنگاری):
داده رو با استفاده از یک کلید رمز می‌کنیم و با کلید مناسب می‌تونیم داده اصلی رو بازیابی کنیم.
🔒 Hashing:
هدف، تولید یک مقدار نماینده برای داده است و در حالت معمول قرار نیست بتوانیم با یک عملیات معکوس ساده، داده اصلی رو از Hash به دست بیاریم.

💻 یک مثال ساده با Python
import hashlib

text = "Hello"

result = hashlib.sha256(
    text.encode()
).hexdigest()

print(result)

اینجا با استفاده از SHA-256، Hash مربوط به
"Hello"

محاسبه میشه. میتونی با تغییر text هش عبارت دلخواهت رو به دست بیاری  👀

#TechTime
#TechTimeCodeAutopsy

💻 انجمن علمی برنامه‌نویسی
🔗 @sru_cmp_dev
7