GoGPT Best VPN GoSearch

فاویکون OnWorks

روبی - آنلاین در ابر

Ruby را در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا کنید.

این دستور Ruby است که می تواند در ارائه دهنده میزبانی رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


یاقوت - تفسیر زبان برنامه نویسی شی گرا

خلاصه


یاقوت [--کپی رایت] [- نسخه] [-SUacdlnpswvy] [-0[اکتال]] [-C فهرست راهنما]
[-E خارجی[:داخلی]] [-F[الگو]] [-I فهرست راهنما] [-K[c]] [-T[سطح]] [-W[سطح]]
[-e فرمان] [-i[گسترش]] [-r کتابخانه] [-x[فهرست راهنما]] [--{قادر ساختن|از کار انداختن}-خصیصه]
[--زباله=هدف] [-- پرحرف] [--] [فایل برنامه] [استدلال ...]

شرح


Ruby یک زبان برنامه نویسی تفسیر شده برای برنامه نویسی شی گرا سریع و آسان است.
دارای ویژگی های زیادی برای پردازش فایل های متنی و انجام وظایف مدیریت سیستم (مانند پرل) است.
این ساده، مستقیم و قابل توسعه است.

اگر زبانی برای برنامه نویسی شی گرا آسان می خواهید یا پرل را دوست ندارید
زشتی، یا مفهوم LISP را دوست دارید، اما پرانتزهای زیادی را دوست ندارید، روبی
ممکن است زبان انتخابی شما باشد

ویژگی‌ها


ویژگی های روبی به شرح زیر است:

تفسیری
روبی یک زبان تفسیر شده است، بنابراین نیازی به کامپایل مجدد برنامه های نوشته شده در آن ندارید
روبی برای اجرای آنها.

متغیر داشته باشد نه نوع (پویا تایپ کردن)
متغیرها در روبی می توانند حاوی داده هایی از هر نوع باشند. شما لازم نیست نگران باشید
تایپ متغیر در نتیجه، بررسی زمان کامپایل ضعیف تری دارد.

نه اعلام ضروری
شما می توانید از متغیرها در برنامه های Ruby خود بدون هیچ اعلان استفاده کنید. متغیر
نام ها دامنه آنها را نشان می دهد - جهانی، کلاس، نمونه یا محلی.

ساده نحو
روبی یک نحو ساده دارد که اندکی از ایفل تأثیر گرفته است.

نه در سطح کاربر حافظه مدیریت
روبی دارای مدیریت خودکار حافظه است. اشیاء دیگر از هیچ جا ارجاع داده نمی شوند
به طور خودکار توسط زباله جمع کن تعبیه شده در مترجم جمع آوری می شوند.

همه چیز is an هدف
روبی یک زبان کاملاً شی گرا است و از زمان ایجاد آن چنین بوده است. حتی چنین
داده های اساسی به عنوان اعداد صحیح به عنوان اشیا دیده می شوند.

کلاس، ارث ، و روش
Ruby به عنوان یک زبان شی گرا، طبیعتا دارای ویژگی های اساسی مانند کلاس ها،
وراثت و روش ها

یگانه روش
روبی توانایی تعریف متدهایی را برای اشیاء خاص دارد. به عنوان مثال، شما می توانید
با تعریف یک روش تک‌تنه برای ویجت خاص، یک عملکرد دکمه را تعریف کنید
دکمه. یا، می توانید با استفاده از سیستم شی مبتنی بر نمونه اولیه خود را بسازید
روش های سینگلتون، اگر بخواهید.

مخلوط کردن by ماژول ها
روبی عمداً دارای ارث چندگانه نیست زیرا منبع آن است
گیجی. در عوض، Ruby توانایی به اشتراک گذاری پیاده سازی ها را در سراسر جهان دارد
درخت ارث این اغلب "میکس در" نامیده می شود.

تکرار کننده ها
روبی تکرار کننده هایی برای انتزاع حلقه دارد.

تعطیلات
در روبی، می توانید رویه را شیئی کنید.

متن در حال پردازش و منظم اصطلاحات
روبی دارای چندین ویژگی پردازش متن مانند پرل است.

