Eerst de cursus afmaken en misschien dat we een dig-mod zover krijgen dat je naam in de hall of fame komtquote:Op woensdag 9 juni 2004 22:43 schreef ChOas het volgende:
Oh, en ik vraag me af wie ik moet pijpen voor een fucking schouderklopje, maar daar kom ik nog wel achter
Inderdaad, wat CybErik zegt. Je hebt het over een element uit de list, wat een scalar is, en geen list...quote:Op donderdag 10 juni 2004 15:34 schreef Wouta het volgende:
Sorry hoor dat ik weer een vraag ga stellen....
Ik heb een vraag over het volgende voorbeeld:
[..]
Dat werkt gewoon wat ik me nu af vraag is waarom er een $ staat ipv een @ als je de fruit soorten gaat printen. Ik heb er een @ neergezet en toen ging perl heel bijdehand mij vertellen dat ik beter een $ kon gebruken. Maar helemaal snappen waarom ik geen @ moeten gebruiken daar doe ik niet.
Iemand die dat even wat wil verhelderen ?
Een ander voorbeeld/quote:Op donderdag 10 juni 2004 15:34 schreef Wouta het volgende:
Ik heb een vraag over het volgende voorbeeld:
Even een hele snelle:quote:Op donderdag 10 juni 2004 21:08 schreef TimberWolf het volgende:
Even wat uitleg over de log, voor het geval begrip indeze handig is. Een apache log regel bestaat uit een vast aantal elementen, Beginnend met het 'Request IP', oftewel het IP adres van de webbrowser die de pagina opvraagt. Dan '\ \-\ \-\ ', oftewel spatie min spatie min spatie. Dan de datum, tijd en tijdzone-modifier tussen blokhaken. Als laatste de request zelf, dus de GETs en POSTs. Deze staan tussen quotes.
Overigens leuk te zien: Regel 4 is een of andere dwaas die een populair exploit voor IIS probeert uit te voeren. Dat gebeurd wel meer
Wellicht is het leuk om via een regex de IP adressen uit de logfile te toveren? IP adressen zijn altijd wel leuk voor regex uitleg volgens mij
N.B. Denk er wel aan dat dat afhankelijk is van je logformaat in je httpd.conf. Er zijn wel een aantal "standaard" logformaten (bv LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined) maar de machine waarop je je paginaatje host kan een andere methode hebben.quote:Op donderdag 10 juni 2004 21:08 schreef TimberWolf het volgende:
Even wat uitleg over de log, voor het geval begrip indeze handig is. Een apache log regel bestaat uit een vast aantal elementen,
Mits HostnameLookups Off in httpd.conf:quote:Wellicht is het leuk om via een regex de IP adressen uit de logfile te toveren? IP adressen zijn altijd wel leuk voor regex uitleg volgens mij
Perl!quote:Op donderdag 10 juni 2004 22:02 schreef devzero het volgende:
[..]
N.B. Denk er wel aan dat dat afhankelijk is van je logformaat in je httpd.conf. Er zijn wel een aantal "standaard" logformaten (bv LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined) maar de machine waarop je je paginaatje host kan een andere methode hebben.
[..]
Mits HostnameLookups Off in httpd.conf:
awk '{print $1}' /var/log/httpd-access.log | sort | uniq -c | sort -n
Moest even trollen. Maar perl is hier sneller, maar je gaat awk ook niet gebruiken om 1 string af te drukken.quote:Op donderdag 10 juni 2004 22:15 schreef ChOas het volgende:
Perl!
Overigens nog wat meer roet: vergeet niet dat je naast ipv4 nummers ook ipv6 nummers hebt. Bijvoorbeeld:quote:if (/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/) {$Once{$&}++};
quote:2001:838:9999:1234:201:2ff:fe10:62ca - - [10/Jun/2004:22:24:31 +0200] "GET / HTTP/1.1" 200 213 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7b) Gecko/20040421"
Dan gebruik je deze :quote:Op donderdag 10 juni 2004 22:28 schreef devzero het volgende:
[..]
Moest even trollen. Maar perl is hier sneller, maar je gaat awk ook niet gebruiken om 1 string af te drukken.
[..]
Overigens nog wat meer roet: vergeet niet dat je naast ipv4 nummers ook ipv6 nummers hebt. Bijvoorbeeld:
[..]
Ok, daar heb je gelijk mee. Ik kan me alleen wel applicaties voorstellen waar je niet het hele address maar alleen het netwerk wil hebben (wat bij ipv6 makkelijk is, ipv4 hak je maar in het wilde weg zonder netmask, bv in squid.conf "client_netmask").quote:Op donderdag 10 juni 2004 22:32 schreef ChOas het volgende:
++$Once{substr $_,0,index $_," "}
Is sowieso takke sneller omdat je geen regex machine ingaat... je gaat er alleen maar vanuit dat het eerste element voor de spatie het adres is
Op gevoel zeg ik dat er de ip-adressen in staan (dat is wat de regex matched). De constructie $once{regexresultaat}++ snap ik zeg maar bijnaquote:Op donderdag 10 juni 2004 21:41 schreef ChOas het volgende:
my %Once;
while (<INPT>)
{
if (/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/) {$Once{$&}++};
};
Wat staat er nu in de hash %Once ?
Vanzelfsprekend. Maar er is natuurlijk via een regex-match wel te kijken welk logformat er gebruikt wordt. Aan het 'uiterlijk' van de data valt redelijk simpel te herkennen wat voor data het is tenslotte. Dit is overigens, voor zover ik weet, zo'n beetje de Apache default.quote:Op donderdag 10 juni 2004 22:02 schreef devzero het volgende:
N.B. Denk er wel aan dat dat afhankelijk is van je logformaat in je httpd.conf. Er zijn wel een aantal "standaard" logformaten (bv LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined) maar de machine waarop je je paginaatje host kan een andere methode hebben.
En die zijn leuker, want die bestaan niet altijd uit even veel octets Nouja, ze worden niet altijd getoond zeg maar. Dus ipv6 maakt het regex matchen wel een stuk spannenderquote:Overigens nog wat meer roet: vergeet niet dat je naast ipv4 nummers ook ipv6 nummers hebt.
Cooool!... gefeliciteerd!!!quote:Op vrijdag 11 juni 2004 08:50 schreef TimberWolf het volgende:
Hah. Net mijn eerste Perl programma gemaakt. Ik ben zo blij Stelt niet veel voor, maar werkt wel:
[ code ]
Je hebt hardgenoeg gezogen schouderklopjes :')quote:Op woensdag 9 juni 2004 22:43 schreef ChOas het volgende:
Oh, en ik vraag me af wie ik moet pijpen voor een fucking schouderklopje, maar daar kom ik nog wel achter
Jij ook al?quote:Op zaterdag 12 juni 2004 10:53 schreef Ferdy het volgende:
Zeer interessant topic!
Als ik klaar ben met me repetitieweek ga ik ook maar eens Perl proberen
Dit is de Fisher-Yates shuffle.quote:use strict;
sub fisher_yates_shuffle {
my $list = shift;
my $i = @{$list};
while ( $i-- ) {
my $j = int rand( $i );
@{$list}[$i,$j] = @{$list}[$j,$i];
}
}
En daar de functie op loslaat...quote:my @numbers = ( 0 .. 2 );
fisher_yates_shuffle(\@numbers);
woeiiiiiiquote:my $my_number = shift @numbers;
"Het getal is $my_number";
quote:sub fisher_yates_shuffle {
my $list = shift;
my $i = @{$list};
while ( $i-- ) {
my $j = int rand( $i );
@{$list}[$i,$j] = @{$list}[$j,$i];
}
}
my @numbers = ( 0 .. 2 );
fisher_yates_shuffle(\@numbers);
my $my_number = shift @numbers;
"Het getal is $my_number";
Goed gevonden! maar fisher-yates is een beetje overkill om alleen een random getal te vinden. Je gebruikt het eerder om een lijst te randomizen...quote:Op zondag 13 juni 2004 02:32 schreef CybErik het volgende:
Ik heb misschien wel een manier gevonden
[..]
Dit is de Fisher-Yates shuffle.
Als je nu een list maakt
[..]
En daar de functie op loslaat...
[..]
woeiiiiii
oftewel:
[..]
Zo ingewikkeld is het niet. Waar het in feite op neer komt is dat je de lijst afloopt en ieder element met een willekeurig gekozen ander element omwisselt. (kleine verandering op fisher-yates tov ChOas:while($i--) wordt while(--$i), het is niet interresant om element 0 met zichzelf te wisselen ).quote:Op zondag 13 juni 2004 05:07 schreef ChOas het volgende:
Iemand zin om de fisher-yates shuffle uit te leggen ?
quote:iteratie 1: i=3, j=2 en de lijst wordt a b d c
iteratie 2: i=2, j=1 en de lijst wordt a d b c
iteratie 3: i=1, j=0 en de lijst wordt d a b c
quote:iteratie 1: i=3, j=0 en de lijst wordt d b c a
iteratie 2: i=2, j=1 en de lijst wordt d c b a
iteratie 3: i=1, j=0 en de lijst wordt c d b a
wat dacht je hier van:quote:Op donderdag 24 juni 2004 17:29 schreef -DailaLama- het volgende:
Weten jullie hier wat op?
De vraag: Schrijf een functie die 4 letters als argumenten meekrijgt en alle mogelijke combinaties van deze letters afdrukt.
dus
AAAA
AAAB
AAAC
AAAD
AABA
AABB
...
ik weet wel hoe het moet, het klinkt eenvoudig, maar ik kom er niet uit
Omslachtig? Dat is nog niets ...quote:Op donderdag 24 juni 2004 19:40 schreef daReaper het volgende:
[..]
wat dacht je hier van:
sub combi {
my @letters = split(//, $_[0]);
foreach my $a (@letters) {
foreach my $b (@letters) {
foreach my $c (@letters) {
foreach my $d (@letters) {
print "$a$b$c$d\n";
}
}
}
}
}
misschien wat omslachtig, maar het werkt
use strict is datgene wat mist in php, een voorwaarde voor een serieuze taal, de constructie die mannen van jongens scheidt en/of schijdtquote:Op maandag 5 juli 2004 09:29 schreef TimberWolf het volgende:
Is 'use strict' perse noodzakelijk?
Maarquote:En als ik localtime in een array dump (my @ltime = localtime()) doet ie het ook natuurlijk.
output = "51010"quote:#!/usr/bin/perl -w
use strict;
my $a = 5;
sub functie1 {
$a = 10;
}
sub functie2 {
my $a = 20;
}
print $a;
functie1();
print $a;
functie2();
print $a;
output = "51020"quote:#!/usr/bin/perl -w
$a = 5;
sub functie1 {
$a = 10;
}
sub functie2 {
$a = 20;
}
print $a;
functie1();
print $a;
functie2();
print $a;
sleep int rand(3);quote:Op dinsdag 6 juli 2004 14:55 schreef TimberWolf het volgende:
Geeft vast nogal load op de server van de ontvangende partij
We missen hem allemaalquote:Ben ik overigens de enige die chOas mist?
Ah, lief plan. Bouwen we wel in !quote:Op dinsdag 6 juli 2004 15:35 schreef devzero het volgende:
sleep int rand(3);
oftewel wacht 0,1 of 2 seconden voor je het volgende plaatje ophaalt.
*snif*quote:We missen hem allemaal
OOquote:Op dinsdag 6 juli 2004 21:03 schreef ChOas het volgende:
escape probleem is gefixed, bovenstaande obfuscated code werkt weer
Dus... wat gaan we nu doen ?
quote:Op dinsdag 6 juli 2004 21:23 schreef daReaper het volgende:
[..]
OO
|
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |