<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>پست‌های انتشارات تیم فنی ویرگول</title>
        <link>https://virgool.io/virgool/feed</link>
        <description>نوشته‌های تیم محصول ویرگول در مورد رخدادهای فنی و کسب و کاری ویرگول در این انتشارات منتشر می‌شود.</description>
        <language>fa</language>
        <pubDate>2026-06-16 21:00:32</pubDate>
        <image>
            <url>https://files.virgool.io/upload/publication/qaitysaphx2h/f6akkp.png</url>
            <title>تیم فنی ویرگول</title>
            <link>https://virgool.io/virgool</link>
        </image>

                    <item>
                <title>چگونه پست‌های شما به بخش منتخب‌های ویرگول راه پیدا می‌کند؟</title>
                <link>https://virgool.io/virgool/how-to-get-into-the-featured-section-kgfr0safotld</link>
                <description> رسیدن به منتخب‌های ویرگول همیشه این سوال برای کاربران ویرگول مطرح است که چرا برخی مطالب بیشتر دیده می‌شوند و در بخش‌ منتخب‌ها قرار می‌گیرند؟ این محتواها چگونه انتخاب می‌شوند؟ آیا الگوریتم خاصی پشت این انتخاب‌ها وجود دارد؟ آیا یک عامل انسانی تمام پست‌های منتخب را انتخاب می‌کند؟این راهنما به شما کمک خواهد کرد تا درک عمیق‌تری از مکانیسم انتخاب پست‌ها برای این بخش، پیدا کنید و راهکارهایی برای افزایش شانس حضور در آن بیاموزید.الگوریتم بخش منتخب‌ها چیست؟الگوریتم بخش منتخب مجموعه‌ای از قوانین و معیارهای هوشمند است که به‌صورت خودکار انتخاب می‌کند، کدام مطالب به‌عنوان منتخب نمایش داده شود. این الگوریتم از تکنیک‌های یادگیری ماشین و تحلیل داده‌ها برای ارزیابی محتوای موجود در پلتفرم استفاده می‌کند و هدف اصلی آن، ارائه متنوع‌ترین و باکیفیت‌ترین محتوا به طیف گسترده‌ای از کاربران ویرگول است.معیارهای کلیدی در انتخاب مطالبالگوریتم ویرگول برای انتخاب مطالب منتخب به چندین معیار کلیدی توجه می‌کند که در زیر به آن‌ها اشاره می‌کنیم:۱. تعاملات کاربران:مهم‌ترین عامل، میزان تعامل کاربران با یک مطلب است. این تعاملات شامل تعداد بازدیدها، لایک‌ها، نظرات و اشتراک‌گذاری‌ها در شبکه‌های اجتماعی می‌شود. هر چه کاربران بیشتری با محتوای شما تعامل داشته باشند، شانس قرار گرفتن آن در بخش منتخب بیشتر است. در این قسمت یک سوال اساسی ایجاد می‌شود که چرا برخی محتوا با تعامل خیلی پایین به بخش منتخب‌ها راه پیدا می‌کنند؟ جواب این سوال با در نظر گرفتن معیارهای دیگر مشخص می‌شود.۲. دسته‌بندی موضوعی محتوا:اینکه یک مطلب در کدام دسته‌بندی قرار دارد نیز مهم است، چرا که الگوریتم تلاش می‌کند تعادلی بین دسته‌بندی‌های مختلف ایجاد کند. این دسته‌بندی‌ها به الگوریتم کمک می‌کنند تا محتوای مناسب را به طیف وسیع‌تری از کاربران ویرگول ارائه دهد. اهمیت این موضوع زمانی مشخص می‌شود که بدانیم در ویرگول، محتوای روزانه‌نویسی، دلنوشته و داستان همیشه بیشترین تعامل را به خود اختصاص می‌دهد. واضح است که فقط در‌نظر گرفتن معیار اول باعث می‌شود تمام منتخب‌های ویرگول از این دسته‌ها باشد و کامیونیتی‌های دیگر ویرگول را حذف می‌کند. بهترین راه‌حل برای در نظر گرفتن اکثریت علایق کاربران، اختصاص سهم‌های مشخص برای هر دسته به‌نسبت همان دسته از کاربران است.۳. تعداد بازدید و منبع آن:بعضی مطالب از طریق موتورهای جستجو بازدید زیادی می‌گیرند، اما لایک و نظر کمی دارند. از طرف دیگر، برخی از مطالب در خود سایت ویرگول محبوب‌تر هستند. هر دو عامل ( بازدید از موتورهای جستجو و محبوبیت در ویرگول) در رتبه‌بندی دارای اهمیت هستند.۴. کیفیت محتوا:طول محتوا، ساختار مناسب، استفاده از تصاویر و همچنین به‌روز بودن اطلاعات از جمله عواملی هستند که کیفیت یک مطلب را تعیین می‌کنند. محتوای باکیفیت نه تنها شانس دیده شدن بیشتری دارد، بلکه می‌تواند تعاملات بیشتری را نیز به خود جذب کند.۵. موضوعات به‌روز و ترندها:اگر مطلب شما درباره موضوعی باشد که در آن زمان بین کاربران محبوبیت دارد، احتمال قرار گرفتن آن در بخش منتخب بیشتر خواهد بود. این موضوعات اغلب ورودی بیشتری از موتورهای جستجو دریافت می‌کنند و می‌توانند بازدیدهای بالایی به خود جذب کنند.به‌عنوان مثال، یک ترند عمومی مانند «همستر کامبت» مخاطبی به اندازه کل جمعیت ایران دارد و یا یک موضوع روز سیاسی ممکن است مخاطب میلیونی به خود جذب کند. طبیعی است که هر نوشته با این موضوعات می‌تواند بازدید چند صد هزارتایی از سمت موتورهای جستجو به ارمغان بیاورد، حال آنکه مطالب دلنوشته یا روزانه‌نویسی به‌نسبت بسیار کمتری بازدید دارند.یک پست پربازدید از سمت موتورهای جست‌وجو۶. توجه به کاربران جدید:بخشی از سهم منتخب‌ها به این دسته‌ از کاربران اختصاص دارد. کاربرانی که با توجه به جدید بودن و نداشتن دنبال کننده توانسته‌اند برای مطالب خود لایک و کامنت جذب کنند. هرچند به نظر می‌رسد سهم این کاربران از منتخب‌ها کم است و می‌توان تعداد بیشتری از این کاربران را در منتخب‌ها داشته باشیم.۷. تاثیر کاربران قدیمی و مفید:در ویرگول همه برابرند، برخی برابرتر! یکی دیگر از بخش‌های پراهمیت ویرگول، سیستم رتبه‌دهی کاربران ویرگول است که این بخش خود به توضیح مفصل نیاز دارد. اما به‌طور خلاصه کاربران بر‌اساس قدمت، نوع و میزان فعالیت در ویرگول اهمیت و جایگاه ویژه‌ای به خود اختصاص می‌دهند.به‌عنوان مثال کاربری که به تازگی در ویرگول ثبت نام کرده است، جایگاه پایین‌تری نسبت‌به کاربری، مانند دست‌انداز که تعداد مطالب زیادی نوشته است و توانسته به جذب لایک و تعامل بالایی برای مطالب خود دست پیدا کند دارد. پس به‌نظر می‌رسد لایک و کامنت کاربران با جایگاه بالاتر باید ارزش بیشتری داشته باشد.هرچند باید به این نکته توجه کرد که نباید این معیار وزن زیادی به خود اختصاص دهد؛ به‌گونه‌ای که مورد سو‌استفاده واقع‌ شود،زیرا قدرت همیشه فسادآور است. (چیزی شبیه به امضای طلایی)پس اگر از کاربران قدیمی ویرگول هستید، می‌توانید انگیزه‌ای برای کاربران جدید باشید و با دنبال کردن کاربران جدید لایک و کامنت بر روی پست این کاربران، از آن‌ها برای بیشتر دیده شدن حمایت کنید.نکته مهم: در نظر گرفتن هر یک از معیارها به تنهایی باعث ایجاد سوگیری در پلتفرم خواهد شد. از دید هر کاربر فقط علایق همان کاربر مهم است؛ به‌عنوان مثال، اگر فقط معیار ترند برای منتخب بودن در نظر گرفته شود، جامعه‌ مهم روزانه‌نویس حذف خواهد شد و بالعکس اگر فقط معیار تعامل را در نظر بگیریم، ممکن است یک محتوای بی‌کیفیت تعداد زیادی تعامل بگیرد.چگونه شانس خود را برای قرار گرفتن در منتخب‌ها افزایش دهیم؟اگر می‌خواهید مطلب شما در بخش منتخب ویرگول قرار گیرد، می‌توانید با رعایت چند نکته شانس خود را افزایش دهید:چگونه شانس قرار گرفتن در منتخب‌های ویرگول را افزایش دهیم؟ ۱. نوشتن محتوای با کیفیت و منحصربه‌فرد:مطالبی که اطلاعات جدید و کاربردی ارائه می‌دهند و از نظر نگارشی و ساختاری قوی هستند، شانس بیشتری برای انتخاب شدن دارند.۲. تشویق به تعامل:از خوانندگان خود بخواهید که شما را دنبال کنند، نظر بدهند و لایک کنند. هر چه میزان تعامل با مطلب شما بیشتر باشد، احتمال قرار گرفتن آن در بخش منتخب بیشتر است.۳. استفاده از کلمات کلیدی مناسب:کلمات کلیدی که کاربران جستجو می‌کنند را به‌خوبی شناسایی کرده و در محتوای خود بگنجانید تا بتوانید ورودی‌های بیشتری از موتورهای جستجو دریافت کنید.۴. انتشار در زمان مناسب:انتشار محتوا در زمان‌هایی که کاربران بیشتری آنلاین هستند، می‌تواند به دیده شدن و تعامل بیشتر کمک کند.۵. انتشار در شبکه‌های اجتماعی:بازنشر نوشته‌های شما در صفحه‌های دیگر شبکه‌های اجتماعی مانند لینکدین و اینستاگرام باعث جذب بازدیدکننده از این شبکه‌های اجتماعی می‌شود که این سیگنالی مثبت برای الگوریتم است.۶. اول خواننده باشید:قبل از اینکه انتظار داشته باشید که دیگران نوشته‌های شما را بخوانند شما نیز باید نوشته‌های دیگران را بخوانید و با لایک و کامنت برای نویسندگان دیگر، این را نشان دهید که یک کاربر فعال هستید. این کار باعث می‌شود شما به اجتماعات ساخته شده در ویرگول راه بیابید و خوانندگان ثابتی را برای نوشته‌های خود پیدا کنید و یا حتی برای خود اجتماع جدید را شکل بدهید.روش‌های جلوگیری از تقلبدر همه‌جا و همیشه احتمال سو‌استفاده و تقلب وجود دارد. افرادی ممکن است تلاش کنند تا با روش‌های غیرمنصفانه، شانس خود را برای قرار گرفتن در بخش منتخب‌ها افزایش دهند؛ اما ویرگول برای مقابله با چنین فعالیت‌هایی، مکانیسم‌هایی را در نظر گرفته است. که به‌صورت زیر عمل می‌کنند:۱. شناسایی الگوهای غیرعادی تعامل:الگوریتم ویرگول به‌طور مداوم رفتار کاربران را نظارت می‌کند. اگر الگویی غیرعادی در تعداد لایک‌ها، نظرات یا بازدیدها مشاهده شود (برای مثال افزایش ناگهانی تعداد لایک‌ها در زمان کوتاه)، این موضوع به‌عنوان یک احتمال تقلب شناسایی می‌شود و اقدامات لازم برای بررسی بیشتر صورت می‌گیرد.۲. تشخیص فعالیت‌های رباتیک:برخی افراد ممکن است از ربات‌ها برای افزایش تعاملات با مطالب خود استفاده کنند. ویرگول از روش‌های تشخیص ربات برای شناسایی و جلوگیری از چنین فعالیت‌هایی استفاده می‌کند تا مطمئن شود که تعاملات واقعی و انسانی هستند.حساب‌هایی که سابقه تقلب یا فعالیت‌های مشکوک دارند، به دقت تحت نظارت قرار می‌گیرند. این نظارت می‌تواند شامل محدودیت‌هایی در انتشار محتوا یا تعامل با مطالب دیگران باشد.۳. اعمال جریمه:اگر تقلبی ثابت شود، ویرگول می‌تواند اقدامات تنبیهی مانند حذف محتوا، کاهش رتبه‌ی مطالب در الگوریتم یا حتی مسدود کردن حساب کاربری را اعمال کند.نکته: این مکانیسم‌ها به‌طور کلی به حفظ سلامت و شفافیت سیستم ویرگول کمک می‌کنند و اطمینان می‌دهند که محتوای منتخب به‌درستی و با توجه به ارزش واقعی آن انتخاب می‌شود.کمتر دیده شدن پست‌های مفیدتر نسبت به مطالب زردیکی از چالش‌هایی که بسیاری از نویسندگان با آن مواجه می‌شوند، کمتر دیده شدن مطالب با بار علمی بیشتر نسبت‌به مطالب به اصطلاح زرد است. این مسئله به چند دلیل ممکن است رخ دهد:چرا مطالب علمی کمتر در ویرگول دیده می‌شوند؟ ۱. جذابیت عمومی:در تمام شبکه‌های اجتماعی، مطالب زرد یا سرگرم‌کننده به‌دلیل جذابیت بیشتر و محتوای سبک‌تر، معمولاً تعاملات بیشتری از سوی کاربران دریافت می‌کنند. این نوع محتواها بیشتر احساسات و عواطف فوری مخاطب را تحریک می‌کنند که باعث می‌شود کاربران به سرعت با آن‌ها تعامل داشته باشند. برای مثال، شما می‌توانید پست‌های زرد اینستاگرامی که به‌‌سرعت در بخش اکسپلور اینستاگرام وارد و وایرال می‌شوند را درنظر بگیرید.۲. زمان و تمرکز مورد نیاز:مطالب علمی و تخصصی معمولا نیاز به زمان و تمرکز بیشتری برای خواندن و درک دارند. این مسئله می‌تواند باعث شود که بسیاری از کاربران، به‌خصوص در محیط‌های آنلاین که تمرکز پایینی دارند، از خواندن این مطالب صرف‌نظر کنند.۳. طیف گسترده مخاطب:محتوای عمومی طیف گسترده‌تری از مخاطب را داراست. حال آنکه مطالب تخصصی و علمی جامعه هدف کوچک‌تری دارند.۴. سئو و موتورهای جستجو:مطالب زرد اغلب به‌دلیل استفاده از کلمات کلیدی پر جستجو و ترند، در موتورهای جستجو بهتر رتبه‌بندی می‌شوند. این رتبه‌بندی بهتر باعث افزایش بازدید و در نتیجه افزایش تعاملات می‌شود که می‌تواند به انتخاب این مطالب در بخش منتخب‌ها منجر شود. به‌عنوان مثال، عنوان «دانلود فیلم …» به‌خصوص اگر فیلم ترندی باشد که تعداد افراد زیادی از جامعه به‌دنبال تماشای آن هستند، می‌تواند در روز چند هزار ورودی از سمت موتورهای جستجو داشته باشد.۵. الگوریتم ویرگول:اگرچه الگوریتم ویرگول به کیفیت محتوا توجه می‌کند، اما تعاملات کاربران نقش مهمی در انتخاب مطالب منتخب دارد. از آنجا که مطالب عمومی ممکن است تعاملات بیشتری داشته باشند، نسبت‌به مطالب علمی بیشتر دیده می‌شوند.برای مقابله با این چالش، نویسندگان می‌توانند تلاش کنند تا محتوای علمی خود را به‌گونه‌ای نگارش کنند که جذابیت بیشتری داشته باشد. استفاده از عناوین جذاب، تصاویر و نمودارهای واضح و ساده‌سازی مفاهیم پیچیده، می‌تواند به افزایش تعاملات و در نتیجه افزایش شانس دیده شدن این نوع مطالب کمک کند.جمع‌بندیبخش منتخب‌های ویرگول یکی از ابزارهای اصلی این پلتفرم برای نمایش بهترین محتواها به کاربران است.نوشتن محتوای باکیفیت، تشویق به تعامل و انتشار هوشمندانه، از جمله اقداماتی هستند که شما را یک قدم به بخش منتخب نزدیک‌تر می‌کنند.تیم ویرگول همواره در تلاش برای بهبود تجربه کاربری شما کاربران عزیز است. نظرات و پیشنهادات شما در این مسیر بسیار ارزشمند است. ما از شما دعوت می‌کنیم با ارائه بازخورد، در ساختن ویرگولی بهتر سهیم باشید.ویرگول،جایی برای خواندن و نوشتن.</description>
                <category>تیم فنی ویرگول</category>
                <author>میلاد سلیمانی</author>
                <pubDate>Sat, 31 Aug 2024 18:30:33 +0330</pubDate>
            </item>
                    <item>
                <title>«نظرات» شما، مایه مسرت ماست</title>
                <link>https://virgool.io/virgool/virgool-comments-system-design-awvg1pxd4cpi</link>
                <description>نوشتن جدا از لذت خلقی که دارد، برای نویسنده نیازی را هم ایجاد می‌کند. نیاز خوانده شدن و البته بازخورد گرفتن. گاهی حتی نویسنده فقط به دنبال یک نقد درست و سازنده است. اصلا شاید به همین علت است که افراد، متن خود را منتشر می‌کنند (در هر جا و به هر شکل)، تا نیاز خود به گرفتن بازخورد از مخاطب را برطرف کنند.با گسترش تکنولوژی و بنا بر نیازهای امروزی، شیوه‌های نوشتن و نشر نیز به مرور دستخوش تغییر شده است و حالا ، انتشار در فضای مجازی فرصتی برای ارتباط مستقیم و ساده‌تر با خیل مخاطبان جدید و بیشتر است.امکان نظر دهی و کامنت گذاشتن بر روی هر محتوا، یکی از متداول‌ترین این راه‌هاست تا نویسنده اثر خود را بهتر لمس کند.به همین دلیل، با توجه به خواسته‌های کاربران ویرگول، مدتی پیش تصمیم گرفتیم که تغییراتی در بخش نظرات ویرگول اعمال و این بخش را بهینه کنیم. این تغییرات پایان کار ما با این بخش نیست اما دوست داریم که بدانید که این تغییرات چه مسیری را طی کرد و همچنین چه راهی در پیش دارد.فرآیند نظردهی در ویرگول (قبل از تغییرات)در گذشته نظرات به صورت تو در تو (nested) نمایش داده می‌شدند و تا بی‌نهایت ادامه داشت. بدین صورت که زنجیره‌ای از نظرات و پاسخ‌ها (replies) در باکس‌هایی تودرتو رو به داخل ادامه داشتند. این نوع طراحی باعث می‌شد که هرچقدر گفتگو بین ۲ کاربر طولانی‌تر شود، باکس نظرات کوچک‌تر شود و این باعث محدودیت در نمایش نظرات و سردرگمی کاربران می‌شد.مشکل اصلی این ساختار، سخت بودن دنبال کردن و خواندن نظرات توسط مخاطب بود. به این صورت که اگر تعداد نظرات از ۴ یا ۵ سطح بیشتر می‌شد، امکان جستجو، پیگیری و نظردهی سخت و محدود می‌شد.طرح نمایش نظرات قبل از تغییرات  گام اول، نظرسنجی از کاربراناول از همه باید دقیقا مشکل کاربران را بررسی می‌کردیم. برای همین در این مرحله‌ی با نظرسنجی و برگزاری جلسات متعدد با حضور کاربران فعال، ریشه‌ اصلی مشکلات و خواسته کاربران را برای خودمان لیست کردیم تا درک بهتری از نیاز افراد داشته باشیم.گام دوم، رفع مشکل دنبال کردناولویت ما حل مشکل خواندن و دنبال کردن نظرات بود، به طوری‌که تودرتو بودن باعث محدودیت نظرگذاری نشود. راه حل موجود در نظر گرفتن محدودیتی برای تعداد سطوح نظر بود، تا این تودرتو بودن بی‌نهایت نباشد.گام سوم، عدم امکان لینک دهی به نظری خاصدر صورت دریافت پاسخ جدید به یک پست یا یک نظر، در بخش اعلانات (notification)،  به کاربر (user) اطلاع داده می‌شود، اما مشکل اینجا است که به دلیل نبود صفحه اختصاصی برای هر نظر، هر اعلان (notification) به صفحه‌ی خود پست منتهی می‌شد و کاربر مجبور بود با بالا و پایین کردن صفحه (scroll) نظر مورد نظر را پیدا کند.برای حل مشکلات بالا لازم بود تا در ابتدا نظرات بیشتر از حدی تودرتو نشوند و همچنین، هر نظر یک صفحه و آدرس مختص به خودش ( url مشخص) داشته باشد.چالش‌های ادامه‌ی مسیر و حل کردن آنهابعد از به‌روز رسانی نسخه اول، با چالش جدیدی مواجه شدیم. نارضایتی کاربران به خاطر کندی باز شدن صفحات نظرات و اینکه برای مشاهده‌ی هر نظر مجبور بودند صفحه جدیدی را باز کند.این چالش پیش‌بینی نشده در ادامه‌ی مسیر، سبب شد که روش خودمان را ابداع کنیم. یک راه‌حل جدید از ترکیب فرآیند قبلی (تودرتو بودن) و نسخه بروزرسانی شده. تصمیم گرفتیم که محدودیت ۳ سطحی برای تودرتو بودن را اعمال کنیم. در این روش کاربر می‌توانست تا ۳ سطح نظرات را بدون نیاز به باز کردن صفحه‌ای جدید مشاهده کند، اما اگر کار نظر بازی بیشتر از این ادامه می‌داشت به یک صفحه‌ی دیگری هدایت شود.طرح نمایش نظرات بعد از تغییراتچالش جدید ما، مشاهده ترتیب نظراتبعد از به روزرسانی دوباره بخش نظرات و با نظرسنجی دوباره از کاربران و خب آمارهای فعالیت‌ها، مورد جدید و جالبی گزارش شد.تصور کنید وقتی کاربر در این فرآيند جدید یک اعلان (notification) دریافت می‌کند، به صفحه‌ی جدیدی هم هدایت می‌شود. اما نکته‌‌ای که مغفول ماند، این بود که کاربرها اگر بعد از یک یا چند روز به سایت وارد می‌شدند، امکان کمرنگ شدن یا فراموشی موضوع نظر وجود داشت. یعنی کاربر فراموش می‌کرد جوابی که دریافت کرده، درخصوص چه نظری بوده است.خوب باز تصمیم گرفتیم تغییراتی در طراحی داشته باشیم. این بار کاربر علاوه بر مشاهده‌ی نظر اصلی و پاسخ‌های مربوط به آن، می‌توانست parent یا نظر والد هر پاسخ را به‌صورت مجزا دنبال کند. که علاوه بر سرعت بخشیدن در مشاهده و پاسخگویی نظرات کمک می‌کرد که کاربر سردرگم نشود.نمایش صفحه یک نظر خاصقابلیت‌های دیگری در بخش نظراتیکی دیگر از قابلیت‌هایی که با پیشنهاد خود شما کاربران ویرگول ایجاد شد، افزودن آیکون لایک به سیستم نظرات بود. با این امکان در صورتی که کاربر مایل نبود جوابی به نظر بدهد، حرف دیگری در ادامه نظرات نداشت و یا فرصت پاسخ دادن را پیدا نمی‌کرد با زدن دکمه لایک، تایید و موافقت خودش را ابراز کند. و یا اگر کاربر دیگری، نظر فرد جدید را بپسندد، کافی بود به جای تکرار نظر، فقط آن را لایک کند. به این ترتیب مخاطبین با لایک‌های خود، ارتباط و بازخورد مناسب را با کاربر یا سایر مخاطبین با کمترین سختی، به اشتراک می‌گذاشتند.بخش نظرات و راهی که پیش رو داریم…با نظرسنجی‌ از کاربران، با تغییراتی که در بخش نظردهی انجام شده است، در حال حاضر با مشکل خاصی روبرو نیستیم و فرآیند حاضر با اهداف ما، تیم ویرگول، که ساده‌سازی استفاده از ابزارهای موجود در سایت و ایجاد تعامل سازنده میان کاربران است، با موفقیت انجام شده است.اما به زودی این بخش با تغییرات دیگری همراه خواهد بود، تا شما بتوانید زودتر نظر خود را بنویسید.لطفا در پایین این پست، نظر خودتان را با ما به اشتراک بگذارید و در ضمن، من تگ ویرگول را دنبال کردم تا پست‌های شما در رابطه با امکانات ویرگول را بخوانیم. پس می‌توانید با اضافه کردن این تگ به پست‌های خود، نظرتان را سریعتر با من و سایر اعضای تیم ویرگول به اشتراک بگذارید.</description>
                <category>تیم فنی ویرگول</category>
                <author>علی حدادکار</author>
                <pubDate>Wed, 24 Aug 2022 11:51:10 +0430</pubDate>
            </item>
                    <item>
                <title>استخراج کلمات کلیدی پست‌ها در ویرگول</title>
                <link>https://virgool.io/virgool/virgool-keyword-extraction-olh6ewalrenv</link>
                <description>من میلاد هستم و کاری که در ویرگول می‌کنم سر و کله زدن با داده‌های متنی است (پردازش زبان طبیعی). در این پست می‌خواهم راجع به یکی از ویژگی‌های (Features) ویرگول صحبت کنم. ویژگی که قبل از ورود من به تیم و آپدیت اردیبهشت ۱۴۰۱ ویرگول وجود داشت، اما کاربران به آن کمتر توجه می‌کردند.احتمالا متوجه شده‌اید که بعد از نوشتن هر پست در ویرگول، در صفحه انتشار پست، بخشی به نام تگ‌ها وجود دارد که می‌توانید در آن تا ۵ تگ مرتبط با محتوای خود بنویسید. این تگ‌ها شبیه به هشتگ‌ در اینستاگرام و توییتر است، که در ویرگول به آن تگ می‌گوییم (و نیاز نیست با علامت هشتگ # بنویسید). هشتگتگ‌ها اساسا چه می‌کنند و چرا این ویژگی را بهتر کردیم؟پست‌های ویرگول در دسته‌بندی‌های مختلفی قرار می‌گیرند (می‌توانید به بخش علاقه‌مندی‌های منوی پروفایل خود بروید و دسته‌بندی‌های ویرگول را ببینید). به طور مثال زمانی که شما دسته‌بندی برنامه‌نویسی را دنبال می‌کنید تمامی پست‌های این حوزه به شما پیشنهاد می‌شود. اما برنامه‌نویسی را تصور کنید که به زبان برنامه نویسی پایتون علاقه‌ دارد و مشغول یادگیری آن است، طبیعتا این فرد فقط دنبال پست‌های پایتون می‌گردد و آنها را می‌خواند، نه تمامی پست‌های مربوط به برنامه نویسی. در واقع تگ‌ها به نوعی همین امکان دسته‌بندی‌ کردن برای رسیدن به جزئیات بیشتر هستند و اگر نویسنده به پست‌ خود تگ اضافه کند، خواننده‌های بیشتر و مرتبط‌تری را هم جذب می‌کند.چالشی که ما در ویرگول داشتیم این بود که نویسندگان را ترغیب کنیم تا از این تگ‌ها بیشتر استفاده کنند.و اما راه حل ماما برای چالش پیش‌رو از تکنیک‌های پردازش زبان طبیعی متن استفاده کردیم تا موتور هوشمند سایت ویرگول بتواند از این به بعد تگ‌هایی را به صورت خودکار از خود متن نویسنده استخراج کند.فرایند ساده است. زمانی که شما بخواهید پستی را منتشر کنید، متن شما توسط پردازشگر آنالیز شده، کلمات اصلی از متن استخراج می‌شود و به شما تگ‌های متناسب را پیشنهاد می‌کند. یعنی هر وقت پستی در ویرگول بنویسید و به صفحه انتشار پست بروید، چند تگ پیشنهادی در کادر مرتبط به صورت پیش فرض وجود دارند، که البته شما می‌توانید به هر دلیلی آنها را حذف و تگ‌هایی که خودتان مناسب‌تر می‌دانید را به متن اضافه کنید.این خلاصه‌ای که گفتم شاید ساده به نظر بیاید اما در نوع خودش چالش بزرگی بود. برای اینکه تگ‌های استخراج شده مطابق و مناسب نوشته شما باشد، ما روش‌های مختلفی را ترکیب کردیم که در ادامه مقاله توضیح خواهم داد.رشد استفاده کاربران از تگ‌ در پست‌های خودبعد از اضافه شدن این ویژگی، نمودارهای ویرگول نشان داد که پس از این آپدیت افراد بیشتری از تگ در انتهای پست‌ خود استفاده می‌کنند و نمودارهای میله‌ای رشد بسیار زیاد و چشم‌گیری داشتند.فرایند استخراج کلمه‌های کلیدی و تگ‌هااستخراج کلمه کلیدی یک تکنیک تجزیه و تحلیل متن است که به طور خودکار بیشترین و مهم‌ترین کلمه‌ها و عبارت‌ها را از متن استخراج می‌کند. این کار به شناخت موضوع اصلی که در متن به آن پرداخته شده است، کمک می‌کند.اگر پردازش زبان طبیعی کار می‌کنید قطعا می‌دانید که برای استخراج کلمات کلیدی از متن، تکنیک‌های متفاوتی وجود دارد. از رویکردهای آماری که کلمات کلیدی را با شمارش فراوانی کلمات شناسایی می‌کنند، مثل (Term Frequency-Inverse Document Frequency) به اختصار TF-IDF و (Rapid Automatic Keyword Extraction) یا RAKE، تا رویکردهای پیشرفته‌تری مثل یادگیری ماشینی، که با یادگیری از نمونه‌های قبلی، مدل‌های پیچیده‌تری را ایجاد می‌کند.Keyword Extractionروش ما در ویرگول چه بود؟روشی که ما در ویرگول برای استخراج کلمات کلیدی استفاده کردیم، TF-IDF برای وزن دهی به کلمات بود. برای همین با استفاده از دیتاست بزرگ مقالات فارسی ویرگول، در مرحله اول وزن همه کلمات در هر پست را بدست آوردیم.TF-IDF الگوریتمی برای به دست آوردن وزن کلمات است. در واقع برای هر پست ما تعداد تکرار هر کلمه را، بر تعداد تکرار کلمه در تمامی پست‌های دیگر ویرگول تقسیم می‌کنیم. به هر کلمه یک وزن تعلق می‌گیرد. هرچه وزن یک کلمه کمتر باشد به این معناست که این کلمه اهمیت کمتری در این پست داشته است و هر چه این عدد بزرگتر باشد، می‌فهمیم این مقاله بیشتر و متمرکزتر به این کلمه پرداخته است.برای به دست آوردن وزن کلمه‌ها در این روش از تابع TfidfVectorizer کتابخانه معروف sklearn استفاده کردیم.برای به دست آوردن بهترین کلمه‌ها و عبارت‌های کلیدی مناسب به عنوان تگ ما نیاز به بهتر کردن وزن کلمات داشتیم که با استفاده از یک سری قوانین و منطق این وزن‌ها رو تغییر دادیم:۱. ما در حدود ۵۰۰۰ تگ از تگ‌های مفید و پرکاربرد در همه‌ی دسته‌های موضوعی ویرگول را بدست آوردیم. در این مرحله اگر عبارت کلیدی متن یک پست در این لیست وجود داشته باشد وزن آن عبارت افزایش پیدا می‌کند.۲. متوجه شدیم اصولا افراد از کلمات مهم مورد نظر خود در تیتر هم استفاده می‌کنند، بنابراین در ادامه ما به این نتیجه رسیدیم که وزن و اهمیت کلمه‌ها و عبارت‌های موجود در تیترها بیشتر از وزن کلمه‌های متن و پاراگراف‌ها است.۳. تگ‌های چند کلمه‌ای معمولا توضیح کامل‌تری نسبت به تگ‌های تک کلمه‌ای از متن به ما می‌دهند. مثلا اگر شما مقاله‌ای راجع به تنظیمات دوربین عکاسی نوشته باشید برای این مقاله پر اهمیت‌ترین تگ‌ها عبارتند از : «تنظیمات دوربین عکاسی»، «دوربین عکاسی»، «عکاسی».در آخر با در نظر گرفتن تمامی این موارد، وزن‌دهی بهتر می‌شود و تگ‌هایی با بالاترین وزن‌ها انتخاب می‌شوند.Sorted &amp; selected best tagsچالش تگ‌های تکراریطبیعتا همه چیز به خوبی پیش نمی‌رفت و ما هم انتظار مواجه با مشکلات را داشتیم، در این مرحله ما با یک چالش جدید مواجه شدیم، شباهت تگ‌های پیشنهادی و محدودیت گزینه‌ها.به عنوان مثال در یک مقاله دو تگ «استخراج کلمه کلیدی» و «استخراج کلمات کلیدی» را در نظر بگیرید این دو تگ شبیه یکدیگرند و بهتر است فقط یکی از آنها به کاربر نمایش داده شود. پس در این مرحله فیلتری اضافه کردیم تا اگر دو تگ زیرمجموعه‌ای از هم باشند و شباهت کسینوسی زیادی به یکدیگر داشته باشند یکی از آنها حذف شود.اگر برایتان سوال شده شباهت کسینوسی چطور به ما کمک می‌کند؟ بهتر است در ابتدا تابع کسینوسی رو به یاد بیاورید.کسینوس زاویه‌ی بین دو بردار در فضا رو محاسبه می‌کند. اگر دو بردار در فضا دارای زاویه ۰ باشند پس کسینوس زاویه آنها برابر ۱ و دو بردار برهم منطبق‌اند و اگر داری زاویه ۱۸۰ باشند پس کسینوس -۱ خواهد بود و دو بردار خلاف جهت هم هستند.خب اینجا ما نه بردار داریم نه فضا؛ ما اینجا فقط کلمه‌ و جمله داشتیم. پس نیاز داشتیم که کلمه‌ها را تبدیل به بردار کنیم. با استفاده از روش word2vec کلمات را تبدیل به بردار کردیم. این روش که برای جاسازی کلمات (word embedding) استفاده می‌شود یک پیکره بزرگ از متن را به عنوان ورودی دریافت می‌کند و یک فضای برداری چند صد بُعدی تولید می‌کند که به هر کلمه منحصر به فرد در پیکره یک بردار متناظر در این فضا اختصاص داده می‌شود. بردارهای کلمه‌ها در فضای برداری به گونه‌ای قرار می‌گیرند که کلماتی که زمینه‌های موضوعی مشترکی در پیکره دارند در فاصله نزدیک به یکدیگر قرار می گیرند. فضای برداری کلمات که به سه بُعد کاهش یافته است.به این ترتیب برای هر کلمه ما یک بردار عددی پیدا کردیم که می‌توانیم عملیات جبری را بر روی این بردارها اعمال کنیم و مثلا کسینوس زاویه بین دو کلمه را با استفاده از بردارهای متناظر آن کلمات بدست آوریم.این کار باعث شد که تگ‌های پیشنهادی دایره وسیع‌تری از موضوع مورد بحث در پست را بتوانند پوشش دهند.و در نهایتتگ‌های پیشنهادی ویرگولدر نهایت برای هر پست ۱۰ تگ با بیشترین وزن انتخاب می‌شود، این تگ‌ها در بازه‌ای بین صفر تا یک نمره می‌گیرند و تگ‌هایی که وزنی بیش از ۰.۵ دارند، در بخش تگ‌های صفحه‌ی انتشار به کاربر نشان داده می‌شوند.چرا باید از تگ‌ها استفاده کنیم؟تا اینجا از تغییرات به وجود آمده و چالش‌هایی که با آن مواجه شدیم گفتیم، حالا وقت آن رسیده که بگویم تمامی این فرایند‌ها چه مزیتی دارد.استفاده از تگ و انتخاب‌های بهتر برای خوانندهبیشترین مزیت این تگ‌ها برای خواننده‌های پست‌هاست. شما اگر خواننده ویرگول باشید و به طور مثال به دنبال یادگیری عمیق بگردید، کافی است همین تگ را جست‌وجو کنید تا به پست‌های بهتری برسید. این یعنی دیگر نیازی نیست مدت زمان زیادی را بین چندین و چند پست در بخش یادگیری ماشین بگردید.در ضمن پیشنهاد می‌کنم اگر تگی را زیاد دنبال می‌کنید و پست‌های مرتبط با آن را می‌خوانید حتما از این به بعد آن تگ را دنبال (فالو) کنید، تا در صفحه اصلی پست‌های مرتبط را ببینید.استفاده از تگ و دیده شدن پست برای نویسندهاگر در ویرگول می‌نویسید، لطفا گذاشتن تگ‌ را فراموش نکنید. گذاشتن تگ به بیشتر دیده شدن نوشته‌‌ی شما و رسیدن به دست مخاطبین پست کمک می‌کند.استفاده از تگ و پیشنهاد پست‌های بهتر برای ویرگولیکی از روش‌های موتور هوشمند ویرگول در پیشنهاد پست‌ها، رصد کردن همین تگ‌ها است. با بررسی علاقه‌مندی شما، ویرگول پست‌های بهتر و ‌نزدیک‌تر به علاقه‌مندی شما را نشانتان خواهد داد.در واقع همه‌ی این فرایند‌ها طراحی و اجرا شده تا در نهایت و به مرور رضایت شما و همه‌ی کاربران ویرگول بیشتر شود.گام بعدی برای بهبود عملکرد این ویژگیهدف بعدی برای بهتر شدن این سرویس استفاده از روش‌های یادگیری عمیق و مدلهای مبتنی بر رمزگذار-رمزگشا است، که مقالات را به عنوان ورودی بگیرد و تگ‌ها را در خروجی تولید کند.روش رمزگذار-رمزگشا یا encoder-decoder نسبت به روش‌های آماری سریع‌تر عمل می‌کند و دقت بیشتری دارد. این روش یک ترنسفورمر است و نحوه عملکرد آن تبدیل یک رشته به رشته دیگر است.مثالی که شاید زیاد با آن مواجه شده باشید، گوگل ترنسلیت است. در گوگل ترنسلیت با استفاده از این روش متن وارد شده به زبان دیگر ترجمه می‌شود. کارایی این روش برای ما، تبدیل متن به تگ است.مقایسه این دو روش می‌تواند دید بهتری به شما دهد. برای مثال در روش آماری، تعداد تکرار کلمات اهمیت زیادی دارد، ممکن است که در یک متن از یک کلمه‌ی ربط زیاد استفاده شده باشد بنابراین آن کلمه را پیشنهاد می‌دهد، در حالی که کلمه‌ی اصلی متن شاید کلمه‌ای باشد که دوبار تکرار شده. اما روش رمزگذار-رمزگشا متن را پردازش می‌کند و در نهایت پراهمیت‌ترین کلمه نه پرتکرارترین را پیشنهاد می‌کند.مزیت بعدی و مهم‌تر این روش درک مفهوم مقاله است. فکر کنید که شما مقاله‌ای درباره‌ی سیاست اقتصادی نوشته‌اید ولی در متن از عبارت  &quot;سیاست اقتصادی&quot; استفاده نکرده‌اید، در این صورت اگر بخواهید تگ‌های این متن را با استفاده از روش آماری به دست بیاورید به شما تگی با عنوان سیاست اقتصادی پیشنهاد نمی‌دهد. اما ترنسفورمرها با درک مفهوم مقاله می‌توانند این تگ را به راحتی پیدا کنند و پیشنهاد دهند.تمامی مزیت‌های روش رمزگذار-رمزگشا به نسبت روش آماری باعث می‌شود که ما برای قدم بعدی آن را انتخاب کنیم.منتظر آپدیت بعدی باشید.در ضمن فراموش نکنید میتوانید با دنبال کردن تگ‌ها، فید بهتری داشته باشید.</description>
                <category>تیم فنی ویرگول</category>
                <author>میلاد سلیمانی</author>
                <pubDate>Wed, 13 Jul 2022 16:00:25 +0430</pubDate>
            </item>
                    <item>
                <title>گزارش ویرگول از فعالیت‌های سال ۱۳۹۸</title>
                <link>https://virgool.io/virgool/%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4-%D9%88%DB%8C%D8%B1%DA%AF%D9%88%D9%84-%D8%A7%D8%B2-%D9%81%D8%B9%D8%A7%D9%84%DB%8C%D8%AA%D9%87%D8%A7%DB%8C-%D8%B3%D8%A7%D9%84-%DB%B1%DB%B3%DB%B9%DB%B8-zctmktctkjlj</link>
                <description>با همراهی شما ویرگول سومین سال از فعالیت خود را پشت سر گذاشت. شاید بتوان گفت که تا پیش از سال ۹۸ ویرگول عمدتاً میزبان خانواده‌ برنامه‌نویس، استارتاپی و اهل کسب‌وکار بود: عرصه‌ای صنفی برای حرفه‌ورانی که با حوصله از تجربیات و دغدغه‌های خود می‌نوشتند. این هسته، در سال ۱۳۹۸، برگ و بار داد و خانواده ویرگول بزرگ‌تر شد، حالا جامعه ویرگول دغدغه‌هایی متنوع‌تر دارد. امروز می‌توانیم ادعا کنیم که نبض جامعه ایران را گرفته ایم. هنوز در مسیریم، تا آینه تمام‌نمایی از حرف‌ها و دغدغه‌های همه فارسی‌زبانان شویم، اما گزارشی که پیش روی شماست می‌گوید این مقصد نیز چندان دور از دسترس نیست. ویرگول اینک صاحب روشن‌ترین چشم‌انداز برای تبدیل شدن به قدرتمندترین عرصه نوشتن به فارسی و خواندن در فارسی است.مرور ترندهای ماهانه ویرگول در سال ۹۸، ما را به درستی راهی که آمده‌ایم، باورمندتر کرد. هشتگ‌های پرکاربرد هر ماه روایت سالی بود که گذشت. سالی که با #سیل به استقبالمان آمد و با #کرونا بدرقهٔ‌مان کرد. در سوگ #دخترآبی نوشتیم و سرود فتح زمین‌های #فوتبال را با خواهرانمان خواندیم. در #محرم سیاه پوشیدیم و #اربعین را پیاده طی کردیم. داستان پر آب چشم، سهمیه‌بندی #بنزین بود و صدای شوم بوف در شب‌های آبان. کلافه بودیم از #قطع‌اینترنت و نه چندان خوشبین به #اینترنت‌ملی. هنوز داشتیم از ترور #سردارسلیمانی در عراق شکوه می‌کردیم که صفحه اول ویرگول پر شد از پست‌هایی در سوگ #سقوط هواپیمایی که با خود آرزو می‌برد و امید. در گوشه‌ای از ویرگول همهمه #انتخابات بود و در گوشه دیگر #ولنتاین، بهانه تمرین عاشقی. خیلی زودتر از آنکه ملتی پشت صف‌های تأیید هویت سجام معطل شوند، از روی دست هم از #بورس سردرآوردیم و فوت و فن #دورکاری را در روزهای #قرنطینه با هم دوره کردیم.پر از غروریم که در سال ۱۳۹۸ هم‌چنان بیش از سال‌های گذشته، ویرگول را تریبون حرف‌های خود، یا محلی برای خواندن هر آن‌چه می‌خواهید، کرده اید. در سال ۹۸ خانواده ویرگول ۳ برابر شد، نوشته‌هایتان در ویرگول هشت برابر سال قبل خوانده شد، جامعه مخاطبان ما با تنوع و تکثری قابل ملاحظه به نزدیکی ۲۰ میلیون نفر رسید. گروه ما در سال ۹۸ تلاش کرد که یک ویرگول هوشمندتر، کاربردی‌تر و ساده‌تر را در دسترس شما بیاورد و حالمان خوب است که در تمامی لحظات تلخ و شیرین ۱۳۹۸ -به استثنای ۳ روز ابتدایی قطعی اینترنت- در کنارتان بوده‌ایم. شما را به بزمی می‌خوانیم که صاحبش هستید: در میان کارهای امروزتان یک «ویرگول» بگذارید، و با ما گزارش سه سالگی ویرگول را ورق بزنید.

گزارش سال ۱۳۹۸ ویرگول
در میان کارهای امروزتان یک «ویرگول» بگذارید، و با ما گزارش سه سالگی ویرگول را ورق بزنید.
دانلود فایل گزارش
</description>
                <category>تیم فنی ویرگول</category>
                <author>ویرگول</author>
                <pubDate>Sun, 07 Jun 2020 12:36:49 +0430</pubDate>
            </item>
                    <item>
                <title>از ویرگول MySqlای به ویرگول Elasticsearchای - قسمت ۳ (آخرای داستان)</title>
                <link>https://virgool.io/virgool/%D8%A7%D8%B2-%D9%88%DB%8C%D8%B1%DA%AF%D9%88%D9%84-mysql%D8%A7%DB%8C-%D8%A8%D9%87-%D9%88%DB%8C%D8%B1%DA%AF%D9%88%D9%84-elasticsearch%D8%A7%DB%8C-%D9%82%D8%B3%D9%85%D8%AA-%DB%B3-%D8%A2%D8%AE%D8%B1%D8%A7%DB%8C-%D8%AF%D8%A7%D8%B3%D8%AA%D8%A7%D9%86-y9ioyntxpjue</link>
                <description>آخرین چیزی که باید تو الستیک انجام می‌دادم، گرفتن نسخه پشتیبان(Backup) بود. شدیدا وجودش نیاز بود چون اگر خدایی نکرده اتفاقی برای دیتای آمار بیفته، هرچی که داریم پریده. هنوز به الستیک عادت نکرده بودیم و نمی‌دونستیم چقدر پایدار هست که بخوایم tracker رو غیر فعال کنیم.رفتم سراغ راه‌های بک‌آپ گرفتن و دیدم الستیک بهش میگه snapshot. روی لپ تاپ خودم تست کردم و همه چی خوب بود و کار می‌کرد. رفتم سراغ اینکه روی پادهای بالا هم بذارمش و پلاگینی که نیاز داشت رو نصب کنم. وقتی اضافه‌ش کردم یهو دیدم پادا از کار افتادن. لاگشون می‌گفت نصب پلاگین به ارور خورده و نمی‌تونه کار کنه. کلی سرچ کردم و به نتیجه نرسیدم. همه لینک‌ها رو خوندم اما چیزی نبود. دیگه به عنوان آخرین راه، رفتم توی پروژه گیت‌هاب پلاگین یه issue باز کردم و براشون مشکلم رو توضیح دادم. اونا هم جواب دادن که مشکل از یک لایه پایین‌تر، یعنی image داکر الستیکه.رفتم سراغشون و براشون ایشو گذاشتم که همچین مشکلی هست و اونا بهم گفتن ما نمی‌تونیم کاری کنیم چون تو اولیت‌هامون نیست ? ولی بهم گفتن که خودم کد رو عوض کنم و بهشون pull request بدم و اونا هم کمک می‌کنن. من که همیشه دوست داشتم تو یک پروژه عمومی فعالیت بکنم ولی هیچ وقت پیش نیومده بود، وقتی بهم اینجوری گفتن خیلی مشتاق شدم و سریع پروژه رو pull کردم و شروع به کار کردم.مشکل از اینجا بود که کدی که زده بودند تا این image ساخته بشه، با فرض این نوشته شده بود که کاربری که قراره که container باهاش کار کنه، کاربر ۱۰۰۱ یا همون elasticsearchه و خب پلاگین snapshot گرفتن نیاز داشت که با کاربر اصلی (root) کار کنه.من شروع کردم به تست گرفتن و عوض کردن کد. تمام حالت‌هایی که می‌شد رو تست کردم. وقتی حساب می‌کنم، بنظرم بیشتر از ۷۰ بار من از پروژه build گرفتم و تست کردم که ببینم کار می‌کنه یا نه. همین بین بود که فهمیدم ‌می‌تونم پلاگین آنالیزر (که تو قسمت اول گفتم) رو هم خودم آپدیت کنم (اگه می‌پرسین چجوری، باید بگم که کافیه فایلاشو دانلود کنید و توی فایل buildش نسخه‌ای که برای الستیک تعیین شده رو عوض کنید و با mvn دوباره build کنید. به همین سادگی?). خلاصه که بعد از یک هفته بالاخره مشکلش رو حل کردم و pull request دادم. اونا هم چندتا تغییر روش خواستن و منم اعمال کردم(البته تو یکیش خیلی گیر کردم، اونم موقعی بود که می‌خواست پورت‌ها رو تصدیق کنه و به مشکل می‌خورد که با کمک خودشون درست شد و یه کد بهم دادن و تست کردم و کار می‌کرد?) و تونستم از imageی که ساخته‌شد توی پادهای خودمون استفاده کنم و پلاگین snapshot رو نصب کنم.البته الان اگه برید توی صفحه اون pull requestای که دادم، می‌بینید که دیگه بسته شده و هیچ وقت merge نشد :)))) چون آخر کار که دیگه همه چی درست شد و گفتم که تائید کنن، بهم گفتن که خطی که باعث می‌شد کاربر از کاربر اصلی به کاربر الستیک تغییر کنه رو برگردونم و وقتی گفتم «بابااااا مشکل اصن از اول همین بود» بهم گفتن که نمی‌شه اینجوری باشه و متاسفیم و بخاطر بعضی پلتفرم‌ها مثل open shift، امکان این وجود نداره که کانتینر با کاربر اصلی اجرا بشه ? خلاصه که بعد از کلی تلاش و با اون همه امید به contribute تو یک پروژه عمومی، تهش فقط مشکل خودمون برطرف شد ☹️بعد از اینکه بک‌آپ گرفتن از الستیک هم درست شد، وقت اون رسید که بعد از ماه‌ها تلاش، بالاخره tracker رو غیر فعال کنیم که ببینیم چقدر تاثیر داره. البته الستیک تاثیر خودش رو با اینکه دیگه query روی tracker نمی‌رفت گذاشته بود ولی اینکه دیگه رو tracker هیچ درخواستی نره قاعدتا خیلی تاثیر داشت.یادم میاد که سرعت سایت اون موقع روی ۱۰۰۰ میلی ثانیه بود. وقتی tracker غیر فعال شد، به صورت غیر قابل باوری تاثیر گذاشت رو سیستم. سرعت ناگهان اومد روی ۴۰۰ میلی ثانیه و ثابت شد!!!! اون موقع با یه همچین شکلی توی سیستم مانیتورینگمون روبه‌رو شدیم:این شکلی شده بود سیستم(متاسفانه اون موقع از صفحه عکس نگرفتم)اون روز و روز بعدش من بارها و بارها صفحه سایت مانیتورینگ رو باز و بسته می‌کردم که ببینم واقعا همین شده یا الکی عه ولی واقعا همین طور بود!! سرعت سایت خیلی خوب شد و همه راضی بودند. اون روز واقعا حس خوبی داشتیم همه. اینکه تونسته بودیم سرعت سایت رو که خیلیا ازش شاکی بودند، بهتر کنیم.این بود داستان جابجایی ویرگول از MySql به Elasticsearch. البته که هنوز از MySql استفاده می‌کنیم ولی خب به لطف الستیک بعضی قسمت‌ها رو بهتر کردیم و در کل بار MySql کمتر شده و سرعت سایت خوبه :)</description>
                <category>تیم فنی ویرگول</category>
                <author>AmirHossein Bahrami</author>
                <pubDate>Sun, 29 Dec 2019 14:56:18 +0330</pubDate>
            </item>
                    <item>
                <title>از ویرگول ‌MySqlای به ویرگول ‌Elasticsearchای - قسمت ۲ (آمار)</title>
                <link>https://virgool.io/virgool/%D8%A7%D8%B2-%D9%88%DB%8C%D8%B1%DA%AF%D9%88%D9%84-mysql%D8%A7%DB%8C-%D8%A8%D9%87-%D9%88%DB%8C%D8%B1%DA%AF%D9%88%D9%84-elasticsearch%D8%A7%DB%8C-%D9%82%D8%B3%D9%85%D8%AA-%DB%B2-%D8%A2%D9%85%D8%A7%D8%B1-bzx5mj16lcqb</link>
                <description>تو قسمت قبل گفتم که چی شد و چجوری شد که سرچ ویرگول رو بردیم روی الستیک. اما فقط سرچ نیست که داره با الستیک کار می‌کنه. بلکه بخش آمار هم داره از الستیک استفاده می‌کنه و این قابلیت‌های خوب و جدیدی که بهش اضافه شده به لطف الستیکه ? چون خیلی‌ها هم گفتند که فنی‌تر باشه، سعی کردم بیشتر از لحاظ فنی صحبت کنم.ماجرای اینکه آمار رفت روی الستیک از اینجا شروع شد که تعداد کاربرهای ویرگول داشت زیاد می‌شد و به همین خاطر سرعت سایت خیلی کم شده بود و سیستم‌های مانیتورینگ بهمون می‌گفتن که مشکل از دیتابیسیه که برای آمار استفاده می‌کنیم ?‍♂️. دیتابیس آمار MySQL بود و از دیتابیس اصلی جدا بود ولی تعداد نوشتن‌‌ها، خوندن‌ها و عملیات‌های آماری مثل جمع‌بندی(aggregation) و دسته‌بندی(grouping) زیاد و سنگینی داشت. خودتون می‌تونید حساب کنید که با تعداد بازدیدی که هر روز داشتیم و مقدار باری که هر کاربر صفحه آمارش رو باز می‌کرد، چقدر این عملیات‌ها زیاد می‌شدند. برای همین سرعت سایت خیلی پایین اومده بود و باید یه فکر جدی می‌کردیم. این‌جا بود که من (که شدیدا داشتم مبهوت الستیک و قابلیت‌هاش می‌شدم ?) دوباره اومدم جلو و گفتم بذارید لاگ رو ببریم روی الستیک. علی که خیلی سر سرچ با الستیک حال کرده‌بود بهم اجازه داد و منم شروع کردم به تحقیق و طراحی و کد زدن و …اولین مشکلی که همون اول به نظرم اومد این بود که چطوری اون حجم از دیتا رو، که تقریبا ۲۰ میلیون رکورد بود، ببریم روی الستیک. عملیات خیلی سنگینی حساب می‌شد و باید حتما دسته‌ دسته‌شون می‌کردم و طی چند روز توسط کرون‌جاب‌ها انجام می‌شد، چون نمی‌خواستم بار سینگینی روی الستیک باشه و کلی رم و سی‌پی‌یو مصرف کنه. همچنین اندپوینت _bulk توی الستیک، که برای ریختن دسته‌ای دیتاست، گفته‌شده بود که بهتره در لحظه تا یه حد خاصی دیتا از طریقش توی الستیک ریخته بشه و من با تست‌هایی که کردم به این نتیجه رسیدم که ۱۰۰۰ عدد خوبیه و خب برای ۲۰ میلیون رکورد کم بود. با خودم گفتم اول این قسمت رو درست می‌کنم و می‌ذارم به حال خودش تا تموم شه و همزمان کد‌های MySQL رو با کدهای الستیک عوض می‌کنم که دوتا کار با هم تقریبا تموم بشن اما هنوز نمی‌دونستم قراره چه اشتباهاتی بکنم و سر همین‌ها چه بلاهایی سرم بیاد ?‍♂️.با توجه به حجم دیتا، تخمین من این بود که اگر روزی یک میلیون و خورده‌ای دیتا توی الستیک بره، کمتر از دو هفته تموم می‌شه؛ همه هم خوشحال و فلان بودن که چقدر خوب و بالاخره دوران tracker (دیتابیس آمار) به سر میاد. از همون اول که عملیات رو شروع کردم، دونه دونه با باگ‌های یکی از یکی بدتر رو‌به‌رو می‌شدم و مجبور می‌شدم هی بزنم از اول دیتا توی الستیک ریخته‌بشه. یه بار می‌دیدم حواسم به نافرمی بعضی دیتاها نبوده(مثلا فرمت تاریخ چیزی نبود که تو mapping مشخص شده بود) و کرون‌جاب‌ها دارن به ارور می‌خورن. یه بار می‌دیدم حواسم به خطاهای زیرساختی و شبکه‌ای نبوده و ریکوئستی که به سمت الستیک می‌ره ارور می‌ده (که خب تو این مواقع باید جاب از اول اجرا می‌شد). حتی یه سری بخاطر مشکلات زیرساخت و storage دو سه روز عملیات متوقف شد (این یکی دیگه واقعا تقصیر من نبود ?). خلاصه که کاری که می‌گفتم کمتر از دو هفته تموم می‌شه، بعد از یک ماه تموم شد. این وسط، دیتاهای جدید هم تو tracker ریخته می‌شدن هم تو الستیک. بخاطر همین فقط دیتاهایی که تا یک تاریخ خاص بودن (زمانی که مطمئن بودیم دیتایی که تو الستیک هست سالم و درسته) رو سعی می‌کردیم جابجا کنیم، چون از بعد از اون دیگه تو الستیک بود.حالا که همه دیتاها یه جا جمع شده بودن، وقت تست رسید. بچه‌ها شروع کردن به تست کردن و یهو دیدیم اطلاعات با چیزی که توی trackerـه فرق می‌کنه؛ آماری که باید مثلا ۲۰۰ می‌بود، الستیک می‌گفت ۹۰ ?!! اون‌جا بود که من نمی‌دونستم چه خاکی به سرم بزنم و مونده بودم که چیکار باید بکنم. بعد از یک ماه دیتاها ناقصن. با گوگل هم چک کردیم و دیدیم خیلی فرق داره. اون موقع دیگه متوجه‌ شدم که یه چیزی رو خراب کردم. کلی گشتم تا ببینم مشکل از چیه. آمار چندین پست و کاربر رو چک کردم، کدها رو بارها و بارها خوندم و منطقش رو روی کاغذ نوشتم و بررسی کردم تا بتونم مشکل رو پیدا کنم. کلی وقت گذاشتم تا اینکه فهمیدم وقتی داشتم query گرفتن دیتاها از tracker رو ‌می‌نوشتم حواسم به این نبوده که یکی از جدول‌ها رو باید بجای join زدن left join می‌زدم ?‍♂️ چون لزوما برای هر سطر دیتا توی جدول اصلی، تو این جدول دیتا نداشتیم (رابطشون یک به صفر یا یک بود). از ترس اینکه الان اگه علی بفهمه کلی عصبانی می‌شه، با خودم گفتم تا اومد تو، مسخره بازی در میارم تا خنده‌ش بگیره و عصبی نشه برای همین تا اومد تو رفتم زیر میز که یعنی یه کار بدی کردم و خجالت‌زدم ? و این جوری خنده‌اش گرفت و همه چی به خوبی گذشت(البته بنده‌خدا انقدری هم که تو ذهنم خشنه نیست ?، فقط چون ویرگول واسش مهمه، خیلی حرص می‌خوره پیش خودش ولی می‌شه متوجه شد).دوباره عملیات migrate رو از اول شروع کردم و این بار دیگه چون همه باگ‌ها کشف شده ‌بودند، با سرعت بیشتر کار رو انجام دادم. تعداد کرون‌جاب‌ها رو زیاد کردم و تعداد دیتا رو کردم روزی ۳ میلیون. تخمینم ۵ روز بود که واقعا هم ۵ روزه تموم شد(خدارو شکر?‍♂️). صبح که رفتم شرکت، بچه‌ها اومدن و خواستیم دوباره تست کنیم. من دیگه با اعتماد به نفس کامل اومده بودم و می‌دونستم همه چی خوب بوده. تا اینکه یهو علی گفت پست فلان آمارش غلطه. نه در حد ۳ ۴ تا دونه بلکه در حد ۸۰تا ?!!! تو اون لحظه آن چنان استرسی به من وارد شد که داشتم می‌مردم. داشتم به این فکر می‌کردم که چجوری استعفا بدم و خودم دُمم رو بذارم رو کولم و برم ?. با این گندی که زدم دیگه آبرو نموند واسم ?. ولی پیمان که بزنم به تخته (تِق تِق) همیشه تو لحظات بحرانی می‌تونه خوب همه رو جمع کنه و اوضاع رو آروم کنه اومد پیشم و گفت بیا ببینیم چه مشکلی داره که فهمیدیم در واقع مشکلی از طرف کار من نبوده!!!! دیتاهای بازدید که از طرف ربات‌ها بودند، در اوایل کار tracker ثبت می‌شدند و من تو migrate اونا رو نیاوردم، برای همین انقد تفاوت داشت و در اصل کد من خیلی دقیق داشت جواب می‌داد ??اون موقع بود که دیگه از درست بودن آمار الستیک مطمئن شدیم و من یک نفس راحت کشیدم(ولی هیچ وقت استرس اون لحظه رو فراموش نمی‌کنم، خییییللللیییی بد بود?)اینایی که تا الان گفتم مال قسمتی بود که باید دیتای قدیمی رو روی سرویس جدید میاوردیم. ولی چالش‌هایی هم سمت پیاده‌سازی کد داشتیم. یکیش این بود که چیکار کنیم که تا حد ممکن، کسی نتونه آمار غلط ثبت بکنه. اون موقع، یه درسی داشتم به اسم مهندسی فناوری اطلاعات. توش یه مبحثی رو درس می‌دادن به اسم MAC و HMAC که برای اطمینان از صحت پیام هست. از این دو مبحث استفاده کردم و مکانیزمی رو طراحی کردم که همراه هر پیام که برای آمار از سمت کلاینت میاد، یک کد هم فرستاده بشه که سمت سرور چک بشه آیا واقعا این کاربر، این پست رو باز کرده یا نه و خب تا حد ممکن کمک کرد که کسی نتونه آمار غلط ثبت بکنه. خیلی نمی‌تونم دقیق بگم چجوری هست ولی کلی بخوام بگم، یه کدی که فقط خودمون داریم با یه سری اطلاعات هش گرفته می‌شن و برای کاربر فرستاده می‌شه و این هش سمت خودمون ذخیره می‌شه و وقتی ریکوئست میاد سمتمون، با صحتش رو می‌تونیم تا حد خوبی بررسی کنیم.وقتی که سرویس ثبت آمار توی مرحله تست بود، متوجه شدیم حجم زیادی از دیتایی که داره ثبت می‌شه رو ربات‌ها دارن ثبت می‌کنن. یعنی کلی صفحه هست که باز می‌شن، آمار بازدید واسشون ذخیره می‌شه ولی ربات هستن، نه کاربر عادی. تنها چیزی که می‌شد چک کرد، User-Agent بود. با لاگ‌های که ذخیره کردیم، متوجه‌ شدیم که تعداد زیادی از ربات‌ها رو می‌شه با فیلتر کردن کلمه‌هایی مثل bot و crawler و … پیدا کرد اما باز هم، همه ربات‌ها رو نمی‌شد پیدا کرد چون عوض کردن Header که کاری نداره. باید تحلیل رفتاری هم می‌کردیم. متوجه شدیم که خیلی از ربات‌ها، جاوا اسکریپت رو اجرا نمی‌کنن و اینجوری سعی کردیم یه سریشون رو تشخیص بدیم و فیلتر کنیم. البته باز شاید بشه گفت که بعضی از ربات‌ها هنوز از دستمون در می‌رن ولی خب تا حد خوبی اینجوری آمار رو دقیق‌تر کردیم.برای اینکه سرتون رو درد نیارم، یک سری داستان دیگه مونده که تو قسمت بعدی (و پایانی) می‌گم. امیدوارم براتون جالب باشه :)</description>
                <category>تیم فنی ویرگول</category>
                <author>AmirHossein Bahrami</author>
                <pubDate>Wed, 23 Oct 2019 14:59:58 +0330</pubDate>
            </item>
                    <item>
                <title>از ویرگول MySql‌ای به ویرگول ‌Elasticsearchای - قسمت ۱ (سرچ)</title>
                <link>https://virgool.io/virgool/%D8%A7%D8%B2-%D9%88%DB%8C%D8%B1%DA%AF%D9%88%D9%84-mysql%D8%A7%DB%8C-%D8%A8%D9%87-%D9%88%DB%8C%D8%B1%DA%AF%D9%88%D9%84-elasticsearch%D8%A7%DB%8C-%D9%82%D8%B3%D9%85%D8%AA-%DB%B1-%D8%B3%D8%B1%DA%86-ywco6faampjf</link>
                <description>به زور ویرگولی اصلی(بخونید زاخار اصلی?) تصمیم گرفتم روند انتقال سرچ و آمار ویرگول از MySQL به Elasticsearch رو براتون بنویسم و این تجربه‌ای که داشتم رو باهاتون به اشتراک بذارم.قصه از اونجا شروع می‌شه که یک روز بچه‌های ویرگولی(علی، علی، پیمان) گفتن کاش می‌شد سرچ توی ویرگول رو بهتر کنیم و چیزی که الان داریم رو بذاریم کنار چون خیلی داغون و نافرم و بده!! این شد که من، که تازه اسم الستیک به گوشم خورده بود و شنیده بودم توی سرچ متنی خیلی قَویه، پیشنهاد دادم که ببریمش روی الستیک و بچه‌ها هم موافقت کردن. شروع کردم به خوندن مستندهایی که بود و تست کردنش روی لپ‌تاپ خودم. هیچ ایده‌ای نداشتم چجوری باید باشه و هر روز بیشتر می‌خوندم و بیشتر یاد می‌گرفتم و خیلی برام جذاب بود. اما این تازه اول کلی داستان بود?‍♂️.اولین مشکلی که داشتم درست کردن mapping بود. همون‌طور که توی MySQL می‌گیم هر ستون چه ویژگی‌هایی باید داشته‌باشه، توی الستیک هم با mapping اینو مشخص می‌کنیم. با اینکه کلی مستندها رو خوندم، هر چند وقت یه بار مجبور می‌شدم mapping رو عوض کنم چون یه چیز جدید یاد می‌گرفتم یا سرچ به مشکل می‌خورد و می‌فهمیدم مشکل از mapping اشتباهه. مثلا یه سری، هرچی روی timestamp سرچ می‌زدیم، هی غلط جواب می‌داد تا اینکه فهمیدم مشکل از اینجاست که بخش روز رو توی mapping بجای dd گذاشتم DD (امان از کپی‌پیست‌های ندانسته?). هر دفعه هم که یه مشکلی تو mapping پیدا می‌شد، مجبور می‌شدم شب بیدار بمونم که دیتاها رو از MySQL دوباره منتقل کنم به الستیک چون باید دیتاها پاک می‌شدند و دوباره توی الستیک ریخته می‌شدن، و این مسئله بار زیادی داشت و باید هم بین دیتای موجود و دیتای الستیک هماهنگی می‌بود و نیاز بود وقتی این کار رو بکنم که کاربری آنچنان توی سیستم نباشه که دیتای جدید تولید نشه و در کل خیلی بدبختی داشت. ولی خب بالاخره به جایی رسید که این مشکلات حل شدند.یکی دیگه از بدختی‌ها این بود که برای بعضی از fieldهای فارسی، باید یک آنالیزور می‌ذاشتیم تا بشه بهتر سرچ کرد و نیاز به سرچ دقیق نباشه؛ یعنی مثلا فرقی بین فاصله و نیم فاصله یا ی و ي نباشه و چیزی که کاربر سرچ می‌کنه راحت‌تر پیدا بشه. کلی گشتم و یه ریپازیتوری توی گیت‌هاب پیدا کردم. با خیال راحت نصبش کردم و دیدم چقدر خوبه. ولی خب فقط یه مشکل داشت که هنوزم داره، اونم اینکه از نسخه‌های جدید الستیک پشتیبانی نمی‌کنه و صاحبش هم انگار دوست نداره آپدیتش کنه و جواب issueها رو بده? البته الان که دارم این نوشته رو می‌نویسم، فهمیدم چطوری خودم آپدیتش کنم و ازش بیلد بگیرم که بتونیم تو ورژن‌های جدید الستیک ازش استفاده کنیم?.بعد از اینکه دیتاها آماده شدن، رفتم سراغ کد زدن واسه بخش سرچ ویرگول. سعی کردیم با تلفیق آنالیزورهای خود الستیک و اونی که پیدا کرده بودم، یک ضریب خوب برای هر کدوم پیدا کنیم که جواب‌های سرچ بهتر و دقیق‌تر باشن. برای این کار، حالت‌های مختلف رو امتحان کردیم که ببینیم وقتی یک کلمه سرچ می‌شه، بین جواب‌ها، جوابی که آنالیزور فارسی پیدا کرده بالاتر بیاد یا آنالیزوری که پیدا کردم یا آنالیزور انگلیسی.حالا که همه چی درست شده بود، نوبت deploy کردنش روی سرور بود که این خودش داستان بزرگی بود. کلی باید می‌گشتم و مستند می‌خوندم که ببینم بهترین راهش چیه. کلی از deploymentهایی که آدما تو اینترنت گذاشتن رو تست کردم که ببینم کدوم جواب میده. یکی storageش درست وصل نمی‌شد، یکی نمی‌شد روش پلاگین نصب کرد، یکی باگ داشت و … خلاصه که دردسرش زیاد بود تا اینکه بالاخره تونستم راهش بندازم.طی زمان هی مشکلات کد در می‌اومد و برطرفشون می‌کردم و گاها مجبور می‌شدم بخاطر مشکلاتی که سمت آپدیت الستیک از روی Mysql داشتیم(باگ‌های کد و ...) تا نصف شب بیدار بمونم? که بار سیستم کم بشه و دیتای جدید ساخته نشه و بتونم دوباره از نو اطلاعات رو بریزم تو الستیک(reindex). چون هر بار، همونطور که بالاتر گفتم، باید دیتاها پاک می‌شدن و خب سرچ از کار می‌افتاد. حتی یک بار یادم میاد که شب وقتی می‌خواستم reindex کنم، به مشکل خوردیم و نتونستم درستش کنم و به مدت یک روز سرچ از کار افتاده بود و دیتا توش نبود تا اینکه فهمیدیم مشکل از کم بودن پردازنده برای پادهای الستیکه و با زیاد کردنشون مشکلمون حل شد.خوشبختانه توی سرچ مشکلات در همین حد بود. اون موقع این مشکلات واسم خیلی زیاد و بزرگ بنظر میومدن ولی خب وقتی خواستم آمار رو روی الستیک منتقل کنیم، تازه فهمیدم مشکل بزرگ یعنی چی?!! راجع به اون تو قسمت بعدی صحبت می‌کنم.</description>
                <category>تیم فنی ویرگول</category>
                <author>AmirHossein Bahrami</author>
                <pubDate>Sun, 13 Oct 2019 19:35:00 +0330</pubDate>
            </item>
                    <item>
                <title>گرم یادآوری یا نه، من از یادت نمی‌کاهم در استارتاپ‌ها</title>
                <link>https://virgool.io/virgool/%DA%AF%D8%B1%D9%85-%DB%8C%D8%A7%D8%AF%D8%A2%D9%88%D8%B1%DB%8C-%DB%8C%D8%A7-%D9%86%D9%87-%D9%85%D9%86-%D8%A7%D8%B2-%DB%8C%D8%A7%D8%AF%D8%AA-%D9%86%D9%85%DB%8C%DA%A9%D8%A7%D9%87%D9%85-%D8%AF%D8%B1-%D8%A7%D8%B3%D8%AA%D8%A7%D8%B1%D8%AA%D8%A7%D9%BE%D9%87%D8%A7-o6qone0ccund</link>
                <description>شاید از عنوانِ این پست تعجب کرده باشید. اما می‌خوام در مورد یکی از چالش‌های مهمِ ما توی ویرگول - و فکر کنم خیلی از محصولات دیگر - توضیح بدم. اینکه چطور کاربرانی که سرویس شما را ترک کردند را دوباره برگردونید.نزدیک به ۲ سال از شروع به فعالیت ویرگول میگذره. یکی از مواردی که از همان ابتدا تا امروز قسمتی از ذهن ما را به خودش درگیر کرده، کاربرانی هستند که در ویرگول ثبت‌نام کردن و یک یا چند مطلبِ خوب و پربازدید هم متشر کردند ولی به هر دلیل بعد از مدتی دیگر به ویرگول سر نزدند. از ۶ ماه دوم سال ۹۷ هم که با مهدی ناصری تحلیل بر روی داده‌های ویرگول را شروع کردیم این موضوع جدی‌تر از قبل شد و سعی در حلِ آن کردیم.قدم اول - تغییر در فلسفه طراحیتوی صحبت‌هایی که با کاربران مختلفمون داشتیم به نکات جالبی رسیدیم. یک نمونه‌اش اینکه بعضی‌ها متوجه نشده بودند وقتی رنگ نوتیفیکیشن آبی میشه به این معنیه که یک نوتیفیکیشن جدید دارند. بعد از مدتی هم کم کم، به خاطر اینکه اتفاقات جدید را به خوبی بهشون اطلاع نمی‌دادیم علاقه‌شون نسبت به ویرگول کم می‌شد و در نتیجه از فعالیتشون هم کاسته می‌شد و دیگه به ویرگول سر نمی‌زند.همین باعث شد ما، پا روی تفکر مینیمال پرستی بیش از حد خودمون بزاریم و یاد بگیریم مینیمال بودن خوبه، اما وقتی که به اِلمان‌های مهم به قدر کافی بها داده باشیم. برای همین یک دایره که داخلش تعدادِ نوتیفیکیشن‌های جدید در اون مشخصه را به آیکن نوتیفیکیشن اضافه کردیم.این کار باعث شد کاربران خیلی بیشتر در جریان آپدیت‌ها قرار بگیرند و همینطور تعداد کلیک بر روی آیکنِ نوتیفیکیشن هم تا حد جالبی افزایش پیدا کرد. (صدای تشویق)اما ما یک‌سری از نویسندگانِ خوبمون را از دست داده بودیم و این قابلیتِ جدید باز هم تاثیری بر روی وضعیت آن‌ها نداشت. این افراد را می‌تونیم در چند دسته تقسیم بندی کنیم:افرادی که ویرگول را دوست داشتند ولی در آن زمان امکانات ویرگول براشون کافی نبوده.افرادی که به هر دلیل ویرگول را در آن زمان دوست نداشتند یا براشون جذاب نبوده.افرادی که با وجود اینکه ویرگول را دوست داشتند به مرور ویرگول را فراموش کرده بودند.قدم دوم - ایمیل ماهیانهیکی از نکات مثبت ویرگول این است که برخلاف سایر شبکه‌های اجتماعی که هر پست بعد از چند روز زیرِ میلیون‌ها پستِ دیگه مدفون میشه، مطالب ویرگول در گذرِ زمان همچنان بازدید خوبی دارند. همین موضوع باعث شد که ما بتونیم در طول ۴ ماه (دی ۹۷ تا فروردین ۹۸) نسبتا تعداد مناسبی از نویسندگان قدیمی را به شکلی که در ادامه توضیح میدم، دوباره به ویرگول برگردونیم.ما تصمیم به ارسال یک ایمیل بعد از پایان هر ماه گرفتیم تا به هر نویسنده اعلام کنیم مطالبش در ماه گذشته چقدر بازدید داشتند و همچنین چقدر لایک و نظر بر روی آن‌ها ارسال شده تا متوجه بشود فعالیتی که چند ماه پیش داخل ویرگول داشته ولی به آن ادامه نداده هنوز خروجی مثبتی داره.اولین نسخه این ایمیل در ۴ دی ۹۷، برای بازدید‌های ماهِ آذر ارسال شد. همانطور که فکر می‌کردیم بخشی از نویسندگان با دریافت این ایمیل، مجددا به ویرگول برگشتند، در اکانتشون لاگین کردند و حتی شروع به فعالیت مجدد کردند. این ایمیل برای ماه‌های دی و بهمن هم ارسال شد که همچنان تاثیر مناسبی بر روی بازگشتِ نویسندگان قدیمی داشت.ایمیلی که بعد از پایان هر ماه برای نویسندگان ارسال می‌شودچالش ایمیل برای ماهِ اسفنداما اگر می‌خواستیم با همین شیوه، آمار اسفند را هم منتشر کنیم، ایمیل را باید در شلوغ‌ترین زمانِ سال (۴ روز ابتدایی فروردین) ارسال می‌کردیم. در این صورت این ایمیل با توجه به همزمانی با تعطیلات عید نوروز و اینکه ساختارش بعد از ۳ ماه برای نویسندگان تکراری شده بود، اولویت زیادی برای باز شدن نداشت. علاوه بر این نویسنده‌ای که ۳ماه به این ایمیل توجه نکرده بود، احتمالا باز هم توجهی به آن نمی‌کرد. اما مهم‌تر از همه، ما هم یک زمان مناسب برای ساختنِ یک رابطه صمیمی‌تر به مناسبتِ عید نوروز با کاربرانمان را از دست می‌دادیم.نمی‌دونم شما هم با من هم نظر هستید یا نه؛ اما به نظر من تو عید آدم‌ها مهربون‌تر از قبل میشن. پس چرا از این فرصت استفاده نکنیم؟از طرف دیگه یه اعتقادی که خود من دارم اینه که با تمام احترامی که به سرویس‌ها و سایت‌های تبلیغاتی دارم، اما در حال حاضر دوست دارم روشِ مارکتینگ ویرگول چیزی به غیر از تبلیغات در سطح اینترنت و سایت‌های مختلف باشه.به نظر من اگر قرار است هزینه‌ای بابت تبلیغات پرداخت کنیم چه بهتر که این هزینه به شکل مستقیم یا غیرمستقیم به خودِ کاربران و استفاده کنندگان برسه. اگر راه‌کار مناسبی برای این موضوع انتخاب بشه، تاثیر به شدت بیشتری نسبت به تبلیغاتِ معمول میگذاره.یک مثال کوچکبه خاطر علاقه‌ای که شخصا به جیسون فرید و طرز تفکرش دارم، معمولا اتفاقاتِ مربوط به شرکت Basecamp را دنبال می‌کنم. این شرکت یک پلن مارکتینگ خیلی جالب داره؛ به جای اینکه پول بابت تبلیغاتِ گوگل و فیسبوک پرداخت کنند، اگر یک نفر با معرفیِ شما عضو Basecamp بشود و هزینه عضویت را پرداخت کنه، این شرکت به شما که مُعرف اون شخص بودید ۵۰ دلار پول پرداخت می‌کنه.توجه کنید که این ۵۰ دلار به حساب بانکی شما واریز میشه نه اینکه کیف پولتون توی اون سایت شارژ بشه.به این خاطر که مدیرای این شرکت می‌دونن با سرویس کاملی که ساختن مشتری را طی ماه‌های آینده از دست نمیدن؛ پس با خیال راحت پولی که بابت سرویسشون دریافت کردن را به شما میدن. چون می‌دونن که:طی ماه‌های آینده هم شما و هم کسی که معرفیش کردید باز هم همین پول را برای سرویس خوبشون بهشون برمیگردونید.اینجوری یه کمپین تبلیغاتی جالب و نو راه انداختند که همه در موردش صحبت می‌کنند.برگردیم به ویرگول و اینکه ما دنبال این بودیم تا بتونیم به شکل خاصی برای عید نوروز با کاربران تعامل داشته باشیم. از طرف دیگه، سالِ قبل یک تجربه موفق برای ارسال آمار بازدید مطالب کاربران توی عید نوروز داشتیم. به شکلی که ابتدای سال ۹۷ یک عکس برای هر نویسنده تولید کردیم که در آن نشان دادیم مطالبش در سال ۹۶ چند ثانیه خوانده شده‌اند و چقدر سرانه مطالعه کشور را افزایش دادند.در پایین عکس مربوط به آمار خودم را می‌تونید ببینید:آمار نوشته‌های من در سال ۹۶ در ویرگولبا وجود اینکه خروجی این کار موفق بود و توی شبکه اجتماعیِ هدفمون (توئیتر) خیلی خوب به اشتراک گذاشته شد، اما چند اشتباه هم در اون داشتیم.بزرگترینش  این بود که این عکس به اندازه کافی برای هر کاربر شخصی سازی نشده بود. اگر آدرس پروفایل ویرگولم را از این عکس حذف کنیم هیچ المانی که مشخص کنه این عکس اختصاصا برای من درست شده وجود نداره.از طرف دیگه هیچ صفحه‌ی مشخصی در ویرگول برای این کار نساختیم. یعنی کاربر می‌بایست عکس را دانلود می‌کرد و جایی مثل توئیتر به اشتراک می‌گذاشت. احتمال داشت کاربر عکس را داخل شبکه‌های اجتماعیش منتشر کنه. اما اگر در توئیتش لینک سایت را نمی‌نوشت، دنبال کنندگانش سخت می‌تونستن به ویرگول برسند. ما در شبکه‌های اجتماعی آدم‌های عجولی هستیم. اگر لینکی وجود داشته باشه راحت روش کلیک می‌کنیم اما اگر لینک نباشه اکثرا حوصله اینکه بریم و آدرس را پیدا یا تایپ کنیم نداریم. به همین دلیل ما ترافیک قابل توجهی را از دست داده بودیم. مخصوصا ترافیکی که می‌تونست از شبکه‌های اجتماعی مثل توئیتر روی سایت بیان و تاثیر خیلی خوبی روی رنکِ ویرگول بگذارند.در نهایت برای امسال می‌خواستیم پا را از توئیتر هم فراتر بزاریم و روی شبکه‌های اجتماعی دیگر به خصوص لینکدین و اینستاگرام هم خودمون را معرفی کنیم و ورودی مستقیم از این شبکه‌ها بگیریم.همین موضوعات باعث شد ما تجربه سال قبل را این بار با شخصی‌سازی بیشتر و ساخت ویدیو به جای عکس تکرار کنیم. داشتنِ ویدیو خیلی بیشتر از یک عکس به کاربران حس خوب منتقل می‌کنه و از طرف دیگر ما هم بهتر می‌تونیم جایگاهِ مهمی که هر کدام از کاربرانمون برامون دارند را بهشون نشون بدیم.ویدیوی من را می‌تونید ببینید: https://cdn.virgool.io/annual-report-97/frrp47502kst-IByO.mp4 همین شد که برای هر نویسنده یک ویدیو ایجاد کردیم که در آن به اندازه کافی این حسِ شخصی بودن را متمایز ساختیم.برای اینکه هر کاربر بتونه به سادگی آمار خودش را با بقیه به اشتراک بگذاره یک صفحه اختصاصی (مثل این) برای هر کاربر ساختیم و هرکس می‌تونست با یک کلیک ویدیوی خودش را در توئیتر و لینکدین منتشر کنه یا اون را دانلود کنه و در اینستاگرام یا هرجای دیگه استفاده کنه.نتیجه کمپینما حدس می‌زدیم که خروجی این کمپین خوب باشه اما راستش نتیجه خیلی بیشتر از انتظارمون بود؛ که این لطف کاربران به ویرگول را نشان میده. این ویدیوها در تعطیلات عید منتشر شد. تا قبل از انتشار ویدیوها، تعطیلات باعث شده بود که آمار بازدید روزانه با کاهش مواجه بشه که این یه موضوع عادی در چنین ایامی برای ما است اما به محض انتشار ویدیوها همه چیز تغییر کرد. کاربرانی که این ویدیو به دستشان رسید، آن را دوست داشتند و آن‌را در شبکه‌های اجتماعی خود منتشر کردند و باعث شد کاربران زیادی با لینک مستقیم یا غیر مستقیم وارد ویرگول بشوند.خروجی کمپین چی شد؟هنوز خیلی زوده تا بتونیم خروجی این کمپین را اندازه گیری کنیم. اما تا این لحظه که نزدیک به ۳ هفته از انتشارِ این ویدیوها گذشته، خیلی از نویسندگانی که تبدیل به نویسنده غیرفعال شده بودند باز هم به ویرگول برگشتند. نرخِ رشدِ نویسندگان جدیدمان هم به نسبت بقیه ماه‌ها با افزایش قابل توجهی مواجه شد که نشان داد این ویدیوها همانقدر که برای صاحبانشان جذاب بود، برای افرادی که تا امروز عضو ویرگول نبودند هم جذاب بوده و باعث شده عضو ویرگول شوند.از طرف دیگر، بعد از انتشار ویدیوها، بازدیدهای ویرگول حدود ۶۰٪ به نسبت بازه زمانی قبل از عید افزایش داشت که اگر شما عضو یک کسب و کار نوپا باشید می‌دونید که این مقدار رشد در طولِ تعطیلات چقدر بزرگ و ارزشمند است و همچنان که ۳ هفته از انتشار این ویدیوها می‌گذرد این رشد ادامه دارد.برای اینکه این ویدیوها ساخته بشه و به دست شما برسه ۲ تیم خیلی به ما کمک کردند. بچه‌های تیم زیرساختِ کافه بازار که بستر انتشار این ویدیوها را در اختیار ما قرار دادند و تیم رَشا که زحمت تولید این ویدیوها را کشیدند.که خیلی ازشون ممنونم.کار ما هنوز تمام نشدهاگر فرض کنیم که - در حال حاضر - تمام فارسی زبانان می‌تونن کاربر ویرگول باشن یعنی اینکه ما در بهترین حالت و اگر همه این افراد دسترسی به اینترنت داشته باشند، می‌توانیم ۱۱۰ میلیون کاربر داشته باشیم (منبع) و هر کاربری که از دست بدهیم قسمتی از وجودمان را از دست خواهیم داد. پس باید تمام تلاشمان را برای بازگشت کاربرانی که پیش از این ارزشی برای ویرگول ایجاد کرده‌اند انجام دهیم.در نهایت خواستم بگم ما - هنوز - توی ویرگول چیزی به عنوان عمر مشتری و مشتری از دست رفته نداریم. امسال با این ویدیو تمام تلاش خودمون را کردیم تا کاربرانی که ما را فراموش کرده بوند را مجددا جذب کنیم. اگر باز هم فردی بود که برنگشت، دفعه بعدی تلاشِ بیشتری می‌کنیم.حرف آخردر شبکه‌های اجتماعی، کاربران از ما بابت این ویدیو تشکر کردند، اما در حقیقت من به نمایندگی از همه تیم ویرگول از شما ممنونم که با حضورتون باعث شدید آن چیزی که در ذهنمان بود را انجام بدهیم.</description>
                <category>تیم فنی ویرگول</category>
                <author>علی آجودانیان</author>
                <pubDate>Sun, 14 Apr 2019 17:27:46 +0430</pubDate>
            </item>
            </channel>
</rss>