1108
Evil (lemmy.world)
you are viewing a single comment's thread
view the rest of the comments
[-] SpaceNoodle@lemmy.world 46 points 4 days ago

It's less evil than XML or YAML

[-] JackbyDev@programming.dev 3 points 2 days ago
[-] ryathal@sh.itjust.works 33 points 4 days ago

XML is ok for complex docs where you have a detailed structure and relationships. JSON is good for simple objects. YAML is good for being something to switch to for the illusion of progress.

[-] Earflap@reddthat.com 11 points 4 days ago

Meh. I just wish XML was easier to parse. I have to shuttle a lot of XML data back and forth. As far as I can tell, the only way to query the data is to download a whole engine to run a special query language, and that doesn't really integrate into any of my workflows. JSON retains the hierarchy and is trivially parsed in almost any programming language. I bet a JSON file containing the exact same data would be much smaller also, since you don't list each tag twice.

[-] bob_lemon@feddit.org 3 points 2 days ago

I still want someone to explain to me why XML even needs namespaces (which cause about 95% of all issues regarding XML).

There is a way to separate different XML structures, it's called files.

[-] JackbyDev@programming.dev 1 points 2 days ago

XML is also tricky to parse because people forget it is for documents too. It's basically like HTML. Mixed content elements are allowed. <foo>hey <bar>there</bar> friend</foo> is valid XML. So iterating over elements is trickier than JSON (which is just key value pairs and arrays).

[-] ryathal@sh.itjust.works 1 points 3 days ago

There are parsing libraries, maybe not as many or as open, but they exist.

[-] Earflap@reddthat.com 2 points 3 days ago

That's kind of my point though. For being made specifically for the purpose of being machine readable, its kind of a pain in the ass to work with.

I want a command line utility where I can just

xmlquery --query 'some/query' --file foo.xml --output foo-out.xml

or in python


import xml

with open("foo.xml", "r") as file:
    data = xml.load(file.read())

That's the amount of effort I want to put into parsing a data storage format.

[-] DreamlandLividity@lemmy.world 1 points 2 days ago* (last edited 2 days ago)

Idk, I never used the weird advanced features of YAML, but the basics seems really nice for stuff you want people, especially non programmers, to edit. I generally default to YAML for config files.

[-] jonne@infosec.pub 7 points 4 days ago* (last edited 4 days ago)

It's still using the lesser of 3 evils, we need a fourth human readable data interchange format.

[-] cm0002@lemmy.world 17 points 4 days ago

"Problem: There are ~~3~~ 4 standards

[-] laurelraven@lemmy.zip 6 points 3 days ago

Obligatory xkcd

Standards

[-] pivot_root@lemmy.world 10 points 4 days ago* (last edited 4 days ago)

>TOML has entered the channel

Any human-readable format compatible with JSON is inevitably going to be used as an interchange format...

[-] tinkling4938@lemmynsfw.com 5 points 3 days ago

YAML is (mostly) a superset of JSON. Is the face hugger any less evil than the alien bursting out of your chest?

[-] SpaceNoodle@lemmy.world 1 points 3 days ago

It's got enough serious flaws and quirks that I can feel smug hating on it. JSON is far from perfect, but overall it's the least worst of human-readable formats.

Only Python manages to get away with syntactical indentation.

[-] renzev@lemmy.world 4 points 3 days ago

The complaints about yaml's quirks (no evaluating to false, implicit strings, weird number formats, etc.) are valid in theory but I've never encountered them causing any real-life issues.

[-] AnyOldName3@lemmy.world 2 points 3 days ago* (last edited 2 days ago)

~~no doesn't become false, it becomes Norway, and when converted to a boolean, Norway is true. The reason's because one on YAML's native types is an ISO country code enum, and if you tell a compliant YAML implementation to load a file without giving it a schema, that type has higher priority than string. If you then call a function that converts from native type to string, it expands the country code to the country name, and a function that coerces to boolean makes country codes true.~~ This paragraph was wrong. The other paragraphs are unaffected.

The problem's easy to avoid, though. You can just specify a schema, or use a function that grabs a string/bool directly instead of going via the assumed type first.

The real problem with YAML is how many implementations are a long way from being conformant, and load things differently to each other, but that situation's been improving.

[-] JackbyDev@programming.dev 2 points 2 days ago

Are you sure? I've always heard it the other way around and a quick search for "YAML norway' gives this

The reason to why this is problematic in some cases, is “The Norway Problem” YAML has: when you abbreviate Norway to its ISO 3166-1 ALPHA-2 form NO, YAML will return false when parsing it

Also, YAML 1.2 (2009) changed the format of booleans to only be case insensitive true and false. "No" no longer is false if you're parsing as a version 1.2 document.

[-] AnyOldName3@lemmy.world 2 points 2 days ago

Yeah, looks like I'd remembered it backwards. It's still an easily solvable problem by not using a load everything as whatever type you feel like function.

[-] Irelephant@lemm.ee 1 points 2 days ago

That is somehow so much worse

[-] JackbyDev@programming.dev 2 points 2 days ago

I believe they're getting themselves confused. no was false prior to YAML 1.2. This is known as the "Norway problem."

[-] Arghblarg@lemmy.ca 2 points 4 days ago

Hmm, hard to argue with that :P

this post was submitted on 17 Dec 2024
1108 points (99.4% liked)

Lemmy Shitpost

27160 readers
4199 users here now

Welcome to Lemmy Shitpost. Here you can shitpost to your hearts content.

Anything and everything goes. Memes, Jokes, Vents and Banter. Though we still have to comply with lemmy.world instance rules. So behave!


Rules:

1. Be Respectful


Refrain from using harmful language pertaining to a protected characteristic: e.g. race, gender, sexuality, disability or religion.

Refrain from being argumentative when responding or commenting to posts/replies. Personal attacks are not welcome here.

...


2. No Illegal Content


Content that violates the law. Any post/comment found to be in breach of common law will be removed and given to the authorities if required.

That means:

-No promoting violence/threats against any individuals

-No CSA content or Revenge Porn

-No sharing private/personal information (Doxxing)

...


3. No Spam


Posting the same post, no matter the intent is against the rules.

-If you have posted content, please refrain from re-posting said content within this community.

-Do not spam posts with intent to harass, annoy, bully, advertise, scam or harm this community.

-No posting Scams/Advertisements/Phishing Links/IP Grabbers

-No Bots, Bots will be banned from the community.

...


4. No Porn/ExplicitContent


-Do not post explicit content. Lemmy.World is not the instance for NSFW content.

-Do not post Gore or Shock Content.

...


5. No Enciting Harassment,Brigading, Doxxing or Witch Hunts


-Do not Brigade other Communities

-No calls to action against other communities/users within Lemmy or outside of Lemmy.

-No Witch Hunts against users/communities.

-No content that harasses members within or outside of the community.

...


6. NSFW should be behind NSFW tags.


-Content that is NSFW should be behind NSFW tags.

-Content that might be distressing should be kept behind NSFW tags.

...

If you see content that is a breach of the rules, please flag and report the comment and a moderator will take action where they can.


Also check out:

Partnered Communities:

1.Memes

2.Lemmy Review

3.Mildly Infuriating

4.Lemmy Be Wholesome

5.No Stupid Questions

6.You Should Know

7.Comedy Heaven

8.Credible Defense

9.Ten Forward

10.LinuxMemes (Linux themed memes)


Reach out to

All communities included on the sidebar are to be made in compliance with the instance rules. Striker

founded 2 years ago
MODERATORS