I've just made some tweaks to allow client-side caching of article pages
and recentchanges.
They now provide a 'Last-modified' header which reflects the timestamp
of the page (or for recentchanges, the most recently modified page).
They're still set to expire instantly, so a caching client ought to ask
for the page again, with an 'If-modified-since' header. If the
last-modified timestamp has not changed, we tell it '304 Not modified'
and the client uses its cached version. Otherwise, the page continues
being generated and loaded.
Currently on test.wikipedia.org, please throw various browsers against
it.
-- brion vibber (brion @ pobox.com)
Hi,
support for subpages was not added to the new software because subpages
were considered detrimental to Wikipedia's structure. I agree with this:
For an encyclopedia, you want to avoid too many "hidden areas". However,
users are creating pseudo-subpages on their user pages and on talk pages
to archive them. In these instances, having subpage support may be
useful -- it makes link creation easier and provides automatic
backlinks.
DefaultSettings.php now has an array which defines namespaces that allow
subpages. Subpages are pages of the form [[/bar]], which, when created
on page [[foo]], lead to a page [[foo/bar]].
When creating links in a namespace that does not support subpages, the
link [[/bar]] simply points to "bar". When doing so in a namespace that
*does* support subpages, the link points to [[foo/bar]]. Thus, it is
possible to have talk page archives, subpages in userland etc., without
having subpages within Wikipedia.
On a page within a namespace that supports subpages, backlinks are shown
if the page title contains the "/" character. So "User
talk:Eloquence/Archive" shows a backlink to "User talk:Eloquence" at the
top (using the new subpage stylesheet). Backlinks are not shown to
non-existent parent pages.
Currently you have to do
[[/foo]]
[[/bar]]
[[/baz]]
to create multiple subpages. I plan to add support for a <subpages> tag
which should simplify the creation of multiple subpages (e.g. archive
links):
<subpages>
[[foo]]
[[bar]]
[[baz]]
</subpages>
I have committed a modified DefaultSettings.php which allows subpages
for Talk/User pages, which may be a reasonable default. I suggest that
this default be used for all Wikipedias, but this is a policy matter
which I will bring up on wikipedia-l. If subpages are not supposed to be
supported at all, the $wgNamespacesWithSubpages array fields can simply
be set to 0.
Regards,
Erik
--
FOKUS - Fraunhofer Insitute for Open Communication Systems
Project BerliOS - http://www.berlios.de
----- Forwarded message from Michael Hardy <hardy(a)math.mit.edu> -----
From: Michael Hardy <hardy(a)math.mit.edu>
Date: Mon, 27 Jan 2003 22:16:19 -0500 (EST)
To: jwales(a)bomis.com
Subject: edit conflicts
We desparately need a better way to handle edit conflicts
than the current method of destroying 20 minutes work without
warning. -- Mike
--
Michael Hardy
hardy(a)math.mit.edu
----- End forwarded message -----
I've cleaned up the go button code a little and moved it to a separate
function. I've also changed the behavior to first try to find a close
title match before running a full text search. That is, the process is
now:
1) try various capitalization variants (we could make this
simpler by creating an UPPER index in CUR, but it may not
be worth it); if there's a match, display it
2) try title search in search index, if there's a match, display
it (e.g. typing "Chomsky" and clicking go will also display
"Noam Chomsky"); this searches across namespaces. In some
cases it produces weird hits because it just picks the first
match, so cunctator->go might put you on the talk page
or on some subpage instead of the user page, depending on the
order in the table.
3) run full text search
Regards,
Erik
--
FOKUS - Fraunhofer Insitute for Open Communication Systems
Project BerliOS - http://www.berlios.de
Brion Vibber wrote:
>For eons people have complained that "Put the text of the new page
>here." is extremely unhelpful and promotes confusion among newbies to
>wiki; that it discourages people from doing anything further with the
>site as they don't know what they've stumbled into; and that it
>encourages a lot of useless blank, "Put the text of the new page here",
>and "What does this do? FJSDIOJDFS" pages. Longer, more informative
>messages have been suggested.
I like the new message, but it seems a bit more could be done. Why
not modify the script so that it will respond with an error message
if anyone attempts to submit a new article that contains the exact
text of the "newarticletext" string? No matter what message you put
in the edit box, there will still be newbies who misunderstand or
ignore the message and create useless pages, but you can make it a
little harder for them to do so.
--
--------------------------------
| Sheldon Rampton
| Editor, PR Watch (www.prwatch.org)
| Author of books including:
| Friends In Deed: The Story of US-Nicaragua Sister Cities
| Toxic Sludge Is Good For You
| Mad Cow USA
| Trust Us, We're Experts
--------------------------------
Just saw this run by on the MySQL mailing list. Might help us?
(Also, I've enabled the 'slow query log' on the mysql server; I'll have
a look at the results come tomorrow...)
-- brion vibber (brion @ pobox.com)
-----Forwarded Message-----
From: Heikki Tuuri <Heikki.Tuuri--innodb.com>
To: mysql--lists.mysql.com, bugs--lists.mysql.com
Subject: Major bug fixed in InnoDB optimizer in ... WHERE col > x
Date: 28 Jan 2003 01:52:49 +0200
Hi!
Over the past 2 years several users have complained about optimization of
queries of type
... WHERE col < x;
... WHERE col <= x;
... WHERE col > x;
... WHERE col >= x;
and, indeed, there was a major bug in the InnoDB query estimator. The fix
appears in 4.0.10 and 3.23.56.
"
MySQL/InnoDB-3.23.56, February xx, 2003
Fixed a major bug in InnoDB query optimization: queries of type SELECT ...
WHERE indexcolumn < x and SELECT ... WHERE indexcolumn > x could cause a
table scan even if the selectivity would have been very good.
"
Best regards,
Heikki
Innobase Oy
For mail filters:
How-to-Repeat:
sql query
For eons people have complained that "Put the text of the new page
here." is extremely unhelpful and promotes confusion among newbies to
wiki; that it discourages people from doing anything further with the
site as they don't know what they've stumbled into; and that it
encourages a lot of useless blank, "Put the text of the new page here",
and "What does this do? FJSDIOJDFS" pages. Longer, more informative
messages have been suggested.
As an experiment, I've gone ahead and changed the (English) message to
the following:
You've followed a link to a page that doesn't exist yet. If you'd
like to create a new page under this title, delete this message and
get typing! Click the 'Help' link up top if you haven't used a
Wiki before and aren't sure how to go about it.
If you didn't mean to create a new page, just click the 'back'
button in your browser, or use the search box at the top of the
screen to find existing articles.
Suggestions for more consice, professional, friendly, and informative
wording are welcome.
-- brion vibber (brion @ pobox.com)
I've seen this a lot: People write links [[like_this]]. Does anyone have
an idea what makes them do this? Is there anything in the way articles are
displayed that suggests underscores should be used? Are that many people
looking at the browser's status bar, where the underscores are visible?
Can we do anything to prevent this?
Puzzled,
Erik
Sample output thereof:
=====================================
030128 0:09:00 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 20 seconds
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 353367, signal count 335552
Mutex spin waits 4128062, rounds 18059900, OS waits 124127
RW-shared spins 378798, OS waits 178138; RW-excl spins 49477, OS waits 14309
------------
TRANSACTIONS
------------
Trx id counter 0 16059415
Purge done for trx's n:o < 0 16057696 undo n:o < 0 0
Total number of lock structs in row lock hash table 0
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 0 16059414, not started, OS thread id 15722513
MySQL thread id 116767, query id 7088715 localhost.localdomain 127.0.0.1 wikiuser
---TRANSACTION 0 16059405, not started, OS thread id 15799348
MySQL thread id 116763, query id 7088698 localhost.localdomain 127.0.0.1 wikiuser
---TRANSACTION 0 16059255, not started, OS thread id 15875188
MySQL thread id 116753, query id 7088233 localhost.localdomain 127.0.0.1 wikiuser
SELECT old_timestamp,old_text FROM old WHERE (old_namespace=0 AND old_title='Kosovo_War') ORDER BY old_timestamp DESC LIMIT 1
---TRANSACTION 1314686283 1314686469, not started, OS thread id 15865888
MySQL thread id 116751, query id 7088181 localhost.localdomain 127.0.0.1 wikiuser
SELECT cur_id,cur_namespace,cur_title,cur_text FROM cur,searchindex WHERE cur_id=si_page AND ( (MATCH (si_title) AGAINST ('mctaggart')) ) AND (cur_nam
---TRANSACTION 0 16059190, not started, OS thread id 15874163
MySQL thread id 116744, query id 7088126 localhost.localdomain 127.0.0.1 wikiuser
SELECT cur_id,cur_namespace,cur_title,cur_text FROM cur,searchindex WHERE cur_id=si_page AND ( (MATCH (si_title) AGAINST ('blue')) AND (MATCH (si_titl
---TRANSACTION 0 16059035, not started, OS thread id 15839358
MySQL thread id 116736, query id 7087903 localhost.localdomain 127.0.0.1 wikiuser
SELECT cur_id,cur_namespace,cur_title,cur_text FROM cur,searchindex WHERE cur_id=si_page AND ( (MATCH (si_title) AGAINST ('hardcore')) AND (MATCH (si_
---TRANSACTION 0 16058880, not started, OS thread id 15867966
MySQL thread id 116708, query id 7087451 localhost.localdomain 127.0.0.1 wikiuser
SELECT cur_id,cur_namespace,cur_title,cur_text FROM cur,searchindex WHERE cur_id=si_page AND ( (MATCH (si_title) AGAINST ('1953')) AND (MATCH (si_titl
---TRANSACTION 0 16057683, not started, OS thread id 15788044
MySQL thread id 116704, query id 7087345 localhost.localdomain 127.0.0.1 wikiuser
SELECT cur_id,cur_namespace,cur_title,cur_text FROM cur,searchindex WHERE cur_id=si_page AND ( (MATCH (si_title) AGAINST ('zealand')) AND (MATCH (si_t
---TRANSACTION 1121881935 1121884187, not started, OS thread id 15181937
MySQL thread id 116677, query id 7086907 localhost.localdomain 127.0.0.1 wikiuser
SELECT cur_id,cur_namespace,cur_title,cur_text FROM cur,searchindex WHERE cur_id=si_page AND ( (MATCH (si_title) AGAINST ('rasputin')) AND (MATCH (si_
---TRANSACTION 0 16058494, not started, OS thread id 15845508
MySQL thread id 116659, query id 7087057 localhost.localdomain 127.0.0.1 wikiuser
REPLACE INTO searchindex (si_page,si_title,si_text) VALUES (48013,'volunteer fire department',' what is this this is an organizational page in whic
---TRANSACTION 0 16057754, not started, OS thread id 15862858
MySQL thread id 116640, query id 7085876 localhost.localdomain 127.0.0.1 wikiuser
SELECT cur_id,cur_namespace,cur_title,cur_text FROM cur,searchindex WHERE cur_id=si_page AND ( (MATCH (si_title) AGAINST ('konqueror')) ) AND (cur_nam
---TRANSACTION 0 16057748, not started, OS thread id 15851659
MySQL thread id 116637, query id 7085865 localhost.localdomain 127.0.0.1 wikiuser
SELECT cur_id,cur_namespace,cur_title,cur_text FROM cur,searchindex WHERE cur_id=si_page AND ( (MATCH (si_text) AGAINST ('music')) AND (cur_is_redirec
---TRANSACTION 0 16057618, not started, OS thread id 15850634
MySQL thread id 116618, query id 7085526 localhost.localdomain 127.0.0.1 wikiuser
SELECT old_id,old_namespace,old_title,old_user,old_comment,old_user_text,old_timestamp,old_minor_edit FROM old WHERE old_namespace=0 AND old_title='Ba
---TRANSACTION 0 16057175, not started, OS thread id 15858777
MySQL thread id 116591, query id 7084785 localhost.localdomain 127.0.0.1 wikiuser
INSERT INTO old (old_namespace,old_title,old_text,old_comment,old_user,old_user_text,old_timestamp,old_minor_edit) VALUES (0, 'Runnymede', '\'\'\'Runn
---TRANSACTION 0 16057679, not started, OS thread id 15841408
MySQL thread id 116588, query id 7086188 localhost.localdomain 127.0.0.1 wikiuser
SELECT cur_id,cur_namespace,cur_title,cur_text FROM cur,searchindex WHERE cur_id=si_page AND ( (MATCH (si_text) AGAINST ('robert')) AND (MATCH (si_tex
---TRANSACTION 0 16057750, not started, OS thread id 15852684
MySQL thread id 116574, query id 7085864 localhost.localdomain 127.0.0.1 wikiuser
REPLACE INTO searchindex (si_page,si_title,si_text) VALUES (16760,'kosovo war',' the kosovo war was a war between serbia serbian military officially
---TRANSACTION 0 16056404, not started, OS thread id 15828085
MySQL thread id 116527, query id 7083787 localhost.localdomain 127.0.0.1 wikiuser
---TRANSACTION 0 16055875, not started, OS thread id 15812702
MySQL thread id 116470, query id 7082624 localhost.localdomain 127.0.0.1 wikiuser
---TRANSACTION 0 16054972, not started, OS thread id 15823984
MySQL thread id 116411, query id 7080618 localhost.localdomain 127.0.0.1 wikiuser
INSERT INTO old (old_namespace,old_title,old_text,old_comment,old_user,old_user_text,old_timestamp,old_minor_edit) VALUES (0, 'Ethnic_cleansing', '\'\
---TRANSACTION 0 16054750, not started, OS thread id 15822959
MySQL thread id 116392, query id 7080180 localhost.localdomain 127.0.0.1 wikiuser
SELECT old_id,old_namespace,old_title,old_user,old_comment,old_user_text,old_timestamp,old_minor_edit FROM old WHERE old_namespace=4 AND old_title='Vo
---TRANSACTION 0 16054384, not started, OS thread id 15820908
MySQL thread id 116370, query id 7079522 localhost.localdomain 127.0.0.1 wikiuser
INSERT INTO old (old_namespace,old_title,old_text,old_comment,old_user,old_user_text,old_timestamp,old_minor_edit) VALUES (0, 'Ulrike_Meinhof', '\'\'\
---TRANSACTION 0 16053005, not started, OS thread id 15815781
MySQL thread id 116257, query id 7076554 localhost.localdomain 127.0.0.1 wikiuser
SELECT old_timestamp,old_text FROM old WHERE (old_namespace=0 AND old_title='Creationism') ORDER BY old_timestamp DESC LIMIT 1
---TRANSACTION 0 16052373, not started, OS thread id 15805516
MySQL thread id 116198, query id 7075244 localhost.localdomain 127.0.0.1 wikiuser
INSERT INTO old (old_namespace,old_title,old_text,old_comment,old_user,old_user_text,old_timestamp,old_minor_edit) VALUES (0, 'List_of_people_with_vis
---TRANSACTION 0 16052286, not started, OS thread id 15802437
MySQL thread id 116189, query id 7074814 localhost.localdomain 127.0.0.1 wikiuser
INSERT INTO old (old_namespace,old_title,old_text,old_comment,old_user,old_user_text,old_timestamp,old_minor_edit) VALUES (5, 'Biography_standards', '
---TRANSACTION 0 16056999, not started, OS thread id 15774818
MySQL thread id 116077, query id 7084525 localhost.localdomain 127.0.0.1 wikiuser Sending data
SELECT cur_id,cur_namespace,cur_title,cur_text FROM cur,searchindex WHERE cur_id=si_page AND ( (MATCH (si_text) AGAINST ('blue')) AND (MATCH
(si_text)
---TRANSACTION 0 16050115, not started, OS thread id 15687722
MySQL thread id 115924, query id 7087813 localhost.localdomain 127.0.0.1 wikiuser
---TRANSACTION 0 16049514, not started, OS thread id 15757390
MySQL thread id 115948, query id 7068168 localhost.localdomain 127.0.0.1 wikiuser Sorting result
SELECT old_namespace,old_title,old_timestamp FROM old WHERE old_timestamp > '20030114000257' AND old_user=188 ORDER BY old_timestamp DESC LIMIT 50
---TRANSACTION 0 15979894, not started, OS thread id 15156290
MySQL thread id 111207, query id 6938758 localhost.localdomain 127.0.0.1 wikiuser
---TRANSACTION 0 16059396, ACTIVE 0 sec, OS thread id 15848583 starting index read
, holds adaptive hash latch
MySQL thread id 116770, query id 7088684 localhost.localdomain 127.0.0.1 wikiuser Sending data
SELECT cur_id,cur_namespace,cur_title
FROM cur,links
WHERE cur_id=l_to AND l_from='Chinese_astrology'
Trx read view will not see trx with id >= 0 16059397, sees < 0 16057874
---TRANSACTION 0 16059389, ACTIVE 1 sec, OS thread id 15837308 starting index read
, holds adaptive hash latch
MySQL thread id 116768, query id 7088528 localhost.localdomain 127.0.0.1 wikiuser Sending data
SELECT cur_id,cur_namespace,cur_title
FROM cur,links
WHERE cur_id=l_to AND l_from='Bird'
Trx read view will not see trx with id >= 0 16059390, sees < 0 16057874
---TRANSACTION 0 16058921, ACTIVE 17 sec, OS thread id 15737885 fetching rows
MySQL thread id 116712, query id 7087505 localhost.localdomain 127.0.0.1 wikiuser Sending data
SELECT cur_id,cur_namespace,cur_title
FROM cur,links
WHERE cur_id=l_to AND l_from='List_of_novelists'
Trx read view will not see trx with id >= 0 16058922, sees < 0 16057227
---TRANSACTION 0 16057874, ACTIVE 46 sec, OS thread id 15835258
MySQL thread id 116636, query id 7085857 localhost.localdomain 127.0.0.1 wikiuser Sending data
SELECT cur_id,cur_namespace,cur_title,cur_text FROM cur,searchindex WHERE cur_id=si_page AND ( (MATCH (si_text) AGAINST ('president')) AND (MATCH (si_
Trx read view will not see trx with id >= 0 16057875, sees < 0 16057227
--------
FILE I/O
--------
I/O thread 0 state: waiting for i/o request
I/O thread 1 state: waiting for i/o request
I/O thread 2 state: waiting for i/o request
I/O thread 3 state: waiting for i/o request
Pending normal aio reads: 0, aio writes: 0,
ibuf aio reads: 0, log i/o's: 0, sync i/o's: 0
Pending flushes (fsync) log: 1; buffer pool: 0
3574938 OS file reads, 351841 OS file writes, 157195 OS fsyncs
25.15 reads/s, 18208 avg bytes/read, 1.35 writes/s, 0.40 fsyncs/s
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf for space 0: size 1, free list len 5, seg size 7,
14079 inserts, 14079 merged recs, 11639 merges
Hash table size 1106407, used cells 176839, node heap has 190 buffer(s)
1313.63 hash searches/s, 203.09 non-hash searches/s
---
LOG
---
Log sequence number 0 1024213263
Log flushed up to 0 1024213253
Last checkpoint at 0 1024193696
1 pending log writes, 0 pending chkp writes
135880 log i/o's done, 0.25 log i/o's/second
----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 305558198; in additional pool allocated 1807360
Buffer pool size 16384
Free buffers 0
Database pages 16194
Modified db pages 83
Pending reads 3
Pending writes: LRU 0, flush list 0, single page 0
Pages read 6266151, created 2988, written 221076
27.85 reads/s, 0.00 creates/s, 1.00 writes/s
Buffer pool hit rate 994 / 1000
--------------
ROW OPERATIONS
--------------
4 queries inside InnoDB, 0 queries in queue; main thread: flushing log
Number of rows inserted 148901, updated 124331, deleted 140389, read 147336329
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 1442.78 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================
-- brion vibber (brion @ pobox.com)
On Monday 27 January 2003 04:00 am, Brion Vibber wrote:
> You've followed a link to a page that doesn't exist yet. If you'd
> like to create a new page under this title, delete this message and
> get typing! Click the 'Help' link up top if you haven't used a
> Wiki before and aren't sure how to go about it.
> =20
> If you didn't mean to create a new page, just click the 'back'
> button in your browser, or use the search box at the top of the
> screen to find existing articles.
>
> Suggestions for more consice, professional, friendly, and informative
> wording are welcome.
Good start, but it is too long. My first reaction when I saw it was /not/ to
read it but to think somebody had created an article right before I clicked
on the edit link. Here is my suggested wording:
You've followed a link to a page that doesn't exist yet.
To create a page delete this message and start typing!
If you are here by mistake click your browser's 'back' button.
Less is more since people will be more likely to read a shorter message before
screwing around.
IMO using technical sounding and unfamiliar words like "wiki" will just scare
people away and there is no reason why somebody needs to visit the help page
/before/ they create their first article. All they need to know in is that
they can start typing if they want to create a new article and how to back
out if they don't. They will find the help page link easy enough since it is
on each page already /and/ in the body text of the Main Page (at least for
en.wiki).
--mav