From: TCLfriend googlemail.com
Subject: =?iso-8859-2?B?U7NhYmEgd3lkYWpub7bmIFRDTGEgPw==?=
Witajcie!

Mia=B3em ostatnio potrzeb=EA przekodowa=E6 prost=B1 operacj=B1 XOR do=B6=E6=
du=BFy
plik (kilkaset MB). Przy okazji por=F3wna=B3em wydajno=B6=E6 analogicznego
kodu napisanego w Tclu, perlu i javie i niestety musze stwierdzi=E6, =BFe
wydajno=B6=E6 Tcl'a pozostawi=B3a tu wiele do =BFyczenia :-( Oczywi=B6cie t=
est
ten nie mo=BFe by=E6 uznany za obiektywny, jednak dotyczy=B3 realnego
zagadnienia przez co jego wynik uwa=BFam za szczeg=F3lnie istotny. Nie
chc=EA za=B6mieca=E6 grupy, szczeg=F3=B3y tego 'testu' opisa=B3em tutaj:
http://tclmentorpl.kocjan.org/2007/10/krtka-rozprawa-midzy-panem-wjtem-i.ht=
ml
, natomiast chcia=B3bym si=EA spyta=E6 innych u=BFytkownik=F3w Tcla, jak wy
znajdujecie wydajno=B6=E6 tego j=EAzyka w odniesieniu do innych?


From: Tomasz =?ISO-8859-2?Q?Motyli=F1ski?= <motto77 wp.eu>
Subject: Re: whois idle - co tu mozna poprawic?
bind time - "?9 * * * *" time:whois

proc time:whois {min hour day month year} {
foreach chan [split [channels] " "] {
if {[channel get $chan voicecommand] && [botisop $chan]} {
foreach nick [split [chanlist $chan v|v] " "] {
if {([isbotnick $nick] == 0)} {
putserv "WHOIS $nick"
putlog "sending WHOIS $nick"
}
}
}
}
return 0
}

bind RAW - 317 tools:whois:idle
proc tools:whois:idle {from key arg} {
set nick [lindex [split $arg] 1]
set idle [lindex [split $arg] 2]
foreach chan [split [channels] " "] {
if {[channel get $chan voicecommand] && [botisop $chan] &&
([isbotnick $nick] == 0)
} {
putlog "$nick idle: $idle"
if {[isvoice $nick $chan] && ($idle > 3600)} {
pushmode $chan -v $nick
putlog "mode $chan -v $nick"
}
if {([isvoice $nick $chan] == 0) && ($idle <= 3600)} {
pushmode $chan +v $nick
putlog "mode $chan +v $nick"
}
}
}
}


--
Tomasz Motyliński
"Linux jest dla leniwych, raz zainstalowany działa wiecznie"
.... i do tego jaki ładny :) http://satfilm.pl/~motto77/mydesktop.jpg
http://debian.linux.pl/ - Polskie Forum Użytkowników Debiana




From: Googie <googie nospam.0rg>
Subject: ANN: SQLiteStudio 1.0.0-beta2
SQLiteStudio 1.0.0-beta2 już jest!
http://sqlitestudio.one.pl

ZNACZĄCE ZMIANY OD BETY1:
- Poprawiona obsługa tabel/kolumn ze spacjami w nazwie,
- Poprawiona obsługa słowa kluczowego 'REFERENCES',
- Poprawiona obsługa globalnych ograniczeń tabel,
- Liczne poprawki we wszystkich oknach dialogowych, dzięki którym nie
znikają one (okna) w przypadku błędów, lecz pozwalają użytkownikowi
poprawić dane wejściowe,
- Silnik SQLite zaktualizowany do 3.4.1 w dystrybucjach binarnych,
- Liczne skróty klawiaturowe w oknie edytora SQL zostały poprawione,
- Obsługa dopełniania nazw kolumn wpisanych w argumentach funkcji, jak
np 'max(columnname)',
- ...i wiele, wiele więcej. Pełna lista zmian znajduje się w menu
aplikacji: SQLiteStudio->Lista zmian, lub w źródłach: plik ChangeLog.

CZYM JEST SQLITESTUDIO?
Jest to zaawansowany, wieloplatformowy (na razie Linux i Windows)
menadżer bazy SQLite napisany w Tclu (z kilkoma rozszerzeniami).

