<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های حسین محمدی پور</title>
        <link>https://virgool.io/feed/@HosseinDotLink</link>
        <description>برنامه نویس سمت سرور - اغلب نودجی‌اس || https://hossein.link</description>
        <language>fa</language>
        <pubDate>2026-04-15 02:57:22</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/758532/avatar/avatar.png?height=120&amp;width=120</url>
            <title>حسین محمدی پور</title>
            <link>https://virgool.io/@HosseinDotLink</link>
        </image>

                    <item>
                <title>رزومه خوب برای جاب آفر گرفتن</title>
                <link>https://virgool.io/@HosseinDotLink/%D8%B1%D8%B2%D9%88%D9%85%D9%87-%D8%AE%D9%88%D8%A8-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AC%D8%A7%D8%A8-%D8%A2%D9%81%D8%B1-%DA%AF%D8%B1%D9%81%D8%AA%D9%86-ha9udvxo8xsp</link>
                <description>سلام ::)قبل هر چیزی میخوام بگم این پست پویا می‌مونه و آپدیتش خواهم کرد. فقط کافیه اگه نکته‌ای می‌بینید که مهمه و من فراموش کردم بهم بگید تا اضافه کنم.پ.ن ۱: ممکنه این توضیحات به درد گرفتن پیشنهاد شغلی از شرکت های داخلی هم بخوره.توصیه من اینه قبل از شروع کردن به خوندن این مطلب ویدئوهای جیمی عزیز رو از لینک زیر در این باره حتما ببینید: (هر دو به زبان فارسی هستند)https://youtu.be/Gt2AQG-u8xMhttps://youtu.be/HfEvIuUvF2Qمیریم سراغ اصل رزومهپیش از هر چیزی باید بدونید اصلا هدف از رزومه چیه؟هدف اصلی رزومه متقاعد کردن یک سازمان به اینه که شما را برای یک مصاحبه دعوت کنه.پس برای این موضوع باید به این نکته‌ها توجه کنید:۱-  خوانا و دقیق باشه۲- قابل بررسی توسط سیستم های ATS باشه (می‌دونم کلمه ATS خودش داخلش سیستم داره، کلمه بهتری پیدا نکردم)۳- محوریت داشته باشه۴- بر پایه حقیقت باشه۵- رقابتی باشه۶- عاری از هر نکته منفی درباره شما، کشور یا شرکت ها و... باشه۷- برای نوشتن رزومتون وقت بذارید۱-  خوانا و دقیق باشهرزومه از دید من یک سند کاملا رسمی از تجربیات شماست. یک سند رسمی نیاز به طراحی عجیب و استفاده از رنگ‌های مختلف و... نداره.پس سعی کنید از رنگ یک دست سفید برای پس زمینه و از طیف تیره در رنگ خاکستری تا مشکی برای نوشته ها استفاده کنید.سایز و نوع فونت هم باید استاندارد و قابل خواندن باشه (هیچگونه فونت فانتزی استفاده نکنیییییدددددد!)همه این‌ها به این دلیله که در نگاه اول رزومه شما چشم خواننده رو اذیت نکنه یا از روی تجربیات شما منحرف نکنه و پس از اون اگه رزومه شما رو پرینت گرفتند بعدش ازش به عنوان پرینت گرفتن یک رزومه دیگه پشت اون برگه استفاده نکنند. (پس از پرینت ناخوانا نشه)توصیه من اینه از نمونه های موجود overleaf استفاده کنید یا حداقل سرچ کنید ATS friendly resume template تا نتایجی که امتحانشون رو پس دادند رو به دست بیارید.تایتل رزومه شما باید با تایتل آگهی شغلی متناسب باشه.اگه رزومتون بیشتر از دو صفحه بشه از خواناییش کم میشه!۲- قابل بررسی توسط سیستم های ATS باشهاکثر شرکت‌ها از این سیستم ها استفاده نمی‌کنند ولی بازم باید حواستون به این نکته باشه (مخصوصا اگه از وبسایت‌هایی مثل لینکدین، گلس‌دور و... اپلای می‌کنید)به طور خلاصه این سیستم ها اطلاعات موجود در رزومه شما رو استخراج می‌کنند و گاها با مقادیری که کارفرما تعیین کرده مقایسه می‌کنند و اگر شما اون ویژگی‌ها رو داشتید به کاندیدای مناسب اون شرکت اضافه می‌شید.پ.ن ۲: فراموش نکنید قبل نوشتن رزومه برید و چندین آگهی شغلی مربوط به فیلد کاری خودتون رو بررسی دقیق کنید تا متوجه بشید چه چیزهایی برای کارفرماها اولویت بالایی دارند.در چنین شرایطی اگر رزومه شما قابلیت استخراج درست اطلاعات رو نداشته باشه یا اطلاعات اشتباه خونده بشن شما جزء نفرات حذف شده خواهید بود.موضوع متناسب بودن تایتل شغلی اینجا هم تاثیر داره.۳- محوریت داشته باشهرزومه شما برای یک فیلد شغلی مناسبه نه هر شغلی که رسید. پس لطفا و خواهشا از نوشتن تجربیات بی ربط اجتناب کنید. از شاخه به شاخه دیگه‌ای پریدن به هیچ عنوان فاکتور مثبتی به شمار نمیاد.۴- بر پایه حقیقت باشهدیگه مشخصه. اگه دروغ بگید و بعدا لو بره که دروغ گفتید همونجا شما رو رد می‌کنن.۵- رقابتی باشهاین موضوع جای بحث و تفکر زیادی داره (با خودتون). اولا، همه کسانی که برای این آگهی اپلای کردن متخصص اون فیلد هستند یا حداقل بیان کردن که در اون کار متخصصن. پس شما باید ثابت کنید بهترین گزینه شما هستید (از اون مدلا که طرف با خودش بگه آهاااا این همونه که ما میخواستیم).برای این کار باید به یاد داشته باشید که همه نکات مهمی که توی آگهی گفته شده رو باید داشته باشید توی رزومه. چون اکثر وقتا رزومه توسط تیم HR (یا تیم‌های مشابه) بررسی میشه و اونا دانش فنی در خصوص این فیلد کاری شما رو ندارن، پس فقط دنبال کلید واژه‌های مربوط که تیم فنی اعلام کرده می‌گردن.نکته بعدی شیوه نگارش رزومه است. به هییییچ عنوان فقط ننویسید اینجا کار کردم و این پروژه رو داشتم. همه همین رو می‌نویسن. به صورت کاملا حرفه‌ای با عدد و رقم تاثیرات خودتون رو بیان کنید. مثلا این کار من باعث شد پرفورمنس فلان سیستم بهبود پیدا کنه. یا انقدر گردش مالی شرکت رو بالا برد.در نوشتن تجربیاتتون نشون بدید که در چه ابعاد تیمی کار کردید و بروز بدید که تیم وورک مناسبی داشتین (اگه یکه تاز میدان بودید به درد شرکت‌ها نخواهید خورد، شما مناسب فریلنسری هستید)تجربیاتتون باید دقیق و بدون ابهام باشه. طوری نباشه که شروع پایان کار، سمت شغلی یا شرکتی که در اون کار میکردید مشخص نباشه. (به طور خلاصه ذره ای ابهام توی ذهن خواننده باقی نگذارید)۶- عاری از هر نکته منفی درباره شما، کشور یا شرکت ها و... باشهمنفی گفتن از تجربیات گذشته شما رو ضعیف نشون می‌ده و ثابت کردن اینکه شما هییییچ نقشی در این منفی بودن ندارید تقریبا غیر ممکنه (شما بخشی از گذشته تون بودید). پس لطفا فقط زیبایی ها رو بگید و تاثیر شما توی زیباتر شدن همه چیز. ::)۷- برای نوشتن رزومتون وقت بذاریدچندین رزومه که موفق شده رو بخونید. بررسی کنید و نکته برداری کنید. غلط املایی و گرامری نداشته باشید خواهشااااااا (اگه انگلیسی می‌نویسید وبسایت های grammarly و wordtune رو حتما بررسی کنید)قوانین و عرف کشور هدفتون رو در رزومه نویسی بررسی کنید. (توی بسیاری از کشور‌ها عکس و جنسیت و ملیت و... نوشتن مناسب نیست و نتیجه منفی داره)اگه به هر دلیلی تصمیم به قرار دادن عکس روی رزومتون داشتید، لطفا عکس رسمی بذارید نه یه سلفی که شاید کراپ شده از بغل کله دوستتون باشه.رزومتون یه معرفی کوتاه از خودتون داشته باشه (اینجا باید بهترین خودتون رو نشون بدید از همه نظر، چون اولین قسمت و شاید تنها قسمتی باشه از رزومه شما که در بررسی اولیه خونده میشه).هر مورد یا کلمه ای توی رزومه شما که نشون دهنده تبعیض جنسیتی یا نژادی یا هر نوع دیگه ای باشه منجر به حذفتون میشه. حتی کلمه ساده‌ای مثل Sir.نوشتن تحصیلات در اکثر آگهی‌های شغلی هیچ تاثیری نداره و نکته مثبتی نیست ولی اگه فضای خالی دارید براش بنویسید.سن و جنسیت هم که دیگه کلا مهم نیست.در پایان اینو یادتون باشه، حتما بهترین رزومه شغل رو نمی‌گیره (حتی شاید بدترین هم تونست جاب آفر بگیره) ولی حتما بهترین رزومه شانس بیشتری برای گرفتن این پیشنهاد شغلی داره!من تلاش می‌کنم این داکیومنت رو آپدیت کنم همیشه. لطفا شما هم با کامنت گذاشتن من رو در این مسیر همراهی کنید.سرزنده و پیروز باشین،حسین.</description>
                <category>حسین محمدی پور</category>
                <author>حسین محمدی پور</author>
                <pubDate>Wed, 22 Jun 2022 22:52:53 +0430</pubDate>
            </item>
                    <item>
                <title>غلط می‌کنی بگی من لیاقتت رو ندارم!</title>
                <link>https://virgool.io/@HosseinDotLink/%D8%BA%D9%84%D8%B7-%D9%85%DB%8C-%DA%A9%D9%86%DB%8C-%D8%A8%DA%AF%DB%8C-%D9%85%D9%86-%D9%84%DB%8C%D8%A7%D9%82%D8%AA%D8%AA-%D8%B1%D9%88-%D9%86%D8%AF%D8%A7%D8%B1%D9%85-bczcilzggfff</link>
                <description>این رو که الان دارم می‌نویسم از چیزهایی بوده که همیشه می‌خواستم بگم ولی از گفتنش در رفتم چون کلام خوبی نداره و الان شروع می‌کنم به نوشتنش.داستان از این قراره که تو شبکه‌های اجتماعی و حتی بین روابط دوستانم زیاد دیدم که وسط یه رابطه به هزار دلیل شر و ور ول می‌کنن میرن. با این جمله که من لیاقت تو رو ندارم یا تو بدون من خوشحال تری یا حتی خوشبخت تر.اول اینکه برادر یا خواهر گرامی، شما بیجا می‌کنی جای بقیه نظر میدی، تو اصلا حق این موضوع رو نداری...دوما اینکه می‌ریم سراغ خودت. تو که نمی‌تونستی خوشبخت کنی غلط کردی اومدی! حالا که اومدی وظیفته خوشبخت کنی. مگه مردم مسخره شمان که امروز هزار تا قول خوشبختی می‌دین که مخ بزنین بعد یهو هیچی به هیچی.و اما چرا اینو گفتم. چون جامعه آدم عوضی زیاد داره! به خودتون بیاین و دنیارو جای گه‌تری نکنید.اگه امروز چنین حرفی زدی یا تصمیم اینجوری گرفتی. یکم چفت کن و سعی کن قوی تر قدم برداری تا هم خنده‌هاتون بیشتر شه هم خوشبخت‌تر شین.اگه نظرتون متفاوته خوشحال میشم این پایین در موردش بیشتر صحبت کنیم ::)پایان.تندگویی های من،حسین.</description>
                <category>حسین محمدی پور</category>
                <author>حسین محمدی پور</author>
                <pubDate>Wed, 26 Jan 2022 22:05:46 +0330</pubDate>
            </item>
                    <item>
                <title>دسته جمعی از فیلترنت رد شین</title>
                <link>https://virgool.io/@HosseinDotLink/%D8%AF%D8%B3%D8%AA%D9%87-%D8%AC%D9%85%D8%B9%DB%8C-%D8%A7%D8%B2-%D9%81%DB%8C%D9%84%D8%AA%D8%B1%D9%86%D8%AA-%D8%B1%D8%AF-%D8%B4%DB%8C%D9%86-zozmibrrdxro</link>
                <description>سلام!در راستای فیلتر شدن vpn ها و وصل نشدنشون و دردسراش میخوام تو این رشتو آموزش راه اندازی وی پی ان سرور اختصاصی بدم. خیلی کوتاه و فشرده. پس ارسال کنین برای بقیه تا دور هم خوشحال و خندون باشیم.نکته: آموزش برای wireGuard و openVPN هست و بهتره به گروهای چند نفره تقسیم شین که ارزون در بیاد براتون1- اول از همه میرین یه vps خارجی میگیرید. یه سری سایتا قیمتاشون خوبه. مثلا من خودم آلمان بلوسرور میگیرم برای همه کارام (blueserver.ir).2- برای راه اندازی کافیه دستور زیر رو توی ترمینال سرورتون وارد کنیدنکته: هر دو تا لازم نیست. یکیش کافیه.وایرگارد: wget https://git.io/wireguard -O http://wireguard-install.sh &amp;&amp; bash http://wireguard-install.sh اوپن وی پی ان: wget https://git.io/vpn -O http://openvpn-install.sh &amp;&amp; bash http://openvpn-install.sh3- به ترتیب میتونید کاستومایز شده انتخاب کنید هر گزینه رو یا تند تند اینتر بزنین هر مرحله رو چون به صورت دیفالت خودش کانفیگ خوبی رو در نظر میگیره و بعد فایل کانفیگی که بهتون میده رو بدید به کلاینتش روی سیستم یا موبایلتون و از اینترنت بدون فیلتر لذت ببرید.نکته: سرچ کنید راحت کلاینتاش پیدا میشن تو گوگل پلی و اپ استور و...4- اگه توضیحات دقیق تر و بهتر خواستید هم میتونید لینک گیتهاب این پروژه هارو دنبال کنید و بهشون ستاره بدید.https://github.com/Nyr/wireguard-install&lt;br/&gt;https://github.com/Nyr/openvpn-install5- همچنین اگه حوصله داشتید میتونید خودتون دستی کانفیگ کنیدشون که کار سختی نیستن اما این ها سریع تر و مناسبن.نکته: برای هر کلاینت یه فایل کانفیگ جداگانه بسازید تا افت سرعت و کانفلیکت نداشته باشین!  (برای ساخت کلاینت جدید کافیه دوباره اجرا کنید همون فایل رو)موفق باشید!</description>
                <category>حسین محمدی پور</category>
                <author>حسین محمدی پور</author>
                <pubDate>Wed, 19 Jan 2022 16:55:18 +0330</pubDate>
            </item>
                    <item>
                <title>اسم انگلیسی نزدیک به اسم خودمون با جاوااسکریپت و الگوریتم  جارو-وینکلر (jaro-winkler)</title>
                <link>https://virgool.io/coderlife/%D8%A7%D8%B3%D9%85-%D8%A7%D9%86%DA%AF%D9%84%DB%8C%D8%B3%DB%8C-%D9%86%D8%B2%D8%AF%DB%8C%DA%A9-%D8%A8%D9%87-%D8%A7%D8%B3%D9%85-%D8%AE%D9%88%D8%AF%D9%85%D9%88%D9%86-%D8%A8%D8%A7-%D8%AC%D8%A7%D9%88%D8%A7%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D9%88-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D8%AC%D8%A7%D8%B1%D9%88-%D9%88%DB%8C%D9%86%DA%A9%D9%84%D8%B1-jaro-winkler-aybuosoqw2ek</link>
                <description>سلام به همگی.چند مدته یه تعداد زیادی از توییت های تایملاین من شده بود مربوط به مهاجرت و خب اکثر دوستایی که دارم (مخصوصا اگه اسم عربی داشته باشن) میان میگن یه اسم انگلیسی که به اسم من شبیه باشه رو بگین. بخوام مثال بزنم اینطوری میشه که اونی که اسمش مهدی بود خب اسم متیو رو برای خودش انتخاب کرد.حالا من داشتم فکر میکردم یه چیزی سر هم کنیم که بشه راحت تر به نتیجه رسید.(اینجا سر هم شده اش قابل مشاهده است) هم با هم یاد بگیریم.memegenerator.netبع :  خب، برای پیدا کردن این اسامی ما نیاز به یک مجموعه بزرگ از اسامی انگلیسی داریم من با یه سرچ کوتاه به این منبع رسیدم (usna.edu) که حدودا ۱۸ هزار تا اسم داخلش هست. پس برای استفاده شون هم کافی بود اونارو از فایل txt که بهمون میده بخونیم. پس:const fs = require(&#039;fs&#039;);   
const path = require(&#039;path&#039;);      
 const names = fs.readFileSync(path.join(__dirname, &#039;names.txt&#039;), &#039;utf8&#039;).split(&#039;\n&#039;);تا اینجا ما تونستیم تمامی این اسامی رو بخونیم و اسپلیت شده به صورت آرایه توی متغیر names داشته باشیم.حالا کاری که ما میخوایم انجام بدیم پیدا کردن فاصله بین این اسامی هستش. یعنی مثلا ali با alis چقدر فاصله دارن (این فاصله از نظر معنایی نیست) اگه ما بتونیم کلماتی با شباهت بالا بهشون رو پیدا کنیم اینطوری میتونیم توی انتخابمون دقیق تر باشیم. برای این کار من شروع به جست و جو کردم و با الگوریتم jaro-winkler آشنا شدم. آقا جارو در حقیقت یه الگوریتمی رو برای محاسبه این فاصله ها در سال ۱۹۸۹ مطرح کرده که یک سال بعدش آقای وینکلر اون رو بهبود بخشیده و نتیجه بهتر و دقیق تری گرفته. و چون موضوع بحث ما در رابطه با چگونگی این الگوریتم نیست شمارو به ویکی‌پدیا ارجاع میدم.خوشبختانه این الگوریتم پکیج خوبی توی npm داشتم و ما از همون استفاده خواهیم کرد ::). برای این کار کافیه پکیج jaro-winkler رو نصب کنین و با یه حلقه فاصله اسم مورد نظرتون با همه اسم های بسنجین بعد از اون این مقادیر رو sort میکنیم و بر اساس میزان شباهتشون به کاربر ارائه میدیم. حالا به شکل زیر کد بالا رو تکمیل کنید:const distance = require(&#039;jaro-winkler&#039;);  
 const fs = require(&#039;fs&#039;);  
 const path = require(&#039;path&#039;);       
const names = fs.readFileSync(path.join(__dirname, &#039;names.txt&#039;), &#039;utf8&#039;).split(&#039;\n&#039;);       
const similarity = (yourName, percent) =&gt; {    
    return (names.map(name =&gt; {    
        const distancePercent = distance(yourName, name);   
         if (distancePercent &gt; Number(percent)/100) {    
            return {
                   name,
                  percent: distancePercent
           }} })).filter(Boolean).sort((a, b) =&gt; b.percent - a.percent);   
    };
console.log(similarity(&#039;hossein&#039;, 80));این کد توی گیت هاب در دسترستون هست و خوشحال میشم اگه مفید بود بهش ستاره بدین ::)</description>
                <category>حسین محمدی پور</category>
                <author>حسین محمدی پور</author>
                <pubDate>Mon, 27 Sep 2021 08:53:00 +0330</pubDate>
            </item>
                    <item>
                <title>نکته بکند: درخواست زیاده ولی تو دیتابیس گلوگاه داریم!</title>
                <link>https://virgool.io/@HosseinDotLink/%D9%86%DA%A9%D8%AA%D9%87-%D8%A8%DA%A9%D9%86%D8%AF-%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA-%D8%B2%DB%8C%D8%A7%D8%AF%D9%87-%D9%88%D9%84%DB%8C-%D8%AA%D9%88-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%DA%AF%D9%84%D9%88%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%B1%DB%8C%D9%85-dq9cehurblyp</link>
                <description>خیلی کوتاه و خلاصه میگم:در صورتی که شما یک سرویس داشته باشین که به طور مثال ۲۰۰۰۰۰ درخواست در ثانیه داره ولی پایگاه داده شما فقط ۱۰۰ درخواست در ثانیه جواب میده و درخواست این کاربران هم فقط اضافه کردن به دیتابیسه، طبیعتا کار معقولی نیست که کاربر رو منتظر نگه داریم (چرا که خیلی وقت ها تایم اوت هم ممکنه بشه درخواست ها) تا درخواستش انجام شه و یک ریسپانس ۲۰۰ برگرده بهش!کافیه دیتاهامون رو روی ردیس کش کنیم و یه ریسپانس برگردونیم بعدش کم کم بگیریم این داده های کش شده رو ذخیره کنیم.این نکته کوچیک ممکنه باعث شه چند روز مثل من ذهنتون درگیر نباشه!موفق باشید.حسین.</description>
                <category>حسین محمدی پور</category>
                <author>حسین محمدی پور</author>
                <pubDate>Thu, 03 Jun 2021 12:21:24 +0430</pubDate>
            </item>
                    <item>
                <title>آنچه پس از اقدام به خودکشی رخ می دهد و باید از قبل بدانید</title>
                <link>https://virgool.io/@HosseinDotLink/%D8%A2%D9%86%DA%86%D9%87-%D9%BE%D8%B3-%D8%A7%D8%B2-%D8%A7%D9%82%D8%AF%D8%A7%D9%85-%D8%A8%D9%87-%D8%AE%D9%88%D8%AF%DA%A9%D8%B4%DB%8C-%D8%B1%D8%AE-%D9%85%DB%8C-%D8%AF%D9%87%D8%AF-%D9%88-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A7%D8%B2-%D9%82%D8%A8%D9%84-%D8%A8%D8%AF%D8%A7%D9%86%DB%8C%D8%AF-ehqgoupzva65</link>
                <description>سلامشاید تایتل خیلی جنایی به نظر بیاد ولی میخوام یه تجربه شخصی رو در این زمینه باهاتون در میون بذارمقضیه از اونجا شروع میشه، زمانی که من در اوایل دوره جوانی خودم بودم یعنی حدود ۶ سال پیش به دلایل مختلفی از جمله بی اهمیتی نسبت به شرایط و افسردگی اقدام به خودکشی کردم. که تا موفقیت آمیز بودنش راهی نمونده بود اما خوشبختانه بعد از یک هفته کما دوباره به زندگی برگشتم.آخرین لحظه ای که این کار رو میکنید یه سری حوادث پشت سر هم باعث میشه شما با تمام وجود فکر کنید کاش نشه! وقتی آخرین قدمتون رو برمیدارین! دیگه راهی نیست که برگردین مگه دست روزگار برتون گردونه. میخوام دقیقا همون آخرین لحظه رو براتون خیلی خلاصه توصیف کنم با بررسی شرایط مختلف تا توی تصمیمتون شاید تغییری ایجاد بشه.ببینید چند تا حالت داریم (من خودم به هیچ عنوان آدم مذهبی نیستم و هیچگونه تفکر مذهبی ندارم ولی شرایط رو با هم بررسی میکنیم):۱- با توجه به اینکه اکثریت جامعه ای که این متن رو میخونن مسلمونن یا به عقاید اسلامی گرفتارن اول این نکته رو بررسی میکنیم: در عقاید اسلامی و دینی خودکشی رو بدترین گناه میدونن به خاطر قتل نفس بودنش یعنی اینکه شما یک نفر رو کشتی و مهم نیس که خودتی اون یک نفر یا نه، مهم اینه که اون یه نفر مرده. حالا چرا بدتر از قتل معمولیه؟ چون شاید تو قتل معمولی تو فرصت جبران یا قصاص داشته باشی ولی توی خودکشی به هیچ عنوان این چنین شرایطی برات تعریف نشده. پس بدون شک خودتون رو برای مجازات بدترین گناه آماده کنید و اگه این دنیا شرایط سختی داشتین اون دنیا شرایط خیلی سخت تری منتظرتونه که مطمئن نیستم راه فراری براش پیدا بشه.۲− گفتم اون دنیا باید بگم برای این مسئله هم دو تا وضعیت بیشتر نیست یا جهان پس از مرگی وجود داره یا نداره. اگه داره (خارج از محاکمه و شرایط تعریف شده ادیان در خصوص جهان پس از مرگ) باید بگم با توجه به مشخص نبودن اون به صورت قطعی شما زندگی خودتون رو کلا از دست دادین. خب اگه زندگی پس از مرگی نباشه که پدرتون در اومده دیگه، کلی شانس باحال اینجا داشتی که همشو به فنا دادی، دیگه هیچوقت لذت دوباره بوسیدن عشقتونو، خندیدنای بچتونو، راه رفتن روی ماسه های گرم یا حتی استرس مبارزتونو نخواهید چشید و همش دود میشه میره هوا. اگه وجود هم داشته باشه شما نباید با این منطق که شام خوشمزه ای داریم از صب هیچ غذایی نخوری و امیدوار باشی که به شام برسی (و این برای وقتیه که اگههههههه شام هم خوشمزه باشه اصن دیدی شام برات کاه و یونجه آوردن کسی چه میدونه).۳- آسیبیه که به اطرافیانتون میزنین. من به چشم خودم از بین رفتن اطرافیان کسانی که اقدام به خودکشی کردن رو دیدم. ببخشید رک میگم ها ولی شما تک تک لحظه های آینده زندگی اون ها رو به گه میکشین. به هیچ عنوان بعد این اتفاق اون ها روز خوشی به خودشون نمیبینن. نزدیکان کسایی که خودکشی میکنن از کسایی که به هر علتی فوت میکنن آسیب بیشتری میبینن چون مقصر فوت یک نفر مشخصه ولی برای خودکشی یک نفر همه خودشون رو مقصر میدونن.پس ازتون خواهش میکنم قبل این اتفاق یه بار دیگه به همه روز های خوشتون فکر کنید. به تمام لحظاتی که ته دلتون مونده. به کارهایی که برای انجامش انگیزه داشتین (حتی اگه شروع نشده) به زیر پا گذاشتن قوانین مسخره و به اتفاقی که برای خونواده و نزدیکاتون میفته. بعد تصمیم بگیرید چون احتمال اینکه تیرتون خطا بره خیلی کمه. خیلی خیلی کم.اگه شما هم تجربه ای داشتین که به این جریان کمک میکنه خوشحال میشم همین زیر به اشتراک بذارید.ضمنا من روانشناس نیستم و هیچ تخصصی در این زمینه ها ندارم فقط الان خواستم تجربمو بگم براتون.منی که اون زمان خودکشی کردم الان یک نامزد فوق العاده به همراه شغل عالی دارم و رفیقایی که میتونم هر لحظه به بودنشون مطمئن باشم + یک خانواده همراه.کاری کنیم دنیا جای بهتری برای زندگیمون بشه!پیروز باشید ❤️</description>
                <category>حسین محمدی پور</category>
                <author>حسین محمدی پور</author>
                <pubDate>Mon, 17 May 2021 15:05:54 +0430</pubDate>
            </item>
                    <item>
                <title>اتفاق عجیب در API مجنتو Magento</title>
                <link>https://virgool.io/@HosseinDotLink/%D8%A7%D8%AA%D9%81%D8%A7%D9%82-%D8%B9%D8%AC%DB%8C%D8%A8-%D8%AF%D8%B1-api-%D9%85%DA%AF%D9%86%D8%AA%D9%88-bfihv4qxgafu</link>
                <description>کوتاه اما وحشتناک!همونطور که اطلاع دارید (یا الان اطلاع پیدا میکنید دیگه) مجنتو بزرگترین و معروف ترین فروشگاه ساز دنیاس، من چند روزی هست دارم باهاش کار میکنم برای نوشتن یک سرویس روی اون، اتفاقی که شاهدش بودم اینه:شما برای هر گونه ریکوئست زدنی (تقریبا ۹۰٪ درخواست ها) باید یه Bearer توکن ادمین داشته باشید که توی هدر ارسال میشه، تا اینجاش مسئله ای نیست و فکر میکنین یه توکنه که از پنل سایت میگیریم دیگه ولی اینطور نیس و شما باید یوزر و پسورد ادمین رو قاچاقی ذخیره کنید و هر دفعه یه ریکوئست بدید تا بهتون اون توکن رو بده ::)))))))))))))))))))))))))))))))))کلا مجنتو تجربه کاری خوبی به من نداد از نصبش تا راه اندازی و سرویس نوشتنش و مشکلات زیادی داره به نظرم اما خب معروف ترینه توی جهان.دوست داشتید از تجربتون در مورد مجنتو یا اتفاقات مشابه برام همین زیر بنویسید تا ما تکرار نکنیم این کارارو توی اپ هایی که میسازیم!</description>
                <category>حسین محمدی پور</category>
                <author>حسین محمدی پور</author>
                <pubDate>Sat, 01 May 2021 13:04:56 +0430</pubDate>
            </item>
                    <item>
                <title>وقتی api نداره، api میسازیم! (nodeJS - cheerio)</title>
                <link>https://virgool.io/CodeLovers/%D9%88%D9%82%D8%AA%DB%8C-api-%D9%86%D8%AF%D8%A7%D8%B1%D9%87-api-%D9%85%DB%8C%D8%B3%D8%A7%D8%B2%DB%8C%D9%85-nodejs-cheerio-ozirg5rqhw5y</link>
                <description>استخراج داده از صفحات وب یا web scrapingخب. به عنوان اولین پست میخواستم از خود ویرگول شروع کنم. چون ای پی آیی که لازم داشتم ازش رو پیدا نکردمتصمیم گرفتم بسازمش و مراحل ساخت رو با شما به اشتراک بذارم.خب ابزارایی که لازم داریم رو نصب میکنیمnpm install express cheerio axios --saveخب پیش از هر چیزی نیازه که سرورمون راه بیفته، برای این کار از express استفاده میکنیم.const express = require(&amp;quotexpress&amp;quot); 
