<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های mohammad javad farahnak</title>
        <link>https://virgool.io/feed/@m.farahnak</link>
        <description>برنامه نویس پایتون :)  با من میتونید از طریق fhot707@gmail.com در ارتباط باشید.</description>
        <language>fa</language>
        <pubDate>2026-04-15 04:39:28</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>mohammad javad farahnak</title>
            <link>https://virgool.io/@m.farahnak</link>
        </image>

                    <item>
                <title>آموزش رفع مشکل &quot;Host not found&quot; در OpenResty/NGINX در محیط کوبرنیتز</title>
                <link>https://virgool.io/@m.farahnak/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B1%D9%81%D8%B9-%D9%85%D8%B4%DA%A9%D9%84-host-not-found-%D8%AF%D8%B1-openrestynginx-%D8%AF%D8%B1-%D9%85%D8%AD%DB%8C%D8%B7-%DA%A9%D9%88%D8%A8%D8%B1%D9%86%DB%8C%D8%AA%D8%B3-d3zibgyypvls</link>
                <description>آموزش رفع مشکل &quot;Host not found&quot; در OpenResty/NGINX در محیط کوبرنیتزمشکل: خطای &quot;Host not found&quot; در اتصال به سرویس‌ها در NGINXوقتی از OpenResty یا NGINX در یک محیط کوبرنیتز استفاده می‌کنید و سعی دارید به یک سرویس داخلی (مثل Redis یا دیتابیس) متصل شوید، ممکن است با خطای زیر مواجه شوید:Failed to connect to Redis: &lt;service-name&gt; could not be resolved (3: Host not found)
