رفتن به محتوای اصلی

ساخت محصول و رشد

چطور یک ابزار قابل اشتراک بسازیم؟ پروژهٔ آزمون الگوریتم با AI

یک آزمون واقعی بساز: سؤال، امتیاز، توضیح جواب و اشتراک نتیجه. با کد کامل HTML و JavaScript، طراحی حلقهٔ رشد و اندازه‌گیری درست.

چطور یک ابزار قابل اشتراک بسازیم؟ پروژهٔ آزمون الگوریتم با AI

تصویر اختصاصی مجلهٔ ساروی؛ ساخته‌شده با هوش مصنوعی

چرا کسی باید لینک پروژهٔ تو را برای دوستش بفرستد؟ برای یک مقالهٔ کلی جواب روشنی نداریم. برای «ببین از پنج سؤال الگوریتم چند تا را درست می‌زنی» دلیل وجود دارد: کنجکاوی، مقایسه و یک نتیجهٔ شخصی. همین‌جا آزمون را انجام بده؛ بعد نسخهٔ سادهٔ آن را می‌سازیم و می‌بینیم کدام بخش می‌تواند به جذب کاربر کمک کند.

نسخهٔ آزمون خودت را با ساروی بساز
همین‌جا امتحان کن

پنج سؤال الگوریتم؛ چند تا را بلدی؟

پاسخ بده، دلیل جواب‌ها را ببین و نتیجه‌ات را با دوستت مقایسه کن.

1. جست‌وجوی دودویی روی کدام ورودی درست کار می‌کند؟
2. در Two Sum، برای x = 7 و target = 10 دنبال چه عددی می‌گردیم؟
3. چرا در راه‌حل دیکشنری، قبل از ذخیره‌کردن عدد فعلی مکمل را می‌جوییم؟
4. حلقهٔ for روی n عضو و یک کار ثابت در هر دور، چه مرتبه‌ای دارد؟
5. اگر یک جواب با مثال سؤال درست بود، قدم بعدی چیست؟

اول یک نتیجهٔ کوچک که ارزش نشان دادن دارد

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

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

حلقه را روی کاغذ رسم کن

مسیر ما این است: دریافت لینک از دوست ← پاسخ به پنج سؤال ← دیدن امتیاز و دلیل ← اشتراک اختیاری ← ورود دوست بعدی. هر پیکان یک سؤال محصول دارد. آیا ورود سریع است؟ سؤال‌ها واضح‌اند؟ نتیجه جالب است؟ لینک پس از اشتراک به جای درستی برمی‌گردد؟

دکمهٔ تمرین ساروی باید به مسئلهٔ همان فرد وصل شود. کسی که سؤال مکمل در Two Sum را اشتباه زده، درخواست آمادهٔ «این مفهوم را با مثال ساده‌تر یادم بده» می‌گیرد. دعوت عمومی «با هوش مصنوعی آینده را بساز» از این موقعیت دور است.

دادهٔ سؤال را از رابط جدا کن

برای هر سؤال چهار چیز نگه می‌داریم: متن، گزینه‌ها، اندیس گزینهٔ درست و توضیح. اندیس از صفر شروع می‌شود. این ساختار اجازه می‌دهد موضوع را عوض کنی و منطق صفحه ثابت بماند.

اگر سؤال را AI ساخته، قبل از انتشار جواب‌ها را بررسی کن. یک سؤال غلط می‌تواند نتیجهٔ کل آزمون را بی‌اعتبار کند. برای مفاهیم فنی، مثال را اجرا کن یا به منبع درس برگرد. برای پزشکی، از آزمون آموزشی با دادهٔ فرضی استفاده کن و آن را تشخیص فردی معرفی نکن.

questions.js javascript
const questions = [
  {
    q: "مکمل ۷ برای رسیدن به ۱۰ چیست؟",
    a: ["۱۷", "۳", "۱۰"],
    c: 1,
    why: "مکمل برابر target - value است."
  }
];
c اندیس گزینهٔ درست است؛ در این مثال گزینهٔ دوم، اندیس ۱ دارد.

نسخهٔ کامل را اجرا کن

فایل HTML همراه مقاله را دانلود کن. برای دیدن فرم می‌توانی آن را در مرورگر باز کنی. برای آزمایش اشتراک و Clipboard، روی localhost یا یک سایت HTTPS اجرا کن؛ پشتیبانی مرورگرها متفاوت است.

