Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2007-03-15 22:14:26

  harry666t - Członek DUG

harry666t
Członek DUG
Zarejestrowany: 2007-01-28

The Geek Code: Reloaded

Istnieje pewna rzecz, pewien szyfr, który każdy kwalifikowany geek musi przynajmniej umieć rozpoznać, a za punkt honoru stawia sobie biegłość w rozpoznawaniu poszczególnych oznaczeń. Mowa o Geek Code, który przez samego twórcę jest określany (zresztą raczej słusznie) jako niewielką część historii internetu. Tutaj opis:

http://www.geekcode.com/geek.html

Problem GC jest dość prosty. Ostatnie wydanie (wersja 3.12) miało miejsce ponad 10 lat temu. Od tego czasu internet jest już zupełnie innym miejscem, nikt już nie gra w dooma 1, niewielu wogóle słyszało o VMS, nikt już nie wstawi znaku P! gdyż perl jest niemal nieodłączną częścią wielu dystrybucji Linuksa, i tak dalej. Słowem, możemy zrobić tylko 3 rzeczy:

->] Zostawić GC na pastwę losu, niech zdycha.

->] Używać GC w obecnej postaci.

->] Stworzyć nowy Geek Code, zrywający ze starymi oznaczeniami (i być może składnią), ale podtrzymujący ducha tajnego, wewnętrznego szyfru pewnej dziwnej, aspołecznej subkultury, który można wklejać sobie do sygnaturek ;]


Opcja 1 mnie nie interesuje. Opcja 2 nie wchodzi w grę, to jak zainstalowanie jądra linuksa z serii 1.x na najczęściej używanej stacji roboczej.


Tak więc, blok GCR (Geek Code Reloaded) niech zaczyna się podobnie jak oryginalny GC:

Kod:

--------BEGIN GCR BLOCK--------

Następnie umieszczamy oznaczenie wersji:

Kod:

Version: 4.0R-draft1 

(R oznacza Reloaded)

przychodzi miejsce na sam kod, i następnie na oznaczenie końca kodu:

Kod:

---------END GCR BLOCK---------

No, początek jest. Teraz literki. Wszystkie istniejące do tej pory literki stają się nieważne, i zostaną zdefiniowane na nowo lub zapomniane.

Zmienia się też składnia oznaczeń. GCR jest zorientowany obiektowo ;] i wiele oznaczeń można grupować, tak na przykład używam systemu operacyjnego (OS) GNU (G) z jądrem Linux (L):

Kod:

OS.G.L

Lub w skrócie, skoro i tak nikt (poza Nami Debianowcami) nie używa nazwy GNU/Linux:

Kod:

OS.L

Można też dodać na końcu nazwę dystrybucji Linuksa, ale tylko gdy nie pozostawia wątpliwości, na przykład:

Kod:

OS.G.L.D

Prawie na pewno oznacza Debiana, ale już w wypadku

Kod:

OS.L.K

czy

Kod:

OS.L.S

Można się zastanawiać czy chodzi o Kubuntu czy Knoppiksa, Slackware czy SuSE... (można wtedy teoretycznie dodać kolejną początkową literkę swojego distro, np Sl dla slacka a Su dla susełka, ale aby zachować kodowość tego kodu wolno użyć tylko dwóch liter).

Dzięki takiemu podejściu nowe rozszerzenia GCR będzie można dorabiać "w locie". Nie jestem jednak pewien jak poradzą sobie z tym generatory oraz parsery.



Określanie swojego stosunku za pomocą ilości plusów czy minusów jest dla mnie zbyt brainfuckowym podejściem. Jeszcze się zastanawiam nad nowszą notacją. Może po prostu coś w stylu OS.W-3 i OS.B.O+ a może coś mniej oczywistego.

Może tak: jeśli danej kategorii dajemy tylko jedno oznaczenie, piszemy oznaczenie tuż przy kategorii:

Kod:

OS.U-5

A jeżeli dokładamy kolejne oznaczenia, zamykamy je w nawias, żeby było czytelniej:

Kod:

OS.W($+5)

(tak byłby w stanie napisać chyba tylko sam bil)

Rzeczy które nas nie interesują najzwyczajniej pomijamy, skracając przez to długość kodu oraz czas parsowania przez ludzki umysł. Jeśli zwisa nam przyszłość Mac OS <= 9, wogóle nie dajemy sekcji OS.M i wszyscy są happy.

