Recent Posts by Andrew Stacey

Subscribe to Recent Posts by Andrew Stacey 118 posts found

posted 12 years ago
Andrew Stacey 118 posts

Forum: itex2MML – Topic: Bugs

I notice that Frederic has now closed this and says that the correct way to handle them is with movablelimits="false". So that makes this now an itex bug again!

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: itex2MML – Topic: Bugs

Seems that I can so I have.

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: Bugs

When there are style_additions then the surrounding <style> ... </style> appears to get escaped. I noticed this on a published web: in the source, it says:

&lt;style type='text/css'&gt;.newWikiWord { background-color: white; font-style: italic; }&lt;/style&gt;

So presumably in line 31 of layouts/default.rhtml, which reads:

<%= "<style type='text/css'>#{@style_additions}</style>" if @style_additions %>

then there’s some HTML escaping going on that shouldn’t be.

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: itex2MML – Topic: Bugs

Done

(My word, but that’s a complicated form. “What did you do?” I looked at a MathML web page. “What happened?” It didn’t look right. “What should have happened?” It should have looked right.)

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: nlab

Errr … the pages table doesn’t have a revised_at field. It has an updated_at field. But this seems to get updated whenever the record gets changed. So if I start editing a page then the pages table gains a locked_by and a locked_at entry, and the updated_at entry is set to the same as the locked_at entry. Then when I cancel editing, the locked_at entry is set to NULL (the locked_by isn’t, though that’s probably not an issue) but the updated_at entry is left as it is. So the updated_at entry in the pages table does not necessarily point to the timestamp of the latest revision.

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: itex2MML – Topic: Bugs

This looks like a bug in how Firefox renders MathML, but I thought I’d check with you first. How do ^ and ^ look to you? To me, the first has the hat offset to the right. I presume that it shouldn’t be so.

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: nlab

Ah, I’d better fix that first one then. I’ll keep the second in mind for next time this happens and choose my dates more precisely.

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: nlab

Just noticed that you got hit by the same spammer. I think that instiki.org also got hit, but then it’s hard to tell with that site anymore.

Seems as though this spammer has gone for every instiki installation under the sun!

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: nlab

The azimuth project just got a massive spam hit, 317 pages in total. To deal with that, I ended up working on the database level. What I did was to try to simulate “rollbacks”: copy the data from the last decent copy and paste it as a new row in the “revisions” table. That seemed the safest approach.

But it did get me thinking about the database and specifically the “revisions” table. Two questions:

  1. If I simply remove a row from the revisions table, does instiki get confused?
  2. If the timestamps are a bit out of order, does instiki get confused? Or is the revision id the One True Order on the revisions table?
 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: nlab

Okay, I’ll take a look at that. Is it obvious which file to add it to, or should I create a new file and add it to the page template?

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: nlab

This isn’t nLab-specific, but it’s neither a bug nor a feature requestion: more of a “How do I?”.

There’s an effect that I’d like to put on a page (or a family of pages). It’s achievable in CSS using some fancy pseudo-classes, but some browsers don’t support it (notably mobile browsers) so I was pondering a javascript solution. Essentially, it would just modify some CSS properties of certain elements (selected by class) when a link was clicked upon.

The details aren’t particularly important. What I want to know is whether or not there is an easy way to add a bit of javascript to a page. I suppose it could be added to all pages, but then it would be better if it were only all pages in a particular web. Something a bit like the stylesheet tweaks, but for javascript.

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: itex2MML – Topic: Bugs

The optional argument syntax for extensible arrows doesn’t swallow spaces correctly. If I type \xrightarrow [a]{b} then in LaTeX, this is equivalent to \xrightarrow[a]{b} because spaces are automatically swallowed after commands. However, in iTeX then they are not equivalent:

[a]bab\xrightarrow [a]{b} \xrightarrow[a]{b}
 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: Bugs

Thanks! That’s great.

On another topic, is there any progress on cache bugs? With the file uploading, then it doesn’t work at all. When I upload a file to a page then that page doesn’t get expired. We’re also seeing it with renaming pages on the nLab. We’re trying to keep a record of it in case it’s of use to you: http://www.math.ntnu.no/~stacey/Mathforge/nForum/comments.php?DiscussionID=3168

 
posted 12 years ago
Andrew Stacey 118 posts

edited 12 years ago

Forum: Instiki – Topic: Bugs

I just updated my course installation to the latest one, did the ruby bundle and touch tmp/restart.txt as well. Then I tried to edit the stylesheet and kept getting Internal Application Error. Here’s what the log said:

RuntimeError (Instiki could not create directory to store uploaded files. Please
 make sure that Instiki is allowed to create directory /home/stacey/current/others/instiki/webs/
mathsnotes/files/0 and add files to it.):
  app/models/web.rb:169:in `rescue in create_files_directory'
  app/models/web.rb:161:in `create_files_directory'
  app/models/wiki.rb:32:in `edit_web'
  app/controllers/admin_controller.rb:59:in `edit_web'

There’s no reason why Instiki can’t create that directory, but I’m a bit at a loss as to why it is trying to do so.

I restarted the web server and got the same error.

 
posted 12 years ago
Andrew Stacey 118 posts

edited 12 years ago

Forum: Instiki – Topic: Bugs

New one for you. This one’s possibly the most obscure yet!

The wiki doesn’t like ampersands in file names; that is, in the [[file|filename :file]] syntax (or whatever the right syntax is). This feels a bit like a “my head hurts when I hit it with a hammer” bug! Obviously, no sane person would put an ampersand in a file name. I did so by accident and it threw “Internal application error” in my face. It was only by looking at the logs that I realised what I’d done. The logs have:

ActionController::RoutingError (No route matches {:controller=>"file", :web=>"mathsnotes",
 :action=>"file", :id=>"lecture.annotations.2011-10-0&.pdf"}):
  lib/url_generator.rb:83:in `file_link'
  lib/url_generator.rb:43:in `make_link'

(and a whole load more “in XYZ”s - I presume that the whole trace isn’t necessary)

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: Bugs

This is probably related to that last one. Is the black square inserted at the end of a proof also done by javascript? If so, that might be worth thinking about whether or not it makes the same assumption. In particular, if a proof ends with a bit of displayed maths then the square gets inserted into the containing div which is centred. This looks a little odd.

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: nlab

Back on the CSS thing. I’m going to experiment with taking it out on my course wiki (safer than on the nLab). Since it’s in the main instiki file I guess I have to take it out system-wide (though I could put it back on a per-web basis, I guess). What’s the safest way to do that given that this is a file in the VCS? Should I comment out the line, or delete it?

(I want to avoid - as much as possible - breaking things when I do a bzr pull)

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: Bugs

What are you using to show the source? My default is Firebug, though I also use the “View Source Chart” addon. Here’s what Firebug says it sees:

<div id="thmA" class="num_theorem">
<p>
<span class="theorem_label">Theorem</span>
<span>. </span>
Correct behaviour
</p>
</div>
<div id="thmB" class="num_theorem">
<ol>
<span class="theorem_label">Theorem</span>
<span>. </span>
<li>A list, with</li>
<li>Incorrect behaviour</li>
</ol>
</div>
<div id="thmC" class="num_theorem">
<div style="float: right;">
<span class="theorem_label">Theorem</span>
<span>. </span>
<p>A comment to one side</p>
</div>
<p>The theorem</p>
</div>

In particular, note that the second theorem label is a child of the <ol> element.

If I just do the naive “View Source” then this is what I see:

<div class='num_theorem' id='thmA'>
<h6 id='theorem_1'>Theorem</h6>

<p>Correct behaviour</p>
</div>

<div class='num_theorem' id='thmB'>
<h6 id='theorem_2'>Theorem</h6>

<ol>
<li>A list, with</li>

<li>Incorrect behaviour</li>
</ol>
</div>

<div class='num_theorem' id='thmC'>
<h6 id='theorem_3'>Theorem</h6>

<div style='float: right;'>
<p>A comment to one side</p>

</div>

<p>The theorem</p>
</div>

