uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 420
Obunachilar
Ma'lumot yo'q24 soatlar
+37 kunlar
-430 kunlar
Postlar arxiv
ToCode
1 420
"keys_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/keys{/key_id}",
  "collaborators_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/collaborators{/collaborator}",
  "teams_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/teams",
  "hooks_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/hooks",
  "issue_events_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/issues/events{/number}",
  "events_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/events",
  "assignees_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/assignees{/user}",
  "branches_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/branches{/branch}",
  "tags_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/tags",
  "blobs_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/git/blobs{/sha}",
  "git_tags_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/git/tags{/sha}",
  "git_refs_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/git/refs{/sha}",
  "trees_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/git/trees{/sha}",
  "statuses_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/statuses/{sha}",
  "languages_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/languages",
  "stargazers_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/stargazers",
  "contributors_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/contributors",
  "subscribers_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/subscribers",
  "subscription_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/subscription",
  "commits_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/commits{/sha}",
  "git_commits_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/git/commits{/sha}",
  "comments_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/comments{/number}",
  "issue_comment_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/issues/comments{/number}",
  "contents_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/contents/{+path}",
  "compare_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/compare/{base}...{head}",
  "merges_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/merges",
  "archive_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/{archive_format}{/ref}",
  "downloads_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/downloads",
  "issues_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/issues{/number}",
  "pulls_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/pulls{/number}",
  "milestones_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/milestones{/number}",
  "notifications_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/notifications{?since,all,participating}",
  "labels_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/labels{/name}",
  "releases_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/releases{/id}",
  "deployments_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/deployments",
  "created_at": "2013-12-13T15:39:56Z",
  "updated_at": "2014-09-09T14:50:45Z",
  "pushed_at": "2013-12-13T15:44:15Z",
  "git_url": "git://github.com/ynonp/2013-Advent-Staging.git",
  "ssh_url": "git@github.com:ynonp/2013-Advent-Staging.git",
  "clone_url": "https://github.com/ynonp/2013-Advent-Staging.git",
  "svn_url": "https://github.com/ynonp/2013-Advent-Staging",
  "homepage": null,
  "size": 1777,
  "stargazers_count": 0,
  "watchers_count": 0,
  "language": "Perl",
  "has_issues": false,
  "has_projects": true,
  "has_downloads": true,
  "has_wiki": true,
  "has_pages": false,
  "has_discussions": false,
  "forks_count": 0,
  "mirror_url": null,
  "archived": false,
  "disabled": false,
  "open_issues_count": 0,
  "license": null,

ToCode
1 420
$ curl --silent https://api.coindesk.com/v1/bpi/currentprice.json | jq -r '.bpi | .USD,.EUR'

{
  "code": "USD",
  "symbol": "$",
  "rate": "26,938.2648",
  "description": "United States Dollar",
  "rate_float": 26938.2648
}
{
  "code": "EUR",
  "symbol": "€",
  "rate": "26,241.8029",
  "description": "Euro",
  "rate_float": 26241.8029
}
ื•ืฉื™ืžื• ืœื‘ ืžื” ืงื™ื‘ืœื ื• - ื–ื” ืœื ืื•ื‘ื™ืงื˜ ื™ื—ื™ื“, ืื‘ืœ ื–ื” ื’ื ืœื ืžืขืจืš ืฉืœ ืื•ื‘ื™ืงื˜ื™ื, ืืœื ืฉื ื™ ืื•ื‘ื™ืงื˜ื™ JSON ืื—ื“ ืื—ืจื™ ื”ืฉื ื™. ื‘ืขืฆื ืคื™ืœื˜ืจื™ื ื‘ jq ื™ื›ื•ืœื™ื ืœื”ื—ื–ื™ืจ ืขืจืš ืื—ื“ ืื• ืžืกืคืจ ืขืจื›ื™ื, ื•ื”ืื•ืคืจื˜ื•ืจ ืคืกื™ืง ืžื™ื™ืฆืจ ืคื™ืœื˜ืจ ืฉืžื—ื–ื™ืจ ืžืกืคืจ ืขืจื›ื™ื. ืขื“ื™ื™ืŸ ืืคืฉืจ ืœืงื—ืช ืืช ืฉื ื™ ื”ืื•ื‘ื™ืงื˜ื™ื ื”ืืœื” ืœืคื™ืœื˜ืจ ื ื•ืกืฃ ื›ื“ื™ ืœืงื‘ืœ ืจืง ืืช ื”ืฉืขืจ:
curl --silent https://api.coindesk.com/v1/bpi/currentprice.json | jq -r '.bpi | .USD,.EUR | .rate'

26,938.4713
26,242.0041
ื•ืœืคื ื™ ืฉื ื™ืคืจื“ ืžืงื•ื™ื ื‘ื™ื™ืก ืืจืฆื” ืœื”ืจืื•ืช ืคื™ืœื˜ืจ ื ื•ืกืฃ, ื”ื•ื ืคื™ืœื˜ืจ ื”ื’ื™ืฉื” ืœืžืคืชื— ื‘ืื•ื‘ื™ืงื˜ ืื• ื‘ืžืขืจืš ื”ืžืกื•ืžืŸ ื‘ืกื•ื’ืจื™ื™ื ืžืจื•ื‘ืขื™ื. ื–ื•ื›ืจื™ื ืืช ื” JSON ืื™ืชื• ื”ืชื—ืœื ื• ื‘ืืชืจ? ื–ื” ืขื ื”ืžืขืจืš ืฉืฉืœื—ืชื™ ืืชื›ื ืœื ืกื•ืช ืœืžืฆื•ื ืื™ืš ืœื’ืฉืช ืœืฆื‘ืขื™ื ืฉื‘ื•? ืื– ืื ื ืฉืชืžืฉ ื‘ืคื™ืœื˜ืจ:
.colors[1]
ื ืงื‘ืœ ื‘ื“ื™ื•ืง ืืช ื”ืฆื‘ืข ื”ืฉื ื™ ื‘ืจืฉื™ืžื”. ืื ื ืฉืชืžืฉ ื‘ืคื™ืœื˜ืจ .colors ื ืงื‘ืœ ืžืขืจืš ืฉืœ ื”ืฆื‘ืขื™ื, ื•ืื ื ืฉืชืžืฉ ื‘ืคื™ืœื˜ืจ:
.colors[]
ื ืงื‘ืœ ืคืฉื•ื˜ ืืช ืฉืœื•ืฉืช ื”ืฆื‘ืขื™ื ื‘ืชื•ืจ ืฉืœื•ืฉื” ืขืจื›ื™ื ื ืคืจื“ื™ื. ืื•ืคืจื˜ื•ืจ ืกื•ื’ืจื™ื™ื ืžืจื•ื‘ืขื™ื ื ื™ื’ืฉ ืœืžืคืชื— ื‘ืื•ื‘ื™ืงื˜ ืื• ืœืชื ื‘ืžืขืจืš, ื•ืื ืœื ื›ืชื‘ืชื™ ืื™ื ื“ืงืก ื”ื•ื ื™ื™ืชืŸ ืืช ื›ืœ ื”ืชืื™ื ื‘ืžืขืจืš ืื• ืืช ื›ืœ ื”ืžืคืชื—ื•ืช ื‘ืื•ื‘ื™ืงื˜. ืืคืฉืจ ืœืฉืœื‘ ืื•ืชื• ืขื ื”ืขื‘ื•ื“ื” ืฉืขืฉื™ื ื•ื™ ืขืœ coinbase ื›ื“ื™ ืœืงื‘ืœ ืืช ื›ืœ ื”ืฉืขืจื™ื ืฉืœ ื”ื‘ื™ื˜ืงื•ื™ืŸ:
$ curl --silent https://api.coindesk.com/v1/bpi/currentprice.json | jq -r '.bpi | .[] | .rate'
26,920.2192
22,494.3198
26,224.2239
ืื• ื‘ื›ืชื™ื‘ ื”ืžืงื•ืฆืจ:
curl --silent https://api.coindesk.com/v1/bpi/currentprice.json | jq -r '.bpi.[].rate'

26,920.2192
22,494.3198
26,224.2239
ื•ื›ืžื•ื‘ืŸ ืฉื–ื” ื™ื”ื™ื” ื™ื•ืชืจ ืฉื™ืžื•ืฉื™ ืื ื™ื”ื™ื” ืœื ื• ื’ื ืืช ื”ืžื˜ื‘ืข ืฉืžืชืื™ื ืœื›ืœ ืฉืขืจ:
$ curl --silent https://api.coindesk.com/v1/bpi/currentprice.json | jq -r '.bpi.[] | .code,.rate'
USD
26,928.6392
GBP
22,501.3555
EUR
26,232.4262
## ืขื‘ื•ื“ื” ืขื ืžืขืจื›ื™ื ื•ื™ืฆื™ืจืช ืื•ื‘ื™ืงื˜ื™ื ื“ืจืš ื’ื™ื˜ื”ืื‘ ื–ื” ื”ื–ืžืŸ ืœื”ื™ืคืจื“ ืžืงื•ื™ื ื‘ื™ื™ืก ืœืขื‘ื•ืจ ืœ API ืงืฆืช ื™ื•ืชืจ ืžืชื•ื—ื›ื - ืจืฉื™ืžืช ื”ืžืื’ืจื™ื ืฉืœ ืžืฉืชืžืฉ ื‘ื’ื™ื˜ื”ืื‘. ืื ื™ ืœื•ืงื— ืืช ื”ืžืฉืชืžืฉ ืฉืœื™ ื‘ืฉื‘ื™ืœ ื”ื“ื•ื’ืžื” ื•ืจืฉื™ืžืช ื”ืžืื’ืจื™ื ื”ืฆื™ื‘ื•ืจื™ื™ื ืฉืœื™ ื–ืžื™ื ื” ื‘ืงื™ืฉื•ืจ:
$ curl --silent https://api.github.com/users/ynonp/repos
ื‘ืชื•ืจ ื”ืชื—ืœื” ื”ื™ื™ืชื™ ืจื•ืฆื” ืœื”ื“ื‘ื™ืง ื›ืืŸ ืืช ื” JSON ืื‘ืœ ื”ื•ื ืคืฉื•ื˜ ืืจื•ืš ืžื“ื™, ื™ืฉ ืœื™ ื™ื•ืชืจ ืžื“ื™ ืžืื’ืจื™ื. ื‘ืžืฆื‘ ื›ื–ื” ืื ื™ ืžืฉืชืžืฉ ื‘ jq ื›ื“ื™ ืœื”ื“ืคื™ืก ืจืง ืืช ื”ืžืื’ืจ ื”ืจืืฉื•ืŸ ื‘ืžืขืจืš ื”ืงืœื˜:
$ curl --silent https://api.github.com/users/ynonp/repos