M17N، شخصیت تنظیم مستقل
روبی از برنامه نویسی چند زبانه پشتیبانی می کند. آسان برای پردازش متون نوشته شده در بسیاری از
زبان های طبیعی مختلف و رمزگذاری شده در بسیاری از رمزگذاری های کاراکترهای مختلف،
بدون وابستگی به یونیکد

Bignums
با بیگنوم های داخلی، می توانید برای مثال محاسبه کنید کارخانه(400).

انعکاس و دامنه خاص زبان
Class نیز نمونه ای از کلاس Class است. تعریف کلاس ها و متدها می باشد
یک عبارت درست مانند 1+1. بنابراین برنامه های شما حتی می توانند برنامه ها را بنویسند و تغییر دهند.
بنابراین می توانید برنامه خود را به زبان برنامه نویسی خود در بالای Ruby بنویسید.

استثنا اداره
همانطور که در جاوا (tm).

مستقیم دسترسی به la OS
روبی می تواند از اکثر تماس های سیستم یونیکس استفاده کند که اغلب در برنامه نویسی سیستم استفاده می شود.

پویا بارگیری
در اکثر سیستم‌های یونیکس، می‌توانید فایل‌های شی را در مفسر Ruby بارگذاری کنید.
پرواز.

غنی کتابخانه ها
کتابخانه هایی به نام "کتابخانه های ساخته شده" و "کتابخانه های استاندارد" همراه با روبی هستند.
و می توانید کتابخانه های بیشتری را از طریق سیستم مدیریت بسته به نام دریافت کنید
"RubyGems".

علاوه بر این، هزاران پروژه روبی در GitHub وجود دارد
https://github.com/languages/Ruby⟩.

OPTIONS


مفسر روبی گزینه‌های خط فرمان (سوئیچ) زیر را می‌پذیرد. کاملا شبیه هم هستند
به کسانی از پرل(1).

--کپی رایت اعلامیه حق چاپ را چاپ می کند.

- نسخه نسخه مترجم روبی را چاپ می کند.

-0[اکتال] (رقم "صفر".) جداکننده رکورد ورودی ($/) را به صورت هشتی مشخص می کند.
عدد. اگر رقمی داده نشود، کاراکتر تهی به عنوان جداکننده در نظر گرفته می شود.
سایر سوئیچ ها ممکن است از ارقام پیروی کنند. -00 Ruby را به حالت پاراگراف تبدیل می کند.
-0777 Ruby باعث می‌شود که کل فایل را به صورت یک رشته بخواند زیرا هیچ رشته‌ای وجود ندارد
شخصیت حقوقی با آن ارزش.

-C فهرست راهنما
-X فهرست راهنما باعث سوئیچ Ruby به دایرکتوری می شود.

-E خارجی[:داخلی]
- رمزگذاری خارجی[:داخلی]
مقدار(های) پیش فرض را برای کدگذاری خارجی و رمزگذاری داخلی مشخص می کند.
مقادیر باید با دو نقطه (:) از هم جدا شوند.

می توانید یکی را برای رمزگذاری های داخلی حذف کنید، سپس مقدار را
(Encoding.default_internal) صفر خواهد بود.

-کدگذاری خارجی=پشتیبانی می کند
- رمزگذاری داخلی=پشتیبانی می کند
رمزگذاری کاراکتر خارجی یا داخلی پیش فرض را مشخص کنید

-F الگو جداکننده فیلد ورودی ($;) را مشخص می کند.

-I فهرست راهنما برای اینکه به Ruby بگوید کجا اسکریپت های کتابخانه را بارگیری کند استفاده می شود. مسیر دایرکتوری خواهد بود
به متغیر load-path ($:) اضافه شده است.

-K kcode رمزگذاری KANJI (ژاپنی) را مشخص می کند. مقدار پیش فرض برای رمزگذاری اسکریپت
(__ENCODING__) و رمزگذاری های خارجی (Encoding.default_external) هستند
یکی را مشخص کرد. kcode می تواند یکی از

e EUC-JP

s Windows-31J (CP932)

u UTF-8

n ASCII-8BIT (دودویی)

