#tooldev-general
1 messages ยท Page 89 of 1
would be an interesting comparison
I don't have your implementation though, @chrome topaz
would need something to compare with
So if I had 75 proxies I could scrape an entire ladder instantly correct? ||/S||
|| maybe ||
Just asking for a friend ๐ฐ
Nah I don't have the bandwidth for that shit
Gotta chug away like a good honest boy
2 requests every 5 seconds ๐
I'm in UK scotland, requests to the stash API have a Time To First Byte of 2.5 seconds ... ๐ข thezensei as you said I need to be closer to the servers isnt it ? ๐ข
Oh ok
For throughput, distance to server matters.
So that means no one can keep up with the fresh data with such high TTFB on the regular way (like 1 req / sec single threaded)
operation openarl is still possible
A rootkit but instead of being malicious it just extends the functionality of the api
@simple ravine just use the example on github
infecting my computer with go?
C++
oh
yeah, unsure if I can beat a C++ implementation
but I could come fairly close
the 25ms, on what hardware?
also, are you saturating fields/properties on an object with that, or is it just lazy-parsing?
not sure what you mean by saturating
do you deserialize to a proper object
apparently there are even faster ones these days https://chadaustin.me/2017/05/writing-a-really-really-fast-json-parser/
Several holidays ago, I got a bee in my bonnet and wrote a fast JSON parser whose parsed AST fits in a single contiguous block of memory. The code was small and simple and the performance was generally on-par with RapidJSON, so I stopped and moved on with my life.
not to my c++ object
it has it's own Document and I convert by hand from that
ah ok
System.Text.Json
.NET Core 3.0 preview
built in
I got it down to 26.21ms
I could optimize further, probably
24.87ms...
haven't even added AOT stuff yet
parsing the same document over and over again probably isn't very representative though, is it?
I could try to grab more json files later, but I think it's fairly representative
especially if I do AOT instead of JIT
sure
fastest for Go I had is 38217350 ns/op with jsoniter.ConfigFastest
but the golden goose in this is Span<T> which was introduced in .NET Core 2.1
mind you, also - at this point, I have a fully deserialized object
hopefully the same I copy pasted the schema from another repo https://pastebin.com/X2DHsDXg
@simple ravine now what's your hardware?
Actually I was wrong. The fully deserialized to object got slower, 100ms
but the JsonDocument one still remains true at 37ms
i7 7700K - 4.2 Ghz, 32 GB DDR4 RAM
but is it lazy?
yeah that's reasonably faster than my epyc, anyway we'd need to test both on same hw to be fair
the 100ms is not lazy, that's eager
but I'm also having a few apps running on this machine, on windows
I could compile it to a linux variant for you, but meh
Well with go it'd be so easy ... :p
I mean the 37ms one
not sure, this one's spanking new and haven't looked under the hood to be honest
@chrome topaz if you are interested, there's some info here: https://devblogs.microsoft.com/dotnet/try-the-new-system-text-json-apis/
ya anything .Net Core 3 is blazing fast
it's crazy the performance they're getting out of it
some APIs are are literally 6 times faster than the older version they're replacing
yeah (some even faster than x6)
Tanner Gooding (and a couple of others) from Microsoft .net team is on the C# discord
he's crazy good with perf stuff... went down to hardware intrinsic stuff, and how the processor architecture work under the hood with uops etc
good grief
pathofexile.com/trade is delayed like 10 min again
actually more like 20
priced my helm when I woke up at the top of the hour
just not showed up
ooff
I thought new servers were supposed to fix that
We require more vespine gas
let's create our private place so the conspiracy theorists can have one right 
with api access and all
is the character window stuff also delayed? hmm
i have an idea
sure, but what if I crated an indexer, for private access
x-rate-limit-account 45:60:60,240:240:900
x-rate-limit-account-state 1:60:0,1:240:0
sure
but what if I created an agent application that would send your stuff
to my server
based on what you've priced, using the character window data
you install it, and it's very clear what it'd do of course
can we make it decentralized?
block-chain it!
wanted to make a thing like it for a group selffound so go ahead so i dont have to do it!
:p
then i realized official trading allows priv leagues
It shouldn't be too hard
and i abandoned it
installing 2019 preview to see how fast the parser is haha
in .net core 2.1 parsing ~1.5mb with newtonsoft.json takes ~20ms
I pasted the file I used Emmitt if you wanna try and compare
I can also post the code I used, so you can baseline with your hardware
sure, if you want. I have a simple stash parser somewhere
yeah I was looking for mine that I made before, but I couldn't find it
I didn't look very hard
I made like 5 different iterations on the ggpk and dat parser stuff, and some other stuff inbetween
and I think it was like over a year ago if not more since i was dabbling with the stash data
or well, before the delay was introduced
Yeah, I have one from some time ago as well. There were a lot of fields added since then
Mostly bools, so it wasn't too bad
ugh yeah, but no breaking changes in the structure right?
Na
if you want a fresher preview of .net core 3.0, there's a daily build for preview 7 here: https://github.com/dotnet/core-sdk/blob/master/README.md#installers-and-binaries
Just additions from what I could tell
Had to install the preview vs 2019
Didn't have it
yeah, it think u need to install .net core 3 separately iirc
Yep, I have preview 6
also, new stuff has wpf designer for .net core 3 ๐
Here's the file I used: https://discordapp.com/channels/174993814845521922/175290321695932416/590522319793815552
oh god white visual studio
emmitt saved my eyes
lol, I had a presentation at work, and was showing some code on the projector
white works best then.
then I closed my laptop and went home, opened visual studio
and got flashbanged.
apparently, it syncs.
Yeah
was also giving a presentation haha
was really confused why it was white all of the sudden
i presentation mode myself in intellij because dumbass me thought ctrl+alt+p was a wise hotkey choice
it always is
according to reddit
competition blocked by xyz
heard the news here first
@simple ravine 42ms on average to parse that file
yes. its basically public knowledge now (memeing around :p)
System.Text.Json
JsonDocument.Parse(...)?
right, what models did you use?
i'd like to try the same, but can't find mine
wanna share?
project is pretty shit haha
yeah, one sec
ok, so newtonsoft is at 250ms on average haha