{
  "id": 15167222,
  "node_id": "MDEwOlJlcG9zaXRvcnkxNTE2NzIyMg==",
  "name": "2013-Advent-Staging",
  "full_name": "ynonp/2013-Advent-Staging",
  "private": false,
  "owner": {
    "login": "ynonp",
    "id": 128594,
    "node_id": "MDQ6VXNlcjEyODU5NA==",
    "avatar_url": "https://avatars.githubusercontent.com/u/128594?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/ynonp",
    "html_url": "https://github.com/ynonp",
    "followers_url": "https://api.github.com/users/ynonp/followers",
    "following_url": "https://api.github.com/users/ynonp/following{/other_user}",
    "gists_url": "https://api.github.com/users/ynonp/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/ynonp/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/ynonp/subscriptions",
    "organizations_url": "https://api.github.com/users/ynonp/orgs",
    "repos_url": "https://api.github.com/users/ynonp/repos",
    "events_url": "https://api.github.com/users/ynonp/events{/privacy}",
    "received_events_url": "https://api.github.com/users/ynonp/received_events",
    "type": "User",
    "site_admin": false
  },
  "html_url": "https://github.com/ynonp/2013-Advent-Staging",
  "description": "Staging area for Perl Catalyst Advent articles (Winter 2013)",
  "fork": true,
  "url": "https://api.github.com/repos/ynonp/2013-Advent-Staging",
  "forks_url": "https://api.github.com/repos/ynonp/2013-Advent-Staging/forks",

ToCode
1 420
"rate": "26,888.0465",
      "description": "United States Dollar",
      "rate_float": 26888.0465
    },
    "GBP": {
      "code": "GBP",
      "symbol": "£",
      "rate": "22,467.4365",
      "description": "British Pound Sterling",
      "rate_float": 22467.4365
    },
    "EUR": {
      "code": "EUR",
      "symbol": "€",
      "rate": "26,192.8829",
      "description": "Euro",
      "rate_float": 26192.8829
    }
  }
}
ืจืง ื”ื”ืขื‘ืจื” ืœ jq ื›ื‘ืจ ื”ื“ืคื™ืกื” ืืช ื” JSON ื‘ืฆื•ืจื” ืงืจื™ืื” ื™ื•ืชืจ. ืื’ื‘ ืื ื™ืฉ ืœื›ื JSON ืžืกื•ืจ ื•ืืชื ื“ื•ื•ืงื ืจื•ืฆื™ื ืœื›ื•ื•ืฅ ืื•ืชื• (ื›ืœื•ืžืจ ืœืžื—ื•ืง ืืช ื›ืœ ื™ืจื™ื“ื•ืช ื”ืฉื•ืจื” ื•ื”ืื™ื ื“ื ื˜ืฆื™ื”) ืชื•ื›ืœื• ืœื”ืฉืชืžืฉ ื‘ืžืชื’ -c. ื‘ื ื•ืกืฃ ื”ืžืชื’ -M ืžื“ืคื™ืก ืืช ื”ืคืœื˜ ืœืœื ืฆื‘ืขื™ื ื•ืœื›ืŸ ืคืงื•ื“ื” ื›ื–ืืช ืชื“ืคื™ืก ืœื™ ืื•ื‘ื™ืงื˜ JSON ืžื‘ื•ืœื’ืŸ ืฉื•ื‘:
$ curl --silent https://api.coindesk.com/v1/bpi/currentprice.json | jq | jq -Mc
ื•ืื ืื ื—ื ื• ื›ื‘ืจ ืžื“ื‘ืจื™ื ืขืœ ื”ืžืชื’ื™ื ืœ jq ืื– ืฉื•ื•ื” ืœื”ื›ื™ืจ ืฉื”ืžืชื’ -S ื’ื•ืจื ืœ jq ืœื”ื“ืคื™ืก ืืช ื” JSON ืขื ื”ืžืคืชื—ื•ืช ืžืกื•ื“ืจื™ื ืœืคื™ ืกื“ืจ ืžื™ืœื•ื ื™:
$ curl --silent https://api.coindesk.com/v1/bpi/currentprice.json | jq -S

{
  "bpi": {
    "EUR": {
      "code": "EUR",
      "description": "Euro",
      "rate": "26,191.6827",
      "rate_float": 26191.6827,
      "symbol": "€"
    },
    "GBP": {
      "code": "GBP",
      "description": "British Pound Sterling",
      "rate": "22,466.4070",
      "rate_float": 22466.407,
      "symbol": "£"
    },
    "USD": {
      "code": "USD",
      "description": "United States Dollar",
      "rate": "26,886.8144",
      "rate_float": 26886.8144,
      "symbol": "$"
    }
  },
  "chartName": "Bitcoin",
  "disclaimer": "This data was produced from the CoinDesk Bitcoin Price Index (USD). Non-USD currency data converted using hourly conversion rate from openexchangerates.org",
  "time": {
    "updated": "Sep 19, 2023 08:18:00 UTC",
    "updatedISO": "2023-09-19T08:18:00+00:00",
    "updateduk": "Sep 19, 2023 at 09:18 BST"
  }
}
ื ืชืงื“ื ืขื ื” JSON ื•ื‘ื•ืื• ื ื‘ืจืจ ื›ืžื” ื“ื•ืœืจ ืฉื•ื•ื” ื‘ื™ื˜ืงื•ื™ืŸ ื”ื™ื•ื. ื‘ืฉื‘ื™ืœ ืœื”ื’ื™ืข ืœืขืจืš ืฆืจื™ืš ืœื”ืชื—ื™ืœ ืขื ื”ืžืคืชื— bpi, ืœื”ืžืฉื™ืš ืœ USD ื•ืฉื ืœืžืฆื•ื ืืช ื”ืขืจืš ืฉืœ rate. ืกืš ื”ื›ืœ ื‘ jq ื–ื” ื™ื”ื™ื”:
$ curl --silent https://api.coindesk.com/v1/bpi/currentprice.json | jq '.bpi.USD.rate'
"26,889.1029"
ื•ืื ืืชื ืœื ืจื•ืฆื™ื ืืช ื”ืžืจื›ืื•ืช ืกื‘ื™ื‘ ื”ืขืจืš ืชื•ื›ืœื• ืœื‘ืงืฉ ืž jq ืœื•ื•ืชืจ ืขืœื™ื”ืŸ ื‘ืืžืฆืขื•ืช ื”ืžืชื’ -r:
$ curl --silent https://api.coindesk.com/v1/bpi/currentprice.json | jq -r '.bpi.USD.rate'
26,889.1029
ื”ื‘ื™ื˜ื•ื™ .bpi.USD.rate ื ืงืจื ืคื™ืœื˜ืจ, ื›ื™ ื”ื•ื ืžืงื‘ืœ ื‘ืชื•ืจ ืงืœื˜ ืืช ื›ืœ ืื•ื‘ื™ืงื˜ ื” JSON ื•ืžื—ื–ื™ืจ ืืช ื”ืขืจืš ืฉื”ื•ื ืžืฆื ื‘ืฉื“ื”. ื‘ jq ื™ืฉ ืฉื ื™ ืื•ืคืจื˜ื•ืจื™ื ืžืจื›ื–ื™ื™ื ื›ื“ื™ ืœื—ื‘ืจ ืคื™ืœื˜ืจื™ื: ืื•ืคืจื˜ื•ืจ | ื•ืื•ืคืจื˜ื•ืจ ,. ื”ืื•ืคืจื˜ื•ืจ | ืžื—ื‘ืจ ืคื™ืœื˜ืจื™ื ื‘ื˜ื•ืจ, ื›ืš ืฉื”ืคืœื˜ ืฉืœ ืคื™ืœื˜ืจ ืื—ื“ ื”ื•ืคืš ืœืงืœื˜ ืฉืœ ื”ืคื™ืœื˜ืจ ื”ื‘ื ื‘ืชื•ืจ. ื”ืื•ืคืจื˜ื•ืจ , ืžื—ื‘ืจ ืื•ืชื ื‘ืžืงื‘ื™ืœ ื›ืš ืฉื”ืงืœื˜ ื ืฉืœื— ืœืฉื ื™ ื”ืคื™ืœื˜ืจื™ื ื• jq ืžื—ื‘ืจ ืืช ื”ืคืœื˜ ืฉืœ ืฉื ื™ื”ื. ื‘ื•ืื• ื ื ืกื” ืืช ื–ื”. ืžืื—ืจ ื•ืื ื—ื ื• ื™ื•ื“ืขื™ื ืœืขื‘ื•ื“ ืขื ืคื™ืœื˜ืจ ื”ืžืคืชื— ืืคืฉืจ ืœืงื—ืช ืžืคืชื— ื™ื•ืชืจ ืงืฆืจ ืœื“ื•ื’ืžื” ืจืง ืืช ื”ืื•ื‘ื™ืงื˜ .bpi:
$ curl --silent https://api.coindesk.com/v1/bpi/currentprice.json | jq -r '.bpi'

{
  "USD": {
    "code": "USD",
    "symbol": "$",
    "rate": "26,912.5561",
    "description": "United States Dollar",
    "rate_float": 26912.5561
  },
  "GBP": {
    "code": "GBP",
    "symbol": "£",
    "rate": "22,487.9165",
    "description": "British Pound Sterling",
    "rate_float": 22487.9165
  },
  "EUR": {
    "code": "EUR",
    "symbol": "€",
    "rate": "26,216.7588",
    "description": "Euro",
    "rate_float": 26216.7588
  }
}
ืขื›ืฉื™ื• ื ื™ืงื— ืืช ื”ืื•ื‘ื™ืงื˜ ื”ื–ื” ื•ื ืฉืœื— ืื•ืชื• ืœืคื™ืœื˜ืจ ืžืคืชื— ื ื•ืกืฃ:
$ curl --silent https://api.coindesk.com/v1/bpi/currentprice.json | jq -r '.bpi | .USD'

{
  "code": "USD",
  "symbol": "$",
  "rate": "26,920.8824",
  "description": "United States Dollar",
  "rate_float": 26920.8824
}
ื•ื›ื‘ืจ ืื ื—ื ื• ืžื‘ื™ื ื™ื ืฉื”ื›ืชื™ื‘ .bpi.USD ื”ื•ื ื‘ืขืฆื ืงื™ืฆื•ืจ ื“ืจืš ืœื›ืชื™ื‘ ื—ื™ื‘ื•ืจ ื”ืคื™ืœื˜ืจื™ื ื‘ื˜ื•ืจ .bpi.USD. ืื‘ืœ ืžื” ืงื•ืจื” ืื ืื ื—ื ื• ืจื•ืฆื™ื ืœืงื‘ืœ ื’ื ืืช ื”ืžื™ื“ืข ื‘ื™ื•ืจื•? ื”ืคืขื ื ืฉืชืžืฉ ื‘ืคืกื™ืง:

ToCode
1 420
# ืคื™ืขื ื•ื— JSON ืžืฉื•ืจืช ื”ืคืงื•ื“ื” ืขื jq ืคื•ืจืžื˜ JSON ื”ืคืš ืœื“ืจืš ื”ืกื˜ื ื“ืจื˜ื™ืช ื‘ื” ืื ื—ื ื• ืขื•ื‘ื“ื™ื ืขื ื ืชื•ื ื™ื ื•ื”ื›ืœื™ jq ื”ื•ื ื”ืื•ืœืจ ื”ืฉื•ื•ื™ืฆืจื™ ื”ืžื•ืฉืœื ื‘ืฉื‘ื™ืœ ืœืงืจื•ื ื•ืœืขืจื•ืš ืžื™ื“ืข ื‘ืคื•ืจืžื˜ JSON ืžืฉื•ืจืช ื”ืคืงื•ื“ื”. ื‘ืžื“ืจื™ืš ื–ื” ืืœืžื“ ืืชื›ื ืื™ืš ืœืขื‘ื•ื“ ืขื jq ื›ื“ื™ ืœื”ื•ืฆื™ื ื‘ืงืœื•ืช ืžื™ื“ืข ืžื” JSON-ื™ื ืฉืœื›ื ื‘ืœื™ ืฉืชืฆื˜ืจื›ื• ืœื”ืคืขื™ืœ ืืช ื” IDE. ื‘ืฉื‘ื™ืœ ืฉื™ื”ื™ื” ืžืขื ื™ื™ืŸ ืื ื—ื ื• ื ืœืžื“ ืขืœ jq ื“ืจืš ืขื‘ื•ื“ื” ืขืœ ื ืชื•ื ื™ JSON ืืžื™ืชื™ื™ื: ื ืชื—ื™ืœ ืขื ื”ืžืจืช ืžื˜ื‘ืขื•ืช ื“ื™ื’ื™ื˜ืœื™ื™ื ื‘ืืชืจ coinbase, ื ืžืฉื™ืš ืœื’ื™ื˜ื”ืื‘ ื›ื“ื™ ืœืœืžื•ื“ ืขืœ ืคื™ืขื ื•ื— ืžืื’ืจื™ ืงื•ื“ ื•ื ืกื™ื™ื ืขื ืขื“ื›ื•ืŸ ืงื‘ืฆื™ JSON ืžืงื•ืžื™ื™ื. ืคื•ืกื˜ ื–ื” ื–ืžื™ืŸ ื’ื ื‘ืชื•ืจ ืžื“ืจื™ืš ื•ื™ื“ืื• ืœืžื ื•ื™ื™ ื”ืืชืจ ื‘ืงื™ืฉื•ืจ: https://www.tocode.co.il/boosters/jq ## ื”ืชืงื ืช jq ื”ื›ืœื™ jq ื”ื•ื ื“ื™ ืกื˜ื ื“ืจื˜ื™ ื‘ื™ื•ื ื™ืงืก ื•ืื ื™ืฉ ืœื›ื ืœื™ื ื•ืงืก ืื• ืžืง ืจื•ื‘ ื”ืกื™ื›ื•ื™ื™ื ืฉื”ื•ื ื›ื‘ืจ ื”ื•ืชืงืŸ. ื‘ืžื™ื“ื” ื•ืœื ืืคืฉืจ ืœืžืฆื•ื ืื•ืชื• ื‘ื—ื‘ื™ืœื•ืช ื”ืกื˜ื ื“ืจื˜ื™ื•ืช ืฉืœ ืœื™ื ื•ืงืก ืœื“ื•ื’ืžื”:
# Debian / Ubuntu
$ sudo apt-get install jq