Aktualnie jedynie SQLite 3.x jest obsługiwany, ale SQLite 2.x, RealSQL
(i inne) są w planach.

Projekt ma charakter otwartych źródeł. Jest też darmowy do
niekomercyjnego użytku (komercyjne uzytkowanie wymaga zakupu
licencji - poczynając od wersji stabilnej, podczas gdy aktualna wersja
to BETA1, niestabilna - więcej szczegółów znajdziesz na stronie
domowej).

SQLiteStudio jest dokładniej opisane na stronie:
http://sqlitestudio.one.pl/index.php?act=about

Zrzuty ekranu można znaleźć na:
http://sqlitestudio.one.pl/index.php?act=screenshots

Forum dyskusyjne jest pod adresem:
http://forum.sqlitestudio.one.pl/

i - na koniec - jest kanał IRC na FreeNode, nazwany #sqlitestudio.

Mam nadzieję że spodoba Wam się ten program!

Wszelkie sugestie, zgłoszenia błędów, komentarze i pomysły są
milewidziane na forum dyskusyjnym (patrz wyżej) i na IRCu (patrz
wyżej), tak samo jak wkład w pracę, jak łatki czy grafika.

--
Pozdrawiam (Regards)!
Googie


From: "Wojciech Kocjan" <wojciechka gazeta.pl>
Subject: Re: =?iso-8859-2?B?U7NhYmEgd3lkYWpub7bmIFRDTGEgPw==?=
Dnia 07-10-2007 o 20:10:18 Artur <mail xdobry.de> napisał(a):
> On 6 Okt., 22:23, TCLfri... googlemail.com wrote:
>> Miałem ostatnio potrzebę przekodować prostą operacją XOR dość duży
>> plik (kilkaset MB). Przy okazji porównałem wydajność analogicznego
>> kodu napisanego w Tclu, perlu i javie i niestety musze stwierdzić, że
>> wydajność Tcl'a pozostawiła tu wiele do życzenia :-( Oczywiście test
>> ten nie może być uznany za obiektywny, jednak dotyczył realnego
>> zagadnienia przez co jego wynik uważam za szczególnie istotny. Nie
>> chcę zaśmiecać grupy, szczegóły tego 'testu' opisałem
>> tutaj:http://tclmentorpl.kocjan.org/2007/10/krtka-rozprawa-midzy-panem-wjte...
>> , natomiast chciałbym się spytać innych użytkowników Tcla, jak wy
>> znajdujecie wydajność tego języka w odniesieniu do innych?
> Tak. To jest dobry przykład do czego nie powinno się używać Tcl
> bezpośrednio.
> Tcl został wymyślony jako tzw. jezyk klej. Klej dla kodu napisanego w
> C.

Tu akurat się zgadzam.

