<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های بهمن عاشقی</title>
        <link>https://virgool.io/feed/@bahman_asheghi</link>
        <description>برنامه‌نویس</description>
        <language>fa</language>
        <pubDate>2026-06-17 01:37:41</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/30283/avatar/VXJDJZ.jpg?height=120&amp;width=120</url>
            <title>بهمن عاشقی</title>
            <link>https://virgool.io/@bahman_asheghi</link>
        </image>

                    <item>
                <title>اشتباهات رایج در رزومه‌</title>
                <link>https://virgool.io/@bahman_asheghi/%D8%A7%D8%B4%D8%AA%D8%A8%D8%A7%D9%87%D8%A7%D8%AA-%D8%B1%D8%A7%DB%8C%D8%AC-%D8%AF%D8%B1-%D8%B1%D8%B2%D9%88%D9%85%D9%87-kk5shvxnrra2</link>
                <description>سلام عاشقی هستم و با یک پست دیگه برگشتم‌چیزهایی که میخوام بگم ایراداتی بود که توی رزومه خودم بود و اصلاحش کردم. و توی رزومه‌های دیگه هم دارم می‌بینم،‌ هیچ قانونی هم وجود نداره که رزومه باید چجوری باشه نظر شخصی خودمه که از کلی منبع مختلف بدست اومده.عنوان رزومهبالای رزومه عنوان اون موقعیت شغلی رو حتما بنویسید.برای کسی که رزومه شمارو در لحظه اول می‌بینه‌، اصلا مهم نیست که اسم شما چیه! تقریبا همه بالای صفحه با فونت خیلی بزرگ و بولد می‌نویسند اسمشون رو، که بهتره بجاش عنوان موقعیت شغلی که اقدام کردید رو بنویسید.  بعدش یا کنارش با اندازه کوچکتر بعدش اسمتون رو هم اضافه کنید ولی تمرکز نباید روی اسم باشه.مثلا مهندس نرم‌افزار، برنامه نویس فول‌استک، برنامه نویس اندروید،‌ ...اطلاعات اضافه چیزی که برای اون شرکت یا موقعیت شغلی مفید نیست اصلا اضافه نکنید به رزومه مثلا آدرس شهر، شماره تلفن، تاریخ تولد یا حتی کشور،‌ یا مدارک نامربوط یا دستاوردهای نامربوطاطلاعات اضافه توجه خواننده رو پرت می‌کنه و وقت کمی که دارید تو هدر میده که این اصلا خوب نیست!نکته:‌ لینک گیت‌هاب، لیندکدین و ایمیل مطمئن باشید که که لینک‌ه و قابل کلیک شدنه.پروفایلقسمت پروفایل مثل Elevator Pitch باید کوتاه و مفید باشه و فقط این چند چیز بو بگه:کی هستی؟ برنامه نویس سیستم های فولانچقدر سابقه داری؟ چهار سالتو چه شرکت هایی کار کردی؟ شرکت های استارت آپی یا شرکت های بزرگ تو چه حوضه هایی کار کردی؟ مثلا کریپتو کارنسی، حساب داری،‌ سرگرمی۵. مهم تر از همه، چه ارزشی میتونی برای اون شرکت ارائه بدی؟اینجا مهم ترین قسمته و قسمت های قبلی باید این قسمت رو پشتیبانی کنه.ارزش، یعنی چیزی که منجر به افزایش درآمد و کاهش هزینه‌ها بشه مثال:بهینه سازی وبسایت برای سئوراحت‌تر کردن پروسه‌های کاری کارمندانمثال:‌ من یک برنامه نویس فرانت‌اندم که چهار سال سابقه کار توی فروشگاه های اینترنتی بزرگ رو دارم و روی بهینه سازی سئو متمرکز بودم و میتونم به بالا بردن رنک وبسایت شما کمک کنمنکته:‌مهارت های نرم رو خوبه که نشون بدید توی پروفایل ولی به این دو مثال توجه کنید:من خیلی مهارت ارتباطی و تیم وورک خوبی دارممن با ۳ تا تیم مختلف ایکس نفره همکاری موثری داشتمدر مثال اول من نظر شخصی خودم در مورد خودم رو جار می‌زنم بدون دلیل و پشتوانه که اصلا جالب نیست ولی در مثال دوم میتونم طوری بگم این مطلب رو که هم سابقه خودم رو نشون داده باشم و هم خواننده خودش به این نتیجه برسه که من این مهارت هارو دارم حتما که تونستم این کار هارو بکنم. ( چه کارهای؟ کارهایی که لازمه‌اشون مهارت های نرمه)مهارت‌هابهتره بعد از پروفایل مهارت هارو بیارید و دسته بندی کنید،توجه کنید مهارت هایی رو بیارید که فکر می‌کنید مرتبط با اون عنوان شغلیه، مثلا چیزی که توی بک‌اند استفاده میشه رو توی رزومه اندروید دولوپر نیارید. خیلی کم نباشه خیلی زیاد هم نباشه فقط چیزهای اصلی که معمولا توی همه آگهی شغلی‌ها تکرار می‌شه.مثال از دسته بندی:‌ زبان: جاوا،‌کاتلینآرکیتکچر:‌ ...تست:‌...همکاری:‌گیت، اسکرام و ...سابقه کارچیزی که لازمه بگید به خواننده:‌اسم شرکتتوضیح کوتاه که شرکت در چه زمینه ای کار میکنه چیکاره بودید توی شرکت:‌مثلا برنامه نویس فول استکاز چه زمانی تا چه زمانی اونجا کار کردیدو بولت‌پوینت‌ها یا دستاورد‌هاتوضیحات طولانی ندید توی توضیحات شرکت و در حد یک خط باشه کافیهسابقه کاری که نامربوطه رو یا اصلا نیارید یا خیلی روش مانور ندیددستاوردهاهر بولت پوینت یک داستان از دستاوردهاییه که شما توی شرکت قبلی تون داشتید، و باید مثل یک داستان با جزییات بگید که از کجا شروع شده چه کار کردید و چطور و در نهایت چه تاثیری داشتید.دستاورد درمورد ارزش‌هاییه که ایجاد کردید نه وظیفه‌هایی که انجام دادید، مثلا توسعه یا پیاده سازی یا ریفکتور کردن کار شماست، شما کارتون رو انجام دادید! و هزار نفر دیگه هم این کارو میتونند انجام بدن, اینکه من فقط یک برنامه نویسم یا فلان چیز رو پیاده سازی کردم هیچ مزیت رقابتی برای شما در ذهن ریکروتر ایجاد نمی‌کنه!یک مثال میزنم:کاهش هزینه زیرساخت با بهینه سازی پایپ لاین‌ها، در طول یک هفته، پایپ‌لاین‌ها ۵۰ درصد سریع‌تر شد و از ده دقیقه رسید به پنج دقیقه.دقیق باشید روی اعداد و جزییات مثال بد:امنیت رو ۸۰ درصد افزایش دادم با پیاده سازی بایومتریکسبر چه اساسی ۸۰ درصد؟ واضح‌تر باید توضیح داده بشهمن بهینه سازی کردم abcd رو حدود چهل درصد و کلی پول ذخیره کردم هر سالخب اینجا باید باز کنید abcd چیه به زبون ساده ریکروتر شاید شخص فنی نباشه و با اصطلاحات برنامه نویسی آشنا نباشه و کلی پول یعنی چقد؟ نکته: میتونید دستاوردهایی رو هم بیارید که نشون‌دهنده مهارت‌های نرم شما هستند.نکته:‌ اگه توی هر  سابقه کار technical stack نوشتید، بهتره همه رو سرجمع توی Skills بیارید که خلاصه‌تر باشه. شما در کل میخواید بگید که با چه تکنولوژی هایی کار کردید، شاید اینجا لازم نباشه.اسم فایلبهتره برجای resume.pdf اسم فایل رزومه رو اسم موقعیت شغلی و اسم خودتون رو اضافه کنید.</description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Sun, 23 Apr 2023 20:32:49 +0330</pubDate>
            </item>
                    <item>
                <title>توسعه روی ابرها</title>
                <link>https://virgool.io/@bahman_asheghi/cloud-dev-env-fflgwtgenhyz</link>
                <description>مقدمهسلام عاشقی هستم و با یک پست جدید برگشتمایده این‌ که شما از هرجایی با هر دیوایسی بتونید مرورگرتون رو باز کنید و شروع کنید به برنامه نویسی قطعا ایده خفنیه! خوشبختانه به لطف تکنولوژی های وب ، مایکروسافت، و جامعه اوپن‌سورس این کار امکان پذیر شده.خیلی عجیبه همیشه به مایکروسافت فوش ‌می‌دادم الان دارم تعریف‌شون رو می‌کنم!این روش میتونه خیلی مزیت‌ها داشته باشه مثلاقابل دسترس بودن از همه جا (فقط اینترنت لازمه!)دسترسی از همه نوع دستگاهی حتی موبایل و تبلت و کروم‌بوک(فقط مرورگر لازمه!)منابع سخت‌افزاری متغییر و pay as you go (هر وقت لازم بود منابع‌‌سرور رو افزایش بدید)محیط کار ثابت (یک بار برای همیشه ide تون رو ست‌آپ می‌کنید)و ...و معایبی هم وجود داره:وابستگی به اینترنت ( خب ما بدون اینترنت که نمی‌تونیم کار کنیم اصلا!، کاش مسعولین عاقل ما هم این موضوع رو درک کنند.)وابستگی به اینترنت (خب میدونم قبلی هم همین بود ولی تقریبا وابسته‌اید به اینترنت برای هر تغییر!)بدون بعضی امکانات اوپن‌سورس vscodeتعاریف https://code.visualstudio.com نرم‌افزار vscode : کدادیتور مشهور که توسط مایکروسافت و جامعه اوپن سورس توسعه پیدا کرده.مزیت اصلی وی‌اس‌کد اینه که با استفاده از تکنولوژی‌های وب (HTML/CSS/JavaScript) نوشته شده، کلاینت های ویندوز/مک/لینوکس با electron ساخته شده. https://coder.com/docs/code-server پروژه code-server : یک پروژه اوپن سورس مثل Electron که کلاینت رو توی سیستم‌عامل اجرا می‌کنه،اینجا کدسرور، ادیتور رو توی مرورگر اجرا می‌کنه و تقریبا همه امکانات کلاینت توی سیستم عامل رو هم داره.کد سرور از قسمت های اوپن سورس وی‌اس‌کد استفاده کرده و بعضی افزونه‌ها که اوپن‌سورس نیستن، رو نداره. نصبیا باید بریم از سرویس‌های آنلاین مثل codespace گیت‌هاب(یا بقیه رقیب‌هاش) بخریم یا روی سرور خودمون کدسرور رو نصب کنیم.مراحل نصب رو خلاصه فقط نام می‌برم:تهیه سرور (دارای پشتیبانی kvm باشه بهتره)کانفیگ اولیه سرور (Initial Server Setup) + nginxنصب کدسرور (لینک)تهیه دامنه و گرفتن ssl رایگان اگه یک دامنه‌ دارید که میتونید زیر دامنه اضافه کنید و وصلش کنید به IP سرورتونssl برای بعضی امکانات واجبه و با certbot خیلی گرفتنش راحتهتغییر رمز کدسرور~/.config/code-server/config.yamlاتصال به دامنه برای اتصال به دامنه باید دامنه تون رو فوروارد کنید به پورت ۸۰۸۰server {
    #...
    server_name code.semycolon.me;
    location / {
            proxy_pass              &amp;quothttp://127.0.0.1:8080&amp;quot
            proxy_set_header        Upgrade $http_upgrade;
            proxy_set_header        Connection upgrade;
            proxy_set_header        Accept-Encoding gzip;
    } 
}بعد از انجام این مراحل می‌تونید ادیتور رو توی دامنه‌تون باز کنید و دسترسی داشته باشید به vscodeبرای اینکه شورت‌کات‌ های کیبورد به درستی کار کنه مرحله بعد رو انجام بدید حتمااضافه کردن به app های کروم توی کروم، سمت راست آدرس سایت دکمه + رو بزنید و بعدش install حالا می‌تونید شورت‌کات اپلیکیشن رو بزارید توی دسکتاپ‌تون یا توی toolbar تون پین‌اش کنید.شخصی سازینصب پلاگین و آیکون و تمتستبرای تست تصمیم گرفتم یک روز کامل با کد‌سرور کار کنم.پروژه ای که انجام دادم ساخت یک  cli یا  Command Line Interface برای تغییر منابع سرورم بود.که وقتی از کد سرور استفاده میکنم منابع سرور رو افزایش بدم، بعدش که کارم تموم شد کاهش بدم :)با تشکر از هایو که امکان تغییر منابع رو داره و هزینه‌ سرور رو هم pay as you go می‌گیره https://github.com/semycolon/haio_cli نتایج تستمی‌تونم بگیم موفقیت آمیز بود تستم :)  میشه باهاش کار کرد و جایگزین محیط توسعه اصلیم باشه.فقطاگه منابع سرور کافی باشهحداقل دو هسته cpu , یک گیگ رم، اولش با منابع کمتر شروع کردم و یکم کند بوداینترنت قطع نشه! با اینکه اینترنت ADSL2+ دارم و نویز خط پایینه ولی بازم چند باز اینترنت قطع شد و خیلی کلافه کننده‌است.اگه اینترنت بی‌سیم داشته باشید احتمالا مطمعن‌تر باشه</description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Thu, 12 Aug 2021 15:23:52 +0430</pubDate>
            </item>
                    <item>
                <title>دپلوی اتوماتیک یا Continues Deployment با بیت‌باکت</title>
                <link>https://virgool.io/@bahman_asheghi/%D8%AF%D9%BE%D9%84%D9%88%DB%8C-%D8%A7%D8%AA%D9%88%D9%85%D8%A7%D8%AA%DB%8C%DA%A9-%DB%8C%D8%A7-continues-deployment-%D8%A8%D8%A7-%D8%A8%DB%8C%D8%AA-%D8%A8%D8%A7%DA%A9%D8%AA-pulylv4qcikg</link>
                <description>سلام توی این مطلب بصورت خلاصه توضیح میدم چجوری میتونید با بیت‌باکت دپلوی اتوماتیک داشته باشیداگه برنامه نویسی می‌کنید حتما با گیت آشنایی دارید و حداقل چند تا ریپازیتوری گیت روی اینترنت دارید و چندتاشون هم دپلوی کردید روی یک سروری جایی.مشکل:‌کار تکراری برای هر دپلویبعد از تغییرات یا اضافه کردن فیچر توی پروژه مجبوریم که دوباره پروژه روی سرور رو آپدیت کنیم و دوباره بیلد بگیریم یا دپلوی کنیم که بسته به نوع پروژه‌تون مراحلش فرق داره ولی هر بار یک سری مراحل تکراری رو باید انجام بدینمثلا یک سناریو ساده برای دپلوی پروژه بک‌اند/فرانت جاوا اسکریپتیاول ssh بزنید به سرور رفتن به مسیر پروژهگرفتن آخرین تغییرات کد git pullنصب دوباره dependency هابیلد دوباره پروژهریستارت کردن سرویس مربوطهکه هربار لازمه این همه کار تکراری رو انجام بدید.خب راه حل چیه؟ چون همه این مراحل، توی همه دپلوی ها ثابت هستند میتونیم یک اسکریپت بنویسیم تا توی وقت صرفه‌جویی  کنیم.ولی بازم مشکل بصورت کلی حل نشده! بازم برای اجرای دوباره این اسکریپت باید به سرور ssh بزنیم و دستی اسکریپت رو اجرا کنیم.راه حل : یک مکانیزم برای اجرا اسکریپت بعد از هر تغییر توی کدتغییرات توی گیت ثبت میشن پس باید ریپازیتوری گیت مون این رخداد(وقتی توی ریپوزیتوی کامیت جدیدی push شد) رو یک جوری به ما بگهبا روش های زیادی میتونید برای این رخداد ، فرایندی تعریف کنید ولی بستگی به این داره که مخزن گیت‌تون کجا باشه؟روش استفاده از بیت‌باکتبیت باکت، یک سرویس رایگان مثل گیت‌هاب برای نگهداری و مدیریت مخازن گیت با کلی امکانات دیگه.یکی از این امکانات بحث CI/CD که میشه Continues Integration , Continues Deployment که میتونید درموردش بیشتر جستجو و مطالعه کنید.ما به پروژه مون توی بیت‌باکت یک پایپ‌لاین اضافه می‌کنیم، که با هر پوش رو یک یا چند شاخه خاص یک سری فرایند انجام بده، فرایندی که اینجا مد نظره:بیت‌باکت از طریق ssh لاگین بشه به سرور و اسکریپت دپلوی رو اجرا کنهمرحله اول کار: ساخت اسکریپت دپلوی روی سروریک مثال ساده برای دپلوی کد فرانت‌اند vue.jsروی سرور، توی مسیر home یک فایل به اسم deployFrontEnd.sh می‌سازیم.echo &amp;quotchanging directory&amp;quot