although, it doesn't take in a span<byte>
newtonsoft won't move to Span, according to himself
12.0.2
hence why they made the new System.Text.Json
hehe, i'm converting more and more people by the day
i had a member in lifting discord who's also a dev, he was still on 2015
i threatened to demote his ass
lol
blasphemy.
the difference between 2015 and 2017 was huge
2017 was the major turnaround for the MS dev team
I'll look at it
but yeah, could need some more love
wow not even programming in borland c++ builder 1999
it's the reason I've used resharper all these years
not even a real dev :^)
borland, makes me think of pascal back in the days
where you could inline asm directly
installing 2019 on my home system marks the beginning of the end of 2017 at work
I'm going to get used to 2019 and make everyone else upgrade at work
thanks emmitt
ye
when i called and congratulated my father on his birthday the other day, i asked if he recalled when i started programming
we concluded it was about 25 years ago.
back then we didn't have visual studio ๐
thinking how far we've gotten, or how far we should've gotten perhaps
I start about 13 years ago
haha I started on the web
DreamWeaver then moved to really website stuff php, js, mysql
ah
ah DreamWeaver
I started with visual basic 6
I was making a very shitty online game haha
let me see if I can't find some screenshots
then I made the church website in frontpage
my dad is a ColdFusion web dev
dreamweaver pfft
now it's so niche
i was interviewing someone a couple of years ago
said he was using dreamweaver
... he didn't get the job
thankfully my dad got a job that's split between maintaining CF and new work using javascript/angular
yeah lets turn off all java software and check how nice your stuff still runs :p
so he's learning new stuff to go with his old stuff
@mortal bone did the serializer saturate the properties properly with your PascalCased names?
otherwise, you likely have misinformed numbers
oh shit
the more neutral one would likely be pasing a JObject and use JsonDocument
I didn't think about that
and compare
it has some namingconvention thing, but i dont think it has attributes yet... it's spanking fresh
going minimum viable product style with it
| Method | Mean | Error | StdDev |
|---------------- |----------:|----------:|----------:|
| UseJsonDocument | 37.73 ms | 0.5268 ms | 0.4928 ms |
| UseNewtonSoft | 287.52 ms | 1.4175 ms | 1.3260 ms |
[JsonPropertyName()] instead of [JsonProperty()]
works
~263ms with JsonSerializer fully saturated
one-off?
damn thats not awesome
wonder if you can change the strings to Memory<byte> or Memory<char> and working
Yeah, it is the same. JsonDocument is fast as hell though
Do you have one that is smaller than 1MB?
No, I have skill trees though
I think you will see greater differences when it doesnt have to go outside of the ArrayPool which is 1MB
could try yea
I can. They are a bit of a pain because I had to write a serialize for them
not all the types in the object are the same
ooff
Actually, I can serialize them all with newton and dump the clean files out
May be of interest here.. I did a little writeup of how PoB Item Tester works. It's an AutoHotKey script that drives Path of Building as if it were a headless program with a whole mock UI framework. Kinda crazy the amount of hackery, I'm impressed. https://nelsonslog.wordpress.com/2019/06/18/how-pob-item-tester-works/
(TIL all of Path of Building is in Lua. That is remarkable.)
holy crap
I thought about throwing something together like this, maybe even try to bundle it in a browser extension
now that I look at his repo.. glad I didnt even start. 
I admit if I were faced with the problem of "mock out the UI for Path of Building so you could run it headless and script it" I'd just turn my computer off and go for a walk into the sea.
I tried getting the headless thing to work that Openarl put in there, but I couldn't get it to work in the alotted time I gave it
I think rasmuskl did
Oh does PoB have official support for this headless stuff? This mock UI thing looked pretty hacky
for the web version maybe ?
yeah, not documented when I looked though
@mortal bone trying to parse with ur model, im getting: System.Text.Json.JsonException: The JSON value could not be converted to System.String. Path: $.stashes[0].items[0].properties[0].values[0][1] | LineNumber: 0 | BytePositionInLine: 940.
did u get that too?
the DPS search blows my mind though 
Yeah, because there system.text.json won't convert ints to strings or strings to ints
ffs
you will have to change it to object[][]
object it is
Gimiz, you mean in PoB item tester? it reminds me of the old calculators we ran in World of Warcraft where you'd boil all the stats on an item down to one number. "DPS points" or "Tank points" or whatever.
talking about the integration with gw2crafts.net
I think there is a way to make it do it in system.text.json too, but it's opt-in
| Method | Mean | Error | StdDev |
|--------------------- |----------:|----------:|----------:|
| SimpleJsonDocument | 37.98 ms | 0.6291 ms | 0.5885 ms |
| SimpleNewtonSoft | 244.70 ms | 2.4210 ms | 2.2646 ms |
| PropertiesNewtonSoft | 106.64 ms | 0.3844 ms | 0.3408 ms |
| PropertiesSystemJson | 140.83 ms | 1.3462 ms | 1.2593 ms |
wait what, system.text was slower on mine
yeah that, Gimiz. it's great. I keep looking for ways to tell me if an item is good or crap, this kind of calculation is a big help in simplifying things.
I renamed the properties on mine though
JsonSerializer.Parse(bytes, typeof(Models.SkillTree))
3.7.0
File Size : 1568kb
Parse Time : 39.14
Iterations : 100
JsonConvert.DeserializeObject<Models.SkillTree>(bytes)
3.7.0
File Size : 1568kb
Parse Time : 63.8
Iterations : 100
I think it's slightly faster if you do JsonSerializer.Parse<TypeHere>(json);
im just annoyed that it's slower than newtonsoft for these big ones
JsonSerializer.Parse<Models.SkillTree>(bytes)
1.0.0
File Size : 952kb
Parse Time : 23.41
Iterations : 100
JsonConvert.DeserializeObject<Models.SkillTree>(bytes)
1.0.0
File Size : 952kb
Parse Time : 37.33
Iterations : 100
much faster on small files
I was expecting a little faster tbh
hehe
| Method | Mean | Error | StdDev |
|--------------------- |---------:|----------:|----------:|
| PropertiesNewtonSoft | 35.42 ms | 0.2903 ms | 0.2715 ms |
| PropertiesSystemJson | 28.26 ms | 0.0773 ms | 0.0646 ms |
so if I remove the Items[] and just take the base stash stuff, that's the result
it's clear the reflections are the culprit.
Whoever designed .tsi files hates me. So many fields, starting to get a feeling they invent new ones out of spite ๐
pets uncle HashMap

