summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/hr/javascript-trap.html
blob: 5a8bef97a7f2f1f58e0464fdb289bb7c0d0eaf7e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
<!--#set var="PO_FILE"
 value='<a href="/philosophy/po/javascript-trap.hr.po">
 https://www.gnu.org/philosophy/po/javascript-trap.hr.po</a>'
 --><!--#set var="ORIGINAL_FILE" value="/philosophy/javascript-trap.html"
 --><!--#set var="DIFF_FILE" value="/philosophy/po/javascript-trap.hr-diff.html"
 --><!--#set var="OUTDATED_SINCE" value="2015-12-31" -->

<!--#include virtual="/server/header.hr.html" -->
<!-- Parent-Version: 1.77 -->

<!-- This file is automatically generated by GNUnited Nations! -->
<title>Zamka JavaScripta</title>

<!--#include virtual="/philosophy/po/javascript-trap.translist" -->
<!--#include virtual="/server/banner.hr.html" -->
<!--#include virtual="/server/outdated.hr.html" -->
<h2>Zamka JavaScripta</h2>

<p>napisao <a href="http://www.stallman.org/">Richard Stallman</a></p>

<p><strong>Možda pokrećete neslobodne programe na svojem računalu svaki dan, a
da toga niste ni svjesni&mdash;kroz vaš internet preglednik.</strong></p>

<p>U zajednici slobodnog softvera je poznato da neslobodni programi
maltretiraju svoje korisnike. Neki od nas u potpunosti odbijaju instalaciju
vlasničkog softvera, a mnogi drugi smatraju neslobodu udarom na
program. Mnogi korisnici su svjesni da se taj problem odnosi i na priključke
koje preglednici nude za instalaciju, koji mogu biti slobodni ili
neslobodni.</p>

<p>Međutim, preglednici pokreću i druge neslobodne programe pri čijem
pokretanju vas ne pitaju za dopuštenje, ili vam čak ni ne govore za
njih&mdash;to su programi koje internetske stranice sadrže ili imaju
poveznicu na njih. Ti programi su najčešće napisani u JavaScriptu, iako se
koriste i drugi jezici.</p>

<p>JavaScript (službeno zvan ECMAScript, ali samo nekolicina koristi to ime) je
nekoć bio korišten za manje ukrase u internetskim strancima, za slatke ali
nebitne izbornike i značajke prikaza. Bilo je prihvatljivo to smatrati pukim
proširenjima HTML oznaka, radije nego pravi softver; nisu tvorili značajan
problem.</p>

<p>Mnoge lokacije još uvijek koriste JavaScript na taj način, ali neke ga
koriste za značajne programe koji rade veliki posao. Na primjer, Google Docs
presnimi na vaše računalo JavaScript program veličine pola megabajta u
kompaktnom obliku, koji možemo nazvati <i>Obfuscript</i><sup><a
href="#TransNote1">1</a></sup> zato jer nema komentara i gotovo ništa
praznih znakova,a imena metoda se sastoje od jednog slova. Izvorni kod
programa je poželjan oblik za njegovu izmjenu; kompaktni kod nije izvorni
kod, i pravi izvorni kod ovoga programa nije dostupan korisniku.</p>

<p>Obično vas preglednik ne obavještava kada učitava programe pisane u
JavaScriptu. U većini preglednika postoji način da se JavaScript u cijelosti
isključi, ali niti jedan od njih ne može provjeriti jesu li programi pisani
u JavaScript ne-trivijalni i neslobodni. Čak i ako ste svjesni ovoga
problema, trebao bi vam poveliki trud da identificirate i tada blokirate te
programe. Međutim, čak i u zajednici slobodnog softvera većina korisnika
nije svjesna ovoga problema; šutnja preglednika vodi prema prikrivanju toga.</p>

<p>Moguće je objaviti program pisan u JavaScriptu kao slobodan softver -
distribucijom izvornog koda pod licencom slobodnog softvera. Međutim, iako
je izvorni kod programa dostupan, ne postoji lagani način da pokrenete svoju
izmijenjenu inačicu umjesto originala. Sadašnji slobodni preglednici ne nude
mogućnost pokretanja vaše vlastite izmijenjene inačice umjesto one koja je
pružena na stranici. Efekt je usporediv sa tivoizacijom, iako ne toliko
težak da se prebrodi.</p>

<p>JavaScript nije jedini jezik kojeg internetske lokacije koriste za programe
poslane korisniku. Flash podržava programiranje kroz proširenu varijantu
JavaScripta. Morat ćemo proučiti problem Flasha da napravimo prikladne
preporuke. Čini se da će Silverlight po svoj prilici napraviti problem
sličan Flashu, samo još gori, pošto ga Microsoftovi koristi kao platformu za
neslobodne programe za čitanje i pisanje kodiranih formata. Slobodna zamjena
za Silverlight neće izvršiti zadaću za slobodni svijet osim ako ne dođe
normalno sa slobodnim zamjenama za te programe. </p>