cd /home/user/apps/xyz/xyz-frontend/
echo &amp;quotgit pull&amp;quot
git pull
echo &amp;quotyarn install&amp;quot
yarn
echo &amp;quotyarn build&amp;quot
yarn buildفایل رو ذخیره و با دستور chmod +x deployFrontEnd.sh فایل اسکریپت رو قابل اجرا می‌کنیم.برای تست میتونیم اسکریپت رو اجرا کنید که آیا درست کار میکنه یا نهمرحله دوم:اضافه کردن کلید ssh بیت‌باکت به سرورتونبرای اینکه بیت‌باکت بتونه بدون پسوورد به سرور شما لاگین بشه، باید کلید ssh تنظیم کنید.توی پنل تون، پروژه رو انتخاب کنید و توی منوی سمت چپ pipeLine رو انتخاب کنید و یک پایپ لاین الکی بسازید تا فعال بشه برای پروژه تون.بعد از فعال شدن پایپ‌لاین باید به تنظیمات ریپازیتوری برید و زیر قسمت پایپ‌لاین گزینه ssh keys رو انتخاب کنید.بعد از تولید ssh key مقدار کلید rsa رو کپی کنید.برمی‌گردیم به سرور و توی فایل /home/user/.ssh/known_hostsو توی یک خط جدید ssh key رو اضافه می‌کنیمکد زیر رو به انتهای فایل .bashrc اضافه کنید# SSH Permanent passphrase
SSH_ENV=$HOME/.ssh/environment
# start the ssh-agent
function start_agent {
   echo &amp;quotInitializing new SSH agent...&amp;quot
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed &#039;s/^echo/#echo/&#039; &gt; ${SSH_ENV}
    echo succeeded
    chmod 600 ${SSH_ENV}
    . ${SSH_ENV} &gt; /dev/null
    /usr/bin/ssh-add
}
if [ -f &amp;quot${SSH_ENV}&amp;quot ]; then
     . ${SSH_ENV} &gt; /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ &gt; /dev/null || {
        start_agent;
    }
else
    start_agent;
fiبا دستور زیر هم ssh agent رو بیارید بالا. ./bashrcبعد از هربار لاگین به سرور هم تیکه کد بالا اجرا میشه.مرحله سوم: پایپ‌لاین بیت‌باکتتوی پروژه تون فایل bitbucket-pipelines.yml رو edit کنید بصورت زیرimage: alpine:latest
pipelines:
  branches:
   master:
    - step:
       name: Deploy to production
       deployment: production
       script:
         - pipe: atlassian/ssh-run:0.2.2
           variables:
             SSH_USER: &#039;user&#039;
             SERVER: &#039;ip&#039;
             COMMAND: &#039;nohup ./deployFrontEnd.sh &amp; sleep 1&#039;بیت‌باکت برای اجرای پایپ‌لاین‌های از داکر استفاده میکنه توی خط اول ایمیج محیط اجرایی رو مشخص شده که میتونه هر ایمیج داکری باشهما فقط یک پایپ‌لاین داریم روی برنچ مستر ، میتونید برای شاخه های staging یا dev هم step دیگه ای تعریف کنید.نام یوزر روی سرور میشه SSH_USER و آی پی سرور هم میشه SERVER اسم فایل اسکریپت رو هم آپدیت کنید بسته به اون چیزی که توی سرورتون ساختید.اینجا من از nohup , sleep 1 استفاده کردم تا اسکریپت توی بکگراند اجرا بشه. چرا؟چون توی پلن رایگان بیت‌باکت یک زمان محدودی میتونید از pipeLine استفاده کنید که حدود ۵۰ دقیقه در ماهبا این روش زمان رو به حداقل می‌رسونیم تقریبا با هر دپلوی حدود ۱۳ ثانیه از اون ۵۰ دقیقه کم میشه.فایل رو آپدیت ، کامیت و پوش کنید.بعد از پوش پایپ‌لاین تون اجرا میشه و میتونید توی پنل بیت‌باکت لیست پایپ‌لاین های اجرا شده با جزییات شون رو مشاهده کنید.برای دیدن خروجی اسکرپیت اجرا شده از سمت بیت باکت هم می‌تونید فایل nohup.out رو چک کنید.و تمام، دپلوی های خوبی داشته باشید :)منبع: https://medium.com/@nicholaskimuli/continuous-deployment-cd-using-bitbucket-pipelines-and-ubuntu-server-9b685bb64bb5 </description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Mon, 15 Mar 2021 01:12:38 +0330</pubDate>
            </item>
                    <item>
                <title>نود‌جی‌اس با طعم +ES6</title>
                <link>https://virgool.io/@bahman_asheghi/%D9%86%D9%88%D8%AF-%D8%AC%DB%8C-%D8%A7%D8%B3-%D8%A8%D8%A7-%D8%B7%D8%B9%D9%85-es6-yxnwko3dlzfu</link>
                <description>سلام، تو این مطلب توضیح میدم که چطوری از آخرین فیچرهای جاوا اسکریپت توی نودجی‌اس استفاده کنید.مقدمه: ES6 اصلا چی هست؟اکما (ECMA)مخفف European Computer Manufacturer’s Association یک سازمان که استاندارد های کامپیوتری رو تعریف میکنه مثلا استاندارد کیبورد QWERTY رو همین اکما تعریف کرده.اکمااسکریپت (ECMAScript)یکی از استاندارد های اکما برای زبان های اسکریپتی که به اسم ECMA-262 یا ECMA SCRIPT یا ES  معروفه.هر سال اکما استاندارد خودش رو آپدیت و منتشر میکنهورژن های مختلف ECMAScriptمحیط های اجرایی جاوا اسکریپت (کروم، فایرفاکس،نودجی‌اس و ... ) به مرور زمان طبق تعریف اکما اسکریپت فیچر‌های جدید رو پیاده‌سازی و به موتورشون اضافه می‌کنند. فیچرهایی که هر ورژن نودجی‌اس پشتیبانی میکنه توی لینک زیر لیست شده  https://node.green/ مشکل اینه که احتمالا خیلی از فیچرهای باحال توی ورژنی که استفاده می‌کنید(ورژن های TLS) هنوز اضافه نشده!راه حل این مشکل BabelBabel : ابزار خیلی هوشمند که کد با فیچر های جدیدتر رو تبدیل می‌کنه به کدی که برای محیط های اجرایی قدیمی‌تر سازگار باشه.توی کانفیگ بابل می‌تونید مشخص کنید  محیط اجرایی هدف چیه،‌ و بر اساس اون هدف فقط فیچر هایی که پیاده سازی نشده‌ان رو تبدیل کنه. (babel/preset-env) برای شروع سریع از ریپازیتوری زیر استفاده می‌کنیم. https://github.com/semycolon/node-babel-nodemon-starter%D9%84%D9%87%D9%81%D8%B2%D9%85%D8%AE%D8%AF%D8%AB  ریپازیتوری رو کلون می‌کنیم:git clone https://github.com/semycolon/node-babel-nodemon-starter.git