Jeżeli chcemy użyć kilku oznaczeń należących do jednej grupy, ale też zaoszczędzić ciutek miejsca, możemy użyć operatora & w następujący sposób. Zamiast:

Kod:

OS.L(+1)
OS.W(+1)

Napisać:

Kod:

OS.L&W(+1)

Oczywiście zapis ten jest dozwolony tylko w ostatnim oznaczeniu w hierarchii, odpada więc coś takiego:

Kod:

X.A&B.D-2

Przede wszystkim dlatego, że A i B mogą nie mieć wspólnego oznaczenia D.


Po deklaracji wersji, ale przed samym kodem, można też definiować swoje własne oznaczenia, na przykład zauważywszy że w oficjalnej specyfikacji zabrakło używanego przez nas wariantu Uniksa, zwanego na przykład Foomatix, możemy zdefiniować:

Kod:

F = Foomatix

Jeżeli nazwa jest rzadka, a jej sens nieoczywisty, można wrzucić ją do którejś kategorii:

Kod:

OS { F = Foomatix }

lub też

Kod:

OS.U { F = Fomatix }

Podobnie jak w C, kolejne wpisy można oddzielać średnikiem:

Kod:

OS.U{F=Foomatix;F6=Foomasex}

A nawet definiować całe struktury:

Kod:

OS.U{F=Foomatix{F2=Foomatoo;3F=Freefoo}}

Spacje i enterki są dozwolone tylko tam, gdzie nie przeszkadzają w płynnym odczytywaniu kodu. Poniższy zapis jest nielegalny:

Kod:

OS
.U{F
=Foomatix
}

Ale ten już jest:

Kod:

OS.U {
F= Foomatix
}

Jeżeli jakiś skrót wydaje się oczywisty, a trzeba jedynie wprowadzić oficjalnie oznaczenie, można wpisać samo oznaczenie. Zrobiłem tak w (tfu, tfu!) windowsach:

Kod:

OS.W = Windows {
  95 = any windows 95
  95a
  95b
  98
  98se
}

Można też określić swój stosunek do całej grupy zagadnień, niekoniecznie precyzując co tak bardzo lubimy w sztuce że na niej zarabiamy (np. A($+2)) czy też za co tak nienawidzimy uniksa (np. OS.U-4).


Aby uniknąć sytuacji, w której dziesiątki osób będą musiały deklarować te same oznaczenia na początku swoich bloków GCR, wprowadzam też operatory importu: # i @

Działają one tak: @ importuje oznaczenia z bloku innego użyszkodnika, zaś # z oficjalnej strony z rozszerzeniami (którą założę i którą będę się opiekował). Tak więc jeśli użytkownik "franek" zadeklarował sobie:

Kod:

OS.U { F = Foomatix }

To użytkownik "benek" użyje znaku importu w taki sposób:

Kod:

@franek

Wszystkie deklaracje franka są automatycznie deklaracjami benka. Problem pojawi się gdy franek bez wiedzy benka zmieni swoje deklaracje. Cóż, benek będzie musiał mieć na nie oko.

Taki import działa w obrębie jednej domeny w przypadku BBSów i forów, a w usenecie to jeszcze nie wiem (za rzadko tam bywam i za mało znam zasady).

Generalnie ta forma nie jest polecana.

Za to na oficjalnej stronie GCR (Którą Kiedyś Zapewne Założę(tm)) będzie jedna prosta strona, na której będzie zadeklarowany następujący "moduł":

Kod:

#base {
...
}

W miejscu trzech kropek zaś, będzie "oficjalna" lista. Domyślnie, rzeczy zadeklarowane w base będą się odnosiły do wszystkich bloków GCR (w odpowiedniej wersji). Rzeczy zadeklarowane pod innymi nazwami będą opcjonalne:

Kod:

#rareos {
OS.U{F=Foomatix}
}

Jeśli ktoś otworzył własne "repozytorium" z deklaracjami GCR, najpierw używa importu na URLu:

Kod:

#http://www.mysite.org/~franek/gcr.php
#rareos

GCR idzie więc z duchem Open Source. Mamy możliwość łatwego ponownego użycia czyjegoś kodu oraz modułowość :D