# Fedora
$ sudo dnf install jq

# OpenSuse
$ sudo zypper install jq

# Arch
$ sudo pacman -S jq
ื‘ืืชืจ ืฉืœ jq ืืคืฉืจ ืœืžืฆื•ื ื“ืฃ ืžืกื•ื“ืจ ืขื ื—ื‘ื™ืœื•ืช ืœื”ื•ืจื“ื” ื•ืื ืืชื ืžืฉืชืžืฉื™ ืžืง ืชื•ื›ืœื• ืœื”ืชืงื™ืŸ ืื•ืชื• ืขื homebrew ืขื ื”ืคืงื•ื“ื”:
$ brew install jq
ื”ื›ืœื™ ื›ืชื•ื‘ ื‘ืฉืคืช c, ื”ื’ื™ืจืกื” ื”ืขื“ื›ื ื™ืช ื›ืจื’ืข ื”ื™ื 1.7 (ืœืžืจื•ืช ืฉื‘ื”ืจื‘ื” ืžืงื•ืžื•ืช ืขื“ื™ื™ืŸ ืžืฉืชืžืฉื™ื ื‘ 1.6). ืืชื ื™ื›ื•ืœื™ื ืœื•ื•ื“ื ืฉืžื•ืชืงืŸ ืืฆืœื›ื ืื• ืœื•ื•ื“ื ืื—ืจื™ ืฉื”ืชืงื ืชื ืฉื”ื›ืœ ืขื•ื‘ื“ ื‘ืืžืฆืขื•ืช ื”ืคืขืœืช:
$ jq --version
ื‘ื ื•ืกืฃ ืืคื™ืœื• ืื ืื™ืŸ ืœื›ื ืืช jq ืžื•ืชืงืŸ ืขืœ ื”ืžื—ืฉื‘ ืขื“ื™ื™ืŸ ืชื•ื›ืœื• ืœื”ืฉืชืžืฉ ื‘ื’ื™ืจืกืช ื”ืื•ื ืœื™ื™ืŸ ืฉืœื• ื‘ืืชืจ: https://jqplay.org. ## ืื™ืš ื–ื” ืขื•ื‘ื“ ื”ืžื˜ืจื” ืฉืœ jq ื”ื™ื ืœืžืฉื•ืš ืžื™ื“ืข ืžืื•ื‘ื™ืงื˜ JSON ื•ืœื”ื—ื–ื™ืจ ืื•ืชื• ื‘ื›ืœ ื“ืจืš ืฉื ืจืฆื”, ื•ืœื›ืŸ ื”ืžื‘ื ื” ื”ื‘ืกื™ืกื™ ื‘ืขื‘ื•ื“ื” ืื™ืชื• ื ืงืจื filter. ืคื™ืœื˜ืจ ื”ื•ื ืคืงื•ื“ื” ืฉืžืงื‘ืœืช ืงืœื˜ ื•ืžื—ื–ื™ืจื” ืคืœื˜, ื•ืคื™ืœื˜ืจื™ื ืืคืฉืจ ืœื—ื‘ืจ ื›ืš ืฉืคืœื˜ ืžืคื™ืœื˜ืจ ืื—ื“ ื™ื”ืคื•ืš ืœืงืœื˜ ืฉืœ ื”ืคื™ืœื˜ืจ ื”ื‘ื. ื“ื•ื’ืžื” ืœืคื™ืœื˜ืจ ืคืฉื•ื˜ ื”ื™ื ื”ืคื™ืœื˜ืจ "ื ืงื•ื“ื” ืžืคืชื—", ืฉืžืงื‘ืœ ืื•ื‘ื™ืงื˜ JSON ื•ืžื—ื–ื™ืจ ืืช ื”ืขืจืš ื‘ืžืคืชื—. ื ื™ื›ื ืก ืœืืชืจ https://jqplay.org/# ื•ื ื›ืชื•ื‘ ืฉื ืืช ื” JSON ื”ื‘ื:
{
    "one": 1,
    "two": 2,
    "colors": [
        "red",
        "blue",
        "green"
    ],
    "paths": {
        "jq": "/opt/homebrew/bin/jq",
        "cp": "/bin/cp"
    }
}
ืขื›ืฉื™ื• ื‘ืชื™ื‘ื” ืฉืœืžืขืœื” ืขื ื”ื›ื•ืชืจืช Filter ื ื›ืชื•ื‘ ืืช ื”ืคื™ืœื˜ืจ:
.one
ื•ื ื•ื›ืœ ืœืจืื•ืช ื‘ืชื™ื‘ืช ื”ืชื•ืฆืื•ืช ืืช ื”ืขืจืš 1. ื‘ืฉื‘ื™ืœ ื”ืžืฉื—ืง ื ืขื“ื›ืŸ ืืช ื”ืคื™ืœื˜ืจ ืœ .paths.jq ื•ื ืจืื” ืืช ื”ืขืจืš ื‘ืชื™ื‘ืช ื”ืชื•ืฆืื•ืช ืžืชืขื“ื›ืŸ ืœ "/opt/homebrew/bin/jq". ื ืกื• ืœืฉื—ืง ืขื ื–ื” ื•ืœื”ื’ื™ืข ื‘ืขื–ืจืช ื”ืคื™ืœื˜ืจ ืœื›ืœ ืื—ื“ ืžื”ืขืจื›ื™ื ื‘ JSON. ืืœ ืชื“ืื’ื• ืื ืœื ื”ืฆืœื—ืชื ืœื”ื’ื™ืข ืœืชืื™ื ื‘ืžืขืจืš, ืชื›ืฃ ื ืจืื” ื™ื—ื“ ืื™ืš ืœื’ืฉืช ืืœื™ื”ื. ## ืคื™ืขื ื•ื— ืžื™ื“ืข ืž coinbase ืขื›ืฉื™ื• ืฉื”ื‘ื ื• ืžื” ื”ืžื˜ืจื” ืฉืœ jq ื‘ื•ืื• ื ื™ืคืจื“ ืž jqplay ื•ื ืขื‘ื•ืจ ืœืฉื•ืจืช ื”ืคืงื•ื“ื”. ื” JSON ื”ืจืืฉื•ืŸ ืฉื ืจืฆื” ืœืคืขื ื— ืžื’ื™ืข ืžื” API ืฉืœ coinbase ื•ืื ื™ ืžื•ืฉืš ืื•ืชื• ืžืฉื•ืจืช ื”ืคืงื•ื“ื” ืขื curl ื‘ืื•ืคืŸ ื”ื‘ื:
curl --silent https://api.coindesk.com/v1/bpi/currentprice.json

{"time":{"updated":"Sep 19, 2023 08:13:00 UTC","updatedISO":"2023-09-19T08:13:00+00:00","updateduk":"Sep 19, 2023 at 09:13 BST"},"disclaimer":"This data was produced from the CoinDesk Bitcoin Price Index (USD). Non-USD currency data converted using hourly conversion rate from openexchangerates.org","chartName":"Bitcoin","bpi":{"USD":{"code":"USD","symbol":"$","rate":"26,884.9920","description":"United States Dollar","rate_float":26884.992},"GBP":{"code":"GBP","symbol":"£","rate":"22,464.8842","description":"British Pound Sterling","rate_float":22464.8842},"EUR":{"code":"EUR","symbol":"€","rate":"26,189.9074","description":"Euro","rate_float":26189.9074}}}%
ื‘ืขื™ื” ืจืืฉื•ื ื” ืฉืœ ื” JSON ื”ื–ื” ื”ื™ื ืฉืงืฉื” ืœืงืจื•ื ืื•ืชื• ืžืื—ืจ ื•ืื™ืŸ ื™ืจื™ื“ื•ืช ืฉื•ืจื” ื•ืื™ื ื“ื ื˜ืฆื™ื”. ื ืฉืชืžืฉ ื‘ jq ื›ื“ื™ ืœืชืงืŸ ื–ืืช:
curl --silent https://api.coindesk.com/v1/bpi/currentprice.json | jq