cd node-babel-nodemon-starterبعدش Dependency ها رو نصب می‌کنیم، با پکیج منیجر مورد ایلاقه مونnpm i # or yarnاجرای اسکریپت dev :npm run devبعد از اجرای اسکریپت dev به مسیر src/index.js برید و شروع به نوشتن کد با فیچر های جدید می‌کنیم.بعد از هر ذخیره سازی، کد ریستارت میشه به کمک nodemon و برای ریستارت بدون دردسر از killport هم استفاده شده بصورت پیشفرض روی پورت ۸۰۸۰بعد از اتمام کارتون، میتونید از کدی که نوشتید خروجی سازگار با محیط اجرایی‌ هدف‌تون بگیرید.npm run babel
node dist.bundle.jsفایل خروجی رو میتونید بدون نیاز به babel و با node براحتی اجرا کنید.اضافه کردن babel به پروژه های قبلیاز همین ریپازیتون بالا استفاده کنید و فایل های babelrc , nodemon.json رو توی مسیر پروژه اضافه کنید با توجه به package.json ، اسکریپت و dependency هاتون رو آپدیت کنید.اطلاعات بیشتر در مورد کانفیگ babel  https://babeljs.io/docs/en/configuration لیست فیچر های ES6 https://babeljs.io/docs/en/learn لیست preset ها:پریست env :‌ آخرین فیچرهارو پشتیبانی می‌کنه و بر اساس محیط اجرایی هدف فیچر هایی که پیاده‌سازی شده رو تبدیل نمی‌کنه، در نتیجه حجم فایل bundle بهینه‌است.پریست flow: شبیه به تایپ اسکریپت، تایپ متغیر هارو میتونید مشخص کنید و بصورت استاتیک تایپ متغیرهارو چک میکنه.پریست React : پشتیبانی از jsx رو اضافه می‌کنه.پریست TypeScript : کد های نوشته شده در typeScript رو به جاوا اسکریپت تبدیل میکنه.</description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Fri, 05 Feb 2021 14:58:56 +0330</pubDate>
            </item>
                    <item>
                <title>لینوکس در ویندوز - روایت یک برنامه نویس</title>
                <link>https://virgool.io/CodeLovers/%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-%D8%AF%D8%B1-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-%D8%B1%D9%88%D8%A7%DB%8C%D8%AA-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-on7wplaqlaow</link>
                <description>مجبور شدم روی لپتاپ جدیدم ویندوز نصب کنم و از محیط ویندوز برای توسعه نرم‌افزار بیزارم!تو این مطلب توضیح میدم که چجوری محیط برنامه‌نویسی خودم رو توی ویندوز آماده کردم چون وقت خودم رو زیاد گرفت سعی و خطاها، نتیجه هارو اینجا می‌نویسم تا شما هم استفاده کنید.با این روش برنامه‌ها با سرعت بیشتری نسبت به نسخه ویندوزی‌شون اجرا میشن!مقدمه:یک گشایش عظیم ...مایکروسافت بدنبال راه حلی بود تا بتونه توسعه‌دهنده هارو سمت خودش نگه داره و امکان اجرای برنامه های گنو‌لینوکس در محیط ویندوز رو بهشون بده، تا پروژه WSL رو شروع کردن و زمان زیادی میگذره از شروع توسعه wsl که الان ورژن دوم‌اش هم منتشر شده و توی وضعیت نسبتا خوبیه.ورژن دوم wsl به این صورت هست که یک نسخه تقریبا کامل از کرنل لینوکس رو روی ویندوز شبیه سازی میکنند و با استفاده از تکنولوژی های روز شبیه‌سازی با دادن دسترسی مستقیم به منابع(پردازنده و حافظه رم) سرعت خیلی بیشتری نسبت به تکنولوژی شبیه سازی قدیمی میگیریم.بخاطر سبک‌تر بودن و سریع اجرا شدن توی wsl از systemd استفاده نشده و بجاش از /etc/init.d به سرویس ها دسترسی دارید. بجای systemctl هم میتونید از system استفاده کنید.این مسئله توی نصب بعضی پکیج‌ها ممکنه اذیت تون کنه که راه حل های جایگزین رو معرفی می‌کنم.قدم اول; نصب wsl2 از دستور العمل رسمی خود مایکروسافت برای نصب استفاده کنیدhttps://docs.microsoft.com/en-us/windows/wsl/install-win10توزیع ubuntu 20.04 رو نصب کردم و توی Store به مشکل نخوردم بار اول ولی اگه به مشکل خوردید حتما از شیلترفکن استفاده کنید و یه اکانت مایکروسافت لاگین کنید انشالله که درست میشه.حتما یادتون باشه که از ورژن ۲ استفاده کنید و نحوه تقییر ورژن توی لینک بالا هست.کرنل ساخت مایکروسافت برای اوبونتو استفاده شدهقدم دوم; نصب Windows Terminalبه عنوان جایگزین خط فرمان داغون ویندوز میتونید از ابزار جدید و اوپن سورس ویندوز استفاده کنید، باید بشه از استور نصب کنید ولی من نتونستم و از گیت‌هاب نسخه فایل msixbundle اش رو دانلود و نصب کردم https://github.com/microsoft/terminal/releases کانفیگ ویندوز ترمینال دو تا کار لازم داره ، توی ویندوز ترمینال رو آیکون جهت پایین کلیک کنید و تنظیمات رو انتخاب کنید تا فایل کانفیگ رو براتون باز کنه.1.انتخاب اوبونتو به عنوان پیشفرض: از لیست پایینتر uuid اوبونتو رو بردارید بجای مقدار قبلی توی این خط بزارید. &amp;quotdefaultProfile&amp;quot: &amp;quot{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}&amp;quot,2.انتخاب مسیر home خود اوبونتو به عنوان startingDirectory ، توی بلاک اوبونتو این خط رو هم اضافه کنید.&amp;quotstartingDirectory&amp;quot: &amp;quot//wsl$/Ubuntu-20.04/home/username/&amp;quot