-S Ruby را وادار می کند از متغیر محیطی PATH برای جستجوی اسکریپت استفاده کند، مگر اینکه اسکریپت آن را جستجو کند
نام با اسلش شروع می شود. این برای شبیه سازی # استفاده می شود! در ماشین هایی که این کار را نمی کنند
به روش زیر از آن حمایت کنید:

#! /usr/local/bin/ruby
# این خط، خط بعدی را به یک نظر در Ruby \ تبدیل می کند
exec /usr/local/bin/ruby -S $0 $*

-T[سطح = 1] بررسی های لکه دار را در سطح مشخص شده روشن می کند (پیش فرض 1).

-U مقدار پیش‌فرض رمزگذاری‌های داخلی (Encoding.default_internal) را روی آن تنظیم می‌کند
UTF-8.

-W[سطح = 2] حالت پرحرف را در سطح مشخص شده بدون چاپ نسخه روشن می کند
پیام در ابتدا سطح می تواند باشد؛

0 حالت پرمخاطب "سکوت" است. $VERBOSE را روی صفر تنظیم می کند.

1 حالت پرمخاطب "متوسط" است. $VERBOSE را روی false تنظیم می کند.

2 (به طور پیش فرض) حالت پرمخاطب "پرحرف" است. $VERBOSE را روی true تنظیم می کند.
-W2 همان است -w

-a حالت تقسیم خودکار را هنگام استفاده با آن روشن می کند -n or -p. در حالت تقسیم خودکار، روبی
اجرا می کند
$F = $_. تقسیم
در ابتدای هر حلقه

-c باعث می شود که Ruby سینتکس اسکریپت را بررسی کند و بدون اجرا از آن خارج شود. اگر
هیچ خطای نحوی وجود ندارد، Ruby "Syntax OK" را به استاندارد چاپ می کند
خروجی.

-d
- رفع اشکال حالت اشکال زدایی را روشن می کند. $DEBUG روی true تنظیم خواهد شد.

-e فرمان اسکریپت را از خط فرمان مشخص می کند در حالی که به Ruby می گوید بقیه را جستجو نکند
از آرگومان های نام فایل اسکریپت.

-h
--کمک خلاصه ای از گزینه ها را چاپ می کند.

-i گسترش حالت ویرایش در محل را مشخص می کند. پسوند، در صورت مشخص شدن، به قدیمی اضافه می شود
نام فایل برای تهیه نسخه پشتیبان مثلا:

% echo matz > /tmp/junk
% cat /tmp/junk
ماتز
% ruby ​​-p -i.bak -e '$_.upcase!' /tmp/junk
% cat /tmp/junk
MATZ
% cat /tmp/junk.bak
ماتز

-l (حرف کوچک "ell".) پردازش خودکار پایان خط را فعال می کند،
به این معنی که اولاً $\ را به مقدار $/ تنظیم کنید و در مرحله دوم هر را برش دهید
خط خواندن با استفاده از chop!.

-n باعث می شود که Ruby حلقه زیر را در اطراف اسکریپت شما فرض کند که باعث می شود
روی آرگومان های نام فایل تا حدودی تکرار کنید SED -n or بیدار.

در حالی که می شود
...
پایان

-p عمدتاً مانند سوئیچ -n عمل می کند، اما مقدار متغیر $_ را در هر کدام چاپ می کند
انتهای حلقه مثلا:

% پژواک ماتز | ruby -p -e '$_.tr! "az"، "AZ"
MATZ

-r کتابخانه باعث می شود که Ruby کتابخانه را با استفاده از نیاز بارگیری کند. هنگام استفاده مفید است -n or
-p.

-s برخی از تجزیه سوئیچ ها را برای سوئیچ ها بعد از نام اسکریپت اما قبل از هر کدام فعال می کند
آرگومان های نام فایل (یا قبل از a --). هر سوئیچ یافت شده در آنجا حذف می شود
از ARGV و متغیر مربوطه را در اسکریپت تنظیم کنید. مثلا:

#! /usr/local/bin/ruby -s
# اگر با سوئیچ «-xyz» فراخوانی شود، «true» را چاپ می‌کند.
اگر $xyz باشد، "true\n" را چاپ کنید