const app = express(); 
// روتینگ و ادامه ماجرا اینجا قرار میگیره 
app.listen(3000, () =&gt; console.log(&amp;quotServer run at port 3000&amp;quot));حالا کافیه مشخص کنیم که تو چه آدرسی چه چیزی قرار بگیره فرض کنید ما میخوایم توی localhost:3000 مشخصات کاربر رو به صورت JSON بگیریم و در localhost:3000/activity پست هایی که گذاشته توی ویرگول رو به حالت استاندارد مخصوص خودمون تبدیل کنیم.پس آدرس دهی هامونو اینطوری اضافه میکنیم.const express = require(&amp;quotexpress&amp;quot);
const app = express();
app.get(&#039;/&#039;, async (req, res) =&gt; {
    res.send(&#039;profile&#039;)
})
app.get(&#039;/activity&#039;, async (req, res) =&gt; {
    res.send(&#039;posts page&#039;)
})
app.listen(3000, () =&gt; console.log(&amp;quotServer run at port 3000&amp;quot));حالا یه نگاهی به صفحه هر کاربر توی ویرگول میندازیم. قسمتایی که برای ما مهمه ایناس:اسم / عکس پروفایل / بایو / تعداد فالور ها / تعداد فالوینگ هاکافیه خیلی سریع روشون راست کلیک کنید و inspect element بزنین تا با کلاس یا آی دی خاصی نمایش داده میشن یا نه که میبینیم به ترتیب:اسم: توی یک کلاسی با تگ a و به اسم module--name نمایش داده میشه.عکس پروفایل: یک تگ div داریم با کلاس module--avatar که داخل اون یک تگ a هست و بعدش داخل تگ img  اتریبیوت src اون عکس رو به ما برمیگردونه.بایو: یک تگ p با کلاس module--bio.فالور و فالوینگ ها: توی یه تگ a با کلاس followers یا followings داخل تگ span عددش به صورت فارسی نوشته شده.حالا کدی که اینارو دریافت میکنه به صورت زیره و میتونیم با همدیگه قدم به قدم پیش ببریم توی حالت های مختلف استفاده از cheerio.app.get(&#039;/&#039;, async (req, res) =&gt; {
    const id = &#039;HosseinDotLink&#039;;
    const url = &#039;https://virgool.io/@&#039; + id;
    const html = await axios.get(url);
    const $ = cheerio.load(html.data);
    const imageURL = $(&#039;div[class=module--avatar] a&#039;).find(&#039;img&#039;).attr(&#039;src&#039;);
    const name = $(&#039;a[class=module--name]&#039;).text();
    const bio = $(&#039;.module--bio&#039;).text();
    const follower = $(&#039;.followers span&#039;).html().replace(/[٠-٩]/g, d =&gt; &amp;quot٠١٢٣٤٥٦٧٨٩&amp;quot.indexOf(d)).replace(/[۰-۹]/g, d =&gt; &amp;quot۰۱۲۳۴۵۶۷۸۹&amp;quot.indexOf(d));
    const following = $(&#039;.following  span&#039;).html().replace(/[٠-٩]/g, d =&gt; &amp;quot٠١٢٣٤٥٦٧٨٩&amp;quot.indexOf(d)).replace(/[۰-۹]/g, d =&gt; &amp;quot۰۱۲۳۴۵۶۷۸۹&amp;quot.indexOf(d));

    res.json({
        id: id,
        url: url,
        social: &amp;quotvirgool&amp;quot,
        image: imageURL,
        name: name,
        bio: bio,
        followers: Number(follower),
        followings: Number(following)
    });
})ابتدا id مورد نظرمونو وارد میکنیم، مثلا من آی دی خودمو وارد کردم.بعد از اون url رو میسازیم و با axios محتویات صفحه اون آدرس رو میگیریم و داخل html ذخیره میکنیم. (توجه داشته باشین مواردی که میخوایم توی html.data قرار میگیره)حالا اطلاعات دیتا رو توی cheerio لود میکنیمضمنا من تصمیم گرفتم تا با حالت های این ابزار کار کنیم تا آشنا تر بشیم.برای دریافت آدرس عکس کافیه به مقدار لود شده بگیم ابتدا تگ div با کلاس مورد نظرمونو پیدا کنه و بعد از اون تگ a داخلش رو به ما برگردونه حالا با تابع find دوباره تگ img رو ازش میگیریم (این رو می شد همون اول هم گرفت فقط خواستم با find هم آشنا بشیم). سپس با استفاده از attr میتونیم اتریبیوت های مختلف تعریف شده برای هر تگ رو پیدا کنیم مثلا می دونیم که آدرس عکس های توی src قرار میگیره.برای گرفتم اسم هم با استفاده از تگ a با کلاسش مقدارش رو به text تبدیل میکنیم و میریزم تو متغیرمون.بایو رو هم مستقیما با کلاس دریافت میکنیم.تو فالور  و فالوینگ یه نکته ای هست اونم اینکه اعداد اینجا به صورت فارسی نوشته شده و نمیتونید به Number تبدیل کنید برای همین اول رشته مربوط به این اعداد رو به روش بالا در صورت عربی یا فارسی بودن به انگلیسی تبدیل میکنیم.آخر کار هم به صورت JSON توی ریسپانس برمیگردونیم.فکر میکنم این پست داره طولانی میشهبرای همین نحوه استخراج پست هارو توی یه آموزش دیگه خدمتتون عرض میکنم ::))))))شما هم میتونید توی ادامه دادن این استخراج اطلاعات از شبکه های اجتماعی توی گیت زیر منو همراهی کنید https://github.com/HosseinDotLink/on-social-mediaیا اگه فکر میکنید شبکه جذاب دیگه ای برای این کار هست بهم معرفی کنید.آزاد و پیروز باشید.</description>
                <category>حسین محمدی پور</category>
                <author>حسین محمدی پور</author>
                <pubDate>Mon, 12 Apr 2021 15:47:34 +0430</pubDate>
            </item>
            </channel>
</rss>