اینطوری مثلا:   &amp;quotlist&amp;quot:        [            {                &amp;quotguid&amp;quot: &amp;quot{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}&amp;quot,                &amp;quothidden&amp;quot: false,                &amp;quotname&amp;quot: &amp;quotUbuntu-20.04&amp;quot,                &amp;quotsource&amp;quot: &amp;quotWindows.Terminal.Wsl&amp;quot,		&amp;quotstartingDirectory&amp;quot: &amp;quot//wsl$/Ubuntu-20.04/home/username/&amp;quot            },چند تا نکته:برای دسترسی به فایل های اوبونتو از ویندوز، به آدرس زیر برید با ویندوز اکسپلورر \\wsl$\اونجا توزیع هایی که نصب کردید براتون شبکه شده.نکته مهم : دسترسی به فایل سیستم های اوبونتو از ویندوز و برعکس،‌سرعت بالایی نداره و تقریبا میشه گفت کنده.پس باید برنامه هایی که داخل اوبونتو اجرا می‌کنید فایل هاشون هم روی فایل سیستم خود اوبونتو باشه.قدم سوم; همون همیشگیهمیشه بعد از نصب اوبونتو اولین دستوری که اجرا میکنند، آپدیت ریپازیتوری پکیج‌ها و آپگرید پکیج‌های نصب شده.sudo apt update ; sudo apt upgrade -yپکیج های پرکاربردتون رو هم نصب کنید اگه نصب نیستن!sudo apt install git nano curl nodejs npm aria2  -yقدم بعد; اوه مای ترمینالقبل از انجام کارهای خفن بهتره ترمینال مون رو هم خفن کنیم و زی‌شل استفاده کنیم که خیلی کار با ترمینال رو راحت‌تر و سریع‌تر میکنه، من که همیشه دومین کار نصب زی‌شل و oh my zsh هستش.sudo apt install zsh -y https://ohmyz.sh/#install قدم بعد; نصب IDEکد ادیتور یا IDE محبوب خودتون رو داخل اوبونتو دانلود کنید. یا با ویندوز دانلود کنید و انتقال بدید به اوبونتو.برای دانلود و نصب وب استورم اینجوری پیش میریم:mkdir appscd appswget https://link-to-webstorm.tar.gztar -xvf webstorm.tar.gzcd webstorm-/bin./webstorm.sh
برای دانلود و نصب vsCode ،‌ فایل deb رو از سایت اصلی شون دانلود میکنیم.wget https://link-to-/vscode.deb

sudo dpkg -i vscode.debکه احتمالا به ارور بخوریم برای dependency هایی که روی اوبونتو نصب نیست.که با دستور زیر حل میشه.sudo apt --fix-broken installاحتمالا موقع اجرای vsCode ازتون بخواد که از نسخه خود ویندوز استفاده کنید، که شما اینکارو نمی‌کنید :)اصل مطلب: اجرای این برنامه های توی محیط گرافیکی ویندوز!برای اجرای برنامه های گرافیکی همراه با GPU Acceleration  ، یک XServer روی ویندوز اجرا می‌کنیم. بهترین گزینه فعلا vcxsrc هست که از لینک زیر دانلود و نصب کنید. https://sourceforge.net/projects/vcxsrv/ بعد از نصب برنامه XLaunch رو باز کنید همینجوری نکست بزنید(multiple windows -&gt; start no client -&gt; finish ) تا برسید اینجا ، حتما گزینه Disable Access Control غیر فعال باشه. باز دوباره نکست بزنید...اگه فایروال دسترسی خواست ، اجازه دسترسی بدیدتا اینجا دیگه توی ویندوز کاری نداریم.به ترمینال برگردیم و چند خط زیر رو به فایل های کانفیگ zsh , bash اضافه کنیم.sudo nano /etc/bash.bashrcnano ~/.zshrcexport DISPLAY=&amp;quot`grep nameserver /etc/resolv.conf | sed &#039;s/nameserver //&#039;`:0&amp;quotexport DISPLAY=&amp;quot`sed -n &#039;s/nameserver //p&#039; /etc/resolv.conf`:0&amp;quotexport DISPLAY=$(ip route|awk &#039;/^default/{print $3}&#039;):0.0بعد از اضافه کردن این سه خط به دوتا فایل بالا تغییرات رو اعمال میکنیم یا دوباره ترمینال رو باز میکنیم.. ~/.zshrc
echo $DISPLAYو تمام با اجرای دستور بالا آی پی ویندوز از داخل اوبونتو رو می بینید و در صورت اجرا بودن برنامه vcxsrc با اجرای برنامه های گرافکی ، برنامه ها مثل بقیه برنامه های ویندوزی توی محیط گرافیکی ویندوز باز‌میشن.وب‌استورم کاملا شبیه برنامه های خود ویندوز بدون هیچ تفاوتی کنار بقیه برنامه ها اجرا شد.حل مشکل نصب مانگودی‌بیبجای نصب پکیج اصلی mondogdb-server  از mongodb-runner استفاده کنید.نودجی‌اس و npm رو نصب کنید بعدش پکیج mongodb-runner   رو بصورت گلوبال روی اوبونتو نصب کنید.sudo npm i -g mongodb-runner
mongodb-runnerنصب و تست کلاینت مانگوsudo apt install mongodb-clients -y
 mongoورژن ۴.۴.۳ مانگو دی بی رو اجرا کردیم براحتی بدون هیچ مشکلی!حل مشکل پینگ و بسته بودن پورت‌های آی‌پی ویندوزبا اینکه DISPLAY بصورت پیشفرض با آی پی ویندوز کار میکنه ولی نه میتونید پینگ بگیرید ازین آی پی و همه پورت هاش بسته ان!خب دلیل‌اش اینه که توی تنظیمات فایروال ویندوز باید ICMPv4 رو اجازه بدید و برای دسترسی به پورت هم مثل مثال زیر روی ویندوز پورت ۱۰۸۹ پراکسی ساکس اجرا هست برای  دسترسی از اوبونتو بهش لازمه این دو rule رو اضافه کنیم. آپدیت های بعدی توی همین مطلب اضافه میشه بقیه کارهایی که کردم هم نامربوط به wsl و کارهای عمومی هستن که در مطالب مجزا مینویسم.</description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Wed, 27 Jan 2021 10:49:16 +0330</pubDate>
            </item>
                    <item>
                <title>دانلود آسان و سریع فایل‌هال با آریا</title>
                <link>https://virgool.io/@bahman_asheghi/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%A2%D8%B3%D8%A7%D9%86-%D9%88-%D8%B3%D8%B1%DB%8C%D8%B9-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7%D9%84-%D8%A8%D8%A7-%D8%A2%D8%B1%DB%8C%D8%A7-jqpby68rm2od</link>
                <description>سلام من به تازگی ویندوز نصب کردم و تصمیم گرفتم نرم‌افزار کرکی و آلوده روی ویندوزم نصب نکنم، بجای استفاده از IDM یا همون اینترنت دانلود منیجر که پولیه از آریا ۲ استفاده میکنماگه استفاده از آریا۲ رو در محیط خط فرمان دوست نداشتید می‌تونید دانلود منیجر پرسپولیس که یک دانلود منیجر اوپن سورس هست رو نصب و استفاده کنید که پرسپولیس هم خودش از همین ابزار آریا۲  استفاده میکنه. https://persepolisdm.github.io/ آریا۲ یک ابزار سبک ، سریع و کراس پلتفرم برای دانلود در تمام پلتفرم‌ها. با امکان پشتیبانی از چندین پروتکل و منبع. و قابلیتی که همه دوستش دارن ، ادامه دانلود فایل و خیلی امکانات دیگه برای استفاده شخصی خودم ابزار های متفاوتی رو امتحان کردم ولی آریا از همه سریع‌تر و راحت‌تر بوده، تو این مطلب نحوه نصب و استفاده از این ابزار رو بهتون توضیح میدم.قبل از شروع نصب بهتون بگم که آریا یک ابزار تحت ترمینال هست ، ولی نگران نباشید استفاده ازش خیلی راحته!نصب در ویندوزمرحله اول دانلود فایل اجرایی از گیت‌هاب:به صفحه گیت‌هاب آریا۲ از لینک زیر برید و در قسمت Release آخرین ورژن استیل مخصوص ویندوز رو دانلود کنید. https://github.com/aria2/aria2/releases/ بسته به نوع ویندوزتون یکی از نسخه های ۳۲ یا ۶۴ بیتی رو دانلود و از حالت فشرده خارج کنید.فایل های مربوط به ویندوزمرحله دوم، انتقال فایل اجرایی به system32:برای اینکه یک فایل اجرایی رو از داخل خط فرمان اجرا کنید، اون فایل باید توی  متغیرPATH داخل Environment Variable تعریف شده باشه.راه آسون اینه که فایل اجرایی (aria2c) رو در مسیر زیر کپی کنید:C:\Windows\System32و تمام. برای استفاده از آریا۲ فقط لازمه که به محل‌ای که میخواهید فایل هارو دانلود کنید برید و توی نوار آدرس تایپ کنید cmd و اینتر بزنید تا یک خط فرمان با آدرس پوشه ای که داخل بودید باز بشه.بعد داخل خط فرمان دستور دانلود فایل رو به شکل زیر بنویسید و اجرا کنیدaria2c -x 16 https://link-of.fileپارامتر -x تعیین  میکنه همزمان چند تا کانکشن فایل رو دانلود کنند. و در انتها مثل مثال بالا لینک فایل رو قرار می‌دید.اینجوری دسکورد رو دانلود کردم توی زمانی خیل کمتر از چیزی که قرار بود مرورگر دانلود کنهنصب در اوبونتو و بقیه توزیع‌هااگه از کاربر گنو‌لینوکس هستید پس دانش کافی برای نصب و استفاده از آریا۲ رو دارید. پس توضیح‌ لازم نداره. https://github.com/aria2/aria2 </description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Wed, 27 Jan 2021 00:49:43 +0330</pubDate>
            </item>
                    <item>
                <title>چطور از پروژه Nuxt.js در Express.js استفاده کنیم؟</title>
                <link>https://virgool.io/@bahman_asheghi/%DA%86%D8%B7%D9%88%D8%B1-%D8%A7%D8%B2-%D9%BE%D8%B1%D9%88%DA%98%D9%87-nuxtjs-%D8%AF%D8%B1-expressjs-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DA%A9%D9%86%DB%8C%D9%85-u9gt95zmflsu</link>
                <description>مقدمهسلام ، یکی دو هفته است که مشغول به نوشتن یه سایت ساز شدم و چون سورس پروژه بزرگ می‌شد مجبور بودم همه چیز رو ماژولار بنویسم. درمورد اینکه سورس کد پروژه رو ماژولار بنویسیم یه مطلب در آینده می‌نویسم ولی بدونید که توی نود‌جی‌اس هر فایل یک ماژول حساب میشه!خب حالا میخوایم که پروژه‌ی nuxt.js ما قابلیت این رو داشته باشه که از خارج بتونیم خروجی برنامه رو require کنیم.توی کدی که خود nuxt.js می‌سازه خیلی تابلو اشاره شده که چجوری یه middleware بسازیم./server/index.jsخب اگه ما یکم کد رو تغییر بدیم و nuxt.render رو اکسپرت کنیم تمومه :)))ظاهرا همه چی اوکیه ولی وقتی از یه جای دیگه خارج از پروژه nuxt این فایل رو فراخوانی کنید کار نمیکنه!خروجی بعد از اجرا فایل بالاراه حلبرای پیدا کردن راه حل سه چهار ساعتی توی داکیومنت و سورس کد nuxt.js چرخیدم تا به یه چیزایی رسیدممشکل اینه که باید به سازنده بگیم که سورس رو از کجا بخونه و فایل خروجی کجا ذخیره بشهاینجا من بصورت دستی آدرس هارو به کانفیگ ناکست میدم و همونجوری که انتظارش میرفت کد ما از هرجایی کار میکنه.اینجا لینک دستور‌ العمل کامل توی گیت لب گذاشتم.و تمام!</description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Thu, 07 May 2020 13:20:04 +0430</pubDate>
            </item>
                    <item>
                <title>چگونه با یوتیوب موزیک گوش کنیم؟</title>
                <link>https://virgool.io/@bahman_asheghi/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B2-%DB%8C%D9%88%D8%AA%DB%8C%D9%88%D8%A8-%D9%85%D9%88%D8%B2%DB%8C%DA%A9-%DA%AF%D9%88%D8%B4-%DA%A9%D9%86%DB%8C%D9%85-hvc0x5t2hhuz</link>
                <description>سلام ، تو این مطلب روش خودم برای موزیک گوش کردن وقتی کار میکنم رو به اشتراک میذارم.چیزی که باعث میشه ما بتونیم جداگانه فقط به موزیک گوش بدیم اینه که پخش کننده یوتیوب صدا و تصویر رو جداگانه دریافت میکنه ، یعنی شما اگه بخواید فیلم از یوتیوب دانلود کنید باید صدا و تصویر رو جدا دریافت کنید و بعدش بهم وصل کنید.کیفیت های متفاوتبه عنوان مثال،  توی عکس بالا میتونید تصویر و صدای یک فیلم رو توی چندین فرمت مختلف ببینید. قدم اول : اکسنتشن Audio Onlyاین اکستنشن به شما کمک میکنه وقتی توی سایت یوتیوب یک فیلم رو پخش می‌کنید فقط صدا رو برای شما پخش کنه و از دانلود و پخش تصویر فیلم جلو گیری میگنه.افزونه لینک افزونه برای کروم لینکقدم دوم :‌نصب AdBlockerبسته به ویدیویی که پخش میکنید ممکنه که اون ویدیو شامل تبلیغات باشه که وقتی آهنگ گوش میکنی خیلی روی اعصابه و لازم میشه که برگردی به مرورگر و تبلیغ رو رد کنی.راه حل این مشکل نصب افزونه AdBlockerلینک افزونه برای کروم لینکقدم سوم :‌پخش پلی لیست خودتونیوتیوب از هوش مصنوعی برای پیشنهاد ویدیو به شما استفاده میکنه و ویدیو هایی که قبلا دیدین رو بررسی میکنه و سعی میکنه ویدیو هایی مشابه رو به شما پیشنهاد بده.جدا از قضیه پیشنهاد دهی وقتی کی‌ورد music رو توی یوتیوب جستجو کنید ، یک پلی‌لیست مخصوص شما براتون میارهاون پلی‌لیست رو پخش کنید و تمام! تب رو باز بزارید و به کارتون برسید :)برای رد کردن آهنگ هم میتونید از دکمه های مدیای کیبورد استفاده کنید توم کروم پشتیبانی میشه.اینکه چقدر آهنگ هایی که یوتیوب بهتون پیشنهاد میده دوست داشته باشید بستگی داره که قبلا چه ویدیو هایی رو پلی کردید و چقدر ازون ویدیو هارو تماشا کردید. البته برای من که بیشتر هوش مصنوعی گوگل آهنگایی رو برام میاره که قبلا گوش کردم :))خوشحال باشید و خندان</description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Fri, 24 Apr 2020 23:51:26 +0430</pubDate>
            </item>
                    <item>
                <title>چطور از مودم ADSL به عنوان روتر استفاده کنیم؟</title>
                <link>https://virgool.io/@bahman_asheghi/%DA%86%D8%B7%D9%88%D8%B1-%D8%A7%D8%B2-%D9%85%D9%88%D8%AF%D9%85-adsl-%D8%A8%D9%87-%D8%B9%D9%86%D9%88%D8%A7%D9%86-%D8%B1%D9%88%D8%AA%D8%B1-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DA%A9%D9%86%DB%8C%D9%85-aowblowezwei</link>
                <description>امروز سیگنال وای فای توی اتاقم خیلی کم بود و نمیتنونستم کار کنم یه فکری زد به سرم که مودم دومی که داشتم و بی استفاده بود رو به مودم اصلی شبکه کنم.شاید این نکته رو ندونید که وسیله هایی که به مودم وصل میشن ،چه با وایفای و چه با کابل شبکه همه با هم  شبکه شدن و امکان اتصال این دستگاه‌ها به هم وجود داره مثلا تلوزیون و لبتاب و موبایل‌ ای که به یک مودم وصلن میتونن با هم ارتباط برقرار کنند و خیلی از نرم افزارها ازین قابلیت استفاده میکنند.کاربردهاش میشه گفت شبکه کردن چند تا لبتاب و کامپیوتر توی خونه ، اشتراک گذاری فایل ها بین دستگاه ها  ، تماشای فیلم از موبایل و کامپیوتر روی تلوزیون با وایفای ، بازی بصورت شبکه ای( مثلا کانتر) و خیلی کاربرد های دیگه...حالا میشه یه مودم رو با یه مودم دیگه شبکه کرد؟!!!خب هر دوتا مودم پورت لن دارند و احتمالا باید بشه و چون روی مودم هم نوشته adsl2 model + router خب اون قسمت روترش یعنی باید بشه به عنوان فقط روتر ازش استفاده کرد. اگه کلاش میکروتیک بود میگفتم که ما نیاز به DHCP سرور و یک DHCP کلاینت و یک رول فایر وال برای  srcNat لازم داریم ولی سیستم عامل مودم ها خیلی عقب مونده تر ازین حرفا هستن.بعد از یکم ور رفتن با مودم ها و سرچ توی اینترنت به این راه حل رسیدم مودم اول مثل همه مودم ها تنظیمات ADSL روش انجام شده و به اینترنت متصل هستش و هیچ تنظیمات دیگه ای لازم نداره.مرحله اول اتصال کابل اول دوتا مودم رو با کابل Lan به هم متصل میکنیم دقت کنید که بعضی روتر ها درگاه مخصوص wan دارند ولی این جا اصلا لازم به همچین پورتی نیست و پورت Lan معمولی کار میکنه. توی بخش WAN مودم دوم رو میزاریم روی حالت bridge که حالت پیشفرض‌اشه. لازم نیست چیزی رو تغییر بدین اگه این نبود اضافه اش کنید.مرحله دوم  تغییر آیپی مودم دومبرای اینکه یک آدرس مجزا برای هر مودم داشته باشیم آی پی مودم دوم رو عوض میکنیم توی بخش Lan مودم دوم و بعدش با همین آی پی وارد تنظیمات مودم دوم میشیم.مرحله آخر هم انجام تنظیمات DHCP به بخش Lan -&gt; DHCP میریم و تنظیمات رو تغییر میدیم مقادیر Default Gateway و DNS Server رو باید آی پی مودم اول رو وارد کنیم تا مودم دوم کار کنه.ایزی ایزی تامام تامام :)خب از مزایای این کار میشه گفت :امکان شبکه کردن دستگاه های بیشتری توی شبکه خانگیافزایش دامنه وایفای</description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Thu, 12 Sep 2019 06:45:14 +0430</pubDate>
            </item>
                    <item>
                <title>چطور به AndroidX مهاجرت کنیم؟</title>
                <link>https://virgool.io/applymag/semycolon-me-howto-migrate-to-androidx-yqcrlhntujju</link>
                <description>تو این مطلب میگم که چرا باید به اندرویدایکس مهاجرت کنید و چطور.اگه ازJetPack و اندرویدایکس نمیدونید درموردش جستجو کنید و اطلاعات کسب کنید.امروز دیدم که بازار آپدیت نهم اپلیکیشن‌ام رو رد کرده بود (هشت تا ورژن قبلی رو چطوری تایید کرده بودین آخه؟) ،‌ بعد که CrashLytics رو چک کردم دیدم که آره کتابخونه انتخاب عکس کرش داده بود. مشکل اون کتابخونه هم توی ورژن های بعدی حل شده بود ولی چون ورژن بالاتر از androidX استفاده کرده بود من از ورژن قبل از androidX اش استفاده کرده بودم. اینکه چرا از ورژن قبلش استفاده کردم بخاطر این بود که چون توی ورژن های بعدی Dependency هاش از androidX استفاده کرده بود ولی من از SupportLibrary توی پروژم استفاده کرده بودم که دچار کانفلیکت میشد و مجبور میشدم به طور کامل مهاجرت کنم به androidX.مشکل اینجاست که یک سری کتابخانه ها به androidX مهاجرت کردند و دیگه از SupportLibrary استفاده نمیکنند ولی بقیه مهاجرت نکردند و یک نوع دوگانگی به وجود اومده بود برام.نمیدونم چرا زودتر به اندرویدایکس مهاجرت نکردم و میترسیدم ازش! فکر میکردم خیلی به مشکل بخورم ولی توی نصف روز کل یک پروژه رو refactor کردم.خلاصه همون‌روز خیلی اتفاقی توی StackOverflow دیدم یکی به Jetifier اشاره کرده بود. حالا این Jetifier چی هست ؟ یک ابزار از  JetPack که مشکل امثال من رو حل میکنه. کتابخانه هایی که مهاجرت نکرده بودن و به SupportLibrary وابسته‌ان رو میگیره و اون SupportLibrary هارو به androidX تبدیل میکنه. و مشکل دوگانگی خیلی راحت حل میشه :) الان میتونم همه نوع کتابخانه ای به پروژه ام اضافه کنم چه جدید چه قدیم.ولی باز هم مجبور بودم سورس خودم رو به androidX تغییر بدم ، یعنی وابستگی‌های توی فایل build.gradle و import هارو از android.support به androidx.* تغییر میدادم.برای این مشکل هم گوگل یک راه حل در نظر گرفته بود . در منوی Refactor توی اندروید استدیو گزینه ای به اسم Migrate to Androidx هم اضافه شده که بصورت خودکار وابستگی ها و import هارو عوض میکنه.خب تا اینجا همه‌چی خیلی عالی و باحال به نظر میرسه ولی ریفکتور اندروید استدیو بی مشکل نیست!راه حل اینه که پروژه رو بیلد بگیرید تا ارورها خودشون رو نشون بدن ، نترسید تقریبا کل فایل های پروژه قرمز میشن :)) ولی خیلی راحت میتونید با استفاده از شورت کات کنترل شیفت آر import ها رو توی کل پروژه تغییر بدید.به این صورت که اول Import رو پاک کنید بعدش روی کلاس ها کلید آلت اینتر بزنید تا خودش اون کلاس رو Import کنه. بعد اون رو توی کل پروژه از طریق شورت کات قبلی عوض کنید.یک سری کلاس هارو هم باید به صورت مجزا به dependency هاتون اضافه کنید مثلا کلاس TabLayout دیگه توی com.android.support:design نیست و باید بجاش از com.google.android.material:material استفاده کنید چون توی اندرویدایکس کامپوننت ها مجزا شدن.ارور های دیگه ای هم خواهید داشت ولی نگران نباشید ، درست گوگل کنید و راه حل رو پیدا کنید.خوشحال باشید و خندان :)</description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Thu, 15 Aug 2019 23:34:14 +0430</pubDate>
            </item>
                    <item>
                <title>فوتوپی ;  جایگزین فوتوشاپ</title>
                <link>https://virgool.io/@bahman_asheghi/%D9%81%D9%88%D8%AA%D9%88%D9%BE%DB%8C-%D8%AC%D8%A7%DB%8C%DA%AF%D8%B2%DB%8C%D9%86-%D9%81%D9%88%D8%AA%D9%88%D8%B4%D8%A7%D9%BE-a0isj9pivdsx</link>
                <description>براحتی بدون دانلود یا نصب چیزی ،شروع به ویرایش عکس‌هاتون کنید.به عنوان یه برنامه نویس سمت سرور که هیچ نیازی به ویرایش عکس نداشتم و ندارم ولی وقتی اندروید کار میکنم بعضی وقتا لازمه یه عکس رو ویرایش کنم یا یه آیکون طراحی کنم و ... مشکل من اینجا بود که به دلایل خیلی زیادی دیگه از ویندوز استفاده نمی‌کنم و فقط از توضیع های لینوکسی روی لبتابم استفاده میکنم. (دبیان یا اوبونتو) ، متاسفانه شرکت ادوبی نسخه‌ی لینوکس فوتوشاپ رو نساخته و نمیتونید به راحتی روی لینوکس فوتوشاپ نصب کنید. گزینه های روی میز برای لینوکسی هاگیمپ یا gimp که یه ویرایشگر عکس اوپن سورس ، که خوبیا و بدی‌های خودشو داره شبیه فوتوشاپه تا حدودی و خیلی فرق داره کار باهاش ... من که باحاش حال نکردم ... سعی کردم یادش بگیرم نشد!نصب فوتوشاپ با واین خب این هم میشه ولی آسون نیست و گیر و گور زیاد داره ... هنوز نتونستم درست نصب و اجراش کنم اگه شد برای شما هم میزارم.نصب ویندوز این گزینه آخرم بود که بد ترین گزینه هم بود ... خیلی سخت میشه که بخوام هی سوییچ کنم بین ویندوز و لینوکس چون روش توسعه من اینجوریه که تغییرات زیاد میدم و یکچیز خاص از اول تو ذهنم نیست. شاید بگید چرا تو ماشین مجازی نصب نمیکنی؟ خب اگه ssd داشتم سرعت هاردم داغون نبود این گزینه هم میشد ولی بازم نمیخوام ویندوز نصب کنم.راه نجات در نهایت با فوتوپی آشنا شدم ... فرشته نجات منبرای استفاده ازش خیلی راحت میرید تو سایت photopea.com کمتر از یک دقیقه سایت لود میشه با بد ترین اینترنت ، و waollah این شما و این فوتوشاپ توی مرورگر !فوتوپی رو میشه گفت نسخه آنلاین فوتوشاپ  برای یک طراح یا گرافیست کار فوتوشاپ رو نمیتونه انجام بده ولی برای یه کابر معمولی با استفاده های معمولی عالیه. توی یوتیوب دیدم که کارای حرفه‌ای هم باحاش انجام میدن.فوتوپی خیلی بیشتر از یه ویرایشگر عکس ساده است ، خیلی از فرمت هارو بخوبی ساپورت میکنه.خیلی کارایی که تو فوتوشاپ بلد بودم اینجا هم انجام میدم و در کل چیزی کم نذاشته برای من یکی :)توضیحات فنی و آموزش اش رو میتونید توی سایت خودش بخونید. فوتوپی اوپن‌سورس نیست ولی توی صفحه‌ی گیت‌هاب میتونید بهش استار بدین و issue ثبت کنید.امیدوارم به دردتون بخوره ; به قول جادی شاد باشید و خوشحال :))) https://www.photopea.com/ </description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Mon, 15 Jul 2019 02:58:52 +0430</pubDate>
            </item>
                    <item>
                <title>یادگیری زبان انگلیسی به روش یک برنامه نویس</title>
                <link>https://virgool.io/@bahman_asheghi/%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D8%B2%D8%A8%D8%A7%D9%86-%D8%A7%D9%86%DA%AF%D9%84%DB%8C%D8%B3%DB%8C-%D8%A8%D9%87-%D8%B1%D9%88%D8%B4-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-st0mttolbcqi</link>
                <description>سلام ، اهمیت زبان بر هیچکس پوشیده نیست. دیدم که خیلی ها مشکل دارند توی یادگیری زبان و خیلی هاشون بخاطر مشکلاتی بیخیال شدن ...توی این پست از تجربه یادگیری خودم براتون میگم که شاید بدرد شما بخورهبرای یادگیری زبان متد های زیادی وجود داره که هر روش تاثیر و سختی متفاوتی داره شما بهتره تا جایی که میتونید این متد هارو امتحان کنید تا بهترین متدهارو که برای شما مناسب‌تر هستند رو انتخاب و استفاده کنید.چند نکته کلی قبل از شروع معرفی متدهادرگیر شویداگه چیزی یاد بگیرید و ازش استفاده نکنید وقت تون رو هدر دادید و خیلی سریع هم از یادتون میره پس وقتی که میزارید روی یادگیری زبان بعدا تلف نکنید! ، همه از زبان استفاده میکنند تا صطح کارشون رو ارتقا بدن ، شما تلاش کنید تا در زمینه‌ی کاری خودتون از انگلیسی استفاده کنید تا کارتون رو رشد بدید ، مثلا تو اینترنت بدنبال محتوا های مفید برای کسب و کارتون بگردید ، یا توی سایت های دوست یابی دوستی پیدا کنید و از تنهایی در بیایید ، با مردم کشور های دیگه آشنا بشید و صحبت کنید و خیلی کارای باحال دیگه ...من شروع کردم داکیومنت های جاوا رو به زبان اصلی خوندم ، کار سختی بود خیلی از لغات رو بلد نبودم برای یه خط ده بار میرفتم تو گوگل ترنسلیت معنی کلمه هارو یکی یکی در میاوردم ... اولش سخته ولی کم کم راه میوفتی ، و کمتر به دیکشنری سر میزنی و بعد از یه مدتی دیگه نیاز به مترجم نداری و از طرمن شروع کردم داکیومنت های جاوا رو به زبان اصلی خوندم ، کار سختی بود خیلی از لغات رو بلد نبودم برای یه خط ده بار میرفتم تو گوگل ترنسلیت معنی کلمه هارو یکی یکی در میاوردم ... اولش سخته ولی کم کم راه میوفتی ، و کمتر به دیکشنری سر میزنی و بعد از یه مدتی دیگه نیاز به مترجم نداری بعد از اون بخاطر اینکه مشکلاتم توی برنامه نویسی رو حل کنم مجبور شدم متن های انگلیسی رو بخونم ... بعد تر دوباره برای اینکه آموزش ها داکیومنت هارو بخونم مجبور شدم کل اون متن هارو ترجمه کنم برای خودم ... خلاصه همیشه درگیری با زبان داشتم و دارم ...  خیلی اون لحظه باحاله که میبینی یه متن یا یه آهنگ یا فیلم همه کلمه هاشو میفهمی و بلدی :) عجول نباشیدیادگیری زبان خیلی بیشتر از چیزی که فکر میکنید نیاز به زمان و انرژی داره  و خیلی کم کم پیشرفت میکنید.مثل باشگاه بدنسازی ، یکی دو ماه میرفتم تغییری نمی‌دیدم و ول میکردم ... ولی اونهایی که هیکل های درست و حسابی داشتن هر کدوم سه چهار سال حداقل هر روز تمرین کرده بودن.پس بیشتر وقت بزارید و مداوم کار کنید ، هر روز ، نه یکی دو روز در هفته محتوایی که یاد میگیرید نه خیلی سخت باشه نه خیلی آسونیعنی متنی که میخونید اگه همه‌شو بلدین که چیز جدیدی یاد نمیگیرید اگر هم خیلی کلماتشو بلد نیستید چیزی نمی‌فهمید... پس محتوایی که انتخاب میکنید باید صطح بندی شده باشه.همه‌ی مهارت‌ها رو یاد بگیریدفقط روی یک مهارت تمرکز نکنید و همه‌ی مهارت هارو باهم جلو ببرید ، یکی از استاد هام گفت که هر مهارت مثل یک تیکه از چرخه ،‌وقتی همه‌ی تیکه های چرخ باشند ، چرخ میتونه بچرخه. چهار مهارت اصلی : Speaking ,Listening , Reading , Writing  برای تقویت لغات تکنیک های یادگیری لغت زیاده ، تبلیغات الکی هم هستند مثل یادگیری در خواب و ... هم هستند.منبع اول : Longman Communication 3000 لیست ۳هزار لغتی که بیشتر استفاده شده هم در نوشتار و هم در گفتار انگلیسی ، همه رو یکجا یاد نگیرید ، توی این لیست هزار لغت اول با s1 , w1 مشخص شده و همچنین هزارتای دوم و سوم رو هم مشخص کردن. راه یادگیری صحیح لغت رو هم در پست دیگه میگم.منبع دوم : از محتواهای آموزشی ،‌هر جا کلمه‌ای جدید دیدین توی متن زیرش خط بکشید و همونجا معنیشو توی دیکشنری چک نکنید ، سعی کنید معنی لغت رو خودتون بر اساس معنی جمله و پاراگرافی که توش استفاده شده حدث بزنید. وقتی یک کلمه براتون زیادی آشنا بود و بیشتر از سه چهار بار به چشمتون خورد اون کلمه ، دیگه لازمه که معنیشو از دیکشنری چک کنید و توی دفترچه اتون یادداشتش کنید تا بعدا بتونید مرورش کنید.فایده‌ی این روش اینه که معنی کلمه هارو کاربردی یاد میگیرید که خیلی موثر تره ،‌ هرچقد راحت تر یاد بگیرید سریع تر فراموش میکنید! پس اگه چند بار به خودتون فشار بیارید تا معنیشو حذث بزنید و بخودتون زحمت بدین که توضیحات دیکشنری رو بخونید توضیحات رو درک کنید و خلاصه توضیحات رو یادداشت کنید با چند تا مثال تاثیرش توی حافظه بیشترهدیکشنری مناسب :‌LongMan ، بهترین و کامل‌ترین دیکشنری از نظر من چون همه‌ی معانی و کاربرد های یک لغت رو داره به همراه مثال و ضرب المثل‌ها و نکات گرامری و خیلی چیزای دیگه. یادتون باشه که انگلیسی رو با فارسی یاد نگیرید ، انلگیسی رو باید با انگلیسی یاد بگیرید اگه میخواهید روون انگلیسی صحبت کنید.* کتاب‌‌های Oxford Word Skills هم سه تا کتاب توی سه تا صطح هم خوبهمتد‌های یادگیری ترکیبی انگلیسی برای نوجوانان : Learn English Teens : این سایت بخش های مختلفی داره ، مهارت‌های اصلی و بخش های فرعی مثل بازی و ... برای تازه کارها مناسبه و مطالبش هم صطح بندی هستند. هر وقت حوصله کار دیگه ای نداشتم یک مطلب از این سایت برمیداشتم و توی سایت keybr میزاشتم و تایپش میکردم ، هم زبان یاد میگرفتم هم تایپ ده انگشتی. این سایت بخش های مختلفی داره ، مهارت‌های اصلی و بخش های فرعی مثل بازی و ... برای تازه کارها مناسبه و مطالبش هم صطح بندی هستند.انگلیسی بدون زحمت :‌ EFFORTLESS ENGLISH ، توسط AJ HOG  ، برای وقت‌های مرده مثل وقتی که توی تاکسی هستید یا کار خاصی نمی‌کنید خیلی مفیده که به aj hog گوش کنید. گرامر ، لغت ، speaking و لحجه‌ی خودتون رو بهتر کنید با گوش کردن بهش . توضیحاتش توی لینک هست بخونید.محتواهایی که aj استفاده میکنه نه تنها زبان شمارو بهتر میکنه ، زندگی شمارو هم بهتره میکنه ! از نویسندگان و بزرگان و افراد موفق صحبت میکنه که خیلی توصیه میکنم گوش کنید.انگلیسی با موزیک : آهنگ هایی که دوست دارید متنشون رو بخونید و معنیشون رو هم میتونید توی اینترنت پیدا کنید ، یه اپلیکیشن باحال هم بود به اسم musimax فک کنم ، بهترین راه اینه که توی یوتیوب اسم آهنگ رو با Lyrics سرچ کنید ، قطعا پیدا میکنید. مجموعه راه های دانلود از یوتیوب هم توی یه پست دیگه میزارمکتاب داستان : کتاب های Oxford bookworms ، که داستان های جالبی رو در سطح های مختلف (stage) تنظیم کردن انتشارات دیگه‌ای هم هستن ولی  stage آکسفورد استاندارد تره ، اسم کتاب‌هایی که خودم خوندم یادم رفته مال چند سال پیشه ولی خیلی جالب بودن داستان هاش که باعث میشد تا ته کتاب داستان رو بخونم.آها یادم اومد Ethan Frome اولین کتاب داستانی انگلیسی بود که خوندم و ازش خوشم اومد ...بازی کامپیوتری :‌ بازی های کامپیوتری یک متد خیلی فان و باحاله و کاربردی کلمات رو یاد میگیرید ، الان همه میدونن فایر این د هول یعنی چی :) ،‌ بازی های زیادی هست ولی یک سری شون نیاز زیادی به خوندن و فهمیدن انگلیسی داره ، بازی های پیشنهادی من MineCraft هستش که توش یک عالمه چیزه که میتونید اسمشون رو توی بازی یاد بگیرید. بازی بعدی Fortnite که میتونه از مواد اعتیادآورتر باشه ، توی بازی های آنلاین میتونید با هم تیمی هاتون صحبت کنید و این جای خیلی خوبیه که با چند تا خارجی هم کلام بشید :)شبکه‌های اجتماعی زبان‌آموزان :‌منظورم فیسبوک و اینا نیست یه سری سایت‌ها به اسم Language Exchange هم باحالا از توی این گروه ها توی چند گروه اسکایپی عضو شدم که خیلی خوب بودن همه اعضا و هنوز باهاشون در تماسم ...تمرکزم بهم خورد دیگه بقیه اش باشه در فرصت بعدی... شما هم اگه متد یا روش خاصی مد نظرتونه توی کامنت ها بگید ...با تشکر @semycolon </description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Thu, 06 Jun 2019 20:05:42 +0430</pubDate>
            </item>
                    <item>
                <title>برنامه‌نویس بهتری باشید</title>
                <link>https://virgool.io/@bahman_asheghi/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%D9%86%D9%88%DB%8C%D8%B3-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C-%D8%A8%D8%A7%D8%B4%DB%8C%D8%AF-ktsv4do0gnhj</link>
                <description>سلام ویرگولی های عزیز  تو این پست میخوام در مورد چند تا از مشخصات و ویژگی‌ های‌ شخصیتی که فکر می‌کنم بسیاری از برنامه‌نویس‌ های بزرگ دارند،صحبت کنم. من اهل کتابخوندن نیستم و کتابی بلد نبودم براتون بنویسم : /قبل ازینکه شروع کنیم باید بگم که این‌ موارد نتیجه‌ تجربه‌ی شخصی منه ، چیزهایی که خودم دیدم و از بقیه یاد گرفتم در طول چند سالی که کار کردم. شما هم  مجبور نیستید تمام این مشخصات رو داشته باشید تا یک برنامه نویس بزرگ باشید.چندتاشونو هم اگه داشته باشید وضعیت تون خوبه.اگه شما صفت خاصی مد نظرتون هست که توی این لیست نیومده حتما توی کامنت ها بگید.زبان‌انگلیسیبرای ما ایرانی‌ها یادگیری زبان انگلیسی واجبه، چون تاثیرش رو دارم می‌بینم می‌گم خودم وقتی تازه شروع کردم نصف وقتم رو برای زبان می‌گذاشتم الان هم به تازه کار‌ها میگم نصف وقت‌تون رو برای زبان بزارید. شاید در اول کار بشه از روی آموزش های قدیمی فارسی کارتون رو راه بندازید ولی قطعا جلو تر که برید به زبان انگلیسی نیاز خواهید داشت. صبرداشتن صبر در همه‌ی زمینه‌ها لازمه اون هم تو زمینه‌ی تکنولوژی ، تکنولوژی‌ها معمولا کاری که ما می‌خواهیم رو انجام نمیدن! چه تعمیر کامپیوتر باشه یا شبکه یا هرچیز دیگه‌ای ،  اولین استاد ما گفت &quot; شما تو برنامه نویسی میخواید به کامپیوتر بگید که چیکار کنه ولی کامپیوتر ها هم بسیار خنگ هستن و منظور شمارو  براحتی درک نمی‌کنن”  فهموندن دقیق منظورمون به کامپیوتر ها کار پیچیده‌ایه. و همیشه چیز‌های زیادی هست که طبق انتظار ما درست کار نمی‌کنه. پس طبیعیه که بعضی وقتا چند دقیقه یا چندساعت حتی ممکنه چند روز لازم باشه تا وقت بزارید و مشکل رو پیدا و حلش کنید.  پس اهمیت صبر برای برنامه‌نویسان بزرگ خیلی روشنهحلال مشکلاتکسانی که به مدرسه قانون میرن ، یاد میگیرن تا به مساعل به دید قانونی نگاه کنن ، ما برنامه نویس‌ها هم یاد میگیرم تا به مساعل به دید شی گرایی (و … ) نگاه کنیم! نمیدونم اوباما یا موسس اپل گفته بود همه باید برنامه‌نویسی یاد بگیرن چون برنامه‌نویس به مردم یاد میده چجوری فکر کنند.توی برنامه‌نویسی کار اصلی ما مدل کردن مساعل و مشکلات دنیای واقعی به کده ، و اگر اهل حل کردن مشکلات و راه‌حل دادن هستید خیلی عالیه. خودم معمولا دوست ندارم چیزهای خونه که خراب میشن رو درست کنم ولی وقتی یه راه‌حل بهتر مشکلاتم توی برنامه‌هام پیدا میکنم خیلی حال میکنم :)ایلاقهعلاقه مهم ترین آیتم این مطلبه ، من عاشق برنامه‌نویسی‌ام ، شغل دیگه‌ای جز برنامه‌نویسی انتخاب نمی‌کنم.چون هیچ‌ کار دیگه‌ای رو اونقدر دوست ندارم که منو روزی ۱۶ ساعت پشت میز نگه داره.نمی‌گم که علاقه واجبه ولی خیلی تاثیر داره. جایی هم شنیدم که باید به کارت علاقه داشته باشی تا پیشرفت کنی و الان بهش اعتقاد دارم.ممکنه هنوز درک واقعی از برنامه نویسی نداشته باشین، پس اگه هنوز عاشقش نشدین بیشتر درگیرش بشین. من خودم حسم نسبت به برنامه نویسی خیلی فرق داشت چون اول که با اندروید شروع کردم و اطلاعاتم در مورد فریموورک‌اندروید کم بود ، خیلی کار اعصاب خوردکنی بود ، ولی همین که فهمیدم چی به چیه دیگه کار لذت‌بخش شد.عشق یادگیریتکنولوژی‌ها سریع پیشرفت می‌کنند، همه چیز خیلی سریع عوض میشه و چیزای بهتر هر روز میاد ، چزایی که بیست سال پیش بودند دیگه استفاده نمی‌شن و کاربردی ندارند. اگه برنامه‌نویس ۲۰ سال پیش به امروز سفر زمان کنه ، کاری نیست براش! و مجبوره تکنولوژی‌های امروزی رو یادبگیره.موسس NPM توی آمار سال قبل گفت طول عمر هر تکنولوژی و فریموورک حداکثر پنج ساله!شما مجبور نیستید عاشق یادگیری باشید ولی مجبورید یادبگیرید! پس شل کنید و کمی لذت ببرید :)کارگروهیمهارت کارگروهی قطعا به شما در این کار کمک بزرگی می‌کنه. زمونه‌ای که دو نفر تو گاراژ خونه‌شون می‌نشستند و بزرگترین شرکت تکنولوژی رو می‌ساختن دیگه گذشت.تکنولوژی خیییلییی پیشرفت کرده که برای ساخت چیز مهمی شما مجبورید با دیگران کار کنید، پس اگه خیلی مغرور یا از خودراضی باشید هیچ‌موقع از دیگران فیدبک نمی‌گیرید.پس اگه از این اخلاق‌ها دارید بدونید که راه رو اشتباه میرید.وقتی بخواید تو یک شرکت کار کنید شما باید بتونید افرادی که باهاشون کار می‌کنید رابطه‌ی موثر بسازید.از هم فیدبک بگیرید و همکاری خوبی داشته باشید تا بتونید چیز های بزرگی بسازید. حتی اگه فرینلسر هستید باید بتونید با کارفرما ارتباط خوبی برقرار کنید.اگه مثل من درونگرا هستید از هر فرصت استفاده کنید تا مهارت‌های اجتماعی‌ تون رو ارتقاع بدید.مغرور نبودندنیای تکنولوژی مثل یک اقیانوس خیلی وسیع و عمیقه. کسی که فکر می‌کنه همه چیز رو بلده ، با دیگران کار نمی‌کنه و حتی بعضی افراد که به بقیه توهین می‌کنند، این اخلاق تاثیر منفی جدی توی پیشرفت‌شون داره.هیچکس نمی‌تونه همه چیز رو توی یه فیلد بدونه.اگه همچین فکری می‌کنه یعنی چیزی نمی‌دونه ، چون هرچی بیشتر یاد بگیری زمینه‌های بیشتری رو میبینی که وجود دارند که ازشون خبر نداشتی.یکی از برنامه نویسان ارشد سیستم عامل اندروید توی استک شیش تا سوال پرسیده‌ بود!تو آدمایی که شناختم ، هرکی دانش‌اش بیشتر بود ، تواضع‌اش هم بیشتر بود.باید به مهارت‌هایی که یاد گرفتید اعتماد به نفس داشته باشید و اگه راه حلی داشتید توی جمعی ساکت نمونید ، یا اگه مهارت شما از بقیه بالاتره نباید کسایی که مهارت‌شون کمتره رو مسخره کنید. و …  پس به خودتون و کارتون اعتماد داشته باشید و به خودتون افتخار کنید حتی اگه یه برنامه ساده رو از روی یه آموزش ساختید. هر کسی بلد نیست کاری که شما کردید رو بکنه پس باید بهش افتخار کنید حتی اگه کد خوبی نیست. شما بیشتر تمرین می‌کنید بیشتر یاد می‌گیرید و کم کم کار شما پیشرفت می‌کنه.مدیریت تسک‌هاتقسیم کارها به تسک‌های کوچیک‌تر و مدیریت زمان به پیشرفت سرعت شما خیلی کمک می‌کنه.خودم پروژه هامو توی مغزم مدیریت می‌کردم و پروژه ها کم کم بزرگ‌تر شد تا دیگه بدون trello نمی‌تونستم کار کار کنم. حتما مدیریت زمان و مدیریت تسک هارو انجام بدید تا ببینید چقد تاثیر مثبت دارهوقتی کار فریلنسری بکنید یا شرکت خودتون رو مدیریت کنید مهارت تخمین زمان یک تسک خیلی واجبه.داشتن تمرکز روی کار هم خیلی واجبه که مدیرت تسک‌ها باعث میشه تمرکزتون روی مدیرت پروژه از دست ندین.به پایان رسید این مطلب  بهتر از دیروز باشید.</description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Sun, 12 May 2019 16:24:19 +0430</pubDate>
            </item>
                    <item>
                <title>تکنیک هایی که هر برنامه نویس باید بداند</title>
                <link>https://virgool.io/coderlife/%D8%AA%DA%A9%D9%86%DB%8C%DA%A9-%D9%87%D8%A7%DB%8C%DB%8C-%DA%A9%D9%87-%D9%87%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A8%D8%AF%D8%A7%D9%86%D8%AF-pbxsw860239x</link>
                <description>همه میدانیم که در دنیای برنامه نویسی همه چیز خیلی سریع پیشرفت و تغییر میکند. ما به عنوان برنامه نویس هر روز باید وقت بگذاریم برای یادگیری تکنولوژی های جدید.چون ممکنه تکنولوژی که ما بلدیم قدیمی شه و بی کار بشیم :/مقدمه کافیه این تکنیک هارو اجرا کنید تا سریع‌تر هر زبانی که میخواهید یاد بگیرید.1.با کار کردن یاد بگیرید. وقتی که یاد میگیرید با کد بازی کنیدفقط با خوندن کتاب و نگاه کردن به نمونه کد ها بطور موثر چیزی  یاد نمیگیرید, نمونه کدی که خوندید رو دوباره بنویسید و اجرا کنید و بعدش  باهاش بیشتر بازی کنید تا خوووب تو ذهنتون فرو بره -_-2.اصول رو جدی بگیریدهر زبانی یا موضوعی یا کتابخانه ای که بخواهید باهاش کار کنید  اگر پایه‌ی کار اون رو ندونید بعدن گیر میکنید و در درک اون مطلب به مشکل  خواهید خورد.پس اگه از اول اصول رو خوووب یاد بگیرید و به حافظه بلند مدت فرو کنید, مطمئن باشید در آینده سریع تر یاد میگیرید.3.با دست کد بنویسیدبا خودکار رو کاغذ کد بنویسید , چون اونجا آی‌دی‌ای نیست که کمکتون کنه.با این روش دقت خودتون رو بیشتر میکنید و یکی از متد های عمومی یادگیری نوشتن هست.ثانیا برای گرفتن کار به این مهارت نیاز دارید, معمولن توی آزمون های دانشگاه ها یا شرکت ها مجبورید با دست روی کاغذ کد بنویسید.4.کمک بگیریدبهتر است که یک راهنما داشته باشید تا راه پیش رو را به شما نشان دهد.خب کمتر به بیراهه کشیده می‌شوید و وقت کمتری تلف می‌کنید.5.در منابع آنلاین بگردید. ثروتی از منابع آموزشی توی اینترنت هستاگر فهم و درک یک موضوع برایتان سخت است, در اینترنت بدنبال  منابع مشابه بروید و آموزش های دیگری را هم امتحان کنید شاید آنقدر هم که  فکر میکردید آن موضوع سخت نبوده!6.وقت دیباگینگ استراحت کنیدوقتی که دیباگ میکنید خیلی آسان است که در یک سوراخ‌موش‌ گیر  کنید و ساعت ها در آن سر در گم بمانید و هیچ ضمانتی نیس که اگر اونجا  خودتون رو چند ساعت درگیر کنید باگ را مشکل را حل میکنید.برای جلو گیری از این:کمی استراحت کنید و به کار دیگری بپردازید و چند ساعت از باگ و درد سر دور باشید.در این زمان باگ جایی نمیره و شما حد اقل سر‌حال‌تر شده‌اید و مغز شما بهتر کار میکند.نتیجه گیری : Keep Calm and Keep on Coding :)</description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Sun, 05 May 2019 12:46:29 +0430</pubDate>
            </item>
                    <item>
                <title>اشتباهات رایج برنامه‌‌نویسان</title>
                <link>https://virgool.io/programmers-revolution/%D8%A7%D8%B4%D8%AA%D8%A8%D8%A7%D9%87%D8%A7%D8%AA-%D8%B1%D8%A7%DB%8C%D8%AC-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%D9%86%D9%88%DB%8C%D8%B3%D8%A7%D9%86-ojh5rs6mgzf2</link>
                <description>۱.نداشتن هدف واضحاگه هدفی توی سر نداشته باشی هر جا که باد بره تو هم میریاگر می‌خواهید در شغل برنامه نویسی موفق باشید, باید بدانید که دقیقا کجا میخواهید بروید.داشتن یک ذهنیت مبهم از کاری که در یک فاصله زمانی میخواهید  انجام دهید, کافی نیست. در عوض شما باید اهداف محکمی داشته باشید;تا در هر نقطه از راه جهت شما مشخص باشد.خیلی از برنامه نویسان و متخصصان , بعد از ده‌ها سال شغل و مسئولیت سابق خود شون رو دارند, بعله ده سال !!!این اتفاق ناراحت کننده‌اس ولی انتخاب پیش‌فرضه. اگه شما هنوز  هدف کاریتون رو به وضوح مشخص نکردید, تقریبن همین اتفاق هم برای شما  میوفته.خب چکارش میشه کرد؟ امروز,همین الان,وقت بزارید و فکر کنید در مورد شغل ایده‌آل تون و تصمیم بگیرید که اهداف نزدیک تون چی هستند.یعنی ببینید مقصد اصلی تون کجاست و الان کدوم وری باید برید؟؟؟وقتی به هدف نزدیکتون رسیدین , هدف نزدیک بعدی رو انتخاب کنید.و هدف اصلی رو همیشه به یاد داشته باشید. مصلا روی یه کاغذ بنویسید بزنید به دیوار تا  همیشه بدونید که به کجا دارید میرید.و اشتباهی که حتی از هدف نداشتن هم رایج تره , تعویض سریع هدفه.خب بدیهیه که کسی که هر هفته از یک شاخه به اون شاخه بپره نتیجه ای هم نمیگیره.2. مهارت های نرم یا غیر تکنیکیاگر میخواهید برنامه نویس بهتری باشید , باید خلاقیت , سرعت  عمل , سلامت جسمی و بقیه موارد مشابه رو هم داشته باشید و بهشون توجه کنید.پس در کنار تقویت مهارت کد نویسی به روش های تقویت مهارت های نرم هم توجه کنید.در مورد مهارت‌های نرم میتونید سرچ کنید.3.قاطی جامعه نبودنبودن در جامعه کمک میکنه تا حس تنهایی نکنید و حس کنید که به جایی تعلق دارید.بعلاوه میتونید رابطه های جدیدی پیدا کنید و از اطراف ایده بگیرید.اگه عضو یک اجتماع برنامه نویسی نیستید, پیشنهاد میکنم که حتما عوض (عضو) بشید.عضو چیزی بزرگتر از خودت بودن , راهیه برای رشد.بودن در یک جامعه برنامه نویسی فایده های زیادی داره :|تو خارج که کد کمپ میزنن ولی ازین سوسول بازیا ما نداریم !!!شما میتونید برید به کلاس های آموزشی.یا اگر حضوری راحت نیستید مجازی که زیاده :/4.تخصصی کار نکردنعمیق کار کنید. چون تخصص داشتن توی یک زمینه خیلی فایده داره :|شما هم شنیدید که همه کاره هیچ کاره اس. بد برداشت نکنید این که اطلاعات پایه در مورد همه چی داشته باشید, لازمه.اول در یک حوضه مشخص متخصص بشید و بعد میتونید در حوضه‌ی بعدی کار کنید.چون میگن توی برکه ماهی بزرگه باشی بهتره تا توی دریا ماهی کوچیکه.بعد ازین که توی برکه‌ی خودتون بزرگ شدید میتونید برید جاهای بزرگ تر و عمیق تر شنا کنید.5.سرمایه گذاری نکردن روی برند شخصی در طول زندگی خیلی چیزا میان و میرن. شما ممکنه شغلتون رو چند  بار عوض کنید, ممکنه پولدار بشین یا ورشکسته, ممکنه چاق بشین یا لاغر ولی  یک چیز هست که تغییر نمیکنه...اسم شما.اسم شما یا برند شخصی شما یک دارایی خییییلییی با ارزشه.که بسیاری از برنامه نویسان حتی خبر ندارند ازین داراییشون.داشتن یک برند میتونه خیلی در گرفتن کار یا ترفیع درجه کمک کنه. یا شما میتونید بیزنص خودتون رو راه بندازید.اگه شما اسم و رسم خوبی داشته باشید میتونید همه چیزو با یک علامت دست عوض کنید.خب فروش محصولات و سرویس ها که طبیعی بنظر میرسه, ولی تاحالا فکر کردید به ارزش فروش خودتون؟(به عنوان برنامه نویس).برای ساختن یک برند شخصی تو رشته برنامه نویسی, من توصیه  میکنم با ساختن یک بلاگ شروع کنید و یک مبحص یا تخصص , که قراره با اون  شناخته بشین , رو انتخاب کنید. و یاد بگیرید که چطور حرفتون رو پخش کنید و  اسمی بدر کنید.یک  راهش تولید محتوایی که برای بقیه مفید باشه.6.کار نکردن روی پروژه های جانبیکار کردن روی پروژه های جانبی خیلی مفیییده :|اکثر افرادی که شاغل هستند گله میکنند که فرصت نداریم تا روی دیگر تکنولوژی ها کار کنیم.شما با کار کردن روی پروژه های جانبی میتونید به ترز فجیعی  مهارت های برنامه نویسی خودتون رو تقویت کنید و کنارش یه اضافه درآمد هم  میتونید داشته باشید.همه ی برنامه نویسانی که پروژه جانبی کار میکردن (یا زیر آبی  میرفتن تو شرکت) در نهایت اون پروژه جانبی تبدیل به کار تمام وقت شون شد.فواید دیگه ای هم هست که اینجا نامبرده نمی‌شن 7.برنامه ای برای خودآموزی نداشتنداشتن برنامه منظم برای یادگیری و آپدیت اطلاعات خییییلی مفیده :| چون یکی از فاکتور های موفقیته و نداشتن اینچنین برنامه ای اشتباههاین جور آدمی نه تنها خودشو رشد میده بلکه آدمهای اطرافش رو هم رشد میده.میتونید برنامه ریزی کنید که هر ماه یک کتاب بخونید و هر سال 12 تا کتاب خوندید :/یا هر روز نیم ساعت مطالعه کنید , و بعد از یکی دو سال خیییلییی تغییر میکنید.عمل کنیدشااااااید مطالب این پست بنظرتون مفید بود ولی چه فایده اگه تغییری در شما ایجاد نکنه؟پس بجای خوندن و پر کردن مغزتون , عمل کنید , همین امروز</description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Sun, 05 May 2019 12:03:43 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش تایمر/کانتر  ATMega32  - قسمت اول</title>
                <link>https://virgool.io/@bahman_asheghi/avr-timer-counter-igbtjslpk0lx</link>
                <description>در کل سه تایمر/کانتر به نام‌های &quot;تایمرصفر ، تایمر‌یک و تیامردو &quot; داریم که صفر و یک هشت بیتی هستند و تایمر‌یک ۱۶ بیتی.رجیستر‌هایی که باید بشناسیدTCNTn: Timer / Counter Registerاین رجیستر با هر بار کلاک یک عدد به مقدارش اضافه میشه درکل کار شمارنده رو انجام میده. مقدار اولیه اش صفره و قابلیت نوشتن و خوندن ازش رو داریم. TOVn: Timer Overflow Flag هر تایمر فلگ سرریز داره که وقتی تایمر سرریز میکنه ،یا وقتی شمارنده به تهش میرسه ، این فلگ ست میشه. TCCRn : Timer Counter Control Registerاین رجیستر برای تنظیم حالت های تایمر/کانتر استفاده میشه.OCRn : Output Compare Registerمقدار داخل این رجیستر با شمارنده مقایسه میشه وقتی برابر باشند فلگ  OCFn   ست میشه.تایمر صفر در ادامه تایمر صفر رو بررسی می‌کنیم. اول باید رجیستر های اساسی تایمر صفر رو درک کنیم. TCNT0: Timer / Counter Register 0 یک رجیستر هشت بیتی که با هرپالس یکی بهش اضافه می‌شه.که بهش شمارنده می‌گیم.  TCCR0: Timer / Counter Control register 0 یک رجیستر هشت بیتی برای تنظیم حالت و منبع کلاک Bit 7- FOC0: Force compare match بیت هفتم ، تنها بیتی که هنگام تولید موج استفاده می‌شود، را می‌نویسد. نوشتن یک در این بیت باعث میشود که تولید کننده موج مانند زمانی عمل کند که مقایسه انجام شده.Bit 6, 3 - WGM00, WGM01: Waveform Generation Mode Bit 6, 3 - WGM00, WGM01: Waveform Generation Mode حالت‌های عملکرد تایمر با بیت سوم و ششم این رجیستر طبق جدول بالا مشخص می‌شوند.حالت نرمال : با رسیدن شمارنده به ۲۵۵ فلگ سرریز ست می‌شود.حالت ctc : با رسیدن شمارنده به مقدار مقایسه شونده وقعه فعال می‌شود و شمارنده نیز صفر می‌شود.حالت  PWM : توضیح قسمت های بعدی ...حالت fast PWM Bit 5:4 - COM01:00: Compare Output Mode این دو بیت تعیین کننده حالت تولید‌کننده شکل‌موج هستند. Bit 2:0 - CS02:CS00: Clock Source Select این سه بیت برای انتخاب منبع کلاک استفاده می‌شوند. وقتی مقدار سه بیت صفر باشد تایمر متوقف می‌شود.ولی بعد از ست کردن مقدار بین ۲ تا ۵ باینری با pre-scaler شروع به تولید کلاک می‌کنه و شمارنده عددش رو اضافه می‌کنه در هر سیکل.تعیین کلاکخب تصویر بالا نیاز به توضیح نداره از مقدار ۲ باینری تا ۵ باینری کلاک رو تقسیم بر عدد سمت راستش میکنه.  TIFR: Timer Counter Interrupt Flag register رجیستر فلگ وقفه تایمر/کانتر Bit 0 - TOV0: Timer0 Overflow flag بیت صفر فلگ سرریز تایمر صفر. صفر بودن این بیت یعنی سرریز نشده و یک بودن یعنی سرریز شده. Bit 1 - OCF0: Timer0 Output Compare flag فلگ خروجی مقایسه : وقتی مقدار شمارنده و مقایسه شونده برابر شوند این بیت یک در غیر اینصورت صفر می‌شود.بقیه بیت ها هم به صورت زیر هستند.Bit 2 - TOV1: Timer1 Overflow flagBit 3 - OCF1B: Timer1 Output Compare B match flagBit 4 - OCF1A: Timer1 Output Compare A match flagBit 5 - ICF1: Input Capture flagBit 6 - TOV2: Timer2 Overflow flagBit 7 - OCF2: Timer2 Output Compare match flagسرریز در تایمر صفردرحالت نرمال : وقتی شمارنده سرریز می‌شود، یعنی مثلا از صفر به ۲۵۵ می‌رود، فلگ  TOV0  ست می‌شود.توجه کنید که مقدار شمارنده بصورت خودکار صفر نمی‌شود و باید بصورت دستی این کار را انجام دهیم.مقدار شمارنده بر اثر زمانساخت تاخیر با اسفاده از تایمر صفرمراحل برنامه نویسی :مقدار اولیه TCNT0 را مشخص کنیم. مثلا 0x25برای حالت نرمال و حالت pre-scalar کلاک ، به رجیستر TCCR0 مقدار می‌دهیم. به محض مقدار دهی به این رجیستر ، تایمر/کانتر شروع به شمارش می‌کند.تایمر به شمارش ادامه می‌دهد ، پس برای کنترل سرریز مقدار TOVO رو نظارت میکنیم که وقتی مقدار یک بگیره یعنی سرریز رخ داده.توقف تایمر با مقدار دهی صفر به TCCR0.پاک کردن فلگ TOV0. برای پاک کردن فلگ ما باید مقدار یک در این بیت بریزیم .برگشت به تابع main.برنامه‌ی وقته با تایمر#include &lt;avr/io.h&gt;
