Nieruchomości - kupno, sprzedaż, wynajem. Citymark

yano78@jabber.org

05 lutego 2006, 23:23:43

This feed is not valid!

Już mam dość. Po raz kolejny jakiś matołek rozwalił RSS strony głównej Joggera. Teoretycznie o poprawność kanału powinien zadbać sam system (sparrow, to do Ciebie ;) ) i pozamieniać wszelkie brzydkie znaczki na odpowiednie encje. Jednak z drugiej strony wiadomo nie od dziś, że są pewne znaki, które parser XML traktuje w specyficzny sposób. W większości przypadków jest ich tak niewiele, że można się ich nauczyć w przerwie pomiędzy opuszczeniem deski klozetowej a spuszczeniem wody. Więc bądźcie łaskawi, do jasnej cholery, przyswoić sobie przynajmniej poniższą tabelkę:

Jak mam napisać:
ChcęWpisuję
&&
<&lt;
>&gt;

To są 3 podstawowe znaki, które w języku (X)HTML mają specjalne znaczenie. Jednocześnie błędnie zapisane (nie jako encje) są najczęstszą przyczyną wykładania się wszelakich parserów. Jestem nawet skłonny zaryzykować stwierdzenie, że całkiem spora liczba stron mogłaby spokojnie wstawić sobie znaczek „Valid HTML” (pomijając już kwestię przydatności takiego znaczka) gdyby tylko webmaster poprawnie zakodował występujące w tekście (a także w odnośnikach!) znaki &.

Zastrzegam sobie prawo do reedycji tego wpisu jeśli kolejny ludzik użyje jakiegoś śmiesznego znaczka w tytule swojej notki.

Poprzedni wpis:
Ach, ta TPSA
Następny wpis:
Photoshop czy GIMP?

Ostatni odwiedzający:

Komentarze do notki This feed is not valid!

  1. janek powiedział(a):

    a propos &amp; http://rimantas.com/bits/amp_en.php

  2. Yano powiedział(a):

    O! Przykład świetnie pokazuje, że właściwe kodowanie „ampersandów” jest konieczne. ;)
    To mi podsunęło szatański pomysł nazywania przynajmniej jednej zmiennej GET identycznie z którąś encją a następnie zweryfikowanie, czy osoba linkująca odpowiednio zakodował URL i wysyłanie go w maliny, jeśli nie. Muahaha… :]

  3. PablO powiedział(a):

    Dodałbyś jeszcze, że lt to skrót od "less than" a gt od "greater than" i już nie powinno być problemów z zapamiętaniem :]

  4. Michał Górny powiedział(a):

    Jeszcze dołóz " -> &quot;

  5. dpc powiedział(a):

    O_o

    No to chyba jakiś żart, żeby użytkownik musiał się martwić o prawidłowść działania publicznego systemu.

  6. kameowy powiedział(a):

    co do specyfikacji rss'a to się nie znam, ale nie wystarczyłoby użyć xml'owego CDATA?

  7. Yano.off powiedział(a):

    @dpc: Niby czemu? W każdym środowisku obowiązują pewne zasady a ja jestem zobowiązany ich przestrzegać, jeśli chcę w tym środowisku przebywać.
    Jeśli ktoś jest na tyle inteligentny, że potrafi wpisać "<i>tekst</i>" w celu wyróżnienia tekstu kursywą, to co stoi na przeszkodzie, żeby wpisał &lt; zamiast <?

    Nie wymagam, żeby wszyscy umieszczali cytaty w <blockquote />, układali swoje wpisy w akapity (<p />) i poprawnie używali nagłówków (<h1-6 />;). Ale jakąś podstawową wiedzę mieć powinni, a do tej się (IMO) zalicza m.in. kodowanie <,> i & jako encji.

    @Michał: AFAIK znak cudzysłowu sam w sobie nie determinuje jakichś specjalnych zachowań parsera. W przeciwieństwie do "<" i ">", które określają, że zawarty pomiędzy nimi tekst ma być traktowany jako znacznik czy "&" określający nazwę encji.

    PS: Ludzie się nauczyli, że Internet to taki śmietnik. Nie trzeba tutaj się zastanawiać nad interpunkcją, ortografią itp. zasadami. A jak ktoś zwróci uwagę, to najlepiej go zmieszać z błotem, nawyzywać od nie-wiadomo-kogo a na koniec zasłonić się dysleksją, nie wiedząc nawet co to słowo oznacza. Nie mam zamiaru się biernie temu przyglądać.

  8. dpc powiedział(a):

    Yano:
    Mam nadzieję, że nie piszesz i nigdy nie będziesz pisać softu.

  9. Michał Górny powiedział(a):

    @Yano:
    > AFAIK znak cudzysłowu sam w sobie nie determinuje jakichś specjalnych zachowań parsera.
    Ale jeśli jest umieszczony np. w atrybutach (np. title) to może narobić niezłego syfu...

    > Nie trzeba tutaj się zastanawiać nad interpunkcją, ortografią itp. zasadami.
    U Ciebie też za dobrze z interpunkcją nie jest. Chyba że to specjalnie, w celach demonstracyjnych zrobiłeś q:.

  10. Yano powiedział(a):

    @Michał:
    >U Ciebie też za dobrze z interpunkcją nie jest. Chyba że to specjalnie, w celach demonstracyjnych zrobiłeś q:.
    Być może. Czasem się trafi jakiś błąd. Jednak ja, w przeciwieństwie do innych, nie obrażam się za poprawki, a wręcz je sobie cenię. Szczególnie jeśli są mi przekazywane w sposób normalny a nie wytykane w formie „ha, masz błąd na stronie, masz błąd”.
    Poza tym ja używam wielkich liter, przecinków, wielokropków itp. A wystarczy przejrzeć pierwszą lepszą grupę czy dowolny system blogów, żeby odnieść wrażenie, iż ich bywalcom ktoś wydłubał większość klawiszy. ;)

  11. Yano powiedział(a):

    @dpc: Dopiero teraz zauważyłem Twój komentarz. Nie, jakoś mnie nie ciągnie pisanie softu. Przynajmniej narazie. Ale w tym wypadku to jest zupełnie inna sytuacja. Np. w Excelu możesz ograniczyć się do wpisywania cyferek i literek, albo pisać zaawansowane formuły. W drugim przypadku _musisz_ się dostosować, bo inaczej program się wysypie (pokaże błąd). W joggerze jest podobnie — albo piszesz notki zdając się na układ szablonu, albo przyjmujesz zasady języka (X)HTML i cieszysz się większą swobodą.
    Tak więc Twój przykład z pisaniem softu jest IMO zupełnie nie trafiony.

  12. dpc powiedział(a):

    "Po raz kolejny jakiś matołek rozwalił RSS strony głównej Joggera."

    Jogger jest publiczny. Matołek czy nie - choćby nawet chciał popsuć to musi działać. To, że RSS się rozjeżdża jest winą programisty, nie użytkownika. W przykładzie z arkuszem excel - możesz wpisywać co chcesz i nawet wpuścić kota na klawiaturę - excel nie powinien się wywalić. Tak samo tłumaczenie komuś, że źle coś wpisuje jest bez sensu - jak chce to może sobie same "<<<<<" postawić i to ma działać. Niekoniecznie wyświetlić się ma "<<<<<<" oczywiście, ale ma działać. Proste.

  13. Yano powiedział(a):

    To, o czym piszesz, to jest utopia. Niestety.
    Ale skoro przykład z Excelem do Ciebie nie przemawia, to spróbujmy z Wikipedią. Serwis publiczny a rządzi się swoimi prawami. I jeśli chcesz tam coś napisać, to też musisz się dostosować, bo inaczej się będzie błędnie wyświetlać. Może nie aż tak tragicznie w skutkach, żeby coś rozwalać, ale jednak.

    Nie ma oprogramowania doskonałego. Wszędzie się znajdą mniejsze lub większe błędy. Rozumując w ten sposób można dojść do wniosku, że taki hacker (w powszechnie używanym znaczeniu tego słowa) jest w sumie niewinny, bo to autor systemu źle coś zaplanował, a on tylko wpisał »"; DROP DATABASE;« i się „popsiuło”. Przy joggerze to nie sparrow jest winny (a przynajmniej nie całkowicie) ale filozofia działania WWW.
    Wspomniany Excel wszystkie rzeczy wpisane przez użytkownika traktuje jako określone dane przeznaczone do wyświetlenia. Koniec, kropka. W joggerze podczas pisania masz możliwość użycia znaczników HTML do celów formatowania i chcąc nie chcąc musisz zastosować się do zasad. Inaczej funkcjonalność systemu zostanie sprowadzona do tej, jaką masz w komentarzach — wszystko jest traktowane jako czysty tekst i nie masz żadnych możliwości formatowania.

  14. dpc powiedział(a):

    No chyba żartujesz ...

    Spróbuj sobie Wikipedii wpisywac w polu edycja _cokolwiek_. Nie rozwali Ci to samej strony, a jedynie artykuł który edytujesz. Nie popsuje także innych artykułów, ani nie będzie miało wpływu na innych użytkowników. Po prostu - zrobisz to na co Ci pozwolono - popsujesz artykuł.

    W przypadku wpisania `badziewia` w tytuł system powinien zastąpić to / nie wyświetlać. Wyobraź sobie, że w cały joggerze nie można używać słowa "xyz", bo wtedy wszystkim kasuje joggi . I co - też nazwiesz to winą użytkownika? Powiesz "w helpie pisało, że xyz nie wolno używać! jesteś zwykłym głupcem!" ? Jest różnica między celową funkcjonalnością, która umożliwa popsucie czegoś (np DROP DATABASE;" , a zwyczajnym ordynarnym błędem, który trzeba poprawić. Rozjeżdżanie się RSS w joggerze jest (przy całym szacunku dla Sparrowa) zwykłym, prostym bugiem, który powinien być naprawiony. Filozofia WWW nie ma tu znaczenia. Ma za to filozofia dobrego programowania. Ten błąd podpada nawet pod kilka punktów:

    1) poprawny program/system powinien akceptować nawet niespodziewane/błędne wejście bez szkody dla systemu;
    2) poprawny system ogranicza możliwości jednego użytkownika, tak by nie wpływały one negatywnie na innych;

    Więc zamiast pisać ten artykuł trzeba było bugger.jogger.pl odwiedzić. Spadam - i tak już więcej sensownego na ten temat nie da się powiedzieć. Jeżeli rozumiesz o co biega to dobrze, jeżeli nie ... who cares and whatever.

  15. Yano powiedział(a):

    Ależ rozumiem i to doskonale. Jednak posiadam tę wredną cechę, że na wszystko staram się spojrzeć z więcej niż jednego punktu.
    1) punkt widzenia tzw. zwykłego użytkownika — wpisuję wszystko co chcę, a system ma to potraktować tak, żeby się to wyświetliło bezbłędnie.
    2) Punkt widzenia zaawansowanego użytkownika — wpisuję co chcę pamiętając, że html daje mi pewne możliwości edycyjne, z których chętnie skorzystam. Pamiętać też muszę, że ten język posiada pewne ograniczenia i pewne znaki muszą być zapisane w odpowiedni sposób.
    3) Punkt widzenia M4S74H 31337 H4x0R — napisałem swój własny DTD i użyłem go do stworzenia szablonu. Moja strona jest Valid "31337 H4x0R Markup Langłydż" i nie czepiać mi się moich tagów.

    Nr.1 chce, żeby mu się wyświetlało „<” kiedy wpisze <, „&” kiedy wpisze & itd. On nie chce słyszeć o jakichś „ęcjach”. Nr.2 natomiast lubi sobie napisać coś w temacie HTML-a, więc musi pamiętać, że chcąc wyświetlić <br> musi wpisać &lt;br&gt;, bo inaczej zostanie to potraktowane jako znacznik. Można w sumie pokusić się o prostą walidację, wszak encje i znaczniki stanowią skończony zbiór. Ale jest jeszcze nr.3, który stworzył własną encję &and; (będącą odpowiednikiem &amp;) oraz garść znaczników potrzebnych tylko jemu. Jest to zgodne z zasadami języka xhtml, który jogger dopuszcza w notkach, ale uniemożliwia zastosowanie wydajnego systemu sprawdzania poprawności. No bo co ma zrobić parser jeśli napotka w tytule ww. encję &and;? Usunąć (zmieniając być może sens wypowiedzi), wyświetlić bez zmian (ryzykując wysypanie się innego parsera bądź przeglądarki), czy zamienić to na &amp;and;?

    Podkreślam jeszcze (bo być może umknęło to uwadze), że chodzi mi głównie o tych użytkowników, którzy potrafią wklepać w tytuł notki „<marquee>tytuł</marquee>” (autentyk!) a nie wiedzą jak poprawnie napisać x<3.

    Można by tak jeszcze długo. Oczywiście każdy system/program/urządzenie powinny być „idiotoodporne”. Problem w tym, że nikt nie jest w stanie przewidzieć pomysłowości różnych idiotów (nie piję do nikogo w tym momencie). I dojdziemy do absurdów znanych z Ameryki, gdzie ludziom trzeba wszystko czarno-na-białym wyłożyć, bo inaczej będą ciągać po sądach o odszkodowanie. Które niestety dostają, bo nie było napisane, że np. paczka orzeszków zawiera orzeszki (bo normalnie w paczkach z orzeszkami, to rodzynki dają).

  16. marian_f powiedział(a):

    mam problem y klawiatura nie mogie wpisac ynakow np. wciskam y a na monitorye mam z nie umie wpisac malpy ya porade dziekuje

  17. v powiedział(a):

    fjnie

  18. v powiedział(a):

    kto gra w gladiatus na serwerze 16 niech napisze nick

Zostaw komentarz

Komentarze nie mające związku z tematem wpisu mogą (ale nie muszą) zostać usunięte. Bezwzględnie będą usuwane komentarze obraźliwe, wulgarne czy reklamowe (także w stylu onet.blog).

W komentarzach możesz korzystać z Textile.

yano is proudly powered by Jogger | RSS | Design by Ian Main, ported by Patryk Zawadzki.