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-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: " pablo" <pawellt NOSPAM.gazeta.pl>
Subject: =?ISO-8859-2?Q?Bie=BF=B1cy_skrypt?=
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.

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


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: "jans" <jans qdnet.pl>
Subject: Automatyczne odpalanie skryptu tcl
Witam
W jaki sposób moge uruchomic skrypt tcl w taki sposób aby uruchamial sie
wraz ze startem calego systemu.

Uruchamiam kamerke internetowa Edimax IC-1000 i niestety jedyny sposób na
przechwycenie jpegów w tej kamerze to posluzenie sie specjalnycm skryptem
dostepnym na stronie http://gem.win.co.nz/mb/misc/edicam/
wraz z odpowiednimi parametrami które szczególowo opisane sa tu:
http://www.zoneminder.com/forums/viewtopic.php?t=4797.

Problem w tym ze mam tych kamerek 4 sztuki i w tej chwili (niestety)
wszystkie odpalam recznie.

Wspomózcie "zielonego"

Pozdrawiam



From: Phoenix <p_h_o_e_n_i_x_8_2 tenbit_pl._bez_podkreslnikow>
Subject: =?ISO-8859-2?Q?warto=B6ci_ca=B3kowitoliczbowe?=
Witam wszystkich

Piszę skrypcik który będzie się komunikował po sieci z aplikacją
napisaną w C++ (WinSock) i potrzebuję z nią wymieniać wartości
całkowite. Jak wiadomo w Tcl podstawowym typem jest łańcuch i jak
wysyłam cokolwiek do serwera to po drugiej stronie dostaję kolejne
"cyfry" jako znaki char. Jak mogę wysłać dwubajtową wartość w postaci
normalnej wartości typu integer? Próbowałem kombinować z expr itp. ale
nic to nie dało. Przypuszczam ze czegoś oczywistego po prostu nie wiem.

Z góry wielki dzięki
Pnx


Biżuteria


From: Googie <no spam.0rg>
Subject: Re: =?ISO-8859-2?Q?warto=B6ci_ca=B3kowitoliczbowe?=
Phoenix wrote:

> Witam wszystkich
>
> Piszę skrypcik który będzie się komunikował po sieci z aplikacją
> napisaną w C++ (WinSock) i potrzebuję z nią wymieniać wartości
> całkowite. Jak wiadomo w Tcl podstawowym typem jest łańcuch i jak
> wysyłam cokolwiek do serwera to po drugiej stronie dostaję kolejne
> "cyfry" jako znaki char. Jak mogę wysłać dwubajtową wartość w postaci
> normalnej wartości typu integer? Próbowałem kombinować z expr itp. ale
> nic to nie dało. Przypuszczam ze czegoś oczywistego po prostu nie wiem.

fconfigure $sock -translation binary -encoding binary

--
Pozdrawiam! (Regards!)
Googie


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: "jans" <jans qdnet.pl>
Subject: Re: Automatyczne odpalanie skryptu tcl

"Googie" <no spam.0rg> wrote in message
news:fc63bj$j4r$3 srv.cyf-kr.edu.pl...
> jans wrote:
>
> [...]
>
> Nie powiedziałeś najważniejszego - jaki to system?
>
> --
> Pozdrawiam! (Regards!)
> Googie

Już spieszę donieść że to dystrybucja ZoneMinder 1.22.3
Oparty na Mandrivie system do obsługi i monitoringu kamer video i lan



From: "jans" <jans qdnet.pl>
Subject: Re: Automatyczne odpalanie skryptu tcl
> "Googie" <no spam.0rg> wrote in message
> news:fc63bj$j4r$3 srv.cyf-kr.edu.pl...

> > Nie powiedziałeś najważniejszego - jaki to system?
> >
> > --
> > Pozdrawiam! (Regards!)
> > Googie

Zapomnialem jeszcze dodac ze odpalenie 4 czy 6 tych nieszczesnych kamer
Edimaxa
wymaga uruchomienia odpowiedniej liczby shellowych sesji.
Polecenie wywolujace skrypt wyglada mniej wiecej tak:

tclsh edicam2.tcl -host [ip kamery] -port [port kamery na którym jest
stream] -serverhost [ip serwera web na ktorym wystawiana jest przechwycona
klatka] -serverport [port na ktorym web serwer zapodaje klatke]

jak sie domyslacie ile kamer tyle powolanych instancji webservera kazda na
innym porcie :(
zeby to wszystko odpalic po restracie systemy trzeba sie niezle nastukac.



From: Phoenix <p_h_o_e_n_i_x_8_2 tenbit_pl._bez_podkreslnikow>
Subject: Re: =?ISO-8859-2?Q?warto=B6ci_ca=B3kowitoliczbowe?=
Googie pisze:
> Phoenix wrote:
>
>> Witam wszystkich
>>
>> Piszę skrypcik który będzie się komunikował po sieci z aplikacją
>> napisaną w C++ (WinSock) i potrzebuję z nią wymieniać wartości
>> całkowite. Jak wiadomo w Tcl podstawowym typem jest łańcuch i jak
>> wysyłam cokolwiek do serwera to po drugiej stronie dostaję kolejne
>> "cyfry" jako znaki char. Jak mogę wysłać dwubajtową wartość w postaci
>> normalnej wartości typu integer? Próbowałem kombinować z expr itp. ale
>> nic to nie dało. Przypuszczam ze czegoś oczywistego po prostu nie wiem.
>
> fconfigure $sock -translation binary -encoding binary
>
Wielkie dzięki... musiałem to jeszcze uzupełnić poleceniami binary
format przy wysyłaniu oraz binary scan przy odbiorze, ale bez wskazówki
pewnie bym tego przez tydzień w dokumentacji nie znalazł. Działa
wyśmienicie :)

