Wypowiedzi
-
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy PHP w praktyce...
-
Iwona Bąk:
No to przynajmniej mamy już jasność - chodzi o webcrawlera do zbierania adresów e-mail. To że moje wewnętrzne umiłowanie do porządku na skrzynce sprawia, że całym sercem popieram akcje tego typu: http://polish.spampoison.com/ - jednocześnie rozum nakazuję powstrzymać się w wspieraniu opisanych przez Panią praktyk.
A macie, Panowie, pomysł na blokowanie wczytywania takich samych wierszy? To znaczy, gdy mi wczyta przykładowo:
iwona@iwona.pl
zaś we wczytywanych plikach takich samych wyrazów jest kilka, to już kolejnych nie wczyta?
A co do pytania, które Pani zadał... pomysł mamy - nawet kilka ;P
-
hmmm... a może to coś z tym regexpem jest nie tak, a nie ze dopisywaniem do tablicy, które wg. mojej mnie jest OK ;>
Co więcej dlaczego tak zaciemniasz, że nikt nie wie on co chodzi? Kod, który wkleiłaś, ni jak się nie wykona poprawnie (abstrahując już od tego wyrażenia regularnego). Raz deklarujesz skalara $zmienna (swoją drogą nie wiem po co jak $1 jest całkiem dobre) potem wypisujesz jakąś tablicę @zmienna która nie wiadomo skąd się wzięła, co więcej w fragmencie który pokazałaś nawet nie wiadomo gdzie się kończy pętla... chcesz rozwiązać swój problem? to go przedstaw w taki sposób, abyśmy mogli się w ogóle nad nim zastanowić, a nie snuć domysły o co koleżance chodzi.
-
Iwona Bąk:
Eeee... jakiego kodu? jaki wiersz? bo to co cytujesz to taki mały oftop który tu sobie z kolegą Pawłem urządziliśmy. Daj ten kontrprzykład na którym to się dzieje? jeżeli mówimy o mojej funkcji uniqwords może wyrazy które niejako są "nadmiarowe" różnią się wielkością znaków... jeżeli tak to dla mnie nie są takie same.
To moja mała uwaga - po zastosowaniu tego kodu w jednym z wierszy wyrzuca mi dwukrotnie wyraz (w jednym wierszu dwa te same wyrazy). Ten wyraz jest nadmiarowy, ponieważ testowałam to na swojej stronie, gdzie mam dokładnie policzone, ile mam wyrazów danego rodzaju.
-
Paweł Król:
Oczywiście że "more efficient" gdyż push jest napisany bardzo elegancko w C jako Perl_av_push w av.c i będzie szybsze dla dodawania LISTY wielu elementów - nie jednego, gdyż nie trzeba realizować wówczas pętli na poziomie perla
Hmm... perldoc -f push mówi, że:
Has the same effect as
Paweł Król edytował(a) ten post dnia 09.11.10 o godzinie 22:17
for $value (LIST) {
$ARRAY[++$#ARRAY] = $value;
}
but is more efficient.
-
Iwona Bąk:
A dlaczego nie wykorzystać np: LWP i pracować od razu na contencie? zamiast niepotrzebnie bawić się w jakieś dziwne pliki tymczasowe, z którymi tylko nie wiadomo co potem zrobić?
Czyli trzeba by po ściągnięciu najpierw zapisać ten tekst (np. w pliku tekstowym) a potem uruchomić skrypt usuwający duplikaty?Iwona Bąk edytował(a) ten post dnia 09.11.10 o godzinie 20:52
-
czyli krótko z tekstu podawanego jako łańcuch znaków chcemy dostać tablicę unikatowych słów? czy tak? to trzeba było tak od razu:
sub uniqwords{grep{!$_{$_}++}split/\W/,join' ',@_}
print join ', ', uniqwords("Lorem ipsum dolor sit amet, proin duis enim potenti, Lorem ipsum dolor sit amet, Lorem!"),"\n\n";
print join ', ', uniqwords("ala", "ma", "foo bar", "foo bar baz", "ala ma"),"\n\n";
-
-
Iwona Bąk:
http://pl.wikipedia.org/wiki/Netykieta każdy się uczy...
Przepraszam że odpowiadałam przed cytowanym testem. Myślałam, że to wszystko jedno. Ups(!)
a wracając do tematu można jeszcze krócej:sub uniq{grep!$_{$_}++,@_}
-
-
Paweł Król:
Karol Nowacki:
$array[++$#array] = $word;
Wow, czy powyższy zapis ma jakąś przewagę (nie wiem, na przykład wydajnościową?) nad poniższym (poza tym, że jest mniej czytelny ;)):
push @array, $word;
TIMTOWTDI
i tak i nie... dodając jeden element (chyba) jest o kilka cyklów procesora szybciej... bo push dodaje listę parametrów, zdaje się ze jest pętlą (CMIIW) i zwraca wielkość tablicy po operacji więc jakbyśmy chcieli przepisać push po swojemu to było by coś w ten deseń:
sub mypush (\@@) {Karol Nowacki edytował(a) ten post dnia 09.11.10 o godzinie 19:16
my $a = shift;
for (@_) {
${$a}[++$#{$a}] = $_;
}
return $#{$a}+1;
}
-
a może tak: napisać malutki proxy do bazy z tymi zapytaniami np w perlu, które działało by jako daemon w tle. Baza dany zawierała by jedynie tabelkę pierwszą tj, (WEBSIDEID, COUNTER), natomiast wyłapywanie duplikatów odbywało by się na poziomie tego proxy.
Skrypt w php, zamiast pchać zapytanie do bazy pisał by np. na pipkę/gniazdko do tego proxy coś linijkę typu WEBSIDE_ID, IP, ip może już być typu int a nie ciąg znaków. Proxy trzyma sobie cały czas w pamięci tablicę indexowaną WEBSIDEID, a jej elementami są drzewa BST, których liście są konstrukcji array(ip, time). Sprawdza czy na drzewie danego WEBSIDEID jest dane ip, jak jest to aktualizuje czas, a jak nie ma to dodaje na drzewo i wysyła zapytanie (raz spreparowane) do bazy o aktualizację danego rekordu w tablicy. Dodatkowo co jakiś czas (np co minutę) wywoływana jest subrutynka, która robi porządek na drzewku i wyrzuca przestarzałe wpisy.
Opcja dwa jak ktoś nie chce pisać proxy można wykorzystać np. Memcache jako to co trzyma IPiki które nas odwiedziły. Jako klucz przyjmując np. ip:WEBSIDEID:myhash(ip) , gdzie myhash ip będzie jakimś szybkim skrótem ip do 2 znaków i pod takim kluczem trzymamy tablicę ipków wraz z czasem które pasują do tego klucza. Expire dla MC to największy time z rekordów w tablicy + godzin. To rozwiązanie zwala dużo więcej roboty na maszynę interpretująca PHP a odciąża bazę danych. Jak ktoś ma farmę kilkunastu (kilkudziesięciu ;)) indian i jedną/dwie bazy danych ma to sens. Bo dużo łatwiej jest zrównoleglić webserwerki niż bazę.
A jak ktoś ma jeszcze większy wymagania, to pisze sobie takie proxy w C na drzewach AVL robi 7 maszynek na którym to stawia i zapytanie o aktualizację wpisu wysyła na iptestmachine(IP % 7), które to odpytują Oracla... ale jak ktoś ma takie problemy, to nie pyta o nie na forum ;)
-
...gdyż bo napisałaś my @array = "$word"; wewnątrz pętli, w związku z czym przy każdej iteracji deklarujesz jednoelementową tablicę, która po zakończeniu pętli kończy swój żywot. zakładam, że winno być my @array = (); przed pętlą a wewnątrz $array[++$#array] = $word; To powinno rozwiązać problem niezadeklarowanej @array.
Drugi problem to chyba literówka, albo coś na mieszałaś. %hashTempl a potem odwołujesz się do %hashTemp? no i jeżeli chcesz być strict to wypadało by jeszcze dać my przed tym haszem.Karol Nowacki edytował(a) ten post dnia 09.11.10 o godzinie 16:19
-
Zacznijmy od tego, że nie powinniśmy dodawać id="usun" gdyż po dwóch takich operacjach będziemy mieli w dokumencie dwa elementy o takim samym id, co jest delikatnie mówiąc niewskazane. Lepie zrobić class="usun", wówczas można zrobić tak:
var li = jQuery('<li></li>')....
$('.usun', li).click(function(){ ... });
i powinno być OK
-
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy PHP w praktyce...
-
Peter K.:
he... klik wcale nie ;)
O ile samo wyrenderowanie fonta w svg nie przysparza problemów, to wygięcie go i umieszczenie wg zadanej krzywizny wygląda na lekką banię :)
A jak już bardzo byś chciał... (jak to się mówi)... zamieniać "tekst na krzywą" to na pewno szybciej będzie skorzystać z jakiegoś zewnętrznego programu, np. wstrzyknąć to w inkscape (z linii komend zdaje się, że da się to zrobić bez GUI).
-
oj robiliśmy robiliśmy... nie baw się w cdr'a... zostań przy svg, gdyż de facto jest to nic innego jak łatwo edytowalny xml, a corel draw (na pewno w wersji >= X3) radzi sobie z otwieraniem tego bez problemów. Gdzie będą problemy... z wielkościami (wielkość papieru, elementu, pozycjonowanie, przeskalowywaniem), zamianą fontów na krzywa, nakładaniem się krzywych - bo zakładam, że będziesz chciał tego uniknąć ;) Na pewno spędzisz chwilę nad zmuszeniem czcionek do poprawnego wyświetlania się w przeglądarce (podpowiedź: http://github.com/sorccu/cufon/wiki/about), chyba że skorzystasz z flasha i możliwości osadzania tam fontów.
-
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy PHP w praktyce...
-
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy Sieci Komputerowe
-
- 1
- 2
- 3
- 4
- Następna »