<p>Java apleti<sup><a href="#TransNote2">2</a></sup> se također vrte u
pregledniku, i predstavljaju slične probleme. Općenito, svaka vrsta sustava
apleta predstavlja tu vrstu problema. Posjedovanje slobodnog okruženja za
izvršavanje apleta nas vodi samo do toga da se sretnemo s tim problemom.</p>

<p>Razvio se snažan pokret koji poziva web lokacije da komuniciraju samo kroz
formate i protokole koji su slobodni (neki kažu &quot;otvoreni&quot;); to
jest, čija dokumentacija je objavljena i koje je svatko slobodan
implementirati. S prisustvom programa u web stranicama, taj kriterij je
nužan, ali ne i dovoljan. Sam JavaScript, kao format, je slobodan, i
korištenje JavaScripta na internetskoj lokaciji nije nužno loše. Međutim,
kako smo vidjeli iznad, nije nužno i u redu. Kada lokacija prenese program
korisniku, nije dovoljno za program da bude napisan u dokumentiranom i
neopterećenom jeziku; taj program mora biti također i slobodan. &ldquo;Samo
slobodni programi preneseni korisniku&rdquo; moraju postati dio kriterija za
ispravno ponašanje internetskih lokacija.</p>

<p>Tiho učitavanje i pokretanje neslobodnih programa je jedan od nekoliko
problema koje stvaraju &quot;web aplikacije&quot;. Termin &quot;web
aplikacija&quot; je zamišljen kako bi zanemario osnovnu distinkciju između
softvera dostavljenom korisnicima i softvera koji se pokreće na
poslužitelju. Može upućivati na specijalizirani program klijenta koji se
pokreće u pregledniku; može upućivati na specijalizirani softver
poslužitelja; može upućivati na specijalizirani program klijenta koji radi
ruku pod ruku sa specijaliziranim softverom na poslužitelju. Strana klijenta
i strana poslužitelja postavljaju različita etička pitanja, čak iako su
toliko blisko integrirani da dvojbeno oblikuju dijelove jednog
programa. Ovaj članak adresira samo pitanje softvera na strani
klijenta. Adresiramo problem poslužitelja odvojeno.</p>

<p>U praktičnim terminima, kako možemo riješiti problem neslobodnih programa
pisanih u JavaScriptu na internetskim lokacijama? Prvi korak je izbjegavanje
njihova pokretanja.</p>

<p>Što mislimo pod &quot;ne-trivijalno&quot;? Stvar je u stupnju, dakle to je
stvar dizajniranja jednostavnog kriterija koji daje dobre rezultate, radije
nego nalaženja jednog točnog odgovora.</p>
<p>
Naša probna politika je da smatramo program pisan u JavaScriptu
ne-trivijalnim ako:</p>

<ul>
  <li>radi zahtjev AJAX-u<sup><a href="#TransNote3">3</a></sup> ili je učitan
zajedno sa skriptama koji rade zahtjev AJAX-u,</li>

  <li>učitava vanjske skripte dinamički ili je učitan od strane skripata koje to
rade,</li>

  <li>definira funkcije ili metode i ili učitava vanjsku skriptu (iz HTML-a) ili
je učitan kao jedna od njih,</li>
  
  <li>koristi dinamičke JavaScript konstrukte koji su teški za analizu bez
interpretiranja programa, ili je učitan zajedno sa skriptama koje koriste
takve konstrukte. Ti konstrukti su:
    <ul>
      <li>korištenje <i>eval</i> funkcije, </li>
      <li>pozivanje metoda notacijom uglatih zagrada,</li>
      <li>korištenje bilo kojeg drugog konstrukta osim doslovnog znakovnoga niza sa
određenim metodama (Obj.write, Obj.createElement, ...).</li>
    </ul>
  </li>
</ul>

<p>Kako možemo razaznati je li kod u JavaScriptu slobodan? Na kraju ovoga
članka predlažemo konvenciju kojom ne-trivijalni program pisan u JavaScriptu
u internetskoj stranici može izjaviti URL na kojem se nalazi njegov izvorni
kod, i može također izjaviti svoju licencu, korištenjem stiliziranih
komentara.</p>

<p>Naposljetku, moramo izmijeniti slobodne preglednike da otkrivaju i blokiraju
ne-trivijalan neslobodni JavaScript u internetskim stranicama. Program <a
href="/software/librejs/">LibreJS</a> otkriva neslobodni, ne-trivijalni
JavaScript u stranicama koje posjećujete, i blokira ga. LibreJS je
priključak za IceCat i IceWeasel (i Firefox).</p>