Was going through all the files, adding fields as I went. Flipped the table when I ran into Environment[1-7], at which point pretty much all the 33 fields were optional.
No point in having an actual struct when nothing's guaranteed.
@chrome topaz currently all the stash grabs are at max size yeah?
26.54 ms using Emmitt code but this schema https://app.quicktype.io?share=ZRRL70e2y5LVV1U0bRkX (i think i'm missing some fields tho)
which file did you use?
wonder why I am getting like 100ms then
are you running your go thing in a debugger, perhaps?
if you wanna try
just doing dotnet run at the base of the project (I installed .net sdk but not a fan (more like a noob) of VS BUT using VScode so far so good)
ah that's my code ๐
ha okok xD
but you have an issue
please tell me sensei ๐ต
you need to replace all the [JsonProperty(...)] with [JsonPropertyName(...)]
because now it won't fill the properties
you should get around ~100ms
mhm do i need to import something ? just renaming rise an error 'JsonPropertyName' could not be found
^ that's why i need to use VS haha...
.NET Core SDK (3.0.100-preview6-012264) that's the famous preview7 I need isnt it ?
I was using preview6
preview7 you need to grab from repo
what's new in preview 7 vs 6?
unsure
you can use preview6 as well
I was trying to get the tree shaking linker to work with preview6 and it borked for some reason, so installed 7
I don't even see preview 7 on the github
did you just pull from the repo?
or is there an installer package
ohhhh diff repo
core-sdk, not core
so it's just trunk, not an official release yet
correct
i've never undrestood why wpf never included a NumericUpDown control
yeah, there are some things u wish they had built in
Anyone know why Item.Property.Values have List<List<Object>> and not a more specific type?
Looking at the JSON, I can only see similar to this:
{
"name": "Level",
"values": [
[
"75",
0
]
],
"displayMode": 0
}
I never see any Values with more than 1 element in them, and in turn 2 values, 1 string and 1 int
I mean, have you seen any values where it's 2 elements or more in the top level of .Values?
otherwise I could simplify it by hand
and the inner-most seems to have a pair, always
Yeah, the inner pair is always a string int
@polar island / @chrome topaz, perhaps?
in the inner or the outer?
I'm seeing this:
{
"name": "Elemental Damage",
"values": [
[
"44-88",
5
]
],
"displayMode": 0,
"type": 10
}
it's still just 1 element, and then 1 element
ah I found one
{
"name": "Elemental Damage",
"values": [
[
"40-68",
4
],
[
"11-223",
6
]
],
"displayMode": 0,
"type": 10
}
well, those numbers... would be nice to have some documentation on this *cough*
hmm, any idea of the "type" on the property itself? there don't seem to be any information on that one yet
I assume that has to do with the color you mentioned?
hm ok
160ms with JsonConvert.DeserializeObject but these weird ["40-68", 4] things are working
before deserialisation 5593597 after serialisation 5573650 :/
Just pull the next one immediately?
Yeah, I would just read enough bytes to get the changeset id then start the next request.
160ms more or less, I mean... I think there are other bottlenecks
Custom 39.606
System.Text 129.984
got one that's a bit faster, so you can initially get the next_change_id quicker
trade-off being you process the actual items a little slower afterwards
@simple ravine Thread it off ๐
o well
your copy/paste
whatever lol
and then just
private static void ParseCustom(string str)
{
var d = JsonDocument.Parse(str);
JsonElement r = d.RootElement;
var s = new N.StashTabChangeset(in r);
}
I wouldn't bother though, too much code to maintain
Yeah, that is pretty gross
That is way more complicated than Newtonsofts custom parsing stuff
well, depends if you want to transform it into something more usable than the stored stuff immediately or offload it to something else later
I'm gonna try Jil
yeah it is, I just tried to optimize the attribute usage away
weren't much gain there either
I would clean that up again
its okay im a filthy nodejser anyway
eww
๐
Yeah, that is why I can JsonProperty tags on the one I sent here
although, I tend to prefix privates with _ because work
are there any command line parameters for running pob?
I want to generate a pob build string from a character url
There is a headless version
Yeah I saw that I was just making sure I wasn't missing an easy solution before I went spelunking through a bunch of lua code
@fossil epoch linked a blog post about testing items earlier: https://nelsonslog.wordpress.com/2019/06/18/how-pob-item-tester-works/
there's also this https://github.com/VolatilePulse/PoB-Item-Tester
Oooo thanks these look helpful
same guy
hrm, using that with a browser extension would be nifty. embed the results for each item in the trade page. possibly add some sort features
I need to implemented the picking of what nodes are what under when in the timeless radius, but you can atleast share some information about jewels
I need to work on the URLs because they are a tad bit large
Regular1 are replaced for Templar/Eternal and Regular2 are replaced for Eternal as well as the keystones
FWIW both versions of headless POB code we're talking about seem to be the same code origin. They both work by invoking POB Lua directly, ie they assume you're already running in a Lua VM. No reason you couldn't make a standalone program do that though and the interface to it externally from your favorite web server scripting language, etc.
Emmitt, you're a smart guy. Figure out how to use PoB from C#!
using HeadlessWrapper.lua
yeah, i found that as well... but i have no idea how that'd work
i tried before, with no luck
I think you would write a wrapper for the wrapper and use that
implement the functions straight across
no idea
I haven't ever used lua in c#
anyone know of a good way to shorten urls with a db?
https://www.educative.io/collection/page/5668639101419520/5649050225344512/5668600916475904 all you could ever want to know about that subject
welp
good read though
I will probably just use tinyurl or something
a big ass url
that is what they currently look like
Yeah, it is a lot of data
rip
I use FF
the website is very fast lol
fwiw @mortal bone that data is literally base 64 encoded JSON. if you decode it, gzip, and re-encode it base 64 it gets to about 1000 bytes. that will fit as a URL in most modern systems but it's kinda awkward.
Yeah, it is just a straight encoding
I could also stripe out a lot of data
probably
(TIL there are exactly 66 characters safe to use in URLs. https://tools.ietf.org/html/rfc3986#section-2.3)
Yeah, I am going to end up using lz-string I think
I could always try and minify the object that I am encoding
dont click on that it makes mustard gas
flatten it out I mean
yeah, for skill tree urls you can to replace + with - and \ with _ when encoding
@polar island I like how your URL spells out "NEWLAD" in the middle.
damn poeapp looks great
it is a special string in every url lol
you talking like that?
oh, I see
nvm
I don't think they are hosted
I would use pypoe
It reads from a ggpk in a local directory as far as I know
Ah, I don't know then.
Can't help you there, I just traverse the GGPK offline.
lz-string is ugly as hell, but a lot better than 2.5k characters lol down to ~800
Yeah
~175 characters lol
~1k with a full build. The major problem is I have to store the tree url
wow this is a lot of discussion to scroll through to find my mentions
@distant rock our OAuth only supports the /api/profile API at the moment so it still won't be of use to you guys. I'm looking into extending it but it's not high priority atm
@velvet fog challenges information probably not, depth and depth solo sure
@fickle yew I'd have to test to make sure including that information doesn't slow it down too much, currently we don't hit the web DB when caching the ladder
hi synnro
It is very cold this morning.
Should have pinged him haha
I've been cruel enough with pings today ๐
oh wow I always just type in "mentions:Novynn#0001" into the search bar ๐คฆ
haha there's a button for it of course!
I want to get back into C# with all this cool C# discussion
hehe, we learn something new everyday
It's certainly a good time to pick it up, with all the good things happening to .NET Core (and with .NET 5 consolidating them both soon-ish)
it might be a good candidate for multithreading the stash API pull for the trade site
currently that stuff is a single threaded PHP script ๐
certainly
Yeah, definitely
C# makes threading much easier than most languages/frameworks
if you target linux does it have to pull in a bunch of libraries to function? Or can you bundle them into a single executable
you do dotnet publish -r linux-x64 -c Release --self-contained
this way, you get a larger publish, but you don't need any prerequisites (afaik)
Yeah, it rolls all the prereqs in
looks perfect
I would also look at doing .NET core 3, rather than 2, as it'll be stable this fall
for a bit more heavy-duty data ETL stuff, I would recommend looking a bit into .NET TPL stuff, an unsung hero for these kind of things
I wish there were webhooks for stuff like accounts joining a guild ๐ฉ
I wish there were better officer role stuff. Hopefully that's something coming one day
Today, an officer is only capable of inviting people, that's it.
well yeah, but that's off-topic wishful thinking ๐
@simple ravine Move to NZ, solve all GGG's problems.
I don't think that's an option with work visas etc
but I could do it remote, for sure
Aren't they easier to set up if it's for a specialized role that can't be sourced domestically much?
I asked about working remote, and bex said they don't allow it :(
uh, it's 2019, not 1989
I could see having kids and roots kind of being a hamper.
Was going to apply for the web dev job, but I can't move
working remote is how leaks happen tbh
I don't think I agree with that
I don't agree with that at all
I am not saying it's guaranteed to happen but it does open a huge area of attack
I work remote a lot, and I have no work data on my personal pc
2FA VPN + Remote Desktop
yeah there's proper ways of doing it
but if you work remote and leak stuff they can't personally beat you up
Yeah, I rdp a very small distance, and I don't really notice it much
tfw live in nz but don't want to live in auckland
Commute?
I wouldn't want to 'step down' to being a regular dev again though.
that sounded condesending now that i read it
the longest RDP I've done for work is MA to TX, it worked pretty well
wtf how do you not have fibre
it would hurt to lose my connection for sure
it's like when u move from 60hz to something better
dealing with home owners is painful
" I don't want to pay for something 10x better because I don't use it"
yup
like chorus just rock up to your house and shove it in
HOA... I am sorry
also raises your property value
Oh, wait wut
yep
It is free to have installed?
in NZ yeah
Damn, we are still paying on a bond they passed for it
Where you based out of Emmitt?
oh nice, most of the tech is concentrated in portland?
I dunno I'm also not a great programmer so that's the real reason ๐
Yeah, all the tech is in Portland
Which sucks because I am a good 1hr-1.5hrs away with traffic
didn't portland do municipal fiber? or was that just something they were looking at
My current road trip to work, if I go in, is 104 miles
hotdamn
I dont think Portland passed the bill
that's a shame
I have 5 minutes to the office, but I still work from home a couple of days a week
luckily im fully remote, 5 mins away sounds a bit too close
I go to customer meetings, gather requirements and crap, then I go home and draw boxes with lines between them, and write things. Sometimes I write some code.
I don't know how you do it. I worked remotely for 4-5 years and hated it
No need for RDP or things like that fortunately
See this is why I'm a bad programmer. I draw circles with lines between them ๐
๐คฃ
Squares are easier to get right, for sure
Working remote is nice. I don't have to put in 40hrs if I don't have the work
In the office you have to look busy
I always had a problem with separating work from home. even a dedicated office didn't really help
At home I have bigger screen estate, it's quiet and I get things done easier
No colleagues asking questions how to do things ๐
just lol if you're not hounded on slack with questions
some people even rent dedicated working spaces
I was nagged by a dev today about Azure KeyVault
but it was a little trickier one, because he couldn't add the app he added Managed Identity Service, but he couldn't find it when adding to the Security Principles as he didn't have read rights to Azure AD
had to show him to do it through CLI instead
can you programmatically write to a .net core appsettings.json?
or is it meant to be read-only?
I know you can can add a json file to the config builder and do your configs that way
with the built in JsonConfigurationProvider? no
you can write your own that implements saving tho
Yeah, the default won't write if you update the config
copy that and override Set(string key, string value)
alternatively add your own saving functionality and call it whenever /shrug
Is it for a desktop app?
I just wrote a Save/SaveAsync method that writes to the appsettings.json
using the shiny new JsonSerializer
If it's a desktop app, you should probably separate user settings and app config, and store the information in C:\Users\username\AppData...
nice I'll try that
since .net core 3 supports wpf
what do you do if you want to write a wpf library?
.net standard doesn't support wpf right?
.net standard is agnostic, so yeah
is it possible to make a .net core library?
yes
oh sweet, output type library
lol
so simple
popular wpf framework libraries haven't been build yet for .net core 3
gotta download them from source and rebuild them targeting .net core
so when wpf comes to .net core does that mean it's gonna work on linux?
no
you sacrifice portability when you use wpf in .net core 3
but you gain all of the performance improvements of .net core
that's unfortunate
there's Avalonia though
that's basically a meme at this point
idk how many times I've heard, "There's Avalonia...."
linux desktop is a meme
only thing Avalonia has in common with wpf is xaml
different framework, different beast
2019 is the year of linux desktop
$(( $(date +%Y) + 1 )) is the year of the linux desktop
WSL: Linux on the desktop, but not the way anybody expected it to happen
I like how one of the videos has an anime picture in the background
they know their target audience well
Ya know, this is a pretty good little Discord channel community. TY>
yessss.....just about finished converting my WPF app to .Net Core 3
most of the work is converting from WCF to...not....WCF
trying out gRPC.Net
rip WCF
you .NET people will probably all explode when you hear what language my GGPK toolchain is written in ๐
php?
close. Perl
(the worst I could think of)
oh wow
Perl isn't that bad, it just requires several master level degrees to understand
Lol hope you commented that code ;)
The only thing worse than writing Perl is reading it...
Some slight amusement: https://www.reddit.com/r/pathofexile/comments/c2a4qt/private_indexers_need_to_be_perished/
there are some legitimate questions to be asked about buyers who seem to be unnaturally quick to whisper offers. this, however, is not one of those questions
You give some too much credit with the understand statement
Well, your delay is only as long as you can aggregate the 3 trade sites
I don't think it would take much to write a program or a script to connect and aggregate from all the trade services
All web sockets as far as I know
would explain why some people get items first, different parsing speeds on the trade sites
not going to lie, I end up going back to poeapp from the official site this league
yeah me too. I don't have any concrete evidence but it's felt super slow vs 3rd party ones this league
The mod separation is really nice and it sucks everyone can't have that
I sent a cake once lol
There is a lot more people in the office now though, so rip you
@simple ravine for 15 years it's not a meme, but a pleasure ๐ (linux desktop)
That thread is a gem @grave wren
@compact isle That makes sense. It's was also to save you from all my lame private requests... Also can confirm that a c# multithreaded fetcher works wonders. It's what ninja uses. Json parsing doesn't matter that much though.. I just throw it on a queue the second I fetch so it can keep on going.
That 1 second rate limit makes it a bit more complicated though. Would be great if it was a bit longer ๐
@compact isle Thanks for the response!
Anyone here with any experience in setting the POESESSID cookie locally for .pathofexile.com? Trying to create a web-based login for Exilence but not sure how to go about it right now.
Can't seem to set cookies in chrome this way since it violates the security
does anyone know how you deserialize category?
{
"verified": false,
"w": 1,
"h": 1,
"ilvl": 0,
"icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Currency\/CurrencyModValues.png?scale=1&w=1&h=1&v=0ad99d4a2b0356a60fa8194910d80f6b",
"league": "Legion",
"id": "77ae4e43f5083113234fd14eaaac36d2014c2fe0cdea69d28910153af7bb77f3",
"name": "",
"typeLine": "Divine Orb",
"identified": true,
"note": "~skip ",
"properties": [{
"name": "Stack Size",
"values": [["8\/10",
0]],
"displayMode": 0
}],
"explicitMods": ["Randomises the numeric values of the random modifiers on an item"],
"descrText": "Right click this item then left click a magic, rare or unique item to apply it.",
"frameType": 5,
"stackSize": 8,
"maxStackSize": 5000,
"category": {
"currency": []
},
"x": 20,
"y": 0,
"inventoryId": "Stash1"
}]
I've tried this
public partial class Category
{
[JsonProperty("currency")]
public object[] Currency { get; set; }
}
ah got it
internal class Category : ICategory
{
[JsonProperty("maps")]
public IEnumerable<string> Maps { get; private set; }
[JsonProperty("gems")]
public IEnumerable<string> Gems { get; private set; }
[JsonProperty("flasks")]
public IEnumerable<string> Flasks { get; private set; }
[JsonProperty("Cards")]
public IEnumerable<string> Cards { get; private set; }
[JsonProperty("currency")]
public IEnumerable<string> Currency { get; private set; }
[JsonProperty("accessories")]
public IEnumerable<string> Accessories { get; private set; }
[JsonProperty("jewels")]
public IEnumerable<string> Jewels { get; private set; }
[JsonProperty("armour")]
public IEnumerable<string> Armour { get; private set; }
[JsonProperty("weapons")]
public IEnumerable<string> Weapons { get; private set; }
}
there's a ton of categories
but they never have anything in them
unpack it as an object
this is what i needed
public Dictionary<string, object[]> category { get; set; }
[JsonProperty("category")]
public ICategory Category { get; private set; }
or that :v
then I can query the dictionary to see what key exists
SHOULDA USED JS
@simple ravine System.Text.Json doesn't appear to be able to serialize enums as strings...
and there's no custom converters
write your own?
wait
no as in System.Text.Json doesn't have that feature?
oh my
ya...
@hazy fog

