Translation components API.

See the Weblate's Web API documentation for detailed description of the API.

GET /api/components/documentation/articlesvm-design_index/changes/?format=api&page=28
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "count": 1495,
    "next": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/changes/?format=api&page=29",
    "previous": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/changes/?format=api&page=27",
    "results": [
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/nb_NO/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:10.729938Z",
            "action": 0,
            "target": "",
            "id": 845861,
            "action_name": "Resource update",
            "url": "https://translate-dev.freebsd.org/api/changes/845861/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1814012/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/nl_NL/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:10.832149Z",
            "action": 59,
            "target": "",
            "id": 845862,
            "action_name": "String updated in the repository",
            "url": "https://translate-dev.freebsd.org/api/changes/845862/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/nl_NL/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:10.832178Z",
            "action": 0,
            "target": "",
            "id": 845863,
            "action_name": "Resource update",
            "url": "https://translate-dev.freebsd.org/api/changes/845863/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1814013/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/pl/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.184424Z",
            "action": 59,
            "target": "",
            "id": 845864,
            "action_name": "String updated in the repository",
            "url": "https://translate-dev.freebsd.org/api/changes/845864/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/pl/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.184453Z",
            "action": 0,
            "target": "",
            "id": 845865,
            "action_name": "Resource update",
            "url": "https://translate-dev.freebsd.org/api/changes/845865/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1814014/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/pt/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.290512Z",
            "action": 59,
            "target": "",
            "id": 845866,
            "action_name": "String updated in the repository",
            "url": "https://translate-dev.freebsd.org/api/changes/845866/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/pt/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.290543Z",
            "action": 0,
            "target": "",
            "id": 845867,
            "action_name": "Resource update",
            "url": "https://translate-dev.freebsd.org/api/changes/845867/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1814015/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/pt_BR/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.399143Z",
            "action": 59,
            "target": "",
            "id": 845868,
            "action_name": "String updated in the repository",
            "url": "https://translate-dev.freebsd.org/api/changes/845868/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/pt_BR/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.399173Z",
            "action": 0,
            "target": "",
            "id": 845869,
            "action_name": "Resource update",
            "url": "https://translate-dev.freebsd.org/api/changes/845869/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1814016/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.500865Z",
            "action": 59,
            "target": "",
            "id": 845870,
            "action_name": "String updated in the repository",
            "url": "https://translate-dev.freebsd.org/api/changes/845870/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.500895Z",
            "action": 0,
            "target": "",
            "id": 845871,
            "action_name": "Resource update",
            "url": "https://translate-dev.freebsd.org/api/changes/845871/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1814017/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/tr_TR/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.601952Z",
            "action": 59,
            "target": "",
            "id": 845872,
            "action_name": "String updated in the repository",
            "url": "https://translate-dev.freebsd.org/api/changes/845872/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/tr_TR/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.601981Z",
            "action": 0,
            "target": "",
            "id": 845873,
            "action_name": "Resource update",
            "url": "https://translate-dev.freebsd.org/api/changes/845873/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1814018/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/zh_CN/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.703420Z",
            "action": 59,
            "target": "",
            "id": 845874,
            "action_name": "String updated in the repository",
            "url": "https://translate-dev.freebsd.org/api/changes/845874/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/zh_CN/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.703449Z",
            "action": 0,
            "target": "",
            "id": 845875,
            "action_name": "Resource update",
            "url": "https://translate-dev.freebsd.org/api/changes/845875/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1814019/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/zh_TW/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.802875Z",
            "action": 59,
            "target": "",
            "id": 845876,
            "action_name": "String updated in the repository",
            "url": "https://translate-dev.freebsd.org/api/changes/845876/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/zh_TW/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.802904Z",
            "action": 0,
            "target": "",
            "id": 845877,
            "action_name": "Resource update",
            "url": "https://translate-dev.freebsd.org/api/changes/845877/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/de_DE/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.860801Z",
            "action": 44,
            "target": "",
            "id": 845878,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845878/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/el/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.863178Z",
            "action": 44,
            "target": "",
            "id": 845879,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845879/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.865776Z",
            "action": 44,
            "target": "",
            "id": 845880,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845880/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/fa/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.868667Z",
            "action": 44,
            "target": "",
            "id": 845881,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845881/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/fr/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.871326Z",
            "action": 44,
            "target": "",
            "id": 845882,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845882/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/fr_FR/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.873865Z",
            "action": 44,
            "target": "",
            "id": 845883,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845883/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.876299Z",
            "action": 44,
            "target": "",
            "id": 845884,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845884/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/it_IT/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.878848Z",
            "action": 44,
            "target": "",
            "id": 845885,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845885/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ko/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.881258Z",
            "action": 44,
            "target": "",
            "id": 845886,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845886/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/nb_NO/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.883653Z",
            "action": 44,
            "target": "",
            "id": 845887,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845887/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/nl_NL/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.886108Z",
            "action": 44,
            "target": "",
            "id": 845888,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845888/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/pl/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.888415Z",
            "action": 44,
            "target": "",
            "id": 845889,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845889/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/pt/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.890770Z",
            "action": 44,
            "target": "",
            "id": 845890,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845890/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/pt_BR/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.893134Z",
            "action": 44,
            "target": "",
            "id": 845891,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845891/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.896201Z",
            "action": 44,
            "target": "",
            "id": 845892,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845892/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/tr_TR/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.898744Z",
            "action": 44,
            "target": "",
            "id": 845893,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845893/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/zh_CN/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.901031Z",
            "action": 44,
            "target": "",
            "id": 845894,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845894/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/zh_TW/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-06-29T20:54:11.903722Z",
            "action": 44,
            "target": "",
            "id": 845895,
            "action_name": "New string to translate",
            "url": "https://translate-dev.freebsd.org/api/changes/845895/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/866666/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/nl_NL/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/tammo-jan/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/tammo-jan/?format=api",
            "timestamp": "2025-07-03T09:58:30.186310Z",
            "action": 45,
            "target": "",
            "id": 850720,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/850720/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/866666/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/nl_NL/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/tammo-jan/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/tammo-jan/?format=api",
            "timestamp": "2025-07-03T09:58:30.186642Z",
            "action": 5,
            "target": "Samenvatting",
            "id": 850721,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/850721/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/nl_NL/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-07-03T11:10:12.736646Z",
            "action": 17,
            "target": "",
            "id": 851019,
            "action_name": "Committed changes",
            "url": "https://translate-dev.freebsd.org/api/changes/851019/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811461/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:26.660114Z",
            "action": 9,
            "target": "Элементы архитектуры системы виртуальной памяти во FreeBSD",
            "id": 852299,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852299/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811467/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:26.676713Z",
            "action": 9,
            "target": "Перед тем, как перейти непосредственно к существующей архитектуре, потратим немного времени на рассмотрение вопроса о необходимости поддержки и модернизации любого длительно живущего кода. В мире программирования алгоритмы становятся более важными, чем код, и именно из-за академических корней BSD изначально большое внимание уделялось проработке алгоритмов. Внимание, уделенное архитектуре, в общем отражается на ясности и гибкости кода, который может быть достаточно легко изменен, расширен или с течением времени заменен. Хотя некоторые считают BSD \"старой\" операционной системой, те их нас, кто работает над ней, видят ее скорее системой со \"зрелым\" кодом с различными компонентами, которые были заменены, расширены или изменены современным кодом. Он развивается, и FreeBSD остается передовой системой, вне зависимости от того, насколько старой может быть часть кода. Это важное отличие, которое, к сожалению, не всеми понимается. Самой большой ошибкой, которую может допустить программист, является игнорирование истории, и это именно та ошибка, которую сделали многие другие современные операционные системы. Самым ярки примером здесь является Windows NT(R), и последствия ужасны. Linux также в некоторой степени совершил эту ошибку-достаточно, чтобы мы, люди BSD, по крайней мере по разу отпустили по этому поводу шутку. Проблема Linux заключается просто в отсутствии опыта и истории для сравнения идей, проблема, которая легко и быстро решается сообществом Linux точно так же, как она решается в сообществе BSD-постоянной работой над кодом. Разработчики Windows NT(R), с другой стороны, постоянно совершают те же самые ошибки, что были решены в UNIX(R) десятки лет назад, а затем тратят годы на их устранение. Снова и снова. Есть несколько случаев \"проработка архитектуры отсутствует\" и \"мы всегда правы, потому что так говорит наш отдел продаж\". Я плохо переношу тех, кого не учит история.",
            "id": 852300,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852300/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811468/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:26.690455Z",
            "action": 9,
            "target": "Большинство очевидной сложности архитектуры FreeBSD, особенно в подсистеме VM/Swap, является прямым следствием того, что она решает серьезные проблемы с производительностью, которые проявляются при различных условиях. Эти проблемы вызваны не плохой проработкой алгоритмов, а возникают из окружающих факторов. В любом прямом сравнении между платформами эти проблемы проявляются, когда системные ресурсы начинают истощаться. Так как я описываю подсистему VM/Swap во FreeBSD, то читатель должен всегда иметь в виду два обстоятельства:",
            "id": 852301,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852301/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811469/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:26.701852Z",
            "action": 9,
            "target": "Самым важным аспектом при проектировании производительности является то, что называется \"оптимизацией критического маршрута\". Часто случается, что оптимизация производительности дает прирост объема кода ради того, чтобы критический маршрут работал быстрее.",
            "id": 852302,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852302/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811470/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:26.712946Z",
            "action": 9,
            "target": "Четкость общей архитектуры оказывается лучше сильно оптимизированной архитектуры с течением времени. Когда как обобщенная архитектура может быть медленнее, чем оптимизированная архитектура, при первой реализации, при обобщенной архитектуре легче подстраиваться под изменяющиеся условия и чрезмерно оптимизированная архитектура оказывается непригодной.",
            "id": 852303,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852303/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811471/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:26.724318Z",
            "action": 9,
            "target": "Любой код, который должен выжить и поддаваться поддержке годы, должен поэтому быть тщательно продуман с самого начала, даже если это стоит потери производительности. Двадцать лет назад были те, кто отстаивал преимущество программирования на языке ассемблера перед программированием на языке высокого уровня, потому что первый генерировал в десять раз более быстрый код. В наши дни ошибочность этого аргумента очевидна - можно провести параллели с построением алгоритмов и обобщением кода.",
            "id": 852304,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852304/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811472/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:26.734945Z",
            "action": 9,
            "target": "Объекты VM",
            "id": 852305,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852305/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811473/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:26.746643Z",
            "action": 9,
            "target": "Лучше всего начать описание VM-системы FreeBSD с попытки взглянуть на нее с точки зрения пользовательского процесса. Каждый пользовательский процесс имеет единое, принадлежащее только ему и неразрывное адресное пространство VM, содержащее несколько типов объектов памяти. Эти объекты имеют различные характеристики. Код программы и ее данные являются единым файлом, отображаемым в память (это выполняющийся двоичный файл), однако код программы доступен только для чтения, когда как данные программы размещаются в режиме копирования-при-записи. BSS программы представляет собой всего лишь выделенную область памяти, заполненную, если это требовалось, нулями, что называется обнулением страниц памяти по требованию. Отдельные файлы могут также отображаться в адресное пространство, именно так работают динамические библиотеки. Такие отображения требуют изменений, чтобы оставаться принадлежащими процессу, который их выполнил. Системный вызов fork добавляет переводит проблему управления VM полностью в новую плоскость, вдобавок к уже имеющимся сложностям.",
            "id": 852306,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852306/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811474/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:26.758138Z",
            "action": 9,
            "target": "Иллюстрирует сложность страница данных двоичной программы (которая является страницей копируемой-при-записи). Двоичная программа содержит секцию предварительно инициализированных данных, которая первоначально отображается непосредственно из файла программы. Когда программа загружается в Vm-пространство процесса, эта область сначала отображается в память и поддерживается бинарным файлом программы, позволяя VM-системе освобождать/повторно использовать страницу, а потом загружать ее снова из бинарного файла. Однако в момент, когда процесс изменяет эти данные, VM-система должна сделать копию страницы, принадлежащую только этому процессу. Так как эта копия была изменена, то VM-система не может больше освобождать эту страницу, так как впоследствии ее невозможно будет восстановить.",
            "id": 852307,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852307/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811475/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:26.769683Z",
            "action": 9,
            "target": "Вы тут же заметите, что то, что сначала было простым отображением файла в память, становится гораздо более сложным предметом. Данные могут модифицироваться постранично, когда как отображение файла выполняется для многих страниц за раз. Сложность еще более увеличивается, когда процесс выполняет вызов fork. При этом порождаются два процесса-каждый со с собственным адресным пространством, включающим все изменения, выполненные исходным процессом до вызова функции `fork()`. Было бы глупо для VM-системы делать полную копию данных во время вызова `fork()`, так как весьма вероятно, что один из двух процессов будет нужен только для чтения из той страницы, что позволяет использование исходной страницы. То, что было страницей, принадлежащей только процессу, сделается снова страницей, копируемой при записи, так как каждый из процессов (и родитель, и потомок) полагают, что их собственные изменения после разветвления будут принадлежать только им, и не затронут родственный процесс.",
            "id": 852308,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852308/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811476/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:26.780876Z",
            "action": 9,
            "target": "FreeBSD управляет всем этим при помощи многоуровневой модели VM-объектов. Исходный файл с двоичной программой переносится на самый нижний уровень объектов VM. Уровень страниц, копируемых при записи, находится выше него, и хранит те страницы, которые были скопированы из исходного файла. Если программа модифицирует страницы данных, относящиеся к исходному файлу, то система VM обнаруживает это и переносит копию этой страницы на более высокий уровень. Когда процесс разветвляется, добавляются новые уровни VM-объектов. Это можно показать на простом примере. Функция `fork()` является общей операцией для всех систем *BSD, так что в этом примере будет рассматриваться программа, которая запускается, а затем разветвляется. Когда процесс запускается, VM-система создает некоторый уровень объектов, обозначим его A:",
            "id": 852309,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852309/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811479/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:26.791622Z",
            "action": 9,
            "target": "A соответствует файлу-по необходимости страницы памяти могут высвобождаться и подгружаться с носителя файла. Подгрузка с диска может потребоваться программе, однако на самом деле мы не хотим, чтобы она записывалась обратно в файл. Поэтому VM-система создает второй уровень, B, который физически поддерживается дисковым пространством подкачки:",
            "id": 852310,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852310/?format=api"
        }
    ]
}