eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingpopaprany JS › Re: popaprany JS
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.P
    OSTED!not-for-mail
    From: Roman Tyczka <n...@b...no>
    Newsgroups: pl.comp.programming
    Subject: Re: popaprany JS
    Date: Tue, 28 Mar 2017 09:58:30 +0200
    Organization: ATMAN - ATM S.A.
    Lines: 74
    Sender: r...@t...no.found
    Message-ID: <1wyqjrjy0hoxc$.dlg@tyczka.com>
    References: <j6xj1vxv7su9$.dlg@tyczka.com> <obbmf2$5ps$1@node1.news.atman.pl>
    NNTP-Posting-Host: 94.75.90.137
    Mime-Version: 1.0
    Content-Type: text/plain; charset="utf-8"
    Content-Transfer-Encoding: 8bit
    X-Trace: node2.news.atman.pl 1490687910 14607 94.75.90.137 (28 Mar 2017 07:58:30 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Tue, 28 Mar 2017 07:58:30 +0000 (UTC)
    User-Agent: 40tude_Dialog/2.0.15.84
    Xref: news-archive.icm.edu.pl pl.comp.programming:210356
    [ ukryj nagłówki ]

    On Mon, 27 Mar 2017 20:42:41 +0200, bartekltg wrote:

    >> function(e, s, i)
    >> {
    >> var n, a, o = "",
    >> l = t.isArray(e),
    >> r = 0;
    >> for (n = 0, a = s.length; n < a; n += 1) "+" === s.charAt(n) ? o +=
    >> i.charAt(n) : "*" === s.charAt(n) && (o += l ? e[r++].value :
    >> e.charAt(r++));
    >> return o
    >> }

    > Jeśli to dobrze rozumiem, to genialny przykład "chackerstwa" (tak, ch;))

    Być może to wynik pracy jakiegoś obfuscatora, udany wynik jak widać.

    > "+" === s.charAt(n) ? o += i.charAt(n)
    >
    > Na razie prosto. Operator trójargumentowy ?: jak w c++.
    >
    > Czy n-ta (kto normalny iteruje po n, czyję się zgorszony!:)
    > literaka s to "+"
    > (porównujemy ===, bo == jest miękkie :)
    >
    > Jeśli tak, to dodajemy literkę na koniec o,
    > o += i.charAt(n)
    > (nie wynika nic z tego, co jest po :)
    > jeśli nie, to (co innego, o tym poźniej).
    >
    > Teraz zaczynają się schody, jeśli s[n] nie ejst plusem,
    > wykona się to:
    >
    > "*" === s.charAt(n) && (o += l ? e[r++].value : e.charAt(r++))
    >
    > Nieco rozszerzając:
    >
    > "*" === s.charAt(n)
    > &&
    > (o += l ? e[r++].value : e.charAt(r++))
    >
    > Sztuczka polega na tym, że to wyrażenie wylicza
    > się do boola. Jeśli s[n] to '*', zadziała
    > leniwa ewaluacja i nawias się nie wykona.
    > Jeśli jest czym innym niż *, mamy (strzelam dodatkowe
    > nawiasowanie):

    Jeśli jest cymś innym? Czy raczej jeśli jest * właśnie?

    [...]

    > Ostatecznie strzelałbym, że to znaczy(to nie JS:)
    >
    > if ("+"== s.charAt(n))
    > o += i.charAt(n);
    > else if ('*' ~= a.charAt(n) )
    > o+ = (l ? e[r++].value : e.charAt(r++) );

    ~= oznacza różny?
    Jeśli tak to warunek byłby dziwny:
    jeśli n-ty znak jest + to zrób to,
    w przeciwnym wypadku, jeśli n-ty znak jest różny od * (czyli znów równy +)
    to zrób tamto.

    I chyba literówka, nie a.charAt(n) tylko s.charAt(n).

    > A, drobna uwaga, nie znam JS ;-)

    Tak czy owak wielkie dzięki za pochylenie się nad tym ścierwem, dużo mi
    pomogłeś :-)

    --
    pozdrawiam
    Roman Tyczka

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: