#tooldev-general
1 messages Β· Page 121 of 1
aha...
src becomes manipulated by the Ooz_Decompress
I thought I was becoming mad.
but only the first time around
strange
Eh?
internal unsafe class LibOoz
{
[DllImport("Bundle\\lib\\libooz.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int Ooz_Decompress(void* compressedContent, int compressedLength, void* decompressedContent, int decompressedSize,
int fuzz, int crc, int verbose, byte[]? dst_base, int e, IntPtr cb, IntPtr cb_ctx, IntPtr scratch, int scratch_size, int threadPhase);
public static int Ooz_Decompress(Span<byte> compressedContent, int compressedLength, Span<byte> decompressedContent, int decompressedSize)
{
void* src = Unsafe.AsPointer(ref compressedContent[0]);
void* dst = Unsafe.AsPointer(ref decompressedContent[0]);
return Ooz_Decompress(src, compressedLength, dst, decompressedSize, 0, 0, 0, null, 0, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, 0, 0);
}
}
sorry for the long lines
but the data in src becomes mutated for some reason
I'll check in a bit what changed, running out of nicotine here, so need to go to store
@simple ravine Verified, decompressed with actual read-only pages and it went bada-boom.
I'm on Linux so I can't tell if the closed-source decompressor does it as well.
I guess that there needs to be documentation on that you either need to copy-on-write your file mapping (MAP_PRIVATE) or decompress from a mutable buffer.
fuck, that means I need to copy the content
I'm curious to whether the block is safe to re-decompress after the first go.
it is
partly
at least
first I just checked the first 20 and last 20 bytes to see if they were the same, and they were
so i started to believe my code was shit somewhere
My thing is a 2-step decompression process, first it decompresses the _index and then goes to check on the inner stuff
Time to heat up some dinner and see if I can survey this with all blocks.
Did you inspect the output tho?
No, that's what's crashing, the BundleIndex.D(dst) will read the stuff
haven't gotten to the store yet, showered and about to go there, will be back in ~20-30
Enjoy the weather π
Hah, the game doesn't want me to play it today:
85425296 31cb [CRIT Client 7080] [VULKAN] vk::DeviceLostError::DeviceLostError: vk::Queue::submit
Did the drivers to a hickup?
Been having the game just freeze and drop to desktop, like once a day or so.
Seems to be NV drivers faulting or lost Vulkan devices, so yay, could be anything.
ah, so probably what happens is that the drivers eject itself when it freezes
does other things also seems to "reset" like desktop manager / other windows apps?
Nope, just the game cleanly dropping out.
Heard a loud "clack" from near my computer when it first crashed today, so heaven knows what's up π
Guess it's haunted.
ouch.
Running on drivers from late July, so probably nothing to lose by upgrading... could code in the meantime π
omg why on earth would the damn thing not be idempotent
Makes sense to use the input area for scratch space if you don't want to separately allocate some.
For particular values of "sense" 
ahh wait, there is an IntPtr for scratch here
wonder if I allocate something there, it won't touch my damn source
Note that ooz doesn't have the argument, only actual oodle.
yeah, it did nothing
The wrapper export I made discards all the tail arguments, only there for signature equivalence.
@worthy cape your 0.158 does that include FNV1a hashing?
Nothing to hash, it's just for decompressing and reading the information in the index bundle and directory bundle.
I think I need a better algorithm for mapping reading the filenames
My 200ms read the outer and the inner bundle and grabs the paths etc
0.85s includes building acceleration structures from hash to directory and hash to file entries.
Also generating and printing all possible paths puts it at 1.96s
this is how I do it, do you have any pointers or suggestions on how it can be done smarter?
the constructor of PathString will FNV1a hash and store the name and the hash inside of it
Mine just emits plain boring strings right now, but I'd be tempted to have a PathSet of sorts that one could test strings against. Depends really on what operations you want to do.
Well, I think I want to create IFile and IDirectory that is "merged" with the VFS
You could save a bunch of effort by storing the common directory name and the leaf strings, handy if you want to access just the filename anyway.
Also, you could reuse intermediate FNV state, you don't have to compute it from the start every time.
yeah, I think I'll be creating a structure out of it
Assuming you've got an incremental FNV1a, you could give your PathString an additional ctor where you can provide such data up-front, or make it conditional and not generated until you need it.
ah, yes.. that's a fractional of the cpu time, but good point
Of course, this assumes that it's a cost at all.
about 10%
I should figure out what kind of interface I need from the end-app code and implement accordingly, needs both directory listings and direct full path access.
I dont want the consumer of the API to worry about bundles at all, it should be like they're not there
so I will want to provide the inside tree with the rest of it as one
they'll just be different implementations of an interface of IDirectory and IFile ideally
hopefully inside files are not overlapping two different bundle files
yeah
so if you want to access Mods.dat for an example, you'd just do something similar to...
var fs = new Ggpk(pathToGggk)["Data"]["Mods.dat"];
I'm a bit afraid of hitting the disk on every directory listing.
what's the alternative approach you're thinking of?
Works better if you're overloading [] to look for the particular name in a bundle first and then on disk only if it doesn't find it in the bundle set.
well, yes it would index the bundle index proactively, and have that in there ready to go
While if you do something like generate a full concrete Dict<String, Entry>, you're going to pay the enumeration cost up-front for both index and disk in order to produce a merged dict.
not necessarily double the cost each time, assuming most files are bundles, you'd check the bundle index first
You can't check if first if you're working with dicts like that tho.
Not sure what kind of type your ["Data"] would operate on, my C# is a bit behind.
if you overload the indexer
Icky fact - my Steam PoE installation is 133k files across 2353 folders.
public class VfsExample
{
private readonly Dictionary<string, object> _bundleStuff;
private readonly Dictionary<string, object> _otherStuff;
public object this[string index]
{
get
{
if (_bundleStuff.TryGetValue(index, out var bFile))
return bFile;
else if (_otherStuff.TryGetValue(index, out var oFile))
return oFile;
throw new Exception("boo");
}
}
}
simplified example obv
(last I looked at the cursed platform, C# didn't have operator overloading π )
it has all the overloadings
it has had it for like 10 years or so?
assignment operators are not possible though
Given that this exists, for some reason I thought C# didn't have overloading but it might not just have been sufficiently capable for something like Spirit's metaprogramming.
I'm not familiar with Spirit's metaprogramming
Spirit uses a bajillion overloaded operators to express PEG grammars succinctly as a DSL in C++.
Anyway, yay, make something cool.
π hopefully
Any news on when/if the character-window API will be available through OAuth? The newer chrome versions with SameSite props scare me a bit for the future of Exilence.
(Not entirely sure what that property will implicate for us yet)
Are Electron apps affected by SameSite at all?
I mean they should be as they are just wrapping chrome, so I dont see why not, even though you could probably get around it somehow
But I just upgraded to Electron 10 locally and getting this rn:
guess you'll have to ship it with a backend
i also had CORS problems with queries from wasm to the poe api
@distant rock https://github.com/SnosMe/awakened-poe-trade/blob/master/src/main/cf-protection.ts you can modify response in main process
thats probably only possible in electron?
Upside with freestanding Electron is that you have more control over the protections that a browser would have as mandatory.
Until the underlying engine stops exposing things like sameSite overrides.
yup
yea you cant even auth using the session id in a web browser since it only allows requests from the same site @frank kayak
noticed that
im not into web dev but when i noticed that i can compile for wasm target with not too much effort i had to try
did disable cors temporarily for dev as it should be possible inside a .webextension
I find it amusing and sad whenever people claim that CORS and similar protections are "broken" as a freestanding agent can do whatever it wants.
Completely missing who it's supposed to be protecting.
i messed up with samesite and cors thought they were related but it was the Access-Control-Allow-Origin stuff...
cors is good
Same with people who say OAuth is broken, because one or two implementations had a security vulnerability
its just annoying for me when im trying to figure out how to make sth work
@distant rock are you an author of exilence?
Yea @frank kayak
i think i read a comment before
ah ok
already thought i was imagining it because the search didnt find anything
@civic crane So it should be fine until the next electron update if im understanding it right?
Ah
π
still pretty tired from yesterday...
@distant rock I don't think it will ever break, but just a reminder to check this on electron (=chromium) version bump π
ah thanks, gotcha @civic crane π
@civic crane Yeah, there's a lot of weirdness, like the Art you mentioned that doesn't encompass its children - https://zao.se/~zao/poe/debug/6498111448428023683-tree.html
Feels like recursive_size has a bit of overloaded meaning but I can't quite discern what.
(finally got around to write some exploratory code)
I think they kinda stitching file indices from multiple systems at build time, and don't care about this edge-case on a root level folder (Art & cachedshaders). I'm more worried about hash mismatch for Art/Models/Effects/monster_effects/League_Heist/military/melee/1h_swordShield
Yeah, that one looks odd
I wonder if the file Art/.dds is supposed to be that way or some misinterpretation from our side
yeah content of Art is strange. I think more and more that Art as a root folder is left for compatibility
Heh, this partial code compiled and surprised me a bit by continuing execution ^_^
std::vector<char>
exit(1);
is it possible to just iterate with that command algorithm for path building using recursive instead perhaps?
Not quite sure what you mean?
When I map filenames, I do it over the Payload Size and not the Recursive Payload Size
anyway; it's probably a bad idea.
Payload size is always consistent, the three anomalies we have right now is that Art has the same own size and recursive size; and two intermediary entries have mismatching hashes: https://discordapp.com/channels/174993814845521922/175290321695932416/769286372305141783
another interesting thing is that the path bundle records are not ordered by offset for some reason
Yeah, that's odd.
Hrm, E87816F6BAF40000 - Art/Models/Effects/monster_effects/League_Heist/military/melee/1h_swordShield matches my table in manifest 6498111448428023683.
table in manifest?
There's a matching "empty" entry for that hash in the path_rep set of the patch before current.
wat
ahh yep, that's correct folder must be empty, but in current index this empty folder is missing
It's present in the current Steam release as well. Are you working off Standalone or Steam?
Standalone from cdn
would have been nice if they were sorted in some kind of sane folder structure
like Art .. Art/Subfolder1 ... Art/Subfolder2 .. etc
There's two possibilities - either there's a secret order or there's no intended order.
well, yes
As in: "let's iterate this hashmap linearly"
One could look at the table between patches and see if it changes in any interesting way.
trying to work out a good way to make a graph structure out of this
@civic crane I find "Art/Models/Effects/monster_effects/League_Heist/military/melee/1h_swordShield"'s hash successfully in the current Standalone GGPK as well.
1548121 1548129 1548439 8 318 E87816F6BAF40000 <empty>
wtf is going in my code then π will save binary and search it in sublime
It's not a recent change either in the Steam client, it's been present since the tech patch.
Art/2DArt/BuffIcons/4K/Beserk.dds nice typo π
guessing it should be "Berserk.dds"?
Thereβs a lot of historical typos all over, and a lot of internal names.
Like say, the affliction (delirium) effects βsanicβ and βslamma_slamβ
-> "Referer" π
oh it even exists...
Some things are NZ spellings too, people get quite upset some times over βblatant typosβ in skill texts.
Focussed comes to mind
yes, some derivate of british
@worthy cape Regarding Art/.dds: That path was also present in the _.index.txt in the first bundle update, so it's likely an error on GGG's side
00 00 F4 BA F6 16 78 E8 as I thought, was suspicious of this zero bytes
funny that this code actually worked for most cases
oof that flashbang
btw there are 26 dirs with this warning
8907143 8907313 8907321 170 178 F0840EA8F0F58E62 Metadata/Items/Gems
8907313 8907321 8907321 8 8 68AF22CC78B62D6F <empty>
8912940 8912998 8913006 58 66 F2011F2D9A12890D Metadata/Items/Maps
8912998 8913006 8913006 8 8 BA268D14D8D991C6 <empty>
(columns are offset; offset + size; offset + recursive_size; offset; size; hash; name)
Those two seem to have subdirs with unknown names.
Any content matching those unknown hashes?
as in files
if not, could that the generating algorithm produces some garbage for some reason
I think I checked in the past and there were no collisions between file path hashes and dir path hashes.
(verify if you like π )
These would probably be best found by looking at legacy GGPK trees or brute-force the leaves.
Well, there are 6000+ PathBundle where PayloadSize is 8
doesn't matter though, after extracting all file names from the inner bundle, it matches exactly the number in file count
Non-leaf ones can be trivially verified by substringing their children, the sneaky ones are the empty leaves.
what I do is not touch the recursive size at all at the moment, and just enumerate the content of offset -> offset+payload_size, as they're overlapping anyways
if there are empty leaves, I assume it to be garbage?
perhaps empty folders of some kind, that accidentally got hashes into the path mapping stuff
you don't need offset+payload_size if you want all file names, just pass pathreps bundle to your method
what do you mean?
As there's no holes, you can just jam in the whole thing indeed and it alternates phases between building bases and generation of paths.
ah
when using offset+payload_size, base mode occurs only once at start
May be more obvious once their names are found.
Mountpoints or some other aspect of how the data is sourced?
Unused or partial references from data tables or data files, causing the path to be considered "used", but with no members?
Depends really on how the tooling for building bundles and the index is designed.
how did u find those empty "leaves"? I made a thing, to find empty ones, but it only found 5787 out of 6058 empty PathBundle things
ah nevermind, where payload_size and recursive_payload_size == 8
this is the most annoying thing I've encountered in quite a while
Art/.dds seems to be be a valid file
This is what I get
Semi-transparent texture of some sort
Yeah, the question is if the name is actually what's generated, or if it's a glitch.
As the file entry necessarily needs to match the hash it's self-consistent in the index, so I guess it's an authoring mistake.
That would be my guess as well
@swift beacon is your viewer oss?
Just have it on my local machine, not in a repository anywhere.
could that Art/.dds be part of some logo icon? somehow slightly reminded of one - could be from something else though
current logo - seems im quite a bit off with my guess...
It's not an exact copy of any other DDS file, at least not according to SHA256.
In any way, I'm more curious as to what the fileless directory entries are and whether I should burn corehours on brute-force.
what are those "fileless directory entries"? sorry but i have no clue about the entrails of the ggpk (yet)
@frank kayak there are directory entries in the bundle index that generate no file names, just containing nested directories or nothing at all. Some of them can have their name reconstructed by looking at descendant paths and strip away components to get to the correct ancestor path name.
that sounds like a pain
Some however have no descendants at all or have only empty directories as descendants, their names can only be found by brute force testing of potential child names or by cross reference to older sources of path names.
They don't matter for listing all the files or for extracting any files, thankfully, but they make working with the whole tree a bit more of a bother.
could that perhaps be some ugly handling by the ooz lib?
or does that also happen with the official oodle?
The structure seems consistent enough
One notable thing is that if you look at the directory names in inner block storage order, they seem to be alphabetically sorted except for the parentless CachedHLSLShaders/DX11 and CachedHLSLShaders/Vulkan ones at the end.
Got a result from the brute-forcer, 99AC90C1BB555484 "Art/Models/Terrain/EndGame/ForkingRiver/tgms"
Interesting. It's an empty directory?
Yes, it's an empty leaf directory.
3987776 3987928 3988247 152 471 FC75BEF34E7F3F1E Art/Models/Terrain/EndGame/CowardsTrial/Vaal
3987928 3988056 3988056 128 128 8978F035B41EB036 Art/Models/Terrain/EndGame/CowardsTrial/Vaal/Bridge
3988056 3988247 3988247 191 191 505AD865EA213326 Art/Models/Terrain/EndGame/CowardsTrial/Vaal/tgms
3988247 3988255 4032355 8 44108 B975868600F64E2C <empty>
3988255 3988800 3988800 545 545 600DB2BF045117FF Art/Models/Terrain/EndGame/ForkingRiver/Doodads
3988800 3988808 3988808 8 8 99AC90C1BB555484 <empty>
3988808 3988816 4032355 8 43547 6AC8CCE9B6EF036A <empty>
3988816 3991899 4017145 3083 28329 B0F28C51D055B177 Art/Models/Terrain/EndGame/ForkingRiver/Tiles/AquaductAdaptations
I have now broken the tool and must sleep π
π΄
PSA for any .net developers in here who do string comparisons (likely most)... Starting with .NET 5 there's a change in how IndeOf and Contains works.
We're PHP and JS now π
what's that 1475 magic number now
Faust, just expected index on his test case. Reference: https://github.com/dotnet/runtime/issues/43736
Oh, also different behavior depending on windows version: https://docs.microsoft.com/en-us/dotnet/standard/globalization-localization/globalization-icu
Windows 10 May 2019 Update and later versions include icu.dll as part of the OS, and .NET 5.0 and later versions use ICU by default. When running on Windows, .NET 5.0 and later versions try to load icu.dll and if it's available, uses it for the globalization implementation. If that library can't be found or loaded, such as when running on older versions of Windows, .NET 5.0 and later versions fall back to the NLS-based implementation.
Thankfully you can opt out of the behavior, or ship app-local icu.dll
but it's gonna create some initial ruckus before people learn.
A little annoying though, as cultures and stuff is hard enough as-is
tbh this is a bad decision
It's gonna sting for a little while, but I think the sentiment is well-meant. Make it work the same across platforms. I just don't know why they won't ship the icu stuff with .net instead?
yeah that'd be the way to go with default staying or being patched up
A whole bunch of runtime stuff ships with the OS nowadays, and it's a great thing for deployment.
Probably some cross-pollination from the UCRT?
Well, funnily enough they went the other way with windows UI components that was exclusively only available for UWP applications. They are now going to ship those as packages instead. There has been a lot of work going into that being able to happen.
Ugh... I am starting to not enjoy how Word and PowerPoint have become my primary tools in my day-to-day things.
latex?
i prefer cotton pants, thanks. especially when wfh
...
and nah, need to use word etc, collaboration and all
or generating latex with ci
i don't think that works well with the real-time editing collaboration stuff in Office 365
yeah cotton is in general best
the last word version i used a bit more was prob office 2007. other than outlook i dont use any other office program atm
i did generate xlsx though (in go)
Why generate latex just use asciidoc
I am trying to create a new trend in the job titles, though. Right now we just have 'Cloud (Solution) Architect', but that's not enough. It
Well, I see 3 or 4 different niches
Space cloud architect
oh
- Software (cloud native, distributed systems, microservices, all that jazz)
- Infrastructure (virtual networks, iam, peering)
- Devops engineer
(- Security specialist) maybe.. not fully made up my mind
Why does DevOps engineer need cloud in the title
well it doesn't really
I just want to separate the responsibilities, so what I'm proposing now is to have
- Cloud Software Architect
- Cloud Infrasructure Architect
- DevOps Engineer
"devops engineer" wasnt devops meant to mean some team mentality?
It's obv a bit overlap, but that's just good.
It was but it's easier to just plop a specialist in @frank kayak
yeah...
It is a mentality, but it also means the person setting all that up haha
Well DevOps Engineer, is like SRE, and deal with setting up and manage pipelines, and ensure build environments work etc
Heard the term enough when helping others with pipelines
"you'll do DevOps for us" yeah bud not how that works
SRE is two things actually lol.
- Site Relibility Engineering
- A Site Reliability Engineer
i think we need more trendy words...
well, you can bake it into your other architecture/engineer roles of course, or you can have someone specialize in it
both work
Yeah, I do our build/release management at work for our team
If you'd be out for months would anyone be able to do what you do
We also have people who specialize in setting up all the pipelines, and such.. it has become a bit bigger, with all the Infra as Code, Pipeline as Code, Configuration as Code etc
You could ask the same with any key role though
So I think it's more of a 'how do you build a resilient organization in general'-quesiton, I think
If you have one specialist and nobody else can do much if stuff fails that's not DevOps in my books
Thats why there are 2 pilots in a plane.
But yes, you have a point Faust, and I think that DevOps should be more spread out
We're more into DevOops
PagerDuty returns an immediate "Did you try to turn it off and on again?" π
Faust, at your org do you have autonomous teams (product teams) or more "here's a bunch of resources, and here's a bunch of projects:"
We don't do products in theory but it's very autonomous in terms of developing for customers
in the latter, it's easier to get away with having a couple of specialized in devops, where you have to be a bit more ninja in an autonomous team, especially if they are exclusive to a single product
The problem is DevOps aims to be an enhancement for everyone if you just plop in a magical pipeline and say that's DevOps then that's not cutting it
Don't like the term either way cos everyone defines it differently
I agree. DevOps is a culture. What I refer to with DevOps engineer is the one who creates the CI/CD glue and manages that part.
But yes, DevOps as a whole is much more than that.
It might not be the right way to set up a team that way everywhere, but at some places it makes sense
In my small team everyone was able to do it after introducing them to it while I still did the main work. Imo that'd be DevOps what people expect is the opposite. You go in do the grunt work bam done DevOps executed
Not sure if I understand what you mean with the second half there
Let me rephrase: it seems like a lot of people just want a pipeline that works and a person that's available to fix it if anything needs changes they don't want to actually understand or maintain themselves partly
Well, that's just the CI/CD part of DevOps, which is important, but far from what we mean with DevOps
Ofc but if that part is an issue already I am not sure if people really wanna do DevOps
Someone needs to ensure that monitoring, incident response, testing is done properly, release cadence works as expected, etc
Well, for me it's not an issue, π I think DevOps culture / SRE is great. I.e. you build it, you run it etc
But if we're talking in general, where I see the conflict happening is with budgeting and procurement
Yep definitely as well as general staffing depending on project size
Knowledge sharing is also a thing that's hard across a company
As well as making sure you have a best practice in your company, so that project a and project b is somewhat recognizable if you need to shift people around
where technically feasible ofc
Funnily enough the only company section that does sharing rounds every month is the sap section
Everyone else just does whatever mostly
Yeah, that's gonna hurt the bottom line
Faust, you familiar with Google's view on DevOps - SRE?
It has gained a lot of traction among DevOps thinkers the past couple of years.
If not, if you want take a look at https://landing.google.com/sre/ they have a couple of free books on the subject as well. Let me know what you think sometime
Not yet I am mostly stuck in ci/cd for a while now but I'll take a look
This 5 minute video is pretty decent https://www.youtube.com/watch?v=1NF6N2RwVoc
I feel like that video lacks any meat but I am really not a fan of super fluffy material
Right, there are better videos. I'll find the one that made it a bit clearer for me at first
One important thing to remember is that you're not Google or Facebook in scale.
this playlist are small bites of how they do it at google
Right, and also like to note that SRE started as a very small thing in Google though and I've heard several people who started startups use SRE concepts successfully. It's more about the practices and mindsets
the difference is that in smaller organizations, people wear multiple hats, but in larger it might be necessary to have people specialize for various reasons (limiting context switching, necessity to specialize and get deeper expertise)
Excuse the readability due to the background, but here's DevSecOps at Enterprise scale for modern organizations:
there are a lot of parts in there.
and this is still just from a tech perspective
hash,path
D200409415842B4E,"Metadata/Effects/Spells/monsters_effects/League_Affliction/Affliction_Phys_Demon/epk"
0CB4F6B5CB69910A,"Metadata/Effects/Spells/monsters_effects/League_Affliction/Affliction_Poison_Demon/epk"
328AA4CEC4E8E0CA,"Metadata/Effects/Spells/monsters_effects/League_Incursion/Vaal_Architects/spells/ultimate_spells/lightning_hurricane/hit"
...
Full list thus far at https://gist.github.com/zao/fbbcf073ce404f0dd964f78d1897fc16
I should add concurrency to this and actually persist results π
Does anyone have any recommendations for decluttering the text in this app at high tiers? Atm I'm considering disabling map node names by default, because I'm not sure how to make this visually appealing/readable https://dev.poeatlas.net/
Any suggestions would be greatly appreciated. (You can fiddle with visual settings in the 'options' menu (top-right))
nodesize = 0.7
text size = 0.85
for me it's better at initial zoom hide names, keep sizes to 1, but when you zoom in show names and apply thesensei's params
Ty for the recommendations zen and Snos! I will put your advice to good use.
i tried passing 2 errors packaged with fmt.Errorf %w upwards - seems thats not supported: "Errorf call has more than one error-wrapping directive %w"
oops wrong discord
better then not finding it
Sounds like we'll have a relaxing holiday period this year, heh.
are you also getting a lockdown?
he's talking about league delay
ah didnt follow poe news lately that much
I just pinged everyone with it
What's up with the duplicated omegalul reactions by the way? Didn't get to add a friendly one π
have all channels but tooldev muted
lots of servers have omegaluls zao
Ah.
Upside of things, maybe I'll be visited by the productivity fairy and get some code done.
didnt i smash that fly recently?
Seems so, all I've done this week is noodle around on how to accelerate bruteforcing.
and i enhanced a cookie lib...
if all you do is hang out in tooldev why haven't you made soemthing to get a tooldev role

huh?
nothing public yet
that's the only requirement 
zao currently the only one who has access to my mess - i want to clean it up a bit more
its (will be) here: https://gitlab.com/poem-dev/poem
@hazy fog It compiles, it does stuff with the API, looks useful.
It compiled last I touched it, SchrΓΆdinger would be proud.
CLI and GUI tool to query assorted endpoints in a friendly fashion.
Making an exception because I can. @frank kayak is working on this https://gitlab.com/poem-dev/poem with vouch from @worthy cape he gets tooldev because I am a benevolent dictator 
hah ok - ill accept...
I like to be able to differentiate the idiots asking dumb questions from the people working on stuff at a glance 
you mightve done a mistake...
doubt it
if anyone wants to look at it i can grant access on gitlab

@worthy cape you did mess a bit with go right? do you have a clue about doc examples?
https://golang.org/src/sort/example_search_test.go i think im doing that weird naming wrong
has anyone ever thought about making a github repo with issues (or a similar approach) for all the QoL features and stuff like that mentioned on reddit, the forum and elsewhere? Like a big public list of todos (or wishes) similar to uservoice
i have a collection with copy paste stuff under ~/d/
calling it with dcat(){ cat ~/d/"$1"; }
for example a progress bar in bash for i in {1..200}; do printf '%s\033[s\033[G%0.3d \033[u' . $i; sleep .03; done
and other useless stuff
if that is reply to my question, then I might need to correct the question. I meant Path of exile features
@frank kayak No clue, sorry. Documentation isn't my forte.
i did see some tries at doc collection but its mostly spread out
ok thx :/
i iterate through the possibilities no luck yet
Note that the filename is significant and needs to end in _test.go
on procrastination and productivity... all I have achieved this week is write two job descriptions in 1 word document and grab some files and send it to a colleague.
i have no idea whats up with me laterly
@worthy cape yes and its good to add _test to the package name too so that the stuff from the package has the package.-prefix for the users.
solved it now
problem was the case
its Example_label() and not Example_Label() for package examples
Got to love magic naming.
yeah...
the public/private with the initial letter is really nice though
go will become a bit faster with 1.16 https://www.infoq.com/news/2020/08/go-register-calling-convention/ π

go at man bank
in browser with webasm?
It's supposed to be an album but discord is only showing the first image for me...
If you write text before an imgur gallery link it shows the URL
(the header still links to the album but may be less obvious too)
@worthy cape isnt discord in rust? and no longer go? - def. wouldnt have happened with go...
@frank kayak imgur is having serious server problems the last few days
isn't discord electron?
Welcome to Imgur's home for real-time and historical data on system performance.
@swift beacon what languge are you using for your project?
@swift beacon Meshes look good - I guess you're not doing materials or skinning yet?
C#
wow, that is impressive
@dull laurel i meant serverside - the standalone is electron yes
@swift beacon is that a webapp?
I'm converting the models to .obj + .mtl
Ah right, that rings a bell.
@dull laurel Yes
πΊ its official
looks interesting
that was posted half an hour ago
Thanks
Best thing about @swift beacon doing all these assorted viewers is that I don't have to π
I'm basically trying to be able to preview as many file types as I can
never let developers do UI/UX π
well there
zao vanished
scary
alpha -> ff?
Have most of them except for the terrain 3D models
And yes, the UI is pretty terrible π
nah
@worthy cape try that
you havent seen my tries
beep boop
better
cool, whatever it means π
@swift beacon Did you do ARM yet? It's super fun - https://i.imgur.com/Qc90zP8.png
it means I will defer to him if he thinks someone should have the role because I cba to research everyone who should 
Got the overall structure of the format parsed, but the meaning of the numbers in the grid is largely undiscovered.
@hazy fog Based on the work of and discussions with @swift beacon , I feel that they're a productive member of this channel and worthy of the green adornment.

we the gremlin's of spooktober π
I've got my hash unveils thus far here by the way - https://gist.github.com/zao/fbbcf073ce404f0dd964f78d1897fc16
Odd mix of old and new content, I wonder if there's a redirect/symlink system somewhere we're missing, or if it's just artifacts of moved data.
I don't have any easy access to legacy trees at the moment, would be interesting to see if any of those were populated before the tech patch.
the paths looks fairly "stray"
would be interesting to understand what "epk" and "tgms" means though
TGM is a file format
Seems that I only just got started on TGM and TDT in my Rust implementation.
I think epk is for effects and tgm is for terrain
EPK is some sort of vfx description, IIRC.
ah
discovered some more black magic with the godoc tool - i need something outside the example func, a var or func so that the whole example file gets displayed...
@simple ravine Some of these have rather deep nesting too, some are four levels of unknown - https://gist.github.com/zao/38391b220442b71439ec49da74350d03
Like the children of Art/Models/MONSTERS/GenericBiped/BipedMedium/ModelVariants/HeistRobot.
oh that's quite strange
Could of course have been moved elsewhere.
I am getting curious on how these references are generated, and why there are residuals like this
i would guess we probably are missing some important info
zao you ran a hash func over all known paths and compared it to not connected ones?
Computed the partial hash of each known parent, then generate all 1-char, 2-char, 3-char, etc. combinations and compute the tail of the hash and check it against the known hash.
oh
Implementation is stupid tho, doesn't reuse any generation effort between different paths and isn't threaded.
cant imagine the game doing something similar
But yeah, testing base/#, base/## with an alphabet of " &'()+,-./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ[]_abcdefghijklmnopqrstuvwxyz"
(scientifically obtained by looking at what characters were present in all the generated file paths)
75^N possibilities <_<
perhaps a whitelist for the patchserver files?
After around 1.5 days on one thread it's gotten to the middle of the 6-letter strings.
Does the patcher know anything about bundles tho?
Or is it sucking down the index and bundles blind as if they were regular files?
no clue - not trying to look into ggpk and that in addition to all the crap i already started
has to wait
Spreading yourself too thin? I'd never π
i prefer wasting far too much time on the most useless parts...
documentation and such? π
doc never.. at least normally - currently i am trying to add doc to some foreign repo
and learning all the nice quirks of godoc
Hrm, I don't seem to be able to get past cloudflare for steamdb.
is that a webpage?
why not view in the browser and copy paste the curl command?
Works in Edge, Firefox seems upset.
not mine
I'm running Beta, 83.0b2
isn't there a library for that, i mean to download steam packages? at least in c# there is one
It's complaining about sameSite cookies and cookies that have already expired. Ugh.
@dull laurel Yes, there's SteamKit and DepotDownloader. I use the website to look at what manifests there are, haven't been arsed working with the API when SteamDB aggregates it for me already.
curl 'https://steamdb.info/depot/238961/manifests/' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Accept-Language: de,en-US;q=0.7,en;q=0.3' --compressed -H 'Connection: keep-alive' -H 'Cookie: __cfduid=...; cf_chl_1=...; cf_chl_prog=...; cf_clearance=...' -H 'Upgrade-Insecure-Requests: 1' -H 'TE: Trailers'
``` has this format
ah, now I understand. I thought it was a lib for steamdb, but its for actual steam.
gl with cloudflare...
There used to be a library for getting past Cloudflare thing as well
They seem to be working less ideally nowadays after looking at them though
I would kind of assume it to work with an actual browser with a meatbag at the keyboard π
if you copy the browser behaviour well enough it mostly worked for me - sometimes a few more cookies were necessary or the user-agent
I think it also depends on how the site owner has configured it?
i like cloudflare
...they use go https://blog.cloudflare.com/graceful-upgrades-in-go/
@worthy cape chromium?
Well, I'm not automating anything, I just want to look at the site π
does it work in another browser?
Yeah, Chromium-infested Edge is fine.
did you mess up in about:config or the wrong webextension
eh
i did get the cookies out of the old edge
and most other browsers...
index.dat and cookies4.dat are left
Maybe it's also related to being on v6 and thus being a Suspicious Individual.
v6?
you could try a blank firefox profile
if it works there you messed up your profile
firefox -new-instance -P for the profile manager
Might have done something, hard to tell when the difference between profiles is everything.
Especially when it's something as fickle and external as CF validation.
Installed Windows 20H2... how convenient for them: https://i.imgur.com/q51y0G4.png
All the file associations that Edge could happen to handle conveniently were corrupted. 
think the same thing happened to me
Did it this spring for 20H1 too, would be nice if it just wouldn't.
it also launched Edge fullscreen at startup and asked me to make it the default browser
so much for United States v. Microsoft Corp
Now this isn't a problem I expected after upgrading Windows...
C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1427~1.291\bin\Hostx64\x64\cl.exe <<<snip>>> -c ..\..\..\apps\prober\prober_main.cc
CreateProcess failed: The system cannot find the file specified.
The Ninja build files from VC++'s CMake functionality uses 8.3 short filenames for some reason, and the Windows upgrade process doesn't preserve those for installed software.
f.ex it's now C:\PROGRA~2\MICROS~4\...
I just realized I have tomorrow off. Perhaps I have some energy and will to finally figure out how the Bundle implementation in PoeSharp should manifest itself.
@worthy cape I thought that those were alphabetically sorted somehow. Weird that they'd change.
@simple ravine I assume they're regenerated if a collision happens and things seem to have been created in a different order in the old fresh installation.
2020-09-27 15:36 <DIR> MICROS~1 Microsoft
2020-09-26 18:47 <DIR> MIF5BA~1 Microsoft Office
2020-09-23 19:34 <DIR> MICROS~2 Microsoft SDKs
2020-07-10 00:42 <DIR> MICROS~3 Microsoft SQL Server
2020-10-18 14:37 <DIR> MICROS~4 Microsoft Visual Studio
2020-10-29 10:17 <DIR> Microsoft.NET
Got to love the Office short-name too π
makes total sense lol /s
The ultimate crime here is probably the good old 260 character limit on paths.
I wonder if CMake behaves if you toggle the Windows knob for longer paths.
Didn't recent versions of Windows fix that?
Optional knob still as it has the possibility of breaking things.
Python installer asks you if you want to enable it.
You don't fuck with billions of pieces of software that uses MAX_PATH.
I already have it enabled it seems, so no go.
well, in the age of node_modules
they are flat (in most cases)
Oh fuck meeee... I have some code I need to audit for range-for misuse... http://josuttis.com/download/std/D2012R0_fix_rangebasedfor_201029.pdf
TL;DR - the lifetime of results of the right hand side of a range-for is shorter than one might think.
for (auto n : blargh().f()) is almost always wrong
hope compiler will be clever enough not to create lambda if it doesn't see expression on right side
The intent is for it to be "similar to" but still good.
whoa zao got another green
i see it
damn it. Is it possible to fetch json from https://www.pathofexile.com/api/trade/exchange/Heist using cURL ? I am trying, posting the same as in the browser but for some reason I get 400 status-code responses.
Is it possible at all? How?
@digital parrot If I grab the query from Firefox's network tab as POSIX curl, it works on my Linux box.
But if I grab the "Windows" flavour, it doesn't in cmd.exe curl.
POSIX one works in Git Bash, f.ex.
How are you constructing your request?
Hm. damn it. I start all over again. Almost reproduced in Guzzle/PHP but I guess I missed some little thing.
microsofts curl is castrated iirc π
Microsoft's curl bails out as it has no compression support.
The test above was with haxx-built up-to-date curl.
what other important featutes where also stripped? net connections?
(none of you saw the POESESSID in the deleted link above <_<)
im in
Already regenerated it π
Handy. I just did interactively with the browser.
after my latest work itll even work with NCSA Mosaic
...joking - only netscape, elinks and co
One of my fears about streaming development is the amount of non-public information that may show.
yeah
not sure how much a different user account, different ip helps
ill take a short nap
Is streaming development popular? Last time I checked guys that were streaming development they were on 0 viewers
I was looking at things I was interested in which might be why they were on 0 viewers.
There are streamers who have quite some viewers
https://www.twitch.tv/csharpfritz this one
I donβt really care for the viewer count or sustainability of it, I just get questions sometimes of how one works on something like this.
his setup looks alright. I'd probably spin up a proper vm for streaming and have obs locked to the vm, vscode and browser all running within the vm
all secrets kept specific to the user in the vm
Thereβs too much about my personal life intertwined with my desktop, there would need to be a serious adjustment to have an env suitable to broadcast.
Canβt really do meaningful graphics dev in a VM ^_^
true
I used to stream mod development on twitch. Not many viewers but it's great to rubber-duck to haha
rubber duck ?
Oh yeah, that makes sense
I've resorted to ordering duck from the asian restaurant and eat it while i talk to it
two birds one stone
coincidentally, that's also the name of the dish. avoid eating the stone.
If you go to chuanhsing's swagger poe api and export the client sdk. It has a object sanitization class for sanitizing data. Is that a good example of sanitizing for API client's or is it over the top and doing too much stuff?
link is in the pins
that's not really sanitizing, just deserializing into something typed
@frank kayak Reading a LWN article on Debian's trouble packaging Kubernetes (being written in unholy Go). At some point in time they tried to unvendor all dependencies into distinct packages.
Also some concerns about the short (one year) security maintenance upstream has, making it impossible to do anything but ship a new version when security fixes happen.
Happy I'm not them π
I love the discussions on Kubernetes. Especially when speaking with clients and their stance on K8s is "It's a silver bullet for all our needs. It will make us cloud agnostic, or not even need to think about cloud at all. Just add some OpenShift and call it a day"
People underestimate the complexity of that beast lol.
(can't link the article on, it's a subscriber-only one I was granted a link for)
What's the gist of it?
Unvendoring the over 200 dependencies is a massive task, Go's insistence on static build and their weird-ass build setup makes it hard to separate at all, and it's a security bomb.
I wonder how cloud vendors are dealing with this, like AKS, EKS, GCP's version whatever that's called
Fortunately people who use those have less of a headache, but nonetheless the underlying problem exist, and I think it's a ticking timebomb
they update slowly? at least from what i heard from our infrastructure team that was hellbend on setting up their own cluster because azure didn't deliver all the weird features they wanted
(is pray to the machine god a valid answer?)
Always.
I've never spun up my own K8s cluster and maintained it. How does the upgrade look like? Do you have to drain the cluster and upgrade, or can you do some kind of in-place upgrade?
Would tools like OpenShift help with that kind of headache?
I mean it looks like k8s is shipping new versions quite often
So if the upgrade procedures aren't too scary and cumbersome...
@worthy cape https://lwn.net/Articles/806230/ this one?
Making a comparison between Linux and Kubernetes is often one of apples to
oranges. There are, however, some similarities and there is an effort
within the Kubernetes community to make Kubernetes more like a Linux
distribution. The idea was outlined in a session about Kuberne...
Nope, 835599 from today.
not sure if it was kubernetes but there was a large go project that was written like you would write java code
ok ill take a look
How much $ does it cost to get access?
LWN posts are sub-only for a period or time or something, with the ability to generate links to share with a small set of friends.
(one week)
i admire the debian devs a lot for all the work they do
I don't get the thought around gating articles that way, but whatever I guess
i think docker also made a lot of problems initially and then was repackaged as a blob of things in debian iirc
with qt the separation in a thousand packages did annoy me a lot
didnt manage to compile acquisition at first because of some qt web package in a version that wasnt in stable...
Reading the FAQ, the distribution of the links can be reasonably wide as long as it's not put into a system to defeat it.
Behave and read https://lwn.net/SubscriberLink/835599/58edea1e7066373f/
Linux distributors are in the business of integrating software from
multiple sources, packaging the result, and making it available to their
users. It has long been true that some projects are easier to package than
others. The Debian
technical committee (TC) is currently be...
... thx
How do you become a 'subscriber' though? I mean if it's privileged content, I'm happy to do it the right way
im still using your POESESSID btw
@simple ravine https://lwn.net/subscribe/Info
Depending on the level you also get rid of ads and stuff.
The links are a way of enabling you to show interesting content to others and to hook some into subscribing π
hah
ads don't annoy me, they are filtered away anyways
(because a lot of them misbehave, the nice ones gets filtered too)
im still using your POESESSID btw
@frank kayak I hope you're joking, it's not accepted by the APIs here.
i obviously am - sry that i didnt make it clear
somehow missing the systemd "discussion" in the debian comm
Kubernetes vendoring considered harmful
from the article
at least it can print qr codes
On the discussion of vendoring vs centrally installed libraries in the operating system, I have seen where central library stuff leads us. Just look at .NET Framework and the GAC and all the problems that lead to.
There's a reason why Microsoft abandoned that idea a few years ago. It lead to them having to always think about backwards compatibility, not only in API surface, but also in behavior, or a lot of software could break when you decide to update the .NET Framework on the operating system.
Hence innovation and improvements were slowly grinding slower.
I think vendoring is almost always the case
110011, yes the thing I was referring to. It has since then been used, almost at a meme level to use the "X considered harmful"
Funny though, Djikstra's original title was something else. "The case against go to statements", but an editor later changed the title when publishing it
example: "OO considered harmful"
the dll mess in windows was never supervised on windows you just install stuff and hope its the correct system dll if it requires it or drop the correct one besides the exe - in linux distros the sos are versioned
didnt know
with go though its pretty different
the deps are just stuffed into a static binary
the dds tried to get go projects separated in dyn linked ones
well, if you can have several versions of let's say curl library installed, the case to manage that centrally is at least somewhat diminished
the pragmatist in me just think it's not worth the effort and headache in modern day computing
I like the naive comments that assume that developers care about SONAME and ABI compatibility these days.
Seems like they've missed the whole semver race.
Well, semver is just part of the solution to a problem in an ecosystem where a lot of stuff depends on your code
In the package management system I maintain at $dayjob, we go for exact version matches. Nobody got time to figure out what ABI/API guarantees software has (hint: fuck-all).
This is a field where Anaconda is considered a good thing (by users).
eh conda
that gigantic ....
did you try static compilation with nuitka? last time i checked it still required conda at a set path
Let's take libcurl as an example. It's a pretty good example where you want to have the ability to innovate new functionality, while also be able to provide important security fixes in lower major versions
It becomes a maintenance hell
libcurl3 seems to be just an empty relic
looked at the wrong pkg
its redirected at v4
Isn't that bad?
not when its compatible
Aren't there any breaking changes between v3 and v4? Even if there are no API surface changes, there are likely behavioral changes
Otherwise, what's the point of the version change at all?
it takes ages till sth lands in debian stable its not like windows where the customer is there for testing
lol
Let's put the windows/linux discussion aside though, the discussion of versioning and vendoring, or not to vendor is a pretty big one of its own
i think debian has to make compromises for stuff like browsers and go...
for any quick-moving things I'd say
btw alias xargs='xargs ' and alias sudo='sudo ' are so nice
its just not maintainable with the amount of deps just growing and changign so fast
with those aliasses you can have aliasses after xargs or sudo like sudo ll ...
so kubernetes is just one big fat binary?
alias please = sudo π
that reminds me my sudo insults me
you need that "Defaults insults" in the sudoers
if you want to repeat the last command with sudo type sudo !! (history expansion) i use !$ for the last word often
cant wait for //go:embed for no more hex blobs in source code https://go.googlesource.com/proposal/+/master/design/draft-embed.md
its already implemented in gotip but release is in february...
with this we will see more and even larger go binary blobs!
Any decade now: https://thephd.github.io/vendor/future_cxx/papers/d1040.html
C++ P1040R6 - std::embed
wow
i messed only a bit with c++ around 2012 ( implemented an xpath parser partially naively)
c++ did change a lot but all those additions scare me off a bit
@worthy cape how well do transitions from older c++ traditions to newer ones happen in larger projects? probably a bit messy?
There's kind of two schools of thought:
a) "there's versions of C++?"
b) "this codebase requires Clang-trunk"
In the game industry where you want to minimize external factors, it's not uncommon to lock the toolchain down at the start of a project, checking in compilers and dependencies into version control.
The standard you're on is the one common to all the platforms you target, and changes are slow.
You also have the problem of that a lot of people are not great at the language, being more practical and pragmatic.
That varies on a per-team basis but tends to lean toward KISS. There's been recent movement to adopting some C++ features, but for the longest while there was no interest at all in standard library containers and algorithms, having your things be value types, etc.
C with classes π
far from c...
go happened because of c++ despise by ken - originator of b (predecessor of c)
i feared a bit that id find a lot of deprecated features are sprinkled around in c++ codebases where you dont have to many requirements for the toolchain
In the scientific field, it varies greatly on the poor PhD student that wrote the codebase but varies between non-standard C++03 to C++14 or 17.
Out in reality with regular business dev, I have no idea but assume they're slow to adapt.
I've heard tales of horrible toolchains from telecom.
Mate of mine just recently got permission to use shared_ptr.
hm
i prob will try to enhance my c++ knowledge at some point but stay away where possible...
Anybody know who devs Craftofexile.com ?
i think that dev is active in the tft channel?
There's a discord (just TFT it seems) and a contact email.
source code is unpublished?
On Anaconda btw - this just in: https://twitter.com/walkingrandomly/status/1322238796310568961
New development from Anaconda.
If you use Anacondaβs repositories in a for-profit or government organization with over 200 employees, you need to upgrade from free to Commercial edition.
Universities etc still have free usage. https://t.co/AyqyAZUKKL
was it gpl-compatible before?
tbh i only used conda once because i needed to get a lib running that i couldnt self compile
other than that i am not a huge fan of it
ditto
but its super weird how they just at random do that
somehow reminded me of the redis license stuff https://techcrunch.com/2019/02/21/redis-labs-changes-its-open-source-license-again/
they have a fair point
we have this "FOSS" agenda in the company I work for and nowhere is mentioned "contribute back", only saving money by not paying license fees anymore. the same at the company I worked before. saved a million or so and didn't give a cent back to the community they benefited from (I think it was R or another framework for rule engines)
i think its quite simple if no contributions flow back in form of code or money other support projects often just die - if a company heavily relies on it and doesnt support it that might later be self-damaging
but R or redis or anaconda are not small projects
the people who made the decision probably already got their bonus and are in to the next thing
isnt R a GNU project??
i dont really care if i dont like a projects license ill go on a search to find the next worse project
The milking of open source software for profit is a widespread "problem", but I'm not sure that these "oh yeah, it's open source but not for you" kind of hackfixes work.
can't wait for angular doing that π
@grave wren On not having to compile libraries yourself: https://www.lfd.uci.edu/~gohlke/pythonlibs/ is a gold mine
I agree with @worthy cape to some degree, the "hackfix" is a reaction to a problem, but I am not sure it addresses the cause, or rather, changes the approach
FOSS for me, is about positive social impact, perhaps not so much "free software", but rather what the software can do in turn to provide positive social impact. If other people use it for profit, likely does not impact the FOSS library/software negatively.
They're just forcing the consuming enterprise to take a stance, and potentially provide some cash.
Sue the cash might help, but it won't help in the long run, as their opinion on the project will likely change, and they might be looking to replace it either with in-house or other foss that hasn't gone that route at some point.
FOSS that become very popular should rather, look at two things:
- Commercial support in bounties and consulting. It can be quite lucrative.
- Introspect and make sure contribution is as frictionless as possible, ensuring that once an enterprise or individual wants to contribute, that it's a welcoming and open experience - otherwise you're doomed to maintain it yourself
The toolchain we supply to customers is whatever they want for their c++ app. Or if none is specified its the latest available. If a dependency is missing in mainline yocto then there is the joy of writing a slew of .bb and .bbappend files. The entire build ecosystem config is committed to VCS so that the toolchain and SDK can be rebuilt . But usually they're all running the latest available
This manifest is weird: https://steamdb.info/depot/238961/history/?changeid=M:5339855750552234382
Both the file listing and the downloaded tree is missing all the executable files.
Ah! They're moved to a separate depot https://steamdb.info/depot/238962/history/?changeid=M:78566953588493228, and there's a new macOS binaries depot at https://steamdb.info/depot/238963/history/?changeid=M:9191768501298523526
That's kind of interesting, as that means that we might have the same kind of bifurcation on macOS as on PC. Time will tell ^_^

Bleh, macOS is a silly platform.
I can use sysdir_start_search_path_enumeration to get hold of ~/Library/Application Support, but it has a literal ~ in the path by design.
I can use wordexp to tilde-expand but it also expands all sorts of shell syntax and splits the input into "words", so I get a two-element array out of that string.
glob will do, hopefully no-one will have wildcards in their username π
Bah, <filesystem> seems to be an XCode 11 thing, which supposedly means 10.15 minspec. Guess I won't be doing macOS tools any time soon.
what version of osx are you running ?
10.13, last supported on this rock
I see. Sorry but why can't you use $HOME ?
sysdir_start_search_path_enumeration gets me paths that explicitly use tildes. I don't want to reinvent the forms of tilde expansion.
what is sysdir_start a part of ?
<sysdir.h>
oh. I see
Directory paths returned in the user domain will contain "~" to refer to the user's directory.
I could try to sub it out myself and hope that they don't change that contract, but ended up just relying on glob to do it with GLOB_TILDE.
$ clang++ -g -std=c++17 -o find_steam find_steam.cc&& ./find_steam
/Users/hunter2/Library/Application Support/Steam/steamapps/common/Path of Exile
Works well enough, but without good compiler support in general I don't see much point in maintaining the platform.
hi, i'd like to extract assets (specifically audio) from Content.ggpk, is this currently possible/easy? i first tried this: https://github.com/jcmoyer/PoET which extracted some data from the ggpk, but i don't know what to do with many of the files after extracting them. i then tried https://github.com/OmegaK2/PyPoE which looked more promising, but it seemed quite broken on my machine and while i could at least get the ui to run, there were more errors when sorting the ggpk directory and the structure didn't show properly. i did find some stuff on github saying the ggpk format changed in harvest, could that be related to the issue? thanks for any advice
Hi!
There's indeed a difference in storage now since the tech patch:
Steam has a lot of assets loose in the installation directory (including .ogg voicelines), and the rest contained inside Bundle files (*.bundle.bin).
Standalone has a GGPK file like before, containing both those loose assets and the new Bundle files.
Any tool that used to handle the old GGPK files can get the loose files from a new GGPK with minor modifications, they just altered a version number in the GGPK chunk from 2 to 3.
For listing the contents of the bundles and extracting files from them, I have a tool.
If memory serves me right, the files you're likely to be interested in are all loose files, Ogg Vorbis in .ogg files and FMOD audio banks in .bank files.
As for PyPoE, it's still in flux as Omega is reworking it to handle the dual storage system.
my problem might already be solved then since i didn't let the first extractor fully run to see any .oggs yet. i'll try installing the steam version if that doesn't work since i didn't realise it had loose files. thanks for your help
You can sift through the listing of loose files and see which ones there are at https://steamdb.info/depot/238961/
lol i love how they named the files for each exile based on the attribute 'StrDexInt'
There's lots of such filename gems indeed π
From an end-user perspective, there's also listings like https://oriath.net/audio-index.html
oh sweet, that's perfect
Heist isn't covered there yet, I forget if it was for spoiler reasons or something else.
was initially for spoiler reasons, now just because I haven't gotten around to it
The best reason.
@frank kayak what is that terminal support thing you were playing around with called again?
@simple ravine terminal support thing?
yeah
that one
you were doing some funky things with the terminal
do you mean bitmap graphics?
among other things yeah
it reminded me of the good ol' dos days when you could change the resolution and do funky things
bitmap graphics is mostly sixel - vector graphics regis or tektronix 4014 or what its called
microtransaction search and price history https://poedb.tw/us/shop
PoEDB provides new things come out each league, as well as unreleased skills or MTX, as all of the information is directly datamined from the game itself.
How are you retrieving that information for mtx ?
api/shop/microtransactions/specials ?
yap
What source are you querying for that? Seems to be missing the Demonic Spider Pet and Dancing Skeleton Pet.
The search boxes don't seem to do anything when invoked.
only discount history, not all microtransaction
not all microtransaction name match BaseItemTypes name, and it's hard to remapping
Do you know if the api has the same limitation to 200 items as the special tab in the shop?
you can set limit to 1000 and it's worked, I got maximum 395 total before
https://www.pathofexile.com/api/shop/microtransactions/specials?type=active&limit=1000
I'm updating my 3D model viewer and it seems like GGG keeps making things more complex. Good for the game maybe but not for us data miners.
Today I found that now some of the .ao files inherit from other .ao files, so now I have to read an .ao file to get a reference to another .ao file to read that one.
Especially how they change order between v2 and v3.
I'm still not done with my .ao parser due to the irregularities and unknowns of the format.
Didn't used to be like that. They always had inheritance, but I never had to read more than one.
And now even the old models, like the PCs have been moved over to the newer format.
Either you trust the indentation and break on the broken files, or you have to have knowledge about the types of lines to know what to parse them as.
Upside of things, when assets are migrated between versions it can help with figuring the format out.
That's why I have all these old packs around in the first place.
The older ones I read read line by line as text and it worked fine. The newer ones are JSON, which is fine, but they aren't very consistent as to what properties they have.
That's true, comparing the new ones to the old ones might help.
I'm sure I'll figure it out, it's just annoying because generating each model is more work now.
ARM files are fun, they were up to v29 last I looked at them.
LOL nice
I long for the day where I have my new codebase at a point where I can work with file formats again.
At least it seems like a lot of the data I can ignore in order to get models that look pretty good. I'm not doing animations or fancy lighting or particle effects or anything like that.
Doodad lines have like four variants:
// v14-ish:
// 60 15 6.19592 0 1 -7.8125 1 "Metadata/Terrain/Doodads/Forest/Gravestones/graveyard_fence_door_v01_01.ao" "Metadata/MiscellaneousObjects/Doodad"
// v18:
// 20 80 -0.291014 0 0 -0.144994 0.989433 0 1 0 1 "Metadata/Terrain/Doodads/Beach/kolik_damaged_v01_01.ao" "Metadata/MiscellaneousObjects/Doodad"
// v23: (same layout as v18, just for reference)
// 93 77 -0 0 0 0 1 0 1 -179.348 1.05 "Metadata/Terrain/Doodads/RuinedCity/Trees/OldTree_v01_03.ao" "Metadata/MiscellaneousObjects/Doodad"
// v25:
// 218 233 2.94506 0 0 0.995176 0.0981067 0 0 1 -21.7391 1 "Metadata/Terrain/Doodads/Cave/treasure_pile_19.ao" "Metadata/MiscellaneousObjects/TreasurePile"
I've been ignoring the extra data at the end of the SMDs and so far the models still come out fine.
I've only mostly mapped out the data types, probably skeletons, lights, etc.
@swift beacon While you're around, have you considered exporting to and rendering glTF?
Even if you target a reasonable subset of it, it ought to be quite expressive.
Might not be able to capture all the VFX, but animations and richer materials ought to kind of work.
Haven't looked at it but sounds interesting.
is there any intent to support stash "folders" in the get-stash-items api endpoint?
Probably around the same priority as supporting the map stash tab, i.e. "when we get around to it, eventually"
How does Path of Building get character data? https://www.pathofexile.com/developer/docs/api-resources only mentions a few things. But I can get a character's items in JSON through e.g. https://www.pathofexile.com/character-window/get-items?accountName=ziddy5&character=markov_returns
Is there a more extensive documentation somewhere?
thats just the list of characters not the data right?
Ah shit true linked the wrong thing. You want Downloaditems and DownloadPassiveTree methods
I'm sad. I'm able to put items in my public stash tabs, change zones, move them around, change zones, remove them.... and I'm noticing this activity not get reported by the public stash api
Looks like the public stash api is more for reporting items that have longer shelf life
the public stash api has 1 minute delay if you don't have oauth with it
it's 5 minutes currently: https://www.pathofexile.com/forum/view-thread/2036957
folders and map stash support is targeted for the new stash API which relies on OAuth being released. The character window API will probably remain as is for backwards-compatibility until enough things have switched over
I forgot to mention how the change would affect the API ahead of time so apologies for that 
where can I find the new API?
it isn't available right now, OAuth needs to be properly released first
which is waiting on some terms of use stuff
Any timeframe when we can expect it to roll out?
"when we get to it"
does anyone know how trade search displays the data on the page? is there a script on the site that processes the fetched items and fills the html elements?
i suppose there is no easy way to call that function with external data?
window.app.$store, all vuejs app exposed in window.app
I'm sure you know this already but for channel exposition: it should work if you adapt the GGPK chunk's child_count field to be a version field instead, as the rest of the pack is identical. I don't think anyone has bothered doing that.
v3 is new PC standalone and otherwise identical, v4 is supposedly Mac standalone with UTF-32 strings.
Iβve got to panic learn enough of the language to understand some god-awful portal system for work, OpenOnDemand.
Not looking forward to it.
There's some fun stuff like calling methods on integers directly:
5.upto(10) {|i| print i, " " } #=> 5 6 7 8 9 10
Now that I look at it, the block syntax reminds me of Rust a bit, maybe that's where Rust got it from
Hello there. Where can I ask about possible bugs or problems calculating DPS in Path of Building ?
@digital parrot Open an issue on GitHub if you believe there is an error in the calculations
Ok.
GitHub wants me to register. Is there any other way?
Can someone with a GitHub account forward this for me?
No
Guess I leave it be then ^^
Well, I think I figured out the latest version of the .mat files (at least as much as I need to for my purposes). I'm generating the 3D models for all of the characters, NPCs, monsters, chests, items, etc. without trouble now, regardless of the .mat file version and format.
I found a couple of new monsters/bosses that I hadn't seen before and which don't seem to be released yet. Links in case anyone is curious (spoilers, obviously): https://i.imgur.com/HcQKllu.png https://i.imgur.com/rDQqBHi.png
Do you have any docs on it?
No, but one of these days I might write something up.
A lot of the stuff I still don't understand, but it seems like stuff I don't need to unless I want to start trying to add in better lighting effects etc.
I wish I had the peace of mind and time to get back into formats again, work is a hellscape atm.
Let's take a C++ programmer and build engineer and put them on modifying a web application in Ruby. That's a good use of resources and definitely not stressful.
</rant>
Yeah, I've seen management make some awfully silly decisions. I think non-programmers think any computer person = any computer person.
This is worse, this is arguably technical people, which makes it worse.
I'm good at the things I do, but the job description includes a lot of ops stuff I have no interest nor competence in.
Intelligent allocation of resources is definitely a skill many don't have.
offtopic: EU wants a generic key in every application β₯οΈ
internal EU paper https://files.orf.at/vietnam2/files/fm4/202045/783284_fh_st12143-re01en20_783284.pdf
article in German: https://www.ccc.de/de/updates/2020/cryptowars-2020
and one in English: https://apnews.com/article/technology-data-privacy-europe-fdf47545b487f545ba9f48e38d379a94
I hope the discontent about this spreads a bit...
@frank kayak That's not quite true and also no reflected in the contents of the proposal draft. The last time members of the European Council advocated for access to E2E encryption, they wanted a master key. Having failed that, the current proposal doesn't contain any implementation details at all, passing the responsibility to the third parties providing the encryption instead. So while putting the proposal into effect would be the end to secure encryption, now it's also possible in exciting new ways like user/chat/whatever-specific master keys, MITM attacks or "Quellen-TKΓ" (no idea how to translate this into English properly). Arguably the new proposal is potentially even worse.
Quellen-TKΓ would be wiretapping at the source i guess?
to be correct i skimmed through most...
but the endangering of secure encryption is what bugs me
Something like "install malware to the target device to send (or retain and later send) data before encryption/after decryption"
yeah
good to see the US doesn't have a monopoly on that kind of stupidity
@frank kayak lol wtf, that's like a 180 pivot from the whole privacy bs they've been touting
wtf
Vienna attack: 2nd of November.
...
Delegations will find in attachment the revised version1 of the Draft Council Resolution on
Encryption. It reflects the comments received from the Member States before and during the
informal VTC meeting of JHA Counsellors (Encryption) on __3 November 2020.
__
They were just waiting for the right moment, I guess.
I wonder how they'll be able to enforce this, though...
Is it really a turnaround? Private company collecting data = bad, government collecting data = good is their view.
The sad thing is that Slovak Department of the Interior informed the Austrians via Europol that he tried to buy ammunition. The Austrian services failed to observe or to arrest him, even Karl Nehammer admitted that they made mistakes. So with enough information they failed and now they want more information to do what?
I doubt that it will be enforced. Some court will rule against it, sounds highly unconstitutional to me.
during the hearings in the US about the encryption backdoor bill I recall a congressperson asking a pentagon official what specific attack it would've prevented, the official could not name any
@fickle yew any thoughts on removing non-red beasts from beasts? there's some crazy price spikes showing up rn for random yellow beasts
Kinda wondering if releasing Poe for Mac was a bad idea with arm models coming now. Do we know whether apples translation app results tend to do good?
What kinda troubles do you see ARM chips introducing for PoE ?
@rapid pagoda might make sense yea
Don't think Poe runs on arm without the translation layer so I was wondering if anything is known about performance loss for x86_64 software
maybe you have to play PoE Mobile on Arm Macs
depends on what instructions are used and what type of arm chip
Iβd expect the transition story to be reasonable, from what Iβve heard from a browser vendor itβs not that bad to port to and thereβs been dev machines out.
Itβs been a while since I had to deal with fat binaries, I wonder if they make a return π
its not supported on regular linux distros though :/
Riot Games uses Go https://redd.it/jsdulp
well it must be good then
What is the translation layer in this context ? also was there any mention of the specific arm arch they were planning on using ?
@minor charm The "translation layer" is the thing deep in the OS which implements a x86 emulator/JIT. Apple uses the brand name "Rosetta 2" to refer to this particular implementation.
Apple's current SoCs are using some variant of ARMv8-A; not clear exactly which subrevision is implemented. It's a custom implementation, so it won't line up with any of ARM's standard Cortex-A(whatever) cores
ah ok, a bit like qemu
specifically like qemu-user-binfmt, if you've ever used that configuration π
I see. I don't think I used it. I think it was qemu-arm-static for Cortex-M series devices
oh, yeah, qemu-system is a different thing entirely π anyways, the end result with qemu-user-binfmt is that you can run non-native executables as if they were native executables, transparently; Rosetta has the same effect
Does anyone know how to get more data using the API I seem to be only getting about 600 stashes whenever I use a get request.
That's normal. Follow the next_change_id references for more
I'm having the worst time with the Mac client. My own MBP is too old for Catalina so can't even launch the patcher.
VirtualBox doesn't expose even AVX, let alone AVX2.
qemu with KVM has the ability to remove feature flags from CPUID but still runs instructions you told it to remove.
qemu with TCG emulation doesn't support AVX yet.
As a bonus, you need to turn off SIP protection to be able to attach a debugger at all to a notarized application.
Right now I'm trying to run qemu with KVM on my actual Mac under Fedora, so that I can try running a newer macOS on the hardware that was considered too legacy to upgrade to it.
https://twitter.com/gvanrossum/status/1326932991566700549
(creator of python)
I decided that retirement was boring and have joined the Developer Division at Microsoft. To do what? Too many options to say! But itβll make using Python better for sure (and not just on Windows :-). Thereβs lots of open source here. Watch this space.
1814
12012
Heh, it actually worked...
macOS 10.15 via qemu KVM on Linux on a MacBook Pro that's too old for anything newer than macOS 10.13.
how slow?
As the local disk is too small, the VM runs over NFS.
eh fast...
Surprisingly interactive.
oh
Takes a while to boot, but it can run Discord in Safari and a debugger.
i tried macos on kvm a few months ago - but got glitched graphics after booting. I think it doesnt like my cpu
Biggest struggle was figuring out how to change the CSR flags in the Clover firmware so that I could attach a debugger.
There's a bit of glitching in the terminal tabs.
csr?
It's all software rendering too, of course, as I don't have any passthrough.
Not sure what CSR stands for, but you use csrutil to modify System Integrity Protection.
The Apple infrastructure to prevent unsigned kernel extensions, prevent DTrace and debugger attaching to hardened apps, etc.
sounds like a bit of work...
Took a day or so of curiosity.
First trying to disassemble on real hardware, then VirtualBox, then qemu+KVM on a good machine, then qemu+TCR, then qemu+KVM on real hardware.
It's always nice to have a deep rabbit hole to go down and learn things in.
agree
i tend to choose problems that dont offer much when solved
i prob try macos on kvm again when i can create my new computer. i will question you then
Upside of things, I've got a reasonably well-working macOS installation now too on the i7-6700K.
I ran this: https://github.com/foxlet/macOS-Simple-KVM
(sorry for wrong link before, so many tabs open with slivers of information)
Nah, just Tree Style Tabs (occasionally) and a few windows.
ah did use that at some point
that reminds me of my stash tabs. somehow i have only around 880 tabs now and im pretty sure i did hit 1k tabs or was far above 950
and shouldnt harvest stuff (hortis + seeds) already be removed? i still have them. not sure if thats how it should be.
does anyone else still have hortis + seeds?
was damn happy about the folders. all now sorted in folders - most is in the unsorted folder... - white siege axe tabs in the chance folder
I used to have some addon that slurped all the tabs down into groups or lists to restore later, but I didn't like how it lost me state.
@worthy cape why do you use Clover? https://sourceforge.net/projects/cloverefiboot/ this one?
It's what came stock on the Simple KVM stuff above.
ok
I guess it helps with getting all those pesky settings right on less-than-genuine hardware.
dont want to use my brain today much anymore prob playing a bit
Worst of all is that I've done most of this on the PoE machine, so I haven't played at all π
if zao says it exists I can still grant the role

