root/trunk/test/spork-parser-benchmark.pl

Revision 224, 7.5 kB (checked in by ingy, 1 year ago)
 r3796@dhcp199:  ingy | 2007-04-08 10:14:26 +0900
 Checkin some misc files
Line 
1 #!/usr/bin/perl
2 use strict;
3 use lib 'lib';
4 use Spork::Parser;
5 use Spork::Emitter::HTML;
6 use XXX;
7 my $text = do {local $/; <DATA>};
8
9 my $max = shift || 1;
10
11 my $parser = Spork::Parser->new;
12 for (1..$max) {
13     $parser->set_ast;
14     $parser->parse($text);
15 }
16
17 __DATA__
18 Ingy döt Net
19 +==
20 |Guinea Pig|
21
22 == ENOLARRY
23 +== ENODCONWAY
24 +== E{|YES|}INGY
25
26 Welcome To |YAPC|
27 Let Insanity |BEGIN|
28 |PERL| In The House Yo
29
30 WELCOME TO |YAPC|
31 LET |INSANITY| BEGIN
32 |PERL| IN THE HOUSE YO
33
34 |Ingy 2.0|
35 |Kwiki 2.0| as Well
36 orz hackers
37
38 Kwiki to |Japan|
39 Ingy Shows |2.0| Stuff
40 A Topic for |Spring|
41
42 |Haiku| is OK
43 Please Let Me Explain
44 But Ingy Likes |Limericks|
45
46 The Poetry Known as Haiku
47 Leaves a hacker with too much to do.
48 > The minding of syllables...
49 > I'd rather watch kill-a-bills.
50 Kill Bill has far better Kung Fu.
51
52 Ingy dot Net was a man,
53 Who hacked on weird plan after plan.
54 > As hard as he tried,
55 > His ideas always died.
56 But at least he is big in Japan.
57
58 There once was a hacker named Ingy
59 That darned YAPC wiki, his thingy.
60 > He went to Japan,
61 > And he got a great tan...
62 When they sent him back home in a dingy.
63
64 This Ingy it often was said,
65 Would hack all day in his bed.
66 > But the harder he hacked,
67 > The weirder and whacked
68 Were his h@><. zomg orz.
69
70 * Sometimes old stuff is the |best stuff|
71 +* Maybe it's not |shiny| anymore
72 +* But a little |polishing| goes a long way
73 +* And then you just call it |2.0|!
74 +
75 Last Year I Made |Two Big Upgrades|...
76
77 == Ingy 2.0
78 Brian Ingerson
79 Legally |Ingy dot Net|
80 Old is New Again
81
82 * In September I changed my name legally to |Ingy dot Net|
83 +* |Ingy| is my first name
84 +* |dot Net| is my last name
85 +* |dot| is *not* my middle name
86
87 * But |Ingy dot Net| is not my |real| name
88 +* My real name is *Ingy d{|ö|}t Net*
89 +* But the US Government is |ASCII| only
90 +* Well more like |EBCDIC| only
91
92 == Degrade Gracefully
93 * Ingy 2.0 |degrades gracefully|
94 +* In a fully compliant environment it is |Ingy döt Net|
95 +* In |reality| it takes many forms
96
97 == INGY DOT NET
98
99 == DOTNET, INGY
100
101 == IngyDotNet
102
103 == Non Graceful Degradation
104 Sometimes things just go wrong
105
106 == Ingy d?t Net
107
108 == Ingy dt Net
109
110 == Ingy D Net
111
112 == Ingy.Net
113
114 == Ingy Net
115 +== orz
116
117 == `....@_@....>_<....orz....o_0....X_X....`
118
119 Thank you Mr. Net
120
121 == Kwiki 2.0
122
123 There once was a project called Kwiki,
124 Whose maintenance proved to be tricky.
125 > To make the thing go,
126 > They tacked on |2.0|.
127 And now it's one heck of a wiki.
128
129 == Kwiki 1.0
130
131 |Kwiki| is to Wiki
132 as |Perl| is to Programming
133
134 * /Kwiki is not so much about being a wiki/
135 * Kwiki is all about being a |Lego Set|
136 * Kwiki is about being |easy and fun| to play with
137 +* Kwiki is about a |Community|
138
139 == Kwiki 1.0
140
141 == Kwiki 1.0
142
143 * Kwiki was a |successful| CPAN Project
144 * |150| CPAN Dists - `Kwiki-*`
145
146 == Kwiki 1.0
147
148 * Kwiki-0.38 was released |April 2005|
149 +* Kwiki was |too| stable
150 +* Stable == |Dead|
151
152 == Kwiki 1.0
153
154 * But being dead is not so bad
155 +* Because you can then be |reborn|
156 +* Enter |Kwiki 2.0|
157
158 == K2
159
160 == Kwiki 2.0
161
162 * In December 2006 I decided to make Kwiki come back to life
163 +* I started a new brand new |www.kwiki.org| wiki
164 +* I set up a |Trac| for project planning
165 +* I started a new |svn repo|
166 +* I gave all the |#kwiki| people commit bits
167
168 == No CPAN
169 * I decided to move /away/ from CPAN for a while
170 +* The Kwiki on CPAN is at a stable state
171 * Why muck with it?
172 +* Hacking on |SVN is agile|
173
174 == Kwiki Problems
175 * |Too Many Modules| to Install
176 * Kwiki is |Slowie|
177 * No Documentation
178 * Too many plugins to choose from
179 * Some bad abstractions
180
181 == Kwiki 2.0 Focus
182 * Too Many Modules to Install
183 ** Make Kwiki |Easy To Install|
184 +* Kwiki is Slowie
185 ** Make Kwiki |Faster|
186 +* No Documentation
187 ** |Document Kwiki|
188 +* Too many plugins to choose from
189 ** Kwiki |Flavors|
190 +* Some bad abstractions
191 ** Kwiki::Boot - |TMTOWTDI|
192
193 == Kwiki Installation
194 * |Kwiki 2.0| currently comes with over |500| perl modules.
195 +* It takes {*< 1 minute*} to install!
196
197 == Kwiki Software Installation Instructions
198
199     > svn checkout http://svn.kwiki.org/kwiki/trunk ~/src/kwiki
200     > export PATH=~/src/kwiki/bin:$PATH
201
202 +* That's it.
203 +* You get *Spork* for free!
204
205 == Kwiki Wiki Creation Instructions
206
207     > kwiki -new ~/Sites/my-wiki
208
209     > vim ~/Sites/my-wiki/plugins
210     > kwiki -update ~/Sites/my-wiki
211
212     > kwiki -start ~/Sites/my-wiki
213
214 == Kwiki Software Upgrade Instructions
215     > svn up
216
217 == The Great Kwiki Source Code Reorg
218
219 * I gathered all the Kwiki source code:
220 ** All Old SVN Kwiki modules - in |separate author directories|
221 ** All CPAN Kwiki modules
222 ** Some Kwiki hacks lying around on various machines
223 * I grabbed all the CPAN modules that Kwiki uses
224 * I stole some modules from |Socialtext|
225
226 == Enter the Symlink
227
228 * All 500 modules are |preinstalled|.
229 +* I made a `lib` tree with symlinks to all the modules in place
230 +* Kwiki knows where to find this |huge module tree|
231 +* Installing Kwiki has |zero dependencies|
232 +* Installing Kwiki has |zero impact| on your system
233 +* It is pretty much |guaranteed| to work
234
235 == Win32 and Perl
236
237 * But symlinks don't work on MSWin32 (Windows)
238 +* |Neither does Kwiki!|
239 +* Kwiki is a server app
240 +* |Unix is for servers|
241 +* Also Kwiki requires |Perl 5.8.3|
242 +
243 * Why make life |so hard|?
244 * No CPAN, No old Perl, No Windows == |EASY|!
245
246 == Kwiki is Kwiker
247
248 * Ingy wrote Kwiki::Cache::Formatter
249 * |Miyagawa| wrote Kwiki::FastCGI
250
251 == Kwiki::FastCGI
252
253 * FastCGI Rocks!
254
255 |index.cgi|
256
257     use Kwiki::Boot;
258     Kwiki::Boot->debug->boot->kwiki->process;
259
260 +|index.fcgi|
261
262     use Kwiki::Boot;
263     use CGI::Fast;
264     while ( my $cgi = CGI::Fast->new ) {
265         Kwiki::Boot->debug->boot->kwiki->process;
266     }
267
268 == Kwiki Documentation - Doolittle
269
270 * http://doolittle.kwiki.org
271 * Kwiki::Doolittle::Formatter
272 ** Kwiki::Formatter:Pod
273 +* |Pull all POD| out of each module
274 +* Symlink into a big Kwiki |database of documentation|
275
276 == Kwiki Flavors
277
278 * There are |too many Kwiki plugins|
279 +* Which ones do you want to start with?
280 +* |Kwiki Flavors| are prebuilt configurations
281 +* You can start with a known flavor
282 +* And then customize it
283 +* You can save your own flavors
284 +* Kwiki flavors are |inheritable|
285
286 == Kwiki Configuration Inheritance
287
288 * In Kwiki 2.0, Kwiki installations form an |inheritance chain|.
289 +* The following files are inherited:
290 ** plugins
291 ** config
292 ** template
293 ** css
294 ** javascript
295 ** theme
296 +* Your kwiki |inherits from a flavor|, which |inherits from a base|.
297 +* You can make subwikis which inherit from your wiki
298
299 == Kwiki Configuration Inheritance
300
301 * Inheritance is all done with |symlinks|.
302 +* Every level has `www/__` symlink.
303 +* `href="www/__/__/css/formatter.css"`
304 +* |Kwiki::Paths| knows how to find everything
305
306 == Kwiki::Boot
307
308 * Kwiki has a certain |core set| of plugins
309 +* The Kwiki process depends on those plugins
310 +* How do I |change| those core things?
311 ** Without breaking existing Kwiki sites
312
313 == Kwiki::Boot
314
315 * I put all the startup code in |Kwiki::Boot::V1|
316 +* Then I can write |Kwiki::Boot::V2| to do new stuff
317 ** V2 sets up a |different set| of core plugins
318 +* The Flavors stuff is all V2
319 +* You can write your own Kwiki::Boot module
320
321 == Kwiki::Boot
322
323 * How do you switch to a different Boot module?
324 +* KWIKI_BOOT=V2
325
326     KWIKI_BOOT=V2 kwiki -new ~/Sites/my-wiki
327
328 +* After `-new`, environment vars are cached in `kwiki.env`
329
330 == Spork
331
332 * These slides were done using |Spork|
333 +* The Spork project is related to Kwiki
334 * They both inherit from Spoon
335 ** A Spork /ISA/ |Spoon|
336 +* Spork is now |moved| into K2
337 +* So if you install Kwiki 2.0, then:
338
339     spork -new KwikiAndTheSymlink
340
341 == Future Kwiki Plans
342
343 * Implement |MediaWiki| with Kwiki
344 +* Completely |Customizable Formatter|
345 ** Make |your own| markup
346 +* Get everything |back to CPAN|
347
348 The |END| Draweth Nigh.
349 Kwiki Loves You. Love Her Back.
350 Have You A |Question|?
351
352 == The End
Note: See TracBrowser for help on using the browser.