Shallow Thoughts : tags : php
Akkana's Musings on Open Source Computing and Technology, Science, and Nature.
Sun, 12 Jul 2026
Our MP4 player box died. It was a little cheapo device that reads
video files (mostly ripped from CD) off an SD card or flash drive,
then plays them on the TV over HDMI.
We've had a couple of them, and they're not great:
the user interface is terrible,
the playback is sometimes laggy and doesn't always have good audio/video
sync. But they're cheap, they do play videos, more or less, and they're
easy to drive from an infrared remote.
On the other hand, I've also read about how this sort of device is often
riddled with malware. That's maybe not a huge risk because we don't give
them access to our network, but still, it seems like a bad idea.
"Let's use a #RaspberryPi as our media center", I said. "It'll be so
much better than those cheap MP4 players. And I'm sure there are options
for training an IR remote, or maybe a way to use a phone as a remote."
Little did I know what I was getting into.
Read more ...
Tags: linux, video, programming, php, web
[
15:46 Jul 12, 2026
More linux |
permalink to this entry |
]
Sun, 27 May 2018
After I'd
switched
from the Google Maps API to Leaflet get my trail map
working on my own website,
the next step was to move it to the Nature Center's website
to replace the broken Google Maps version.
PEEC, unfortunately for me, uses Wordpress (on the theory that this
makes it easier for volunteers and non-technical staff to add
content). I am not a Wordpress person at all; to me, systems
like Wordpress and Drupal mostly add obstacles that mean standard HTML
doesn't work right and has to be modified in nonstandard ways.
This was a case in point.
The Leaflet library for displaying maps relies on calling an
initialization function when the body of the page is loaded:
<body onLoad="javascript:init_trailmap();">
But in a Wordpress website, the <body> tag comes
from Wordpress, so you can't edit it to add an onload.
A web search found lots of people wanting body onloads, and
they had found all sorts of elaborate ruses to get around the problem.
Most of the solutions seemed like they involved editing
site-wide Wordpress files to add special case behavior depending
on the page name. That sounded brittle, especially on a site where
I'm not the Wordpress administrator: would I have to figure this out
all over again every time Wordpress got upgraded?
But I found a trick in a Stack Overflow discussion,
Adding onload to body,
that included a tricky bit of code. There's a javascript function to add
an onload to the
tag; then that javascript is wrapped inside a
PHP function. Then, if I'm reading it correctly, The PHP function registers
itself with Wordpress so it will be called when the Wordpress footer is
added; at that point, the PHP will run, which will add the javascript
to the
body tag in time for for the
onload
even to call the Javascript. Yikes!
But it worked.
Here's what I ended up with, in the PHP page that Wordpress was
already calling for the page:
<?php
/* Wordpress doesn't give you access to the <body> tag to add a call
* to init_trailmap(). This is a workaround to dynamically add that tag.
*/
function add_onload() {
?>
<script type="text/javascript">
document.getElementsByTagName('body')[0].onload = init_trailmap;
</script>
<?php
}
add_action( 'wp_footer', 'add_onload' );
?>
Complicated, but it's a nice trick; and it let us switch to Leaflet
and get the
PEEC
interactive Los Alamos area trail map
working again.
Tags: web, programming, javascript, php, wordpress, mapping
[
15:49 May 27, 2018
More tech/web |
permalink to this entry |
]
Thu, 30 Oct 2014
Today dinner was a bit delayed because I got caught up dealing with an
RSS feed that wasn't feeding. The website was down, and Python's
urllib2, which I use in my
"feedme" RSS fetcher,
has an inordinately long timeout.
That certainly isn't the first time that's happened, but I'd like it
to be the last. So I started to write code to set a shorter timeout,
and realized: how does one test that? Of course, the offending site
was working again by the time I finished eating dinner, went for a
little walk then sat down to code.
I did a lot of web searching, hoping maybe someone had already set up
a web service somewhere that times out for testing timeout code.
No such luck. And discussions of how to set up such a site
always seemed to center around installing elaborate heavyweight Java
server-side packages. Surely there must be an easier way!
How about PHP? A web search for that wasn't helpful either. But I
decided to try the simplest possible approach ... and it worked!
Just put something like this at the beginning of your HTML page
(assuming, of course, your server has PHP enabled):
<?php sleep(500); ?>
Of course, you can adjust that 500 to be any delay you like.
Or you can even make the timeout adjustable, with a
few more lines of code:
<?php
if (isset($_GET['timeout']))
sleep($_GET['timeout']);
else
sleep(500);
?>
Then surf to yourpage.php?timeout=6 and watch the page load
after six seconds.
Simple once I thought of it, but it's still surprising no one
had written it up as a cookbook formula. It certainly is handy.
Now I just need to get some Python timeout-handling code working.
Tags: web, tech, programming, php
[
19:38 Oct 30, 2014
More tech/web |
permalink to this entry |
]