taler-merchant-demos

Python-based Frontends for the Demonstration Web site
Log | Files | Refs | Submodules | README | LICENSE

javascript-trap.html (22279B)


      1 <!--#set var="PO_FILE"
      2  value='<a href="/philosophy/po/javascript-trap.uk.po">
      3  https://www.gnu.org/philosophy/po/javascript-trap.uk.po</a>'
      4  --><!--#set var="ORIGINAL_FILE" value="/philosophy/javascript-trap.html"
      5  --><!--#set var="DIFF_FILE" value="/philosophy/po/javascript-trap.uk-diff.html"
      6  --><!--#set var="OUTDATED_SINCE" value="2018-03-31" -->
      7 
      8 <!--#include virtual="/server/header.uk.html" -->
      9 <!-- Parent-Version: 1.84 -->
     10 
     11 <!-- This file is automatically generated by GNUnited Nations! -->
     12 <title>Пастка JavaScript</title>
     13 
     14 <!--#include virtual="/philosophy/po/javascript-trap.translist" -->
     15 <!--#include virtual="/server/banner.uk.html" -->
     16 <!--#include virtual="/server/outdated.uk.html" -->
     17 <h2>Пастка JavaScript</h2>
     18 
     19 <p><a href="http://www.stallman.org/">Річард Столмен</a></p>
     20 
     21 <p><strong>Не виключено, що ви запускаєте невільні програми на своєму
     22 комп'ютері кожен день, навіть не усвідомлюючи цього&nbsp;&nbsp; з вашого
     23 браузера.</strong></p>
     24 
     25 <!-- any links that used to point to the appendices should point to
     26      free-your-javascript.html instead.  -->
     27 <blockquote>
     28 <p>Веб-майстри: існує <a
     29 href="/software/librejs/free-your-javascript.html">декілька способів вказати
     30 ліцензію програми на JavaScript</a> на сайті.</p>
     31 </blockquote>
     32 
     33 <p>Спільнота вільного програмного забезпечення добре знайома з ідеєю, що
     34 невільні програми несправедливі стосовно користувачів. Деякі з нас захищають
     35 нашу свободу, відкидаючи всякі невільні програми на наших
     36 комп'ютерах. Багато інші вважають закритість програми серйозним недоліком.</p>
     37 
     38 <p>Багатьом користувачам відомо, що це питання стосується модулів, які браузери
     39 пропонують встановити, бо вони можуть бути вільними або невільними. Але
     40 існують інші невільні програми, які браузери виконують, навіть не питаючи
     41 вас і не кажучи вам про це&nbsp;&nbsp;це програми, на які посилаються або
     42 які містять сторінки сайту. Ці програми найчастіше написані на мові
     43 JavaScript, хоча використовуються й інші мови.</p>
     44 
     45 <p>JavaScript (офіційно званий &ldquo;ECMAScript&rdquo;, але мало хто вживає цю
     46 назву) колись застосовували для дрібних надмірностей на сторінках Інтернету,
     47 таких, як цікаві, але несуттєві деталі відображення і навігації. Було
     48 допустимо розглядати їх просто як доповнення до розмітки HTML, а не як
     49 справжні програми; вони не становили значущої теми  для обговорення. </p>
     50 
     51 <p>Багато сайтів досі використовують JavaScript таким чином, але деякі
     52 застосовують його для великих програм, які вирішують серйозні
     53 завдання. Наприклад, &ldquo;Google Docs&rdquo; встановлює на вашій машині
     54 програму на JavaScript, що займає півмегабайта в стислому вигляді, який ми
     55 називаємо &ldquo;Obfuscript&rdquo; (заплутаний сценарій), тому що там немає
     56 коментарів і майже немає пропусків, а назви методів складаються з однієї
     57 літери. Вихідний текст програми&nbsp;&nbsp; це форма, бажана для зміни
     58 програми; стиснутий текст не є вихідним кодом, і справжній вихідний код
     59 недоступний користувачеві.</p>
     60 
     61 <p>Багато з цих програм не тільки невільні, вони ще й шкідливі, бо що <a
     62 href="http://github.com/w3c/fingerprinting-guidance/issues/8">шпигують за
     63 користувачем</a>.</p>
     64 
     65 <p>Браузери зазвичай не повідомляють вам про те, що вони завантажують програми
     66 на JavaScript. В деяких браузерах є спосіб повністю вимкнути JavaScript, але
     67 навіть якщо ви знайомі з цією проблемою, вам було б достатньо важко
     68 розпізнати змістовні невільні програми і заблокувати їх. Однак навіть у
     69 спільноті вільного програмного забезпечення більшість користувачів не знає
     70 про цю проблему; мовчання браузерів не виставляє її напоказ.</p>
     71 
     72 <p>Є можливість зробити програму на JavaScript вільною, поширюючи вихідний код
     73 за ліцензією вільних програм. Якщо програма самостійна&nbsp;&mdash; якщо її
     74 робота і призначення не залежать від сторінки, на якій вона
     75 використовується&nbsp;&nbsp; чудово; ви можете зберегти її на своїй машині,
     76 змінити її і відкрити в браузері, щоб працювати з нею. Але так зазвичай не
     77 роблять.</p>
     78 
     79 <p>Зазвичай програми на JavaScript призначені для роботи з конкретною сторінкою
     80 або конкретним сайтом, а робота сторінки залежить від цих програм. Тоді
     81 постає інша проблема: навіть якщо вихідний текст програми доступний,
     82 браузери не пропонують способу працювати зі зміненою вами версією замість
     83 вихідної, коли ви відвідуєте цей сайт. Цей ефект можна порівняти з
     84 тівоїзацією, хоча його в принципі не так важко подолати.</p>
     85 
     86 <p>JavaScript&nbsp;&mdash; не єдина мова, на якій написані програми, що
     87 передаються з сайтів користувачеві. Flash підтримує програмування за
     88 допомогою розширеного варіанту мови JavaScript; якщо у нас буде хоча б
     89 досить повноцінний вільний програвач Flash, нам буде необхідно вирішувати
     90 проблему невільних програм на Flash. Silverlight, здається, створює
     91 проблеми, схожі з Flash, тільки ще гірші, бо Microsoft застосовує його як
     92 базу для невільних кодеків. Вільна заміна Silverlight не вирішить проблему
     93 для вільного світу, якщо разом з нею не будуть поставлятися вільні заміни
     94 кодеків.</p>
     95 
     96 <p>Аплети на мові Java теж виконуються в браузері і призводять до схожих
     97 проблем. Взагалі кажучи, будь-яка система аплетів призводить до проблем
     98 цього роду. Наявність вільного середовища для виконання аплетів приводить
     99 нас тільки до постановки цього питання.</p>
    100 
    101 <p>Теоретично можливо програмувати на HTML і CSS, але на практиці ці можливості
    102 обмежені, це незручно; для кожної крихти вимагається неабияка
    103 майстерність. Такі програми повинні бути вільні, але на&nbsp;2016&nbsp;рік
    104 CSS не становить серйозної проблеми для користувачів.</p>
    105 
    106 <p>Виник потужний рух, який закликає застосовувати на сайтах тільки вільні
    107 (деякі кажуть &ldquo;відкриті&rdquo;) формати і протоколи, тобто ті,
    108 документація на які опублікована і які кожен вільний реалізувати. При
    109 наявності програм на сторінках сайтів це умова необхідна, але не
    110 достатня. Сам по собі JavaScript вільний як формат, і коли його застосовують
    111 на сайті, це не обов'язково погано. Однак, як ми бачили вище, цього не
    112 завжди достатньо. Коли сайт передає програму користувачеві, недостатньо, щоб
    113 програма була написана на документованій мові, яка не викликає труднощів
    114 мовою&nbsp;&nbsp; ця програма теж повинна бути вільна. &ldquo;Користувачу
    115 передаються тільки вільні програми - це повинно стати частиною критерію
    116 коректної поведінки сайтів.</p>
    117 
    118 <p>Мовчазне завантаження та виконання невільних програм&nbsp;&mdash; одна з
    119 кількох проблем, що порушуються &ldquo;веб-додатками&rdquo;. Термін
    120 &ldquo;веб-додаток&rdquo; був створений, щоб стерти принципову відмінність
    121 між програмами, які передають користувачам, і програмами, які працюють на
    122 сервері. Він може позначати особливу клієнтську програму, яку виконує
    123 браузер; він може позначати особливу серверну програму; він може позначати
    124 особливу клієнтську програму, яка працює поряд із особливою серверною
    125 програмою. Клієнтська і серверна сторони зачіпають різні етичні питання,
    126 навіть якщо вони так тісно пов'язані, що можна стверджувати, що вони
    127 представляють собою частини однієї програми. Ця стаття розглядає тільки
    128 проблему програм на клієнтській стороні. Проблему серверної сторони ми
    129 розглядаємо окремо.</p>
    130 
    131 <p>Як на практиці ми можемо вирішувати проблему нетривіальних невільних програм
    132 на мові  JavaScript на сайтах? Перший крок&nbsp;&nbsp; уникати їх виконання.</p>
    133 
    134 <p>Що ми розуміємо під &ldquo;нетривіальним&rdquo;? Це поняття широке, тому це
    135 питання створення простого критерію, що дає хороші результати, а не пошук
    136 єдиної вірної відповіді.</p>
    137 <p>
    138 Ми пропонуємо використовувати правило, згідно якого програма на JavaScript
    139 нетривіальна, якщо:</p>
    140 
    141 <ul>
    142   <li>вона виконує запити AJAX або завантажується з програмами, які виконують
    143 запити AJAX, </li>
    144 
    145   <li>вона динамічно завантажує зовнішні програми або завантажується з
    146 програмами,які це роблять, </li>
    147 
    148   <li>вона визначає функції або методи і завантажує зовнішню програму (зHTML), або
    149 сама завантажується як така, </li>
    150   
    151   <li>вона застосовує динамічні конструкції, які важко аналізувати без
    152 інтерпретації програми або завантажується з програмами, які застосовують
    153 такі конструкції. До цих конструкцій відносяться: 
    154     <ul>
    155       <li>застосування функції <code>eval</code>,</li>
    156       <li>виклик методів із застосуванням нотації квадратних дужок, </li>
    157       <li>застосування будь-якої конструкції, крім рядкового літерала, з
    158 певнимиметодами (Obj.write, Obj.createElement, ...).</li>
    159     </ul>
    160   </li>
    161 </ul>
    162 
    163 <p>Як ми дізнаємося, чи вільні програми на JavaScript? <a
    164 href="/licenses/javascript-labels.html">У цій статті</a> ми пропонуємо
    165 метод, за яким нетривіальна програма на мові JavaScript на сторінці сайту
    166 може вказати адресу, де знаходиться її вихідний текст, а також зазначити
    167 ліцензію за допомогою стилізованих коментарів.</p>
    168 
    169 <p>Нарешті, нам потрібно змінити вільні браузери так, щоб вони виявляли і
    170 блокували невільні нетривіальні програми на мові JavaScript на сторінках
    171 сайтів. Програма <a href="/software/librejs/">LibreJS</a> виявляє невільні
    172 нетривіальні програми на JavaScript на сторінках, які ви відвідуєте, і
    173 блокує їх. LibreJS&nbsp;&mdash; це доповнення до IceCat, а також доступна як
    174 доповнення до Firefox.</p>
    175 
    176 <p>Користувачам браузера потрібен також зручний механізм для вказівки програм,
    177 які потрібно використовувати <em>замість</em> програм на певній
    178 сторінці. (Зазначені програми можуть бути повною заміною або тільки зміненою
    179 версією вільних програм з тієї сторінки.) Greasemonkey наближається до
    180 цього, але не зовсім, тому що не гарантує, що програма зі сторінки буде
    181 змінена перед тим, як ця програма починає виконуватися. Можна
    182 використовувати локальний проксі-сервер, але це дуже непрактично для
    183 реального вирішення. Нам потрібно побудувати рішення, яке буде надійним і
    184 зручним, так само як і сайти для обміну модифікаціями. Проект GNU хотів би
    185 рекомендувати сайти, виділені тільки для вільних змін.</p>
    186 
    187 <p>Ці особливості будуть дозволяти програмі на JavaScript зі сторінок сайту
    188 бути по-справжньому вільною у практичному сенсі. JavaScript більше не буде
    189 особливою перешкодою на шляху до нашої свободи&nbsp;&mdash; не більше, ніж C
    190 і Java зараз. Ми зможемо відкидати і навіть замінювати невільні нетривіальні
    191 програми на мові JavaScript точно так само, як ми відкидаємо і замінюємо
    192 невільні пакети, запропоновані для встановлення звичайним чином. Тоді ми
    193 зможемо почати кампанію по звільненню JavaScript на сайтах.</p>
    194 
    195 <p>А поки виконувати невільну програму на JavaScript допустимо в одному
    196 випадку: якщо це потрібно, щоб надіслати скаргу операторам сайту і
    197 повідомити їм, що їм слід звільнити або видалити програми на JavaScript з
    198 цього сайту. Будь ласка, сміливо вмикайте тимчасово JavaScript, щоб зробити
    199 це&nbsp;&mdash; але не забудьте вимкнути його після цього. </p>
    200 
    201 <!-- any links that used to point to the appendices should point to
    202      free-your-javascript.html instead.  -->
    203 <blockquote>
    204 <p>Веб-майстри: існує <a
    205 href="/software/librejs/free-your-javascript.html">декілька способів вказати
    206 ліцензію програми на JavaScript</a> на сайті.</p>
    207 </blockquote>
    208 
    209 <p><strong>Подяки:</strong> Безмежно вдячний <a
    210 href="/people/people.html#mattlee">Мету Лі</a> та <a
    211 href="http://ejohn.org">Джону Резіку</a> за їхню допомогу у визначенні
    212 запропонованого нами критерію, і Дейвіду Парунакяну, який допоміг звернути
    213 мою увагу на цю проблему.</p>
    214 
    215 <div class="translators-notes">
    216 
    217 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->
    218  </div>
    219 </div>
    220 
    221 <!-- for id="content", starts in the include above -->
    222 <!--#include virtual="/server/footer.uk.html" -->
    223 <div id="footer">
    224 <div class="unprintable">
    225 
    226 <p>Будь ласка, надсилайте загальні запити фонду та GNU за адресою <a
    227 href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>. Наявні також <a
    228 href="/contact/">інші способи зв'язку</a> з фондом. Звіти про непрацюючі
    229 посилання і інші виправлення чи пропозиції можна надсилати за адресою <a
    230 href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>
    231 
    232 <p>
    233 <!-- TRANSLATORS: Ignore the original text in this paragraph,
    234         replace it with the translation of these two:
    235 
    236         We work hard and do our best to provide accurate, good quality
    237         translations.  However, we are not exempt from imperfection.
    238         Please send your comments and general suggestions in this regard
    239         to <a href="mailto:web-translators@gnu.org">
    240 
    241         &lt;web-translators@gnu.org&gt;</a>.</p>
    242 
    243         <p>For information on coordinating and submitting translations of
    244         our web pages, see <a
    245         href="/server/standards/README.translations.html">Translations
    246         README</a>. -->
    247 Ми намагалися зробити цей переклад точним та якісним, але виключити
    248 можливість помилки ми не можемо. Надсилайте, будь ласка, свої зауваження і
    249 пропозиції щодо перекладу за адресою <a
    250 href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>.
    251 </p><p>Відомості з координації та пропозицій перекладів наших статей див. у
    252 <a href="/server/standards/README.translations.html">&ldquo;Посібнику з
    253 перекладу&rdquo;</a>.</p>
    254 </div>
    255 
    256 <!-- Regarding copyright, in general, standalone pages (as opposed to
    257      files generated as part of manuals) on the GNU web server should
    258      be under CC BY-ND 4.0.  Please do NOT change or remove this
    259      without talking with the webmasters or licensing team first.
    260      Please make sure the copyright date is consistent with the
    261      document.  For web pages, it is ok to list just the latest year the
    262      document was modified, or published.
    263      
    264      If you wish to list earlier years, that is ok too.
    265      Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
    266      years, as long as each year in the range is in fact a copyrightable
    267      year, i.e., a year in which the document was published (including
    268      being publicly visible on the web or in a revision control system).
    269      
    270      There is more detail about copyright years in the GNU Maintainers
    271      Information document, www.gnu.org/prep/maintain. -->
    272 <p>Copyright &copy; 2009-2013, 2016, 2017, 2018 Річард Столмен</p>
    273 
    274 <p>Ця сторінка доступна на умовах <a rel="license"
    275 href="http://creativecommons.org/licenses/by-nd/4.0/deed.uk"> ліцензії
    276 Creative Commons Attribution-NoDerivatives (<em>Із зазначенням
    277 авторства&nbsp;&mdash; Без похідних творів</em>) 4.0 Міжнародна</a>.</p>
    278 
    279 <!--#include virtual="/server/bottom-notes.uk.html" -->
    280 <div class="translators-credits">
    281 
    282 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
    283 Підтримка українського перекладу: Андрій Бандура
    284 (andriykopanytsia@gmail.com)</div>
    285 
    286 <p class="unprintable"><!-- timestamp start -->
    287 Оновлено:
    288 
    289 $Date: 2018/12/15 13:45:47 $
    290 
    291 <!-- timestamp end -->
    292 </p>
    293 </div>
    294 </div>
    295 </body>
    296 </html>