-
monerodev880022[
The issue ending up being the sweep_all method seemed to timeout and the database could not be updated after that. I fixed a few things and all is good now. Thanks for the help
-
monerodev880022[
the site is live now and ready to use
xmrmemes.com
-
UkoeHB
monerodev880022[: that's a pretty neat concept
-
monerodev880022[
UkoeHB: thanks
-
monerodev880022[
The idea / concept was done by the Wownero community first but I thought Monero needed something similar so I set out to build this a few weeks ago.
-
selsta
make sure to post on reddit
-
monerodev880022[
selsta: Yep I did a little ago. Also posted on /r/moonero
-
monerodev880022[
-
RustyLumberjack[
the one thing wownero did right
-
RustyLumberjack[
monerodev880022: ive got an idea for you
-
RustyLumberjack[
allow webm or gif
-
monerodev880022[
RustyLumberjack[: Did you have trouble submitting a gif?
-
monerodev880022[
GIFs should work unless there is a bug or something
-
monerodev880022[
I will look into adding support for webm though, not sure if that works.
-
RustyLumberjack[
that'd be cool. could make/submit custom monero webms
-
monerodev880022[
Kk will look into adding it tomorrow
-
monerodev880022[
Think currently it is (JPEG, JPG, PNG, GIF)
-
monerodev880022[
Thanks for the advice
-
RustyLumberjack[
boots up kden live
-
RustyLumberjack[
monerodev880022: my submission on your site swapped my wallet addy with someone elses
-
selsta
btw discussion about this site would be best for #monero
-
monerodev880022[
RustyLumberjack[: Each meme gets a new address to keep track of the stats. It will send the XMR to the address you signed up with. I will add a note on the website about this.
-
monerodev880022[
selsta: kk
-
RustyLumberjack[
thanks and srry selsta
-
RustyLumberjack[
also... php - havent seen something so recent made with it 🙂
-
UkoeHB
C++ question: I have a 'module'-like set of functions. Some are 'interface' (intended to be called from outside), some are 'internal' (only supposed to be called within the module). Since Monero is in C++11 (no 'module' language feature until C++20). To mimic the module 'export' behavior, I am thinking about making a monostate class whose members are all static functions. This way 'internal' functions can be private, and
-
UkoeHB
'interface' can be public. Is this idea basically flawed, is there a better approach (e.g. two headers - although in that case someone can still include the 'internal' header from outside), what are people's thoughts?
-
mj-xmr[m]
<UkoeHB> "'interface' can be public. Is..." <- No problem with being able to include internal headers, I believe. If they are supposed to be tested, they have to be able to be included. You can limit their visibility by NOT distributing them along with your SDK.
-
mj-xmr[m]
Some people (me included) will also say, that private methods are an untestable evil.
-
mj-xmr[m]
It's better to extract them into a separate class.
-
mj-xmr[m]
You can also separate the private methods in the way, that a public static method returns an object, which is testable, while the sole responsibility of the corresponding private method would be calling the public one, and using the returned object to set a state of an internal member.
-
mj-xmr[m]
Lately, there has to be a clear separation about what an interface is, and what it is not.
-
mj-xmr[m]
An interface is a class, that consists of pure virtual methods and has no member variables.
-
mj-xmr[m]
Look at wallet2.h for a perfect counter example.
-
mj-xmr[m]
Here is how I'm solving the issue.
-
mj-xmr[m]
-
mj-xmr[m]
So having absolutely NO member variables, proactively forces you to create an interface, which is monostate.
-
mj-xmr[m]
Which is a very good thing.
-
mj-xmr[m]
Since then you can pass it along as a const reference, which in the end allows you for a very predictable behavior.
-
mj-xmr[m]
For some reference: Java first introduced the concept of pure abstract classes, called Interfaces, but at the same time while C++ allows it, but most people don't know how to use interfaces, only C++ has a full blown const-correctness mechanism (that most people don't use either)
-
mj-xmr[m]
It's also worth mentioning, that a pure abstract interface in C++ allows you to forward declare ALL of the dependencies. This is useful, because not all the users will be calling all the methods, thus they will not need all of the dependencies being included.
-
mj-xmr[m]
And a word from our sponsor: I'm looking for reviewers on 7679 :)
-
UkoeHB
Hmm I see, thank you! Since I don't need any member variables, simply using two headers where only one is made public in cmakelists seems like a good idea.
-
UkoeHB
That being said, I still don't know much about cmake lol
-
mj-xmr[m]
<UkoeHB> "That being said, I still don't..." <- I'm not sure we use this technique here, but it's the installation step of CMake, where you deliver the shared libraries and their interfaces. This is a perfect excuse to have the "private" functionality embedded in the libraries, but skip a few headers :)
-
UkoeHB
mj-xmr[m]: If the headers are internal to a component, how do you go about unit testing? Is it a better pattern for unit tests to be defined within the subdirectory?
-
mj-xmr[m]
<UkoeHB> "mj-xmr: If the headers are..." <- Yes, exactly. This way, you know, that your internal code works before even "advertising" it outside. Secondly, you don't need to compile and run "Everything.h" just to get the *unit* tested.
-
mj-xmr[m]
For the same reason, I was even arguing with my "colleagues", that such an internal code in form of templates should be at least included by a corresponding .cpp file within the library, before it even reached the library's own unit tests. The reason is, if the template's declaration is wrong, the tests wouldn't compile either.
-
mj-xmr[m]
So better learn this soon enough. A higher form of purism, but a consequential approach.
-
mj-xmr[m]
They were arguing that such an empty inclusion was "dead code". One of reasons to leave that project :)
-
UkoeHB
> at least included by a corresponding .cpp file within the library, before it even reached the library's own unit tests. The reason is, if the template's declaration is wrong, the tests wouldn't compile eithe
-
UkoeHB
I think I see what you mean. First say the library compiles, then say the library's unit tests compile, then say the tests succeed. Then this hierarchy can be extended to users of the library, and so on.
-
mj-xmr[m]
Exactly.
-
UkoeHB
Although rather than 'include template headers in random cpp file's, which does feel like dead code (haphazard), I wonder if you could have a dedicated 'interface compile test' cpp file to include them in. At least this way encapsulates the purpose and behavior.
-
mj-xmr[m]
Yes, but who will remember to check if each template is included in such a file? With one header = one cpp file you at least have the problem solved by protocol. Secondly, it's not improper to separate from the templated code the code that can be static, and just called from the template code. This is the code that hasn't got anything to do with the "T" type. The static code will go to the .cpp file in the end anyway.
-
mj-xmr[m]
Human psychology works so, that if the "dead code" .cpp file doesn't exist, they will NEVER start extracting the static parts, because they're lazy or afraid of CMake :)
-
UkoeHB
Ah I see
-
mj-xmr[m]
<UkoeHB> "I think I see what you mean..." <- There is however a possible loophole with the "first local tests compile", as they may be incomplete by: allow for too high degree of freedom, or even the other way around. In the second case you might be limiting a functionality that was expected outside to be there, while still having your UT succeeding.
-
mj-xmr[m]
This somehow touches the myth of having perfect UTs. You can maybe expect this perfection from a compiler, but not from UTs.
-
mj-xmr[m]
The myth is correlated with managers bragging about having 99% code coverage... which is only a HINT, that something is correct, but not proof. They like to dumb things down to their level :)
-
UkoeHB
Thank you for the insights :). Fundamentals really are important wherever you go.
-
jberman[m]
7821 is ready for re-review :)
-
jberman[m]
Will also write a new separate PR for 7798 for next release (one that solves divide by 0 but leaves integer truncation in the code)
-
UkoeHB
Is this commit something that could be merged, or is it DOA (i.e. should I roll it back and move on)?
UkoeHB/monero 7596e01
-
-
luigi1111w
thanks for the update jberman[m]
-
luigi1111w
condolences as well
-
jberman[m]
thank you :)
-
Rucknium[m]
Thank you, jberman. Condolences, again. I will examine 7821 very carefully. It may take 24-48 hours, since it's not the only thing I have going on right now.
-
Rucknium[m]
By the way, I see you mentioned me in the comment. Feel free to directly tag me. I am
github.com/Rucknium
-
Rucknium[m]
We eventually need a statistical testing suite for Monero.
-
gingeropolous
^^^^
-
mj-xmr[m]
<Rucknium[m]> "We eventually need a statistical" <- There are a lot of feature-rich Python libraries for statistical tests and stuff.
-
Rucknium[m]
R's central repository alone (CRAN) has 17,987 packages that, in turn, contain untold numbers of functions. Over 200 of those packages deal with mixture distributions, which is the exact statistical area that mixin selection deals with.
-
Rucknium[m]
It's not really about whether the function exist. It's applying them in a way that tests the vulnerability of Monero to statistical attack.
-
Rucknium[m]
With a bit of work, R could probably link directly to the C++ code that Monero runs on, since R has the Rcpp bridge.
-
sgp_[m]
vtnerd: what's the status of eventually merging this upstream?
github.com/vtnerd/monero-lws
-
vtnerd
yeah thats a good question, it would have to be reviewed somehow, at least to ensure that there were no obvious privacy leak backdoors, etc
-
vtnerd
presumably people would trust it more if it were in /monero-project instead?
-
vtnerd
UkoeHB : put the functions in an anonymous namespace OR declare static in namespace scope (not function scope)
-
vtnerd
in both cases the comp
-
vtnerd
the compiler will put those functions in internal linkage only, and the symbols are not exported
-
vtnerd
Im not a fan of virtual everything interfaces in most circumstances because it adds unnecessary overhead, and if designed properly each header file has small amount of data members
-
sethsimmons
<sgp_[m]> "vtnerd: what's the status of eve" <- Would love to see this more commonly supported and usable
-
sethsimmons
It's a key UX improvement for anyone running their own node and has practically no drawbacks if using with own node.
-
vtnerd
wallet2 become a do everything class, and the interface added in mj-xmr PR might make that worse (because its not broken into subcomponents)
-
vtnerd
eve?
-
UkoeHB
> put the functions in an anonymous namespace OR declare static in namespace scope (not function scope)
-
UkoeHB
The part that annoys me (maybe naively/ignorantly) is then you have to forward declare stuff within the cpp file if function order is not sufficient.
-
vtnerd
I rarely run into that issue, but I don't know whats being implemented for this
-
vtnerd
sometimes I might have multiple anonymous namespaces, such as `namespace foo { namespace { ... } ... namespace { ... } }`
-
vtnerd
which might be the kind of thing that annoys you about it
-
vtnerd
doing the static/anonymous trick is preferable when writing a shared_object since it keeps the symbols down
-
vtnerd
theres enough maintenance work already for monero to even worry about it yet though (although I still do it where possible)
-
vtnerd
oh sethsmissons : I see matrix or something cutoff the remainder of the sentence
-
sethsimmons
Hmm
-
sethsimmons
Just saying it's a huge step forward if easy to run
-
crypto_grampy[m]
vtnerd: are there any front ends/wallets that can be configured to work with monero-lws currently?
-
crypto_grampy[m]
* vtnerd: are there any front ends/wallets that can be configured to work with monero-lws currently? Even something roughly works
-
vtnerd
mymonero should be usable but requires a valid ssl cert, and the error reporting is currently suspect (it seems to just fallback to mymonero.com when custom domain fails)
-
vtnerd
the other option is to taking the html from openmonero
-
vtnerd
the third is using the wallet-cli in light wallet mode
-
vtnerd
Im not sure if the gui wallet provides an option for that, I should look
-
vtnerd
Im tempted to create an ncurses (with mouse support) wallet specifically for this purose, and start with a view-only mode to test the concept
-
vtnerd
I think there is a small niche there, it would be more usable than the existing cli (but less features), and would have minimal dependencies ideally (ncurses instead of qt stack like other more usable wallets)
-
gingeropolous
yeah. fancy ascii programs are cool. would be neat if could somehow make it work on android in a noob-friendly way
-
gingeropolous
do they make ncurses with touchscreen support? :P
-
sgp_[m]
I think the niche is smaller than you think.... anyone with their own node should use is
-
sgp_[m]
s/is/it
-
sgp_[m]
lol, also s/smaller/larger
-
sethsimmons
lol just try again XD
-
sgp_[m]
larger niche
-
sethsimmons
Yeah, basically anyone using a home node would benefit from this if most wallets supported it
-
sethsimmons
Mobile wallets most of all
-
sgp_[m]
exactly, I already have a device sitting here synching the chain. it might as well take some overhead from my phone
-
gingeropolous
i bet cakewallet & monerojuice would make stuff happen if this was getting baked in
-
sethsimmons
I would gladly donate and drive attention if someone could dedicate time to this.
-
vtnerd
most touchscreens should appear as mouse events
-
vtnerd
the trick is handling keyboard input with touchscreens, I have some vague ideas on how to handle that
-
vtnerd
one thing I would like to try is getting it working on a remarkable2 device or similar
-
vtnerd
since the viewkey scanning is off-device, the low-end cpu/ram shouldn't matter as much
-
plowsof[m]
Imagine an rpc wallet running on your 24/7 node - would it be possible to simply open your mobile wallet and download the local wallet file.. hey presto your mobile wallet is pretty much synched 'instantly'?
-
selsta
yes
-
plowsof[m]
Probably with some kind of rsync app running on the mobile device.. Just a thought
-
plowsof[m]
Could even download small xdiff files and patch your current wallet file on the mobile device (incase the file is huge)
-
endogenic
plowsof[m]: what would be the benefit of that vs a wallet scanning server (aka lws)?
-
plowsof[m]
I see... lws is achieving the same effect, so no benefit at all - other than attempting to be a simple solution for smooth brains like myself ^^
-
Guest57
I've asked on the other channel but i seems to be less populated, so here it goes: I've built xmr-stak from source but when i run it, I don't see monero as available coin. What's wrong? I'm new to crypto.
-
selsta
Ask in #monero-pools, also use xmrig as it supports monero