void T0delay();
int main(void){
	DDRB = 0xFF;		/* PORTB as output*/
    	while(1){  		/* Repeat forever*/
		PORTB=0x55;
		T0delay();  	/* Give some delay */
		PORTB=0xAA;
		T0delay();
    	}
}
void T0delay() {
	TCNT0 = 0x25;  		/* Load TCNT0*/
	TCCR0 = 0x01;  		/* Timer0, normal mode, no pre-scalar */
	
	while((TIFR&amp;0x01)==0);  /* Wait for TOV0 to roll over */
	TCCR0 = 0;
	TIFR = 0x1;  		/* Clear TOV0 flag*/
}مثالیک شکل موج مربعی با طول ۱۰ میلی ثانیه بالا و ۱۰ میلی ثانیه پایین تولید کنیم.اول باید یک وقفه ۱۰ میلی ثانیه‌ای با تایمر صفر تولید کنیم.فرض که میکرو رو روی فرکانس ۸ مگاهرتز تنظیم کردیم.با استفاده از pre-scaler اه ۱۰۲۴ ، فرکانس منبع کلاک می‌شود : 8 MHz / 1024 = 7812.5 Hz زمان هر سیکل :  1 / 7812.5 = 128 μs بنابراین برای وقفه ۱۰ میلی‌ثانیه‌ای تعداد سیکل‌های مورد نیاز تقریبا 78 میشه 10 ms / 128 μs = 78  پس ما به ۷۸ سیکل نیاز داریم تا وقفه ۱۰ میلی‌ثانیه‌ای بسازیم. پس مقداری که باید توی TCNT0 بزاریم میشه 178 :  TCNT0 = 256 – 78  یعنی شمارنده از ۱۷۸ شروع می‌کنه به شمردن و ۷۸ تا سیکل می‌شماره تا سرریز کنه.پس ما اگه مقدار 0xB2 رو داخل رجیستر TCNT0 بزاریم ، تایمر بعد از ۱۰ میلی ثانیه سرریز می‌کنه.برنامه وقفه ۱۰ میلی‌ثانیه‌ای با تایمر صفر #include &lt;avr/io.h&gt;
void T0delay();
int main(void)
{
	DDRB = 0xFF;		/* PORTB as output */
	PORTB=0;
    	while(1)  		/* Repeat forever */
    	{
		PORTB= ~ PORTB;
		T0delay();
    	}
}
void T0delay()
{
	TCCR0 = (1&lt;&lt;CS02) | (1&lt;&lt;CS00); /* Timer0, normal mode, /1024 prescalar */
	TCNT0 = 0xB2;  		/* Load TCNT0, count for 10ms */
	while((TIFR&amp;0x01)==0);  /* Wait for TOV0 to roll over */
	TCCR0 = 0;
	TIFR = 0x1;  		/* Clear TOV0 flag */
}وقفه تایمر TIMSK: Timer / Counter Interrupt Mask Register ما باید بیت  TOIE0 (Timer0 Overflow Interrupt Enable)  رو در رجیستر  TIMSK   ست کنیم تا وققه‌ی تایمر صفر فعال بشه. بعد از فعال شدن ، به محض سرریز تایمرصفر ، کنترلر به روتین وقفه تایمر صفر پرش می‌کنه.برنامه وقفه یک میلی‌ثانیه‌ای با تایمر صفر #include &lt;avr/io.h&gt;
#include &lt;avr/interrupt.h&gt;

