Reklama: Masz stronę www ? Zacznij na niej zarabiać KLIKNIJ
Karol Nowacki

offline

Karol Nowacki

Programista PHP, Perl, C, administrator systemów *NIX

Wypowiedzi

  • Karol Nowacki
    Wpis na grupie PHP w praktyce... w temacie obsługa złożonego formularza (aktualizacja danych o filmie)

    Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy PHP w praktyce...

  • Karol Nowacki
    Wpis na grupie Perl w temacie Problem z usuwaniem duplikatów z tablicy
    10.11.2010, 14:40

    Iwona Bąk:
    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?
    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 co do pytania, które Pani zadał... pomysł mamy - nawet kilka ;P



    Zgłoś | Cytuj

  • Karol Nowacki
    Wpis na grupie Perl w temacie Problem z usuwaniem duplikatów z tablicy
    10.11.2010, 00:33

    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.



    Zgłoś | Cytuj

  • Karol Nowacki
    Wpis na grupie Perl w temacie Problem z usuwaniem duplikatów z tablicy
    9.11.2010, 23:57

    Iwona Bąk:
    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.
    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.



    Zgłoś | Cytuj

  • Karol Nowacki
    Wpis na grupie Perl w temacie Problem z usuwaniem duplikatów z tablicy
    9.11.2010, 23:05

    Paweł Król:

    Hmm... perldoc -f push mówi, że:

    Has the same effect as

    for $value (LIST) {
    $ARRAY[++$#ARRAY] = $value;
    }

    but is more efficient.
    Paweł Król edytował(a) ten post dnia 09.11.10 o godzinie 22:17
    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



    Zgłoś | Cytuj

  • Karol Nowacki
    Wpis na grupie Perl w temacie Problem z usuwaniem duplikatów z tablicy
    9.11.2010, 21:03

    Iwona Bąk:
    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
    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ć?



    Zgłoś | Cytuj

  • Karol Nowacki
    Wpis na grupie Perl w temacie Problem z usuwaniem duplikatów z tablicy
    9.11.2010, 21:00

    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";



    Zgłoś | Cytuj

  • Karol Nowacki
    Wpis na grupie Perl w temacie Problem z usuwaniem duplikatów z tablicy
    9.11.2010, 20:46

    chwila ja tu czegoś nie rozumiem... czy problem polega na tym, że mam tablicę tego typu:

    @a = (
    'ala',
    'ma',
    'foo bar',
    'foo bar baz',
    'ma',
    'ala'
    );
    i z tego chcemy dostać tablice typu @a = ('ala', 'ma', 'foo', 'bar', 'baz') ?



    Zgłoś | Cytuj

  • Karol Nowacki
    Wpis na grupie Perl w temacie Problem z usuwaniem duplikatów z tablicy
    9.11.2010, 20:23

    Iwona Bąk:
    Przepraszam że odpowiadałam przed cytowanym testem. Myślałam, że to wszystko jedno. Ups(!)
    http://pl.wikipedia.org/wiki/Netykieta każdy się uczy...
    a wracając do tematu można jeszcze krócej:
    sub uniq{grep!$_{$_}++,@_}



    Zgłoś | Cytuj

  • Karol Nowacki
    Wpis na grupie Perl w temacie Problem z usuwaniem duplikatów z tablicy
    9.11.2010, 20:13

    Iwona Bąk:
    Czyli jak to rozpisać?
    szybko ;)
    sub uniq{my%s=();grep{!$s{$_}++}@_;} 

    my @arr = ("ekologia", "iwona", "foo", "foo", "bar", "ekologia", "ekologia", "i

    print join ', ', uniq(@arr);
    a można ;)

    BTW. Odpowiadać powinno się po cytowanym tekstem



    Zgłoś | Cytuj

  • Karol Nowacki
    Wpis na grupie Perl w temacie Problem z usuwaniem duplikatów z tablicy
    9.11.2010, 19:16

    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 (\@@) {
    my $a = shift;
    for (@_) {
    ${$a}[++$#{$a}] = $_;
    }
    return $#{$a}+1;
    }
    Karol Nowacki edytował(a) ten post dnia 09.11.10 o godzinie 19:16



    Zgłoś | Cytuj

  • Karol Nowacki
    Wpis na grupie PHP w temacie Propozycja wydajnego rozwiązania
    9.11.2010, 17:28

    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 ;)



    Zgłoś | Cytuj

  • Karol Nowacki
    Wpis na grupie Perl w temacie Problem z usuwaniem duplikatów z tablicy
    9.11.2010, 16:17

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



    Zgłoś | Cytuj

  • Karol Nowacki
    Wpis na grupie jQuery w temacie problem z obsługą zdarzeń
    4.11.2010, 22:37

    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



    Zgłoś | Cytuj

  • Karol Nowacki
    Wpis na grupie PHP w praktyce... w temacie obsługa złożonego formularza (aktualizacja danych o filmie)

    Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy PHP w praktyce...

  • Karol Nowacki
    Wpis na grupie PHP w temacie php i wektory
    4.11.2010, 00:51

    Peter K.:
    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ę :)
    he... klik wcale nie ;)

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



    Zgłoś | Cytuj

  • Karol Nowacki
    Wpis na grupie PHP w temacie php i wektory
    29.10.2010, 00:02

    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.



    Zgłoś | Cytuj

  • Karol Nowacki
    Wpis na grupie PHP w praktyce... w temacie Skanowanie antywirusem?

    Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy PHP w praktyce...

  • Karol Nowacki
    Wpis na grupie Sieci Komputerowe w temacie Wspolny serwer w 2ch sieciach LAN - jak polaczyc ?

    Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy Sieci Komputerowe

  • Karol Nowacki
    Wpis na grupie PHP w temacie Zapisywanie logów w bazie mysql, warto?
    28.06.2010, 20:25

    Andrzej Maciurzyński:
    pamietaj tez o poprawnym przechowywaniu adresu IP napewno pomoze w optymalizacji
    oraz nazwy użytkownika, które to pole (zakładam) może być FK



    Zgłoś | Cytuj

Wyślij zaproszenie do