[Phoenix-pm] meeting tonight!
Christopher Beber
cbeber at darkscape.net
Fri Mar 17 20:45:15 PST 2006
I'm available to do a Catalyst presentation, if people are interested
and I can make it to the meeting.
I also found a tutorial for the perl SDL libraries on line. The the
tutorial covers building a game, but the SDL libraries could be used for
any type of application that requires fancy graphics, responsive user
input or sound. Again, if I don't have a schedule conflict and there
is sufficient interest, I could do a small presentation about that.
http://arstechnica.com/guides/tweaks/games-perl.ars
Scott Walters wrote:
>Hi,
>
>To everyone who made it out, good to see you. Thanks for coming.
>
>Here's the handout, attached.
>
>Now, who else has an interesting algorithm, trick, application of Perl,
>module, technique, language, or project they'd be willing to talk about?
>
>Regards,
>-scott
>
>On 0, Brock <awwaiid at thelackthereof.org> wrote:
>
>
>>In case anyone gets this, I forgot to mention that it is probably best
>>to park on 3rd st, either in a metered parking (free after 6) or in the
>>garage (free 2hr validation).
>>
>>The only trick is that the link between 3rd St. and Mill is closed, so
>>you must approach the intersection from Ash St. You can see the road of
>>which I speak on the map.
>>
>>Here's the meeting info, in case you forgot:
>>
>> Time: Thursday 16 March 2006 @7:00pm
>> Location: Mill's End
>> http://maps.google.com/maps?q=310+S+Mill+Ave+tempe,+az
>> 310 S Mill Ave # A101
>> Tempe, AZ 85281
>> Thats the North-West corner of Mill and 3rd (north of
>> University) in down-town Tempe.
>> Topic: Search Engine (scott)
>> Catalyst (Michael Garfias, unconfirmed)
>> As always, random discussion
>> Other: Wireless internet available. Bring your laptops.
>> Mill's End sells drinks and food
>> Presentations will be given and recorded over VNC
>>_______________________________________________
>>Phoenix-pm mailing list
>>Phoenix-pm at pm.org
>>http://mail.pm.org/mailman/listinfo/phoenix-pm
>>
>>
>>------------------------------------------------------------------------
>>
>>
>>=for comment
>>
>>* Patricia trees translate trees into positions in stored documents and
>> document names (file names, URLs, whatever)
>>* I hope you can read code better than diagrams
>>
>>=cut
>>
>>use strict; use warnings;
>>
>>my $tree = { };
>>
>>sub search {
>> my $string = shift;
>> my $node = $tree;
>> for my $chr (split //, $string) {
>> exists $node->{$chr} or return undef; # not found condition
>> $node = $node->{$chr};
>> }
>> return $node->{hits};
>>}
>>
>>=for comment
>>
>>* The data structure is a tree, where each node has edges corresponding to
>> letters and other characters, and all nodes except the root node also have
>> a list of "hit" documents and positions in those documents
>>
>>* This implementation lacks a feature of searching up multiple words,
>> but that's easy enough to add
>>
>>* The decision of the implementer is how deep to make the tree -- to support
>> searching for 40 character phrases, the tree must go 40 characters deep
>>
>>=cut
>>
>>sub index_document {
>> my $doc = shift;
>> my $doc_name = shift;
>> my @chars = split //, $doc;
>> my $position = 0;
>> while(1) {
>> return if @chars == 6;
>> my $node = $tree;
>> my $pos2 = $position;
>> for my $chr ( @chars[0 .. (@chars > 6 ? 6 : scalar @chars)] ) {
>> $node->{$chr} ||= { hits => [], };
>> $node = $node->{$chr};
>> push @{ $node->{hits} }, [ $doc_name, $position, ];
>> $pos2++;
>> }
>> } continue {
>> shift @chars;
>> $position++;
>> }
>>
>>}
>>
>>=for comment
>>
>>* The index isn't based on merely words or substrings, so entire phrases
>> can be searched for
>>
>>* Google is able to quickly track down excerpts for each hit word in each
>> document because its pattrees point to the exact byte in the exact document
>> for each word
>>
>>* Google is able to find ranges, such as when you Google for 1000..2000,
>> by following the pattree so far and then grabbing all of the nodes
>> under that point
>>
>>* Postgres defaults to using binary tables for lookups --
>> this is an adequate simulation of a pattree if you ignore the overhead
>> of storing repeated string fragments
>>
>>=cut
>>
>>sub pretty_results {
>> my @hits = @{ shift() };
>> my $buf = shift;
>> for my $hit (@hits) {
>> print $hit->[0], ' ', $hit->[1], ' ', substr($buf, $hit->[1], 20), "\n";
>> }
>>}
>>
>>do {
>> # the pudding
>> open my $fh, '<', __FILE__;
>> read $fh, my $buf, -s $fh;
>> index_document($buf, __FILE__);
>> my $hits = search('Google');
>> pretty_results($hits, $buf);
>>};
>>
>>
>>------------------------------------------------------------------------
>>
>>_______________________________________________
>>Phoenix-pm mailing list
>>Phoenix-pm at pm.org
>>http://mail.pm.org/mailman/listinfo/phoenix-pm
>>
>>------------------------------------------------------------------------
>>
>>No virus found in this incoming message.
>>Checked by AVG Free Edition.
>>Version: 7.1.375 / Virus Database: 268.2.2/280 - Release Date: 3/13/2006
>>
>>
More information about the Phoenix-pm
mailing list