See page 4, section 9 of the latest ECMA for JSON: https://ecma-international.org/wp-content/uploads/ECMA-404_2...
3,429 karma · joined July 6, 2017
See page 4, section 9 of the latest ECMA for JSON: https://ecma-international.org/wp-content/uploads/ECMA-404_2...
JSON_PRETTY_PRINT is irrelevant. Escaping slashes is the default behavior of json_encode(). To switch it off, use JSON_UNESCAPED_SLASHES.
After reading BAR's homepage and the FAQ, I still have no idea what to expect. It could be a purely online game with ads and in-game buys, through a central proprietary server. It could also have a single player campaign.
I one met a visiting Iranian academic just after I'd learned about the Shahnameh. I'd also read the opinion of a French scholar who thought its language was, for a modern Iranian, like Montaigne for a modern French. The Iranian woman told me that very few people in Iran actually read the book. It's very long, and hard to grasp for untrained readers. But most people know some of its stories and characters, because they are often mentioned in everyday life, and because the abridged prose books are widespread.
BTW, I don't know which editions are the most popular in Iran. Wikipedia says the Shahnameh was heavily modified and modernized up to the 14th century, when its most famous illustrated edition was created. The book most read today is probably not a scholar edition.
Books written in the 17th century or later are easy to read. Of course, the meaning of some words can change over time but that's a minor trouble. I believe Molière and Racine are still studied in school nowadays, but the first name that came to my mind was Cyrano de Bergerac (the writer, not the fictitious character).
Books from the 16th need practice, but I think anyone who tries hard will get used to the language. I enjoyed Rabelais's Pantagruel and Gargantua a lot, and I first read them by myself when I was in highschool (I knew a bit of Latin and Greek, which helped).
Before that, French was much more diverse; the famous split into "langue d'oc" and "langue d'oïl" (terms for "oui" — yes — at the time) is a simplification, because there were many dialects with blurry contours over space and time.
I've read several 11th-12th novels about the Round Table, but I was already experienced in Old French when I started, and I think most readers would struggle to make sense of it. It may depend on the dialect; I remember "Mort Artur" was easier than "Lancelot, le chevalier à la charette".
"La chanson de Roland" (11th century, Old French named anglo-normand) is one of my favorite books of all times. Reading it for the first time was a long process — I learned the declensions of Old French and a lot of vocabulary — but it was also fun, like deciphering some mystery. And the poesy is a marvel, epic, incredibly concise, surprising and deep.
Before that (9th-10th), Old French was even closer to Latin.
I think you misunderstood, since that's not about optimism. Years ago, smart students from all over the world could hope for a successful career in American research. Now, in the USA many doors are closing in most academic domains, and few (potential) researchers dare plan any success story.
BTW, they misunderstood their own example of "Hotel Iris" by Yoko Ogawa when they wrote "the same work is duplicated four times." In fact, those four entries in the list point to distinct works.
One of these is a French publication by the publisher Actes Sud. Translations are not the same work as the original. They are derived works.
But it's true this list is a mess. Another entriy has 3 editions, one in English and two in Spanish, so it's obviously an error that mixes two distinct works.
Your link is irrelevant. It points to OpenBSD which uses rc, not sysv. The 3 lines of this rc startup script use a file of 400 lines of shell with commands that don't exist in SysVinit.
With sysv, the difficulty depended on the local tools because the launching scripts could not be shared across Linux distributions. Debian used the compiled helper `start-stop-daemon` while Redhat did not.
With sysv, some sysadmin tasks require external tools. Try to write a launching script with a smart autorestart in case of crash. Make it work even when the daemon forks. Do not assume that the daemon writes its initial PID anywhere. IIRC, to get this feature, we had to drop sysv for runit, two decades ago. Now it's just 2 lines in a systemd unit.
Most modern programmers don't learn COBOL60 or Commodore BASIC. Modern mathematician very rarely study writings of Euler or Gauss; even 50 years old math books may be hard to grasp for modern students.
I agree that using a simpler tool for educational purpose is useful, but since SysVinit is obsoleted almost everywhere, it made sense to drop it. LFS could have chosen a simpler init than the domain standard, like runit or s6-init.
With MermaidJS, converting a diagram inside a web page requires adding a handful of lines to a HTML page. The execution is fast and local.
Kroki is a web-service. To use it in a web page means adding a dependency to an external provider (a free service exists, but asks for fundings). An alternative is self-hosting by running a Kroki container.
A few years ago, I added Mermaid diagrams to a project in a few minutes of work. Had we needed a much more complex tool, maybe I would have gone with Kroki, but not by myself; it would have required a change in the deploying process of the project.
Unfortunately, there are many tests for the server, and none for the client.
1. The autoclose syntax does not exist in HTML5, and a trailing slash after a tag is always ignored. It's therefore recommended to avoid this syntax. I.e write <br> instead of <br />. For details and a list of void elements, see https://developer.mozilla.org/en-US/docs/Glossary/Void_eleme...
2. It's not mandatory to close tags when the parser can guess where they end. E.g. a paragraph cannot contain any line-block, so <p>a<div>b</div> is the same as <p>a</p><div>b</div>. It depends on the context, but putting an explicit end tag is usually less error-prone.
I haven't read the paywalled Science paper, but The Economist extracted a graph which shows that the purity of Fentanyl pills was stable till the first months of 2024, then dropped sharply. The purity of the powder peaked in 2023, then went down in 2024, back to its older levels. They suppose that it proves the supply was short, but another researcher even states that the supply of Fentanyl precursors didn't change until the end of 2024.
Anyway, the epidemic plateaued by the start of 2022, then went down after August 2023; Source https://www.cdc.gov/nchs/nvss/vsrr/drug-overdose-data.htm
Why did the death rate slow down for one year, then go down many months before any sign of supply changes?
> One is the depiction of desolation and human loneliness before the American continent was developed into a prosperous land.
Of course, classical European literature didn't focus on the American wilderness. Though the most famous book on this theme is probably Defoe's Robinson Crusoe. And I enjoyed T.E. Lawrence' Seven Pillars of Wisdom which most people know through the film; the Arabian desert was a good place for loneliness in the wilderness.
> Another is the pursuit of the American Dream, where people achieve success through relentless struggle.
Like wise, the American Dream is an American myth, which is rarely the focus outside of the USA. But searching success through relentless struggle is a frequent theme. For instance, Stendhal's Le rouge et le noir or Maupassant's Bel-ami. These are from two of the most famous classical French authors, but there are many novels about hard-working people that reach success.
> The third is what this novel expresses: what happens after success? Money and career cannot solve all problems; people need more to fill an entire life.
As you like Russian literature, I suppose you've read Goncharov's Oblomov and Chekov's theater, especially Uncle Vania. That theme is central in one of the most famous French novel, Flaubert's Madame Bovary. The excellent Italian writer Alberto Moravia also has many novels about this, the most famous being Il disprezzo and my favourite being Gli indifferenti. I also like D'Annunzio's Il piacere much more than The Great Gatsby. I would argue that variations of this theme are universal, with old writings like the Bibles's Qohelet and even more Sumer's Gilgamesh.
> On January 1, 2026, books published in 1930 enter the U.S. public domain.
The Copyright laws are different in each country, and it's a non-sense in the modern world.
A few years ago, I was searching for books written by Alexandra David-Neel. I found them on a Canadian (IIRC) website, but downloads were filtered by geo-IP, since what was in the public domain there was not yet public in France. One of the books I wanted was written before 1900, and not in print since then. Yet the author died in 1969, aged 100, so the French Public Domain for her works will start in 2040.
Another example: "As I lay dying" by William Faulkner is now Public Domain in the USA. It was Public Domain in Canada from 2013 to 2023. Then the law changed, and the copyright was extended by 20 years, and reinstated for this book until 2032 — which is 70 years after the author's death in 1962.
I wrote a few times to my local MPs ("député", as we call them in France). I usually got a response, though I suspect it was written by their secretary with no other consequence. In one case (related to privacy against surveillance), they raised a question in the congress, which had just a symbolic impact.
It may be different in other countries. In France, Parliament is de-facto a marginal power against a strong executive power. Even the legal terms are symptomatic of this situation: the government submits a "project of law" while MPs submit a "proposal of law" (which, for members of the governing party, is almost always written by the government then endorsed by some loyal MP).
Over the years, I've used setup.py, pip, pipenv (which kept crashing though it was an official recommendation), manual venv+pip (or virtualenv? I vaguely remember there were 2 similar tools and none was part of a minimal Python install). Does uv work in all of these cases? The uv doc pointed out by the GP is vague about legacy projects, though I've just skimmed through the long page.
IIRC, Python tools didn't share their data across projects, so they could build the same heavy dependencies multiple times. I've also seen projects with incomplete dependencies (installed through Conda, IIRC) which were a major pain to get working. For many years, the only simple and sane way to run some Python code was in a Docker image, which has its own drawbacks.
No, that's false. It's the other way around.
“If Caddy cannot get a certificate from Let's Encrypt, it will try with ZeroSSL”. Source: https://caddyserver.com/docs/automatic-https#issuer-fallback
Which makes sense, since the ACME access to ZeroSSL must go through an account created by a manual registration step. Unless the landscape changed very recently, LE is still the only free ACME that does not require registration. Source: https://poshac.me/docs/v4/Guides/ACME-CA-Comparison/#acme-ca...
An excellent novel, simple, yet moving. Why do we live and what is our connection to nature?
2. Fifth Business (1970, Canada). Robertson Davies.
I've read thousands of novels, so I'm always glad to read something new and unpredictable, but still based on the best premise: interesting characters.
3. Sostiene Pereira (1994, Italy). Pereira Maintains. Antonio Tabucchi.
My favorite book this year. A deep and smart and tense plunge into the Portuguese life of a few decades ago. Italian literature has so many gems.
I've read at least two articles authored by historians that thought this book was full of factual errors and misunderstandings. One of them had studied Eichmann's life and correspondance, and found that he was far from the character that Hannah Arendt depicted. IIRC, the other article tried to explain her bias; I remember she hated Jerusalem and despised most people she met in Israel.
It may be good read, but don't expect the book to be fair or truthful.
Most of the time, when working on a new commit I have a few changes related to recent commits. So _when I'm done with all that_, I commit selectively the new work, then dispatch the rest among the other commits:
git add -p ; git commit
git add -u ; git absorb
Sometimes, I use `commit --fixup` instead of the automatic `absorb`. Anyway, I tried Jujutsu for a few weeks, some was good and some was bad; it didn't "shine" enough and I went back to pure Git.That's the bright side of Python. They should mention the dark side, or Why _not_ to use Python for scripting.
First of all, the promise of easy portability breaks as soon as the script has dependencies. Try to install some Python program on a server where you're not root and a minimal python3 is installed.
The stability isn't very good in my experience either. I've often seen programs not compatible with recent releases of Python, either explicitly in the README or implicitly at runtime. Unmaintained Python code breaks.
Unfortunately, there is no silver bullet. Posix shell or bash may be better for simple scripts; Perl or Python if you know you won't require dependencies or if you have a good control on where to install the script; languages that compile to static executables are not really "scripting", but may be a better choice for long(term usage. These past years, I tend to keep away from Python as much as I can.
This XML will usually not be read by the companies that pay the invoice. For instance, in France by the end of 2027, every business will have to send e-invoices, but never directly to the real recipient. The business sends the invoice to a registered go-between, which will ask a national platform for the address of the recipient's go-between, etc. So, only those official go-between companies will have to securely parse the XML.
BTW, in 2022 when the French government decided to make e-invoicing mandatory, it announced that it would develop a national unique go-between platform. Two years later, it dropped that part of the project and announced that there would be an official list of private platforms. So, by the end of 2026 or 2027, every French business will have to select one of the 112 platforms and buy a subscription. It give the State more control, but for small businesses it means higher costs and complexity.
But that's not the first time that a community is tagged "Chinese communists" and attacked as such. Now imagine if some maga/alt-right/whatever leaders asked their followers to attack the "communist" OpenStreetMap by injecting a bit of false data everyday. Could OSM defend itself as easily?
Codeberg is a website powered by Forgejo which is a fork of Gitea.
> Both forks originated for "philosophical" reasons, not technical ones
Gitea forked because one developer was the only owner of Gogs' repository and refused to share maintaining rights. The fork was more "practical" than "philosophical".
Forgejo forked when a leading developer secretly created a company with the trademark of Gitea and its logo. The fork was to gain back control over the assets of the project (name/trademark, logo, etc.).
- URI extension: there was already the internal `parse_url()` which was imperfect, and alternative libraries that were RFC 3986 compliant. An official extension will bring speed, but now there will be 2 official ways to parse URLs.
- The pipe operator is a matter of taste. In the release notes, the new code is more verbose, because it defines anonymous functions. This alternative syntax means keeping a consistent code style will be harder.
- The update of "clone" replaces 2 lines of code in some cases. Unless I misunderstood, it's a very minor change.
- The #Discard/void will replace the similar feature from static analyzers.
- Closures in constants is one of the 2 features that bring more than an alternative syntax. It's one more little step toward a preprocessor. But I'm not thrilled about the future #attributes assigned with complex closures.
- cURL persistent handles are a real performance feature, because curl_init() is costly.
- array_first() is a minor syntax-sugar. In a project of 100k+ lines of PHP, I probably could use it twice or thrice. Was it worth a global function?
#[SkipDiscovery(static function (Container $container): bool {
return ! $container->get(Application::class) instanceof ConsoleApplication;
})]
final class BlogPostEventHandlers
{ /* … */ }
As a side note, even PHP's official wiki cannot highlight correctly the multiline attributes behind a "#". See https://wiki.php.net/rfc/closures_in_const_exprSo those bloody foreigners that live in the United Kingdom and dare drive there are from Australia, Canada, Japan, Switzerland... Countries well-known for their dangerous drivers! /s
My native tongue is French, so in my case it was Rabelais' "Gargantua" (~1500) and "La Chanson de Roland" (~1100). Both books require some motivation to get used to their respective languages. After a while, I could read almost fluently Rabelais' prose ; it was immensely funny, coarse and impudent. Roland was harder to grasp, I had to use a specialized dictionary, but it's a concise and epic tale, and I read some verses so many times I ended learning them by rote.
Even translated, some short books from a very different culture far in the past can be challenging. For instance "Eugene Onegin" or "Gilgamesh". As a counterpoint, "The art of war" is an easy read, though written 2300 years ago in a small kingdom of China.
A last comment: the author conflate books that are difficult because of a technicality in their writing, and those that are strange in their story. The translations of Abe Kobo or Kafka I've read had nothing difficult in their words, but the surrealist plots were very unsettling. In "Pedro Páramo" the reader feels lost in a harsh world and unsure of reality. Meanwhile, Perec's "La disparition" or Becket's "Molloy" are more about style tricks.
I had a test case in mind while reading the documentation: running a custom web service with Nginx as a reverse-proxy. In the documentation, I couldn't find anything about creating a service. Are we supposed to write a frontend script (in ksh) that accepts various arguments (ie start/reload/...)? And what about the logs of this wrapper? And if I want an auto-restart when my program crashes, I have to find another tool that will wrap and monitor the process? I've done all this tedious work in Linux long ago, and I'm not willing to do it again.
If the question was "Why OpenBSD instead of Linux", I don't think documentation is a good argument. In fact, the only strong response I've read is "to try something a bit different and more niche".