javascript-trap.html (17571B)
1 <!--#set var="PO_FILE" 2 value='<a href="/philosophy/po/javascript-trap.lt.po"> 3 https://www.gnu.org/philosophy/po/javascript-trap.lt.po</a>' 4 --><!--#set var="ORIGINAL_FILE" value="/philosophy/javascript-trap.html" 5 --><!--#set var="DIFF_FILE" value="/philosophy/po/javascript-trap.lt-diff.html" 6 --><!--#set var="OUTDATED_SINCE" value="2016-03-27" --> 7 8 <!--#include virtual="/server/header.lt.html" --> 9 <!-- Parent-Version: 1.77 --> 10 11 <!-- This file is automatically generated by GNUnited Nations! --> 12 <title>JavaScript spąstai</title> 13 14 <!--#include virtual="/philosophy/po/javascript-trap.translist" --> 15 <!--#include virtual="/server/banner.lt.html" --> 16 <!--#include virtual="/server/outdated.lt.html" --> 17 <h2>JavaScript spąstai</h2> 18 19 <p>Pagal <a href="http://www.stallman.org/">Richard Stallman</a></p> 20 21 <p><strong>Jūs galbūt šito nesuvokdami kiekvieną dieną savo kompiuteryje 22 leidžiate nelaisvas programas – per savo tinklo naršyklę.</strong></p> 23 24 <p>Laisvos programinės įrangos bendruomenėje, idėja, kad nelaisvos programos 25 išnaudoja jų naudotojus yra žinoma. Kai kurie iš mūsų visiškai atsisakome 26 įdiegti nuosavybinę programinę įrangą ir daug kitų nelaisvę laiko smūgiu 27 prieš tą programą. Daug naudotojų žino, kad ši problema taikoma 28 programiniams priedams, kuriuos naršyklės siūlo įdiegti, kadangi jie gali 29 būti laisvi arba nelaisvi.</p> 30 31 <p>Bet naršyklės leidžia kitas nelaisvas programas, apie kurias jos jūsų 32 neatsiklausia ar jums net neužsimena – programos, kurias turi, ar 33 nurodo į, tinklapiai. Šios programos dažniausiai yra parašytos JavaScript, 34 nors kitos kalbos taip pat yra naudojamos.</p> 35 36 <p>JavaScript (oficialiai vadinama ECMAScript, bet mažuma naudoja tą 37 pavadinimą) kažkada buvo naudojama mažiems tinklapių padekoravimams, tokiems 38 kaip miela, bet neesminė navigacija ir vaizdavimo ypatybės. Šiuos buvo 39 priimtina laikyti paprastais HTML žymėjimo išplėtimais, o ne kaip tikrą 40 programinę įrangą; jie reikšmingos problemos nesudarė.</p> 41 42 <p>Daug svetainių vis dar naudoja JavaScript tokiu būdu, bet kai kurios ją 43 naudoja svarbioms programoms, kurios atlieka didelius darbus. Pavyzdžiui, 44 Google Docs į jūsų mašiną bando atsiųsti JavaScript programą, kuri apima 45 pusę megabaito, kompaktiška forma, kurią mes galėtume pavadinti 46 Užslėpt-scenarijumi, nes joje nėra jokių komentarų ir vos keli tarpai, ir 47 metodų pavadinimai yra vienos raidės ilgio. Programos šaltinio kodas yra 48 pageidautina forma jos modifikavimui; kompaktiškas kodas nėra šaltinio kodas 49 ir tikrasis šitos programos šaltinio kodas naudotojui nėra prieinamas.</p> 50 51 <p>Naršyklės įprastai jums nepraneša kada jos įkrauna JavaScript programas. 52 Kai kurios naršyklės turi būdą JavaScript išjungti visiškai, bet net jei 53 jums ši problema yra žinoma, jums kiltų daug problemų identifikuoti tas 54 nepaprastas, nelaisvas programas ir jas užblokuoti. Tačiau, net laisvos 55 programinės įrangos bendruomenėje dauguma naudotojų nežino apie šią 56 problemą; naršyklių tyla linksta ją nuslėpti.</p> 57 58 <p>Yra įmanoma JavaScript programą išleisti laisva programine įranga, šaltinio 59 kodą platinant pagal laisvos programinės įrangos licenciją. Jei ta programa 60 yra savarankiška – jei jos funkcionavimas ir paskirtis yra 61 nepriklausomi nuo puslapio, kuriame ji patalpinta – tai yra gerai; jūs 62 ją galite nukopijuoti į failą savo mašinoje, jį modifikuoti ir atverti tą 63 failą su naršykle jo leidimui. Bet tai yra neįprastas atvejis.</p> 64 65 <p>Įprastu atveju, JavaScript programos yra numatytos veikti su konkrečiu 66 puslapiu ar svetaine ir to puslapio ar svetainės funkcionavimas priklauso 67 nuo jų. Tada iškyla dar viena problema: net jei programos šaltinis yra 68 prieinamas, naršyklės nesiūlo būdo leisti jūsų modifikuotą versiją vietoje 69 originalios, kai lankomasi tame puslapyje ar svetainėje. Šis efektas yra 70 palyginamas su tivoizacija<sup><a href="#TransNote1">1</a></sup>, nors iš 71 principo ir ne tiek sunkus įveikti.</p> 72 73 <p>JavaScript nėra vienintelė tinklo svetainių naudojama kalba naudotojui 74 atsiųstoms programoms. Flash palaiko programavimą per išplėstos JavaScript 75 variantą; jei mes kada nors turėsime pakankamai išbaigtą, laisvą Flash 76 grotuvą, mums reikės spręsti nelaisvų Flash programų problemą. Silverlight 77 atrodo tikėtina sukurs problemą panašią į Flash, tik blogesnę, kadangi 78 Microsoft ją naudoja kaip platformą nelaisvai kodavimo ir dekodavimo 79 programinei įrangai. Laisvas Silverlight pakaitalas neatlieka darbo laisvam 80 pasauliui, nebent jis įprastai pristatomas su pakaitine laisva kodavimo ir 81 dekodavimo programine įranga.</p> 82 83 <p>Java programėlės taip pat leidžiamos naršyklėje ir kelia panašias 84 problemas. Bendrai, bet kokio tipo programėlės sistema kelia šio tipo 85 problemą. Laisvos vykdymo aplinkos programėlei turėjimas mus priartina tik 86 tiek, kad susidurtume su ta problema.</p> 87 88 <p>Teoriškai yra įmanoma programuoti su HTML ir CSS, bet praktikoje šis 89 gebėjimas yra ribotas ir nepatogus; net kažkokio mažmožio padarymas yra 90 įspūdingas įkirtis. Tokios programos turėtų būti laisvos, bet CSS nėra 91 rimta problema naudotojų laisvei 2016 m.</p> 92 93 <p>Išsivystė stiprus judėjimas, kuris tinklo svetaines kviečia komunikuoti tik 94 per formatus ir protokolus, kurie yra laisvi (kai kurie sako 95 „atviri“); taip sakant, kurių dokumentacija yra paviešinta ir 96 kuriuos bet kas yra laisvas įgyvendinti. Su programų tinklapiuose buvimu, 97 tas kriterijus yra būtinas, bet nepakankamas. Pati JavaScript, kaip 98 formatas, yra laisva ir JavaScript naudojimas tinklo svetainėje nebūtinai 99 yra blogai. Tačiau, kaip mes pamatėme anksčiau, jis taip pat nebūtinai yra 100 gerai. Kai svetainė naudotojui persiunčia programą, nėra pakankama tai 101 programai būti parašyta dokumentuota ir aiškia kalba; ta programa turi būti 102 laisva, irgi. „Tik laisvos programos persiųstos naudotojui“ 103 privalo tapti to kriterijaus dalimi tinkamam tinklo svetainių elgesiui.</p> 104 105 <p>Tyliai įkraunant ir leidžiant nelaisvas programas yra viena iš keleto 106 problemų, iškeltų „tinklo aplikacijomis“. Terminas 107 „tinklo aplikacija“ buvo suprojektuotas nepaisyti fundamentalaus 108 skirtumo tarp programinės įrangos pristatytos naudotojams ir programinės 109 įrangos leidžiamos serveryje. Jis gali reikšti naršyklėje leidžiamą 110 specializuotą klientinę programą; jis gali reikšti specializuotą serverinę 111 programinę įrangą; jis gali reikšti specializuotą klientinę programą, kuri 112 iš vien veikia su specializuota serverine programine įranga. Kliento ir 113 serverio pusės kelia skirtingas etines problemas, net jei jos yra taip 114 glaudžiai integruotos, kad jos argumentuotai sudaro vienos programos dalis. 115 Šis straipsnis nagrinėja tik kliento pusės programinės įrangos problemą. 116 Mes nagrinėjame serverio problemą atskirai.</p> 117 118 <p>Praktiniais terminais, kaip mes galime elgtis su nelaisvų JavaScript 119 programų tinklo svetainėse problema? Pirmas žingsnis yra išvengti jos 120 leidimo.</p> 121 122 <p>Ką mes turime mintyje „nepaprastomis“? Tai yra laipsnio 123 reikalas, taigi, tai yra paprasto kriterijaus, kuris duoda gerus rezultatus, 124 projektavimo reikalas, o ne vieno teisingo atsakymo suradimas.</p> 125 <p> 126 Mūsų preliminari politika yra JavaScript programą laikyti nepaprasta jei:</p> 127 128 <ul> 129 <li>ji atlieka AJAX užklausą ar yra įkraunama kartu su scenarijais, kurie 130 atlieka AJAX užklausą;</li> 131 132 <li>ji įkrauna išorinius scenarijus dinamiškai ar yra įkrauta kartu su 133 scenarijais, kurie taip daro;</li> 134 135 <li>ji apibrėžia funkcijas ar metodus ir arba įkrauna išorinį scenarijų (iš 136 html), arba yra įkrauta kaip toks;</li> 137 138 <li>ji naudoja dinamines JavaScript konstrukcijas, kurias yra sunku analizuoti 139 neinterpretuojant tos programos ar yra įkrauta kartu su scenarijais, kurie 140 naudoja tokias konstrukcijas. Šios konstrukcijos yra: 141 <ul> 142 <li>eval funkcijos naudojimas;</li> 143 <li>metodų kvietimas su kvadratinių skliaustų žymėjimu;</li> 144 <li>naudojimas bet kokios kitos konstrukcijos, nei teksto grandinės raidinio, su 145 tam tikrais metodais (Obj.write, Obj.createElement, ...).</li> 146 </ul> 147 </li> 148 </ul> 149 150 <p>Kaip mes galime atskirti, kad JavaScript kodas yra laisvas? Šio straipsnio 151 pabaigoje mes siūlome konvenciją, kuria nepaprasta JavaScript programa 152 tinklapyje gali nurodyti URL kur jos šaltinio kodas randasi ir gali nurodyti 153 jo licenciją irgi, naudojant stilizuotus komentarus.</p> 154 155 <p>Pabaigai, mums reikia pakeisti laisvas naršykles tinklapiuose pastebėti ir 156 užblokuoti nepaprastą, nelaisvą JavaScript. <a 157 href="/software/librejs/">LibreJS</a> programa pastebi nelaisvą, nepaprastą 158 JavaScript jūsų lankomuose puslapiuose ir ją užblokuoja. LibreJS yra IceCat 159 ir IceWeasel (ir Firefox) priedas.</p> 160 161 <p>Naršyklės naudotojams taip pat reikia patogios priemonės nurodyti JavaScript 162 kodą naudojimui <em>vietoje</em> JavaScript tam tikrame puslapyje. (Šis 163 nurodytas kodas gali būti visiškas pakaitalas ar modifikuota laisvos 164 JavaScript programos tame puslapyje versija.) Greasemonkey yra arti 165 galėjimo šitą padaryti, bet nevisai, kadangi ji negarantuoja JavaScript kodo 166 puslapyje modifikavimo prieš tos programos vykdymo pradžią. Vietinio 167 įgaliojimo naudojimas veikia, bet jis dabar yra per daug nepatogus būti 168 realiu sprendimu. Mums reikia sukonstruoti sprendimą, kuris yra patikimas 169 ir patogus, kaip ir svetainių dalinimuisi pakeitimais. GNU projektas norėtų 170 parekomenduoti svetaines, kurios yra dedikuotos tik laisviems pakeitimams.</p> 171 172 <p>Šios ypatybės padarys įmanomu JavaScript programai įtrauktai į tinklapį būti 173 laisva realia ir praktine prasmėmis. JavaScript daugiau nebus konkreti 174 kliūtis mūsų laisvei – ne daugiau nei C ir Java dabar yra. Mes 175 galėsime atmesti ir net pakeisti nelaisvas, nepaprastas JavaScript 176 programas, lygiai taip, kaip mes atmetame ir pakeičiame nelaisvus paketus, 177 kurie yra siūlomi įdiegti įprastu būdu. Mūsų kampanija tinklo svetainėms 178 išlaisvinti jų JavaScript gali tada prasidėti.</p> 179 180 <p>Tuo tarpu, yra vienas atvejis kai yra priimtina leisti nelaisvą JavaScript 181 programą: išsiųsti nusiskundimą tinklo svetainės operatoriams, sakantį jie 182 turėtų išlaisvinti arba pašalinti JavaScript kodą toje svetainėje. Prašome 183 nedvejokite laikinai aktyvuoti JavaScript to padarymui – bet 184 prisiminkite po to ją vėl išjungti.</p> 185 186 <p><strong>Ačiū jums <a href="/people/people.html#mattlee">Matt Lee</a> ir <a 187 href="http://ejohn.org">John Resig</a> už jų pagalbą apibrėžiant mūsų 188 pasiūlytą kriterijų, ir David Parunakian už pagalbą man šią problemą 189 sužinoti.</strong></p> 190 191 <h3 id="AppendixA">A priedas: konvencija laisvų JavaScript programų išleidimui</h3> 192 193 <p>Nuorodoms į atitinkamą šaltinio kodą, mes rekomenduojame</p> 194 <pre dir="ltr"> 195 196 // @source: 197 198 </pre> 199 200 <p>užbaigiant su URL. Tai patenkina GNU GPL reikalavimą platinti šaltinio 201 kodą. Jei tas šaltinis yra kitoje svetainėje, jūs privalote pasirūpinti <a 202 href="/licenses/gpl-faq.html#SourceAndBinaryOnDifferentSites">tinkamu to 203 sutvarkymu</a>. Šaltinio kodas programai būti laisva yra būtinas. 204 </p> 205 206 <p>Įkelto į puslapį JavaScript kodo licencijos parodymui, mes rekomenduojame 207 tos licencijos pastabos patalpinimą tarp dviejų tokios formos pastabų:</p> 208 <pre dir="ltr"> 209 <!--TRANSLATORS: Do not translate these license notices. The <pre> 210 211 elements have dir="ltr" explicitly set to cater for RTL languages.--> 212 213 @licstart The following is the entire license notice for the 214 JavaScript code in this page. 215 ... 216 @licend The above is the entire license notice 217 for the JavaScript code in this page. 218 219 </pre> 220 <p>Žinoma, visa tai turėtų būti patalpinta keleto eilučių komentare.</p> 221 222 <p><a href="/licenses/gpl.html">GNU GPL</a>, kaip daug kitų laisvos programinės 223 įrangos licencijų, reikalauja licencijos kopijos platinimo su abejomis 224 – šaltinio ir dvejetaine, programos formomis. Tačiau, GNU GPL yra 225 pakankamai ilga, jog jos įtraukimas puslapyje su JavaScript programa gali 226 būti nepatogus. Jūs galite tą reikalavimą pašalinti, kodui, kuriam jūs 227 turite autorių teises, su licencijos pastaba, kaip ši:</p> 228 <pre dir="ltr"> 229 230 Copyright (C) YYYY Developer 231 232 The JavaScript code in this page is free software: you can 233 redistribute it and/or modify it under the terms of the GNU 234 General Public License (GNU GPL) as published by the Free Software 235 Foundation, either version 3 of the License, or (at your option) 236 any later version. The code is distributed WITHOUT ANY WARRANTY; 237 without even the implied warranty of MERCHANTABILITY or FITNESS 238 FOR A PARTICULAR PURPOSE. See the GNU GPL for more details. 239 240 As additional permission under GNU GPL version 3 section 7, you 241 may distribute non-source (e.g., minimized or compacted) forms of 242 that code without the copy of the GNU GPL normally required by 243 section 4, provided you include this license notice and a URL 244 through which recipients can access the Corresponding Source. 245 246 </pre> 247 248 <p>Aš dėkoju Jaffar Rumith už mano dėmesio atkreipimą į šią problemą.</p> 249 250 <h3 id="AppendixB">B priedas: laisvų JavaScript programų viešinimas esant žiniatinklio 251 administratoriumi</h3> 252 253 <p>Jei jūs esate žiniatinklio administratorius savo svetainėje dislokuojantis 254 laisvą JavaScript programinę įrangą, viešinant informaciją apie tų failų 255 licencijas ir šaltinio kodą aiškiai ir pastoviai jūsų lankytojams padeda 256 užsitikrinti, kad jie leidžia laisvą programinę įrangą, ir jums padeda 257 atitikti licencijos sąlygas.</p> 258 259 <p>Vienas metodas nurodyti licencijas yra tas vienas apibūdintas anksčiau <a 260 href="#AppendixA">A priede</a>. Antras metodas – <a 261 href="/licenses/javascript-labels.html">JavaScript licencijos tinklo 262 etiketės</a>, gali būti labiau patogus sumažintoms JavaScript kodo 263 bibliotekoms, ypatingai kai jūs jų neparašėte.</p> 264 265 <div class="translators-notes"> 266 267 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.--> 268 <h3>Vertėjo pastabos</h3> 269 <ol> 270 <li id="TransNote1">Tivoizacija (anglų k.: tivoization) yra praktika, kai 271 įrenginyje įdiegtą laisvą programinę įrangą gali pakeisti tik vienas 272 gamintojas.</li> 273 </ol></div> 274 </div> 275 276 <!-- for id="content", starts in the include above --> 277 <!--#include virtual="/server/footer.lt.html" --> 278 <div id="footer"> 279 <div class="unprintable"> 280 281 <p>Bendrus FSF ir GNU užklausimus prašome atsiųsti į <a 282 href="mailto:gnu@gnu.org"><gnu@gnu.org></a>. Taip pat, yra ir <a 283 href="/contact/">kiti būdai susisiekti</a> su FSF. Neveikiančių nuorodų ir 284 kiti pataisymai arba pasiūlymai gali būti atsiųsti į <a 285 href="mailto:webmasters@gnu.org"><webmasters@gnu.org></a>.</p> 286 287 <p> 288 <!-- TRANSLATORS: Ignore the original text in this paragraph, 289 replace it with the translation of these two: 290 291 We work hard and do our best to provide accurate, good quality 292 translations. However, we are not exempt from imperfection. 293 Please send your comments and general suggestions in this regard 294 to <a href="mailto:web-translators@gnu.org"> 295 296 <web-translators@gnu.org></a>.</p> 297 298 <p>For information on coordinating and submitting translations of 299 our web pages, see <a 300 href="/server/standards/README.translations.html">Translations 301 README</a>. --> 302 Mes dirbame sunkiai ir labai stengiamės, kad pateiktume tikslius, geros 303 kokybės vertimus. Tačiau mes nesame išimtys netobulumui. Prašome siųskite 304 savo komentarus ir bendrus pasiūlymus šia prasme į <a 305 href="mailto:web-translators@gnu.org"><web-translators@gnu.org></a>.</p> 306 <p>Mūsų tinklapių vertimų koordinavimo ir pateikimo informaciją pamatykite 307 <a href="/server/standards/README.translations.html">Vertimų 308 PERSKAITYKITEMANE</a>.</p> 309 </div> 310 311 <!-- Regarding copyright, in general, standalone pages (as opposed to 312 files generated as part of manuals) on the GNU web server should 313 be under CC BY-ND 4.0. Please do NOT change or remove this 314 without talking with the webmasters or licensing team first. 315 Please make sure the copyright date is consistent with the 316 document. For web pages, it is ok to list just the latest year the 317 document was modified, or published. 318 319 If you wish to list earlier years, that is ok too. 320 Either "2001, 2002, 2003" or "2001-2003" are ok for specifying 321 years, as long as each year in the range is in fact a copyrightable 322 year, i.e., a year in which the document was published (including 323 being publicly visible on the web or in a revision control system). 324 325 There is more detail about copyright years in the GNU Maintainers 326 Information document, www.gnu.org/prep/maintain. --> 327 <p>Copyright © 2009-2013, 2016 Richard Stallman</p> 328 329 <p>Šiam puslapiui taikoma <a rel="license" 330 href="http://creativecommons.org/licenses/by-nd/4.0/deed.lt">Creative 331 Commons Priskyrimas - Jokių išvestinių darbų 4.0 Tarptautinė licencija</a>.</p> 332 333 <!--#include virtual="/server/bottom-notes.lt.html" --> 334 <div class="translators-credits"> 335 336 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.--> 337 </div> 338 339 <p class="unprintable"><!-- timestamp start --> 340 Atnaujinta: 341 342 $Date: 2016/11/18 07:32:45 $ 343 344 <!-- timestamp end --> 345 </p> 346 </div> 347 </div> 348 </body> 349 </html>