فایل هیچ کتابخانهٔ بیرونی ندارد. سؤال‌ها با createElement ساخته می‌شوند و متن با textContent وارد صفحه می‌شود. در این نسخه، همهٔ جواب‌ها در کد مرورگر قابل دیدن‌اند؛ برای یادگیری مناسب است، ولی آزمون رسمی یا مسابقه با جایزه باید اعتبارسنجی سمت سرور داشته باشد.

run-local.txt text
python3 -m http.server 8000
# Open http://localhost:8000/quiz-starter.html
دستور را در پوشه‌ای اجرا کن که فایل دانلودشده در آن قرار دارد.

اشتراک‌گذاری فقط پس از کلیک کاربر

Web Share API در مرورگرهای پشتیبانی‌شده پنجرهٔ اشتراک سیستم را باز می‌کند. اگر موجود نبود، متن و لینک را کپی می‌کنیم. لغو شدن پنجرهٔ اشتراک یک خطای محصول نیست و نباید پیام قرمز ترسناک نشان بدهد.

باز شدن یا بسته شدن موفق پنجره ثابت نمی‌کند پیام به گیرنده رسیده است. برای اندازه‌گیری انتشار، ورود واقعی از لینک‌ها را ببین. اطلاعات حساس یا نام دانشجو را داخل URL نگذار؛ نتیجهٔ این نمونه در متن اشتراک قرار می‌گیرد.

share.js javascript
async function shareResult(score, total, url) {
  const text = `${score} از ${total} سؤال را درست جواب دادم. تو چطور؟`;
  if (navigator.share) {
    await navigator.share({ title: "آزمون الگوریتم", text, url });
  } else {
    await navigator.clipboard.writeText(text + "\n" + url);
  }
}
این تابع باید از رویداد کلیک فراخوانی شود؛ نسخهٔ کامل، خطا و لغو کاربر را هم مدیریت می‌کند.

منبع این بخش: MDN: Navigator.share ↗

وایرال شدن را با عدد بسنج

فرض آموزشی: ۲۰ نفر آزمون را کامل کرده‌اند. از لینک‌های اشتراک آن‌ها، ۲۴ بازدید تازه آمده و ۶۰ درصد بازدیدکننده‌های تازه آزمون را کامل کرده‌اند. این یعنی ۱۴٫۴ تکمیل مورد انتظار در نسل بعد؛ نسبت ۱۴٫۴ به ۲۰ برابر ۰٫۷۲ است. این حلقه به‌تنهایی در هر نسل کوچک‌تر می‌شود.

عدد ۰٫۷۲ پیش‌بینی قطعی نیست؛ یک مدل ساده با فرض ثابت بودن نرخ‌هاست. دادهٔ واقعی را در چند بازه ببین. یک هفتهٔ خوب یا چند اشتراک در گروه دوستان، تضمین رشد پایدار نیست.

چهار رویداد کافی برای شروع‌اند: ورود به آزمون، شروع، تکمیل و کلیک تمرین در ساروی. ورود از لینک اشتراک را با پارامتر منبعی که خودت تعریف کرده‌ای مشخص کن. از ثبت جواب‌های آزاد یا اطلاعات شخصی برای این اندازه‌گیری صرف‌نظر کن؛ هدف، فهم مسیر استفاده است.

افت کجاست؟فرضیهٔ قابل آزمایش
بازدید زیاد، شروع کمموضوع یا وعدهٔ صفحه مبهم است.
شروع زیاد، تکمیل کمآزمون طولانی، سؤال مبهم یا رابط سخت است.
تکمیل زیاد، ورود تازه کمنتیجه دلیل کافی برای اشتراک ندارد.
امتیاز دیده می‌شود، تمرین شروع نمی‌شوددعوت به اقدام به سؤال غلط فرد وصل نیست.

با AI نسخهٔ دوم را هدفمند بساز

به ساروی بگو مخاطب چه کسی است و کدام مرحله افت دارد. اگر کاربر سؤال سوم را نمی‌فهمد، بازنویسی همان سؤال را بخواه؛ کل آزمون را عوض نکن. اگر نتیجه به اشتراک گذاشته نمی‌شود، دو متن نتیجه را با همان سؤال‌ها آزمایش کن.

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

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

حالا نوبت توست

این کار را خودت انجام بده.

  • آزمون زنده را کامل کن و توضیح خطاها را بخوان.
  • نسخهٔ HTML را با پنج سؤال خودت تغییر بده.
  • تکمیل آزمون و شروع تمرین بعدی را اندازه بگیر.

در انجام این کار به مشکل خوردی؟

از پشتیبانی کمک بگیر