<p>Korisnici preglednika isto trebaju i prikladne alate kako bi specificirali
JavaScript kod koji će se koristiti <em>umjesto</em> JavaScripta na
određenoj stranici. (Specificirani kod može biti potpuna zamjena, ili
izmijenjena inačica slobodnog programa pisanog u JavaScriptu na toj
stranici.) Greasemonkey ima mogućnosti za to, ali ne u potpunosti, jer ne
garantira izmjenu JavaScript koda na stranici prije nego program započne sa
izvršavanjem. Korištenje lokalnog <i>proxy</i><sup><a
href="#TransNote4">4</a></sup> poslužitelja funkcionira, ali je trenutno
previše nepogodno da bude pravo rješenje. Moramo konstruirati rješenje koje
je pouzdano i pogodno, kao i lokacije za razmjenu izmjena. Projekt GNU bi
htio preporučiti lokacije koje su posvećene samo slobodnim izmjenama.</p>

<p>Te značajke će omogućiti da program pisan u JavaScriptu uključen na web
stranici bude slobodan u stvarnom i praktičnom smislu. JavaScript više neće
biti naročita prepreka našoj slobodi&mdash;ništa više nego su to trenutno C
ili Java. Bit ćemo u mogućnosti odbiti i zamijeniti neslobodne i
ne-trivijalne programe pisane u JavaScriptu, kao što smo odbili i zamijenili
neslobodne pakete koje se nude za instalaciju na uobičajeni način. Tada može
poč eti naša kampanja da internetske lokacije oslobode svoj JavaScript.</p>

<p>U međuvremenu, postoji jedan slučaj kada je prihvatljivo pokrenuti
neslobodni program pisan u JavaScriptu: da se pošalje žalba operatorima
internetske lokacije govoreći da bi oni trebali osloboditi ili ukloniti
JavaScript kod koji je na lokaciji. Molim vas, ne oklijevajte da privremeno
omogućite JavaScript da biste to napravili&mdash;ali sjetite se da ga
onesposobite nakon toga.</p>

<p><strong>Zahvaljujem se <a href="/people/people.html#mattlee">Mattu Leeu</a>
i <a href="http://ejohn.org">Johnu Resigu</a> za njihovu pomoć u definiranju
našeg predloženog kriterija, i Davidu Parunakianu na pomoći da postanem
svjestan ovog problema.</strong></p>

<h3 id="AppendixA">Dodatak A: konvencija za objavljivanje slobodnih programa pisanih u
JavaScriptu</h3>

<p>Za reference na odgovarajući izvorni kod, preporučamo</p>
<pre dir="ltr">

    // @source:

</pre>

<p>i u nastavku URL. To zadovoljava zahtjev GNU GPL-a za distribucijom izvornog
koda. Ako je izvorni kod na nekoj drugoj lokaciji, tada morate pripaziti da
se <a
href="/licenses/gpl-faq.html#SourceAndBinaryOnDifferentSites">pobrinete za
to na ispravan način</a>. Izvorni kod je nužan da program bude slobodan.
</p>

<p>Da biste ukazali na licencu JavaScript koda umetnutog u stranicu,
preporučamo da stavite obavijest o licenci između dviju bilješki ovoga
oblika:</p>
<pre dir="ltr">
<!--TRANSLATORS: Do not translate these license notices.  The <pre>

    elements have dir="ltr" explicitly set to cater for RTL languages.-->

    @licstart  The following is the entire license notice for the 
    JavaScript code in this page.
    ...
    @licend  The above is the entire license notice
    for the JavaScript code in this page.

</pre>
<p>Naravno, sve ovo bi trebalo biti sadržano u više-linijskom komentaru.</p>

<p><a href="/licenses/gpl.html">GNU GPL</a>, kao i mnoge druge licence
slobodnog softvera, zahtijeva distribuciju kopije licence zajedno i u
izvornom kodu i u binarnom obliku programa. Međutim, GNU GPL je toliko
dugačka da uključivanje na stranicu s programom pisanom u JavaScriptu može
biti nepogodno. Možete ukloniti taj zahtjev za kod nad kojim imate autorska
prava, s ovakvom obavijesti o licenci:</p>
<pre dir="ltr">

    Copyright (C) YYYY  Developer

    The JavaScript code in this page is free software: you can
    redistribute it and/or modify it under the terms of the GNU
    General Public License (GNU GPL) as published by the Free Software
    Foundation, either version 3 of the License, or (at your option)
    any later version.  The code is distributed WITHOUT ANY WARRANTY;
    without even the implied warranty of MERCHANTABILITY or FITNESS
    FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.

    As additional permission under GNU GPL version 3 section 7, you
    may distribute non-source (e.g., minimized or compacted) forms of
    that code without the copy of the GNU GPL normally required by
    section 4, provided you include this license notice and a URL
    through which recipients can access the Corresponding Source.

