My Best Friend Bob
My Best Friend Bob is a children's picture book written and illustrated by Georgie Ripper, first published in 2003. Brian and Bob are guinea pigs who live in a cage in Pete's Pet Palace. One day they are separated, when Bob is sold and suddenly taken away from the pet shop. Brian is inconsolable as he now has no-one to play I-Spy with, and even a peanut can't cheer him up. Misery sets in until he, too, is sold to the same owner as Bob, and the two guinea pigs are reunited in a touching final scene.
Author | Georgie Ripper |
---|---|
Illustrator | Georgie Ripper |
Country | United Kingdom |
Language | English |
Genre | Children's |
Publisher | Macmillan Publishing |
Publication date | April 2003 |
Media type | Paperback |
ISBN | 0-333-96085-8 |
It was published in the United States under the title Brian and Bob: the Tale of Two Guinea Pigs.[1]
Notes
gollark: This is not ideal. How can we use more without boring things like cryptominers?
gollark: Okay, this might fix it, pushed.
gollark: If the issue is what I think it could be, then it's accidentally dropping? data on the threshold of the rolling counter region incorrectly.
gollark: ```nimproc pollTargets(ctx: Ctx) {.async.} = for row in ctx.db.all("SELECT * FROM sites"): var (id, url, rollingTotalPings, rollingSuccessfulPings, rollingLatency, rollingDataSince) = row.unpack((int64, string, int64, int64, int64, Option[Time])) let res = await ctx.pollTarget(url) let threshold = getTime() # drop old data from rolling counters if rollingDataSince.isSome: for row in ctx.db.iterate("SELECT status, latency FROM reqs WHERE timestamp >= ? AND timestamp <= ? AND site = ?", rollingDataSince.get, threshold, id): let (statusRaw, latency) = row.unpack((int, int)) rollingTotalPings -= 1 rollingLatency -= latency if statusRaw <= 0: rollingSuccessfulPings -= 1 # add new data rollingTotalPings += 1 rollingLatency += res.latency if int(res.rtype) <= 0: rollingSuccessfulPings += 1 ctx.db.transaction: ctx.db.exec("UPDATE sites SET rc_total = ?, rc_success = ?, rc_latency = ?, rc_data_since = ? WHERE sid = ?", rollingTotalPings, rollingSuccessfulPings, rollingLatency, threshold, id) ctx.db.exec("INSERT INTO reqs (site, timestamp, status, latency) VALUES (?, ?, ?, ?)", id, getTime(), int(res.rtype), res.latency)```This is the core algorithm.
gollark: Actually, æææææ who even knows.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.