02:13 <+bridge> [ddnet] ChillerDragon, are you there? 09:00 <+bridge> [ddnet] @deen ^^ when you are around pls 09:07 <+bridge> [ddnet] @Learath2 hi 09:07 <+bridge> [ddnet] o/ 09:08 <+bridge> [ddnet] done 09:13 <+bridge> [ddnet] @deen can you check error.log? I think I broke something with that 09:14 <+bridge> [ddnet] Ah, that should have been an elseif not an else if 09:15 <+bridge> [ddnet] hm, shouldn't need to be 09:46 <+bridge> [ddnet] @Learath2 ^ 09:48 <+bridge> [ddnet] oh the stupid closing brackets, I wonder why my IDE didn't complain at all 10:12 <+bridge> [ddnet] `^[0-9a-fA-F]{8}\-(?:[0-9a-fA-F]{4}\-){3}[0-9a-fA-F]{12}$`ย is probably a better regex for uuids 10:16 <+bridge> [ddnet] you don't need to escape - outside of `[]` and not at the start/end of `[]` 10:16 <+bridge> [ddnet] you don't need to escape `-` outside of `[]` and not at the start/end of `[]` 10:17 <+bridge> [ddnet] `^[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$` even better 11:39 <+bridge> [ddnet] `[\da-fA-F]` 11:40 <+bridge> [ddnet] `[[:xdigit:]]` ๐Ÿ˜› 11:40 <+bridge> [ddnet] ew 11:40 <+bridge> [ddnet] lucky with grep u can use -E 11:41 <+bridge> [ddnet] you don't like posix character classes? 11:41 <+bridge> [ddnet] no 11:41 <+bridge> [ddnet] its ugly 11:41 <+bridge> [ddnet] imo pcre is the best regex 11:42 <+bridge> [ddnet] PCRE has posix character classes 11:42 <+bridge> [ddnet] but most of time u dont need them 11:43 <+bridge> [ddnet] ```This crate provides a library for parsing, compiling, and executing regular expressions. Its syntax is similar to Perl-style regular expressions, but lacks a few features like look around and backreferences.``` rust regex 11:43 <+bridge> [ddnet] You never need them, they can make regex easier to read sometimes 11:43 <+bridge> [ddnet] why most languages cant implement a full pcre 11:44 <+bridge> [ddnet] I think php and ruby are pretty complete pcre implementations 11:49 <+bridge> [ddnet] backreferences are badโ„ข because they make the expressions no longer regular in the cs sense 11:49 <+bridge> [ddnet] that means they are no longer guranteed to run in linear time 11:49 <+bridge> [ddnet] (PCRE backreferences have exponential worst case) 11:53 <+bridge> [ddnet] hm, is it because with regexes are supposed to be equivalent to some DFA and with backreferences we can no longer map it to a DFA? 11:53 <+bridge> [ddnet] yes 11:53 <+bridge> [ddnet] `s/with//` 11:54 <+bridge> [ddnet] the name comes from CS, "regular languages" are exactly those that can be accepted by a DFA 11:54 <+bridge> [ddnet] I wonder how regex engines handle backreferences 11:54 <+bridge> [ddnet] backtracking 11:55 <+bridge> [ddnet] backtracking as in actually going back to when the match first happened? 11:56 <+bridge> [ddnet] no, backtracking as in "brute force with backtracking" 11:56 <+bridge> [ddnet] try to greedily match the regex, if it doesn't match, backtrack to the first position where you made a choice and make the next possible choice 11:57 <+bridge> [ddnet] hm, what choice are they making? 11:57 <+bridge> [ddnet] `(a*)*` 11:57 <+bridge> [ddnet] `aaaaaaab` 11:57 <+bridge> [ddnet] ah, how much to match 11:58 <+bridge> [ddnet] yes 11:58 <+bridge> [ddnet] (this is an example where PCRE chokes btw) 11:58 <+bridge> [ddnet] yes, this one is artificial, but people have been bitten by exponential regexes before (e.g. stackoverflow) 11:58 <+bridge> [ddnet] I see, I wonder if someone came up with a smart way to do non-regular expressions decently efficiently 11:59 <+bridge> [ddnet] https://stackstatus.net/post/147710624694/outage-postmortem-july-20-2016 12:01 <+bridge> [ddnet] This is what happens when you get too comfortable with features like these 12:02 <+bridge> [ddnet] with linear-time regex engines, you don't have to worry about it 12:02 <+bridge> [ddnet] I always assume a regex match is an order of magnitude more expensive then a more traditional approach 12:03 <+bridge> [ddnet] Sure that means I use less regex in my code, but whatever, I'd rather have predictable performance 12:03 <+bridge> [ddnet] linear-time regexes give you that predictable performance 12:04 <+bridge> [ddnet] yes, but say we use a linear-time regex engine on ddnet, then I decide to parse something in js and copy over that regex 12:04 <+bridge> [ddnet] yea 12:04 <+bridge> [ddnet] suddenly my linear-time regex can become an exponential cost ๐Ÿ˜› 12:05 <+bridge> [ddnet] impressed by the response time by SX btw 12:05 <+bridge> [ddnet] 34 minutes is impressive, indeed 12:05 <+bridge> [ddnet] They probably have some builtin profiling somewhere in the code, it'd be impossible to track it down blind 12:06 <+bridge> [ddnet] or maybe some tracing of calls into the underlying engine 12:36 <+bridge> [ddnet] my nginx will pass PHP_AUTH_USER just fine, the one on ddnet.tw wont 12:39 <+bridge> [ddnet] now it decided it'll start to pass it along 12:39 <+bridge> [ddnet] wtf? 12:40 <+bridge> [ddnet] hmmm ๐Ÿ˜„ 12:44 <+bridge> [ddnet] ah another http header oddity 12:45 <+bridge> [ddnet] yay to not upgrading decades old software because dinosaur forgotten servers we should still be able to connect to 12:47 <+bridge> [ddnet] elaborat 12:47 <+bridge> [ddnet] e 12:49 <+bridge> [ddnet] hm, now that I think about it it's more of a PHP oddity 12:49 <+bridge> [ddnet] as soon as you send 1 header, php will no longer touch the headers 12:49 <+bridge> [ddnet] they are all your responsibility 14:10 <+bridge> [ddnet] maybe we should not be sending commits to branches to github 14:10 <+bridge> [ddnet] `s/github/discord/` 15:13 <+bridge> [ddnet] Guys, I have weird problem / bug related with `game.png` image. With the default one, if I am in freeze, there are only two rows showing the health & shields bar. If I use custom one, done properly, dilated, without any additional images anywhere on it, I somehow have 3rd row of unknown thing 15:13 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/704319403424088174/unknown.png 15:16 <+bridge> [ddnet] is it bullet's sprite ? 15:18 <+bridge> [ddnet] I have no idea, but either way, I didn't draw any additional stuff on the game.png, so I have totally no idea why anything is appearing in there 15:19 <+bridge> [ddnet] ...to make it funnier, I just realized that if I don't dilate the `game.png`, this thing is not appearing .-. 15:21 <+bridge> [ddnet] ok, it's more complicated than that 15:30 <+bridge> [ddnet] ok, the answer is it takes the last pixel at bottom right edge, so there has to be at least 1px space from the edge... but why? 15:35 <+bridge> [ddnet] @Learath2 15:36 <+bridge> [ddnet] U can help? 15:38 <+bridge> [ddnet] @Crying write with what already 15:38 <+bridge> [ddnet] u can ban players in game? 15:38 <+bridge> [ddnet] ask @Moderators 15:39 <+bridge> [ddnet] or simply write who does what on #general including server ip & port 16:05 <+bridge> [ddnet] wrong channel 16:05 <+bridge> [ddnet] i have this one muted 16:05 <+bridge> [ddnet] dont ping mod here 16:06 <+bridge> [ddnet] general or showroom if you want to add an image to it 16:08 <+bridge> [ddnet] @Soreu is this u lol 16:08 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/704333041564123287/Screen_Shot_2020-04-27_at_9.07.09_AM.png 16:08 <+bridge> [ddnet] only #general, not #showroom 16:09 <+bridge> [ddnet] @onby umm, yep. Out of boredom checking all old DDNet clients for when that started appearing & when it changed. but older versions get banned from DDNet & KoG servers so tried on ur xD 16:09 <+bridge> [ddnet] not 'older versions' but 708 specifically 16:09 <+bridge> [ddnet] and a few other old ones 16:09 <+bridge> [ddnet] I'm going thru every single one of old DDNet 16:09 <+bridge> [ddnet] :P 16:09 <+bridge> [ddnet] lol he wanted to bot 16:09 <+bridge> [ddnet] :kek: 16:10 <+bridge> [ddnet] If i'd want to bot, I would use better clients than DDNet 7.8.2 16:10 <+bridge> [ddnet] hmm, that got me wonder for how long I might got banned on KoG now :think_bot: 16:11 <+bridge> [ddnet] dont they autokick 16:11 <+bridge> [ddnet] didn't look that closely on the info 16:11 <+bridge> [ddnet] xd 16:12 <+bridge> [ddnet] either way, guess I have to start checking on local server now xd 16:12 <+bridge> [ddnet] bot on lan server :think_bot: 16:13 <+bridge> [ddnet] shouldnt u try to test them by bisecting 16:13 <+bridge> [ddnet] find the halfway point between version 1 and newest and test that 16:14 <+bridge> [ddnet] then if it works try finding the halfway point between that and newest and repeat 16:15 <+bridge> [ddnet] yeeaaa, but I'm seriously bored 16:15 <+bridge> [ddnet] lol 16:15 <+bridge> [ddnet] do something useful 16:15 <+bridge> [ddnet] doing. Trying to find when that bug started appearing 16:16 <+bridge> [ddnet] if ur gonna get banned, at least get banned while ur actually botting :zzzz: 16:16 <+bridge> [ddnet] do it properly 16:16 <+bridge> [ddnet] shh 16:17 <+bridge> [ddnet] ok. shit won't work that way 16:17 <+bridge> [ddnet] on local server I don't have that 3rd row 16:17 <+bridge> [ddnet] wtf even 16:17 <+bridge> [ddnet] try on vanilla server 16:17 <+bridge> [ddnet] but why I have it on KoG, DDNet, but not local srv from latest version? 16:18 <+bridge> [ddnet] just wtf 16:18 <+bridge> [ddnet] local server is ddnet too? 16:18 <+bridge> [ddnet] y 16:18 <+bridge> [ddnet] @Soreu it's configurable 16:19 <+bridge> [ddnet] @heinrich5991 huh? 16:20 <+bridge> [ddnet] okay, maybe I skimmed too much 16:20 <+bridge> [ddnet] the autoban is a configuration option 16:20 <+bridge> [ddnet] ah, that part 16:20 <+bridge> [ddnet] xd 16:21 <+bridge> [ddnet] anyway, I still don't get how comes I have it on official servers, but not on local one 16:21 <+bridge> [ddnet] try on ctf 16:22 <+bridge> [ddnet] in latest client I have weapon bullets here (CTF3) 16:22 <+bridge> [ddnet] in old af client too 16:23 <+bridge> [ddnet] and they do show poperly 16:23 <+bridge> [ddnet] for every weapon? 16:24 <+bridge> [ddnet] pistol, sg, laser, rocket 16:24 <+bridge> [ddnet] since that bug appears in freeze, i guess it's related to ninja 16:24 <+bridge> [ddnet] and can't test this one here 16:26 <+bridge> [ddnet] on some dm1 servers there is ninja at the top 16:27 <+bridge> [ddnet] umm 16:27 <+bridge> [ddnet] I think it actually might be bug related to KoG servers 16:27 <+bridge> [ddnet] why 16:29 <+bridge> [ddnet] ...because I just noticed (ye, i'm smart today) that I actually don't have it on DDNet servers 16:29 <+bridge> [ddnet] only on KoG's 16:29 <+bridge> [ddnet] ah xd 16:29 <+bridge> [ddnet] weird 16:29 <+bridge> [ddnet] second thing I noticed is that I should have made backup of client settings before lanching older ones 16:30 <+bridge> [ddnet] does that mess up the cfg 16:30 <+bridge> [ddnet] binds for sure 16:33 <+bridge> [ddnet] I think only everything but binds 16:34 <+bridge> [ddnet] but some binds also changed, especially the `kp_` ones 16:50 <+bridge> [ddnet] wrote to Qshar, maybe he has idea what they messed in the code about displaying ammo xd 16:50 <+bridge> [ddnet] wrote to Qshar, maybe he has idea what they messed in the server code about displaying ammo xd 18:54 <+bridge> [ddnet] general only. not a proper channel but showroom if you want to add an image to it 20:45 <+bridge> [ddnet] @deen ^^ :/ 20:53 <+bridge> [ddnet] done 20:59 <+bridge> [ddnet] hm, @deen how familiar are you with nginx? am I not passing the header correctly? 22:30 <+bridge> [ddnet] what's wrong with it? 23:04 <+bridge> [ddnet] @jao how do you generate the backups of the testing channels? 23:18 <+bridge> [ddnet] @deen it won't pass the real host in X-Forwarded-Host 23:54 <+bridge> [ddnet] ```nginx 23:54 <+bridge> [ddnet] proxy_pass http://localhost:17175; 23:54 <+bridge> [ddnet] proxy_http_version 1.1; 23:54 <+bridge> [ddnet] proxy_set_header Upgrade $http_upgrade; 23:55 <+bridge> [ddnet] proxy_set_header Connection "Upgrade"; 23:55 <+bridge> [ddnet] proxy_read_timeout 86400; 23:55 <+bridge> [ddnet] proxy_set_header X-Real-IP $remote_addr; 23:55 <+bridge> [ddnet] proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 23:55 <+bridge> [ddnet] ``` 23:55 <+bridge> [ddnet] @Learath2 23:55 <+bridge> [ddnet] this is for a websocket i have