pzdr
Pnx


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

>> "Googie" <no spam.0rg> wrote in message
>> news:fc63bj$j4r$3 srv.cyf-kr.edu.pl...
>
>> > Nie powiedziałeś najważniejszego - jaki to system?
>> >
>> > --
>> > Pozdrawiam! (Regards!)
>> > Googie
>
> Zapomnialem jeszcze dodac ze odpalenie 4 czy 6 tych nieszczesnych kamer
> Edimaxa
> wymaga uruchomienia odpowiedniej liczby shellowych sesji.
> Polecenie wywolujace skrypt wyglada mniej wiecej tak:
>
> tclsh edicam2.tcl -host [ip kamery] -port [port kamery na którym jest
> stream] -serverhost [ip serwera web na ktorym wystawiana jest przechwycona
> klatka] -serverport [port na ktorym web serwer zapodaje klatke]
>
> jak sie domyslacie ile kamer tyle powolanych instancji webservera kazda na
> innym porcie :(
> zeby to wszystko odpalic po restracie systemy trzeba sie niezle nastukac.

Stwórz odpowiedni skrypt w /etc/rc.d/init.d/ i nadaj mu prawa wykonywania.
Chyba (!) wystarczy (nie jestem pewien, bo nie używałem nigdy podobnej
dystrybucji).

--
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: "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: 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.


Biżuteria artystyczna


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


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

ZNACZĄCE ZMIANY OD BETY3:
- Pełna obsługa wartości NULL,
- Liczne poprawki w kodowaniu UTF-8 oraz wykrywaniu globalnych
ograniczeń (constraint'ów),
- Silnik SQLite zaktualizowany do 3.4.2 w dystrybucjach binarnych,
- ...oraz wiele innych mniej istotnych poprawek i zmian.
Pełna lista zmian znajduje się w menu aplikacji:
SQLiteStudio->Lista zmian, lub na stronie:
http://sqlitestudio.one.pl/index.php?act=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 BETA, 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/

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), tak samo jak wkład w
pracę, jak łatki czy grafika.

--
Pozdrawiam (Regards)!
Googie


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: 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: Witek Mozga <mozga trimen.pl.no.junk>
Subject: Re: wiki i tcl

> 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.

Dzieki

teraz rozumiem, czyli wszystko jest ok.

--
Witek


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: 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

















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


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


Rejestracja domen


From: Artur <mail xdobry.de>
Subject: =?iso-8859-2?B?UmU6IFOzYWJhIHd5ZGFqbm+25iBUQ0xhID8=?=

> > [ciach]
> > 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);
>
> Zale=BFnie od tego co autor mia=B3 na my=B6li (a raczej mia=B3 na my=B6li=
dane
> binarne) to pewnie chodzi=B3o o Tcl_GetByteArrayFromObj().
>
> Zastanawiam si=EA nad czym=B6 innym - czy nie mo=BFna tego problemu troch=
=EA
> uog=F3lni=E6 i np zaimplementowa=E6 w oparciu o C i Tcl_ExprObj(). Na prz=
yk=B3ad:
>
Rzeczywi=B6cie to by=B3o zbyt szybko (niem. Schnellschuss) i niepoprawnie.
Tak naprawd=EA nie wolno modyfikowa=E6 danych objekt=F3w w ten spos=F3b
poniew=B1=BF Tcl u=BFwywa Copy on Write. Tzn dane mog=EA by=E6 u=BFywane pr=
zez
wiele objekt=F3w (sharing).
Poprawnie by by=B3o zwraca=E6 wynik jako nowy objekt, ja chia=B3em
modyfikowa=E6 parameter przez referencj=EA.
Problemem jest te=BF to, =BFe Tcl u=BFywa wewn=EAtrznie UTF-8 (z kilkoma
modyfikacjami) tzn.
Tcl_GetByteArrayFromObj() i Tcl_NewByteArrayObj s=B1 jedynie dobrym
rozwi=B1zaniem.

Tak na marginesie. Przez UTF8 Tcl nadaj=EA si=EA bardzo dobrze do
tworzenia rozwi=B1za=F1 wieloj=EAzycznych i do obr=F3bki tekst=F3w ale obr=
=F3bka
czystych danych binarnych jest troch=EA trudniejsza, wolniejsza i
mozolna.

Tcl_ExprObj() ciekaw=EA to mo=BFe by=B3o by najbardziej eleganckie
rozwi=B1zanie.

Artur