mirror of
https://github.com/google/comprehensive-rust.git
synced 2025-03-21 14:46:37 +02:00
concurrency/sync-exercises translated to Fa (#2304)
concurrency/sync-exercises translated to Farsi --------- Co-authored-by: javad-jafari <javajafarifromsharak@gmail.com> Co-authored-by: javad-jafari <65780584+javad-jafari@users.noreply.github.com>
This commit is contained in:
parent
d8ab3e0009
commit
d706758b07
131
po/fa.po
131
po/fa.po
@ -18808,7 +18808,7 @@ msgstr "بلوکها برای محدود کردن دامنه `LockGuard` تا
|
|||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:3
|
#: src/concurrency/sync-exercises/dining-philosophers.md:3
|
||||||
msgid "The dining philosophers problem is a classic problem in concurrency:"
|
msgid "The dining philosophers problem is a classic problem in concurrency:"
|
||||||
msgstr ""
|
msgstr "مسئله ناهار خوردن فیلسوفان، در واقع یک مسئله کلاسیک concurrency است:"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:5
|
#: src/concurrency/sync-exercises/dining-philosophers.md:5
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -18821,6 +18821,14 @@ msgid ""
|
|||||||
"not eating. After an individual philosopher finishes eating, they will put "
|
"not eating. After an individual philosopher finishes eating, they will put "
|
||||||
"down both forks."
|
"down both forks."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"پنج فیلسوف در کنار هم دور یک میز غذا میخورند. هر فیلسوف جایگاه خاص خود را در "
|
||||||
|
"میز دارد. بین هر بشقاب یک چنگال قرار دارد. غذایی که سِرو میشود نوعی اسپاگتی "
|
||||||
|
"است که باید با دو چنگال خورده شود. هر فیلسوف فقط میتواند به طور متناوب فکر "
|
||||||
|
"کند و غذا بخورد. علاوه بر این، یک فیلسوف فقط میتواند اسپاگتی خود را زمانی "
|
||||||
|
"بخورد که هم چنگال چپ و هم چنگال راست را داشته باشد؛ بنابراین دو چنگال فقط "
|
||||||
|
"زمانی در دسترس خواهد بود که دو همسایه نزدیک آنها در حال فکرکردن باشند و نه "
|
||||||
|
"در حال غذاخوردن. پس از اینکه یک فیلسوف غذاخوردن را تمام کرد، هر دو چنگال را "
|
||||||
|
"پایین میگذارد."
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:13
|
#: src/concurrency/sync-exercises/dining-philosophers.md:13
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -18828,6 +18836,9 @@ msgid ""
|
|||||||
"for this exercise. Copy the code below to a file called `src/main.rs`, fill "
|
"for this exercise. Copy the code below to a file called `src/main.rs`, fill "
|
||||||
"out the blanks, and test that `cargo run` does not deadlock:"
|
"out the blanks, and test that `cargo run` does not deadlock:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"برای این تمرین به یک [Cargo installation](../../cargo/running-locally.md) "
|
||||||
|
"محلی نیاز دارید. کد زیر را در فایلی به نام `src/main.rs` کپی کنید، جاهای "
|
||||||
|
"خالی را پر کنید و آزمایش کنید که `cargo run` به بنبست (deadlock) نمیخورد:"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:28
|
#: src/concurrency/sync-exercises/dining-philosophers.md:28
|
||||||
#: src/concurrency/async-exercises/dining-philosophers.md:23
|
#: src/concurrency/async-exercises/dining-philosophers.md:23
|
||||||
@ -18836,86 +18847,92 @@ msgid ""
|
|||||||
" // right_fork: ...\n"
|
" // right_fork: ...\n"
|
||||||
" // thoughts: ...\n"
|
" // thoughts: ...\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"// left_fork: ...\n"
|
||||||
|
" // right_fork: ...\n"
|
||||||
|
" // thoughts: ...\n"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:36
|
#: src/concurrency/sync-exercises/dining-philosophers.md:36
|
||||||
#: src/concurrency/sync-exercises/solutions.md:22
|
#: src/concurrency/sync-exercises/solutions.md:22
|
||||||
#: src/concurrency/async-exercises/dining-philosophers.md:31
|
#: src/concurrency/async-exercises/dining-philosophers.md:31
|
||||||
#: src/concurrency/async-exercises/solutions.md:23
|
#: src/concurrency/async-exercises/solutions.md:23
|
||||||
msgid "\"Eureka! {} has a new idea!\""
|
msgid "\"Eureka! {} has a new idea!\""
|
||||||
msgstr ""
|
msgstr "\"ایول! {} یک ایده جدید!\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:41
|
#: src/concurrency/sync-exercises/dining-philosophers.md:41
|
||||||
#: src/concurrency/async-exercises/solutions.md:31
|
#: src/concurrency/async-exercises/solutions.md:31
|
||||||
|
#, fuzzy
|
||||||
msgid "// Pick up forks...\n"
|
msgid "// Pick up forks...\n"
|
||||||
msgstr ""
|
msgstr "// Pick up forks...\n"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:42
|
#: src/concurrency/sync-exercises/dining-philosophers.md:42
|
||||||
#: src/concurrency/sync-exercises/solutions.md:31
|
#: src/concurrency/sync-exercises/solutions.md:31
|
||||||
#: src/concurrency/async-exercises/dining-philosophers.md:38
|
#: src/concurrency/async-exercises/dining-philosophers.md:38
|
||||||
#: src/concurrency/async-exercises/solutions.md:51
|
#: src/concurrency/async-exercises/solutions.md:51
|
||||||
msgid "\"{} is eating...\""
|
msgid "\"{} is eating...\""
|
||||||
msgstr ""
|
msgstr "\"{} is eating...\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:48
|
#: src/concurrency/sync-exercises/dining-philosophers.md:48
|
||||||
#: src/concurrency/sync-exercises/solutions.md:37
|
#: src/concurrency/sync-exercises/solutions.md:37
|
||||||
#: src/concurrency/async-exercises/dining-philosophers.md:44
|
#: src/concurrency/async-exercises/dining-philosophers.md:44
|
||||||
#: src/concurrency/async-exercises/solutions.md:59
|
#: src/concurrency/async-exercises/solutions.md:59
|
||||||
msgid "\"Socrates\""
|
msgid "\"Socrates\""
|
||||||
msgstr ""
|
msgstr "\"Socrates\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:48
|
#: src/concurrency/sync-exercises/dining-philosophers.md:48
|
||||||
#: src/concurrency/sync-exercises/solutions.md:37
|
#: src/concurrency/sync-exercises/solutions.md:37
|
||||||
#: src/concurrency/async-exercises/dining-philosophers.md:44
|
#: src/concurrency/async-exercises/dining-philosophers.md:44
|
||||||
#: src/concurrency/async-exercises/solutions.md:59
|
#: src/concurrency/async-exercises/solutions.md:59
|
||||||
msgid "\"Hypatia\""
|
msgid "\"Hypatia\""
|
||||||
msgstr ""
|
msgstr "\"Hypatia\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:48
|
#: src/concurrency/sync-exercises/dining-philosophers.md:48
|
||||||
#: src/concurrency/sync-exercises/solutions.md:37
|
#: src/concurrency/sync-exercises/solutions.md:37
|
||||||
#: src/concurrency/async-exercises/dining-philosophers.md:44
|
#: src/concurrency/async-exercises/dining-philosophers.md:44
|
||||||
#: src/concurrency/async-exercises/solutions.md:59
|
#: src/concurrency/async-exercises/solutions.md:59
|
||||||
msgid "\"Plato\""
|
msgid "\"Plato\""
|
||||||
msgstr ""
|
msgstr "\"Plato\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:48
|
#: src/concurrency/sync-exercises/dining-philosophers.md:48
|
||||||
#: src/concurrency/sync-exercises/solutions.md:37
|
#: src/concurrency/sync-exercises/solutions.md:37
|
||||||
#: src/concurrency/async-exercises/dining-philosophers.md:44
|
#: src/concurrency/async-exercises/dining-philosophers.md:44
|
||||||
#: src/concurrency/async-exercises/solutions.md:59
|
#: src/concurrency/async-exercises/solutions.md:59
|
||||||
|
#, fuzzy
|
||||||
msgid "\"Aristotle\""
|
msgid "\"Aristotle\""
|
||||||
msgstr ""
|
msgstr "\"Aristotle\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:48
|
#: src/concurrency/sync-exercises/dining-philosophers.md:48
|
||||||
#: src/concurrency/sync-exercises/solutions.md:37
|
#: src/concurrency/sync-exercises/solutions.md:37
|
||||||
#: src/concurrency/async-exercises/dining-philosophers.md:44
|
#: src/concurrency/async-exercises/dining-philosophers.md:44
|
||||||
#: src/concurrency/async-exercises/solutions.md:59
|
#: src/concurrency/async-exercises/solutions.md:59
|
||||||
msgid "\"Pythagoras\""
|
msgid "\"Pythagoras\""
|
||||||
msgstr ""
|
msgstr "\"Pythagoras\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:51
|
#: src/concurrency/sync-exercises/dining-philosophers.md:51
|
||||||
#: src/concurrency/async-exercises/dining-philosophers.md:48
|
#: src/concurrency/async-exercises/dining-philosophers.md:48
|
||||||
#: src/concurrency/async-exercises/solutions.md:63
|
#: src/concurrency/async-exercises/solutions.md:63
|
||||||
msgid "// Create forks\n"
|
msgid "// Create forks\n"
|
||||||
msgstr ""
|
msgstr "// Create forks\n"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:53
|
#: src/concurrency/sync-exercises/dining-philosophers.md:53
|
||||||
#: src/concurrency/async-exercises/dining-philosophers.md:50
|
#: src/concurrency/async-exercises/dining-philosophers.md:50
|
||||||
#: src/concurrency/async-exercises/solutions.md:67
|
#: src/concurrency/async-exercises/solutions.md:67
|
||||||
msgid "// Create philosophers\n"
|
msgid "// Create philosophers\n"
|
||||||
msgstr ""
|
msgstr "// Create philosophers\n"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:55
|
#: src/concurrency/sync-exercises/dining-philosophers.md:55
|
||||||
msgid "// Make each of them think and eat 100 times\n"
|
msgid "// Make each of them think and eat 100 times\n"
|
||||||
msgstr ""
|
msgstr "// Make each of them think and eat 100 times\n"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:57
|
#: src/concurrency/sync-exercises/dining-philosophers.md:57
|
||||||
#: src/concurrency/async-exercises/dining-philosophers.md:54
|
#: src/concurrency/async-exercises/dining-philosophers.md:54
|
||||||
#: src/concurrency/async-exercises/solutions.md:95
|
#: src/concurrency/async-exercises/solutions.md:95
|
||||||
|
#, fuzzy
|
||||||
msgid "// Output their thoughts\n"
|
msgid "// Output their thoughts\n"
|
||||||
msgstr ""
|
msgstr "// Output their thoughts\n"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:61
|
#: src/concurrency/sync-exercises/dining-philosophers.md:61
|
||||||
msgid "You can use the following `Cargo.toml`:"
|
msgid "You can use the following `Cargo.toml`:"
|
||||||
msgstr ""
|
msgstr "می توانید از `Cargo.toml` زیر استفاده کنید:"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/dining-philosophers.md:65
|
#: src/concurrency/sync-exercises/dining-philosophers.md:65
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -18926,6 +18943,12 @@ msgid ""
|
|||||||
"edition = \"2021\"\n"
|
"edition = \"2021\"\n"
|
||||||
"```"
|
"```"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"```toml\n"
|
||||||
|
"[package]\n"
|
||||||
|
"name = \"dining-philosophers\"\n"
|
||||||
|
"version = \"0.1.0\"\n"
|
||||||
|
"edition = \"2021\"\n"
|
||||||
|
"```"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:3
|
#: src/concurrency/sync-exercises/link-checker.md:3
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -18934,6 +18957,10 @@ msgid ""
|
|||||||
"should recursively check other pages on the same domain and keep doing this "
|
"should recursively check other pages on the same domain and keep doing this "
|
||||||
"until all pages have been validated."
|
"until all pages have been validated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"اجازه دهید از دانش جدید خود برای ایجاد یک جستجوگر لینک multi-thread استفاده "
|
||||||
|
"کنیم. باید از یک صفحه وب شروع شود و بررسی کنید که لینکهای موجود در صفحه "
|
||||||
|
"معتبر هستند. باید بهصورت بازگشتی صفحات دیگر را در همان دامنه بررسی کند و این "
|
||||||
|
"کار را تا زمانی که همه صفحات تأیید نشدهاند ادامه دهد."
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:8
|
#: src/concurrency/sync-exercises/link-checker.md:8
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -18942,21 +18969,32 @@ msgid ""
|
|||||||
"(https://docs.rs/scraper/). Finally, we'll need some way of handling errors, "
|
"(https://docs.rs/scraper/). Finally, we'll need some way of handling errors, "
|
||||||
"we will use [`thiserror`](https://docs.rs/thiserror/)."
|
"we will use [`thiserror`](https://docs.rs/thiserror/)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"برای این کار به یک کلاینت HTTP مانند [`reqwest`](https://docs.rs/reqwest/) "
|
||||||
|
"نیاز دارید. شما همچنین به راهی برای یافتن لینکها نیاز دارید، ما می توانیم از "
|
||||||
|
"[`reqwest`](https://docs.rs/reqwest/) استفاده کنیم. در نهایت، ما به روشی "
|
||||||
|
"برای رسیدگی به خطاها نیاز داریم پس درنتیجه از [`thiserror`](https://docs.rs/"
|
||||||
|
"thiserror/) استفاده خواهیم کرد."
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:12
|
#: src/concurrency/sync-exercises/link-checker.md:12
|
||||||
|
#, fuzzy
|
||||||
msgid "Create a new Cargo project and `reqwest` it as a dependency with:"
|
msgid "Create a new Cargo project and `reqwest` it as a dependency with:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"یک پروژه Cargo جدید ایجاد کنید و آن را به عنوان یک وابستگی با `reqwest` "
|
||||||
|
"اعلام کنید:"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:22
|
#: src/concurrency/sync-exercises/link-checker.md:22
|
||||||
msgid ""
|
msgid ""
|
||||||
"If `cargo add` fails with `error: no such subcommand`, then please edit the "
|
"If `cargo add` fails with `error: no such subcommand`, then please edit the "
|
||||||
"`Cargo.toml` file by hand. Add the dependencies listed below."
|
"`Cargo.toml` file by hand. Add the dependencies listed below."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"اگر`cargo add` با `error: no such subcommand` ناموفق بود، لطفاً فایل `Cargo."
|
||||||
|
"toml` را دستی ویرایش کنید و وابستگیهای ذکر شده در زیر را اضافه کنید."
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:25
|
#: src/concurrency/sync-exercises/link-checker.md:25
|
||||||
msgid ""
|
msgid ""
|
||||||
"The `cargo add` calls will update the `Cargo.toml` file to look like this:"
|
"The `cargo add` calls will update the `Cargo.toml` file to look like this:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"فراخوانیها `cargo add` را در فایل `Cargo.toml` بهصورت زیر بهروزرسانی میکند:"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:29
|
#: src/concurrency/sync-exercises/link-checker.md:29
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -18974,64 +19012,84 @@ msgid ""
|
|||||||
"thiserror = \"1.0.37\"\n"
|
"thiserror = \"1.0.37\"\n"
|
||||||
"```"
|
"```"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"```toml\n"
|
||||||
|
"[package]\n"
|
||||||
|
"name = \"link-checker\"\n"
|
||||||
|
"version = \"0.1.0\"\n"
|
||||||
|
"edition = \"2021\"\n"
|
||||||
|
"publish = false\n"
|
||||||
|
"\n"
|
||||||
|
"[dependencies]\n"
|
||||||
|
"reqwest = { version = \"0.11.12\", features = [\"blocking\", \"rustls-"
|
||||||
|
"tls\"] }\n"
|
||||||
|
"scraper = \"0.13.0\"\n"
|
||||||
|
"thiserror = \"1.0.37\"\n"
|
||||||
|
"```"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:42
|
#: src/concurrency/sync-exercises/link-checker.md:42
|
||||||
msgid ""
|
msgid ""
|
||||||
"You can now download the start page. Try with a small site such as `https://"
|
"You can now download the start page. Try with a small site such as `https://"
|
||||||
"www.google.org/`."
|
"www.google.org/`."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"اکنون می توانید صفحه شروع را دانلود کنید. با یک سایت کوچک مانند `https://www."
|
||||||
|
"google.org/` امتحان کنید."
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:45
|
#: src/concurrency/sync-exercises/link-checker.md:45
|
||||||
msgid "Your `src/main.rs` file should look something like this:"
|
msgid "Your `src/main.rs` file should look something like this:"
|
||||||
msgstr ""
|
msgstr "فایل `src/main.rs` شما باید چیزی شبیه به این باشد:"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:57
|
#: src/concurrency/sync-exercises/link-checker.md:57
|
||||||
#: src/concurrency/sync-exercises/solutions.md:93
|
#: src/concurrency/sync-exercises/solutions.md:93
|
||||||
msgid "\"request error: {0}\""
|
msgid "\"request error: {0}\""
|
||||||
msgstr ""
|
msgstr "\"request error: {0}\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:59
|
#: src/concurrency/sync-exercises/link-checker.md:59
|
||||||
#: src/concurrency/sync-exercises/solutions.md:95
|
#: src/concurrency/sync-exercises/solutions.md:95
|
||||||
|
#, fuzzy
|
||||||
msgid "\"bad http response: {0}\""
|
msgid "\"bad http response: {0}\""
|
||||||
msgstr ""
|
msgstr "\"bad http response: {0}\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:70
|
#: src/concurrency/sync-exercises/link-checker.md:70
|
||||||
#: src/concurrency/sync-exercises/solutions.md:106
|
#: src/concurrency/sync-exercises/solutions.md:106
|
||||||
msgid "\"Checking {:#}\""
|
msgid "\"Checking {:#}\""
|
||||||
msgstr ""
|
msgstr "\"بررسی {:#}\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:88
|
#: src/concurrency/sync-exercises/link-checker.md:88
|
||||||
#: src/concurrency/sync-exercises/solutions.md:124
|
#: src/concurrency/sync-exercises/solutions.md:124
|
||||||
msgid "\"href\""
|
msgid "\"href\""
|
||||||
msgstr ""
|
msgstr "\"href\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:95
|
#: src/concurrency/sync-exercises/link-checker.md:95
|
||||||
#: src/concurrency/sync-exercises/solutions.md:131
|
#: src/concurrency/sync-exercises/solutions.md:131
|
||||||
|
#, fuzzy
|
||||||
msgid "\"On {base_url:#}: ignored unparsable {href:?}: {err}\""
|
msgid "\"On {base_url:#}: ignored unparsable {href:?}: {err}\""
|
||||||
msgstr ""
|
msgstr "\"On {base_url:#}: ignored unparsable {href:?}: {err}\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:104
|
#: src/concurrency/sync-exercises/link-checker.md:104
|
||||||
#: src/concurrency/sync-exercises/solutions.md:241
|
#: src/concurrency/sync-exercises/solutions.md:241
|
||||||
msgid "\"https://www.google.org\""
|
msgid "\"https://www.google.org\""
|
||||||
msgstr ""
|
msgstr "\"https://www.google.org\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:107
|
#: src/concurrency/sync-exercises/link-checker.md:107
|
||||||
msgid "\"Links: {links:#?}\""
|
msgid "\"Links: {links:#?}\""
|
||||||
msgstr ""
|
msgstr "\"Links: {links:#?}\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:108
|
#: src/concurrency/sync-exercises/link-checker.md:108
|
||||||
msgid "\"Could not extract links: {err:#}\""
|
msgid "\"Could not extract links: {err:#}\""
|
||||||
msgstr ""
|
msgstr "\"نمیتواند لینک را باز کند: {err:#}\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:113
|
#: src/concurrency/sync-exercises/link-checker.md:113
|
||||||
msgid "Run the code in `src/main.rs` with"
|
msgid "Run the code in `src/main.rs` with"
|
||||||
msgstr ""
|
msgstr "این کد را در `src/main.rs` اجرا کنید"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:121
|
#: src/concurrency/sync-exercises/link-checker.md:121
|
||||||
msgid ""
|
msgid ""
|
||||||
"Use threads to check the links in parallel: send the URLs to be checked to a "
|
"Use threads to check the links in parallel: send the URLs to be checked to a "
|
||||||
"channel and let a few threads check the URLs in parallel."
|
"channel and let a few threads check the URLs in parallel."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"برای بررسی موازی لینکها از threadها استفاده کنید: URLهایی را که باید بررسی "
|
||||||
|
"شوند به یک channel ارسال کنید و اجازه دهید چند thread بهصورت موازی URLها را "
|
||||||
|
"بررسی کنند."
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/link-checker.md:123
|
#: src/concurrency/sync-exercises/link-checker.md:123
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -19039,48 +19097,61 @@ msgid ""
|
|||||||
"org` domain. Put an upper limit of 100 pages or so so that you don't end up "
|
"org` domain. Put an upper limit of 100 pages or so so that you don't end up "
|
||||||
"being blocked by the site."
|
"being blocked by the site."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"این را به صورت بازگشتی پیوندها گسترش دهید تا از همه صفحات را در دامنه «www."
|
||||||
|
"google.org» استخراج کنید. حد بالا را حدود ۱۰۰ صفحه یا بیشتر قرار دهید تا در "
|
||||||
|
"نهایت توسط سایت مسدود نشوید."
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/solutions.md:27
|
#: src/concurrency/sync-exercises/solutions.md:27
|
||||||
msgid "\"{} is trying to eat\""
|
msgid "\"{} is trying to eat\""
|
||||||
msgstr ""
|
msgstr "\"{} is trying to eat\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/solutions.md:51
|
#: src/concurrency/sync-exercises/solutions.md:51
|
||||||
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"// To avoid a deadlock, we have to break the symmetry\n"
|
"// To avoid a deadlock, we have to break the symmetry\n"
|
||||||
" // somewhere. This will swap the forks without deinitializing\n"
|
" // somewhere. This will swap the forks without deinitializing\n"
|
||||||
" // either of them.\n"
|
" // either of them.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"// To avoid a deadlock, we have to break the symmetry\n"
|
||||||
|
" // somewhere. This will swap the forks without deinitializing\n"
|
||||||
|
" // either of them.\n"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/solutions.md:75
|
#: src/concurrency/sync-exercises/solutions.md:75
|
||||||
msgid "\"{thought}\""
|
msgid "\"{thought}\""
|
||||||
msgstr ""
|
msgstr "\"{thought}\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/solutions.md:80
|
#: src/concurrency/sync-exercises/solutions.md:80
|
||||||
msgid "Link Checker"
|
msgid "Link Checker"
|
||||||
msgstr ""
|
msgstr "جستجوگر Link"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/solutions.md:150
|
#: src/concurrency/sync-exercises/solutions.md:150
|
||||||
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"/// Determine whether links within the given page should be extracted.\n"
|
"/// Determine whether links within the given page should be extracted.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"/// Determine whether links within the given page should be extracted.\n"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/solutions.md:158
|
#: src/concurrency/sync-exercises/solutions.md:158
|
||||||
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"/// Mark the given page as visited, returning false if it had already\n"
|
"/// Mark the given page as visited, returning false if it had already\n"
|
||||||
" /// been visited.\n"
|
" /// been visited.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"/// Mark the given page as visited, returning false if it had already\n"
|
||||||
|
" /// been visited.\n"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/solutions.md:184
|
#: src/concurrency/sync-exercises/solutions.md:184
|
||||||
|
#, fuzzy
|
||||||
msgid "// The sender got dropped. No more commands coming in.\n"
|
msgid "// The sender got dropped. No more commands coming in.\n"
|
||||||
msgstr ""
|
msgstr "// The sender got dropped. No more commands coming in.\n"
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/solutions.md:225
|
#: src/concurrency/sync-exercises/solutions.md:225
|
||||||
msgid "\"Got crawling error: {:#}\""
|
msgid "\"Got crawling error: {:#}\""
|
||||||
msgstr ""
|
msgstr "\"خطای crawling دریافت شد: {:#}\""
|
||||||
|
|
||||||
#: src/concurrency/sync-exercises/solutions.md:243
|
#: src/concurrency/sync-exercises/solutions.md:243
|
||||||
msgid "\"Bad URLs: {:#?}\""
|
msgid "\"Bad URLs: {:#?}\""
|
||||||
msgstr ""
|
msgstr "\"Bad URLs: {:#?}\""
|
||||||
|
|
||||||
#: src/concurrency/welcome-async.md
|
#: src/concurrency/welcome-async.md
|
||||||
msgid ""
|
msgid ""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user