این خطا به این معنی است که NGINX نمی‌تواند نام دامنه سرویس کوبرنیتز (مثل service-name.namespace.svc.cluster.local) را به آدرس IP تبدیل کند. دلیل اصلی این مشکل، عدم تنظیم رزالور DNS در تنظیمات NGINX است. در کوبرنیتز، نام‌های سرویس توسط سرویس DNS داخلی (معمولاً kube-dns یا coredns) به IP تبدیل می‌شوند، اما NGINX به‌طور پیش‌فرض از این تنظیمات استفاده نمی‌کند و نیاز به پیکربندی دستی دارد.این مشکل به‌خصوص در اسکریپت‌های Lua رایج است. بدون تنظیم رزالور DNS، NGINX نمی‌تواند نام سرویس را resolve کند و اتصال با شکست مواجه می‌شود.چرا این مشکل پیش می‌آید؟در کوبرنیتز، سرویس‌ها از طریق نام‌های DNS (مثل service-name.namespace.svc.cluster.local) قابل دسترسی هستند. این نام‌ها توسط سرویس DNS داخلی کوبرنیتز به IP پودها یا ClusterIP سرویس‌ها ترجمه می‌شوند. اما NGINX/OpenResty به‌طور پیش‌فرض از تنظیمات DNS سیستم عامل (مثل /etc/resolv.conf) استفاده نمی‌کند و باید رزالور DNS را در تنظیمات خود مشخص کنید. بدون این تنظیم، تلاش برای اتصال به سرویس‌های کوبرنیتز با خطای &quot;Host not found&quot; مواجه می‌شود.این مشکل ممکن است حتی زمانی رخ دهد که ابزارهایی مثل ping یا nslookup از داخل پود به‌درستی کار می‌کنند، چون این ابزارها از تنظیمات DNS سیستم استفاده می‌کنند، اما NGINX خیر.راه‌حل: تنظیم رزالور DNS در NGINXبرای رفع این مشکل، باید آدرس رزالور DNS کوبرنیتز را پیدا کرده و آن را در تنظیمات NGINX اضافه کنید. مراحل زیر را دنبال کنید:۱. پیدا کردن آدرس رزالور DNSآدرس رزالور DNS در کوبرنیتز معمولاً ClusterIP سرویس kube-dns در namespace kube-system است. برای پیدا کردن این آدرس، دستور زیر را اجرا کنید:kubectl get svc -n kube-system kube-dns
خروجی نمونه:NAME       TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)         AGE
kube-dns   ClusterIP   10.96.0.10   &lt;none&gt;        53/UDP,53/TCP   30d
در این مثال، 10.96.0.10 آدرس رزالور DNS است. این آدرس را یادداشت کنید.نکته: اگر سرویس kube-dns در cluster شما نام دیگری دارد (مثل coredns)، از همان نام استفاده کنید.۲. بررسی /etc/resolv.conf (اختیاری)برای اطمینان از اینکه پود شما به رزالور DNS درست دسترسی دارد، فایل /etc/resolv.conf را بررسی کنید:kubectl exec -it &lt;your-pod-name&gt; -n &lt;your-namespace&gt; -- cat /etc/resolv.conf
خروجی نمونه:nameserver 10.96.0.10
search &lt;namespace&gt;.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
خط nameserver نشان‌دهنده آدرس رزالور DNS است که باید با ClusterIP سرویس kube-dns مطابقت داشته باشد.۳. اضافه کردن رزالور به تنظیمات NGINXفایل تنظیمات NGINX (مثل /etc/nginx/nginx.conf یا فایل مربوط به ConfigMap) را ویرایش کنید و رزالور را در بلوک http یا بلوک مرتبط اضافه کنید:http {
    resolver 10.96.0.10 valid=30s;
    resolver_timeout 5s;

    server {
        listen 80;
        location /api/ {
            lua_code_cache on;
            content_by_lua_file /path/to/your-script.lua;
        }
    }
}
resolver 10.96.0.10: آدرس IP سرویس kube-dns که در مرحله اول پیدا کردید.valid=30s: نتایج DNS برای ۳۰ ثانیه کش می‌شوند تا تعداد درخواست‌های DNS کاهش یابد.resolver_timeout 5s: حداکثر زمان انتظار برای پاسخ DNS را به ۵ ثانیه تنظیم می‌کند.۴. اعمال تغییراتبعد از ویرایش فایل تنظیمات، NGINX را ری‌لود کنید:kubectl exec -it &lt;your-pod-name&gt; -n &lt;your-namespace&gt; -- nginx -s reloadاگر تنظیمات NGINX از طریق ConfigMap مدیریت می‌شود، ConfigMap را ویرایش کنید:kubectl edit configmap &lt;nginx-configmap-name&gt; -n &lt;your-namespace&gt;سپس پود را ری‌استارت کنید تا تغییرات اعمال شود:kubectl delete pod &lt;your-pod-name&gt; -n &lt;your-namespace&gt;۵. بررسی و تستبعد از اعمال تغییرات، درخواست خود را دوباره تست کنید (مثلاً با curl یا ارسال درخواست به API). لاگ‌های NGINX را بررسی کنید تا مطمئن شوید خطای &quot;Host not found&quot; برطرف شده است:kubectl logs &lt;your-pod-name&gt; -n &lt;your-namespace&gt;اگر اسکریپت Lua شما پیام‌هایی مثل &quot;service connected successfully&quot; را لاگ می‌کند، یعنی اتصال برقرار شده است.راه‌حل موقت: استفاده از آدرس IP به‌جای نام سرویساگر به هر دلیلی نمی‌توانید تنظیمات NGINX را تغییر دهید، می‌توانید به‌طور موقت آدرس IP سرویس را مستقیماً در اسکریپت Lua یا متغیرهای محیطی استفاده کنید.هشدار: هاردکد کردن IP راه‌حل دائمی نیست، چون IP سرویس‌ها در کوبرنیتز ممکن است تغییر کند. بهتر است از رزالور DNS استفاده کنید.نکات تکمیلیبررسی NetworkPolicy: اگر مشکل همچنان پابرجاست، بررسی کنید که آیا NetworkPolicy در namespace شما ترافیک به سرویس مقصد را محدود کرده است:kubectl get networkpolicy -n &lt;your-namespace&gt;دیباگ DNS در Lua: اگر نیاز به دیباگ بیشتر دارید، از ماژول resty.dns.resolver در اسکریپت Lua استفاده کنید تا مطمئن شوید نام سرویس به IP درست resolve می‌شود:local resolver = require &quot;resty.dns.resolver&quot;
local r, err = resolver:new{
    nameservers = {{&quot;10.96.0.10&quot;, 53}}, -- آدرس kube-dns
    retrans = 5,
    timeout = 2000,
}
local answers, err = r:query(&quot;&lt;service-name&gt;&quot;)
if not answers then
    ngx.log(ngx.ERR, &quot;DNS resolution failed: &quot;, err)
else
    for _, ans in ipairs(answers) do
        ngx.log(ngx.DEBUG, &quot;Resolved IP: &quot;, ans.address)
    end
