Time |
Nick |
Message |
00:48 |
|
Amaz joined #minetest-hub |
01:08 |
garywhite |
client crashed again, different server this time |
01:13 |
|
sniper570 joined #minetest-hub |
01:17 |
|
KaadmY_ joined #minetest-hub |
01:21 |
|
lumidify_ joined #minetest-hub |
01:23 |
Sokomine |
got trouble compiling latest mt: MakeFiles/minetestserver.dir/convert_json.cpp.o: In function `fetchJsonValue(std::string const&, std::vector<std::string, std::allocator<std::string> >*)': any hints? |
01:39 |
|
bigfoot547 joined #minetest-hub |
03:20 |
|
dtscode joined #minetest-hub |
04:10 |
|
bigfoot547 joined #minetest-hub |
05:04 |
|
nerzhul joined #minetest-hub |
06:24 |
nerzhul |
haha: https://twitter.com/sehnaoui/status/871827131227136000 |
06:27 |
|
CWz joined #minetest-hub |
06:31 |
CWz |
ello everyone |
07:12 |
|
Guest92400 joined #minetest-hub |
07:43 |
|
tenplus1 joined #minetest-hub |
07:43 |
tenplus1 |
hi folks |
07:47 |
CWz |
Hey |
07:47 |
tenplus1 |
hi CWz |
07:47 |
tenplus1 |
anything new ? |
07:48 |
CWz |
nothing much |
07:48 |
tenplus1 |
same |
07:48 |
tenplus1 |
going through all of Firefox settings to disable what I dont need |
08:07 |
|
nerzhul joined #minetest-hub |
08:07 |
tenplus1 |
hi nrz |
08:16 |
|
DS-minetest joined #minetest-hub |
08:17 |
tenplus1 |
hi DS-minetest |
08:17 |
DS-minetest |
hi tenplus1 |
08:26 |
|
lisac joined #minetest-hub |
08:26 |
tenplus1 |
hi lisac |
08:26 |
Calinou |
hi :) |
08:26 |
tenplus1 |
hi Cal |
08:47 |
lisac |
Hi tenplus1 |
09:14 |
tenplus1 |
can we add this now that 0.4.16 is outta the way: https://github.com/minetest/minetest_game/pull/1543 |
09:15 |
tenplus1 |
creative.is_enabled_for(name) supplies player name but isnt currently used, so this pull gives it one by adding 'creative' priv to survival mode games |
09:31 |
DS-minetest |
tenplus1: im making now a csm for you |
09:31 |
DS-minetest |
it will say hi to everyone! |
09:32 |
tenplus1 |
eheheh, thanks ds |
09:39 |
|
IhrFussel joined #minetest-hub |
09:43 |
tenplus1 |
hi fussel |
09:44 |
IhrFussel |
Hello tenplus1 and everyone else =) |
09:44 |
tenplus1 |
o/ |
09:48 |
Shara |
Hello all |
09:48 |
DS-minetest |
hi IhrFussel and Shara |
09:48 |
tenplus1 |
hi Shara :P |
09:49 |
Shara |
Buried under last minute exam prep :P |
09:49 |
Shara |
But thought I would say hi :) |
09:49 |
tenplus1 |
good luck |
09:49 |
Shara |
Thank you :) |
09:51 |
DS-minetest |
looks like what you send with clientmod into chat you dont see by yourself |
09:56 |
IhrFussel |
paramat said the wielded item shadow glitch most likely happens cause my PC is too weak to load the mapblocks fast enough...can that really be if it STILL happens when I don't move? |
09:57 |
Shara |
Mapblocks can still be loading (to catch up) while you don't move? |
09:57 |
IhrFussel |
Even if I stand still the tool in my hand blinks black every few secs...yes Shara but wouldn't my tool just STAY black until it's done loading? |
09:57 |
Shara |
You'd think. |
09:58 |
Shara |
You said you also couldn't move? |
09:58 |
IhrFussel |
I cannot move while it happens BUT the block is fully loaded already it seems, there is no fog or void |
09:59 |
tenplus1 |
have yu changed any settings in .conf ? |
09:59 |
Shara |
Unable to move makes it sound like mapblock you are standing in right then isn't loaded.... yet other parts suggest that isn't so. So I don't know. |
10:02 |
IhrFussel |
I was able to reproduce it: 1. Fly as fast as you can with minimal view range 2. When you hit an unloaded mapblock it blinks black for a sec and IF you're unlucky it continues to blink even after everything around you has finished loading |
10:03 |
tenplus1 |
damn |
10:03 |
IhrFussel |
It STILL blinks now even though I stopped moving for a minute |
10:04 |
IhrFussel |
That CANNOT be caused by a slow PC |
10:04 |
DS-minetest |
tenplus1: the mod is mostly done but minetest.get_player_names() only gives the own name :/ |
10:05 |
tenplus1 |
so it can only send messages to the client screen/player |
10:05 |
Shara |
IhrFussel: Wish I could suggest something, but I have never had this happen and don't know what could cause it. |
10:05 |
|
calcul0n joined #minetest-hub |
10:07 |
IhrFussel |
I will upload a video for you so you can see again...you will see the map fully loaded (there is nothing but snow terrain surrounding me) and it doesn't stop blinking every few secs |
10:08 |
Shara |
IhrFussel: You'd be better off answering paramat's questions on the issue |
10:08 |
tenplus1 |
sounds lke it's inloading/reloading that area of map... have you changed any .conf settings to do that ? |
10:09 |
Shara |
He's made a guess there, based on not having all the info. That's why he's asking you questions. |
10:09 |
IhrFussel |
That's what my video is for...so he can see for himself that it happens without moving too |
10:09 |
Shara |
Okay :) |
10:15 |
IhrFussel |
tenplus1, AFAIK I didn't change any conf settings between the 0.4.15-dev where it didn't happen yet and now |
10:24 |
IhrFussel |
Wait Opera cannot play mp4 directly in the browser? I thought all modern browsers could do that o.o |
10:26 |
tenplus1 |
opera is built on chrome engine but doesnt have access to chrome codecs... but if you have gstreamer installed (linux) then add libav plugin and it should work |
10:28 |
DS-minetest |
tenplus1: https://github.com/DS-Minetest/hi |
10:29 |
IhrFussel |
I see...cause I just tried to watch my linked mp4 video in the github issue and it just downloaded it xP |
10:30 |
tenplus1 |
I removed adobe flash so everything my browser plays is html5/video |
10:32 |
IhrFussel |
MP4 is HTML5 |
10:32 |
IhrFussel |
IIRC the browser uses the builtin HTML5 player to play MP4 files |
10:32 |
tenplus1 |
or whatever the video tag points to... in which case gstreamer handles it with libav :D |
10:42 |
CWz |
JT2 is like hell, except you don't get to keep your bones due to gangs of devil players. the moral of the story is... don't count your eggs before they hatch |
10:43 |
* DS-minetest |
just played on jt2, someone didin't like the hi mod X3 |
10:44 |
tenplus1 |
ehehehehe |
10:45 |
DS-minetest |
if everyone had this mod XD |
10:48 |
tenplus1 |
I'd be outta the job :P |
10:57 |
|
Fixer joined #minetest-hub |
10:58 |
tenplus1 |
hi fixer |
10:58 |
Fixer |
hi |
10:59 |
tenplus1 |
bbl... |
10:59 |
|
tenplus1 left #minetest-hub |
11:00 |
|
DI3HARD139 joined #minetest-hub |
11:15 |
|
Stone-Talus joined #minetest-hub |
11:23 |
|
Jordach joined #minetest-hub |
11:38 |
DS-minetest |
ooh, sadly you can't set the look dir of camera with csm |
11:43 |
red-NaN |
nope |
12:36 |
|
Stone-Talus joined #minetest-hub |
12:36 |
|
NathanS21 joined #minetest-hub |
12:58 |
|
DS-minetest joined #minetest-hub |
13:00 |
|
cx384 joined #minetest-hub |
13:33 |
|
Stone-Talus joined #minetest-hub |
13:34 |
Stone-Talus |
mornin |
13:42 |
|
sniper338 joined #minetest-hub |
14:06 |
|
srifqi joined #minetest-hub |
14:16 |
Calinou |
<Calinou> try doing a "cmake ." again, "make clean" then "make" again |
14:16 |
Calinou |
reminds me of something... Minetest was the first CMake-based project I compiled :) |
14:16 |
Calinou |
I was wondering, "what's that build system thing" back then :D |
14:16 |
Calinou |
and now it's almost everywhere :P |
14:19 |
Jordach |
>cmake |
14:19 |
Jordach |
>useful |
14:19 |
Jordach |
making windows a cunt to work with since GCC |
14:20 |
Calinou |
it can make build files both for GNU make and Visual Studio, so I don't have an issue with it |
14:23 |
|
srifqi joined #minetest-hub |
14:50 |
Fixer |
HOLD ON TO IT~~ |
14:51 |
Fixer |
Jordach: compiling with msys2/mingw64 under windows, works fine (finally) |
14:51 |
Fixer |
fuck |
14:51 |
Fixer |
large freeze |
14:52 |
Fixer |
windows itself |
14:52 |
Fixer |
time to check hdd health |
14:53 |
Fixer |
seems fine |
15:04 |
nerzhul |
cmake . is a bad think |
15:04 |
nerzhul |
thing |
15:04 |
nerzhul |
mkdir build && cd build && cmake .. |
15:04 |
nerzhul |
always |
15:04 |
nerzhul |
else your tree is just bloated by cmake |
15:04 |
Calinou |
yeah, Minetest does not forbid in-tree builds |
15:04 |
Calinou |
but it's generally discouraged |
15:04 |
Calinou |
you can set CMake to forbid them |
15:04 |
nerzhul |
no |
15:04 |
Calinou |
so it errors out if someone tries to use "cmake ." |
15:04 |
Calinou |
I've seen lots of projects do that now |
15:05 |
Calinou |
(it can be a bit annoying, too) |
15:05 |
nerzhul |
it's never discouraged except if you don't know how cmake works because you don' tread the doc |
15:05 |
red-NaN |
so wait why is cmake . bad? |
15:05 |
* red-NaN |
can't be bothered to read a doc |
15:05 |
nerzhul |
just look at your tree with an IDE just after this :p |
15:05 |
Calinou |
it puts CMakeCache.txt and other CMake files in the main source repository |
15:06 |
red-NaN |
oh I have it set to only display certain file types |
15:06 |
red-NaN |
so I only see the cache file |
15:07 |
nerzhul |
yeah it's a solution, and if you have a bloated cmake file somewhere because cmake does shit (this happen sometimes) :p |
15:07 |
nerzhul |
you reclone the whole repository because you have many files everywhere ? :) |
15:08 |
red-NaN |
well it was mostly because eclipse insisted on searching through .git |
15:08 |
red-NaN |
and through binary files |
15:09 |
nerzhul |
eclipse for C++ ? you want to destroy your memory ? :p |
15:09 |
nerzhul |
use clion or qtcreator :p |
15:09 |
Calinou |
Qt Creator is likely better by now, yeah |
15:09 |
red-NaN |
hey I have to use those 8gb for something |
15:09 |
Calinou |
CLion is even better, but not free/open source |
15:09 |
red-NaN |
when it's not being eaten by chrome |
15:10 |
nerzhul |
Calinou, yes, i paid for it to develop in C++ and it's a very good invest, it supports C++17, is very fast and has excellent integration with cmake. If you are on windows it uses mingw to compile programs :p |
15:10 |
red-NaN |
huh I guess I could guve qtcreator a shot |
15:10 |
red-NaN |
give* |
15:10 |
Calinou |
nerzhul: yeah, it doesn't have MSVC integration (yet) :( |
15:10 |
red-NaN |
MSVC is a decent IDE |
15:11 |
nerzhul |
the main problem with qtcreator is the search tool, clion and eclipse are far more better when you follow variable/function |
15:11 |
red-NaN |
better then Eclispe |
15:12 |
Calinou |
Visual Studio 2017 seems to start much faster than VS 2015 |
15:12 |
Calinou |
on my desktop, it opens the window in a bit less than 3 seconds |
15:13 |
nerzhul |
yeah it's because VS 2017 has preloading in OS... |
15:13 |
Calinou |
~2.5 seconds on my laptop |
15:13 |
nerzhul |
but VS ergonomy is too windows centric |
15:13 |
Calinou |
(it's opening just the Welcome window though) |
15:13 |
nerzhul |
it's not devel friendly except if you like to write win32 shit |
15:13 |
Calinou |
(no actual project loaded) |
15:13 |
Calinou |
yeah, that's the problem |
15:13 |
Calinou |
also it's not cross-platform |
15:14 |
Calinou |
the macOS version is actually a rebranded Xamarin Studio/MonoDevelop |
15:14 |
Calinou |
and there's no Linux version :P |
15:14 |
Calinou |
(but you can target Linux with the latest MSVC, apparently) |
15:14 |
nerzhul |
no need for VS shit on linux we have clion |
15:15 |
nerzhul |
yes you can have bloated software haha |
15:22 |
|
srifqi joined #minetest-hub |
15:31 |
|
twoelk joined #minetest-hub |
15:36 |
red-NaN |
deep down we are all russian |
15:38 |
Jordach |
c h e e k i |
15:38 |
Jordach |
b r e e k i |
15:41 |
|
kilbith joined #minetest-hub |
15:42 |
|
nerzhul joined #minetest-hub |
15:52 |
|
kilbith_ joined #minetest-hub |
16:18 |
|
Krock joined #minetest-hub |
16:20 |
IhrFussel |
Maybe I have here more luck with this question "How do I disable the message length limit filter? I don't think it's good to only allow 500 chars in a PM, maybe it's good for public messages" |
16:21 |
red-NaN |
isn't there a setting? |
16:22 |
IhrFussel |
Could someone point me to that setting then? |
16:23 |
red-NaN |
the network protocol shoundn't have an issue unless you send really large string over chat |
16:23 |
red-NaN |
longer then 65535 |
16:25 |
IhrFussel |
In my case I was PMing with someone and they wanted to tell me a LOOONG story and the server didn't allow it..I don't want that so if I can really just choose between "limit ALL messages" and "limit NONE" then I rather choose "none" |
16:26 |
IhrFussel |
You probably should've excluded commands with the message limit or added the ability to whitelist commands |
16:26 |
red-NaN |
oh thats ironic |
16:27 |
red-NaN |
I think chat commands are intentionally also limited |
16:33 |
IhrFussel |
Then you didn't think enough of people who like to type long PMs...can someone tell me the name of the setting now or the name of the PR that implemented it? I searched for "message","limit","length" and can't find it |
16:34 |
red-NaN |
server.cpp:handleChat |
16:35 |
red-NaN |
so chat_message_max_size |
16:35 |
red-NaN |
set that to zero |
16:35 |
red-NaN |
then chat length wouldn't be limited |
16:36 |
red-NaN |
but you will still have flood protection |
16:36 |
red-NaN |
you can reimplement chat length limits in lua since you already have a custom message handler |
16:38 |
IhrFussel |
I think I already have that but only for public messages of course..thanks for telling me the setting name though =) |
16:44 |
IhrFussel |
Yep and it's just 4 lines if string.find(message,"/msg") == nil and string.find(message,"/om") == nil then if string.len(message) > 500 then message = string.sub(message, 1, 500).." ...." end end |
16:46 |
red-NaN |
oh btw there is an slight issue with chat commands on your server |
16:47 |
red-NaN |
I don't get a message when I try to run an non-existant command |
16:49 |
red-NaN |
maybe it was caused by that code being moved from c++ to lua? |
16:49 |
IhrFussel |
That's intended because the game shouldn't display "command not found" when in reality the bot sees the command and knows it |
16:50 |
garywhite |
can anyone give me advice on this? I've used 0.4.16 on 2 servers, & after about 30 minutes or so of continued uptime, it stops responding & Windows registers it as having crashed |
16:50 |
IhrFussel |
I could probably create a file with all existing bot commands and check against it though |
16:50 |
red-NaN |
^ |
16:50 |
red-NaN |
just make the bot dump a list of known commands to a file |
16:51 |
red-NaN |
and make lua read it |
17:03 |
|
nerzhul joined #minetest-hub |
17:12 |
IhrFussel |
red-NaN, does this look right? https://pastebin.com/NyZkFMbH |
17:15 |
red-NaN |
can your bot use json? |
17:15 |
red-NaN |
nvm |
17:15 |
red-NaN |
I was about to suggest an idea that wouldn't work |
17:17 |
IhrFussel |
My bot is pure Bash xP well except if I invoke external programs in a command of course |
17:18 |
red-NaN |
is this code at the end of your chat handler? |
17:18 |
IhrFussel |
it's inside chatcommands.lua (builtin) |
17:19 |
IhrFussel |
Yep after the code that checks if the command exists in-engine |
17:25 |
red-NaN |
https://paste.ee/p/jBc9M |
17:25 |
red-NaN |
not sure if it's correct |
17:25 |
red-NaN |
didn't run it |
17:27 |
red-NaN |
wait this should be better https://paste.ee/p/JF7HR |
17:28 |
red-NaN |
huh I think I missed an "end" |
17:29 |
red-NaN |
could you pastebin an example of "botcommands.txt" so I can check if it works? |
17:33 |
IhrFussel |
the commands in botcommands.txt are just the command names separated by spaces like "a b c d " |
17:34 |
|
DS-minetest joined #minetest-hub |
17:35 |
IhrFussel |
Well my code doesn't work it seems...I see no error message when I send /hmhmhmhmhmhm which definitely doesn't exist in botcommands.txt https://pastebin.com/18AZrqdh |
17:37 |
red-NaN |
this seems to work https://paste.ee/p/iZ6wS |
17:46 |
|
srifqi2 joined #minetest-hub |
17:47 |
IhrFussel |
red-NaN, it doesn't even run in my chatcommands.lua and I wonder why |
17:48 |
red-NaN |
huh |
17:48 |
red-NaN |
I though you where using a recent version of minetest? |
17:48 |
IhrFussel |
I will pasteb in my entire chatcommands.lua up until the "check for any commands" code end |
17:49 |
|
nchambers joined #minetest-hub |
17:49 |
|
cx384 joined #minetest-hub |
17:49 |
IhrFussel |
red-NaN, https://pastebin.com/cxGVAD81 |
17:50 |
red-NaN |
wow the start of that file is a compleing reason to add command alais to core |
17:51 |
|
nchambers joined #minetest-hub |
17:51 |
IhrFussel |
I think command aliases do exist but I never used them |
17:51 |
red-NaN |
they do? |
17:51 |
red-NaN |
huh I should know |
17:52 |
IhrFussel |
I think so...anyway Lua doesn't even seem to run the "if not cmd_def" part |
17:54 |
red-NaN |
ah your code is outdated in general |
17:56 |
IhrFussel |
Yes it's not the current chatcommands.lua because I will not start from scratch modifying all the commands |
17:57 |
red-NaN |
the only modification is that gaint list of alais right? |
17:58 |
IhrFussel |
Nope I also modified some more commands further down |
17:58 |
red-NaN |
I meant in this function sorry not the whole file |
17:59 |
IhrFussel |
For example the whole "give" handler so that it tells in chat who gave who what item ... of yes the only modification is the list of aliases and I removed return false where the engine command doesn't exist cause I don't like the default "command not found" message |
18:01 |
IhrFussel |
red-NaN, I just noticed: The bot commands don't work AT ALL now |
18:03 |
red-NaN |
yeah sorry I put the code for messaging the bot in the wrong place |
18:03 |
red-NaN |
https://paste.ee/p/piQ7F |
18:03 |
DS-minetest |
if i only change one file of the source code, do i have to compile all again or only this file? |
18:04 |
red-NaN |
DS-minetest, is it a header file? |
18:04 |
DS-minetest |
you mean *.h? no, it's a *.cpp |
18:04 |
red-NaN |
if it's a header you have to compile every single file that includes it directly or indirectly again |
18:04 |
red-NaN |
no just the single file then |
18:04 |
DS-minetest |
ok |
18:04 |
red-NaN |
and maybe version.cpp |
18:05 |
DS-minetest |
thanks |
18:06 |
red-NaN |
IhrFussel, is the code the messsages the Server-bot in a seperate chat callback? |
18:07 |
red-NaN |
huh if that callback is working correctly and returns true once it's finished |
18:08 |
red-NaN |
then you can change the "return true" after "-- Code for telling your bot about the message goes here" to a "return false" |
18:10 |
IhrFussel |
red-NaN, I added more log messages now to understand what doesn't execute "2017-06-07 20:09:31: ACTION[Server]: engine command not found, trying bot command. 2017-06-07 20:09:31: ACTION[Server]: command file found." so it does find the command file and STILL somehow seems to think command hmhmhmhmhmhmhmhmhmhm exists in it |
18:11 |
|
Raven262 joined #minetest-hub |
18:12 |
|
Fixer joined #minetest-hub |
18:12 |
red-NaN |
IhrFussel, the code I pasted works as far as I can see |
18:13 |
red-NaN |
you just need to replace the placeholder code for interacting with the bot |
18:17 |
DS-minetest |
red-NaN: i'm trying to edit s_client.cpp (5917) the compiler gives an error at s_client.h because the include seems to search only in the current path but it shall search from minetest/src => it does't find it. what am i doing wrong? |
18:19 |
red-NaN |
pastebin the error |
18:20 |
IhrFussel |
It works now! I thought you could use "return true,error" inside register_on_chat_message but it turns out you only can do that inside command definitions |
18:21 |
DS-minetest |
s_client.h:24:31: fatal error: util/pointedthing.h: Datei oder Verzeichnis nicht gefunden |
18:21 |
DS-minetest |
Datei oder Verzeichnis nicht gefunden = file or folder not found |
18:21 |
red-NaN |
oh neat |
18:22 |
|
nchambers joined #minetest-hub |
18:22 |
red-NaN |
IhrFussel, could you just alias last-login to ll? |
18:23 |
|
nchambers joined #minetest-hub |
18:24 |
red-NaN |
lol saying just / does some where things on your server |
18:25 |
red-NaN |
you still need to add empty command handling |
18:26 |
IhrFussel |
red-NaN, / is to test if the connection to server is OK |
18:27 |
red-NaN |
huh |
18:27 |
IhrFussel |
Of course it would also not respond if the server experiences a major lag, but that should happen pretty rarely |
18:43 |
* DS-minetest |
seems to be to stupid to compile >_< |
18:44 |
|
RobbieF left #minetest-hub |
19:13 |
|
RobbieF joined #minetest-hub |
19:14 |
|
RobbieF left #minetest-hub |
19:44 |
|
lisac joined #minetest-hub |
20:03 |
|
ssieb joined #minetest-hub |
20:08 |
Fixer |
ConstructorInitializerAllOnOneLineOrOnePerLine |
20:08 |
Fixer |
O_O |
20:12 |
nerzhul |
? |
20:18 |
cheapie |
SpaceBarBroken? |
20:26 |
red-NaN |
!seen DS-Minetest |
20:26 |
ShadowBot |
red-NaN: I haven't seen DS-Minetest in #minetest-hub. |
20:26 |
red-NaN |
!seen DS-minetest |
20:26 |
ShadowBot |
red-NaN: I saw DS-minetest in #minetest-hub 1 hour, 43 minutes, and 11 seconds ago saying * DS-minetest seems to be to stupid to compile >_< |
20:33 |
Fixer |
reading about epic russian internet blocking failure, so epic |
20:36 |
Fixer |
owners of banned sites can change registration data (ns records or smth) to block other sites |
20:37 |
Fixer |
and since a lot of it is blocked automatically, that causes lots of outages for legitimate services |
20:37 |
Fixer |
so they invented white lists that are not permitted to be blocked |
20:54 |
red-NaN |
and people abused the whitelists? |
21:00 |
|
Megaf joined #minetest-hub |
21:01 |
Fixer |
red-NaN: no, they need whitelists to fix this bug in blacklists %) |
21:02 |
Fixer |
red-NaN: banned site owner can himself ban any site for entire ISPs or whole country |
21:02 |
Fixer |
red-NaN: by changing his IP %) |
21:02 |
Fixer |
red-NaN: they whitelisted jquery, Carl |
21:02 |
Fixer |
red-NaN: *.google.* |
21:16 |
|
Raven262 joined #minetest-hub |
21:19 |
|
Dargod joined #minetest-hub |
21:20 |
|
Jordach joined #minetest-hub |
21:30 |
|
calcul0n joined #minetest-hub |
22:50 |
Fixer |
just one more year and then you will be happy ^^vv |
23:34 |
|
IhrFussel joined #minetest-hub |
23:34 |
IhrFussel |
I just recorded a 3rd video showcasing the shadow glitch...this time you can see that it really STOPS glitching as soon as I walk against a wall |
23:35 |
IhrFussel |
And it continues to glitch when I walk away from that wall again |
23:42 |
IhrFussel |
http://ihrfussels-server.tk/mt3.mp4 there for anyone who doesn't believe it |
23:58 |
|
twoelk|2 joined #minetest-hub |