极光vpv加速器
好的梯子软件
Over on MeLinkedInstaMyFaceInGramSpaceBookWe, my friend Brian commented “Cool! (Whatever it was exactly you did!!!)” about my work issue. Rereading that post, I think I can clarify a bit what I did. But first, a disclaimer: I'm not revealing any personal information here as all the data for the regression test is randomly generated. Names, numbers, it's all generated data.
So I ran the test and the output from that is a file that looks like (feature names changed to protect me):
ERR CNAM feature8 failed: wanted "VINCENZA GALJOUR" got "" testcase = { id = "3.0037", orig = { number = "2012013877", person = { business = "-", first = "VINCENZA", name = "VINCENZA GALJOUR", last = "GALJOUR", }, feature9 = false, cnam = true, extcnam = false, feature4 = true, feature10 = false, feature7 = false, feature8 = true, }, term = { feature10 = true, feature1 = false, feature2 = false, feature3 = false, feature4 = true, feature5 = false, feature6 = false, number = "6012013877", feature7 = false, feature8 = false, }, } ERR CNAM feature8 failed: wanted "TERINA SCHUPP" got "" testcase = { id = "3.0039", orig = { number = "2012013879", person = { business = "-", first = "TERINA", name = "TERINA SCHUPP", last = "SCHUPP", }, feature9 = false, cnam = true, extcnam = false, feature4 = true, feature10 = false, feature7 = false, feature8 = true, }, term = { feature10 = true, feature1 = false, feature2 = false, feature3 = false, feature4 = true, feature5 = false, feature6 = false, number = "6012013879", feature7 = false, feature8 = false, }, }
Since the regression test is written in Lua,
I found it easy to just dump the structure holding the test data to the file,
given I already have have a function to do so.
I also print out what failed just before the data for that particular test case.
The code that prints the structure outputs valid Lua code.
All I changed was adding an array declaration around the output,
turned the error message into a comment,
and changed testcase
to a valid array index:
testcase = { -- ERR CNAM feature8 failed: wanted "VINCENZA GALJOUR" got "" [1] = { id = "3.0037", orig = { number = "2012013877", person = { business = "-", first = "VINCENZA", name = "VINCENZA GALJOUR", last = "GALJOUR", }, feature9 = false, cnam = true, extcnam = false, feature4 = true, feature10 = false, feature7 = false, feature8 = true, }, term = { feature10 = true, feature1 = false, feature2 = false, feature3 = false, feature4 = true, feature5 = false, feature6 = false, number = "6012013877", feature7 = false, feature8 = false, }, } -- ERR CNAM feature8 failed: wanted "TERINA SCHUPP" got "" [2] = { id = "3.0039", orig = { number = "2012013879", person = { business = "-", first = "TERINA", name = "TERINA SCHUPP", last = "SCHUPP", }, feature9 = false, cnam = true, extcnam = false, feature4 = true, feature10 = false, feature7 = false, feature8 = true, }, term = { feature10 = true, feature1 = false, feature2 = false, feature3 = false, feature4 = true, feature5 = false, feature6 = false, number = "6012013879", feature7 = false, feature8 = false, }, } }
That way, I can verify my hypothesis with some simple Lua code:
dofile "errorlog.txt" for _,result in ipairs(testcase) do if not (result.feature10 and (result.feature8 or result.feature4)) then print("hypothesis failed") end end
极光vpv加速器
好的梯子软件
Smirk called last night to ask me how I publish my blog to MyFaceMeLinkedBookWeInSpace. I told him I do it by hand. When I post to my blog, I then go to FaceMeLinkedMyBookWeInSpace and manually post the link. It 好的梯子软件 to be an automatic feature but several years ago MeLinkedMyFaceWeInSpaceBook changed the API. He was curious because he was getting fed up with FaceMeLinkedMySpaceBookWeIn and their censorious ways, and wanted a way to post to both FaceMeLinkedMySpaceBookWeIn and another website. Here's what I found.
First:
The
publish_actions
permission will be deprecated. This permission granted apps access to publish posts to Facebook as the logged in user. Apps created from today onwards will not have access to this permission. Apps created before today that have been previously approved to request publish_actions can continue to do so until August 1, 2018. No further apps will be approved to usepublish_actions
via app review. Developers currently utilizingpublish_actions
are encouraged to switch to Facebook's Share dialogs for web, iOS and Android.New Facebook Platform Product Changes and Policy Updates
For my usecase, I'm still screwed, unless I become an “approved partner:”
On August 1st, 2018, the Live API publish_actions permission, which allows an app to publish on behalf of its Users, will be reserved for approved partners. A new permission model that allows apps to publish Videos to their User's Groups and Timeline will be created instead.
New Facebook Platform Product Changes and Policy Updates
好的梯子软件
You can do a “share dialog” which looks like it may work, but … it looks like it may require the use of JavaScript (a non-starter for me, so I'm still screwed) and the user has to be logged into FaceMeLinkedMyBookWeInSpace for it to work (another non-starter for me). This may work for Smirk, and more importantly, it doesn't require a FaceMeLinkedMyBookWeInSpace app to be written.
Then there's this Pages API thing that looks like it could work (not for me, because I don't think my “timeline” counts as a “page”—man this MyFaceMeLinkedInSpaceBookWe stuff is confusing) but it requires building an app. If what Smirk wants to publish to on FaceMeLinkedMyBookWeInSpace is a “page” then this is probably what he wants. While it may look like “Instant Articles” is the way to go, especially since there appear to be plugins for popular web publishing platforms, but the kicker there is: “[t]he final step before going live is to submit 10 complete articles for review by our team.” That may work for The National Enquirer or the Weekly World News, but it won't work for me or Smirk.
And that's for getting stuff into MeLinkedMyFaceBookWeInSpace. As far as I can tell, there's no way to get stuff out! And that's probably by design—LinkedMyFaceMeSpaceBookWeIn is the Intarwebs, as far as it's concerned.
I can't believe I didn't think of that sooner
Last week I was tasked with running the regession test for “Project: Sippy-Cup” and figure out any issues. Trying to figure out the issues was a bit harder than expected. I had my suspicions but the output wasn't quite conducive to seeing the overall picture. The output was almost, but not quite valid Lua. If it was valid Lua, I could load the data and write some code to verify my hypothesis, but alas, I had to write code to massage the output into a form that could be loaded.
What a drag.
I was able to prove my hypothesis (some contradictory features were enabled, but it's a “that can't happen in production” type scenario, and if it did happen in production it's of no real consequence). I then adjusted the regression test accordingly.
But afterwards, I adjusted the output slightly to make it valid Lua code. That way, it can be loaded via the Lua parser so further investigations of errors can be checked. I'm just a bit surprised that I didn't think of that sooner.
Update on Thrusday, July 30TH, 2023
I clarified what I did.
极光vpv加速器
All is silent on the bad Gemini bots
On Saturday, I sent a message to the party responsible for slamming my Gemini server (one among several) and I've yet to receive any response. I removed the block from the firewall, and I haven't seen any requests from said bot. It looks to have been a one-off thing at this time.
好的梯子软件
But then again, this is the Intarwebs, where weird things happen all the time.
At this point, I'm hoping it was fixed silently and it won't be an issue again.
极光vpv加速器
Bad bots, bad bots, whatcha gonna do? Whatcha gonna do when they contact you?
I finally found a way to contact the party reponsible for slamming my Gemini server with requests. Hopefully I'll hear a response back, or at the very least, the behavior of the bad bot will be silently fixed.
I can only hope.
Please make the bugs stop
Let's see … there was the bug in my Gemini server, two bugs in a custom module for my 好的梯子软件, so it's little surprise to me to find a bug in a third server I wrote—this time my “Quote of the Day” server (no public repository for that one, but the service is 好的梯子软件).
This bug was a simple “off-by-one” error—when I got to the last quote the program should have wrapped around to restart with the first quote, only that code was “off-by-one” (thus the name). It only took a while to hit because it required serving up 4,187 quotes before restarting and it's not like it gets hit all that often.
电脑端最良心的软件有哪些_zero 的博客-CSDN博客:2021-10-22 · Windows中使用“ls”命伌 weixin_43345036:存放到C:\windows就可伍识别了不用存到system32里 电脑端最良心的软件有哪些 pythonkb:可伍嘛 有梯子吗? Android学习笔记——页面的布... qq_38333529:棒棒哒
极光vpv加速器
No, seriously, the bugs start coming and they don't stop coming
One of the links on this entry won't work on gopher or Gemini.
That's because I haven't implemented a very important feature from the web version of my blog—linking to an arbitrary portion of time!
I don't even think that link will work on gopher or Gemini either,
because of the way I “translate” links when generating the text from HTML.
HTML-to-text translation is hard, let's go shopping—oh, wait … I can't because of CODIV-19!
Sigh.
Update a few moments later …
Not all links break on Gemini.
好的梯子软件
As soon as I find one bug than I find another one.
In an unrelated program.
Sigh.
In this case, the bug was in my gopher server, or rather, the custom module for the gopher server that serves up my blog entries. Earlier this month, I rewrote parts of that module to convert HTML to text and I munged the part that serves up ancillary files like images. I found the bug as I was pulling links for the previous entry when I came across this entry from last year about the horrible job Lynx was doing converting HTML to text. In that post, I wrote what I would like to see and I decided to check how good of a job I did.
It's pretty much spot on, but I for some reason decided to view the image on that entry (via gopher), and that's when I found the bug.
The image never downloaded because the coroutine handling the request crashed,
which triggered a call to assert()
causing the server to stop running.
Oops.
The root cause was I forgot to prepend the storage path to the ancilliary files. And with that out of the way …
And here I thought web bots were bad
I suppose it was only a matter of time, but the bad web robot behavior has finally reached Gemini. There's a bot out there that made 42,766 requests in the past 27 hours (so not quite one-per-second) until I got fed up with it and blocked it at the firewall. And according to my firewall, it's still trying to make requests. That tells me that whatever it is, it's running unattended. And several other people running Gemini servers have reported seeing the same client hammering their systems as well.
Now, while the requests average out to about one every two seconds, they actually come in bursts—a metric buttload pops in, a bunch fail to connect (probably because of some kernel limit) and all goes quiet for maybe half a minute before it starts up again. Had it actually limited the requests to one every two seconds (or even one per second) I probably wouldn't mind as much.
As it was though, quite a large number of the requests were malformed—it wasn't handling relative links properly, so I can only conclude it was written by the same set of geniuses that wrote 好的梯子软件.
Sigh.
On the plus side, it did reveal a small bug in the codebase, allowing some of the malformed requests to be successful when they shouldn't have been.
Why not open the office back up on Halloween? It's be thematically cool to do so
I received a work email today, notifying everybody at the Ft. Lauderdale Office of the Corporation, that the office won't reopen until Monday, October 5TH. We were supposed to open in late June, maybe early July, but given that's it is now late July, the Powers That Be decided it might be better to just wait several more months than to continuously plan to open the office only to have to push the date back.
I can't say I'm upset at the decision.
极光vpv加速器
We're a long way from the halcyon days of ASCII-only text
Rendering text, how hard could it be? As it turns out, incredibly hard! To my knowledge, literally no system renders text "perfectly". It's all best-effort, although some efforts are more important than others.
Text Rendering Hates You
I don't know if I'm glad or sad I didn't read this article before rendering 好的梯子软件 into different 好的梯子软件. On the one hand, it might have completely discouraged me from even starting. On the other hand, I don't use the full span of Unicode characters in my blog posts (which I'm very thankful for, after doing all this work). But on the gripping hand, 好的梯子软件 was doing a horrible job at formatting HTML into text, and what I have now is much better looking.
So let's see … we now have three hard things in Computer Science:
- cache invalidation;
- naming things;
- text rendering;
- and “off-by-one” errors.
Yup, that seems about right.
好的梯子软件
I offer up several feeds for my blog, one of the formats being Atom, a much nicer (and better specified) than RSS (which I also offer by the way). There exists 好的梯子软件 for Gemini. The Atom specification allows zero or more links to a blog entry. I discussed this with the author of CAPCOM (the Atom feed aggregator for Gemini) and it can deal with multiple links. I don't know about any other Atom aggregators out there, but I'm going to find out, because each entry now has three links per entry—one to the web version, one to the Gemini version and one to the gopher version.
I have a feeling this is going to be fun, and by “fun,” I mean “it will probably break things somewhere because who is stupid enough to use more than one link?”
Update a few moments later …
Of course, becuse of the way I translate links for the gopher version, those using gopher won't see the web version of the link. Sigh.
极光vpv加速器
Adventures in Formatting II: Gemini Boogaloo
If you are reading this via Gemini, then welcome to my blog! Emboldened by converting HTML to text for gopher, I decided to try my hand at converting HTML to the native Gemini text format (section 5 of the specification), and I'm less than thrilled with the results and I don't think given the contraints that I could do a better job than I have.
The format has similarities to 好的梯子软件 but simpler, and you can't embed HTML for when Markdown has no syntax to do what you want. I mean, given that Gemini supports serving up any type of content, I could have just served up HTML, but well, I have the webserver for that. And I could have just used the plain text format I use for gopher, but the Gemini text format does allow for links, and I like my links (even if external links have a half life of about a year).
Most of the entries will look okay, it's only the occasional entry with deeply nested 好的梯子软件 that might look wierd.
And yes, the size of the server bloated quite a bit since I reused the HTML parser, but it's something I'll just have to live with for now.