endنتیجه‌گیریبا اضافه کردن رزالور DNS (مثل 10.96.0.10) به تنظیمات NGINX، می‌توانید مشکل &quot;Host not found&quot; را در OpenResty/NGINX برطرف کنید. این روش به NGINX اجازه می‌دهد تا نام‌های سرویس کوبرنیتز را به آدرس‌های IP درست ترجمه کند و اتصال به سرویس‌ها برقرار شود. همیشه از رزولوشن DNS به‌جای هاردکد کردن IP استفاده کنید تا سیستم شما در برابر تغییرات کوبرنیتز مقاوم باشد.</description>
                <category>mohammad javad farahnak</category>
                <author>mohammad javad farahnak</author>
                <pubDate>Mon, 18 Aug 2025 17:24:44 +0330</pubDate>
            </item>
                    <item>
                <title>اینترفیس در پایتون(یکبار برای همیشه!)interface in python</title>
                <link>https://virgool.io/@m.farahnak/%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%81%DB%8C%D8%B3-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86%DB%8C%DA%A9%D8%A8%D8%A7%D8%B1-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%87%D9%85%DB%8C%D8%B4%D9%87interface-in-python-zjktg02ikvzt</link>
                <description>python interfaceسلام و درود خدمت همراهان گرامی:)2سال نبودم!برگشتم که شروع کنم اینبار با موضوع اینترفیس در پایتون!اگر از زبان دیگه ای مهاجرت کردی به#پایتون و برات سواله که عه پس اینترفیسش کو؟ و معمولا هم کمتر کسی بهش اشاره کرده! جای درستی اومدی:دیمنابع فارسی که هیچ خبری ازش نیست و خارجیام خیلی کم!یه ویدیو آماده کردم که توضیح میدم #اینترفیس چیه و چطوری توی پایتون پیاده سازی میشه و چرا خبری ازش نیست!https://www.aparat.com/v/WgjQM https://www.aparat.com/v/WgjQM </description>
                <category>mohammad javad farahnak</category>
                <author>mohammad javad farahnak</author>
                <pubDate>Fri, 28 Jan 2022 20:27:03 +0330</pubDate>
            </item>
                    <item>
                <title>بات تلگرام قسمت 3/آخر</title>
                <link>https://virgool.io/@m.farahnak/%D8%A8%D8%A7%D8%AA-%D8%AA%D9%84%DA%AF%D8%B1%D8%A7%D9%85-%D9%82%D8%B3%D9%85%D8%AA-3%D8%A2%D8%AE%D8%B1-ayxvonlikaoe</link>
                <description>قسمت آخر بات تلگرام............                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   https://www.aparat.com/v/yndGf </description>
                <category>mohammad javad farahnak</category>
                <author>mohammad javad farahnak</author>
                <pubDate>Sat, 08 Aug 2020 11:36:14 +0430</pubDate>
            </item>
                    <item>
                <title>ساخت بات تلگرام! قسمت 2</title>
                <link>https://virgool.io/@m.farahnak/%D8%B3%D8%A7%D8%AE%D8%AA-%D8%A8%D8%A7%D8%AA-%D8%AA%D9%84%DA%AF%D8%B1%D8%A7%D9%85-%D9%82%D8%B3%D9%85%D8%AA-2-tkrwiqxy7tvv</link>
                <description>سلام ، این قسمت ادامه میدیم کار رو ! بات اصلی رو توی این قسمت میسازیم....                                                                                                                                                                                                                                                                                                                            بریم ویدیو رو ببینیم: https://www.aparat.com/v/7P8Mo </description>
                <category>mohammad javad farahnak</category>
                <author>mohammad javad farahnak</author>
                <pubDate>Wed, 05 Aug 2020 16:20:04 +0430</pubDate>
            </item>
                    <item>
                <title>ساخت بات تلگرام! قسمت 1</title>
                <link>https://virgool.io/@m.farahnak/%D8%B3%D8%A7%D8%AE%D8%AA-%D8%A8%D8%A7%D8%AA-%D8%AA%D9%84%DA%AF%D8%B1%D8%A7%D9%85-%D9%82%D8%B3%D9%85%D8%AA-1-aiwoe7ormdsd</link>
                <description>سلام. دارم یه کد کوچیک میزنم برای یه کاری گفتم که با بقیه هم به اشتراک بذارم!ایده کلی کار: چنتا کانال داریم! حالا هر کانالی میخایم که هرچی پیام توی اینا اومد رو یکم تغییر بدیم و بذاریمشون توی کانال خودمون.حالا تمیز ترین کار برای اینکه بفهمیم پیام جدید توی این کانالا اومده یا نه! اینه که دوتا بات داشته باشیم! یه بات cli که یه اکانت معمولیه مث همین اکانتی که خودمون داریم ازش استفاده میکنیم ، فقط بات کنترلش میکنه!یه بات دیگه هم داریم که اون بات اصلیه و مثل همه رباتایی که میشناسیم یه آیدی داره که آخرش bot داره و بقیه امکاناتی که دیگه هممون دیدیم!این بات cli  هروقت پیام جدید توی کانالای مورد نظر اومد میفرسته به ربات اصلیه و حالا اونم یه پردازش هایی روش انجام میده و میفرسته تو کانال خودمون!بریم ویدیوش رو ببینیم: https://www.aparat.com/v/Zpfnu </description>
                <category>mohammad javad farahnak</category>
                <author>mohammad javad farahnak</author>
                <pubDate>Mon, 25 May 2020 14:53:45 +0430</pubDate>
            </item>
                    <item>
                <title>دیزاین پترن سینگلتون+ویدیو</title>
                <link>https://virgool.io/@m.farahnak/%D8%AF%DB%8C%D8%B2%D8%A7%DB%8C%D9%86-%D9%BE%D8%AA%D8%B1%D9%86-%D8%B3%DB%8C%D9%86%DA%AF%D9%84%D8%AA%D9%88%D9%86%D9%88%DB%8C%D8%AF%DB%8C%D9%88-flswihw6onw7</link>
                <description>الگوی طراحی singletonسلام.توی این نوشته/متن/آموزش/ یا هرچی که اسمش هست میخوایم یکی از دیزاین پترن هارو توضیح بدیم.خب همونطور که از اسمش مشخصه سینگلتون ینی اینکه یه کلاس فقط و فقط یک اینستنس خواهد داشت.حالا برای اینکار باید چیکار کنیم؟من یه کلاس تست ایجاد میکنم و بهش میگم هر شی که ایجاد کردی آیدیشو بهم بده!اینطوری:میبینیم که هر اینستنس یه آیدی یونیک داره و از هم میتونیم با آیدی متمایزشون کنیم. حالا میخایم یکاری کنیم که دیگه شی بیشتر از یدونه نسازه.برای اینکار باید از متد __new__ استفاده کنیم این همون متدیه که شی مارو میسازه.این متد هست:متد نیو اینستنس رو میسازه! حالا باید این متد رو طوری تغییر بدیم که فقط یدونه بسازه.اینطوری:اینجا یه متغیر ساختیم که همیشه قبل از ساخت شی جدید از روی کلاس چک میکنه که این اینستنس وجود داره یا نه . اگر وجود نداشت یدونه میسازه و ذخیره اش میکنه توی این متغیر و اگر وجود داشت همون قبلی رو ریترن میکنه.اگر شما هم مثل من زیاد با متن حال نمیکنید یه ویدیو با جزئیات بیشتر هم رکورد کردم! میتونید اینجا ببینید: https://www.aparat.com/v/dhgkp امیدوارم براتون مفید باشه. پیشنهاد انتقاد و هر نظری دارید برام توی کامنت ها بنویسید.</description>
                <category>mohammad javad farahnak</category>
                <author>mohammad javad farahnak</author>
                <pubDate>Thu, 30 Apr 2020 16:58:07 +0430</pubDate>
            </item>
                    <item>
                <title>آمار بازدید مطالب من در سال ۹۸</title>
                <link>https://virgool.io/@m.farahnak/%D8%A2%D9%85%D8%A7%D8%B1-%D8%A8%D8%A7%D8%B2%D8%AF%DB%8C%D8%AF-%D9%85%D8%B7%D8%A7%D9%84%D8%A8-%D9%85%D9%86-%D8%AF%D8%B1-%D8%B3%D8%A7%D9%84-%DB%B9%DB%B8-y95wc4upmdsh</link>
                <description>اگر دستاوردی را نتوانم اندازه بگیرم، چیزی در دست ندارم.اشتباه نشود، این به معنای تمایل به بهترین بودن  و یا میل به اثبات چیزی نیست، اما تنها چیزی که می‌تواند برای بهتر شدن به من کمک کند یک نقشه راه است، از مسیری که طی کرده‌ام، تا بدانم چه اثری از خود به جا گذاشته‌ام. یک تصویر کلی که بتواند خیلی ساده نشانم دهد تلاش من چه اثری بر جامعه‌ام گذاشته است.ویدیوی آمار مخاطبین من را ببینید: https://cdn.virgool.io/annual-report/1398/efzffpl7xvtw-tZ9lZ.mp4 دستاوردهای من در سال ۹۸در سال ۹۸، من در مجموع ۸ پست در ویرگول منتشر کردم و پست‌های من ۸۵ مرتبه لایک شدند و افراد ۱۱ بار نظرات خود را روی پست‌های من به اشتراک گذاشتند. امسال ۳۱ نفر در ویرگول من را دنبال کردند تا پست‌های بعدیم را بخوانند. اما چیزی که این دستاورد را ارزشمندتر می‌کند اثری است که این پست‌ها از خود به جا گذاشتند.اثر پروانه‌ای منطبق آمار ۹۶۳ بار پست‌های من خوانده شدند و زمانی حدود ۶۲,۴۷۰ ثانیه صرف مطالعه آنها شده است، که با توجه به جمعیت ۷۲٬۹۴۰٬۰۰۰ نفری که در ایران به اینترنت دسترسی دارند، من توانستم حدود ۰/۰۰۰۸۵۶ ثانیه، سرانه مطالعه دیجیتال کشور را بالا ببرم. عددی که با تمام کوچک بودنش، اثر بزرگ و ارزشمندی است.اما این عددها فقط توضیحی است از آنچه که برای مخاطبانم به ارمغان آورده‌ام، اثر ارزشمند‌تری که با نوشتن در ویرگول از خود به جا گذاشته‌ام، تلاش پنهانی بوده که برای حفظ محیط زیست کرده‌ام. من با انتشار پست‌های خودم در فضای ویرگول توانستم در مصرف کاغذ صرفه جویی کنم؛ یعنی اگر قرار بود پست‌هایم را چاپ  و به دست تک تک خوانندگان برسانم باید ۱,۴۲۹ کاغذ مصرف می‌شد.</description>
                <category>mohammad javad farahnak</category>
                <author>mohammad javad farahnak</author>
                <pubDate>Thu, 26 Mar 2020 11:04:55 +0430</pubDate>
            </item>
                    <item>
                <title>مهاجرت از mysql به postgresql بدون ازدست رفتن اطلاعات</title>
                <link>https://virgool.io/applymag/%D9%85%D9%87%D8%A7%D8%AC%D8%B1%D8%AA-%D8%A7%D8%B2-mysql-%D8%A8%D9%87-postgresql-%D8%A8%D8%AF%D9%88%D9%86-%D8%A7%D8%B2%D8%AF%D8%B3%D8%AA-%D8%B1%D9%81%D8%AA%D9%86-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-mmgp0ecorbgf</link>
                <description>سلام دوستان. وقت بخیرمیخوایم توی این نوشته/آموزش/مقاله/هرچی که اسمش هست یاد بگیریم که چطوری بدون ازدست رفتن اطلاعات از mysql به postgresql مهاجرت کنیم.اگه توی نت سرچ کنیم چنتا روش مختلف میاره که خب هم وقتتونو میگیره هم یه عالمه وقتتونو میگیره.من شخصا 3 روزه درگیرش هستم و کلی وقتم رو گذاشتم و تا نیم ساعت قبل از نوشتن این مطلب درگیرش بودم و انقد بهم سخت گذشت که اومدم زودتر بنویسمش که بلکه ینفر دیگه زودتر راحت شه!داستان از اونجایی شروع شد که من یه پروژه جنگو با mysql داشتم و خب همونطور که میدونیم توی جنگو mysql به خوبیpostgresql عمل نمیکنه و سرعتش کمتره( نمیگم mysql سرعتش کمه!‌توی جنگو اینطوریه)حالا شما هم به هر علتی ممکنه این مشکل رو توی هر پروژه ای داشته باشین.بریم سراغ اصل مطلب.اول بگم که مهم نیست سیستم عاملتون چی باشه مال من گنو/لینوکس توزیع مانجارو هست .اما توی ویندوز هم میتونید اینکارو انجام بدین.اول نیاز داریم که موارد زیر توی سیستمتون نصب باشه:JDK 1.8 and above (Java      Development Kit)libwebkitgtk-1.0-0 (لینوکس)حالا باید نرم افزار pentaho Data Integration رو دانلود و نصب بکنیم.لینکش هم این هست:https://sourceforge.net/projects/pentaho/files/Pentaho%208.1/client-tools/pdi-ce-8.1.0.0-365.zip/download?use_mirror=netcologneهم ویندوز و هم لینوکس باید همینو دانلود و نصب کنن. طبیعتا من قرار نیست نصبش رو یادتون بدم نصبش خیلی آسون هست و آموزشش هم اینجا هست:https://help.pentaho.com/Documentation/8.0/Setup/Installation/Tools/PDI_Client_and_pluginsاگر خاستین زرنگی کنید و برید از snap نصب کنید خب باید بگم که کور خوندید و قراره به ارور بخوریم.بعد از نصب برنامه رو اجرا کنید و مراحل زیر رو دنبال کنید.از سربرگ fileیدونه job  بسازیدیه کانکشن به دیتابیس اول ینی mysql بزنید! از این مسیر: Tools -&gt; Wizard -&gt; Create database connectionحالا باز مثل مرحله قبل به دیتابیس دوم ینی postgresql کانکشن بزنید.خب احتمالا توی مرحله 2 یه ارور دارید برای کانکت شدن به mysql یه ارور خیلی بزرگ که داره میگه:Error connecting to database [MySQLConnetion] :     org.pentaho.di.core.exception.KettleDatabaseException: Error occurred while trying to connect to the databaseDriver class &#x27;org.gjt.mm.mysql.Driver&#x27; could not be found, make sure the &#x27;MySQL&#x27; driver (jar file) is installed.اولش یه همچین چیزیه!اگه باز هم فکر کردید که خیلی زرنگ هستید و رفتید از  snap craft نصب کردید نمیتونید حلش کنید یا حداقل من نتونستم!توی فایل های این برنامه یه پوشه هست به اسمlib باید از لینک زیر فایل مورد نیازش رو دانلود کنید و بذارید توی این پوشه:https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.48.zipدرحال حاضر آخرین ورژن mysql connector  همین هست میتونید سرچ کنید اگر ورژن جدید تر داره دانلودش کنید.بعد از unzip کردن دوتا فایل .jar داره که باید تو پوشه lib کپی کنید.حالا برنامه رو restart کنید و دوباره مرحله هارو انجام بدید نباید هیچ اروری بده!بعد از ساختن کانکشن ها باید بریم و table  های mysql رو کپی کنیم توی postgresql.از مسیر :Tools -&gt; Wizard -&gt; Copy Tablesاسم کانکشن هارو میاره سمت چپ اسم کانکشن mysql رو انتخاب کنید و سمت راست اسم کانکشن postgresqlاسم هارو موقع ساخت کانکشن خودتون نوشتید.بعد بزنید nextمیبینید که لیست table هارو میاره مثل شکل زیرمهاجرت به postgresqlبا فلش میتونید تیبل مورد نظر رو اضافه کنید که کپی بشه! مرحله بعد یسری پروسس انجام میده و یه شکل بهمون نشون میده مثل شکل زیر:migrate to postgresqlسمت چپ بالا یه آیکون play  یا همون start داره که وقتی بزنیم شروع میکنه به کپی کردن.تمام. نکته:1.دیتا بیس دوم (postgresql) نباید تیبل انتخابی رو داشته باشه!2.اگر تیبل توی دیتابیس هست اول باید drop کنید و این برنامه خودش براتون میسازه تیبل رو!3.ترجیحا همه table هارو انتخاب کنید که هیچ dependency  جا نیوفته و به ارور و مشکلی نخورید.اگر همه مراحل رو با دقت انجام بدید نباید مشکلی پیش بیاد! الان سایت من به خوبی داره با postgresql کار میکنهسایت من یه سایت دانلود فیلم هست که به علت اضافه کردن یه فروشگاه احساس کردم خیلی کنده و باید یکم بهتر بشه.این هم آدرس سایت: https://vdmovie.ir  این هم آدرس فروشگاه: https://dreamland.pwاین دوتا آدرس فقط روی یه پروژه جنگو هستن و از یه دیتابیس استفاده میکنن.اگر دوست داشته باشید میتونم آموزش ایجاد چند سایت توی یه پروژه جنگو رو هم آموزش بدم.اگر اشکالی توضیحی پیشنهاد و هرچیز دیگه ای بود توی کامنت ها برام بنویسید:)</description>
                <category>mohammad javad farahnak</category>
                <author>mohammad javad farahnak</author>
                <pubDate>Thu, 20 Feb 2020 20:54:28 +0330</pubDate>
            </item>
                    <item>
                <title>دوره crawl(خزش در وب)با پایتون-قسمت 4</title>
                <link>https://virgool.io/coderlife/%D8%AF%D9%88%D8%B1%D9%87-crawl%D8%AE%D8%B2%D8%B4-%D8%AF%D8%B1-%D9%88%D8%A8%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-4-h61mewgbayct</link>
                <description>سلام. این قسمت ادامه ی قسمت قبلی  هست که با سلنیوم انجام دادیم! اما توی این قسمت اومدیم گفتیم چطوری بدون  سلنیوم از راه سخت تر سایت های ایجکسی رو کرال کنیم!چرا؟اول اینکه سلنیوم رم زیادی مصرف میکنه!دوم اینکه از هیچ لحاظی بهینه نیست...مثلا طول میکشه تا وب درایور لود بشه و شروع به کار بکنه!حتی ممکنه خیلی وقتا کراش کنه!در آخر اینکه ما یه قسمت کوچیک از سایتو ممکنه لازم داشته باشیم اما سلنیوم که باز میشه بقیه المنت ها و سورس های دیگه رو هم لود میکنه!یا شاید اصلا دلمون نخاد سلنیوم استفاده کنیم....توی این قسمت توضیح دادیم که چطور بدون سلنیوم کار قسمت قبلیو انجام بدیم.اگر نظر یا پیشنهادی هست کامنت بذارین:) https://www.aparat.com/v/0wUc8 </description>
                <category>mohammad javad farahnak</category>
                <author>mohammad javad farahnak</author>
                <pubDate>Thu, 09 Jan 2020 21:04:34 +0330</pubDate>
            </item>
                    <item>
                <title>دوره crawl(خزش در وب)با پایتون-قسمت 3</title>
                <link>https://virgool.io/coderlife/%D8%AF%D9%88%D8%B1%D9%87-crawl%D8%AE%D8%B2%D8%B4-%D8%AF%D8%B1-%D9%88%D8%A8%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-3-rjdvnleqvce6</link>
                <description>سلام. قسمت3 از دوره ی crawl رو براتون آپلود کردم! توی این قسمت یک ابزار به اسم سلنیوم رو معرفی میکنیم سلنیوم یک ابزار برای تست وب اپلیکیشن هست اما ما برای کراول ازش استفاده میکنیم . اگر پیشنهاد یا انتقادی هست لطفا برام کامنت بذارید :) https://www.aparat.com/v/usT8y </description>
                <category>mohammad javad farahnak</category>
                <author>mohammad javad farahnak</author>
                <pubDate>Sun, 05 Jan 2020 22:32:22 +0330</pubDate>
            </item>
                    <item>
                <title>دوره crawl(خزش در وب)با پایتون-قسمت 2</title>
                <link>https://virgool.io/coderlife/%D8%AF%D9%88%D8%B1%D9%87-crawl%D8%AE%D8%B2%D8%B4-%D8%AF%D8%B1-%D9%88%D8%A8%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-2-dy2g699ripg3</link>
                <description>سلام.قسمت2 از دوره ی crawl رو براتون آپلود کردم! توی این قسمت سعی شده که یک سایت ساده رو اطلاعاتش رو crawl کنیم.و اطلاعات پایه رو برای نوشتن یک کراولر رو داخلش گفتم.من توی این دوره از گنو/لینوکس استفاده میکنم اما هیچ اهمیتی نداره شما از چه سیستم عاملی استفاده میکنید.حتی اگر با اندورید بتونید اجرا کنید کد رو باز هم مشکلی نداره.اگر پیشنهاد یا انتقادی هست لطفا برام کامنت بذارید :) https://www.aparat.com/v/fnYFO </description>
                <category>mohammad javad farahnak</category>
                <author>mohammad javad farahnak</author>
                <pubDate>Sun, 10 Nov 2019 17:26:29 +0330</pubDate>
            </item>
                    <item>
                <title>دوره crawl (خزش در وب) با پایتون-قسمت1</title>
                <link>https://virgool.io/@m.farahnak/%D8%AF%D9%88%D8%B1%D9%87-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%85%D8%AD%D9%88%D8%B1-crawl-%D8%AE%D8%B2%D8%B4-%D8%AF%D8%B1-%D9%88%D8%A8-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA1-kjxppo4ylhy7</link>
                <description>سلام.قصد دارم براتون دوره آموزش crawl رو ضبط کنم.و با جزئیات بریم جلو. توی این دوره سعی میشه چیز هایی آموزش داده بشه که در وب فارسی تقریبا اثری ازش نیست!‌و درمواردی حتی در وب غیر فارسی هم کم یاب هستن.پیشنیاز این دوره پایتون(حداقل مقدماتی)-آشنایی با وب و html و ساختار کلی وبسایت هست!این دوره رو من توی آپارات منتشر میکنم و اینجا هم نشر خواهم داد:) https://www.aparat.com/v/SApaM </description>
                <category>mohammad javad farahnak</category>
                <author>mohammad javad farahnak</author>
                <pubDate>Tue, 05 Nov 2019 20:38:58 +0330</pubDate>
            </item>
                    <item>
                <title>حل مشکل شناسایی میکروفون هدست (jack) در لینوکس</title>
                <link>https://virgool.io/@m.farahnak/%D8%AD%D9%84-%D9%85%D8%B4%DA%A9%D9%84-%D8%B4%D9%86%D8%A7%D8%B3%D8%A7%DB%8C%DB%8C-%D9%85%DB%8C%DA%A9%D8%B1%D9%88%D9%81%D9%88%D9%86-%D9%87%D8%AF%D8%B3%D8%AA-jack-%D8%AF%D8%B1-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-nu6pnwqfgbvu</link>
                <description>سلام. توی این پست میخایم یه مشکل عجیب و همه گیر رو توی لینوکس حل کنیم.من اخیرا یه ویدیو ضبط کردم با سیستمم.هرکار کردم نمیشد از میکروفون هدست استفاده کرد و مجبور شدم از میکروفون خود لپ تاپم استفاده کنم اما خب صدا ضعیف بود و اگر میخاستم خوب باشه صدا، باید خیلی بلند حرف میزدم که دیگه میشد داد زدن!!!جستجو زیاد انجام دادم! توی گروه های تلگرامم کلی گشتم اما چیزی پیدا نشد!خلاصه حتی من از کامفورت زون خودم یعنی اوبونتو هم اومدم بیرون و رفتم مانجارو نصب کردم به امید درست شدن!اما باز هم مشکل همونطور باقی موند! اما خب انگار آرچ یوزر ها فعال تر بودن و با چندتاسرچ یه راهی براش پیدا کردم! متاسفانه اوبونتو یوزر ها یا خیلی تنبلن یا با هدست ویدیو رکورد نمیکنن:|به هرحال بدم نشد توفیق پیدا کردیم یه مدتم آرچ یوزر باشیم هم تجربه اس هم شاید بهتر بود و موندگار شدیم.حالا بریم سراغ اصل داستانترمینال رو باز کنید و این فایل رو ادیت کنید:/etc/modprobe.d/alsa-base.confالبته به احتمال خیلی زیاد وجود نداره و باید بسازیدش! sudo nano /etc/modprobe.d/alsa-base.confبا دستور بالا یه فایل جدید میسازه یا اگه وجود داره خب ادیت میشه!توی صفحه باز شده کد زیر رو جایگذاری کنید:options snd-hda-intel model=dell-headset-multiالبته این کد بالا رو اگه دقت کنید داره میگه مدل لپ تاپ دل هست اما خب مهم نیست روی بقیه دستگاه ها هم کار میکنه! من ک نخاستم تغییرش بدم بنظرم شمام سعی نکنید تغییرش بدید.خب کل کار همین بود. بعد از ری استارت سیستم میبینید که میکروفون هدست رو میشناسه.:)موفق باشید.</description>
                <category>mohammad javad farahnak</category>
                <author>mohammad javad farahnak</author>
                <pubDate>Mon, 04 Nov 2019 16:56:18 +0330</pubDate>
            </item>
                    <item>
                <title>آموزشcrawl(خزش در وب) با پایتون</title>
                <link>https://virgool.io/coderlife/%D8%A2%D9%85%D9%88%D8%B2%D8%B4crawl%D8%AE%D8%B2%D8%B4-%D8%AF%D8%B1-%D9%88%D8%A8-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-yaiwf3cmu0lb</link>
                <description>سلام. توی این پست میخایم آموزش بدیم که چطوری با پایتون اطلاعات قسمتی از سایت مورد نظرمون رو بدست بیاریم.من اینکار رو توی دو قسمت ویدیو براتون رکورد کردم و داخل آپارات گذاشتم!ترجیحا با هدفون گوش بدین بهش که صدا واضح تر باشه! https://www.aparat.com/v/vrFEd  https://www.aparat.com/v/xje3s </description>
                <category>mohammad javad farahnak</category>
                <author>mohammad javad farahnak</author>
                <pubDate>Fri, 01 Nov 2019 17:45:58 +0330</pubDate>
            </item>
                    <item>
                <title>ایجاد پست در ورد پرس با rest api</title>
                <link>https://virgool.io/apieco/%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D9%BE%D8%B3%D8%AA-%D8%AF%D8%B1-%D9%88%D8%B1%D8%AF-%D9%BE%D8%B1%D8%B3-%D8%A8%D8%A7-rest-api-fv2rndmrfshg</link>
                <description>سلام. توی این پست میخام نحوه ایجاد پست در ورد پرس با کمک  rest api رو بهتون یاد بدم.اول از همه بگم که من نه ورد پرس کار هستم نه پی اچ پی رو بلدم، اما بخاطر اینکه بهش برخوردم و دیدم هیچ منبع فارسی ای درست توضیح نداده و چیزی دستگیر کسی نمیشه خواستم تجربه خودم رو در اختیارتون بذارم.این اولین نوشته من هست شاید خیلی خوب نباشه نگارشم پس پیشاپیش عذر میخام اگر مشکلی داشته باشم. برای اینکار اول باید افزونه JWT Authentication for WP REST API  رو نصب کنید این افزونه رو میتونید اینجا پیداش کنید.بعد از نصب افزونه وفعال کردنش نیاز به کانفیگ داره.پس باید فایل wp-config.php  رو پیدا کنید و این خط رو بهش اضافه کنید:define(&#039;JWT_AUTH_SECRET_KEY&#039;, &#039;your-top-secret-key&#039;);بجای your-top-secret-key باید سکرت کی بذارید میتونید از اینجا یدونشو کپی کنیدخب حالا کانفیگ تموم شد. با  post به آدرس: yoursite/wp-json/jwt-auth/v1/tokenو ارسال:{
        username: &#039;admin&#039;,
        password: &#039;password&#039;
      }یدونه توکن بهتون میده به این شکل:{
    &amp;quottoken&amp;quot: &amp;quoteyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9qd3QuZGV2IiwiaWF0IjoxNDM4NTcxMDUwLCJuYmYiOjE0Mzg1NzEwNTAsImV4cCI6MTQzOTE3NTg1MCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.YNe6AyWW4B7ZwfFE5wJ0O6qQ8QFcYizimDmBy6hCH_8&amp;quot,
    &amp;quotuser_display_name&amp;quot: &amp;quotadmin&amp;quot,
    &amp;quotuser_email&amp;quot: &amp;quotadmin@localhost.dev&amp;quot,
    &amp;quotuser_nicename&amp;quot: &amp;quotadmin&amp;quot
}حالا میتونید با post کردن دیتای مورد نظرتون به آدرس:http://yoursite/wp-json/wp/v2/postsپست رو بسازید. دیتای ارسالیتون باید به شکل:{ &amp;quottitle&amp;quot: &amp;quotTest Title&amp;quot,
&amp;quotcontent&amp;quot: &amp;quotTest Content&amp;quot,
 &amp;quotstatus&amp;quot:&amp;quotpublish&amp;quot}باشه.هدر رکوئست هم باید به شکل:{Content-Type:&amp;quotapplication/json&amp;quot,
Authorization:&amp;quotBearer +token&amp;quot}باشه،که احتمالا ارور بهتون میده!برای ارسال هدر باید این امکان توی .htaccess  فعال باشه.برای اینکار باید این کد زیر رو پایین خط RewriteEngine onوارد کنید.RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]حالا دیگه نباید اروری داشته باشه و به راحتی پست توی سایتتون وارد بشه.</description>
                <category>mohammad javad farahnak</category>
                <author>mohammad javad farahnak</author>
                <pubDate>Mon, 28 Oct 2019 03:47:17 +0330</pubDate>
            </item>
            </channel>
</rss>