Aha, w przypadku importu czegokolwiek (czy to z oficjalnego repo, czy z czyjegoś repo, czy z sygnaturki innego usera) liczą się tylko same deklaracje. Jeśli użytkownik "hellmaster" ustosunkuje się na wszystkie możliwe tematy związane z heavy metalem, a zadeklaruje tylko A.M{O=Orchestra}, zaś użytkownik "franek" zaimportuje deklaracje hellmastera, to jedyne co franek zaimportował to właśnie deklaracje. Nie ma sposobu by import, czy to przez @ czy przez # spowodował przekazanie kodu odpowiedzialnego za stosunki do poszczególnych dziedzin.

Poprawny blok kodu może nie zawierać żadnych oznaczeń, tylko same deklaracje, może też nie zawierać żadnych deklaracji ani importów, tylko same oznaczenia. Jeżeli dany użytkownik posiada więcej niż jeden blok, podczas importu wszystkie jego bloki traktowane są jako jedność (chyba że importujemy poprzez #, wtedy wyszczególniamy importowaną przestrzeń nazw, i czasami import nie dotyczy nawet jednego fizycznego bloku).


Jeżeli ktokolwiek od razu ogarnął wszystkie te zasady, żadnej nie czytając dwa razy, niech da mi znać - bo to znaczy że są zbyt proste ;]


Jako iż moja prywatna stronka jest jeszcze w powijakach, nieoficjalne oficjalne deklaracje w base wstawiam w tym temacie.

Jak do tej pory wymyśliłem następujące oznaczenia:

Kod:

--------BEGIN GCR BLOCK--------
Version 4.0R-draft1
#base {

A = Art {
  M = Music {
    G = Guitar
    D = Drums
    B = Bass guitar
    K = Keyboards
    S = Singing
  }
  P = Painting
  D = Dancing
}

C = Computers

OS = Operating Systems {

  G = GNU Project
  L = Linux
  H = Hurd
  B = *BSD Variants {
    F = FreeBSD
    O = OpenBSD
    Mx = MacOS X
  }
  M = Classic MacOS
  R = ReactOS
  Be = BeOS
  Bh = Haiku (BeOS clone)

  U = Other Unix Variants {
    S = Solaris
    U = Ultrix
    I = Irix
    M = Minix
  }

  W = Microsoft Windows {
    1x = 1.x series
    2x
    3x
    NT3 = NT 3.x series
    NT4
    95
    95a
    95b
    98
    98se
    me
    2k
    xp
    2k3
    vt
    bg = I am Bill Gates and my windows copy is óber!
  }
}

}
---------END GCR BLOCK---------

Przykładowy, poprawny blok GCR, który możesz sobie Użytkowniku wkleić do sygnaturki:

Kod:

--------BEGIN GCR BLOCK--------
Version 4.0R-draft1
@joe
#rareos
A.M {P=Piano}
OS.U.F(-2$) OS.W-5 OS.G.L.D($+3) A+3 A.M.P(+5)
---------END GCR BLOCK---------

Tak poza tym, wszystko ładnie pięknie, pozostały tylko dwie sprawy: skontaktować się z autorem oryginalnego GC w sprawie licencjonowania nazwy GC (jeśli facet się nie zgodzi, trzeba wymyślić własną nazwę :P) oraz wymyślić inne opcje stosunku do oznaczeń, poza +cyfra, -cyfra i $ (zapewne i takie opcje będzie można importować i/lub definiować).


Mi się ten szkic nowego GC bardzo podoba. Jeśli ktoś jest zainteresowany - proszę o komentarze ;]


[ /\/\/\ o_0 ----->>>       Ascii Art Userbar User ]

"steal and steal and steal some more and give it to all your friends and keep on stealin'"
- Reznor

Offline

 

#2  2007-03-15 22:31:12

  harry666t - Członek DUG

harry666t
Członek DUG
Zarejestrowany: 2007-01-28

Re: The Geek Code: Reloaded

Pomysł:

Operator % oznaczający nazwę fizycznego bloku kodu. Jeśli użytkownik "franciszek" umieścił dwa różne bloki kodu, na przykład:


Kod:

--------BEGIN GCR BLOCK--------
Version 4.0R-draft1.1
%myblock
F=Foo{
B=Bar
}
---------END GCR BLOCK---------

oraz

Kod:

--------BEGIN GCR BLOCK--------
Version 4.0R-draft1.1
@franciszek.myblock
F.B(S+1)
---------END GCR BLOCK---------

