<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Ali N</title>
        <link>https://virgool.io/feed/@Ali_n</link>
        <description>دانشجوی پزشکیِ عاشقِ تکنولوژی</description>
        <language>fa</language>
        <pubDate>2026-07-15 13:48:00</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/107076/avatar/mpEBGt.png?height=120&amp;width=120</url>
            <title>Ali N</title>
            <link>https://virgool.io/@Ali_n</link>
        </image>

                    <item>
                <title>معرفی گزینه‌های اینترنت خونگی - یه پست تعاملی</title>
                <link>https://virgool.io/@Ali_n/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%DA%AF%D8%B2%DB%8C%D9%86%D9%87%D9%87%D8%A7%DB%8C-%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%86%D8%AA-%D8%AE%D9%88%D9%86%DA%AF%DB%8C-%DB%8C%D9%87-%D9%BE%D8%B3%D8%AA-%D8%AA%D8%B9%D8%A7%D9%85%D9%84%DB%8C-rma3ad9fxoba</link>
                <description>اول بگم چی شد که تصمیم گرفتم همچین پستی بنویسم. دوستم میخواست اینترنتشو عوض کنه، یه خرده صحبت کردیم و یهو یه ISP (شرکت ارائه‌دهنده‌ی اینترنت)ای رو مطرح کرد و چیزای جالبی راجع بهش گفت. من رفتم چک کردم و تعجب کردم که تا الان راجع بهش نشنیده بودم. کلا هم خیلی صحبت میشه که کدوم اینترنت خوبه و میخوام عوض کنم و ... . در نتیجه تصمیم گرفتم یه پستی بنویسم که هرکی گفت چه اینترنتی بگیرم، ارجاعش بدم به این تا کار همه راحت بشه. پست تعاملی چیه؟ من خب از همه‌ی اینترنتا خبر ندارم طبیعتا. اطلاعاتم هم ممکنه غلط باشه. در نتیجه از کامنت‌ها هم استفاده می‌کنم واسه کامل کردن پست و تصحیحش. کامنت‌هایی که چند نفر تاییدش کنن یا چندتا کامنت مشابهش باشه احتمالا میاد تو پست. نکته‌ی خاصی اگه به نظرتون اومد به قول این یوتیوبرا comment below تا اگه دیدم کمکی به بهتر شدن مطلب می‌کنه اضافه‌ش کنم. ممکنه اسم سایت نت‌سنج+ رو هم شنیده باشید که اخیرا راه افتاده و بر اساس منطقه‌ی سکونت، کیفیت اینترنت شرکت‌های مختلف تو زمینه‌های مختلفو میگه. البته نمیدونم چقد درسته ولی یه سر بهش بزنید بدک نیست.انواع اینترنتتا جایی که من خبر دارم، تو ایران دو نوع کلی اینترنت خونگی الان موجوده:1. بر بستر کابلشامل VDSL، ADSL و اینترنت بر بستر فیبر نوری (FTTH) (البته یه سری انواع دیگه مثل cable هم هست که تو ایران نداریم)همونطور که از اسمش پیداس، اگه از این گروه اینترنت بگیرید مستقیم از مرکز مخابراتی تا خونه کابل کشیده میشه. مزیتش نسبت به گروه بی‌سیم بعضا سریعتر بودن و آماده بودن زیرساختشه. معایبش هم سرعت کند انتقال اطلاعات تو سیم مسیه. یه توضیح مختصر برای هرکدوم:اینترنت ADSL: کابل مسی از مرکز مخابراتی تا خونه. تماس‌های تلفنی هم از همین طریق برقرار میشه.اینترنت VDSL: که جدیدا خیلی هم داره تبلیغ میشه که بیاید عوض کنید. از مرکز مخابراتی تا یه باکسی نزدیک خونه‌تون با کابل فیبر نوری میاد، از اونجا به بعد با سیم مسی و در نتیجه سرعت بالاتر نسبت به ADSL. اگه یادتون باشه یه سری خانواده‌ها سر گرفتن ADSL مشکل داشتن (و همچنان دارن) به این دلیل که خط تلفنشون فیبر نوریه. فک کنم اون‌ها باید VDSL بگیرن.اینترنت بر بستر فیبر نوری یا FTTH: بسیار جدید اومده تو ایران. تا جایی که من میدونم هم آخرین تکنولوژی اینترنت تو جهانه. فیبر نوری مستقیم از مرکز مخابراتی تا خونه. طبیعتا سرعت و کیفیت به مراتب بالاتر از دو مورد قبلی.2. اینترنت بی‌سیمشامل دو نوع: TD-LTE و اینترنت مرکزی (که ممکنه به اسم اینترنت بی‌سیم هم شنیده باشینش).به این صورته که شما یه آنتن تو خونه دارید که اطلاعاتو به صورت بی‌سیم با دکل ارائه‌دهنده‌ی اینترنت مبادله میکنه. اینترنت TD-LTE: شبیه اینترنت گوشی، صرفا به مودم خونگی وصل میشه. عین این که گوشیتون همیشه هات‌اسپات باشه. اینترنت مرکزی: یه آنتن نصب میکنن که با آنتن ISP ارتباط برقرار کنه. معمولا برای مجتمع‌های بزرگ استفاده میشه.1. اینترنت ADSLشایع‌ترین اینترنت پرسرعت. چون بر بستر تلفنه خیلی از خونواده‌ها بهش دسترسی دارن، تعداد شرکتایی که ارائه میدنش هم خیلی زیاده. سرعت‌های مختلف هم هست تا 16 مگابیت بر ثانیه که البته همه نمیتونن به این سرعت برسن. فاصله تا مرکز مخابراتی و سیم‌کشی داخل ساختمون نقش مهمی تو کیفیت اینترنت داره. مثلا ما خودمون نمیتونستیم اینترنت 16 مگ بگیریم چون نویز میفتاد و هی قطع و وصل میشد. معلوم هم نشد به خاطر زیرساخته یا کابل‌کشی ساختمون.بعد از معرفی اینترنت غیرحجمی*، حجم‌های بسته‌های شرکت‌ها به طرز عجیبی زیاد شده. یه حدود قیمت مشخصی هم دارن همشون. مثلا با حدود 50 هزار تومن ماهیانه، میشه اینترنت 8 مگ با سقف دانلود 200 گیگ گرفت. یعنی تو سرعتای بالا اصلا مشکل حجم وجود نداره اما یه مشکلی که هست که اون اوائل خیلی بهش گیر داده شد اینه که بسته‌های سرعت بالا و حجم کم یا بالعکس وجود نداره یا کمه که مثلا برای کاربرایی که صرفا صفحات وب رو باز میکنن ولی سرعت بالا میخوان شاید یه ذره نامناسب باشه. *اینترنت غیرحجمی: یعنی شما همیشه اینترنت دارید اما یه حجم مصرف منصفانه دارید که فقط تا اون مقدار مصرف حجم سرعتی که خریدید رو میگیرید و بعدش سرعت حداقل میشه (مثلا 128kbps).و اما شرکت‌های مختلف.های‌وب: ما خودمون این اینترنت رو داشتیم و من خیلی راضی بودم. پشتیبانی عالی و مودب و سریع، پنل کاربری خوب، و سرعت واقعی. یعنی سرعت 8 مگابیت که گرفتم واقعا با 1 مگابایت بر ثانیه دانلود میکرد. البته، یه سری از دوستان که از شرکتای دیگه داشتن میگفتن مثلا ما سرعت 4 مگ گرفتیم ولی ما هم با 1مگابایت بر ثانیه دانلود میکنیم که خب این ینی ISP اونا مرام گذاشته. به طور خلاصه، های‌وب رو اینترنت خوبی یافتم.مخابرات: به طور کلی اینترنت مخابرات به نظر خیلی جالب نیست. کلی اعتراض شنیدم از قطعی و وصلی‌های زیاد. پشتیبانیشم به نسبت چندان خوب نیست (اینو خودم تجربه کردم)، هم به دلیل صف‌های انتظار طولانی موقع تماس با پشتیبانی (البته الان تو دوران کرونا خیلی کوتاه) و هم به خاطر خود پاسخگوها که انگار چندان علاقه‌ای به جواب دادن ندارن و طرز برخوردی که تو بقیه‌ی پشتیبانی‌ها می‌بینیم رو اینجا نمی‌بینیم. تنها مزیتی که میشه براش در نظر گرفت اینه که هزینه‌ی ADSL میاد روی قبض تلفن.بقیه‌ی شرکت‌ها: شاتل (احتمالا معروف‌ترین)، پارس‌آنلاین، آسیاتک و ... . نکته‌ی خاصی در مورد این‌ها ندارم هنوز. تو نظرات بگید که اضافه کنم.همونطور که گفتم، تو ADSL شرکتای مختلف چندان فرقی ندارن چون قیمت‌ها و حجم‌ها تقریبا مصوبه و به دلیل رقابت بالا، هر شرکت سعی میکنه کیفیت خوبی ارائه بده (البته به جز مخابرات اونطور که از شنیده‌ها بر میاد). یه مقایسه‌ی خوب از حجم منصفانه‌ای که ISPها میدن (با تشکر از زومیت):2. اینترنت VDSLتا قبل از این جریان کرونا، اینطور که به نظر میاد VDSL خونگی رو صرفا مخابرات ارائه میداد اونم صرفا برای افرادی که ADSL نمی‌تونستن داشته باشن. به گفته‌ی شاهدان عینی خیلی هم کیفیت بدی ارائه میدادن که فک کنم به خاطر اینه که سرویساش خیلی متنوع نبود. با اومدن کرونا و همت وزیر جوان، به نظر داره VDSL کم کم همگانی میشه و تو تهران و قم نصبش شروع شده. ثبت درخواست هم از طریق سایت ISPها انجام میشه ولی مثکه تا لحظه‌ی نوشته شدن این پست فقط مخابرات داره درخواست میگیره (اسم سرویس &quot;سُرینو&quot; هستش). برای نصب سرویس VDSL اینطور که شنیدم قرار نیست هزینه‌ای گرفته بشه اما نکته‌ی مهم اینه که باید مودم جدید و مخصوص گرفت که قیمتش بیشتر از مودم‌های ADSLه و البته قراره شرکت‌ها یا خودشون با قیمت مناسب‌تر بفروشن یا با مودم‌های قدیمی تعویض کنن. قیمت سرویس‌های VDSL مخابرات:طبق انتظار، سرعت‌های بالاتر موجوده با حجم‌های بیشتر. سرعت VDSL هم بستگی به فاصله از اون جعبه تقسیمی داره که فیبر نوری بهش میرسه (چون از اونجا به بعد با کابل مسیه). 3. اینترنت بر بستر فیبر نوری (FTTH)اول بگم که FTTH مخفف fiber to the home هستش. اون H تهش میتونه چیزای دیگه هم باشه که کاری نداریم. خونگیش همین FTTH. این سرویس خیلی جدیدا توسط شرکت مخابرات با اسم &quot;تانوما&quot; تو ایران معرفی شده. برای گرفتن سرویس باید درخواست بدید که هم میشه از طریق این لینک انجامش داد و هم میشه با مراجعه حضوری به مرکز مخابراتی محل سکونت ثبت درخواست کرد. ما با لینک درخواست دادیم اما چون خبری نشد، مجبور شدیم حضوری بریم مرکز. برای ثبت نام هم حضور مالک خط و کارت ملیش (و شاید شناسنامه‌ش الان درست یادم نیست) لازمه. سرعت‌ها، حجم‌ها و قیمت‌های سرویس‌هاش درست مثل قسمت پس‌پرداخت (باکس نارنجی اول) عکس تعرفه‌های VDSLه که بالا گذاشتم (متاسفانه عکس خوب جدا پیدا نکردم) ولی یه سری شرایط داره که اینا هستش:قرارداد یک ماهه نداره و قراردادهاش 3، 6، 12، 36 و 48 ماهه‌ست (ینی تو این مدت باید سرویس بگیرید ولی سرعت/حجم سرویس میتونه عوض بشه وسطش)اگه قراردادهای 3، 6 یا 12 ماهه رو بگیرید کابل‌کشی رایگانه ولی مودم رو خودتون باید تهیه کنید (حدود 700 هزار تومنه)قرارداد 36 ماهه مودم رو خودشون میدن ولی هزینه‌ی کابل‌کشی با مشتریه (هزینه بر اساس متر کابل‌کشی حساب میشه)تو قرارداد 48 ماهه هم کابل‌کشی و هم مودم رایگانهحالا پروسه‌ی نصب چطوریه؟ همون موقع که میرید ثبت‌نام چک میکنن که اطراف خونه‌تون باکسی هستش که از مرکز مخابراتی بهش فیبر نوری باشه یا نه. اگر نبود میرید تو صف تا این که چندتا واحد تو همون حوالی سرویس درخواست کنن. اگه این اتفاق بیفته میان باکس نصب میکنن. میتونید اگه باکسی اطرافتون نبود و تو مجتمع زندگی میکنید، همسایه‌ها رو قانع کنید که بیان درخواست بدن. بعد از باکس به واحدها میان کابل میکشن. تو پروسه‌ش هم از یه دستگاهی استفاده می‌کنن که 10 هزار دلار قیمتشه و کابل‌های فیبر نوری رو به هم وصل میکنه و خیلی جالبه. اینم چون خیلی خوشم اومده بود گفتم بگم. تجربه تا الان: واقعا عالیه و من دارم لذت می‌برم. فک میکردم قطعی وصلی و این‌ها زیاد باشه ولی اصلا نبوده. یه مشکلی که هست تو بازی آنلاینه و مخابرات این مشکل رو هندل نمیکنه چون ملاک پشتیبانیش فقط سرعت دانلوده و نه هیچ چیز دیگه مثل سرعت آپلود و کیفیت ارسال packetها. به عبارت دیگه مخابرات مشکل رو &quot;نگرفتن سرعت دانلودی که ذکر شده&quot; تعریف میکنه. البته پینگ عالیه‌ها، ولی packet loss اتفاق میفته تو بازی‌ها که اونم به خاطر سرویس فیبر نوری نیست به خاطر مسیر اینترنته.4. اینترنت TD-LTEسرویس اینترنتی که مثل اینترنت گوشی عمل میکنه و سرعتش هم بالاس و تا 40 یا 50mbps هم میتونه بالا بره. البته فرقش با سرویسای کابلی اینه که میتونه تحت تاثیر عواملی مثل آب و هوا قرار بگیره. یا این که اگه فاصله تا دکل زیاد باشه یا مانع سر راه آنتن‌دهی باشه، کیفیت میاد پایین. مزیتش اینه که قابل حمله و میتونید مودم رو هرجایی که ارائه‌دهنده سرویس میده ببرید، حتی شهرای دیگه. شرکتای زیادی ارائه میدنش؛ هم خیلی از شرکتایی که ADSL ارائه میدن هم یه سری شرکتای دیگه مثل ایرانسل و مبین‌نت که تخصصی‌تر TD-LTE ارائه میدن. از جزئیات بسته‌ها و ایناشم خبری ندارم پس کامنت بیلو. اما یه شرکت خاصی هست که باید حتما بهش اشاره کنم و همونیه که اول پست گفتم.زیتل: نکته‌ی جالب این ارائه‌دهنده، حجم نامحدود سرویسشه. نامحدود واقعی، با ماهی 150 هزار تومن. البته نمیدونم که واقعا کیفیت خوبی هم داره یا نه ولی حداقل تو سایتش که اینو نوشته و به نظرم به شدت آپشن خوبیه. 5. اینترنت مرکزیبرای این نوع اینترنت باید آنتن نصب بشه تا دکل‌های ارائه‌دهنده رو دریابه و به همین دلیل بیشتر برای مجتمع‌های بزرگ استفاده میشه. مشکلاتش هم مثل مشکلات TD-LTEه (تاثیر شرایط محیطی روی امواج و لزوم وجود دید آنتن به آنتن خوب). مزایاش اینه که میشه یه سرعت خیلی بالا رو به مجتمع اختصاص داد تا تقسیم بشه. همچنین چون دکل پیش خود مشترکه، فاکتور فاصله حذف میشه. شرکت‌هایی که ارائه میدن این سرویسو خیلی معروف نیستن و منم اطلاع زیادی ندارم. یه چندتاشون که شاید معروف‌تر باشن: پتیاک، ماهان‌نت، پیشگامان. باز هم نیازمند یاری سبزتان در بخش نظرات هستیم. بسیار خب توضیحات من دیگه تموم شد. همونطور که دیدید (اگه خونده باشید) خیلی اطلاعات من ناقص بود و شاید اشتباه هم باشه. قراره با هم تکمیلش کنیم پس ما رو از نظراتتون دریغ نکنید تا به یه پست کامل و تر و تمیز تبدیل بشه. </description>
                <category>Ali N</category>
                <author>Ali N</author>
                <pubDate>Mon, 27 Apr 2020 09:07:22 +0430</pubDate>
            </item>
                    <item>
                <title>کامندلاین به فرمانِ شما: ۲۰ برنامه کاربردی برای برنامه‌نویس‌ها</title>
                <link>https://virgool.io/Quera-Mag/command-line-utilities-hbgl0t2bvvin</link>
                <description>اگر شما هم برنامه‌نویس یا مهندس نرم‌افزار هستید، احتمالا خیلی اوقات ترجیح می‌دهید از کامندلاین برای انجام کارها استفاده کنید. استفاده از ترمینال برای بیشتر کارها، کمک می‌کند که بازدهی و عملکرد بهتری داشته باشید و بتوانید راحت‌تر بین پروژه‌ها، فعالیت‌ها و پوشه‌های مختلف جابجا شوید. در این مقاله می‌خواهیم چندتا از برنامه‌­های جالب کامندلاین­ را بررسی کنیم.oh-my-zsh (zsh)چارچوب oh-my-zsh مجموعه‌­ای از تنظیمات zsh است که قابلیت­‌هایی برای بهبود تجر‌به‌­ی استفاده از ترمینال در اختیار ما می­‌گذارد. تعدادی از پرکاربردترین­ این تنظیمات را در ادامه بررسی می‌کنیم:اتوکامپلیتِ (autocomplete) بهتر، که در آن می‌­توان از فلش‌­ها برای حرکت بین گزینه‌­ها استفاده کرد.تکمیل خودکار مسیرها، با تایپ فقط یک حرف از مسیر پوشه. مثلا می‌­توانید cd ~/d/y را تایپ کنید که شما را به پوشه‌­ی cd ~/Downloads/YouTube می‌­برد.برای دسترسی به تاریخچه‌ی مسیرها، می­‌توان از – cd استفاده کرد.تکمیل خودکار در git: می­توانید با tab به راحتی بین شاخه‌­های مختلف حرکت کنید.علاوه بر کارهایی که خود zsh انجام می‌­دهد، افزونه­‌های مختلفی نیز وجود دارند.افزونه‌ی history-substring-search به شما اجازه می­‌دهد که چند حرف اول یک دستور را بنویسید و سپس با فشردن فلش بالا، همه­‌ی دستوراتی را که با رشته­‌ی نوشته شده شروع می­‌شوند پیدا کنید.اگر رنگ متن‌­ها را دوست ندارید، افزونه‌­ی syntax-highlighting را نصب کنید. با این افزونه، اگر syntax دستور را اشتباه نوشته باشید، قبل از اجرای آن متوجه خواهید شد.این پلاگین علاوه بر این‌که ترمینال شما را زیباتر می‌کند، به شما اجازه می­‌دهد به آسانی وضعیت و شاخه­‌ی git فعلی خود را ببینید.کپی کردن خروجی (بدون استفاده از موس)یکی از بزرگترین مزیت‌­های استفاده از ترمینال این است که نیازی به استفاده از موس ندارید؛ البته تا وقتی که بخواهید چیزی را کپی کنید. بیایید چند راهکار برای کپی کردن بدون استفاده از موس را بررسی کنیم:yankبرای کپی کردن با yank کافی است خروجی را به آن redirect کنید، به این ترتیب:pbcopy (MacOS) / xclip (Linux)هردوی این دستورها، محتوایی که به آن­ها pipe شده را کپی می‌­کنند:iTerm2 integrationاز بین ویژگی‌های زیاد iTerm2، با استفاده از ویژگی integration در آن می‌­توانید به آسانی خروجی دستور آخر را انتخاب و کپی کنید:fasdاحتمالا بعد از مدتی، از نوشتن cd ~/yek/masire/kheili/tulani برای رفتن به پوشه‌­ی پروژه‌­تان خسته می‌شوید. fasd می‌­تواند به شما در این مورد کمک کند.وقتی که fasd را نصب و تنظیم کنید، در پس‌زمینه به جابجایی شما بین پوشه‌های مختلف با دستورات cd گوش می­‌کند و می‌­تواند کمک کند که دفعات بعدی، راحت­‌تر به پوشه‌­ی مورد نظر خود برسید. در مثال زیر، ابتدا به صورت دستی به پوشه‌­ی مورد نظر می‌­رویم. دفعه‌­ی دوم، با استفاده از دستور z از fasd این کار را می‌­کنیم:علاوه بر رفتن به پوشه­‌های مختلف، می­‌توانید از میانبرهای fasd برای اجرای عملیات­‌های دیگر با دستور کاما (,) استفاده کنید:lnavیکی از بهترین راه­‌ها برای سر و کله زدن با لاگ‌­ها، lnav است. این موضوع که lnav در خود کامندلاین وجود دارد، کار با آن را راحت­‌تر می‌­کند. این دستور به سادگی یک فایل لاگ یا چند لاگ موجود در یک پوشه را بارگذاری می‌­کند و به شما اجازه می‌­دهد آن‌­ها را فیلتر کنید، در آن­ها جست‌وجو کنید و مدیریت‌­شان کنید.در مثال زیر، تعداد زیادی لاگ باز می­‌کنیم و سپس با استفاده از فیلتر، خطوطی را که به دنبال آن هستیم می‌یابیم:pecoبرای فیلتر کردن خروجی دستورها می‌­توانید از peco استفاده کنید. می­‌توان گفت peco نسخه­‌ی تعاملی grep است.فرض کنید دستور git merge-base را فراموش کرده‌اید. برای یادآوری آن، می­‌توانید تاریخچه­‌ی دستورات را بررسی کنید:دقت کنید که peco خط انتخاب شده را برمی­‌گرداند. این یعنی می‌­توانید برای برنامه­‌های دیگر از آن استفاده کنید. مثلا ‌می‌توانیم pid برنامه­‌ی Evernote را به کمک دستور yank که بالاتر گفتیم کپی کنیم:tigاحتمالا استفاده از ترمینال برای خیلی از دستورات عمومی git مثل checkout ،pullout و merge راحت‌­تر از استفاده از یک رابط کاربری گرافیکی است. اما بعضی از دستورات واقعا نیاز به یک رابط کاربری تعاملی دارند. ممکن است وقتی دارید لاگ­‌های git را بررسی می‌­کنید، بخواهید آزادانه بین commitها حرکت کنید و وقتی دارید commit می­‌کنید، بخواهید فایل­‌هایی را که قصد stage کردن دارید انتخاب کنید. اگر برای این اعمال از یک رابط گرافیکی استفاده کنید، مجبورید از ترمینال خارج شوید و رشته‌­ی افکارتان پاره می­‌شود. tig می‌­تواند در این مورد به شما کمک کند.git logبرای مشاهده­‌ی تاریخچه می‌­توانید از دستور tig در پوشه‌­ی مربوطه استفاده کنید. با این دستور، commitهایی که انجام داده‌­اید، فایل­‌هایی که تغییر کرده‌اند و diff مربوطه نمایش داده می­‌شوند.git commitبا استفاده از دستور tig status، می‌­توانید به آسانی فایل­‌ها و حتی خطوط خاصی (chunkهایی) را قصد commit کردن‌شان را دارید، stage کنید.git difftoolدرست است که در حالت متنی کار می­‌کنید و دارید از tig استفاده می­کنید، اما لزومی ندارد که از diff متنی استفاده کنید. اگر به یک ابزار diff/merge مناسب مثل Beyond Compare نیاز دارید، می­توانید با تنظیم tig از آن استفاده کنید. برای این کار باید خط زیر را به فایل tigrc. خود اضافه کنید:bind status &lt;F4&gt; !sh -c “git difftool -y \”$(git rev-parse — show-toplevel)/%(file)\”&amp;quotحالا یک فایل تغییریافته را انتخاب کنید و کلید F4 را فشار دهید.rangerحتی اگر کار با ترمینال برایتان راحت باشد، باز هم یک سری کارها هستند که ممکن است موجب اذیت­‌تان بشوند. مثلا باز کردن سریع چند پوشه یا ‌کپی چند فایل انتخاب شده به یک پوشه­‌ی دیگر.با استفاده از ranger می­توانید به شیوه‌­ی زیر فایل­ها را کپی کنید:realpathچطور می­‌شود با استفاده از ترمینال، یک فایل را به برنامه­‌ای که رابط کاربری گرافیکی دارد فرستاد؟ مثلا مسیر یک عکس را به برنامه­‌ی ویرایش عکس داد.به این شکل realpath مسیر واقعی و مطلق هر فایلی را به شما می‌­دهد:mackupفرض کنید همه‌­ی برنامه‌­های خود را تنظیم کرده­‌اید. وقتی کامپیوترتان خراب شود یا بخواهید آن را عوض کنید، چکار خواهید کرد؟ mackup (هم برای لینوکس و هم برای MacOS) راهکاری است برای backup گرفتن تنظیمات برنامه­‌های خود به dropbox یا هر سرویس ذخیره‌­ی ابری دیگر.روش آن هوشمندانه است، به جای ایجاد نسخه‌­ها و scheduleهای مختلف، صرفا فایل را به dropbox شما آپلود می­‌کند و فایل اصلی را با symlink جایگزین می­‌کند.برنامه­‌های شما طبق روال عادی و با تنظیمات خودشان کار خواهند کرد، اما در واقع در حال تغییر فایل­‌های dropbox شما هستند. با این روش، هر تغییر روی تنظیمات، مستقیما روی سرویس ذخیره‌­ی ابری شما backup می­‌شود.نکته­ی مهم این است که برخلاف بقیه­ی برنامه‌های پشتیبان­‌گیری موجود، mackup تنها به یک بار اجرا شدن نیاز دارد.ncduاین دستور قرار است به سوال «چی داره حافظه‌­ی منو می­‌خوره؟!» جواب بدهد. بسیار ساده و پرکاربرد است و از بسیاری از برنامه­‌های جایگزین که رابط گرافیکی دارند بهتر کار می‌­کند. در نهایت می­‌توان مستقیما از طریق آن چیزهای مختلف را پاک کرد.دستورات دیگریک -- caffeinate (برای کاربران مک): به شما اجازه می‌­دهد بدون نگرانی از به خواب رفتن سیستم، دستوری که اجرای آن طول می­‌کشد را اجرا کنید؛ مثلا: caffeinate sleep 5دو -- Hub: دیگر لازم نیست مدام برای درخواست­های pull و forkها به گیت­هاب بروید، می­توانید بیشتر دستورات گیت­هاب را مستقیما در ترمینال اجرا کنید.سه -- Tmux: درواقع یک multiplexer برای ترمینال است. اگر روی یک remote computer کار می­کنید، دوست دارید از تب­ها و paneهای زیادی استفاده کنید و می­خواهید بدون قطع شدن و بسته شدن محیط­هایتان ارتباط‌تان را قطع کنید، می­توانید از Tmux استفاده کنید.چهار -- scm_breeze: اگر حس می­کنید tig زیادی رابط کاربری دارد، شاید بهتر باشد سراغ scm_breeze بروید. این برنامه امکان جایگزینی مسیرهای طولانی موجود در status با میانبرهای عددی را فراهم می‌­کند و به شما اجازه می‌­دهد فایل­های git add را بدون نیاز به تایپ مسیرهای طولانی انتخاب کنید.پنج -- Mdlt: یک ماشین­ حساب برای کامندلاین است که مشتق و انتگرال را هم محاسبه می­‌کند.شما هم پیشنهاد دیگری برای اضافه شدن به این لیست دارید؟ می‌توانید در کامنت‌ها درباره کاربرد و روش استفاده‌شان بنویسید.ترجمه بر اساس:&quot;My favorite command-line utilities&quot;, by Vitaly Belman at Hackernoonکوئرامگ مجله‌ای تخصصی برای توسعه‌دهندگان است که هر هفته با مطلب‌هایی در زمینه تکنولوژی، رشد فردی و آینده برنامه‌نویسی به‌روزرسانی می‌شود. برای اطلاع از آخرین مطلب‌های ما، می‌توانید توئیتر یا کانال تلگرام کوئرا را دنبال کنید.</description>
                <category>Ali N</category>
                <author>Ali N</author>
                <pubDate>Sun, 15 Mar 2020 22:35:16 +0330</pubDate>
            </item>
                    <item>
                <title>معماری وب: آشنایی با مفاهیم پایه</title>
                <link>https://virgool.io/Quera-Mag/%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C-%D9%88%D8%A8-%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85-%D9%BE%D8%A7%DB%8C%D9%87-ofbcud4oao0c</link>
                <description>معماری مدرن برنامه‌های تحت وب در یک نگاهتصویر بالا، معماری مدرن اپلیکیشن‌های تحت وب را به خوبی به نمایش می‌گذارد. توسعه‌دهندگانی که در حوزه وب تجربه کمتری دارند، ممکن است این معماری کمی پیچیده به نظرشان برسد. اما نگران نباشید، حقیقت این است که اصول اولیه حاکم بر این نمودار را می‌توان بسیار سریع آموخت! در ادامه مروری کوتاه اما بسیار ساده بر هر یک از اجزاء این تصویر می‌اندازیم تا ببینیم اپلیکیشن‌های مدرن تحت وب چگونه کار می‌کنند و وقتی یک وبسایت را فرامی‌خوانیم، در پشت صحنه دقیقاً چه اتفاقی می‌افتد. ۱. سامانه نام دامنه (DNS)سامانه نام دامنه (Domain Name System) یا مخفف رایج‌تر آن DNS یک فناوری پایه و حیاتی برای وجود شبکه­‌ی جهانی اینترنت است. در سطوح اولیه، DNS یک کلید/مقدار (مثلاً google.com) را به یک IP (مثلاً: 85.129.83.120) ربط می­‌دهد که باعث می­شود کامپیوتر شما یک درخواست به سرور مناسب بفرستد. اگر این سیستم را به برقراری تماس تلفنی تشبیه کنیم، فرآیند کار DNS مانند تبدیل «با علی تماس بگیر» به این است که: «با شماره‌­ی 22112233 تماس بگیر». همانطور که در گذشته برای پیدا کردن شماره تلفن علی باید در دفترچه تلفن دنبال آن می­‌گشتید، امروزه نیز برای پیدا کردن IP یک دامنه به DNS نیاز دارید. می­توان گفت DNS دفترچه تلفن اینترنت است.جزئیات بسیار زیادی هستند که می­توان به آن­ها پرداخت، اما برای مراحل ابتدایی تا همینجا کافی است.۲. متوازن­‌کننده بار (Load Balancer)قبل از پرداختن به جزئیات توازن بار، باید راجع به مقیاس‌دهی افقی و عمودی اپلیکیشن توضیح بدهیم. به طور ساده، تغییر مقیاس افقی یعنی افزایش «تعداد» منابع مثلاً از طریق افزایش تعداد کامپیوترها؛ در حالی که تغییر مقیاس عمودی یعنی افزایش «قدرت» منابعی که در اختیار داریم مثلاً با ارتقای CPU یا RAM کامپیوتر.در توسعه­‌ی وب، شما تقریباً همیشه باید به صورت افقی مقیاس کنید، دلیل آن هم این است که هر چیزی خراب می­شود! سرورها ناخواسته به مشکل می­‌خورند، شبکه‌­ها تحلیل می­روند، حتی گاهی یک مرکز داده (Data Center) به طور کلی آفلاین می­‌شود. داشتن چند سرور باعث می­‌شود بتوانید از قطعی­‌ها فرار کنید و برنامه­‌ی شما همچنان کار کند. در واقع برنامه­‌ی شما &quot;مقاوم به مشکل&quot; (Fault Tolerant) می­‌شود. مزیت دوم تغییر مقیاس افقی این است که اجزای مختلف Back-end برنامه ­ی شما (مانند سرور شبکه، دیتابیس و...) اگر روی سرورهای جدا قرار داشته باشند، کمترین وابستگی را به هم خواهند داشت. مورد آخر هم این که در نهایت برای مقیاس عمودی محدودیت وجود دارد و به جایی می­رسید که دیگر نمی­توانید مقیاس عمودی بیشتری انجام دهید. هیچ کامپیوتری آنقدر قوی نیست که بتواند از عهده­‌ی تمام محاسبات مورد نیاز شما بر بیاید!خب، برگردیم به متوازن کننده­ های بار، همان چاشنی جادویی که مقیاس افقی را امکان­‌پذیر می‌کند! کار آن­ها این است که درخواست را به یکی از چندین سرور اپلیکیشن که معمولاً دقیقاً شبیه هم (یا Mirror Image هم هستند) بفرستند و پاسخ آن را به کاربر (Client) برگردانند. همه­‌ی این سرورها درخواست را مشابه یکدیگر مدیریت می­‌کنند، پس مسئله صرفا توزیع درخواست­‌ها است به طوری که هیچ کدام از سرورها بار اضافی نگیرند.همین. ایده‌­ی کلی متوازن­‌کننده­ بار بسیار است. مشخص است که اگر بخواهیم دقیق‌­تر شویم، پیچیدگی­‌های خاص خود را دارند اما فعلاً نیازی نیست آن­ها را بدانیم.۳. سرور برنامه­‌های مبتنی بر وب (Web Application Servers)در بیان کلی، سرورهای برنامه­‌های مبتنی بر وب را می‌توان به سادگی معرفی کرد. آن­ها منطق مورد نیاز برای مدیریت کردن درخواست­‌های کاربر را اجرا می­‌کنند و پاسخ را در قالب HTML به مرورگر کاربر می­‌فرستند. سرورها برای کار خود، با زیرساخت­‌های بک‌اند مختلف مثل دیتابیس­‌ها، لایه­‌های Cache، صف­‌های انجام کار (Job Queues) و... در ارتباط هستند. همان طور که بالاتر گفته شد، به صورت معمول حداقل دو سرور وجود دارد (و خیلی مواقع بیشتر) که به یک متوازن­‌کننده بار متصل شده‌­اند تا درخواست کاربر بتواند پردازش شود.برای پیاده‌­سازی سرورهای برنامه، به یک زبان برنامه‌نویسی (مثلاً Node.js ،Ruby ،PHP، جاوا، اسکالا، سی‌شارپ و...) و در کنار آن یک فریم‌ورک Web MVC برای آن زبان (Express برای Node.js، لاراول برای پی‌اچ‌پی، Play برای Scala و...) نیاز است. البته جزئیات این موارد فراتر از موضوع این مقاله است.۴. سرورهای دیتابیسامروزه هر برنامه­‌ی شبکه از یک یا تعدادی بیشتر دیتابیس برای ذخیره‌­سازی اطلاعات استفاده می­‌کند. دیتابیس به شما امکان تعریف داده­‌ساختارهای خود، اضافه­ کردن داده­‌ی جدید، پیدا کردن داده، به‌­روز کردن یا پاک کردن داده، و خیلی کارهای دیگر را می­‌دهد. سرورهای برنامه­‌های تحت وب معمولاً مستقیم به یک دیتابیس متصل می‌شوند، علاوه بر این هر سرویس Back-end ممکن است دیتابیس خاص خود را داشته باشد که از بقیه­‌ی برنامه جدا است.درست است که از پرداختن به خیلی از جزئیات پرهیز می‌­کنیم اما دانستن جزئیات دو مورد بهتر از ندانستن آن‌هاست: SQL و NoSQL.زبان SQL (که مخفف Structured Query Language یا به عبارتی زبان ساختارمند پرسش‌ها) است در دهه ۷۰ میلادی ایجاد شد. هدف از ساخت این زبان، ایجاد راهکاری ساده برای کوئری زدن بر روی مجموعه داده‌های رابطه‌ای (Relational Data Sets) بود. دیتابیس‌­های SQL داده‌­ها را در جدول­‌هایی نگه می­دارند که به وسیله‌­ی IDهای مشترک با یکدیگر مرتبط هستند. بگذارید مثال ساده‌­ای در مورد ذخیره‌­ی اطلاعات آدرس کاربران بزنیم:می‌توانیم داده‌ها را در دو جدول ذخیره کنیم: یکی جدول users و دیگری جدول user_addresses. هر دو این جدول‌ها یک ستون id دارند که به ترتیب، شناسه‌ی کاربرها و شناسه‌ی آدرس‌ها را با یک عدد یکتا مشخص می‌کند. در جدول user_addresses یک ستون به نام user_id نیز قرار دارد که یک کلید خارجی (Foreign Key) محسوب می‌شود و این دو جدول را به یکدیگر متصل می‌کند. با user_id می‌توانیم بفهمیم آدرسی که ذخیره شده است برای کدام کاربر است. تصویر زیر یک طرح ساده از این مثال است:اگر با SQL آشنایی ندارید، بهتر است کمی در مورد آن مطالعه کنید؛ زیرا در بخش‌های زیادی از توسعه­‌ی وب به کار می‌رود و آشنایی با مبانی آن بسیار کاربردی است.در طرف مقابل NoSQL، که به معنای غیر SQL (یا Non-SQL) است، مجموعه‌­ای جدیدتر از فناوری­‌های دیتابیس است. هدف ایجاد NoSQL مدیریت حجم عظیم داده­‌هایی است که برخی برنامه‌های تحت وب در مقیاس بزرگ تولید می­‌کنند. بیشتر انواع SQL معمولاً به خوبی نمی­‌توانند به صورت افقی مقیاس کنند و تنها توانایی مقیاس شدن عمودی (آن هم به شکل محدود) را دارند. اگر در مورد NoSQL به کسب اطلاعات تکمیلی نیاز دارید، می‌توانید نگاهی به منابع زیر بیندازید:W3ResourceKDnuggetsMonogoDB Resourcesدر نظر داشته باشید که به طور کلی دنیای وب، حتی برای دیتابیس­‌های NoSQL، از SQL استفاده می­‌کند. پس حتماً باید SQL یاد بگیرید و هیچ راه فراری از آن ندارید.۵. سرویس­‌های Cachingیک سرویس Caching، پایگاه داده ساده­‌ای به صورت کلید/مقدار (یا به عبارتی Key/Value) در اختیار ما می‌گذارد که امکان ذخیره و پیدا کردن اطلاعات را تقریباً با O(1) فراهم می­کند. برنامه­‌ها از سرویس‌­های Caching استفاده می­کنند تا نتایج محاسبات پرخرج و پرزحمت را نگه دارند و به این ترتیب دفعه‌­ی بعد نیازی نباشد که دوباره این محاسبات از اول انجام شوند و صرفا نتایج از Cache بازیابی می‌­شوند. یک برنامه می‌تواند نتایج یک کوئری دیتابیس، نتایج ارتباط با سرویس­‌های خارجی، HTML یک URL خاص و خیلی چیزهای دیگر از این دست را Cache کند. مثال­‌هایی از دنیای واقعی ببینید:گوگل نتایج جست­جوهای پرطرفدار مثل “آب” یا “سریال جدید” را Cache می‌کند تا هر دفعه نیازی به محاسبه کردن آن‌ها نباشد.فیس­بوک خیلی از چیزهایی که بعد از ورود می­‌بینید، مثلاً داده‌های پست‌ها، فهرست دوستان و... را Cache می­کند. درباره سیستم Caching فیس‌بوک در این مطلب می‌توانید بیشتر بخوانید.فراگیرترین فناوری‌های کاربردی برای Caching عبارتند از Redis و Memcached.۶. صف کار (Job Queue &amp; Servers)بیشتر برنامه‌­های تحت وب نیاز دارند که یک سری کار را به صورت ناهمگام (Asynchronously) در پشت پرده انجام دهند که بعضاً ربط مستقیمی هم به درخواست کاربر ندارند. مثلاً گوگل باید کل اینترنت را Crawl کند (خزش در صفحات وب) و نتایج را نمایه کند تا بتواند پاسخ جست­جوها را بدهد. گوگل این کارها را صرفاً زمان جست­جوی کاربر انجام نمی‌دهد، بلکه به صورت ناهمگامی شبکه را Crawl می­کند و نمایه‌­های جست­جو را به طور مداوم به روز می­‌کند. یا مثال روزمره دیگری که همگی که با آن سروکار داشته‌ایم، زمانی است که کاربر در سایت عضو می‌شود و قرار است برای او ایمیل تایید عضویت ارسال شود. پیامی مبنی بر ارسال ایمیل سریعاً به کاربر نمایش داده می‌شود اما در واقع ایمیل هنوز ارسال نشده و به صورت ناهمگام و کمی بعدتر ارسال می‌شود.ساختارهای زیادی برای کار کردن به صورت ناهمگام وجود دارد، فراگیرترین آن چیزی است که آن را ساختار «صف کار» می­نامیم. دو جزء اینجا ایفای نقش می­‌کنند: یک صف «کار» که باید اجرا شود و یک یا چند سرور کار (معمولا به آن­ها &quot;کارگر&quot; می­گویند) که باید کارهای صف را انجام دهند.صف­‌های کار لیستی از کارها که باید به صورت ناهمگام انجام شوند نگه می­دارند. ساده ­ترین نوع آن‌­ها صف‌های «خروج به ترتیب ورود» (یا FIFO) هستند که اولین درخواستی که وارد صف می‌شود، قبل از سایر درخواست‌ها پردازش می‌شود. هرچند FIFO در بسیاری از مواقع هم جوابگو نیست و بیشتر برنامه­‌ها در نهایت به صف­‌هایی نیاز پیدا می­کنند که اولویت‌بندی بهتری از اهمیت کارها در آن‌ها صورت می‌گیرد. هروقت یک کار باید انجام شود، چه طبق یک برنامه‌­ی منظم و چه طبق عملیات­‌های کاربر، برنامه این کار را به صف اضافه می‌کند.سرورهای کار، کارها را پردازش می­کنند. آن­ها هر از گاهی به صف کار سر می‌زنند (Polling) تا ببیند آیا کاری برای انجام دادن هست یا نه و اگر بود، آن کار را از صف خارج، و اجرا می‌­کنند. زبان­‌ها و فریم­‌ورک­‌های این سرورها نیز همانند سرورهای شبکه بسیار گسترده می­‌باشند و برای این مقاله از ورود دقیق‌تر به آن‌ها خودداری مي‌کنیم.۷. سرویس جست­جوی تمام متناکثر برنامه­‌های تحت وب، نوعی از جست­جو را درون خود دارند؛ به این صورت که کاربر یک متن ورودی می­‌دهد (Query) و برنامه مرتبط‌ترین نتایج را برمی­‌گرداند. فناوری پشت این عملیات، «جست­جوی تمام متن» (یا Full-text Search) نام دارد که از یک ایندکس معکوس (Inverted Index) استفاده می­کند تا به سرعت پست‌هایی را پیدا کند که کلیدواژه‌­های موجود در Query را دارا هستند.نمونه­‌ای از تبدیل سه سند به ایندکس معکوس. دقت کنید که کلمه­‌های عمومی و رایج مثل “in”، “the” و “with” در ایندکس معکوس آورده نشده­‌اند.با اینکه امکان انجام جست­جوی تمام متن به طور مستقیم در یک سری دیتابیس­‌ها (مثلاً MySQL) وجود دارد اما راه‌­اندازی یک «سرویس جست­جوی» جداگانه که ایندکس معکوس بسازد و رابط Query داشته باشد هم بسیار معمول است. برای این منظور امروزه Elasticsearch پرطرفدارترین پلتفرم جست­جوی تمام متن را ارائه می‌کند؛ البته موارد دیگری مثل Sphinx و Apache Solr نیز وجود دارند۸. سرویس‌­ها (Services)با پیشرفت و بزرگتر شدن برنامه، طی زمان یک سری «سرویس­‌ها» از برنامه جدا می­شوند و به صورت برنامه‌های مستقل به کار خود ادامه می‌­دهند. البته آن­ها با دنیای خارج ارتباطی برقرار نمی­‌کنند، و برنامه­‌ی اصلی و دیگر سرویس‌­ها همچنان با آن­ها تعامل دارند. به عنوان مثال بر حسب نیاز می‌توان برای چیزهایی از قبیل «مدیریت حساب‌های کاربری»، «مدیریت پرداخت‌ها» یا «ایجاد فایل‌های PDF از متون» سرویس‌های جداگانه‌ای راه‌اندازی کرد.۹. داده (Data)امروزه بقای شرکت­‌ها به طرز استفاده‌­ی آن­ها از داده‌­ها بستگی دارد. تقریباً همه­‌ی برنامه­‌ها بعد از بزرگ شدن به حد کافی، یک پایپ‌لاین داده راه می‌­اندازند که بتوانند داده‌­ها را جمع‌­آوری، ذخیره و آنالیز کنند. یک پایپ‌لاین عادی سه مرحله دارد:۱. برنامه، داده‌هایی که معمولاً درباره­‌ی رفتار کاربران است را به محیطی برای پردازش داده‌ها ارسال می‌کند. AWS Kinesis و Kafka دو فناوری رایج این کار هستند.۲. هم داده‌­ی خام و هم داده‌­ی نهایی تغییریافته در سرویس ذخیره‌­ی ابری ذخیره می­شوند. AWS Kinesis محیطی به نام Firehose دارد که امکان ذخیره‌­ی داده‌­ی خام در سرویس ابری خودش (S3) را بسیار ساده کرده است.۳. معمولا داده‌­ی تغییریافته برای آنالیز به یک انبار داده (Data Warehouse) بارگذاری می­‌شود. [در خارج از ایران] بسیاری از استارتاپ‌ها برای این منظور از AWS Redshift استفاده می­‌کنند، هرچند شرکت­‌های بزرگتر معمولاً از Oracle یا انبارداده‌های انحصاری دیگر استفاده می­‌کنند. اگر داده‌­ها به اندازه­‌ی کافی بزرگ باشند، باید از فناوری­های ویژه داده‌های بزرگ مانند هدوپ (Hadoop) و NoSQL استفاده کرد.۱۰. ذخیره ابری (Cloud Storage)ذخیره­ ی ابری راهی ساده و مقیاس‌پذیر برای ذخیره داده، دسترسی به آن و به اشتراک گذاشتن داده‌ها در اینترنت است. شما می­‌توانید هر چیزی که روی فایل‌سیستم محلی ذخیره می­‌کنید را در آن ذخیره کنید، و مزیت آن این است که با استفاده از یک RESTful API می­شود تحت HTTP به آن دسترسی داشت. سرویس S3 آمازون امروزه با اختلاف محبوب­‌ترین سرویس ذخیره‌­ی ابری جهان است.۱۱. شبکه توزیع محتوا (CDN)دسترسی به اطلاعات زمانی که CDN وجود دارد و زمانی که بدون CDN می‌خواهیم به آن‌ها دسترسی داشته باشیم.شبکه توزیع محتوا (Content Delivery Network) یا مخفف آن CDN راهی در اختیار ما می­گذارد تا دارایی‌هایی مثل HTML ایستا، CSS، جاوا اسکریپت و عکس‌­ها را سریع‌تر در وب به کاربران ارائه دهیم، بسیار سریعتر از زمانی که آن‌ها را از یک سرور تک‌مبدا ارائه می‌دهیم. روش کار CDN به این صورت است که محتوا را بین تعداد زیادی سرور حاشیه­‌ای در سرتاسر جهان پخش می­کند تا کاربر آن محتوا را به جای دریافت از سرور مبدا اصلی، از سرورهای حاشیه­‌ای دریافت کند. برای مثال در شکل زیر، کاربری در اسپانیا یک صفحه را از سایتی درخواست کرده که سرورهای مبدا آن در نیویورک هستند؛ اما دارایی‌های ایستا می­‌توانند از یک سرور CDN حاشیه‌­ای در انگلیس دریافت شوند تا فاصله‌­ی طولانی بین اسپانیا و نیویورک طی نشود.برخی مطلب‌های قبلی کوئرامگ برای توسعه‌دهندگان وب:۷ مرحله برای تبدیل شدن به یک توسعه‌دهنده حرفه‌ای وبآشنایی با ۳ حوزه اصلی کاربرد زبان پایتونترجمه و تلخیص از:&quot;Web Architecture 101&quot;, by Jonathan Fulton at Storyblocksکوئرامگ مجله‌ای تخصصی برای توسعه‌دهندگان است که هر هفته با مطلب‌هایی در زمینه تکنولوژی، رشد فردی و آینده برنامه‌نویسی به‌روزرسانی می‌شود. برای اطلاع از آخرین مطلب‌های ما، می‌توانید توئیتر یا کانال تلگرام کوئرا را دنبال کنید.</description>
                <category>Ali N</category>
                <author>Ali N</author>
                <pubDate>Wed, 18 Dec 2019 18:03:57 +0330</pubDate>
            </item>
            </channel>
</rss>