در برخی از سیستم‌ها $0 همیشه حاوی نام مسیر کامل نیست، بنابراین شما به آن نیاز دارید
-S تغییر دهید تا به Ruby بگویید در صورت لزوم اسکریپت را جستجو کند (برای رسیدگی به
فضاهای تعبیه شده و مانند آن). ساختاری بهتر از $* خواهد بود ${1+"$@"}،
اما اگر فیلمنامه توسط آن تفسیر شود کار نمی کند csh(1).

-v حالت پرحرف را فعال می کند. روبی نسخه خود را در ابتدا چاپ می کند و تنظیم می کند
متغیر $VERBOSE به true. در این صورت برخی از روش ها پیام های اضافی را چاپ می کنند
متغیر درست است اگر این سوئیچ داده شود، و هیچ سوئیچ دیگری وجود ندارد
در حال حاضر، روبی پس از چاپ نسخه خود را ترک می کند.

-w حالت پرحرف را بدون چاپ پیام نسخه در ابتدا فعال می کند. آی تی
متغیر $VERBOSE را روی true قرار می دهد.

-x[فهرست راهنما] به Ruby می گوید که اسکریپت در یک پیام جاسازی شده است. زباله های پیشرو خواهد بود
تا اولین خطی که با "#!" شروع می شود کنار گذاشته می شود. و شامل رشته،
"یاقوت". هر گونه سوئیچ معنی دار در آن خط اعمال خواهد شد. انتهای، آخر
اسکریپت باید با EOF، ^D (control-D)، ^Z (control-Z) مشخص شود.
یا کلمه رزرو شده __END__. اگر نام دایرکتوری مشخص شده باشد، Ruby این کار را انجام خواهد داد
قبل از اجرای اسکریپت به آن دایرکتوری سوئیچ کنید.

-y
--yydebug استفاده نکن.

حالت اشکال زدایی کامپایلر را روشن می کند. روبی یک دسته از حالت داخلی را چاپ می کند
پیام ها در حین تدوین فقط این سوئیچ را که قرار است اشکال زدایی کنید را مشخص کنید
مترجم روبی

--غیرفعال کردن-خصیصه
--فعال کردن-خصیصه
موارد مشخص شده را غیرفعال می کند (یا فعال می کند). خصیصه.
--غیر فعال کردن سنگهای قیمتی
--enable-gems کتابخانه های RubyGems را غیرفعال (یا فعال می کند). به صورت پیش فرض،
روبی آخرین نسخه هر سنگ نصب شده را بارگیری می کند.
اگر RubyGems فعال باشد، ثابت Gem درست است، اگر RubyGems فعال باشد، نادرست است
در غیر این صورت.

--disable-rubyopt
--enable-rubyopt متغیر محیطی RUBYOPT را نادیده می گیرد (یا در نظر می گیرد).
به طور پیش فرض، روبی متغیر را در نظر می گیرد.

--همه را غیر فعال کن
--فعال کردن همه همه ویژگی ها را غیرفعال می کند (یا فعال می کند).

--زباله=هدف برخی از اطلاعات را تخلیه کنید.

هدف مشخص شده را چاپ می کند. هدف می تواند یکی از

نسخه توضیحات نسخه مشابه - نسخه

استفاده پیام استفاده مختصر همان -h

کمک نمایش پیام راهنما طولانی مانند --کمک

نحو بررسی نحو همان -c --yydebug

yydebug حالت اشکال زدایی کامپایلر، همان --yydebug

فقط در صورتی این سوئیچ را مشخص کنید که می خواهید روبی را اشکال زدایی کنید
مترجم

درخت پارست

parsetree_with_comment درخت گره های AST

فقط در صورتی این سوئیچ را مشخص کنید که می خواهید روبی را اشکال زدایی کنید
مترجم

insns دستورالعمل های جدا شده

فقط در صورتی این سوئیچ را مشخص کنید که می خواهید روبی را اشکال زدایی کنید
مترجم

-- پرحرف حالت پرحرف را بدون چاپ پیام نسخه در ابتدا فعال می کند. آی تی
متغیر $VERBOSE را روی true قرار می دهد. اگر این سوئیچ داده شود، و هیچ دیگری
سوئیچ ها وجود دارند، روبی پس از چاپ نسخه خود از آن خارج می شود.