To operator @ powoduje import tylko tego bloku, w którym występuje oznaczenie nazwy użyte z operatorem %.

franciszek "mieszka" w swojej przestrzeni nazw, więc może użyć zapisu:

Kod:

@.myblock

Jednak pozostali użytkownicy muszą użyć pełnej nazwy, czyli @franciszek.myblock


Ponadto, jeśli jakiś blok jest anonimowy (np został umieszczony w poście, którego autor został usunięty z forum), można się do niego odnieść po "anonimowej" przestrzeni nazw:

Kod:

@*.myblock

To rozszerzenie nosi numer wersji 4.0R-draft1.1


[ /\/\/\ o_0 ----->>>       Ascii Art Userbar User ]

"steal and steal and steal some more and give it to all your friends and keep on stealin'"
- Reznor

Offline

 

#3  2007-03-16 01:37:20

  marcusdavidus - Członek DUG

marcusdavidus
Członek DUG
Skąd: z nienacka
Zarejestrowany: 2006-09-08
Serwis

Re: The Geek Code: Reloaded

sorry moze jestem idiota ale wogole nie pojmuje do czego to wlasciwie sluzy i o co w tym chodzi lol ..  chyba jednak nie ejstem geekem :P...

jednym slowem NERD:P


[img]http://i32.photobucket.com/albums/d33/marcusdavidus/marcussyg.png[/img]
C2D E8400, Asus P5N7A-VM, 2x 1gb DDR2 OCZ Reaper 1066, Baracuda 500GB S12 SataII,PSU OCZ stealthXstream 500W, Cooler Asus Triton 77, Buda Cooler Master Elite ,Keys  A4T X7 , Mysz A4T X7 , creative HD1900, Zotac GTX260 AMP2 core 216,Oczka Dell P1130 FD Trinitron

Offline

 

#4  2007-03-16 21:50:08

  harry666t - Członek DUG

harry666t
Członek DUG
Zarejestrowany: 2007-01-28

Re: The Geek Code: Reloaded

dobra, zacznijmy od tego, że to nie nazywa się już Geek Code Reloaded, bo nie chcę mieć przykrości w sprawie copyrightsów a nie chce mi się również pisać do autora oryginalnego GC.

na razie najfajniejsza nazwa, która mi do głowy przychodzi to The Net Code:

- nie ma nic wspólnego z GC
- podkreśla fakt, iż dotyczy przede wszystkim istot urzędujących w necie (operatory importu działają przecież na URLach)
- oficjalną specyfikację można znaleźć tylko w internecie (tymczasowo właśnie na tej stronie)
- i tak dalej

tak więc, wszystkie dotychczasowe odniesienia do GCR idą via output redirection do /dev/null, a tymczasem szukam czegoś od LaTeXa bo chcę napisać o tym książkę.


generalnie wszystko co potrzebne by zajarzyć co to jest geek code, jest dostępne tu:

http://www.geekcode.com/geek.html

a wszystko co potrzebne, by znając oryginalny GC również zajarzyć TNC (poprzednio GCR) jest w tym temacie.

wersja "4.0R-draft1.1" GCRu staje się wersją "0.11" The Net Code.


[ /\/\/\ o_0 ----->>>       Ascii Art Userbar User ]

"steal and steal and steal some more and give it to all your friends and keep on stealin'"
- Reznor

Offline

 

#5  2007-03-17 15:46:51

  KARQL - Członek DUG

KARQL
Członek DUG
Zarejestrowany: 2006-03-06

Re: The Geek Code: Reloaded

Jakby ktoś chciał to tutaj jest tłumaczenie.
http://linux.gery.pl/dzialy/geekownia/siec/geekcode


[img]http://img254.imageshack.us/img254/1225/gentoobar1rs9.png[/img]

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.009 seconds, 12 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00127 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.15.6.140' WHERE u.id=1
0.00060 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.15.6.140', 1732268187)
0.00056 SELECT * FROM punbb_online WHERE logged<1732267887
0.00073 DELETE FROM punbb_online WHERE ident='3.131.13.196'
0.00039 SELECT topic_id FROM punbb_posts WHERE id=55061
0.00008 SELECT id FROM punbb_posts WHERE topic_id=7221 ORDER BY posted
0.00082 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=7221 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00171 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=7221 ORDER BY p.id LIMIT 0,25
0.00089 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=7221
Total query time: 0.00724 s