So you’re right and wrong. What I’m seeing on the page is not an artefact of Maruku. Since the source sent by Instiki is correct, my guess is that it is Javascript that is converting the <h6> to a <span> and is inserting it as a child of the first element. (In my opinion, it should do so only if that first element is a <p>, otherwise it should be in a block element all of its own.)

 
posted 12 years ago
Andrew Stacey 118 posts

edited 12 years ago

Forum: Instiki – Topic: Bugs

Here’s a maruku bug; I guess I’m noting it as much for when (if!) you change engines as for hoping that it’ll get fixed now.

In a theorem or proof environment, the conversion of the h6 element to a label doesn’t always work correctly if the following element is a block-level one (list or a div, for example).

I’ve been trying to post an example here, but failing miserably. Even the correct syntax doesn’t seem to be working. So I’ve stuck an example at the top of the Sandbox in the nLab:

http://ncatlab.org/nlab/show/Sandbox

(I originally noticed this on my course wiki.)

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: Bugs

I was on 759. I’ll upgrade today.

I was also probably doing something more complicated than I described, only I can’t remember all the steps, since I was moving content from one page to another and renaming them. I thought I’d described the important ones, but there may have been something that I’d missed.

I’ll try to be more observant of my own behaviour in case it occurs again!

 
posted 12 years ago
Andrew Stacey 118 posts

edited 12 years ago

Forum: Instiki – Topic: Bugs

Looking at the log, what I see is the following:

Processing WikiController#save (for 2001:700:300:1470:862b:2bff:fe9b:c741 at 2011-09-21 14:32:27) [POST]
  Parameters: {"_form_key"=>"809867e64bcc18bbdd650af99b67f93dd935dfad", "content"=>"A load of content",
"alter_title"=>"1", "new_name"=>"norm for continuous functions on the interval", "author"=>"Andrew Stacey",
"web"=>"mathsnotes", "id"=>"continuous functions on the interval"}
Reading page 'continuous functions on the interval' from web 'mathsnotes'
Page 'continuous functions on the interval'  found
2001:700:300:1470:862b:2bff:fe9b:c741
Reading page 'continuous functions on the interval' from web 'mathsnotes'
Page 'continuous functions on the interval'  found
Maruku took 0.002904876 seconds.
Maruku took 0.002353689 seconds.
Maruku took 0.310123551 seconds.
Maruku took 0.301577887 seconds.

At that point, I get lots of Expired fragments, all of which refer to the new page name (or to lists). Then at the end, I see:

Redirected to http://mathsnotes.math.ntnu.no/mathsnotes/show/norm+for+continuous+functions+on+the+interval
Completed in 789ms (DB: 18) | 302 Found [http://mathsnotes.math.ntnu.no/mathsnotes/save/continuous+functions
+on+the+interval]

Seconds later, I go back to the tab with the original page in it and click “reload” to get:

Processing WikiController#show (for 2001:700:300:1470:862b:2bff:fe9b:c741 at 201
1-09-21 14:32:39) [GET]
  Parameters: {"web"=>"mathsnotes", "id"=>"continuous functions on the interval"}
Reading page 'continuous functions on the interval' from web 'mathsnotes'
Page 'continuous functions on the interval' not found
Cached fragment hit: views/mathsnotes/show/continuous+functions+on+the+interval (0.1ms)
Filter chain halted as [#<ActionController::Filters::AroundFilter:0x00000003585248
@kind=:filter, @method=#<Proc:0x00000003585680@/home/stacey/current/others/instiki/vendor/rails/actionpack/
lib/action_controller/caching/actions.rb:64>, @identifier=nil, @options={:only=>#<Set: {"show", "published",
"authors", "tex", "s5", "print", "recently_revised", "list", "file_list", "source", "history", "revision",
"atom_with_content", "atom_with_headlines"}>, :if=>#<Proc:0x00000003585888@/home/stacey/current/others/
instiki/app/controllers/wiki_controller.rb:13>, :unless=>nil}>] did_not_yield.
Completed in 3ms (View: 0, DB: 1) | 200 OK [http://mathsnotes.math.ntnu.no/mathsnotes/show/
continuous+functions+on+the+interval]

In other words, the cached version is there.