{
  "time": {
    "updated": "Sep 19, 2023 08:14:00 UTC",
    "updatedISO": "2023-09-19T08:14:00+00:00",
    "updateduk": "Sep 19, 2023 at 09:14 BST"
  },
  "disclaimer": "This data was produced from the CoinDesk Bitcoin Price Index (USD). Non-USD currency data converted using hourly conversion rate from openexchangerates.org",
  "chartName": "Bitcoin",
  "bpi": {
    "USD": {
      "code": "USD",
      "symbol": "$",

ToCode
1 420
# ืกืคืจื™ื” ื‘ืžืงื•ื ื”ื‘ื ื”? ืคืจื•ื™ืงื˜ ืคื™ื™ืชื•ืŸ ื—ื“ืฉ ืžืฆื™ืข ืœืคืชื•ืจ ืขื‘ื•ืจื ื• ืืช ื”ื‘ืขื™ื” ื”ืงืœืืกื™ืช ืขื ืงืœื•ื–'ืจื™ื ื‘ืคื™ื™ืชื•ืŸ. ื–ื” ืงื•ื“ ื”ื“ื•ื’ืžื”:
a = []
for i in [1, 2]:
    a.append(lambda: i)
for f in a:
    print(f())
ื”ืจื‘ื” ืื ืฉื™ื ืžื•ืคืชืขื™ื ืœื’ืœื•ืช ืฉื”ืงื•ื“ ื”ื–ื” ืžื“ืคื™ืก ืคืขืžื™ื™ื ืืช ื”ืžืกืคืจ 2, ื‘ืžืงื•ื ืืช 1 ื•-2 ื›ืžื• ืฉืื•ืœื™ ืงื™ื•ื•ื™ื ื•. ืื—ืจื™ ืฉืจื•ืื™ื ืœืžื” ื”ืฉืืœื” ื”ื‘ืื” ื”ื™ื ืื™ืš ืคื•ืชืจื™ื ืืช ื–ื”. ื•ื›ืŸ ื“ืจืš ืื—ืช ื–ื• ื”ืคื•ื ืงืฆื™ื” ืžื”ืคืจื•ื™ืงื˜ scope_capture. ืื‘ืœ ืื•ืœื™ ื™ื”ื™ื” ื™ื•ืชืจ ืžืขื ื™ื™ืŸ ืœื”ื‘ื™ืŸ ืฉื”"ื‘ืขื™ื”" ื ื’ืจืžื” ื›ื™ ืœื•ืœืื” ื‘ืคื™ื™ืชื•ืŸ ืœื ืžื™ื™ืฆืจืช ืชื—ื•ื ื”ื’ื“ืจื” ืœืžืฉืชื ื”, ื•ื›ืœ ืžื” ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ื–ื” "ืœืชืคื•ืก" ืืช ื”ืขืจืš ืฉืœ i ื‘ืžืฉื”ื• ืฉื›ืŸ ืžื™ื™ืฆืจ ืชื—ื•ื ื”ื’ื“ืจื” ืœืžืฉืชื ื”, ืœืžืฉืœ ืคื•ื ืงืฆื™ื”. ื›ืฉืื ื—ื ื• ืจื•ืื™ื ืืช ื–ื” ื”ืฆืขื“ ื”ื‘ื ื”ื•ื ืœื—ืฉื•ื‘ ืื™ืš ืื ื™ ืžื›ื ื™ืก ืืช i ืœื”ื™ื•ืช ืžืฉืชื ื” ืคืจื˜ื™ ืื• ืคืจืžื˜ืจ ืฉืœ ืคื•ื ืงืฆื™ื” ื•ืื– ืœื”ื™ื–ื›ืจ ื‘ partial:
from functools import partial

a = []
for i in [1, 2]:
    a.append(partial(lambda i: i, i))
for f in a:
    print(f())
ืื– partial ื™ื›ื•ืœื” ืœื‘ื ื•ืช ืœื™ ืคื•ื ืงืฆื™ื” ื—ื“ืฉื” ื•"ืœืงื‘ืข" ืืช ื”ืคืจืžื˜ืจ ืฉืœื” ืœืขืจืš ืฉืœ i ื‘ืจื’ืข ื”ืงืจื™ืื” ืœ partial, ื›ืœื•ืžืจ ื‘ืชื•ืš ื”ืœื•ืœืื”. ื”ืงื•ื“ ืขื•ื‘ื“ ื•ืžื“ืคื™ืก 1 ื•-2 ื›ืžื• ืฉืจืฆื™ื ื•, ื•ื›ืžื•ื‘ืŸ ื™ืฉ ืœื• ืขื•ื“ ืฉื ื™ ื™ืชืจื•ื ื•ืช ื—ืฉื•ื‘ื™ื: 1. ืœื ืฆืจื™ืš ืœื”ืชืงื™ืŸ ื›ืœื•ื, ืœื ื”ื•ืกืคืชื™ ืชืœื•ืช ื—ื“ืฉื” ืœืคืจื•ื™ืงื˜. 2. ื”ืงื•ื“ ืžืฉืชืžืฉ ื‘ืžื‘ื ื” ื™ื•ืชืจ ื’ื ืจื™ - ื”ืคื•ื ืงืฆื™ื” partial. ืžืชื›ื ืชื™ื ื—ื“ืฉื™ื ืฉื™ื’ื™ืขื• ืœืงื•ื“ ืื•ืœื™ ื™ืœืžื“ื• ืœื”ืฉืชืžืฉ ื‘ื” ื’ื ื‘ื”ืงืฉืจื™ื ืื—ืจื™ื. ื ืฉื•ื•ื” ืืช ื–ื” ืœืงื•ื“ ืฉืœ ื”ืกืคืจื™ื” scope_capture:
import inspect
from types import FunctionType

def _make_cell(value):
    fn = (lambda x: lambda: x)(value)
    return fn.__closure__[0]

def capture(f):
    try:
        frame = inspect.currentframe()
        fake_globals = {}
        fake_globals.update(f.__globals__)
        fake_globals.update(frame.f_back.f_locals)
        captured_cells = []
        if f.__closure__:
            for cell in f.__closure__:
                captured_cells.append(_make_cell(cell.cell_contents))
        call_fn = FunctionType(
            code=f.__code__,
            globals=fake_globals,
            name=f.__name__,
            argdefs=f.__defaults__,
            closure=tuple(captured_cells),
        )
        return call_fn
    finally:
        del frame
ืื– ื›ืŸ ื–ื” ื™ืคื” ืื™ืš ืฉื”ื•ื ื‘ื ื” ืคื•ืงื ืฆื™ื” ื—ื“ืฉื” ืขื ืงืจื™ืื” ืœ FunctionType ื•ืขื“ื›ืŸ ืื•ืชื” ืœืจื•ืฅ ืขื ื”ืžืฉืชื ื™ื "ืฉื ืชืคืกื•" ืื•ื˜ื•ืžื˜ื™ืช. ื•ืขื“ื™ื™ืŸ ื”ืชืขืจ ืฉืœ ืื•ืงื”ื ืžื ืฆื— ืคื”. ืœื”ื‘ื™ืŸ ืืช ื”ืฉืคื” ื™ื•ืชืจ ืžืฉืชืœื ืžืืฉืจ ืœืฉื‘ื•ืจ ืื•ืชื” ื›ื“ื™ ืฉืชืชืื™ื ืœืžื•ื“ืœ ื”ืžื ื˜ืœื™ ืฉืœืš.

ToCode
1 420
$ rm -rf demo/.git
$ git add demo
$ git commit -m 'add demo'
ื‘ื™ื˜ื•ืœ ื” add ืขื reset ืœืคื ื™ ืฉืžืžืฉื™ื›ื™ื ื”ื™ื” ื—ื•ืกืš ืืช ื”ื›ื ืกืช ืชืช ื”ืคืจื•ื™ืงื˜ ื•ืืช ื”ื‘ื™ืœื‘ื•ืœ ืฉื‘ื ืื™ืชื•.

ToCode
1 420
# ื”ืฆื™ืœื• ื’ื™ื˜ - ืื™ ืืคืฉืจ ืœื’ืฉืช ืœืงื•ื‘ืฅ ื”ื™ืชืจื•ืŸ ื•ื”ื—ื™ืกืจื•ืŸ ืฉืœ ืขื‘ื•ื“ื” ืขื ืžืžืฉืง ืฉื•ืจืช ื”ืคืงื•ื“ื” ืฉืœ ื’ื™ื˜ ื”ื•ื ื”ื”ื•ื“ืขื•ืช ื”ืื™ื ืกื•ืคื™ื•ืช ืฉื”ื•ื ื›ื•ืชื‘ ื›ืฉืžื ืกื™ื ืœืขืฉื•ืช ืžืฉื”ื• ืœื ื”ื’ื™ื•ื ื™. ืžืฆื“ ืื—ื“ ื–ื” ืื—ืœื” ืฉื”ื•ื ืžืกื‘ื™ืจ ื”ื›ืœ, ืื‘ืœ ืžืฆื“ ืฉื ื™ ืงืœ ืœื“ืœื’ ืขืœ ื”ืื–ื”ืจื•ืช ื”ืืจื•ื›ื•ืช ื•ืœืงื•ื•ืช ืฉื”ื›ืœ ื™ืกืชื“ืจ ืžืขืฆืžื•. ื”ื“ื•ื’ืžื” ื”ื‘ืื” ืžืžื—ื™ืฉื” ืœืžื” ื—ืฉื•ื‘ ืœืงืจื•ื ืืช ื”ืคื™ื“ื‘ืง ืฉืœ ื’ื™ื˜. ## ืื™ืš ื ื›ื ืกื™ื ืœื‘ื•ืจ ื ื™ืฆื•ืจ ืคืจื•ื™ืงื˜ ื’ื™ื˜ ื‘ืชื™ืงื™ื” ื‘ืฉื subproject, ื•ืื– ื ื™ืฆื•ืจ ืคืจื•ื™ืงื˜ ื’ื™ื˜ ื—ื“ืฉ ื‘ืชื™ืงื™ื” ืื—ืจืช (ืงืจืืชื™ ืœื” demo). ืขื›ืฉื™ื• ื ืขืชื™ืง ืืช ืชื™ืงื™ื™ืช demo ืœืชื•ืš ืชื™ืงื™ื™ืช subproject ื•ื ืคืขื™ืœ ืžืชื•ืš ืชื™ืงื™ื™ืช subproject ืืช ื”ืคืงื•ื“ื”:
$ git add demo
ื’ื™ื˜ ื ืœื—ืฅ ื•ืžื“ืคื™ืก ื”ื•ื“ืขื” ืืจื•ื›ื” ืžืžื ื” ืื ื™ ืงื•ืจื ืจืง ืืช ื”ืฉื•ืจื” ื”ืจืืฉื•ื ื”:
warning: adding embedded git repository: demo
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint:   git submodule add <url> demo
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint:   git rm --cached demo
hint:
hint: See "git help submodule" for more information.
ื”ืฉื•ืจื” ื”ืจืืฉื•ื ื” ืžืกืคื™ืงื” ื‘ืฉื‘ื™ืœ ืœื”ื‘ื™ืŸ ืฉื ื™ืกื™ืชื™ ืœื”ื•ืกื™ืฃ ืคืจื•ื™ืงื˜ ื’ื™ื˜ ืœืชื•ืš ืคืจื•ื™ืงื˜ ื’ื™ื˜. ื ื•, ืžื” ื”ื‘ืขื™ื”, ืคืฉื•ื˜ ื ืžื—ืง ืืช ื”ื”ื™ืกื˜ื•ืจื™ื” ืฉืœ demo ื•ื ืชืงื“ื. ื ืคืขื™ืœ:
$ rm -rf demo/.git
$ git add demo
$ git commit -m 'add demo'
ื”ืคืขื ื‘ add ืื™ืŸ ืฉื’ื™ืื” ื•ื”ืงื•ืžื™ื˜ ื’ื ืขื‘ืจ ื‘ืฉืœื•ื. ืืช ื”ืชื•ืฆืื” ื“ื—ืคืชื™ ืœืจื™ืคื• ื‘ืงื™ืฉื•ืจ ื”ื–ื”: https://github.com/ynonp/add-subproject-demo. ืื ืชื™ื›ื ืกื• ืœืจื™ืคื• ืชืฉื™ืžื• ืœื‘ ืฉืืชื ืœื ื‘ืืžืช ื™ื›ื•ืœื™ื ืœื”ื™ื›ื ืก ืœืชื™ืงื™ื™ืช demo ืื• ืœืจืื•ืช ืืช ื”ืงื‘ืฆื™ื ืฉื‘ืชื•ื›ื”. ## ืžื” ืฉื‘ื•ืจ ื‘ืคืจื•ื™ืงื˜ ื ืคืขื™ืœ log ื›ื“ื™ ืœืจืื•ืช ืžื” ื ืฉื‘ืจ:
$ git log -p


commit 6d0d2fd41a8aa93a302d62cea5918b783ac00232 (HEAD -> main, origin/main)
Author: ynonp <ynonperek@gmail.com>
Date:   Mon Sep 18 21:39:37 2023 +0300

    add demo

diff --git a/demo b/demo
new file mode 160000
index 0000000..badb3c5
--- /dev/null
+++ b/demo
@@ -0,0 +1 @@
+Subproject commit badb3c5753a70c02e4e05a62ef9d6fcb65758d6c

commit 64f5679443ac216fb0e94483e679473f6f458294
Author: ynonp <ynonperek@gmail.com>
Date:   Mon Sep 18 21:36:30 2023 +0300

    hello world\

diff --git a/readme.txt b/readme.txt
new file mode 100644
index 0000000..3b18e51
--- /dev/null
+++ b/readme.txt
@@ -0,0 +1 @@
+hello world
ื•ื ืฉื™ื ืœื‘ ื‘ืืžืฆืข ืœืฉื•ืจื”:
+Subproject commit badb3c5753a70c02e4e05a62ef9d6fcb65758d6c
ืžื” ืงืจื” ืคื”? ื” git add ื”ืจืืฉื•ืŸ ืื•ืžื ื ื”ื“ืคื™ืก ืื–ื”ืจื” ืื‘ืœ ืขื“ื™ื™ืŸ ื‘ื™ืฆืข ืืช ื”ืคืขื•ืœื” ืฉื–ื” ืœื”ื•ืกื™ืฃ ืคืจื•ื™ืงื˜ ืœืชื•ืš ืคืจื•ื™ืงื˜. ื” git add ื”ืฉื ื™ ื‘ื™ืฆืข ืคืขื•ืœื” ื—ื“ืฉื” ืฉื”ื™ืชื” ืœื”ื•ืกื™ืฃ ืชื™ืงื™ื” ื•ืงื‘ืฆื™ื ื‘ืชื•ืš ืคืจื•ื™ืงื˜. ืขื›ืฉื™ื• ื”ืงื•ืžื™ื˜ ื”ื›ื ื™ืก ืืช ืฉื ื™ ื”ืฉื™ื ื•ื™ื™ื ื•ื‘ืคืจื•ื™ืงื˜ ืฉืœื™ ืžื•ื’ื“ืจืช ื’ื ืชื™ืงื™ื” ื‘ืฉื demo ื•ื’ื ืชืช-ืคืจื•ื™ืงื˜ ื‘ืฉื demo, ื›ืฉืชืช ื”ืคืจื•ื™ืงื˜ ืžืกืชื™ืจ ืืช ื”ืชื™ืงื™ื” ื•ืœื›ืŸ ืœื ื ื™ืชืŸ ืœื”ื™ื›ื ืก ืืœื™ื”. ## ืื™ืš ื™ื•ืฆืื™ื ืžื”ื‘ื•ืจ ืื—ืจื™ ืฉื”ื‘ื ื• ืืช ื”ื‘ืขื™ื” ืืคืฉืจ ืœื—ื–ื•ืจ ื•ืœืงืจื•ื ืืช ื”ืื–ื”ืจื” ืฉืœ ื’ื™ื˜:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint:   git rm --cached demo
hint:
hint: See "git help submodule" for more information.
ื‘ื’ืœืœ ืฉืชืช-ื”ืคืจื•ื™ืงื˜ demo ื”ืกืชื™ืจ ืืช ื”ืชื™ืงื™ื” demo (ื•ื–ื” ื”ื—ืœืง ื”ืžื‘ืœื‘ืœ ืคื”), ืื ื™ ืฆืจื™ืš ืœืžื—ื•ืง ืื•ืชื• ืœืคื ื™ ืฉืื•ื›ืœ ืœื”ื•ืกื™ืฃ ืืช ื”ืชื™ืงื™ื”.
$ git rm --cached demo
$ git add demo
$ git commit -m 'add demo'
## ืžื” ื”ื™ื” ืฆืจื™ืš ืœืขืฉื•ืช ืžืจืืฉ ืฉื•ื•ื” ืœื–ื›ื•ืจ ืฉ add ื‘ืืžืช ืขื•ืฉื” ื“ื‘ืจื™ื, ื•ื”ืคืขื•ืœื” ื”ื”ืคื•ื›ื” ืฉืœื• ื”ื™ื reset, ืœื›ืŸ ืื ืงื™ื‘ืœืชื™ ืื–ื”ืจื” ืžืคื—ื™ื“ื” ืžื’ื™ื˜ ืื—ืจื™ add ื”ื“ื‘ืจ ื”ื›ื™ ืงืœ ืœืขืฉื•ืช ื”ื•ื:
$ git add demo
warning: adding embedded git repository: demo
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint:   git submodule add <url> demo
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint:   git rm --cached demo
hint:
hint: See "git help submodule" for more information.

$ git reset

ToCode
1 420
ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.001    0.001    3.382    3.382 <string>:1(<module>)
        1    0.000    0.000    3.381    3.381 a.py:16(primes_below_v2)
        1    0.116    0.116    3.381    3.381 a.py:17(<listcomp>)
   999998    3.216    0.000    3.265    0.000 a.py:19(is_prime)
        1    0.000    0.000    3.382    3.382 {built-in method builtins.exec}
   999998    0.049    0.000    0.049    0.000 {built-in method math.sqrt}
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
ื”ืคืขื ื”ืฉื™ื˜ื” ืฉืœื™ ืœืงื—ื” ืžืขืœ 3 ืฉื ื™ื•ืช ื‘ืขื•ื“ ืฉื”ืฉื™ื˜ื” ืฉืœ ืืจืกื˜ื•ื˜ื ืก ืžืฆืื” ืืช ื›ืœ ื”ืžืกืคืจื™ื ื‘ืงืฆืช ื™ื•ืชืจ ืžื—ืฆื™ ืฉื ื™ื”. ืื—ื“ ื”ืคื™ืฆ'ืจื™ื ืฉืื ื™ ืื•ื”ื‘ ื‘ cPython ื”ื•ื ื”ื™ื›ื•ืœืช ืœื›ืชื•ื‘ ืืช ื”ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ืœืงื•ื‘ืฅ ื‘ืžืงื•ื ืœืžืกืš ื‘ืืžืฆืขื•ืช ื”ื•ืกืคืช ืฉื ืงื•ื‘ืฅ ื›ืคืจืžื˜ืจ ืฉื ื™ ืœืงืจื™ืื”:
cProfile.run("list(primes_below(1_000_000))", "stats1.profile")
cProfile.run("list(primes_below_v2(1_000_000))", "stats2.profile")
ืืช ื”ืงื‘ืฆื™ื ืืคืฉืจ ืœืฉืžื•ืจ ืขืœ ื”ืฉืจืช ื•ืžื“ื™ ืคืขื ืœืžืฉื•ืš ืื•ืชื ื•ืœื”ืฉืชืžืฉ ื‘ืžื•ื“ื•ืœ SnakeViz ื›ื“ื™ ืœืคืชื•ื— ืืช ื”ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ื‘ืฆื•ืจื” ื•ื™ื–ื•ืืœื™ืช ืืฆืœื ื• ืขืœ ื”ืžื—ืฉื‘ ื•ืœื”ื‘ื™ืŸ ืœืžื” ื”ืžืขืจื›ืช ืฉืœื™ ืขื‘ื“ื” ื›ืœ ื›ืš ืœืื˜ ื•ืื™ืคื” ืืคืฉืจ ืœืฉืคืจ.

ToCode
1 420
# ื”ื“ืจืš ื”ื›ื™ ืงืœื” ืœื‘ื“ื•ืง ื•ืœืฉืคืจ ื‘ื™ืฆื•ืขื™ื ื‘ืคื™ื™ืชื•ืŸ ื”ืžื•ื“ื•ืœ cProfile ืžืฆื™ืข ื“ืจืš ืงืœื” ื•ืžื“ื•ื™ืงืช ืœื”ืฉื•ื•ืช ื‘ื™ืฆื•ืขื™ื ืฉืœ ืคื•ื ืงืฆื™ื•ืช ื‘ืคื™ื™ืชื•ืŸ ื•ืœืคืขืžื™ื ื’ื ื™ื•ื›ืœ ืœืœืžื“ ืื•ืชื ื• ืžื” ื”ื‘ืขื™ื” ื•ืื™ืš ืœืชืงืŸ ืื•ืชื”. ื‘ื•ืื• ื ื ืกื” ืื•ืชื• ื‘ืืžืฆืขื•ืช ื—ื™ืคื•ืฉ ืžืกืคืจื™ื ืจืืฉื•ื ื™ื™ื. ## ืื™ืš ืื ื™ ืžื•ืฆื ืžืกืคืจื™ื ืจืืฉื•ื ื™ื™ื ื“ืจืš ืงืœื” ืœื‘ื“ื•ืง ืื ืžืกืคืจ ืจืืฉื•ื ื™ ื‘ืคื™ื™ืชื•ืŸ ื”ื™ื ืœื ืกื•ืช ืœืžืฆื•ื ื‘ืžื” ื”ื•ื ืžืชื—ืœืง. ื”ื ื” ื”ืงื•ื“:
def is_prime(n: int) -> bool:
    for i in range(2, int(sqrt(n)) + 1):
        if n % i == 0:
            return False
    return True
ืขื›ืฉื™ื• ื‘ืฉื‘ื™ืœ ืœืžืฆื•ื ืืช ื›ืœ ื”ืžืกืคืจื™ื ื”ืจืืฉื•ื ื™ื™ื ื”ืงื˜ื ื™ื ืžืžืกืคืจ ืžืกื•ื™ื ืžืกืคื™ืง ืœื”ืคืขื™ืœ ืืช ื”ืคืจื“ื™ืงื˜ ืขืœ ื›ืœ ื”ืžืกืคืจื™ื ื‘ื˜ื•ื•ื— ื•ืœืจืื•ืช ืžื™ ืžื—ื–ื™ืจ ืขืจืš ืืžืช:
def primes_below_v2(n: int):
    return [p for p in range(2, n) if is_prime(p)]
## ืื™ืš ืืจืกื˜ื•ื˜ื ืก ืžื•ืฆื ืžืกืคืจื™ื ืจืืฉื•ื ื™ื™ื ื”ื ืคื” ืฉืœ ืืจืกื˜ื•ื˜ื ืก ื”ื™ื ืฉื™ื˜ื” ื˜ื•ื‘ื” ื™ื•ืชืจ ืœืžืฆื•ื ืงื‘ื•ืฆื•ืช ืฉืœ ืžืกืคืจื™ื ืจืืฉื•ื ื™ื™ื. ืืจืกื˜ื•ื˜ื ืก ืฉื ืœื‘ ืฉืžืกืคืจ ืจืืฉื•ื ื™ื ื–ื” ืžืกืคืจ ืฉืœื ืžืชื—ืœืง ื‘ืฉื•ื ื“ื‘ืจ ืžืœื‘ื“ ื‘ืื—ื“ ื•ื‘ืขืฆืžื•, ื•ืœื›ืŸ ืื ื™ืฉ ืœืš ืžืกืคืจ ืจืืฉื•ื ื™ ืงืœ ืžืื•ื“ ืœืžืฆื•ื ื”ืžื•ืŸ ืžืกืคืจื™ื ืœื ืจืืฉื•ื ื™ื™ื - ืคืฉื•ื˜ ืชื›ืคื•ืœ ืืช ื”ืžืกืคืจ ื”ืจืืฉื•ื ื™ ืฉื›ื‘ืจ ื™ืฉ ืœืš ื‘ืžืกืคืจื™ื 2, 3, 4, 5 ื•ื›ืš ื”ืœืื”. ืื ื ืชื—ื™ืœ ืœื“ื•ื’ืžื” ืขื 2 ืฉื”ื•ื ืจืืฉื•ื ื™ ืื– ื‘ืจื•ืจ ืฉื›ืœ ื”ืžืกืคืจื™ื ื”ื–ื•ื’ื™ื™ื ืื™ื ื ืจืืฉื•ื ื™ื™ื. 3 ื”ื•ื ืจืืฉื•ื ื™ ื•ืœื›ืŸ 6, 9, 12, 15 ื•ื›ืœ ืฉืืจ ื”ื›ืคื•ืœื•ืช ืฉืœ 3 ืื™ื ื ืจืืฉื•ื ื™ื™ื. ืืช ื”ื ืคื” ืืคืฉืจ ืœืงื•ื“ื“ ื‘ืคื™ื™ืชื•ืŸ ื‘ืื•ืคืŸ ื”ื‘ื:

def primes_below(n: int) -> Generator[int, None, None]:
    p = 2
    marked = set()
    while p < n:
        yield p
        marked.add(p)
        for i in range(n // p + 1):
            marked.add(i * p)
        while p in marked:
            p = p + 1
## ืžื™ ื™ื•ืชืจ ืžื”ื™ืจ ืื™ืš ื ื“ืข ืื™ื–ื” ืฉื™ื˜ื” ืžื”ื™ืจื” ื™ื•ืชืจ? ื˜ื•ื‘ ืžืœื‘ื“ ื”ืื™ื ื˜ื•ืื™ืฆื™ื” ื”ื‘ืจื•ืจื” ืขื“ื™ื™ืŸ ื™ื”ื™ื” ืžืขื ื™ื™ืŸ ืœืจืื•ืช ืงืฆืช ืžืกืคืจื™ื, ื•ื”ืžื•ื“ื•ืœ cProfile ืคื” ื‘ืฉื‘ื™ืœ ืœืขื–ื•ืจ. ืื ื™ ืžื•ืกื™ืฃ ืืช ื”ืงื•ื“:
import cProfile

cProfile.run("list(primes_below(100))")
cProfile.run("list(primes_below_v2(100))")
ื•ืžืจื™ืฅ, ื•ื”ืคืขื ืžืงื‘ืœ ืืช ื”ืคืœื˜ ื”ื‘ื ืขืœ ื”ืžืกืš:
 ~/tmp ๎‚ฐ python a.py
         250 function calls in 0.000 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.000    0.000 <string>:1(<module>)
       26    0.000    0.000    0.000    0.000 a.py:5(primes_below)
        1    0.000    0.000    0.000    0.000 {built-in method builtins.exec}
      221    0.000    0.000    0.000    0.000 {method 'add' of 'set' objects}
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}


         201 function calls in 0.000 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.000    0.000 <string>:1(<module>)
        1    0.000    0.000    0.000    0.000 a.py:16(primes_below_v2)
        1    0.000    0.000    0.000    0.000 a.py:17(<listcomp>)
       98    0.000    0.000    0.000    0.000 a.py:19(is_prime)
        1    0.000    0.000    0.000    0.000 {built-in method builtins.exec}
       98    0.000    0.000    0.000    0.000 {built-in method math.sqrt}
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
ื–ื” ื ื—ืžื“ - ืื ื—ื ื• ืจื•ืื™ื ื›ืžื” ื–ืžืŸ ืœืงื—ื” ื›ืœ ืื—ืช ืžืฉืชื™ ื”ื“ืจื›ื™ื ื•ืืคื™ืœื• ืื™ื–ื” ืงืจื™ืื•ืช ืœืคื•ื ืงืฆื™ื•ืช ื‘ื•ืฆืขื• ื•ื›ืžื” ื–ืžืŸ ื‘ื™ืœื™ื ื• ื‘ื›ืœ ืื—ืช ืžื”ืคื•ื ืงืฆื™ื•ืช ื”ืคื ื™ืžื™ื•ืช. ื”ื‘ืขื™ื” ื”ื™ื ืฉื”ืžืกืคืจื™ื ืขื“ื™ื™ืŸ ืงื˜ื ื™ื ืžื“ื™ ื•ืื™ืŸ ื”ื‘ื“ืœ ื‘ื™ืŸ ืฉืชื™ ื”ืฉื™ื˜ื•ืช. ื‘ืžืกืคืจื™ื ื™ื•ืชืจ ื’ื“ื•ืœื™ื ื”ืคืขืจื™ื ืžืชื’ืœื™ื:
 ~/tmp ๎‚ฐ python a.py
         3089206 function calls in 0.652 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.010    0.010    0.652    0.652 <string>:1(<module>)
    78499    0.367    0.000    0.642    0.000 a.py:5(primes_below)
        1    0.000    0.000    0.652    0.652 {built-in method builtins.exec}
  3010704    0.276    0.000    0.276    0.000 {method 'add' of 'set' objects}
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}


         2000001 function calls in 3.382 seconds

   Ordered by: standard name

ToCode
1 420
ื”ื—ืฉื™ื‘ื•ืช ืฉืœ ืขื‘ื•ื“ื” ื‘ืกื‘ื™ื‘ื” ื‘ืจื™ืื” ื”ื™ื ืขืฆื•ืžื”, ื›ื™ ื‘ืฉื•ืง ื”ืชื•ื›ื ื” ืขื‘ื•ื“ื•ืช ื”ืŸ ืœื ืœื›ืœ ื”ื—ื™ื™ื ื•ืœื ืžืฉื ื” ืžื” ืชืขืฉื• ื‘-5 ืฉื ื™ื ื”ืงืจื•ื‘ื•ืช ืกื™ื›ื•ื™ ื˜ื•ื‘ ืฉืชืฆื˜ืจื›ื• ืœื—ืคืฉ ืขื‘ื•ื“ื” ื—ื“ืฉื”. ืกื‘ื™ื‘ืช ื”ืขื‘ื•ื“ื” ื”ื™ื ืฉื ื•ืชื ืช ืœื™ ืืช ื”ื›ืœื™ื, ื”ืืžื•ื ื•ืช ื•ื”ื™ื›ื•ืœื•ืช ืฉื™ืžืฉื™ื›ื• ืื™ืชื™ ื”ืœืื” ืœืขื‘ื•ื“ื” ื”ื‘ืื”. ืกื‘ื™ื‘ื” ืฉืžืขื•ื“ื“ืช ืžืชื›ื ืชื™ื ืœืงื—ืช ืื—ืจื™ื•ืช, ืœืœืžื•ื“ ื ื•ืฉืื™ื ื—ื“ืฉื™ื, ืœื”ืฆื™ืข ืฉื™ืคื•ืจื™ื ื•ืœืคืชื•ืจ ื‘ืขื™ื•ืช ื‘ืฆื•ืจื” ืžืขืžื™ืงื” ืชื•ืฆื™ื ืืชื›ื ืžืชื›ื ืชื™ื ื˜ื•ื‘ื™ื ื™ื•ืชืจ ื•ืชืชืŸ ื™ื™ืชืจื•ืŸ ืชื—ืจื•ืชื™ ืขืฆื•ื ื‘ื—ื™ืคื•ืฉ ื”ืขื‘ื•ื“ื” ื”ื‘ื.

ToCode
1 420
# ืกื™ืžื ื™ ืื–ื”ืจื” ืœื“ื™ื ืžื™ืงื” ืจืขื™ืœื” ื‘ืคืจื•ื™ืงื˜ ืื™ืคื” ืชืจืฆื• ืœื”ื™ื•ืช ื‘ืขื•ื“ ืฉื ืชื™ื™ื? ืื™ืคื” ืืชื ื—ื•ืฉื‘ื™ื ืฉืชื”ื™ื•? ืื ืืชื ืขื•ื‘ื“ื™ื ื‘ืฆื•ื•ืช ื˜ื•ื‘ ื™ืฉ ืกื™ื›ื•ื™ ื˜ื•ื‘ ืฉื‘ืขื•ื“ ืฉื ืชื™ื™ื ืชื”ื™ื• ื™ื•ืชืจ ืžืงืฆื•ืขื™ื™ื ืžืžื” ืฉืืชื ื”ื™ื•ื, ื™ื”ื™ื• ืœื›ื ื™ื•ืชืจ ืžืฉืื‘ื™ื, ื™ื•ืชืจ ืงืฉืจื™ื ื‘ืชืขืฉื™ื” ื•ื™ื•ืชืจ ื‘ืขื™ื•ืช ืฉืคืชืจืชื ื•ืชื•ื›ืœื• ืœืœืžื•ื“ ืžื”ืŸ ื•ืœื”ืฉืชืคืจ ืœืขืชื™ื“. ืื ืืชื ืขื•ื‘ื“ื™ื ื‘ืฆื•ื•ืช ืจืขื™ืœ ื™ืฉ ืกื™ื›ื•ื™ ื˜ื•ื‘ ืฉื‘ืขื•ื“ ืฉื ืชื™ื™ื ื™ื”ื™ื• ืœื›ื ืคื—ื•ืช ืžืฉืื‘ื™ื, ืคื—ื•ืช ืงืฉืจื™ื ื‘ืชืขืฉื™ื”, ื•ืชืกื‘ืœื• ืž Tunnel Vision ืœื’ื‘ื™ ืืคืฉืจื•ื™ื•ืช ืคื™ืชืจื•ืŸ ื‘ืขื™ื•ืช. ืขื‘ื•ื“ื” ื‘ืฆื•ื•ืช ืจืขื™ืœ ื”ื™ื ืžื–ื™ืงื” ื›ื™ ืœื ืจืง ืฉืื ื—ื ื• ืœื ืžืฉืชืคืจื™ื, ืื ื—ื ื• ื’ื ืžืืžืฆื™ื ืคืจืงื˜ื™ืงื•ืช ื•ืฉื™ื˜ื•ืช ืขื‘ื•ื“ื” ืฉืคืฉื•ื˜ ื™ืžืฉื›ื• ืื•ืชื ื• ืœืžื˜ื” ื‘ื›ืœ ืคืจื•ื™ืงื˜ ืขืชื™ื“ื™ ื•ืืžื•ื ื•ืช ืฉื™ื”ื™ื” ืงืฉื” ืœื”ืชื ืขืจ ืžื”ืŸ ื‘ื”ืžืฉืš. ื”ื‘ืขื™ื” ื”ื™ื•ืชืจ ืงืฉื” ืขื ืฆื•ื•ืชื™ื ืจืขื™ืœื™ื ื”ื™ื ืฉืงืฉื” ืžืื•ื“ ืœืฆืืช ืžื”ื. ืื ืฉื™ื ืฉืขื•ื‘ื“ื™ื ื‘ืกื‘ื™ื‘ื” ืจืขื™ืœื” ื‘ื˜ื•ื—ื™ื ืฉื–ืืช ื”ื“ืจืš ื”ื™ื—ื™ื“ื”, ืฉืฆืจื™ืš ืœื”ืงืจื™ื‘ ื‘ืฉื‘ื™ืœ ื”ืคืจื•ื™ืงื˜, ืฉื‘ื›ืœ ืคืจื•ื™ืงื˜ ื™ืฉ ื‘ืขื™ื•ืช ื•ืžื” ืืชื” ืขื•ืฉื” ืขื ื™ื™ืŸ, ื•ื‘ื’ื“ื•ืœ ื™ืžืฉื™ื›ื• ืœืชืจืฅ ื•ืœื”ืกื‘ื™ืจ ืœืขืฆืžื ื•ืœืื ืฉื™ื ืžืกื‘ื™ื‘ ืฉื‘ืกืš ื”ื›ืœ ื”ืžืฆื‘ ืœื ื›ื–ื” ืจืข. ื‘ืขื‘ื•ื“ื”, ื›ืžื• ื‘ืžืกื’ืจื•ืช ืื—ืจื•ืช ื‘ื—ื™ื™ื, ื›ืฉืืชื” ืขืžื•ืง ื‘ืชื•ืš ืคืจื•ื™ืงื˜ ืงืฉื” ืœืจืื•ืช ืื™ืš ื“ื‘ืจื™ื ื”ื™ื• ื™ื›ื•ืœื™ื ืœืขื‘ื•ื“. ืื– ื‘ื“ื™ื•ืง ื‘ืฉื‘ื™ืœ ืืœื” ืžื›ื ืฉืชืงื•ืขื™ื ื‘ืื™ื–ื” ื‘ื•ืฅ ื›ื–ื”, ืฉื‘ื˜ื•ื—ื™ื ืฉืขื›ืฉื™ื• ืงืฉื” ืื‘ืœ ืขื•ื“ ืžืขื˜ ื–ื” ื™ืกืชื“ืจ, ืฉืžืฉื•ื›ื ืขื™ื ืฉื‘ื›ืœ ืคืจื•ื™ืงื˜ ื™ืฉ ื‘ืขื™ื•ืช, ื”ื ื” ืจืฉื™ืžื” ืฉืœ 4 ืกื™ืžื ื™ ืื–ื”ืจื” ืฉืขืฉื•ื™ื™ื ืœืจืžื•ื– ืœื›ื ืฉื›ื“ืื™ ืœืงื—ืช ืฆืขื“ ืื—ื•ืจื”- ## ื™ืฉ ืจืง ืžืชื›ื ืช ืื—ื“ ืฉื™ื•ื“ืข ืœื’ืขืช ื‘ื—ืœืง ืžืกื•ื™ื (ื•ืงืจื™ื˜ื™) ื‘ืžืขืจื›ืช. ื‘ื”ืจื‘ื” ืคืจื•ื™ืงื˜ื™ื ื”ืื—ืจื™ื•ืช ืขืœ ื—ืœืงื™ื ื‘ืงื•ื“ ืžืชื—ืœืงืช ื‘ื™ืŸ ืžืชื›ื ืชื™ื ืฉื•ื ื™ื ื‘ืคืจื•ื™ืงื˜ ื•ื–ื” ื˜ื‘ืขื™ ืœื’ืžืจื™, ืื‘ืœ ื‘ืฆื•ื•ืชื™ื ื˜ื•ื‘ื™ื ื™ืฉ ืœื ื• ืฉื™ื˜ื•ืช ืœืคื–ืจ ืืช ื”ืื—ืจื™ื•ืช ื•ืœื—ืœืง ืืช ื”ื™ื“ืข ื•ื”ืžื™ื•ืžื ื•ืช ื”ื˜ื›ื ื™ืช ื‘ื™ืŸ ื”ืื ืฉื™ื - ืื ื—ื ื• ื ืฉืชืžืฉ ื‘ Pair Programming, Code Reviews, ื”ืจืฆืื•ืช ืœืฆื•ื•ืช ื•ื”ืืงืชื•ื ื™ื ื›ื“ื™ ืœืฉืœื‘ ืื ืฉื™ื ื’ื ื‘ื—ืœืงื™ื ืฉืœ ื”ืžืขืจื›ืช ื‘ื”ื ื”ื ืœื ื ื•ื’ืขื™ื ื‘ื™ื•ื ื™ื•ื. ืฆื•ื•ืชื™ื ืจืขื™ืœื™ื ื™ืฉืื™ืจื• ืืช ื”ืื—ืจื™ื•ืช ืจืง ืขืœ ื‘ืŸ ืื“ื ืื—ื“ ื•ืื•ืชื ืื ืฉื™ื ื™ืฉืชืžืฉื• ื‘ื›ื— ืฉืœื”ื ื›ื“ื™ ืœื”ืจื—ื™ืง ืื ืฉื™ื ืื—ืจื™ื ืฉืจื•ืฆื™ื ืœืขื–ื•ืจ. ืื ืชืžื™ื“ ืžืชืงืฉืจื™ื ืœืื•ืชื• ื‘ืŸ ืื“ื ื›ืฉื™ืฉ ื‘ืขื™ื” ืงืจื™ื˜ื™ืช, ืื ื›ืœ ืชื™ืงื•ืŸ ื‘ืื’ ื—ื™ื™ื‘ ืœืขื‘ื•ืจ ื“ืจืš ื‘ืŸ ืื“ื ืื—ื“, ื•ื‘ืžื™ื•ื—ื“ ืื ื”ื‘ืŸ ืื“ื ื”ื–ื” ืžืื•ื“ ื–ืžื™ืŸ ื’ื ื‘ืฉืขื•ืช ืœื ื”ื’ื™ื•ื ื™ื•ืช, ื™ืฉ ืคื” ื—ืฉื“ ืœื”ืชื ื”ืœื•ืช ืœื ื‘ืจื™ืื”. ## ื”ื ื™ื”ื•ืœ ืžื•ืฉืคืข ืžืคื•ืœื™ื˜ื™ืงื” ื•ืžืžื” ืฆืจื™ืš ืœืกืคืจ ืœื‘ื•ืกื™ื ื‘ืžืงื•ื ืžื” ื™ื”ื™ื” ื˜ื•ื‘ ืœืžื•ืฆืจ. ื‘ื›ืœ ืคืจื•ื™ืงื˜ ื™ืฉ ืžื ื”ืœื™ื ืฉืžื—ืœื™ื˜ื™ื ืžื” ื™ื”ื™ื” ื”ื›ื™ื•ื•ืŸ ื•ืขื•ื‘ื“ื™ื ื™ื•ืชืจ ื–ื•ื˜ืจื™ื ืฉืฆืจื™ื›ื™ื ืœืžืžืฉ ืืช ื”ื”ื—ืœื˜ื•ืช. ื”ื”ื‘ื“ืœ ื”ื•ื ืฉื‘ืคืจื•ื™ืงื˜ ื‘ืจื™ื ืœื›ืœ ื”ื—ืœื˜ื” ื™ืฉ ื”ืกื‘ืจ ื•ืžืฉืชืžืฉื™ื ื‘ืžื˜ืจื™ืงื•ืช ื›ื“ื™ ืœื”ื‘ื™ืŸ ื•ืœืฉืงืฃ ืื™ื–ื” ื”ื—ืœื˜ื•ืช ื”ื‘ื™ืื• ืœืื™ื–ื” ืชื•ืฆืื•ืช. ื‘ืคืจื•ื™ืงื˜ ืจืขื™ืœ ืื ื—ื ื• ื ืจืื” ื™ืฉื™ื‘ื•ืช ืชื›ื•ืคื•ืช ืขื ื”ื”ื ื”ืœื” ื•ื›ืœ ืคืขื ื”ื ื—ืชื” ืื—ืจืช ืฉืœ ื›ื™ื•ื•ืŸ ืฉืฆืจื™ืš ืœืงื—ืช, ื‘ืœื™ ืœืชืช ืœื›ื™ื•ื•ืŸ ื”ืงื•ื“ื ื”ื–ื“ืžื ื•ืช ื•ืœืคืขืžื™ื ืืคื™ืœื• ื‘ืœื™ ืœืกื™ื™ื ืคื™ืชื•ื— ืฉืœ ืคื™ืฆ'ืจ ืฉืจืง ืœืคื ื™ ืฉื‘ื•ืข ื”ื™ื” ื”ืชืงื•ื•ื” ื”ื’ื“ื•ืœื” ืฉืœ ื”ืžื•ืฆืจ. ืžื•ืชืจ ืœืฉื ื•ืช ืืช ื“ืขืชืš, ืื‘ืœ ื›ืฉื”ืžื ื”ืœื™ื ืœื ืžืกืชืžื›ื™ื ืขืœ ื ืชื•ื ื™ื ื•ืžื•ืคื™ืขื™ื ืขื ื“ืจื™ืฉื•ืช ื—ื“ืฉื•ืช ืžืฉื•ื ืžืงื•ื, ื™ืฉ ื—ืฉื“ ืœื”ืชื ื”ืœื•ืช ืœื ื‘ืจื™ืื”. ## ื‘ื—ื™ืจื” ื˜ื›ื ื•ืœื•ื’ื™ืช ื”ืžื•ืฉืคืขืช ืžื˜ืจื ื“ื™ื ืื• ืคื—ื“ ืœืฉื ื•ืช ื˜ื›ื ื•ืœื•ื’ื™ื” ืฉื™ื ื•ื™ ื˜ื›ื ื•ืœื•ื’ื™ ื”ื•ื ื—ืœืง ืžื”ื—ื™ื™ื, ื›ื™ ืฉืคื•ืช ื”ืชื›ื ื•ืช ืขืฆืžืŸ ื•ื”ืคืจื™ื™ืžื•ื•ืจืงื™ื ืžืชืคืชื—ื™ื. ืื– ืื ื”ืชื—ืœืชื™ ืคืจื•ื™ืงื˜ ืœืคื ื™ ืขืฉืจ ืฉื ื™ื ื‘ื’ื™ืจืกื” ืžืกื•ื™ืžืช ืฉืœ Java ื•ืžืื– ืœื ืฉื™ื“ืจื’ืชื™ ืืช ื” Java ื›ื™ ืœื ื”ื™ื” ื–ืžืŸ, ื–ื” ืื•ืžืจ ืžืฉื”ื• ืขืœ ืกื“ืจื™ ื”ืขื“ื™ืคื•ื™ื•ืช ื‘ืคืจื•ื™ืงื˜. ืžืฆื“ ืฉื ื™ ืื ื›ืœ ืฉืœื•ืฉื” ื—ื•ื“ืฉื™ื ืื ื™ ืžืฉื›ืชื‘ ืืช ื”ืคืจื•ื™ืงื˜ ืžืืคืก ื‘ื˜ื›ื ื•ืœื•ื’ื™ื” ืื—ืจืช ื–ื” ื’ื ืกื™ืžืŸ ืœืกื“ืจื™ ืขื“ื™ืคื•ื™ื•ืช ืœื ื ื›ื•ื ื™ื. ื‘ืชื”ืœื™ืš ืคื™ืชื•ื— ื‘ืจื™ื ืื ื—ื ื• ืžืชื—ื™ืœื™ื ืขื ื‘ื—ื™ืจื” ื˜ื›ื ื•ืœื•ื’ื™ืช ืžืกื•ื™ืžืช ื•ืžืฉื ืžืฉื“ืจื’ื™ื ืืช ื”ื›ืœื™ื ื•ื”ืงื•ื“ ื‘ืฆืขื“ื™ื ืงื˜ื ื™ื. ื”ื—ืฉื™ื‘ื•ืช ืฉืœ ืจื™ืคืงื˜ื•ืจื™ื ื’ ื”ื™ื ืฉืจืง ื“ืจืš ื›ืชื™ื‘ื” ื•ืฉื™ื“ืจื•ื’ ื”ืคื™ืชืจื•ืŸ ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœืฉืคืจ ืื•ืชื•, ื•ื–ื• ื”ื“ืจืš ืฉืœื ื• ืœืœืžื•ื“ ื˜ื›ื ื•ืœื•ื’ื™ื” ื™ื•ืชืจ ืœืขื•ืžืง. ื›ืชื™ื‘ืช ืงื•ื“ ื‘ืœื™ ืœืขื“ื›ืŸ ืื•ืชื•, ืื• ื›ืชื™ื‘ื” ืžืืคืก ื›ืœ ืฉืœื•ืฉื” ื—ื•ื“ืฉื™ื, ื™ืฉืื™ืจื• ืื•ืชื™ ื‘ืจืžืช ืคื™ืชืจื•ืŸ ื‘ืกื™ืกื™ืช ื•ื‘ืงื•ื“ ืฉื›ืื™ืœื• ื”ื•ืขืชืง ืžืื™ื–ื” Tutorial ืื• ืž Chat GPT. ื–ื” ืœื ืกื•ื’ ื”ื ื™ืกื™ื•ืŸ ืฉืืชื ืจื•ืฆื™ื ืœืฆื‘ื•ืจ ื‘ืขื‘ื•ื“ื”. ## ืจืขื™ื•ื ื•ืช ื—ื“ืฉื™ื ื ื“ื—ื™ื ืžืฉื™ืงื•ืœื™ื ืœื ืขื ื™ื™ื ื™ื™ื, ื•ืคื™ืชื•ื—ื™ื ื—ื“ืฉื™ื ืžืงื‘ืœื™ื ื›ืชืฃ ืงืจื” ืื• ื ืฉืœื—ื™ื ืœืื™ื ืกื•ืฃ ืกื‘ื‘ื™ ืชื™ืงื•ื ื™ื ืœืคื ื™ ืฉื™ืžื•ื–ื’ื• ืœืคืจื•ื™ืงื˜. ืœื ื›ืœ ืจืขื™ื•ืŸ ื”ื•ื ื˜ื•ื‘ ืื‘ืœ ื‘ืคืจื•ื™ืงื˜ื™ื ื‘ืจื™ืื™ื ื›ื•ืœื ื™ื›ื•ืœื™ื ืœื”ืฆื™ืข ืจืขื™ื•ื ื•ืช ื•ื™ืฉ ื“ืจืš ื™ื“ื•ืขื” ืฉื‘ื” ืจืขื™ื•ื ื•ืช ื—ื“ืฉื™ื ื ื›ื ืกื™ื ืœืžืขืจื›ืช. ื›ืš ืื ื‘ื ื™ืชื™ ืกืงืจื™ืคื˜ ื—ื“ืฉ ืฉืืžื•ืจ ืœืขืฉื•ืช ืื•ื˜ื•ืžืฆื™ื” ืœืชื”ืœื™ืš ืฉืขื“ ืขื›ืฉื™ื• ื”ื™ื” ื™ื“ื ื™ ื–ื” ื‘ืกื“ืจ ืœื”ืฆื™ืข ื›ืžื” ืชื™ืงื•ื ื™ื ืœืคื ื™ ืฉืžืืฉืจื™ื ืœื”ืคื™ืฅ ืื•ืชื• ืœื›ืœ ื”ืฆื•ื•ืช, ืื‘ืœ ืื ื›ืœ ืกืงืจื™ืคื˜ ืฉืื ื™ ื‘ื•ื ื” ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ื ื’ื ื– ื‘ื’ืœืœ ื™ื•ืชืจ ืžื“ื™ ื“ืจื™ืฉื•ืช ืœืชื™ืงื•ื ื™ื ืื– ืœืื˜ ืœืื˜ ืื ื™ ืžืื‘ื“ ืžื•ื˜ื™ื‘ืฆื™ื” ื•ืœื ืจื•ืฆื” ืœื”ืฆื™ืข ืขื•ื“ ืจืขื™ื•ื ื•ืช ื—ื“ืฉื™ื.

ToCode
1 420
# ืžืขื’ืœ ื”ื™ืฆื™ืจื”: ื‘ืขื™ื”, ืคื™ืชืจื•ืŸ, ื™ื›ื•ืœืช, ื‘ืขื™ื” ื›ืฉื™ืฉ ื‘ืขื™ื” ื”ื“ื‘ืจ ื”ื˜ื‘ืขื™ ืœืขืฉื•ืช ื”ื•ื ืœื—ืคืฉ ืคื™ืชืจื•ืŸ. ื›ืฉืžืฆืื ื• ื”ืคื™ืชืจื•ืŸ ื™ืคืชื— ื‘ืคื ื™ื ื• ืืคืฉืจื•ื™ื•ืช ื•ื™ื›ื•ืœื•ืช ื—ื“ืฉื•ืช, ืื™ืชืŸ ื ื•ื›ืœ ืœื™ืฆื•ืจ ื›ืœื™ื ื—ื“ืฉื™ื ืฉื™ื•ื‘ื™ืœื• ืœื‘ืขื™ื•ืช ื—ื“ืฉื•ืช. ื•ื›ืŸ ืืชื ืžื›ื™ืจื™ื ืืช ื–ื” - ื˜ื™ื ื‘ืจื ืจืก ืœื™ ื”ืžืฆื™ื ืืช ื”ืื™ื ื˜ืจื ื˜ ื›ื“ื™ ืฉื™ื•ื›ืœ ืœื”ืขื‘ื™ืจ ืžื™ื“ืข ื‘ืงืœื•ืช ื‘ื™ืŸ ืžื—ืฉื‘ื™ื ืžืกื•ื’ื™ื ืฉื•ื ื™ื, ืžื” ืฉื’ืจื ืœืื ืฉื™ื ืœื”ืชื—ื™ืœ ืœื‘ื ื•ืช ืืชืจื™ื ื•ืœืคืชื— ืืช ื”ืจืฉืช ืžื” ืฉื™ืฆืจ ืื™ื ืกื•ืฃ ื‘ืขื™ื•ืช ื—ื“ืฉื•ืช. ืื‘ืœ ืื•ืชื• ืžืขื’ืœ ืงื™ื™ื ื’ื ื‘ืงื˜ืŸ ื‘ื—ื™ื™ื ืฉืœื ื•. ืขื‘ื•ื“ื” ื—ื“ืฉื” ืขืฉื•ื™ื” ืœื”ื›ื ื™ืก ืžืฉื›ื•ืจืช ื™ื•ืชืจ ื’ื‘ื•ื”ื” ื•ืขื›ืฉื™ื• ื”ื›ืกืฃ ืžื™ื™ืฆืจ ืืคืฉืจื•ื™ื•ืช ื—ื“ืฉื•ืช. ืคืจื•ื™ืงื˜ ืฆื“ ืฉื‘ื ื™ืช ืžืœืžื“ ืื•ืชืš ืœื”ืฉืชืžืฉ ื‘ื›ืœื™ื ืฉืื•ืœื™ ืขื“ ืขื›ืฉื™ื• ืœื ื”ื™ืชื” ืœืš ื”ื–ื“ืžื ื•ืช ืœื ืกื•ืช, ื•ืขื›ืฉื™ื• ืืคืฉืจ ืœืžืฆื•ื ืขื•ื“ ืžืงื•ืžื•ืช ืœื”ืฉืชืžืฉ ื‘ื”ื. ื”ื˜ืจื™ืง ื›ืืŸ ื”ื•ื ืœื—ืคืฉ ืืช ื”ืžืขื’ืœ ื“ื•ื•ืงื ื‘ื”ืชื—ืœื” ืฉืœื•, ื‘ื—ื™ืคื•ืฉ ืคื™ืชืจื•ื ื•ืช ื—ื“ืฉื™ื ืœื‘ืขื™ื•ืช. ื‘ืจื•ืจ ืฉื™ืฉ ื”ืจื‘ื” ื‘ืขื™ื•ืช ืฉืืคืฉืจ ืœืคืชื•ืจ ืžื”ืจ ื™ื•ืชืจ ื‘ื›ืœื™ื ืฉืื ื—ื ื• ื›ื‘ืจ ืžื›ื™ืจื™ื, ืื‘ืœ ืจื•ื‘ ื”ื–ืžืŸ ืืœื” ื“ื•ื•ืงื ื”ื’ื™ืฉื” ื”ื—ื“ืฉื” ื•ื”ืคื™ืชืจื•ื ื•ืช ื”ื—ื“ืฉื™ื ืฉื™ืชื—ื™ืœื• ืืช ื”ืชื ื•ืขื” ื•ื™ื•ื‘ื™ืœื• ื‘ืกื•ืฃ ืœื”ืžืฆืื•ืช ื—ื“ืฉื•ืช.

ToCode
1 420
# ื–ื” ืจืง ืงื•ื“ ืงื—ื• ืืช ื”ืงื•ื“ ื”ื›ื™ ื™ืคื”, ืฉื™ืžื• ืื•ืชื• ื‘ืืจื•ืŸ ื•ืชื—ื–ืจื• ืขื•ื“ 5 ืฉื ื™ื. ื”ื•ื ืขื“ื™ื™ืŸ ื™ื™ืฉืืจ ื™ืคื”? ื”ื•ื ืขื“ื™ื™ืŸ ื™ืขื‘ื•ื“? ื™ื”ื™ื” ืขื“ื™ื™ืŸ ืžื™ ืฉื™ืจืฆื” ืœืชื—ื–ืง ืื•ืชื•? ืœื ื‘ื˜ื•ื— ื‘ื›ืœืœ. ืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘ืงื•ื“ ื›ื“ื™ ืœื’ืจื•ื ืœืžื—ืฉื‘ ืœืขืฉื•ืช ื“ื‘ืจื™ื ื•ืฉื•ื›ื—ื™ื ืฉืžื—ืฉื‘ื™ื ืžืฉืชื ื™ื, ื”ื“ื‘ืจื™ื ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ืžืฉืชื ื™ื ื•ืื ื—ื ื• ืžืฉืชื ื™ื - ื•ืœื›ืŸ ื’ื ื”ืงื•ื“ ืฆืจื™ืš ืœื”ืฉืชื ื•ืช. ืจื•ื‘ ื”ื–ืžืŸ ืื ืืฃ ืื—ื“ ืœื ื ื’ืข ื‘ืงื•ื“ 5 ืฉื ื™ื ื–ื” ืœื ืื•ืžืจ ืฉื”ืงื•ื“ ื˜ื•ื‘ ื‘ืžื™ื•ื—ื“ ืืœื ื‘ื“ื™ื•ืง ืœื”ื™ืคืš, ื”ืงื•ื“ ื›ืœ ื›ืš ื’ืจื•ืข ืฉืœืืฃ ืื—ื“ ืื™ืŸ ืื•ืžืฅ ืœื’ืขืช ื‘ื•. ื›ืŸ ื”ื•ื ืคื•ืชืจ ืืช ื”ื‘ืขื™ื” ืื‘ืœ ื”ื•ื ืžืคืกื™ื“ ื‘ืชื—ื–ื•ืงื”. ื›ืฉืื ื—ื ื• ืื•ืžืจื™ื ืฉ"ืงื•ื“ ื–ื” ืจืง ืงื•ื“" ื”ืžืฉืžืขื•ืช ื”ื™ื- 1. ืœื ื ืงืฉืจื ื• ืœืงื•ื“ ืฉื›ืชื‘ื ื•. ืื ื—ื ื• ื ืฉืžื— ืœื‘ื ื•ืช ืžื—ื“ืฉ ืžื ื’ื ื•ื ื™ื ื›ื•ืœืœ ืžื ื’ื ื•ื ื™ ืœื™ื‘ื” ืฉืœ ื”ืžืขืจื›ืช ืื ื‘ื ื™ื” ืžื—ื“ืฉ ื›ื–ืืช ืชืฉืคืจ ืืช ืขื‘ื•ื“ื” ื”ืžืขืจื›ืช. 2. ื‘ื ื™ื ื• ืžืจืืฉ ืžื ื’ื ื•ื ื™ื ืฉื™ืืคืฉืจื• ืœืฉื ื•ืช ืืช ื”ืงื•ื“ ื›ืฉื ืฆื˜ืจืš. ื”ืงื•ื“ ืœื "ืžืชืขื“ ืืช ืขืฆืžื•" ืืœื ื™ืฉ ื”ืขืจื•ืช ื‘ืžืงื•ื ืฉืžืกื‘ื™ืจื•ืช ืžื” ื”ืžื˜ืจื” ืฉืœ ื”ืงื•ื“ ื•ืžื” ื”ืคื•ื ืงืฆื™ื•ืช ืฆืจื™ื›ื•ืช ืœืขืฉื•ืช. ื™ืฆืจื ื• ืชื•ื›ื ื™ื•ืช ื‘ื“ื™ืงื” ื›ื“ื™ ืฉืืคืฉืจ ื™ื”ื™ื” ืœืฉื ื•ืช ื—ืœืงื™ื ื‘ืงื•ื“ ื•ืœื•ื•ื“ื ืฉืœื ืฉื‘ืจื ื• ื›ืœื•ื. 3. ื‘ื ื™ื ื• ืžืจืืฉ ืืช ื”ืชืงืฉื•ืจืช ืœืชื•ืš ื”ืงื•ื“ ื‘ืžื”ืœืš ื”ืขื‘ื•ื“ื”. ืขื‘ื“ื ื• ื‘ Pair Programming ื›ื“ื™ ืœื•ื•ื“ื ืฉืœืคื—ื•ืช ืขื•ื“ ื‘ืŸ ืื“ื ืื—ื“ ื™ื›ื•ืœ ืœืงืจื•ื ืืช ืžื” ืฉื›ืชื‘ื ื•. ื”ืฆื’ื ื• ืืช ื”ื‘ืขื™ื•ืช ื•ื”ืคื™ืชืจื•ื ื•ืช ื”ืžืจื›ื–ื™ื™ื ืฉืœ ื”ืงื•ื“ ื‘ืคื•ืจื•ื ืฉืœ ื”ืฆื•ื•ืช. ืงื™ื‘ืœื ื• ืคื™ื“ื‘ืง ืžืื ืฉื™ื ืฉืœื ืงืฉื•ืจื™ื ืœืžื ื’ื ื•ื ื™ื ื”ืกืคืฆื™ืคื™ื™ื ืขืœื™ื”ื ืื ื—ื ื• ืขื•ื‘ื“ื™ื ื›ื“ื™ ืœื•ื•ื“ื ืฉื›ื•ืœื ื™ื›ื•ืœื™ื ืœืงืจื•ื ืื•ืชื ื•ืœื“ื‘ืจ ืขืœื™ื”ื. 4. ื”ืงืคื“ื ื• ืœื”ืฉืชืžืฉ ื‘ืฉืคื” ืžื ื•ืชืงืช ืœื’ื‘ื™ ื”ืงื•ื“. ื–ื” ืœื ื”"ืงื•ื“ ืฉืœื™" ืื• "ื”ืžื ื•ืข ืฉืœ ื‘ืจ", ื–ื” "ืžืžืฉืง ื”ืžืฉืชืžืฉ", ื”"ืžื ื•ืข" ืื• "ื” API". ื›ื›ืœ ืฉื ืงืคื™ื“ ืœื”ื•ืฆื™ื ืืช ื”ื›ื•ืชื‘ื™ื ืžื”ืงื•ื“ ื•ืœื”ืคื•ืš ืื•ืชื• ืœืชื•ืฆืืช ืขื‘ื•ื“ื” ืžืฉื•ืชืคืช ืฉืœ ื›ืœ ื”ืฆื•ื•ืช ื›ืš ื™ื”ื™ื” ืงืœ ื™ื•ืชืจ ืœืฉืชืฃ ืื—ืจื™ื•ืช, ืืฉืžื” ื•ื’ื ืœืฉื›ืชื‘ ื›ืฉืฆืจื™ืš. ื–ื” ืจืง ืงื•ื“. ื‘ื•ืื• ืœื ื ื™ืชืŸ ืœื• ืœื”ื—ืœื™ืฃ ืืช ื”ืชืงืฉื•ืจืช ื•ื”ืขื‘ื•ื“ื” ื”ืžืฉื•ืชืคืช ืฉืœื ื•.