/* timer0 overflow interrupt */
ISR(TIMER0_OVF_vect)
{
	PORTB=~PORTB;		/* Toggle PORTB */
	TCNT0 = 0xB2;
}
int main( void )
{
	DDRB=0xFF;  		/* Make port B as output */
	sei();
	TIMSK=(1&lt;&lt;TOIE0);  	/* Enable Timer0 overflow interrupts */
	TCNT0 = 0xB2;  		/* Load TCNT0, count for 10ms*/
	TCCR0 = (1&lt;&lt;CS02) | (1&lt;&lt;CS00); /* Start timer0 with /1024 prescaler*/
	while(1);
}
منبع :  https://www.electronicwings.com/avr-atmega/atmega1632-timer </description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Fri, 03 May 2019 13:18:16 +0430</pubDate>
            </item>
                    <item>
                <title>سلام ویرگول</title>
                <link>https://virgool.io/@bahman_asheghi/%D8%B3%D9%84%D8%A7%D9%85-%D9%88%DB%8C%D8%B1%DA%AF%D9%88%D9%84-uwbral3hm7mm</link>
                <description>از امروز سمیکالن به ویرگول اضافه شد.با این که اسکیه مدیومه احساس خوبی بهش ندارم ولی از طرفی هم مدیوم رو دوس دارماگر چیز باحالی تو برنامه نویسی هام دیدم در اینجا با شما به اشتراک میزارماولین فیدبک : خوبه که نوشته هارو تو ذخیره میکنه ولی بده که نمیگه چرا مطلب رو منتشر نمیکنه؟!</description>
                <category>بهمن عاشقی</category>
                <author>بهمن عاشقی</author>
                <pubDate>Thu, 18 Apr 2019 11:10:14 +0430</pubDate>
            </item>
            </channel>
</rss>