> [ciach]
> static int stringxor(ClientData clientData, Tcl_Interp *interp, int
> objc, Tcl_Obj *const objv[])
> {
> if (objc!=2) {
> Tcl_WrongNumArgs(interp, 1, objv, "proceduro atendas du
> argumentojn");
> return TCL_ERROR;
> }
> int stringlen,xorlen,t=0
> char *string = Tcl_GetStringFromObj(objv[0], &stringlen);
> char *xor = Tcl_GetStringFromObj(objv[1], &xorlen);

Zależnie od tego co autor miał na myśli (a raczej miał na myśli dane
binarne) to pewnie chodziło o Tcl_GetByteArrayFromObj().

Zastanawiam się nad czymś innym - czy nie można tego problemu trochę
uogólnić i np zaimplementować w oparciu o C i Tcl_ExprObj(). Na przykład:

manipulatedata byte data $datastr byte key $keystr {$data ^ $key} <-
ostatnie to formuła matematyczna.

O ile takie coś pewnie nie znajdzie się w samym Tcl, to pewnie mogłoby
znaleźć się w Tcllib wraz z wersją critcl (jak np md5 w tcllib).

--
Wojciech Kocjan


Biżuteria


From: Artur <mail xdobry.de>
Subject: Re: Dziwny problem
> > Ju=BF wiem, top nie raczy zrobi=E6 exit 0.
>
> Yep :) Ale wystarczy go z=B3apa=E6 w catch'a.

Tak na marginesie.
Je=B6li proces wywo=B3any przez "exec" pisze co=B6 do stderr to tcl
interpretuje to
jako b=B3=B1d i tu pomaga tylko "catch" (mo=BFna by te=BF u=BFy=E6 2>>/dev/=
null).

Artur


From: Googie <googie nospam.0rg>
Subject: ANN: SQLiteStudio-1.0.0-beta3
SQLiteStudio 1.0.0-beta3 już jest!
http://sqlitestudio.one.pl

ZNACZĄCE ZMIANY OD BETY2:
- Poprawiony paskudny i oczywisty błąd z polami typu BLOB w oknie
tabeli, który pojawił się w beta2,
- Poprawione kilka błędów związanych z wykrywaniem ograniczeń (w oknie
edycji tabeli),
- Dodany przycisk "Zgłoś błąd" w oknie błędu krytycznego, dzięki czemu
zgłoszenie błędu to teraz zaledwie kilka kliknięć,

CZYM JEST SQLITESTUDIO?
Jest to zaawansowany, wieloplatformowy (na razie Linux i Windows)
menadżer bazy SQLite napisany w Tclu (z kilkoma rozszerzeniami).

Aktualnie jedynie SQLite 3.x jest obsługiwany, ale SQLite 2.x, RealSQL
(i inne) są w planach.

Projekt ma charakter otwartych źródeł. Jest też darmowy do
niekomercyjnego użytku (komercyjne uzytkowanie wymaga zakupu
licencji - poczynając od wersji stabilnej, podczas gdy aktualna wersja
to BETA1, niestabilna - więcej szczegółów znajdziesz na stronie
domowej).

SQLiteStudio jest dokładniej opisane na stronie:
http://sqlitestudio.one.pl/index.php?act=about

Zrzuty ekranu można znaleźć na:
http://sqlitestudio.one.pl/index.php?act=screenshots

Forum dyskusyjne jest pod adresem:
http://forum.sqlitestudio.one.pl/

i - na koniec - jest kanał IRC na FreeNode, nazwany #sqlitestudio.

Mam nadzieję że spodoba Wam się ten program!

Wszelkie sugestie, zgłoszenia błędów, komentarze i pomysły są
milewidziane na forum dyskusyjnym (patrz wyżej) i na IRCu (patrz
wyżej), tak samo jak wkład w pracę, jak łatki czy grafika.

--
Pozdrawiam (Regards)!
Googie


From: jerry <jerry niewazne.pl>
Subject: CONCAT a znak =?ISO-8859-2?Q?ko=F1ca_linii?=
Witam,

Dlaczego sklejając łańcuchy za pomocą CONCAT wynikowy łańcuch nie
zawiera znaku końca linii i powrotu karetki (\n\r), mimo że te znaki
były doklejane. Np.:

set str "PIERWSZA LINIA"
set str [concat $str "\n\rDRUGA LINIA\n\r"]

da w wyniku tekst "PIERWSZA LINIA DRUGA LINIA"
?

Jak sklejać łańcuchy zawierające takie znaki?
help...


From: Googie <googie nospam.0rg>
Subject: ANN: SQLiteStudio 1.0.0-beta1
Hi,

Z dumą ogłaszam pierwsze wydanie SQLiteStudio: 1.0.0-beta1!
http://sqlitestudio.one.pl

CZYM JEST SQLITESTUDIO?
Jest to zaawansowany, wieloplatformowy (na razie Linux i Windows)
menadżer bazy SQLite napisany w Tclu (z kilkoma rozszerzeniami).

Aktualnie jedynie SQLite 3.x jest obsługiwany, ale SQLite 2.x, RealSQL
(i inne) są w planach.

Projekt ma charakter otwartych źródeł. Jest też darmowy do
niekomercyjnego użytku (komercyjne uzytkowanie wymaga zakupu
licencji - poczynając od wersji stabilnej, podczas gdy aktualna wersja
to BETA1, niestabilna - więcej szczegółów znajdziesz na stronie
domowej).

SQLiteStudio jest dokładniej opisane na stronie:
http://sqlitestudio.one.pl/index.php?act=about

Zrzuty ekranu można znaleźć na:
http://sqlitestudio.one.pl/index.php?act=screenshots

Forum dyskusyjne jest pod adresem:
http://forum.sqlitestudio.one.pl/

i - na koniec - jest kanał IRC na FreeNode, nazwany #sqlitestudio.

Mam nadzieję że spodoba Wam się ten program!

Wszelkie sugestie, zgłoszenia błędów, komentarze i pomysły są
milewidziane na forum dyskusyjnym (patrz wyżej) i na IRCu (patrz
wyżej), tak samo jak wkład w pracę, jak łatki czy grafika.

--
Pozdrawiam (Regards)!
Googie


From: Artur <mail xdobry.de>
Subject: =?iso-8859-2?q?Re:_CONCAT_a_znak_ko=F1ca_linii?=
On 17 Sep., 07:52, jerry <je... niewazne.pl> wrote:
> Witam,
>
> Dlaczego sklejaj=B1c =B3a=F1cuchy za pomoc=B1 CONCAT wynikowy =B3a=F1cuch=
nie
> zawiera znaku ko=F1ca linii i powrotu karetki (\n\r), mimo =BFe te znaki
> by=B3y doklejane. Np.:
>
> set str "PIERWSZA LINIA"
> set str [concat $str "\n\rDRUGA LINIA\n\r"]
>
> da w wyniku tekst "PIERWSZA LINIA DRUGA LINIA"
> ?
>
> Jak skleja=E6 =B3a=F1cuchy zawieraj=B1ce takie znaki?
> help...

append str $drugalinia
lub troch=EA wolniej
set str $str$drugalinia

concat skleja listy a nie ci=B1gi znak=F3w.
dla list tak=BFe lepiej jest u=BFywa=E6 w tym przypadku lappend ni=BF concat

lappend list $drugielement

concat jest tylko przydatne je=B6li chcemy po=B3=B1czy=E6 dwie listy (a nie
doda=E6 jeden element)

cat $lista1 $lista2
cat {1 2 3} {4 5 6}

Artur Trzewik


WIFI w Warszawie


From: Googie <no spam.0rg>
Subject: Re: =?ISO-8859-2?Q?Bie=BF=B1cy?= skrypt
pablo wrote:

> witam
>
> W jaki sposób mogę z poziomu interpretera tcl dowiedzieć się jaki
> aktualnie wykonywany jest skrypt tcl'owy? Chodzi o to, że mam kilka
> skryptów, pracuja niezaleznie od siebie, w różnym czasie [w zależności od
> zdarzenia jakie wystąpi na serwerze FTP] i potrzebuje uzyskać nazwę i
> ściezke do aktualnie wykonywanego skryptu.
>
> Interpeter ActiveState. Calosc pracuje na platformie Windows XP.
>
> Dzieki z gory za wskazówki.
> p.
>

set skrypt [info script]

--
Pozdrawiam! (Regards!)
Googie


From: Tomasz =?ISO-8859-2?Q?Motyli=F1ski?= <motto77 wp.eu>
Subject: Re: whois idle
Witam,

W poście <f8qo69$cd$1 nemesis.news.tpi.pl>
Googie <googie nospam.0rg> m.in. napisał(a)::

> A orientujesz się w protokole IRC?

Już tak. Sam sobie napisałem :)