</pre>

<p>Zahvaljujem Jaffaru Rumithu što mi je skrenuo pažnju na ovaj problem.</p>

<h3 id="AppendixB">Dodatak B: Objavljivanje slobodnih programa pisanih u JavaScriptu ako ste
webmaster</h3>

<p>Ako ste webmaster koji implementira slobodan softver u JavaScriptu na svojoj
lokaciji, jasno i dosljedno objavljivanje informacija o licencama tih
datoteka i o izvornom kodu pomaže vašim posjetiteljima da budu sigurni da
pokreću slobodan softver, i pomaže vama da se pridržavate uvjeta licence.</p>

<p>Jedna metoda izjavljivanja licenci je ona opisana iznad u <a
href="#AppendixA">Dodatku A</a>. Druga metoda, <a
href="/licenses/javascript-labels.html">JavaScript web oznake licence</a>,
može biti pogodnija za biblioteke umanjenog JavaScript koda, posebno ako ih
niste vi napisali.</p>

<div class="translators-notes">

<!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->
<h3>Bilješke prevoditelja</h3><ol><li id="TransNote1">Od <i>obfuscated</i>
(namjerno nerazumljiv i višeznačan) i <i>script</i> (programski kod
namijenjen izvršavanju u interpreterima).</li><li id="TransNote2">Male
aplikacije pisane u Javi koje se izvršavaju u virtualnome stroju.</li><li
id="TransNote3">Asinkroni JavaScript i XML. Tehnika razvoja aplikacija koja
omogućava učitavanje podataka sa poslužitelja bez remećenja prikaza stranice
na klijentu.</li><li id="TransNote4">Poslužitelj koji služi kao posrednik za
zahtjeve klijenta prema nekom drugom poslužitelju.</li></ol> </div>
</div>

<!-- for id="content", starts in the include above -->
<!--#include virtual="/server/footer.hr.html" -->
<div id="footer">
<div class="unprintable">

<p>Molimo vas, općenite upite o FSF &amp; GNU šaljite na <a
href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>. Postoje i <a
href="/contact/">drugi načini kontaktiranja</a> FSF-a. Prekinute poveznice i
ostale ispravke ili prijedloge možete poslati na <a
href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>

<p>
<!-- TRANSLATORS: Ignore the original text in this paragraph,
        replace it with the translation of these two:

        We work hard and do our best to provide accurate, good quality
        translations.  However, we are not exempt from imperfection.
        Please send your comments and general suggestions in this regard
        to <a href="mailto:web-translators@gnu.org">

        &lt;web-translators@gnu.org&gt;</a>.</p>

        <p>For information on coordinating and submitting translations of
        our web pages, see <a
        href="/server/standards/README.translations.html">Translations
        README</a>. -->
Radimo naporno i dajemo sve od sebe kako bismo pružili točne, visoko
kvalitetne prijevode. Međutim, nismo oslobođeni od nesavršenosti. Molimo
vas, šaljite svoje komentare i općenite prijedloge u tom smislu na <a
href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>.
Za informacije o koordiniranju i dostavljanju prijevoda naših mrežnih
stranica, pogledajte <a
href="/server/standards/README.translations.html">PROČITAJME za
prijevode</a>.</p>
</div>

<!-- Regarding copyright, in general, standalone pages (as opposed to
     files generated as part of manuals) on the GNU web server should
     be under CC BY-ND 3.0 US.  Please do NOT change or remove this
     without talking with the webmasters or licensing team first.
     Please make sure the copyright date is consistent with the
     document.  For web pages, it is ok to list just the latest year the
     document was modified, or published.
     
     If you wish to list earlier years, that is ok too.
     Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
     years, as long as each year in the range is in fact a copyrightable
     year, i.e., a year in which the document was published (including
     being publicly visible on the web or in a revision control system).
     
     There is more detail about copyright years in the GNU Maintainers
     Information document, www.gnu.org/prep/maintain. -->
<p>Copyright &copy; 2009, 2010 Richard Stallman</p>

<p>Ovo djelo dano je na korištenje pod <a rel="license"
href="http://creativecommons.org/licenses/by-nd/3.0/us/deed.hr">licencom
Creative Commons Imenovanje-Bez prerada 3.0 SAD</a>.</p>

<!--#include virtual="/server/bottom-notes.hr.html" -->
<div class="translators-credits">

<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
<b>Prijevod</b>: Marin Rameša 2013., Martina Bebek 2013.</div>

<p class="unprintable"><!-- timestamp start -->
Zadnji put promijenjeno:

$Date: 2016/11/18 07:32:45 $

<!-- timestamp end -->
</p>
</div>
</div>
</body>
</html>