(Edit: “A load of content” is a substantial amount.)

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: itex2MML – Topic: Bugs

Once again: thank you very much!

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: Bugs

Talking about cache bugs (nlab thread), I think I just came up against another incarnation of The Dreaded Cache Bug of Bexhill on Sea. I was reorganising pages on my course wiki. I had a page that used to be a single page and now I wanted to split it into several. The stuff on that page was to go on one of the sub-pages, so I renamed that page. But I wanted to use the original page name as the main page. So I removed the automatically inserted redirect. Then I saved the page. The original page was still in the cache. As I wanted to create that page anyway, I manually entered the “new/page name” URL and that worked (“edit/page name” did not).

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: itex2MML – Topic: Feature Requests

Here’s an anti-feature request. itex2MML should never implement \newcommand (or any of its variants). Here’s my reasoning:

  1. If done properly, it leaves one open to the \newcommand{\a}{\a}\a bug. If that isn’t allowed, then it won’t be close to LaTeX’s \newcommand and people will get trapped by the difference.

  2. It would make it harder to truly collaborate. Every page with more than one editor is going to require reading the preamble just to find out what the local conventions are and that’s going to make it harder to edit something that someone else started.

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: itex2MML – Topic: Bugs

(Repost from the other discussion as this looks bug-like to me.)

Okay, let’s try this here. Compare and contrast:

How it ought to look:

lim n01n=0\lim_{n\to 0} \frac{1}{n} = 0

With a \displaystyle at the start. In LaTeX, this is to ensure that the subscript to \lim is underset.

lim n01n=0\displaystyle \lim_{n\to 0} \frac{1}{n} = 0

Now with a bit of grouping to help.

lim n01n=0\displaystyle { \lim_{n\to 0} \frac{1}{n} = 0 }

Somehow, the <mstyle displaystyle="true"> is getting inside the \lim processing, turning the <munder> in to a <msub>.

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: nlab

No, no! Thank you. Let’s see if this makes Urs a little happier!

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: nlab

I want it all (hey-yeah)
I want it all (hey-yeah)
I want it all
And I want it now!

Given the number of links that Urs has on some of the nLab pages then I think this might well be a case for optimisation. If the page name doesn’t change, surely then you don’t have to expire any of the pages that refer to it? So it’s not a “don’t have to expire twice”, it’s a “don’t have to expire once”, isn’t it? Or am I missing something.

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: nlab

On occasion an expiration takes longer than 0.2ms, and when the number is in the thousands then the likelihood of that happening increases considerably, so 10 5 is an overestimate. The largest number that I see in my slightly refined test is about 6000. That takes about 3s normally. In this log run, I had one taking 7s with 1400 expirations.

What are the rules for which pages need fragments expiring when a page is saved? I’m getting a heck of a lot of expired fragments in the logs. Looking a little further then the above figures are underestimates because they don’t take into account the fact that the logs might be split over several files, or be separated by the logs for other requests.

I have one log file consisting of 16876 lines. 15581 of them are ‘Expired fragment’s. There appear to be quite a lot of duplicates as well: In that lot, then views/nlab/list/people gets expired 28 times in a row. It seems to be the list and recently_revised ones that get expired several times in a row.

 
posted 12 years ago
Andrew Stacey 118 posts

Forum: Instiki – Topic: nlab

Okay, so I just did a crude time count. I do have some lists totalling in the order of seconds. I get one at 20s, three at 10s, and about 30 over 1s. (Usual caveats that I can’t tell that all of these are from the same request. They occur concurrently in the logs.)

 
posted 12 years ago
Andrew Stacey 118 posts

edited 12 years ago

Forum: Instiki – Topic: Bugs

Just saw the following in the logs:

ActionView::TemplateError (can't convert nil into String) on line #25 of app/views/wiki/atom.rxml:
22:       else
23:         xml.content('type' => 'xhtml', 'xml:base' => url_for(:only_path => false, :web => @web_name,
                       :action => @link_action, :id => page.name) ) do
24:           xml.div('xmlns' => 'http://www.w3.org/1999/xhtml' ) do
25:             |x| x << rendered_content(page)
26:           end
27:         end
28:       end