hi, did PoE integrated a OAuth system to login with a third-party service?
I believe so but the connection information isn't public afaik. you'd need to contact Novynn for access I believe.
@polar island am I right
because I remember using a service (I think poemap.live) and was redirected to poe's website with some sort of oauth
I was just thinking that poeapp
also @polar island , do you know if they can authorize upcoming third-party services for oauth?
or did they close/restrict the oauth api for live and production ready services only?
if you desire access to the oauth login please send your requirement and usage to roryv@grindinggear.com He is handling oauth2
now we do
thanks @hazy fog , all what I needed!
๐
F:\Development\LibPob\Playground\bin\Debug\netcoreapp2.2\PathOfBuilding\Modules/Common.lua:(277,1-278,83): pattern too complex
so far, only to be stopped by jsonToLua
F
what you do @fathom spruce
if you get it to work, please enlighten me
-- Hack to replace jsonToLua, MoonSharp can't handle the supplied pattern
if fileName == "Modules/Common" and PatchJsonToLua ~=nil then
PatchJsonToLua()
end
:\
u using the HeadlessWrapper.lua thing?
kind of?
there's quite a bit more to add in
_script.Globals["bit"] = _script.DoFile("Assets/bitops_lua/funcs.lua");
_script.Globals["curl_shim"] = _script.DoFile("Assets/curl_shim.lua");
_script.Globals["PatchJsonToLua"] = (Action) PatchJsonToLua;
_script.DoFile("Assets/PreLaunch.lua");
_script.DoFile("Launch.lua");
_script.Globals.Get("launch").Table["CheckForUpdate"] = (Action<bool>) CheckForUpdateHook;
_script.Globals.Get("launch").Table["DownloadPage"] = (Action<string, Closure, string>) DownloadPageHook;
_script.DoString("RunCallback(\"OnInit\")");
_script.DoString("RunCallback(\"OnFrame\")");
_script.DoFile("Assets/PostLaunch.lua");
that's my launch sequence so far
oh, I thought you just "used" HeadlessWrapper.lua and called it a day
load in bitops compatible library, stick in a curl lua shim, patch json to lua, do headless pre & post launch.lua
also hook check for update and download page, since those don't work and need to
are you able to hook them to C# methods?
yeah
using MoonSharp, it's a mostly complete 5.2 lua implantation completely written in .net
ooh
working my way through patching all the little problems that come up
so far it loads all the modules and downloads the passive tree. after I fix jsonToLua not sure what else will break
that feeling is quite familiar yeah
https://git.internal.aotc.us/aotc/LibPob if you want to take a peak
it's real rough so far. just trying to get the bugs worked out before cleaning it up
Yeah, this is what I got stuck at before, when trying:
MoonSharp.Interpreter.SyntaxErrorException: 'unexpected symbol near '#''
remove #@ SimpleGraphic from the top of launch.lua
I'll eventually strip it out via the script loader. it's the only instance though
btw, anyone familiar with lua know wtf that's supposed to do? I've literally never used the language before now
hehe me neither ๐
what what is supposed to do?
#@ SimpleGraphic
at the top of a lua file, for luajit
Oh, I haven't used luajit just lua ๐
Nice, it's running
Unfortunately a bit stressed for time at the moment, so I can't help with the given problem right now
in terms of lua # is the length operator. Don't think @ is used iirc
naw, that's for jsonToLua
moonsharp doesn't like the complexity of the gsub
maybe you could help with this, trying to figure out how to patch the function but it's not showing up in the global table
https://github.com/Openarl/PathOfBuilding/blob/master/Modules/Common.lua#L276
the file is loaded vis
local func, err = loadfile(fileName)
so it's these patterns that it's complaining about, I guess:
return json:gsub("%[","{"):gsub("%]","}"):gsub('"(%d[%d%.]*)":','[%1]='):gsub('"([^"]+)":','["%1"]='):gsub("\\/","/"):gsub("{(%w+)}","{[0]=%1}")
yeah
my plan was to patch jsonToLua to something in .net but I can't get a function to patch
there's also something called NLua, not sure if that'd be easier or not
you'd have to use an older version of NLua, it's currently at 5.3
breaking changes?
lots
there's a post some where from the author of luajit talking about how awful 5.3 is
lua has breaking changes in every version
Re: Port bitop to 5.3?, luajit at FreeLists
wat? :v
loadfile returns the file as a function
you have to execute the function to populate the global table
:V
local func, err = loadfile(fileName); func() jsonToLua()
sorry if its a dumb question
just making sure ๐
oh LOL
local func, err = loadfile(fileName)
if func then
ConPrintf("EXECUTE THE FUNCTION YOU IDIOT")
end
oopsie
it still borks?
I got the function, need to replace it with something in .net so MoonSharp doesn't error out
although, maybe this off the shelf lua json encoder/decode lib will work
oh god
does moonsharp have bitops?
https://github.com/AlberTajuelo/bitop-lua load in this lib with
_script.Globals["bit"] = _script.DoFile("Assets/bitops_lua/funcs.lua");
pure lua replacement
that's gotta be pretty slow
I mean, optimization can come later. there's plenty to do to speed it up
hard to beat luajit
no C# bindings for luajit
I know rasmuskl got it to work
unsure if he used luajit, but i know he did it in c# for poe.ninja/builds
I mean, MoonSharp is alright for performance. it's not as fast as NLua but it does faster .net calls
it's probably not a big issue if you're not running the ui
If I recall correctly, the 5.1 or 5.2 version had was not for .net core or something, the library I was testing last time
and I had a bunch of issues with the bit stuff, and first tried to patch it by editing the lua code, but there were so many places
yeah, the best way to do that is to load a bitops replacement library or patch in functions from .net
I might do the latter once I get it working and perf it out
Does anyone know if there are any official posts from GGG about how curse priority works in party play? In my testing the description on the wiki is wrong.
Nooooo
my NumericalUpDown control isn't working on .net core
after all the work of rebuilding the library ๐ฆ
why not?
not sure, just doesn't show up
regular textbox shows up
but this custom control doesn't
I decided I didn't actually need the up/down arrows
so I'm using a regular textbox with a behavior attached to only allow numbers
anyone know how to enable original sounds in filterblade?
@compact isle Hi, Is there any way to use oauth2 for Korean users or any alternative ways?
check the pin!!!!
@simple ravine Have you encountered Connection id "0HLNKU2MREIDA", Request id "0HLNKU2MREIDA:00000001": the connection was closed because the response was not read by the client at the specified minimum data rate. with .NET Core?
I've seen it quite frequently on ninja after Legion launched..
It'll 504 for a minute or so
Mostly when requests are > 1500 / minute
Hmm
Looks like it might be an issue with JsonResult
writing synchronously
and causing starvation
Are you reusing HttpClient?
The error itself makes little sense as I have nginx in front that should handle spoon feeding
This is on incoming requests
Controller actions
What on earth...
I've upgraded to .NET Core 2.2 now, let's see if that helps.
Anyway.. "Too much load for .NET Core" internet achievement unlocked ๐ Thanks Legion!
Yeah just did
I thought the point of kestrel was to make it extremely scalable
that's kind of impressive
Rasmuskl can you share some insight on Lua thing with pob
Well if this is JsonResult doing silly things it's not really Kestrels fault
I have to take my daugther to daycare now, but I'll check once I get back.
You could also try 3.0 preview 6 with the new json serializer
Nah I'll skip the previews for now ๐
Alright, going to office, will be online there
Right. I can probably answer some pob questions.
how you doing the autopob stuff?
Well, I guess I sort of know how. I'm mostly looking for the ability to take a account and character name and generate a pastebin from that.
How hard is that going to be ๐
Classes/ImportTab.lua DownloadPassiveTree & DownloadItems
Yeah pretty much. There's some code already in the headless wrapper.
Hm. Is there any way to actually link Legion to 3.7... The major patch version isn't in any of the apis afaik?
@fickle yew Did you use MoonSharp as well, or did you use something else?
luajit microservice 
ohh
approaching 5 megapobs.. so it seems to work ok ๐
If you move it to github, @fathom spruce, I'll try to get some time on it
Yeah will do later
What are you working on @fathom spruce ?
I've got a bunch of ideas for optimization and what not once it's working
Pob c# bindings
Using moonsharp (Lua interpreter fully written in c#)
Ah cool. I'd definitely take a look at those
And if I get drunk enough sometime, I'll rewrite MoonSharp with .net core 2/3 optimizations ๐
Yeah, the main issue right now is with the recursion limit baked into moonsharp. They added a Lua bugfix that luajit doesn't have
Makes all the gsub and find methods not work
@simple ravine you're a braver man than I am
I am just extremely stupid with my choices where to put my energy
Although that parser using Span would be fantastic
yeah, parsing is a prime example where it would shine
How's the performance difference between luajit and MoonSharp?
well could be that there were some general perf metrics ๐
I spend about 1 sec per build calc atm
ooff
@woeful sphinx said he were down to less than 250ms and there were further optimizations to be made,
Would be interesting to see if there were some collaboration possibilities soon there, and potentially some feature parity
Well I'm recalculating multiple times during that second
In pob you're advancing the gui frames to force calculations often
It's not really built for bulk processing
My server has only spent about ~58 days of cpu time calculating builds so far ๐
hehe snap!
I really want to have a community collaboration on a C# library that does similar things to what PoB does, but without the GUI - that would be up to separate projects to deliver.
This way, we can start providing cool things with a unified way of calculating things
I've scrapped most of my code after integrating pob
My calculation engine
It wasn't nearly as abstract as the one brather1ng is working on, but it was fast and made for bulk ๐ I only got around 80-90% done though.
and a few patches behind now
Yeah, I think the best idea is to not be alone in that struggle
Perhaps we can take a look at yours. If you'd like, put it in some repo as-is with a couple of bullet-points, and I could take a look
In a couple of weeks, I have 4 weeks of paid vacation ๐ for the first time in like 6 years
Oh ๐
And I am not gonna do 1 minute of normal work
Oh, you're allowed to be on paternity leave and also use daycare in Finland? that's pretty awesome
Denmark... not Finland ๐
She's just starting now, so spending some paternity leave to get her used to it
just short days
ah ok
It feels like it was just a couple of months ago your baby was born ๐
Time flies, geez
11 months. Time does fly.
hm 20pto sounds super meager, here 30 every years it he standard
yeah we have 25, or can opt for 30 without overtime extra pay
but I save a few days for fall/winter
oic
USA has like 10?
some not even that
Where you at Faust?
ger
achso
gesundheit
what are you doing with your fto then?
fto?
oh
well, vacation, not sure - haven't decided
but I'm sure there will be some time for poe things
poe (tool) dev hackathon in Malmรถ ๐
Malmรถ is like 5+ hours away for me heh
But tempting
Would be fun to go down to Denmark too, pop in and visit Lifting as well
about as far as you can get from Copenhagen ๐
What are your plans for the summer?
Not sure if my family appreciates me taking my first real vacation in years to go down by myself somewhere, hehe. Would be fun though.
not having any vacation now.. waiting till fall
can we do it in nodejs instead
javascript is the language of the future ๐ โ
||kill me||
|| it is tempting /s ||
one would suggest a lifetime ban to wraeclast for this heresy
Let's do it in C, and we can create binders to different other high-level languages /s
Now that I think about it... It's not a terrible idea
Now we're talking. 
If there's enough interest
amateurs, we clearly need a sap backend and should code in abap
But I'm getting the feeling, after a few years of indoctrination, .NET seems to be the most used language by the people active in here
I will have you slapped with a trout for mentioning ABAP
fucking SAP
< filthy ruby dev here >
I'd rather C than ||C++|| ๐ฐ
feeling like it might be py
Faust, you do c# no?
I do ruby as well for work
Retik, me, rasmus, emmitt, brathering, notoats, etc
c# is a nice language when people follow the conventions set my microsoft
depends if the question is personal pref or work 'obligations'
which is why I hate unity
I mean, you could say the same thing about javascript too
if you travel 15 year back in time, and apply the same coding standards today
Oh I hate javascript too I just use it cause I'm lazy and node just werks โข
Rasmus, if we were a few to collaborate, do you think we could make something in c#?
i dont really care which language i use tbh
C# for sure.
if i were to get into a c# project i'd not mind
i'd mind if i get into a sap project tho
For me anyway ๐
would be my main reason to hand in my notice :p
i have to use their ui5 js frontend tech sometimes
not a fan but bearable
anything more and i'll be gone or want a way higher salary
from Charybdis into Scylla, you could always get an alternative between SAP and SalesForce's "Apex" crap
which is basically gimped Java
Mine's RFC with BAPI / ABAP functions
but poeapp is the one who linked it