<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های فرهاد حسن پور</title>
        <link>https://virgool.io/feed/@farhad</link>
        <description>گیک کامپیوتر، توسعه دهنده، وبلاگ نویس، علاقمند به کیهان‌شناسی. در اینجا از تجربیات تخصصی‌ام در زمینه برنامه نویسی، و حوزه‌های مربوط به آن می‌نویسم. برای پیگیری مطالب حتما رو دکمه دنبال کردن کلیک کنید.</description>
        <language>fa</language>
        <pubDate>2026-06-10 12:45:58</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/2979/avatar/dYPr8J.png?height=120&amp;width=120</url>
            <title>فرهاد حسن پور</title>
            <link>https://virgool.io/@farhad</link>
        </image>

                    <item>
                <title>آموزش auto mount کردن درایوها بصورت گرافیکی در اوبونتو</title>
                <link>https://virgool.io/ubuntu/gui-auto-mount-y83h6wia7mja</link>
                <description>در این مقاله نحوه مونت (mount) کردن خودکار یک درایو (Drive) در اوبونتو بصورت خودکار را یاد خواهید گرفت.برای شروع روی کیبورد دکمه سوپر (همون دکمه‌ای لوگوی ویندوز روشه) رو بزنید و در قسمت search عبارت Disks رو تایپ کنید و همانند تصویر زیر روی برنامه Disks کلیک کنید.بعد از باز کردن Disks با پنجره‌ای همانند تصویر زیر مواجه خواهید شد.همانطور که در تصویر بالا ملاحظه می‌کنید و من سه عدد دیسک دارم، اولی حافظه SSD من هست که روش اوبونتو رو نصب کردم، دومی هارد دیسک من هست که روش ویندوز نصب دارم به همراه چندین درایو که برای ذخیره سازی فایل‌ها ازشون استفاده میکنم، دیسک سومی هم دیسک نوری من (DVD writer) من هست.حالا برای auto mount کردن روی دیسک/حافظه‌ای که می‌خواهید از ستون سمت چپ کلیک کنید.همانند تصویر بالا بعد از انتخاب دیسک و Volume روی آیکون چرخ دنده مشخص شده در قسمت ۳ کلیک کنید. با تصویری همانند زیر مواجه خواهید شد.سپس روی گزینه Edit Mount Options کلیک کنید.حالا گزینه User Session Defaults رو غیر فعال کنید، تا دسترسی برای اعمال تنظیمات برامون باز بشه.بعد از غیر فعال کردن گزینه مذکور همانند تصویر زیر می‌توانید در قسمت Mount Point مسیری که دوست دارید درایوتون بطور خودکار در اون مسیر mount بشه رو انتخاب کنید.دقت داشته باشید باید تیک گزینه Mount at system startup زده شده باشه.بعد از اعمال تعییرات با کلیک روی دکمه OK تغییرات رو ذخیره کنید.تبریک درایو/volume دلخواه شما auto mount شد، زین پس بعد از روشن کردن سیستمتون ولوم مد نظرتون بطور خودکار مونت خواهد شد.اگر سوال یا موردی بود در بخش نظرات مطرح کنید، سعی میکنم در اسرع وقت پاسخ بدم.</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Mon, 02 May 2022 12:51:37 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش تغییر پورت ssh در لینوکس</title>
                <link>https://virgool.io/ubuntu/ssh-config-txftfdmzdw3e</link>
                <description>در این مقاله میخام نحوه تغییر پورت ssh رو بهتون آموزش بدم؛ تغییر پورت ssh جزء پایه‌ای ترین اقدامات امنیتی بعد از راه اندازی سرور می‌باشد.قبل از انجام هر کاری توصیه میکنم یکبار مقاله رو کامل بخونید و سپس مراحل رو همراه با مقاله دنبال کنید، از آنجایی که تغییر پورت ssh کار بسیار حیاتی هست و ممکن است باعث از دست رفتن دسترسی‌تون از سرور بشه لذا دقت لازم را در انجام مراحل داشته باشید.نکات مهم قبل از تغییر پورت sshپورت جدید می‌بایست آزاد باشد و توسط نرم افزاری دیگری استفاده نشده باشد.پورت جدید مورد نظر در فایروال باز باشد.نکته: من فرض میکنم کاربری که باهاش ssh زدیم به سرور کاربر root مون هست بنابراین اگر از کاربری بغیر از root استفاده می‌کنید در ابتدای دستورات عبارت sudo رو قرار دهید.برای اینکار با زدن دستور زیر وارد فایل کانفیگ sshمون میشیم.vim /etc/ssh/sshd_configبا زدن دستور بالا با صفحه‌ای همانند تصویر زیر مواجه می‌شویم.کانفیگ ssh منحالا دنبال عبارت Port بگردید. اگر از قبل پورت خود را تغییر نداده باشید. به احتمال زیاد با تصویر زیر روبرو شوید.در حالت عادی پورت ssh سیستم عامل‌های لینوکس روی 22 هست. برای تغییر کافیه علامت # (علامت مربع بمنزله کامنت بودن خط کد می‌باشد) از ابتدای کد حذف کرده و پورت دلخواه خودمون رو وارد کنیم. (همانند تصویر زیر)من پورت ssh سرور خودم رو بعنوان مثال گذاشتم روی 1234 شما می‌تونید هر پورت دلخواه آزاد دیگری رو انتخاب کنید.بعد از تنظیم پورت دلخواه فایل رو ذخیره کنید. بعد از انجام مراحل فوق نوبت به ریستارت کردن سرویس ssh میرسه تا کانفیگ جدید ما جایگزین کانفیگ قبلی بشه؛ برای اینکار کافیه دستور زیر رو بزنید:systemctl restart sshdلازم به ذکر است بعد از زدن دستور بالا احتمالا از سرور logout شوید که جای نگرانی نیست و با پورت ssh جدید می‌توانید مجددا لاگین کنید.در بخش نظرات سوالات و مشکلات خودتون رو می‌تونید مطرح کنید در اسرع وقت پاسخ میدم.</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Fri, 08 Apr 2022 17:02:54 +0430</pubDate>
            </item>
                    <item>
                <title>نصب php در اوبونتو 20.04</title>
                <link>https://virgool.io/ubuntu/install-php-on-ubuntu-pqa9hekvdlsi</link>
                <description>برای نصب php در اوبونتو 20.04 فقط کافیه مراحل ساده زیر را دنبال کنید:1) ترمینال رو باز کنید و دستور زیر را وارد کرده اینتر بزنید.sudo apt update2) پس از اجرای دستور بالا دستور زیر را برای نصب php و ماژول‌های ضروری آن وارد کرده اینتر بزنید.sudo apt install php php-cli php-fpm php-json php-common php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmathبعد از اتمام نصب برای اطمینان از موفقیت آمیز بودن نصب php می‌توانید در ترمینال دستور زیر را وارد کنید.php --versionبا دستور بالا می‌بایست نسخه نصبی php به شما نمایش داده شود. (مشابه نمونه زیر)PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologiesبا دستور زیر هم می‌تونید لیست کامل ماژول‌های نصب شده php را مشاهده کنید:php -mامیدوارم این پست بدردتون خورده باشه، سوالی یا مشکلی داشتید در بخش نظرات مطرح کنید.</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Fri, 13 Nov 2020 01:06:39 +0330</pubDate>
            </item>
                    <item>
                <title>تابع str_repeat در php</title>
                <link>https://virgool.io/phplang/str-repeat-php-f6hjaebhykbk</link>
                <description>امروز با تابع str_repeat در خدمت شما هستم؛ که مربوط میشه به توابع رشته‌ها در php.این تابع دو پارامتر ورودی می‌گیره؛ اولیش رشته متنی هست و دومی عدده (برای مشخص کردن تکرار رشته). به مثال زیر دقت کنید:echo str_repeat(&#039;Farhad&#039;, 4);خروجی کد بالا بصورت زیر خواهد بود.FarhadFarhadFarhadFarhadنکات مرتبط با تابع str_repeatخروجی تابع string می‌باشد.هر دو پارامتر ورودی اجباری هستند.اگر پارامتر دوم رو 0 قرار بدید در خروجی هیچی بهتون بر نمیگردونه.از این تابع می‌تونید برای ساخت متن‌های لورم‌ایپسوم یا اسپم استفاده کنید. ?اگر از این سبک پست‌ها خوشتون میاد لایک کنید. ?تابع قبلی: تابع strlen در php</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Wed, 14 Oct 2020 21:21:27 +0330</pubDate>
            </item>
                    <item>
                <title>همه چیز درباره ماژول nRF24L01</title>
                <link>https://virgool.io/@farhad/nrf24l01-i9jzbbezbqz0</link>
                <description>چیپ NRF24L01 نمونه تصحیح شده با امکانات بیشتر و دیتا ریت بالاتر چیپ NRF2401 است که توسط شرکت NORDIC در اوایل سال 2008 معرفی شد.ماژول nRF24L01این چیپ در واقع یک ماژول بسیار عالی برای ارسال و دریافت اطلاعات بدون خطا است چیزی که در ماژول های HMTR یا حتی در RFMXX ها یا به کلی وجود نداشت یا این که مشکلات خاص خود را داشت. مدولاسیون ارتباطی این ماژول به صورت GFSK است , همان مدولاسیونی که در تکنولوژی BLUETOOTH استفاده شده و به صورت انحصاری در دست چند شرکت بزرگ مثل BLUETOOTH  و  NORDIC SEMICONDUCTOR  و TEXAS  INSTRUMENT  و چند شرکت دیگر قرار دارد.فرکانس ارتباطی این چیپ 2.4 گیگا هرتز است که این خاصیت آن ویژگی های زیادی را برای ما به ارمغان می آورد ! از جمله کوچک شدن سایز آنت که حتی میتوان از خود PCB به صورت یک آنتن استفاده کرد , مورد دیگر هم به دلیل فرکانس بالا بسیار راحت تر از دیوار یا اجسام دیگر عبور می کند و با عث می شود که برد بیشتری هم به ما بدهد , می توانید فرکانس RFM12 یا HMTR را با این چیپ مقایسه کنید ! می بینید که فرکانس این چند حداقل چند برابر آن ها است.این چیپ به صورت دو طرفه کار می کند و در کل شما فقط به 2 عدد از این چیپ ها برای ارتباط لازم دارید (مشابه RDM12 )دیتا ریت این چیپ حداکثر 2 مگابیت بر ثانیه است که می توان از آن برای انتقال اطلاعات سنگینی مشابه صوت و یا حتی ویدئو استفاده کرد!ویژگی های خاص ماژول nRF24L01:- حداکثر دیتا ریت تا 2 مگا بیت بر ثانیه در هوا- بسیار کم مصرف- جریان مصرفی در هنگام ارسال دیتا در 0 دسی بل فقط 11.3 میلی آمپر- جریان مصرفی در حالت دریافت دیتا با 2 مگا بیت بر ثانیه دیتا ریت 12.3 فقط 12.3 میلی آمپر- جریان مصرفی در هنگام POWER-DOWN  900 نانو آمپر- جریان مصرفی در هنگا آماده باش 22 میکرو آمپر- بدون نیاز به ولتاژ های مختلف به همراه رگولاتور داخلی- محدوده ولتاژ تغذیه چیپ از 1.9 تا 3.6 ولت که با افزایش ولتاژ برد بیشتری را باید در انتظار داشت- مجهز به تکنولوژِی پیشرفته SHOCKBURST- آماده سازی بسته ها دیتا به صورت خودکار-  6 لوله دیتا MULTICEIVER برای ارتباط چند ماژول به یکدیگر و ایجاد یک شبکه محلی- تست شده برای ارسال د دریافت دیتا که سالم بودن تمامی چیپ ها 100% است- یک چسپ فرکانسی کم هزینه- نیاز به یک کریستال اسیولاتور 16 مگا هرتزی کوارتز برای ایجاد فرکانس 2.4 گیگا هرتزی- ورود ولتاژ بر روی پین های دیتا حداکثر تا 5 ولت امکان پذیر است- سایز کوچک چیپ و نیاز به قطعات کم خارجیماژول nRF24L01موارد استفاده از ماژول nRF24L01:-قطعات کامپیوتری وایرلس مانند موس یا کی بورد یا قطعات دیگر-هدست های بیسیم مانند VOIP HEADSET-دسته های بیسیم کنسول های بازی مانند PS3-ساعت های ورزشی یا سنسور ها-ریموت کنترل برای مصارف الکترونیکی-اتوماسیون خانگی(خانه هوشمند) که فرضا تمامی ارتباطات الکتریکی فرضا برای روشنایی به صورت بیسیم می باشد-در شبکه هایی که نیاز به یک ارتباط وایرلس بسیار کم مصرف است-سیستم های مسیر یاب مانند GPS-و اسباب بازی ها !معرفی ماژول nRF24L01:چیپ NRF24L01 دارای یک موتور بلادرنگ تکنولوژی پیشرفته( SHOCKBURST )  که اساسا طراحی شده برای موقعیت های که نیاز به مصرف توان بسیار پایین است.NRF24L01  در رده فرکانسی جهانی ISM که در محدوده فرکانسی 2.400  گیگاهرتز تا 2.4835 گیگا هرتز که در کل برای اجرا فقط به یک میکروکنترلر و تعداد کمی قطعات دیگر نیاز است که شامل چند خازن و سلف است.نحوه ارتباطی این چیپ به پروتکل SPI است که می توان با این پروتکل بر تمامی خواص نرم افزاری و سخت افزاری داخلی چیپ مدیریت داشت و آن را کنترل کرد.مدولاسیون چیپ GFSK است که به نحوی طراحی شده که هر چیپ شبیه به این است که یک کانال فرکانس خاص را برای خود دارد و از این رو می توان گفت درصد خطا و اختلال چیپ ها با یک دیگر (یا چیپ هایی به غیر از NRFL24L01) به صفر می رسد.دیتا ریت چیپ در 2 مگابیت بر ثانیه پیکره بندی شده و دو مد متفاوت مصرف پایین نیز دارد که آن را کم مصرف تر می کند.یک رگولاتور داخلی که باعث گسترش محدوده ولتاژ ورودی می شود.Send AMS1117-3.3 3.3V LDO Voltage Regulator tube

2.4G operating frequency, the transmission distance is about the open distance 40 meters!
NRF24L01 basic characteristics:
1.2Mbit/s received under rates peak at 12.5mA
2. @0dBm 2Mbit/s rate output peak current 11mA
3. power off mode power consumption of 400nA
4. the power consumption in standby mode 32uA
5.130us quick switch and wake up
6. has the on-chip voltage regulator oltage regulators
7.1.9 to 3.6V low-voltage operation 8. MultiCeiverMT hardware 6 receiver functions at, 2Mbit/s makes it possible to high quality VoIPمزیت های ماژول nRF24L01 :در محیط با مانع از این ماژول بیشتر در پروژه هایی که قابلیت اطمینان ( reliability) باید بالا باشد  و کاربردش بیشتر در جاهای صنعتی و پر نویزه و جاهای حساس که اشتباه باعث خسارت میشود. ( یک لینک کاملا مطمئن براتون ایجاد میکنه  ( استفاده میکنیم  وبه خاطرداشتن قابلیت های auto acknowlegement و auto retransmition و error checking و فرستادن اطلاعات همراه با یکی از بهترین استانداردهای ECC (Error Correcting Code  ) CRC در عمل فوق العاده خوب جواب داده و اصلا عمل پیش بینی نشده ، انجام نداده. دقیقا هرکاری بخواهید و ازش انتظار دارید انجام میدهد. ( در عمل مهم اینکه دیوایس، عکس العمل غیر منتظره ای از خودش بروز ) .تغذیه خود آی سی با 3.3 ولت هست اما پایه های ورودی خروجی آن توان کار کردن تا 5 ولت رو دارند  ( تغذیه  IC  را با 3.3 V  راه می اندازید اما اگر ورودی خروجی هاش به مداری که 5 ولت هست وصل بشه، آی سی نمی سوزه و میتواند با سطح لاجیک TTL کار کنند ) این ماژول 60 میلی وات  و بردآن در فضای باز حدودا 40 مترمی باشد که اگر آنتن برای آن نصب کنید ( آنتن معمولی! ) حداکثر بردش به 70 متر میرسد  ....برای مصارفی با مسافت کم ، استفاده از چیپ بر روی PCB اصلی پروژه ( نه ماژول ) بسیار ایده آل می باشد و همچنین  میشود  کانال ارسال  دیتا را عوض کرد ! برای ارسال فلگ تایید دریافت دارد . همینطور امکان  ارسال مجدد ( ( restry در صورت نرسیدن دیتا به مقصد!کارکرد پایه هاIRQ : ماژول توسط این پایه به میکرو وقفه میدهد ( در حالت عادی پایه high است )  و low شدن IRQ یکی از این حالت ها را می رساند :1- در گیرنده یک پکت دریافت شده2-  در فرستنده پکت بدرستی ارسال شده  ACK ) تصدیق دریافت شد ) 3- در فرستنده یک پکت چندبار ارسال شده ( retransmition ) ولی تصدیقی دریافت نکرده پس عمل فرستادن اطلاعات به درستی انجام نشده است.CE : همان chip enable می باشد. در حالت عادی low است وقتی بخواهیم اطلاعات با ماژول بفرستیم یا دریافت کنیم باید این پین را high  کنیم تا ماژول از مد استندبای ( 1 ) به active tx یا active rx برود ( میتونید این پین را به VCC وصل کنید تا همیشه در حالت high  باشد.CSN : در ارتباط spi به منظور پین CS یا ss استفاده میشود . در حالت عادی باید  1 باشد و وقتی با spi می خواهیم چیزی به ماژول بفرستیم باید آن را 0   کنیمMOSI, MISO, CLK, CS  : MOSI, MISO, CLK, CS  برای ارتباط SPI هستند و به پایه های متناظرشون در میکرو. MISO  و MOSI به صورت ضربدری     وصل میشوند.:  VCC , GND   VCC و GND هم تغذیه ماژول می باشد ماژول به ولتاژ معکوس و ولتاژ زیاد روی vcc و gnd حساس می باشد همچنین دمای زیاد روی پایه ها بوسیله هویه ( چون پایه ها مستقیم به آیسی وصل می باشد ) . حتما  از رگلاتور lf33 استفاده کنید وبین مثبت ومنفی ماژول حتما از خازن استفاده کنید ا گر از خازن در ورودی استفاده نکنید ماژول بدرستی کانفیگ میشود ولی زمانی که میخواهد اطلاعات را بفرستید به کلی ریست میشود.سرعت انتقال :سرعت انتقال درماژول های nrf24l01p   قابل تنظیم می باشد و میتوان در سه حالت 256kbps  و 1 Mbps و 2 Mbps تنظیم نمود  (هرچه سرعت بالاتر تنظیم شود برد کمتر میشود(چطوری میتونیم سرعت رو از  1M به  2M تغییر بدیم ؟به صورت دستی هدر فایل رو تغییر بدید. خط 209 هدر فایل را به  command_buff = 0x07;  تغییر بدید. ( سرعت بیشتر = برد کمتر )&quot; payload&quot; چی هست ؟payload   یک اصطلاح در شبکه است ، یک پکت دیتا تشکیل شده است از چندین قسمت که یک قسمتش payload میباشد ، در این قسمت دیتای اصلی شما قرار میگیرد. ( این قسمت اصلی و بقیه بالا سری ( overhead ) پکت هستند که شامل آدرس و pid و sequence و... (  . فرقnRF24L01  با nRF24LE1 چیست ؟ nRF24l01+  یه آی سی transciever  برای انتقال داده بیسیم در باند 2.4 GHz است .nRF24LE1 این ماژول ترکیب همون nRF24l01p بعلاوه ی یک سری چیز دیگس:که این چیزها شامل:1ـ  cpu هشت بیتی که با همون 8051 معروف سازگار است. ( پس همینجا نتیجه میگیریم این آیسی به تنهایی قابل استفاده است و دیگه نیاز نیست با میکرو درایوش کنیم چون خودش واحد پردازشگر inteligent device ) ) دارد2ـ   1kB + 256B رم داره که این رم همون حافظه ای است که باید کنار cpu باشه.3ـ یک فلش مموری 16 کیلو بایتی داره که میتونید توش داده ها و دستورات را ذخیره کنید ( بعد از قطع برقم نمیپره )4ـ  یک مقایسه گر ( ADC )  دوازده بیتی داره!!همچنین سه تا اینترفیس ارتباط spi و uart و TWI رو هم داره (یه جورایی همه چی تمومه ،خودش یه میکرو کنترلره) ) گفته اوسیلاتور داخلی هم داره ( که خوب معلومه باید داشته باشه چون cpu داره (این چیپ حالت صرفه جویی در مصرف یا lowe power هم داره ؟با این پین و رجسترهای   PWR_UP , PRIM_RX 2تا مد standby  داره و یه مد  power downیکی از ویژگی های خیلی جالب این ماژول مصرف بسیار پائین اون نسبت به ماژول های مشابه هست که در مواقعی که مجبور به استفاده از باتری هستین از کم مصرف بودن این ماژول حیرت زده میشیدتو نسخه پلاس این ماژول مد اسلیپ ماژول بسیار هوشمند عمل میکنه و مصرف رو در حد ۹۰۰ نانو آمپر قرار میده یعنی ماژول روشنه ولی داره فقط ۹۰۰ نانو آمپر مصرف میکنه و فقط موقع ارسال مصرفش به حدود ۱۳ میلی آمپر میرسه Enhanced ShockBurst چیست ؟یک مد که توی این نوع آیسی ها معرفی شده . اولا که با استفاده از این مد میتونید با میکرو کنتزلرهای کند مثل avr و صف های موجود در خود آیسی ، به سرعت های بالا ( سرعت انتقال در هوا ( air ) ) دست یابید همچنین اگر با شبکه آشنا باشید ، خیلی شبیه به پروتکل TCP در لایه ی transport در مدل های لایه بندی TCP/IP و OSI می باشد. که با استفاده از قابلیت های auto acknowledgment و autoretransmition  یک لینک کاملا مطمئن برای شما فراهم میکند. (به زبون ساده بعد از هر ارسال گیرنده به فرستنده میگه پکت بهم رسیده یا نه و اگر نرسیده باشه یا حتی پیام رسیدن بر نگرده ، فرستنده دوباره ارسال میکند ( در شبکه به آن پیام تصدیق یا همون ACK  گفته می شود )  Enhanced ShockBurst یه پروتکلی 2 سویه است که برای چلوگیری از دست رفتن اطلاعات بین فرستنده و گیرنده استفاده میشود به این صورت که اگر پکت ارسالی به درستی دریافت نشود دوباره توسط فرستنده ارسال می گردد.یک چیز جالب در مورد این ماژول هوشمند بودنش هست مثلا شما از عدد ۱ تا ۱۰۰۰ رو میفرستید تا با دور کردن گیرنده برد ماژول رو به دست بیارید چیزی که خیلی جالبه اینه که مثلا اگر اطلاعات دریافتی گیرنده بر روی عدد ۵۴۶ متوقف بشود وقتی به ماژول فرستنده نزدیک می شوید از عدد ۵۴۷ شروع به ارسال میکند و به عبارتی هیچ اطلاعاتی تا وقتی گیرنده دریافت آن را تائید نکند از دست نمی رود و تا زمانی که از سمت گیرنده پیام تائید دریافت  نکند اطلاعات بعدی را ارسال نمی کند و به ارسال مجدد ادامه میدهد و این حالت به صورت پیشفرض در ماژول فعال است و به طور پیشفرض ۱۰ بار  در فاصله زمانی مشخص انجام میدهد , میتوانید با تنظیمات رجیستر های ماژول تعداد و مدت زمانی که بین هر ارسال باید صبر کند را تغییر دهیداین ماژول ها امکان شبکه کردن هم دارند ؟شبکه کردن یعنی آدرس دادن به ماژول ها به طوری که فقط با ماژولی که میخواهید ارتباط برقرار کنید (جدا کردن از طریق آدرسدهی ) شما با تغییردر آرایه 5 بایتی آدرس (40 بیتی ) میتوانید به ماژول یک آدرس دلخواه نسبت دهید  که می توانید تا 1 ترلیون ( یا 1 ترا = 2 به توان  40 ) آدرس متفاوت ایجاد کنید. ولی شما نمی توانید در حین اجرا آدرس را تغییر بدید و حتما تغییرات باید در زمان کامپایل باشد یعنی در زمانی که کد مینویسید شما یک آدرس مشخصی از 0x0000000000  تا 0 xFFFFFFFFFF به ماژول نسبت میدهید و وقتی برنامه را داخل میکرو پروگرم کردید ماژول همین آدرس را دارد . اگر می خواهید آن را عوض کنید باید دوباره میکرو رو با آدرس جدید پروگرام کنیدهر ماژول با هر چندتا ماژول که در دیدش باشه شبکه میشود که البته با تنظیماتی میشود این را نقض کرد یعنی مثلا ما 100 تا ماژول در یکجا داریم که همه در برد هم هستند ولی جوری باشند که 10 تا 10 تا باهم در ارتباط باشند و گروه های دیگر را اصلا نبینند و در کار هم مشکل بوجود نیاورند . مثلا اگر شما با شبکه کامپیوتر آشنا باشید ، هر شبکه از 5 لایه تشکیل شده ( لایه بندی osi یا tcp/ip  ( با این ماژول می توانید ارتباط تا دو لایه زیرین (  Data Link Layer و  ( Physical Layer  داشته باشید. که در لایه دیتا لینک می توانید ارتباط به صورت rdt ( reliable data transfer ارتباط مطمئن ) تضمین کنید. شبکه کردن ،هیچ کاری ندارد وقتی شما یک لینک مطمئن دارید شبکه یعنی یک سری پروتکل که خودتان قرار میدید .به عنوان مثال شما یک بخش همیشه ثابت تو ارایه ای که میفرستید میگذارید ( مثلا یک بایت )  و این رو به عنوان آدرس فرستنده تلقی میکنید. و یک بایت هم برای گیرنده . حالا شما اطلاعاتتون رو در بسته ( packet ) های 32 بایتی درون شبکه میریزید که 30 بایت اونها دیتای اصلی یا payload  هستند. به همین راحتی .شما میتونید  در یک شبکه پایپ به ۶ تا ماژول دیگه اطلاعات رو ارسال کنید و از ۶ تا ماژول دیگه اطلاعات رو دریافت کنید فقط باید دقت کنید واسه هر ماژول یک آدرس ۳۲ بیتی جداگانه بگذارید.این مطلب رو چند سال پیش در بلاگ شخصیم منتشر کرده بودم. و چون هاستش منقضی شده بود حیفم اومد توی سیستمم خاک بخوره.</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Sun, 29 Dec 2019 21:50:54 +0330</pubDate>
            </item>
                    <item>
                <title>18 دستور پرکاربرد برای کار با TAR در لینوکس</title>
                <link>https://virgool.io/ubuntu/linux-tar-uzzryab44ij8</link>
                <description>TAR یا بهتره بگم GNU TAR مخفف کلمه انگلیسی Tape ARchive به معنی نوار آرشیو می‌باشد؛ که می‌تواند فایل‌های شما رو بصورت آرشیو در قالب یک فایل دربیاورد و هر زمان که بخواهید از حالت آرشیو شده استخراج نموده و استفاده کنید. در این مقاله دستورات پر کاربردی برای کار با فایل‌های TAR مورد استفاده قرار می‌گیرد آموزش داده می‌شود.بله پنگوئن خوشگل ما در قالب یک فایل tar آرشیو شده ?
لیست پر کاربردترین سوییچ‌های (یا گزینه‌های یا کلید‌های) TAR که بیشترین استفاده رو دارند و در مثال‌ها ازش استفاده کردیم (حساس به حروف بزرگ و کوچک).c- : ایجاد یک فایل آرشیو جدیدv- : خروجی (یا پیشرفت) دستور را نشان می‌دهد.x- : استخراج فایل آرشیوf- : نام فایل آرشیو را مشخص می‌کند.z- : از طریق gzip آرشیو انجام می‌شود.j- : از طریق bzip2 آرشیو انجام می‌شود.J- : از طریق xz آرشیو انجام می‌شود.t- : مشاهده محتویات فایل آرشیوO- : نمایش محتوای فایل آرشیو در stdoutr- : فایل را به آرشیو موجود اضافه می‌کندC- : تعریف دایرکتوری مقصدW- : تایید یک فایل آرشیوهر کدام از موارد بالا می‌توانند بصورت تکی یا گروهی مورد استفاده قرار گیرند.ایجاد فایل آرشیودر زیر مثال‌های برای ایجاد فایل آرشیو آورده شده است.۱) ایجاد فایل آرشیو با پسوند tar. : در مثال زیر تمام فایل و زیرشاخه‌های مسیر var/www/ در فایلی با عنوان archive.tar آرشیو می‌شود.tar -cvf archive.tar /var/www۲) ایجاد فایل آرشیو با پسوند tar.gz. : در مثال زیر تمام فایل و زیرشاخه‌های مسیر var/www/ در فایلی با عنوان archive.tar.gz آرشیو می‌شود. این دستور فایل آرشیو رو فشرده‌تر از دستور قبلی می‌کند.tar -zcvf archive.tar.gz /var/www۳) ایجاد فایل آرشیو با پسوند tar.bz2. : در مثال زیر تمام فایل و زیرشاخه‌های مسیر var/www/ در فایلی با عنوان archive.tar.bz2 آرشیو می‌شود. این دستور فایل آرشیو رو خیلی فشرده‌تر از دو دستور قبلی می‌کند و به همین دلیل زمان زیادتری نسبت به دستور قبل برای ارشیو کردن صرف خواهد شد.tar -jcvf archive.tar.bz2 /var/www۴) ایجاد فایل آرشیو با پسوند tar.xz. : در مثال زیر تمام فایل و زیرشاخه‌های مسیر var/www/ در فایلی با عنوان archive.tar.xz آرشیو می‌شود. این دستور فایل آرشیو رو خیلی فشرده‌تر از سایر دستورات می‌کند و زمان خیلی زیادی صرف آرشیو کردن فایل‌ها می‌شود.tar -Jcvf archive.tar.xz /var/wwwاستخراج فایل آرشیو شدهدر این بخش مثال‌های کاربردی برای استخراج فایل آرشیو شده آورده شده است که در دو حالت مثال زده شده‌اند که خط اول مربوط به استخراج فایل فشرده در مسیر جاری که فایل در ان قرار دارد و در خط دوم نیز فایل آرشیو رو در مسیر دلخواه استخراج می‌کنیم.۵) استخراج فایل آرشیو شده با پسوند tar. :tar -xvf archive.tar
tar -xvf archive.tar -C /tmp/۶) استخراج فایل آرشیو شده با پسوند tar.gz. :tar -zxvf archive.tar.gz
tar -zxvf archive.tar.gz -C /tmp/۷) استخراج فایل آرشیو شده با پسوند tar.bz2. :tar -jxvf archive.tar.bz2
tar -jxvf archive.tar.bz2 -C /tmp/۸) استخراج فایل آرشیو شده با پسوند tar.xz. :tar -Jxvf archive.tar.xz
tar -Jxvf archive.tar.xz -C /tmp/مشاهده لیست محتویات فایل‌های آرشیو شدهشما می‌توانید توسط دستوراتی که در مثال‌های زیر آورده شده است قبل از استخراج فایل فشرده محتویات اونا رو ببینید. این دستورات برای صرفه جویی در وقت بهتون کمک می‌کنند.۹) مشاهده لیست محتویات فایل آرشیو شده با پسوند tar. :tar -tvf archive.tar۱۰) مشاهده لیست محتویات فایل آرشیو شده با پسوند tar.gz. :tar ztvf archive.tar.gz۱۱) مشاهده لیست محتویات فایل آرشیو شده با پسوند tar.bz2. :tar jtvf archive.tar.bz2۱۲) مشاهده لیست محتویات فایل آرشیو شده با پسوند tar.xz. :tar Jtvf archive.tar.xzبروزرسانی فایل آرشیوشما می‌توانید برای بروزرسانی فایل آرشیو از گزینه u- استفاده کنید. زمانی که از این دستور استفاده کنید کپی فایل‌های جدیدتر به فایل آرشیو اضافه می‌شود.۱۳) بروزرسانی فایل آرشیو با پسوند tar. :tar -uvf archive.tar /var/www۱۴) بروزرسانی فایل آرشیو با پسوند tar.gz. :tar -zuvf archive.tar.gz /var/www۱۵) بروزرسانی فایل آرشیو با پسوند tar.bz2. :tar -juvf archive.tar.bz2 /var/www۱۶) بروزرسانی فایل آرشیو با پسوند tar.xz. :tar -Juvf archive.tar.xz /var/wwwدستورات کاربردی و مفید دیگردر زیر دو مثال کاربردی دیگر درج شده است که برای فایل‌های آرشیو با پسوند tar. می باشد که شما می‌توانید با اضافه کردن گزینه z- برای فایل‌های آرشیو tar.gz. و با اضافه کردن گزینه -j برای فایل‌های آرشیو tar.bz2. و با اضافه کردن گزینه J- برای فایل‌های آرشیو tar.xzf. استفاده کنید.۱۷) نمایس محتویات یک فایل: با استفاده از دستور زیر می‌توانید محتویات یک فایل موجود در داخل فایل آرشیو را مشاهده کنید.tar -uvf archive.tar -O backup/index.htmlنکته: بجای backup/index.html در مثال بالا، مسیر و نام فایل آرشیو خود را قرار دهید.۱۸) اضافه کردن فایل به آرشیو: توسط گزینه r- می‌توانید فایل دلخواه خود را با اضفه کردن نام و مسیر فایل به فایل آرشیو اضافه کنید.tar -rvf archive.tar your_file_name.txtبرای مشاهده توضیحات و مثال‌های بیشتر می‌توانید به لینک http://g02.ir/cli7S مراجعه فرمایید.</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Wed, 06 Nov 2019 23:44:31 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی افزونه جی کوئری پرینت</title>
                <link>https://virgool.io/@farhad/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D8%A7%D9%81%D8%B2%D9%88%D9%86%D9%87-%D8%AC%DB%8C-%DA%A9%D9%88%D8%A6%D8%B1%DB%8C-%D9%BE%D8%B1%DB%8C%D9%86%D8%AA-sqyfznbkajni</link>
                <description>چند وقت پیش نیاز داشتم تو صفحه وبی که یک جدول حاوی فاکتور بود. کاربر بتونه فقط از جدول پرینت تهیه کنه؛ دست به دامن جاوا اسکریپت شدم ? بعد از چند ده خط کد زدن تونستم چیزی که میخام رو بنویسم ولی در کمال نا باوری وقتی تو صفحه مورد نظرم قرارش دادم کار نکرد!عکس تزيینی می‌باشدبعد از چند دقیقه جست و جو دیدم برای جکوئری پلاگین‌های متنوعی برای اینکار وجود داره! و یکی از این پلاگین‌ها که خیلی خوشم اومد و ازش در پروژم استفاده کردم افزونه Jquery print بود.مثل اکثر پلاگین‌های جکوئری این افزونه هم رایگان هستش!آموزش استفاده از افزونه Jquery Printکار کردن با این افزونه خیلی راحته و ابتدا باید فایلش رو در داخل صفحه وارد کنیم.نکته : حتما و حتما فایل این افزونه رو بعد از فایل جکوئری قرار دهید.بعد برای پرینت گرفتن جدول یا بلاک یا هر چیزی که نیاز به پرینت گرفتن ازش دارید؛ بهش یک id اختصاص بدید.سپس با استفاده از کد زیر میتونید از اون جدول یا بلاک یا ... پرینت تهیه کنید.$(&amp;quot#myElementId&amp;quot).print({});نکته : بجای myElementId در کد بالا idیی که برای جدول یا بلاک یا ... خودتون در نظر گرفتید رو وارد کنید.نکته : کد بالا دارای پارامترهای ورودی دلخواه نیز می باشد که میتوانید بسته به نیاز یا سلیقتون ازش استفاده بکنید(برای مشاهده پارامترهای دلخواه به داکیومنت افزونه مراجعه کنید).مشاهده صفحه گیت‌هاب افزونهشاد باشید و خندون.</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Mon, 21 Oct 2019 21:41:07 +0330</pubDate>
            </item>
                    <item>
                <title>بدست آوردن اطلاعات فایل در جاوا اسکریپت</title>
                <link>https://virgool.io/@farhad/%D8%A8%D8%AF%D8%B3%D8%AA-%D8%A2%D9%88%D8%B1%D8%AF%D9%86-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D9%81%D8%A7%DB%8C%D9%84-%D8%AF%D8%B1-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-bcu0qqrzyljl</link>
                <description>در این پست بهتون آموزش خواهم داد تا چگونه اطلاعات فایل از قبیل نام و حجم و زمان ایجاد فایل و... رو در جاو اسکریپت بدست بیارید.برای اینکار من یک تابع ساده نوشتم که اطلاعات فایل رو میگره و بصورت alert بهمون نشون میده.برای دریافت فایل از کاربر نیاز به یک input بصورت زیر داریم:&lt;input type=&amp;quotfile&amp;quot name=&amp;quotfile&amp;quot id=&amp;quotfile&amp;quot =&amp;quotfileInfo()&amp;quot&gt;تابع fileInfo هم بصورت زیر هستش:تنبلی نکن کدارو میخای خودت تایپشون کن ?در زیر کدهای استفاده شده در تابع fileInfo رو توضیح میدم.var fileName = document.getElementById(&#039;file&#039;).files[0].name;کد بالا میره بوسیله id؛ نام فایل رو از آرایه files بدست میاره.بقیه موراد هم که واضحه size اندازه فایل رو برحسب بایت برمیگردونه و type هم نوع فایل رو بصورت MimeType برمیگردونه و lastModifiedDate  هم آخرین زمان تغییر فایل رو برمیگردونه.+ میدونم تنبل‌تر از اونی هستید که کدها رو تایپ کنید؛ کدها رو می‌تونید از لینک زیر کپی کنید. مشاهده کدشاد باشید و خندون.</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Mon, 21 Oct 2019 21:29:15 +0330</pubDate>
            </item>
                    <item>
                <title>ساخت لانچر برای نرم افزار pycharm در اوبونتو</title>
                <link>https://virgool.io/ubuntu/pycharm-l3k35lafrroo</link>
                <description>همانطور که میدونید بعد از نصب ادیتور یا بهتره بگم IDE pycharm در اوبونتو برای هر بار استفاده از این IDE باید وارد پوشه bin در محل دانلودش بشید و ترمینال رو باز کنید و با زدن دستور زیر:./pycharm.shبتونید این نرم افزار رو باز کرده و ازش استفاده کنید. خب این روش یکم ملال آورتره و برای یک لینوکسی افت داره تا همیشه نرم افزاراشو اینطوری اجرا کنه ? برای حل این مشکل و راحت شدن کار خودمون میتونیم یک لانچر بسازیم (چیزی شبیه شورت‌کات ویندوز) تا هر بار با کلیک بر روی اون بتونیم نرم افزارمون رو باز کنیم.روش‌های مختلفی برای اینکار وجود داره من در این مقاله ساده‌ترین روش رو آموزش میدم.ساخت لانچر برای پایچرم - Pycharmنرم افزار پایچرم رو برای آخرین بار با روشی که در بالا گفتم باز کنید. (وارد پوشه bin در محل نصب پایچرم برید و ترمینال رو باز کنید و در ترمینال دستور pycharm.sh/. را وارد کرده اینتر بزنید).بعد از اینکه نرم افزار بطور کامل لود شد از منوی Tools روی گزینه Create Desktop Entry کلیک کنید.پنچره‌ای بصورت زیر براتون باز خواهد شد.4. اگر تیک گزینه Create the entry for all users را بزنید لانچر برای همه کاربران ساخته خواهد شد؛ در صورتی که تیک این گزینه را بزنید بعد از کلیک بر روی ok از شما پسورد یوزرتون خواهد پرسید.5. بعد از کلیک بر روی دکمه ok پیام موفقیت آمیز بودن رو بهتون نشون خواهد داد.6. نرم افزار رو ببندید و در دش عبارت pycharm رو تایپ کنید. لوگوی نرم افزار براتون ظاهر میشه و با کلیک بر روی اون میتونید نرم افزار رو اجرا کنید.امیدوارم که از این آموزش بهره کافی رو برده باشید. برای دریافت مطالب جدید حتما روی دکمه دنبال کردن کلیک کنید.شاید مطالب زیر برایتان جالب باشد. https://virgool.io/birgeek/ntfsfix-k2hhzkryuf2n  https://virgool.io/birgeek/lamp-nhbvwhtacooh  https://virgool.io/birgeek/task-manager-%D8%AF%D8%B1-%DA%AF%D9%86%D9%88%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-j17mnt3wojtt </description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Tue, 17 Sep 2019 22:01:43 +0430</pubDate>
            </item>
                    <item>
                <title>حل مشکل باز کردن درایوهای ntfs در اوبونتو و دبیان بیس‌ها</title>
                <link>https://virgool.io/ubuntu/ntfsfix-k2hhzkryuf2n</link>
                <description>اگر به تازگی کاربر یکی از توزیع‌های گنو / لینوکسی شده باشید یا در کنار ویندوز خود یکی از توزیع های گنو / لینوکس رو نصب کرده باشید احتمالا با مشکل باز کردن درایوهای ntfs در توزیع خودتون مواجه خواهید شد.نمونه خطا در سیستم عامل من (لینوکس مینت)این ارور علتهای مختلفی می‌تونه داشته باشه که یکی از اونا بخاطر قابلیت هیبرید ویندزو هستش.شکل کلی خطا بصورت زیر می‌باشد :آموزش حل مشکل باز کردن درایوهای ntfs در اوبونتو و دبیان بیس هابرای حل این مشکل باید یه پکیج کم حجم بنام ntfsfix را با زدن دستور زیر نصب کنید.sudo apt install ntfsfixبعد از نصب پکیج با زدن دستور زیر میتونید به راحتی این مشکل رو حل کنید.sudo ntfsfix /dev/sda1نکته بسیار مهم : بجای sda1 در دستور بالا می‌بایست sda مربوط به پارتیشن مورد نظر خودتون رو بزنید؛ sda مربوطه به هنگام باز کردن درایو در ارور مربوطه نشون داده میشه.سوالی مشکلی داشتید در بخش نظرات مطرح کنید.</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Wed, 21 Aug 2019 22:33:27 +0430</pubDate>
            </item>
                    <item>
                <title>هک گیت‌لب در ایکی ثانیه</title>
                <link>https://virgool.io/@farhad/%D9%87%DA%A9-%DA%AF%DB%8C%D8%AA%D9%84%D8%A8-%D8%AF%D8%B1-%D8%A7%DB%8C%DA%A9%DB%8C-%D8%AB%D8%A7%D9%86%DB%8C%D9%87-njqfz1julp7i</link>
                <description>این پست بیشتر جنبه فان (Fun) داره بنابراین اینطوری بهش نگاه کنید ?همونطور که می‌دونید ما باگ‌نویس‌ها (?) وقتی در گیت‌لب یا گیت‌هاب کامیت (Commit) یا کدریویو (Code review) یا ... انجام میدیم. رنگ اون مربع‌های کوچک از سبز کم‌رنگ به پر رنگ در گیت‌هاب و رنگ آبی کم رنگ به آبی تیره در گیت‌لب تغییر پیدا می‌کنه.بله همونطور که می‌بینید من باگ‌نویس خفنیم‌ (شوآف)اگر دوست دارید شما هم اینطوری شوآف کنید. ادامه مطلب رو بخونید.برای این منظور کافیه کد جاوا اسکریپتی زیر رو در کنسول (Console) مرورگرتون وارد کنید. (چون در ویرگول کدها درست و حسابی نمایش داده نمیشه، لینک گیست (Gist) کد رو براتون گذاشتم)https://gist.github.com/FarhadHP/061d20794983c6f9b50a8a79e7fb0cb8امیدوارم که لذت برده باشید. https://gist.github.com/FarhadHP/061d20794983c6f9b50a8a79e7fb0cb8گیی </description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Fri, 16 Aug 2019 21:08:05 +0430</pubDate>
            </item>
                    <item>
                <title>تابع strlen در php</title>
                <link>https://virgool.io/phplang/strlen-bm7ovcmkavqa</link>
                <description>تابع strlen در php برای بدست آوردن طول یک رشته متنی بکار میره. مثلا میخواهید بدونید متنی که که کاربر به وسیله فرم به سرور ارسال کرده چند کاراکتره، بوسیله این تابع میتوانید این کار رو انجام بدید.پارامترهای ورودی تابع strlen در phpاین پارامتریک ورودی از نوع رشته میگیره و در خروجی هم عدد صحیح برمیگردونه.مثالی از تابع strlen&lt;?php

echo strlen(&amp;quotHello virgool&amp;quot); // Output: 13

$text = &amp;quothi&amp;quot

echo strlen($text); // Output: 2برای مشاهده توابع جدیدتر لطفا این انتشارات را دنبال کنید.تابع قبلی: ceil در phpتابع بعدی: str_repeat در php</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Thu, 04 Apr 2019 21:43:36 +0430</pubDate>
            </item>
                    <item>
                <title>تابع ceil در php</title>
                <link>https://virgool.io/phplang/ceil-nnf7jcdqoas4</link>
                <description>تابع ceil یکی از توابع ریاضی در زبان برنامه نویسی php می‌باشد و کارش گِرد کردن اعداد به بالا می باشد.بطور مثال اگر ما به این تابع عدد 4.2 رو بدیم در خروجی به ما عدد 5 رو برمیگردونه.پارامترهای ورودی تابع ceil در phpاین تابع یک ورودی عددی میگیره (اعشاری) و در خروجی هم یک عدد صحیح برمیگردونه.مثالمثالی از تابع ceil در صورتی که مایل هستید هر روز با یک تابع یا کلاس php آشنا بشوید لطفا ما را دنبال کنید.تابع قبلی: تابع floor در php</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Wed, 03 Apr 2019 19:09:50 +0430</pubDate>
            </item>
                    <item>
                <title>تابع floor در php</title>
                <link>https://virgool.io/phplang/floor-lkvafwqitgcl</link>
                <description>تابع floor یکی از توابع ریاضی در زبان برنامه نویسی php می‌باشد و کارش گِرد کردن اعداد به پایین هست.بطور مثال ما عدد 4.9 رو داریم و می‌خواهیم به پایین گِردش کنیم. یعنی می‌خواهیم وقتی این مقدار (4.9) رو بهش دادیم در خروجی عدد 4 رو داشته باشیم.پارامترهای ورودی تابع floor در phpاین تابع فقط یک ورودی از نوع اعشاری میگیرد.مثال:مثالی از تابع floor ویرگول بستر مناسب برای نمایش کد نداره بنا براین مجبور شدم از کدها عکس بگیرم و این رویه رو برای پست‌های بعدی انجام میدم.لینک Gist برای مشاهده کدهادر صورتی که مایل هستید هر روز با یک تابع یا کلاس php آشنا بشوید لطفا ما را دنبال کنید.تابع بعدی ceil خواهد بود که دقیقا برعکس تابع floor عمل می‌کند.تابع بعدی: تابع ceil در php</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Wed, 03 Apr 2019 18:31:58 +0430</pubDate>
            </item>
                    <item>
                <title>نصب LAMP در اوبونتو</title>
                <link>https://virgool.io/ubuntu/lamp-nhbvwhtacooh</link>
                <description> مرحله اول نصب  LAMP در اوبونتو؛ نصب آپاچی (Apache)در ابتدا ترمینال رو باز کنید و عبارت زیر وارد کرده و اینتر بزنید؛ در صورت درخواست پسورد پسورد روت خود را وارد نمایید.sudo apt-get updateبعد از اتمام بروزسانی دستور زیر رو برای وب سرور نصب آپاچی وارد کرده و اینتر بزنید؛ در صورت درخواست پسورد، پسورد روت خود را وارد نمایید.sudo apt-get install apache2
در صورتی که از شما سئوالی پرسید عبارت Y رو به معنای Yes (بله) واردکرده و اینتر بزنید؛ صبر کنید تا بسته‌های مورد نیاز رو دانلود و نصب کنه.بعد از اتمام نصب برای تست اینکه آپاچی به درستی کانفیگ شده دستور زیرو وارد کرده و اینتر بزنید :sudo apache2ctl configtest
در صورتی که در خروجی دستور بالا عبارت زیر رو مشاهده کردید کانفیگ بدرستی انجام شده است :Syntax OK
خب یکبار با دستور زیر آپاچی رو برای اعمال تغییرات ریستارت میکنیم (دستور زیر رو وارد کرده و اینتر بزنید).sudo systemctl restart apache2حالا برای تست وب سرورمون مرورگر رو باز کرده و آدرس لوکال هاستمون رو (http://127.0.0.1) یا (http://localhost) وارد میکنیم.در صورتی که با صفحه‌ای همانند تصویر زیر مواجه شدید همه چی درسته!صفحه پیش فرض وب سرور آپاجی در اوبونتومرحله دوم نصب  LAMP در اوبونتو؛ نصب دیتابیس MySqlبعد از نصب وب سرور آپاچی نوبت به نصب دیتابیس MYSQL میرسه؛ برای نصب دیتابیس MYSQL عبارت زیر و در ترمینال وارد کرده و اینتر بزنید.sudo apt-get install mysql-serverبعد از وارد کردن دستور بالا می‌پرسه فلان مگابایت از فضای دیسک مورد نیاز است آیا مایل به ادامه هستید ؟! شما می‌بایست برای ادامه حرف Y وارد کرده و اینتر بزنید.فرایند نصب دیتابیس Mysql آغاز خواهد شد و در بین مراحل نصب از شما پسوردی برای یوزر روت دیتابیس خواهد خواست که می‌بایست یک پسورد وارد کنید؛ که این پسورد؛ پسورد یورز root دیتابیس شما خواهد بود که بخاطر سپردن آن الزامی می‌باشد.صبر کنید تا فرایند نصب کامل شود.مرحله سوم نصب  LAMP در اوبونتو؛ نصب PHPخب الان دیگه نوبت به نصب خود PHP رسید؛ برای نصب پی اچ پی دستور زیر رو در ترمینال وارد کرده و اینتر بزنید (توجه داشته باشید که با دستور زیر آخرین نسخه استیبل (پایدار) PHP برای شما نصب خواهد شد) sudo apt-get install php libapache2-mod-php php-mcrypt php-mysqlصبر کنید تا فرایند نصب کامل بشه؛ بعد از نصب شدن برای کانفیک پی اچ پی دستو زیر رو در ترمینال وارد کرده و اینتر بزنید:sudo nano /etc/apache2/mods-enabled/dir.conf
نکته : بجای ویرایشگر nano ه یک ویرایشگر تحت ترمینال می‌باشد شما می‌توانید از ویرایشگرهایی همچمون gedit نیز استفاده کنید.توصیه میکنم اگر کاربر حرفه‌ای نیستید بجازی ویرایشگر نانو از ویرایشگر gedit با دستور زیر استفاده کنید.sudo gedit /etc/apache2/mods-enabled/dir.conf
خب بعد از وارد کردن دستور بالا ویرایشگر متن باز می‌شود و می‌باید کد زیر رو پیدا کرده :&lt;IfModule mod_dir.c&gt;
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
&lt;/IfModule&gt;و به حالت زیر تغییر دهید: (کاری که ما کردیم اینه که عبارت index.php رو قبل از index.html قرار دادیم.)&lt;IfModule mod_dir.c&gt;
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
&lt;/IfModule&gt;بر روی دکمه Save کلیک کنید تا تغییرات ذخیره شود؛ سپس ویرایشگر متن رو ببنید.خب برای اعمال تغییرات جدید بر روی وب سرور باید اونو با دستور زیر ریستارت کنیم: کافیه دستور زیر رو در ترمینال وارد کرده و اینتر بزنید :sudo systemctl restart apache2
بعد از نصب پی اچ پی شما میتونید ماژول‌های پی اچ پی مورد نیاز خودتون رو نصب کنید برای مثال :sudo apt-get install php-cli
مرحله آخر نصب  LAMP در اوبونتو؛ تست PHPتا اینجا ما مراحل کامل نصب LAMP رو باهم با موفقیت طی کردیم.اکنون زمان آن رسیده تا php که نصب کردیم رو تست کنیم و همچنین ماژول های پی اچ پی که نصب شده رو مشاهده کنیم.دستور زیر رو برای ساخت یک فایل php وارد نمایید.sudo gedit /var/www/html/info.php
با دستور بالا ویرایشگر متنی باز می‌شود و فایلی با عنوان info.php رو در مسیر /var/www/html/info.php ایجاد می کند.در داخل ویرایشگر متین کدهای زیر رو قرار دهید و روی دکمه Save کلیک کنید.&lt;?php
phpinfo();حالا مرورگر خودتون رو باز کنید و ادرس زیر رو وارد کرده و اینتر بزنید:http://127.0.0.1/info.php
یا
http://localhost/info.phpاکنون صفحه اطلاعات پی اچ پی رو مشاهده خواهید کرد.(صفحه‌ای همانند تصویر زیر)خروجی تابع phpinfoبرای پیگیری نوشته‌های جدید لطفا روی دکمه دنبال کردن کلیک کنید. همچنین میتونید کانال تلگرام و پیج اینستاگرام منو فالو کنید.</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Sat, 30 Mar 2019 23:35:31 +0430</pubDate>
            </item>
                    <item>
                <title>Task manager در گنو/لینوکس</title>
                <link>https://virgool.io/ubuntu/task-manager-%D8%AF%D8%B1-%DA%AF%D9%86%D9%88%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-j17mnt3wojtt</link>
                <description> اگر تازه به گنو/لینوکس مهاجرت کرده باشید کمبود نرم‌افزار Taskmanager ویندوز رو در گنو/لینوکس احساس میکند! اما باید بدونید در لینوکس ابزارهای خیلی حرفه‌ای تری برای مشاهده پروسس‌های در حال انجام به همراه نمایش مقدار مصرف رم و cpu و حافظه اسوپ و… وجود دارد.یکی از این ابزارها؛ نرم افزار htop می‌باشد که نسخه ارتقا داده شده نرم افزار top ‌می‌باشد. htop اجرا شده در سیستم من آموزش نصب نرم افزار htopدر ابتدا ترمینالتون رو باز کنید و با توجه به توزیع گنو/لینوکسی خود یکی از دستورات زیر را برای نصب وارد کنید.برای نصب htop در توزیع‌های دبیان بیسی (اوبونتو و لینوکس مینت و…) دستور زیر را وارد کنید:sudo apt-get install htop -yبرای نصب htop در توزیع‌های ردهتی (سنت او اس و فدورا و…) دستور زیر را وارد کنید:yum install htop آموزش اجرای نرم افزار htopبعد از نصب نرم افزار htop می‌توانید در ترمینال خود با وارد کردن دستور htop پروسس‌های سیستم خود را ملاحضه کنید.برای خروج میتوانید دکمه Q کیبورد را فشار دهید.نکته: شما از این نرم افزار می‌توانید در سرور گنو/لینوکسی خود برای بررسی میزان رم و سی‌پی‌یو نیز استفاده کنید.منبع: htop نرم افزار نمایش پروسه‌های در حال اجرا</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Thu, 28 Mar 2019 21:18:50 +0430</pubDate>
            </item>
                    <item>
                <title>کوله پشتی یک سرباز منقضی خدمت :-)</title>
                <link>https://virgool.io/@farhad/%DA%A9%D9%88%D9%84%D9%87-%D9%BE%D8%B4%D8%AA%DB%8C-%DB%8C%DA%A9-%D8%B3%D8%B1%D8%A8%D8%A7%D8%B2-%D9%85%D9%86%D9%82%D8%B6%DB%8C-%D8%AE%D8%AF%D9%85%D8%AA-lpuibv7gbvpu</link>
                <description>اول از همه عنوان این نوشتمو بخاطر اینکه اواخر پارسال (سال ۱۳۹۷) خدمت سربازیو تموم کردم گذاشتم &quot;کوله پشتی یک سرباز منقضی خدمت&quot; !بعله داداش کوله پشتی ۹۷ ما نظامیه :-)سال ۹۷ برای من با یک مرخصی طولانی (۱۸ روز) سربازی شروع شد. مرخصی که تا آخر خدمت برام تکرار نشد! یکی از بهترین عیدهای زندگیم بود چون اصلا فکرشو نمیکردم تعطیلات عید کنار خونوادم باشم.اواسط اردیبهشت ماه هم دوره آموزشیو تموم کردم و وارد یگان خدمتیم شدیم. روزهای اولش سخت گذشت، و در تمام مدتی که وارد یگان شده بودم همش با خودم فکر میکردم که چرا اومدم خدمت! اون همه ایده و استارت آپ‌هایی که تو ذهنم بودو چرا رها کردم. اون همه اسکریپت خوشگل و مامانی که نوشته بودمو چرا ول کردم اومدم این بر و بیابون!خیلی نا امید شده بودم. اواخر خرداد که اومدم مرخصی یک راس رفتم پشت کامپیوترم و گفتم دیگه بر نمیگردم :-) و اسکریپتای خوشگلمو تنها نمیزارم!شروع کردم و یه افزونه تجاری وردپرس نوشتم و توی یکی از مارکتا برای فروش گذاشتم. آخرین روزی بود که برگه داشتم و بعد از کلی کلنجار گفتم باید برم و خدمتو تموم کنم چون از خیلی چیزایی که در آینده میخام و لازم دارم نمیتونم استفاده کنم (پاسپورت و اینجور چیزها).یکی دو ماهی گذشت و من دوستانی پیدا کردم که اونام برنامه نویس بودن و اومده بودن خدمت و عین من حالشون گرفته بود! با هم یه اکیپ درست کردیم و این گذران خدمتو برام راحتتر کرد. و دیگه کم کم عادت کرده بودم. و همش برای بعد خدمتم برنامه میرختم. با دوستام سر شروع یه استارت اپ بترکون بحث میکردیم و وقت میگذروندیم. و همش هم هی میگفتیم اگه این خدمت تموم شه فلان میکنیم و بهمان میکنیمو و... :-)سرتونو درد نیارم گذشت تا رسیدیم به بهمن ماه و دیگه آخرای خدمت من بود و استرس اینکه بعد خدمت میخام چه گلی (من مینویسم گِل شما بخونید گُل :-) ) به سرم بزنم و اون یک ماه آخری که داخل پادگان بودم بشدت آشفته بودم. از فرمانده مرخصی پایان دوره گرفتم و اومدم خونه! و هی اینور برو اونور برو این اگهیو ببین و اون آگهیو ببین اینجا برو اونجا برو بشین پاشو، خبر دار :-) تا اینکه یه چندجایی رزومه فرستادم و چند روز بعدش زنگ زدن و رفتم! سه تا دفتر برای مصاحبه رفتم و بالاخره یکشیون اوکی داد.داخل پارانتز بگم خیلی ایده داشتم و میخواستم دونه به دونه شروعشون کنم! اما وقتی من رفتم سربازی دلار بین ۳۸۰۰ تا ۴۲۰۰ تومن در نوسان بود و وقتی تموم کردم ۱۳۸۰۰ تومن! نا امید شده بودم! هیچ کاری هم نمیتونستم شروع کنم! همه چیز گرون شده بود انگار من یهو از تبریز رفتم پاریس (کنایه از گران‌ترین شهر جهان طبق تحقیقات موسسه  اکونومیست اینتلیجنس یونیت).آقا سرتونو در نیارم دیگه رسیدیم به اسفند ماه و رفتم سرکار!بزرگترین دست آورد من در سال ۱۳۹۷ اتمام سربازی بود. بجز اون بدلیل اینکه در محدودیت بودم هیچ کار شاخی نتونستم انجام بدم.سال ۱۳۹۸ رو هم با انرژی شروع کردم. و میخام امسال چندتا از ایده‌هامو پیاده‌سازی کنم. و سال بعد که میخام کوله پشتی امسالمو بنویسم یه نوشته پر از موفقیت و افتخارات بنویسم.</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Thu, 21 Mar 2019 14:10:26 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی افزونه پیغام گیر تلگرام</title>
                <link>https://virgool.io/workshop/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D8%A7%D9%81%D8%B2%D9%88%D9%86%D9%87-%D9%BE%DB%8C%D8%BA%D8%A7%D9%85-%DA%AF%DB%8C%D8%B1-%D8%AA%D9%84%DA%AF%D8%B1%D8%A7%D9%85-ehitthf0xpql</link>
                <description>این مطلب صرفا معرفی یکی از محصولاتم می‌باشد. و به منظور تبلیغ یا بک لینک گیری درج نشده است!شاید برای شما هم پیش اومده باشه بخواهید نظرات کاربرانتون رو سریعا در تلگرام دریافت کنید. نظراتی مانند خرابی لینک دانلود، پشنهاد، انتقاد و… . خوشبختانه برای این منظور افزونه‌ای رو طراحی و آماده کردیم که بوسیله آن میتوانید در برگه‌ها یا حتی نوشته‌‌های سایت خود با قرار دادن یک تکه شورت کد؛ فرم پیغامگیر رو قرار بدید و بلافاصله پیام‌های کاربرانتون را در تلگرام دریافت کنید.شما می توانید افزونه پیغام گیر تلگرام را بسته به نیاز خود برای موارد مختلفی بکار ببرید.افزونه پیغام گیر تلگرام نکاتی در مورد افزونه پیغام گیر تلگراماین افزونه نیاز به ساخت یک ربات تلگرامی دارد.این افزونه نیاز به فعال بودن گواهی SSL در سایت شما ندارد.شما می‌توانید از این افزونه در یک سایت خود استفاده کنید و برای استفاده در سایت‌های دیگر خود می‌بایست مجددا افزونه را خریداری کنید.فایل آموزش نصب و استفاده افزونه درون پوشه Documention  می‌باشد.تصاویر محصولدر زیر تصویر فرم پیغامگیر را مشاهده میکنید که در یک برگه درج شده است. در تصویر زیر پیام ارسالی کاربر را از طریق فرم موجود در سایت را مشاهده می‌کنید.پیام ارسالی کاربر را از طریق فرم موجود در سایت را مشاهده می‌کنید.  مشاهده دموی آنلاینمشاهده توضیحات بیشتر و خرید افزونهاین افزونه ۶ ماه پشتیبانی رایگان دارد. و بطور مستمر نیز بروزرسانی میشود.اگر این افزونه توجهتون رو جلب نکرد می‌توانید با مراجعه به این لینک سایر افزونه‌های تولید شده توسط من رو مشاهده کنید. معرفی افزونه ایجاد و پرداخت فاکتور با درگاه زرین پال برای وردپرس</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Thu, 06 Dec 2018 12:37:34 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی افزونه ایجاد و پرداخت فاکتور با درگاه زرین پال برای وردپرس</title>
                <link>https://virgool.io/workshop/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D8%A7%D9%81%D8%B2%D9%88%D9%86%D9%87-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D9%88-%D9%BE%D8%B1%D8%AF%D8%A7%D8%AE%D8%AA-%D9%81%D8%A7%DA%A9%D8%AA%D9%88%D8%B1-%D8%A8%D8%A7-%D8%AF%D8%B1%DA%AF%D8%A7%D9%87-%D8%B2%D8%B1%DB%8C%D9%86-%D9%BE%D8%A7%D9%84-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%88%D8%B1%D8%AF%D9%BE%D8%B1%D8%B3-m3ljdereeixk</link>
                <description>افزونه فوق رو قبل از اعزام به خدمت و در بهمن ماه شروع کردم و بعد‌ها بدلیل اعزام به خدمت نتونستم کاملش کنم.در مرخصی‌هایی که می‌اومدم یک بخشش رو مینوشتم تا اینکه بالاخره چند روز پیش تموم شد و آماده عرضه به وبمستران عزیز.این افزونه چکار میکنه؟این افزونه کارش اینه یک فاکتور با مبلغ دلخواد مدیریت سایت به نام فرد دلخواهش ایجاد میکنه و فاکتور در صورت تمایل مدیر به ایمیل کاربر هم ارسال میشه. و کاربر پس از مشاهده میتونه فاکتور رو پرداخت کنه!!!کاربردش رو خودتون بهتر می‌فهمید و نیازی به توضیح اضافی نیست. این افزونه در واقع یک سیستم مدیریت صورت حساب رو به سایت وردپرسی شما اضافه می‌کند.امکانات افزونهاین افزونه فعلا با درگاه زرین پال (و زرین گیت) کار می‌کنه و در نسخه‌های بعدی  سایر درگاه‌ها نیز بدان اضافه خواهد شد.هچنین دارم روی توابعی کار میکنم که توسعه دهندها هم بتونن از آن برای ایجاد فاکتور، بررسی وضعیت فاکتور و ... استفاده کنند. (در نسخه‌های بعد این توابع رو معرفی میکنم).اگر در سایت وردپرسی خود نیاز به یک سیستم ایجاد و مدیریت فاکتور دارید این افزونه بکارتون میاد.جهت مشاهده توضیحات بیشتر و همچنین خرید افزونه از سایت ژاکت روی لینک‌ زیر کلیک کنید.مشاهده توضیحات / خرید افزونه</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Tue, 22 May 2018 19:27:23 +0430</pubDate>
            </item>
                    <item>
                <title>معرفی افزونه نمایش پیام‌های کانال تلگرام در وردپرس</title>
                <link>https://virgool.io/workshop/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D8%A7%D9%81%D8%B2%D9%88%D9%86%D9%87-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D9%BE%DB%8C%D8%A7%D9%85%D9%87%D8%A7%DB%8C-%DA%A9%D8%A7%D9%86%D8%A7%D9%84-%D8%AA%D9%84%DA%AF%D8%B1%D8%A7%D9%85-%D8%AF%D8%B1-%D9%88%D8%B1%D8%AF%D9%BE%D8%B1%D8%B3-m2t4s2fz8mns</link>
                <description>امروزه هر سایت یا بیزینس بزرگ و کوچکی در پیام‌رسان تلگرام یک کانال برای معرفی محصولات و اطلاع رسانی ایجاد کرده است.بعضی از بیزنس‌ها همه اخبار و اطلاع رسانی‌های خود را به تلگرام منتقل کردند؛ از این رو ممکنِ کاربرانی که در حال بازدید از سایت هستند متوجه کدهای تخفیف یا اطلاع‌رسانی‌ها نشوند.برای این منظور افزونه‌ای برای وردپرس نوشتم که بوسیله‌ای اون می‌توانید تمامی پیام‌های کانال تلگرامی خود را اعم از پیام‌های متنی، تصویری، ویدئویی، ویسی و... را در سایت برای کاربر به نمایش بگذارید.قابلیت‌های افزونهاگر مشتاق شدید این افزونه را تهیه کنید یا توضیحات بیشتر در رابطه با آن بدانید به لینک زیر مراجعه کنید:https://zhaket.com/product/swa-telegram/این افزونه یک محصول ایرانی‌ست و نمونه خارجی و داخلی ندارد ( البته شاید فعلا{!} ).دموی زنده افزونه را در لینک زیر می‌توانید مشاهده کنید:https://farhad.in/swa-telegram-demo/</description>
                <category>فرهاد حسن پور</category>
                <author>فرهاد حسن پور</author>
                <pubDate>Thu, 01 Mar 2018 14:52:21 +0330</pubDate>
            </item>
            </channel>
</rss>