--
Tomasz Motyliński
"Linux jest dla leniwych, raz zainstalowany działa wiecznie"
.... i do tego jaki ładny :) http://satfilm.pl/~motto77/mydesktop.jpg
http://debian.linux.pl/ - Polskie Forum Użytkowników Debiana




From: Googie <no spam.0rg>
Subject: Re: Automatyczne odpalanie skryptu tcl
jans wrote:

[...]

Nie powiedziałeś najważniejszego - jaki to system?

--
Pozdrawiam! (Regards!)
Googie


From: "Stachu 'Dozzie' K." <dozzie dynamit.im.pwr.wroc.pl.nospam>
Subject: Re: CONCAT a znak =?iso-8859-2?Q?ko=F1ca?= linii
On 17.09.2007, jerry <jerry niewazne.pl> wrote:
> Witam,
>
> Dlaczego sklejając łańcuchy za pomocą CONCAT wynikowy łańcuch nie
> zawiera znaku końca linii i powrotu karetki (\n\r), mimo że te znaki
> były doklejane. Np.:
>
> set str "PIERWSZA LINIA"
> set str [concat $str "\n\rDRUGA LINIA\n\r"]
>
> da w wyniku tekst "PIERWSZA LINIA DRUGA LINIA"
> ?

A czytałeś manuala do concat? Dlaczego nie czytałeś?

> Jak sklejać łańcuchy zawierające takie znaki?
> help...

--
Secunia non olet.
Stanislaw Klekot