محیط زیست


RUBYLIB فهرستی از دایرکتوری های جدا شده با دو نقطه که به مسیر بارگذاری کتابخانه روبی اضافه می شوند.
($:). دایرکتوری های این متغیر محیطی قبل از استاندارد جستجو می شوند
مسیر بار جستجو می شود.

به عنوان مثال:
RUBYLIB="$HOME/lib/ruby:$HOME/lib/rubyext"

RUBYOPT گزینه های اضافی روبی.

به عنوان مثال
RUBYOPT="-w -Ke"

توجه داشته باشید که RUBYOPT فقط می تواند حاوی باشد -d, -E, -I, -K, -r, -T, -U, -v, -w, -W،
- رفع اشکال, --غیرفعال کردن-خصیصه و --فعال کردن-خصیصه.

RUBYPATH فهرستی از دایرکتوری های جدا شده با دو نقطه که Ruby برنامه های Ruby را جستجو می کند.
la -S پرچم مشخص شده است. این متغیر مقدم بر متغیر محیطی PATH است.

RUBYSHELL مسیر فرمان پوسته سیستم. این متغیر محیطی برای فعال است
فقط پلتفرم های mswin32، mingw32 و OS/2. اگر این متغیر تعریف نشده باشد، Ruby
به COMSPEC اشاره دارد.

PATH Ruby به متغیر محیطی PATH در فراخوانی کرنل#سیستم اشاره دارد.

و Ruby به برخی از متغیرهای محیطی مربوط به RubyGems بستگی دارد مگر اینکه RubyGems غیرفعال باشد.
به کمک مراجعه کنید جواهر(1) به شرح زیر.

٪ کمک جواهر

GC محیط زیست


جمع آوری زباله روبی (GC) اشیاء را در شکاف های با اندازه ثابت ردیابی می کند، اما هر شی ممکن است
دارای تخصیص حافظه کمکی است که توسط خانواده malloc از فراخوان های کتابخانه استاندارد C مدیریت می شود (
از malloc(3) کالوک(3)، و تخصیص مجدد(3)). در این مستندات، "هپ" به این اشاره دارد
انبوه شی یاقوتی از شکاف های با اندازه ثابت، در حالی که "malloc" به تخصیص های کمکی اشاره دارد
معمولاً به عنوان "پشته فرآیند" نامیده می شود. بنابراین حداقل دو راه ممکن وجود دارد
ماشه GC:

1 رسیدن به حد شی.

2 رسیدن به حد مجاز malloc.

در Ruby 2.1 نسل GC معرفی شد و محدودیت ها به جوان و
نسل های قدیمی، دو راه اضافی برای راه اندازی GC ارائه می دهند:

3 رسیدن به حد اشیاء قدیمی

4 رسیدن به حد ماللاک قدیمی.

در حال حاضر 4 ناحیه ممکن وجود دارد که GC ممکن است توسط 11 مورد زیر تنظیم شود
متغیرهای محیطی:
RUBY_GC_HEAP_INIT_SLOTS اسلات تخصیص اولیه. معرفی شده در Ruby 2.1،
پیش فرض: 10000.

RUBY_GC_HEAP_FREE_SLOTS حداقل این مقدار اسلات را بعد از GC آماده کنید.
اگر تعداد اسلات های کافی وجود ندارد، این تعداد را اختصاص دهید
اسلات ها معرفی شده در Ruby 2.1، پیش فرض: 4096

RUBY_GC_HEAP_GROWTH_FACTOR نرخ تخصیص شکاف های پشته را با این افزایش دهید
عامل. معرفی شده در Ruby 2.1، پیش فرض: 1.8،
حداقل: 1.0 (بدون رشد)

RUBY_GC_HEAP_GROWTH_MAX_SLOTS نرخ تخصیص به این تعداد اسلات محدود است،
جلوگیری از تخصیص بیش از حد به دلیل
RUBY_GC_HEAP_GROWTH_FACTOR. معرفی شده در Ruby 2.1،
پیش فرض: 0 (بدون محدودیت)

RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR یک GC کامل را زمانی که تعداد اشیاء قدیمی است انجام دهید
بیشتر از R * N، که در آن R این ضریب و N برابر است
تعداد اشیاء قدیمی پس از آخرین GC کامل.
معرفی شده در Ruby 2.1.1، پیش فرض: 2.0

RUBY_GC_MALLOC_LIMIT محدودیت اولیه تخصیص نسل جوان از
خانواده malloc GC زمانی شروع می شود که این محدودیت باشد
رسیده است. پیش فرض: 16 مگابایت

RUBY_GC_MALLOC_LIMIT_MAX حداکثر محدودیت تخصیص نسل جوان از
malloc قبل از شروع GC. از مالوک بیش از حد جلوگیری می کند
رشد ناشی از RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR.
معرفی شده در Ruby 2.1، پیش فرض: 32 مگابایت.

RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR محدودیت تماس های نسل جوان malloc را افزایش می دهد،
کاهش فرکانس GC اما افزایش رشد malloc
تا زمانی که به RUBY_GC_MALLOC_LIMIT_MAX برسد.
معرفی شده در Ruby 2.1، پیش فرض: 1.4، حداقل: 1.0
(بدون رشد)

RUBY_GC_OLDMALLOC_LIMIT حد اولیه تخصیص نسل قدیم از
malloc، یک GC کامل زمانی شروع می شود که این محدودیت باشد
رسیده است. معرفی شده در Ruby 2.1، پیش فرض: 16 مگابایت

RUBY_GC_OLDMALLOC_LIMIT_MAX حداکثر محدودیت تخصیص نسل قدیم از
malloc قبل از شروع GC کامل. از زیاده روی جلوگیری می کند
رشد malloc به دلیل
RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR. معرفی شده در
روبی 2.1، پیش فرض: 128 مگابایت

RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR محدودیت نسل قدیمی malloc را افزایش می دهد
تخصیص، کاهش فرکانس کامل GC اما افزایش
رشد malloc تا زمانی که RUBY_GC_OLDMALLOC_LIMIT_MAX باشد
رسیده است. معرفی شده در Ruby 2.1، پیش فرض: 1.2،
حداقل: 1.0 (بدون رشد)

پشته اندازه محیط زیست


متغیرهای محیطی اندازه پشته وابسته به پیاده سازی هستند و در معرض تغییر هستند
نسخه های مختلف روبی پشته VM برای کدهای Ruby خالص استفاده می شود و توسط آن مدیریت می شود
ماشین مجازی. پشته ماشین توسط سیستم عامل استفاده می شود و استفاده از آن وابسته است
در پسوندهای C و همچنین گزینه های کامپایلر C. استفاده از مقادیر کمتر برای این موارد ممکن است اجازه دهد
برنامه های کاربردی برای اجرای بیشتر Fibers یا Threads. اما شانس را افزایش می دهد
استثناهای SystemStackError و خطاهای تقسیم بندی (SIGSEGV). این متغیرهای محیطی
از Ruby 2.0.0 در دسترس هستند. تمام مقادیر بر حسب بایت مشخص می شوند.

RUBY_THREAD_VM_STACK_SIZE اندازه پشته VM در ایجاد رشته استفاده می شود. پیش فرض: 131072
(CPU 32 بیتی) یا 262144 (64 بیتی)

RUBY_THREAD_MACHINE_STACK_SIZE اندازه پشته ماشین در ایجاد رشته استفاده می شود. پیش فرض: 524288
یا 1048575

RUBY_FIBER_VM_STACK_SIZE اندازه پشته VM در ایجاد فیبر استفاده می شود. پیش فرض: 65536 یا
131072

RUBY_FIBER_MACHINE_STACK_SIZE اندازه پشته ماشین که در ایجاد فیبر استفاده می شود. پیش فرض: 262144
یا 524288

از یاقوت به صورت آنلاین با استفاده از خدمات onworks.net استفاده کنید


سرورها و ایستگاه های کاری رایگان

دانلود برنامه های ویندوز و لینوکس

دستورات لینوکس

Ad




×
تبلیغات
❤️اینجا خرید کنید، رزرو کنید یا بخرید - رایگان است، به رایگان ماندن خدمات کمک می‌کند.