From: Googie <googie nospam.0rg>
Subject: Re: Odpowiednik funkcji pack i unpack z PHP w TCL (binary..)
Kamil D. wrote:

> Witam!
>
> Czy ktoś z Was wie może jak zastąpić:
>
> unpack('Vtype/Vsize/Vkey', $data);
> pack('VVVVVVVv', GG_LOGIN, 0x16, $uid, $this->_loginHash($password,
> (int)$aData['key']),
>
> (http://anakin.us/phplibgadu.phps)
>
> na TCLowe odpowiedniki? Nie bardzo rozumiem funkcji binary (bo o nią
> chodzi?) i mi to nie idzie..
>
> Pozdrawiam
>


pack i unpack są mniej więcej odpowiednikami 'binary format' i 'binary
scan', tylko oczywiście inaczej się ich używa.

Podam Ci przykład użycia binary format i scan, a resztę mam nadzieję że
wymyślisz z manuala Tcl (
http://www.tcl.tk/man/tcl8.4/TclCmd/binary.htm ):

1. Konwersja stringa na kod ascii:

binary scan $string c* asciiVariable
puts $asciiVariable

2. Konwersja odwrotna (z ascii do stringa):

puts [binary format c* $asciiString]


Musisz przetłumaczyć sobie odpowiednie parametry z
http://pl2.php.net/pack (chodzi o literki i ich typy danych) na
odpowiednie parametry z
http://www.tcl.tk/man/tcl8.4/TclCmd/binary.htm .

--
Pozdrawiam (Regards)!
Googie


Sklep z biżuterią


From: Darek Przygoda <darekprzygoda poczta.fm>
Subject: Re: wiki i tcl
Witek Mozga pisze:
> Witam,
>
> Na stronie wikipedii poswieconej Tcl znajduej sie prosty przykład aplikacji
> wyświetlającej czas. To co mnie zastanawia, to wywoływanie procedury przez
> samą siebie. Czy to po pewnym czasie nie doprowadzi do przepełnienia stosu?
> Przecież przy każdym wywoływaniu procedury adres powrotny jest gdzie
> przechowywany.
>
> proc every {ms body} {
> eval $body
> after $ms [list every $ms $body]
> }
> pack [label .clock -textvar time]
> every 1000 {set ::time [clock format [clock seconds] -format %H:%M:%S]}
>
>
Witam,
after $ms [list every $ms $body]
nie jest wywołaniem procedury 'every', to jest ustawienie wywołania tej
procedury z pętli zdarzeń po czasie $ms.

Pozdrawiam,
Darek Przygoda


From: "Kamil D." <bashysta gazeta.SKASUJ-TO.pl>
Subject: Odpowiednik funkcji pack i unpack z PHP w TCL (binary..)
Witam!

Czy ktoś z Was wie może jak zastąpić:

unpack('Vtype/Vsize/Vkey', $data);
pack('VVVVVVVv', GG_LOGIN, 0x16, $uid, $this->_loginHash($password,
(int)$aData['key']),

(http://anakin.us/phplibgadu.phps)

na TCLowe odpowiedniki? Nie bardzo rozumiem funkcji binary (bo o nią chodzi?)
i mi to nie idzie..

Pozdrawiam

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


From: Artur <mail xdobry.de>
Subject: Re: jak skompilowac tcl z thread extention?
On 11 Mai, 21:06, Michal <zie... WYTNIJ.TO.wp.pl> wrote:
> Mo=BFe to g=B3upie pytanie, ale jako=B6 nie wiem jak to zrobi=E6 :/
> Mam =B6ci=B1gni=EAte =BCr=F3d=B3a tcl'a (8.4.14) . Mam =B6ci=B1gni=EAte =
=BCr=F3d=B3a thread
> extention (2.6.5) I co teraz?
> Odpalam projekt tcl, kompiluje i ok. Odpalam projekt threads, podaje
> =B6cie=BFk=EA do tcl'a, kompiluj=EA i ok. Ale co dalej? Mog=EA odpali=E6 =
tcla,
> dzia=B3a ale..no w=B3a=B6nie jak si=EA nazywa ten pakiet od threads? jak =
mam go
> zaimportowa=E6 a potem u=BFywa=E6?
>
> Kompilaor to: Visual C++ 6.0 Pro
>
> ps. jestem pocz=B1tkuj=B1cy wi=EAc miejcie wyrozumia=B3o=B6=E6 ;)
>
> --
> Micha=B3

Ostatnie wersje AcitveTcl s=B1 kompilowane z opcj=B1 --with-thread i
posiada Thread extension.
Wi=EAc ju=BF nie trzeba samemu kompilowa=E6
Kr=F3tki opis jest pod
http://wiki.tcl.tk/1339
U=BFywa si=EA tego jak ka=BFde inne extension
package require Thread
Dokumentacja znajduje si=EA jako HTML w pliku to thread extension
http://sourceforge.net/project/showfiles.php?group_id=3D10894&package_id=3D=
10438

Threads w Tcl to jest co=B6 innego ni=BF Threads w Java, C++ albo .NET.
Ka=BFdy Thread w Tcl to niezale=BFne =B6rodowisko (Interpreter), wi=EAc to
prawie tak jakby wystartowa=E6 2 programy (procesy).
Komunikacja jest mo=BFliwa tylko przez zdefiniowany kana=B3.
Tcl posiada bardzo dobry model asychron I/O (Input and Output) tzw.
Event Model, dlatego Threads, kt=F3re s=B1 stosowana
w Java poniewa=BF nie ma w niej asynchron Read/Write, to w Tcl robi si=EA
przez komend=EA fileevent.
W Tcl mo=BFna pisa=E6 wydajne serwery TCP (np. HTTP) zype=B3nie bez u=BFycia
w=B1tk=F3w.
Mo=BFe to jest pow=F3d, dlaczego Threads s=B1 prawie nie u=BFywane w Tcl.
http://wiki.tcl.tk/1904
Niekiedy tak=BFe lepiej jest wystartowa=E6 kilka proces=F3w Tcl i
komunikowa=E6 przez TCP, send albo dde.

Znany Architekt Martin Fowler raz napisa=B3: Pierwsze prawo co do
Threads jest, nie u=BFywaj ich.

Artur




From: Witek Mozga <mozga trimen.pl.no.junk>
Subject: wiki i tcl

Witam,

Na stronie wikipedii poswieconej Tcl znajduej sie prosty przykład aplikacji
wyświetlającej czas. To co mnie zastanawia, to wywoływanie procedury przez
samą siebie. Czy to po pewnym czasie nie doprowadzi do przepełnienia stosu?
Przecież przy każdym wywoływaniu procedury adres powrotny jest gdzie
przechowywany.

proc every {ms body} {
eval $body
after $ms [list every $ms $body]
}
pack [label .clock -textvar time]
every 1000 {set ::time [clock format [clock seconds] -format %H:%M:%S]}


--
Witek


From: ZB <zbREMOVE_THIS AND_THISispid.com.pl>
Subject: Re: =?iso-8859-2?Q?S=B3aba_wydajno=B6=E6?= TCLa ?
Dnia 06.10.2007 TCLfriend googlemail.com <TCLfriend googlemail.com> napisał/a:

> , natomiast chciałbym się spytać innych użytkowników Tcla, jak wy
> znajdujecie wydajność tego języka w odniesieniu do innych?

Odnośnie szybszej Javy: to jeszcze zależy, której wersji Tcl użyto do testu;
ktoś na liście angielskiej niedawno "zapodał", że 8.5 jest ok. 2-krotnie
wolniejsza od 8.4 (sam nie sprawdzałem; i tak nic przecież na to nie
poradzę). Więc gdyby (ha, gdyby...) w wersji finalnej podregulowano
wydajność tak, żeby wrócić do stanu z 8.4, nie byłoby znowuż tak źle.
--
ZB


Biżuteria


From: jerry <jerry niewazne.pl>
Subject: Re: CONCAT a znak =?ISO-8859-2?Q?ko=F1ca_linii?=

> A czytałeś manuala do concat? Dlaczego nie czytałeś?

zgubiła mnie rutyna, która kazała myśleć że CONCAT to w każdym języku
CONCAT...

znalazłem teraz APEND - powinno pomóc.


From: Artur <mail xdobry.de>
Subject: =?iso-8859-2?B?UmU6IFOzYWJhIHd5ZGFqbm+25iBUQ0xhID8=?=
On 6 Okt., 22:23, TCLfri... googlemail.com wrote:
> Witajcie!
>
> Mia=B3em ostatnio potrzeb=EA przekodowa=E6 prost=B1 operacj=B1 XOR do=B6=
=E6 du=BFy
> plik (kilkaset MB). Przy okazji por=F3wna=B3em wydajno=B6=E6 analogicznego
> kodu napisanego w Tclu, perlu i javie i niestety musze stwierdzi=E6, =BFe
> wydajno=B6=E6 Tcl'a pozostawi=B3a tu wiele do =BFyczenia :-( Oczywi=B6cie=
test
> ten nie mo=BFe by=E6 uznany za obiektywny, jednak dotyczy=B3 realnego
> zagadnienia przez co jego wynik uwa=BFam za szczeg=F3lnie istotny. Nie
> chc=EA za=B6mieca=E6 grupy, szczeg=F3=B3y tego 'testu' opisa=B3em tutaj:h=
ttp://tclmentorpl.kocjan.org/2007/10/krtka-rozprawa-midzy-panem-wjte...
> , natomiast chcia=B3bym si=EA spyta=E6 innych u=BFytkownik=F3w Tcla, jak =
wy
> znajdujecie wydajno=B6=E6 tego j=EAzyka w odniesieniu do innych?

Tak. To jest dobry przyk=B3ad do czego nie powinno si=EA u=BFywa=E6 Tcl
bezpo=B6rednio.
Tcl zosta=B3 wymy=B6lony jako tzw. jezyk klej. Klej dla kodu napisanego w
C=2E
Tcl to tak naprawd=EA du=BFa biblioteka napisana w j=EAzyku C.
W tym przypadku najbardziej racjonalne jest napisanie tej procedury w
C
jako biblioteki (extension) dla Tcl.
Tcl ma bardzo dobry API dla j=EAzyka C jest on o niebo =B3atwiejszy od
Perl, PHP, Python i Java.
Dobr=B1 obcj=B1 mo=BFe by=E6 te=BF critcl, kt=F3ry pozwala na pisanie w C
bezpo=B6rednio w Tcl.
T=B1 drog=EA wybra=B3 te=BF Perl i dlatego wygra=B3. Jedyna r=F3=BFnice to =
to, =BFe
akurat ta procedura nie
nale=BFy do standartowych funkcji w Tcl.

Oczywi=B6cie mo=BFna by by=B3o troch=EA t=EA kod optymowa=E6 ale wielkich
rezultat=F3w nie mo=BFna si=EA spodziewa=E6.
mo=BFe zamiast lappend u=BFywa=E6 append. Je=B6li wyobra=BF=EA sobie co Tcl=
robi w
tym czasie aby to wykona=E6 i
co jest robione z pami=EAci=B1 to to nie mo=BFe by=E6 szybkie.

To podaj=EA kod biblioteki w C dla Tcl.
Nie sprawdza=B3em z braku czasu chodzi tu tylko o ide=EA.
Wed=B3ug mnie pisanie bibliotek w C dla Tcl to tak=BFe cz=EA=B6=E6 Tcl.

static int stringxor(ClientData clientData, Tcl_Interp *interp, int
objc, Tcl_Obj *const objv[])
{
if (objc!=3D2) {
Tcl_WrongNumArgs(interp, 1, objv, "proceduro atendas du
argumentojn");
return TCL_ERROR;
}
int stringlen,xorlen,t=3D0
char *string =3D Tcl_GetStringFromObj(objv[0], &stringlen);
char *xor =3D Tcl_GetStringFromObj(objv[1], &xorlen);

for (int x=3D0;x<stringlen;x++) {
string[x] ^=3D xor[t];
t++;
if (t>=3Dxorlen) t =3D 0;
}

return TCL_OK;
}


#ifdef _WINDOWS
__declspec( dllexport )
#endif
int Stringxor_Init(interp)
Tcl_Interp *interp;
{

if (Tcl_InitStubs(interp, "8.1", 0) =3D=3D NULL)
return TCL_ERROR;
if (Tcl_PkgRequire(interp, "Tcl", "8.1", 0) =3D=3D NULL)
return TCL_ERROR;
if (Tcl_PkgProvide(interp, "stringxor" , "1.0") !=3D TCL_OK)
return TCL_ERROR;

Tcl_CreateObjCommand(interp,"stringxor",stringxor,NULL, NULL);

return TCL_OK;
}

Szybciej by=B3oby tylko mo=BFe w assemblerze (operacje na ca=B3ych wyrazach
32 bit)
mo=BFliwe =BFe kompiler to zoptymuje.

Artur

















następna strona