These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

EVE Technology Lab

 
  • Topic is locked indefinitely.
 

Evernus [2.2 release] - the Ultimate Market Tool

First post
Author
Pete Butcher
The Scope
Gallente Federation
#61 - 2014-08-27 20:52:25 UTC  |  Edited by: Pete Butcher
Dread Nanana wrote:
I've just looked at the source code, and let me tell you, it looks pretty good. It's mostly readable and easy to understand, which is more than I can say for some projects. If there is anything to improve,


  1. Generally, I would not indent namespace that encapsulates entire file. You end up with entire file having unnecessary margin.
  2. Missing copyright statement - there is license, but it should say "Copyright YEAR name"
  3. 3rd party stuff may belong in subdirectory. It's also missing AUTHORS file it's referring to.
  4. In my opinion, you kind of overdid the && semantics. Copy overhead of many of the structures is no significantly greater than move.
  5. overuse of auto results in many warnings - comparing signed and unsigned
  6. overuse of lambdas, especially in EvernusApplication.cpp - many of the lambdas almost look like copy/paste?
  7. No unit tests, but then this is just a hobby project.


As I said, mostly minor issues.

I've also fixed compilation with GCC for you. It's all related to lambdas (I tihnk clang is wrong to compile it in the first place) The patch is at,

http://paste.debian.net/117900/


Warning: much technobabble.

Thanks for your suggestions/observations. There's room for improvement, especially in the copyright/legal part and in time all will be straighten up. I would like to address some points:

4. I am in Scott Meyers' camp - I believe in explicitly stated intentions about move operations (clear passing of ownership) and the inherent optimizations in move semantics. I know that some types are copied really fast (and in case of trivial types - that's what move-assignment and move-construction decays to), but nevertheless, for clarity sake, all sink parameters should be passed by &&, in my opinion. Contrary to what Herb Sutter advocates (use pass-by-value for sinks), but I find his arguments not strong enough and see inconsistencies it introduces.
5. I have zero warnings both in Visual Studio and clang. Can you point me to the specific lines, so I can correct them?
6. Unfortunately, some were copy-pasted as things got rushed. But I plan on cleaning it up.

Thanks for the gcc patch. Strangely, I see that gcc seems to treat signals as a dependent names in generic lambdas, thus requires this->. Well, that's gcc and their buggy standards compliance. There's a bigger issue with it - they have (or at least had in 4.8.1) a bug in binding references using uniform initialization. It actually results from a bug in the C++11 standard - http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1288 and it causes binding to actually create a prvalue first to be bound. That's why I'm a little skeptic about gcc build - it may silently make some references actually bind to copies.

EDIT: Also please excuse some inconsistencies in parts of the code - I have to navigate around incomplete VS standard compliance and bugs in their CTP compiler.

http://evernus.com - the ultimate multiplatform EVE trade tool + nullsec Alliance Market tool

Dread Nanana
Doomheim
#62 - 2014-08-28 04:06:20 UTC
Pete Butcher wrote:
[quote=Dread Nanana]
Thanks for your suggestions/observations. There's room for improvement, especially in the copyright/legal part and in time all will be straighten up. I would like to address some points:

4. I am in Scott Meyers' camp - I believe in explicitly stated intentions about move operations (clear passing of ownership) and the inherent optimizations in move semantics. I know that some types are copied really fast (and in case of trivial types - that's what move-assignment and move-construction decays to), but nevertheless, for clarity sake, all sink parameters should be passed by &&, in my opinion. Contrary to what Herb Sutter advocates (use pass-by-value for sinks), but I find his arguments not strong enough and see inconsistencies it introduces.

5. I have zero warnings both in Visual Studio and clang. Can you point me to the specific lines, so I can correct them?
6. Unfortunately, some were copy-pasted as things got rushed. But I plan on cleaning it up.

Thanks for the gcc patch. Strangely, I see that gcc seems to treat signals as a dependent names in generic lambdas, thus requires this->. Well, that's gcc and their buggy standards compliance. There's a bigger issue with it - they have (or at least had in 4.8.1) a bug in binding references using uniform initialization. It actually results from a bug in the C++11 standard - http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1288 and it causes binding to actually create a prvalue first to be bound. That's why I'm a little skeptic about gcc build - it may silently make some references actually bind to copies.

EDIT: Also please excuse some inconsistencies in parts of the code - I have to navigate around incomplete VS standard compliance and bugs in their CTP compiler.


No issues with move operators, aside I'm in the camp of "more LOC == more chance of bugs". Worse bugs I came across tend to end up as "copy paste" or otherwise similar code doing same thing, so when changing one code you have to remember to change the other as otherwise things fall apart.

If you compile with GCC (like 4.9), you'll see a whole load of warnings about unsigned with signed comparison. All of them tend to be a result of,

for (auto i=0; i[<]vector.size(); ++I) ...

here, i becomes signed int since 0 is signed. Either s/auto/size_t/ or use 0u literal.

I know copy/paste is result of rushing, that's fine. Your code looks rather good. Even parts of Qt library tend to look worse. Big smile But if you make changes, best changes are always the ones that keep all functionality, but remove code complexity. This I tend to define as either LOC or indentations.

PS. Yes, techno-babble above. BEWARE Smile And I had to insert those ugly square brackets around less than sign above or EVE forums would barf on me for "inserting HTML" Roll
Pete Butcher
The Scope
Gallente Federation
#63 - 2014-08-28 04:21:58 UTC
Dread Nanana wrote:
Pete Butcher wrote:
[quote=Dread Nanana]
Thanks for your suggestions/observations. There's room for improvement, especially in the copyright/legal part and in time all will be straighten up. I would like to address some points:

4. I am in Scott Meyers' camp - I believe in explicitly stated intentions about move operations (clear passing of ownership) and the inherent optimizations in move semantics. I know that some types are copied really fast (and in case of trivial types - that's what move-assignment and move-construction decays to), but nevertheless, for clarity sake, all sink parameters should be passed by &&, in my opinion. Contrary to what Herb Sutter advocates (use pass-by-value for sinks), but I find his arguments not strong enough and see inconsistencies it introduces.

5. I have zero warnings both in Visual Studio and clang. Can you point me to the specific lines, so I can correct them?
6. Unfortunately, some were copy-pasted as things got rushed. But I plan on cleaning it up.

Thanks for the gcc patch. Strangely, I see that gcc seems to treat signals as a dependent names in generic lambdas, thus requires this->. Well, that's gcc and their buggy standards compliance. There's a bigger issue with it - they have (or at least had in 4.8.1) a bug in binding references using uniform initialization. It actually results from a bug in the C++11 standard - http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1288 and it causes binding to actually create a prvalue first to be bound. That's why I'm a little skeptic about gcc build - it may silently make some references actually bind to copies.

EDIT: Also please excuse some inconsistencies in parts of the code - I have to navigate around incomplete VS standard compliance and bugs in their CTP compiler.


No issues with move operators, aside I'm in the camp of "more LOC == more chance of bugs". Worse bugs I came across tend to end up as "copy paste" or otherwise similar code doing same thing, so when changing one code you have to remember to change the other as otherwise things fall apart.

If you compile with GCC (like 4.9), you'll see a whole load of warnings about unsigned with signed comparison. All of them tend to be a result of,

for (auto i=0; i[<]vector.size(); ++I) ...

here, i becomes signed int since 0 is signed. Either s/auto/size_t/ or use 0u literal.

I know copy/paste is result of rushing, that's fine. Your code looks rather good. Even parts of Qt library tend to look worse. Big smile But if you make changes, best changes are always the ones that keep all functionality, but remove code complexity. This I tend to define as either LOC or indentations.

PS. Yes, techno-babble above. BEWARE Smile And I had to insert those ugly square brackets around less than sign above or EVE forums would barf on me for "inserting HTML" Roll


So gcc is more "literal" when it comes to type deduction in these cases. Interesting. I will change it.

http://evernus.com - the ultimate multiplatform EVE trade tool + nullsec Alliance Market tool

Syd Echerie
Fort Hill Cartel
#64 - 2014-08-30 02:44:21 UTC
So, the corp orders as char orders isn't working perfectly for me, but I think that's because I already had corp orders imported, and so the 'owner' is a little borked. I'm thinking it'll be all cool if I can delete the orders -- But I'd prefer not to repaste all my APIs back in. What should I delete so Evernus doesn't have any orders listed?
Pete Butcher
The Scope
Gallente Federation
#65 - 2014-08-30 07:30:47 UTC
Syd Echerie wrote:
So, the corp orders as char orders isn't working perfectly for me, but I think that's because I already had corp orders imported, and so the 'owner' is a little borked. I'm thinking it'll be all cool if I can delete the orders -- But I'd prefer not to repaste all my APIs back in. What should I delete so Evernus doesn't have any orders listed?


Such direct deletion isn't possible from the application yet (I'm adding a ton of new actions to context menus for the next version and it should be there). If you want, you can play around with it's database. It's called main.db and it's located in the system application data folder. You can use http://sqlitestudio.pl/?act=download for that.

http://evernus.com - the ultimate multiplatform EVE trade tool + nullsec Alliance Market tool

Tee Kay Solus
Poseidon Industries And Trading
#66 - 2014-08-30 07:44:31 UTC
Any chances in the nearest future of making it available for 32Bit systems ?

"Be polite, be professional, but have a plan to kill everybody you meet."

  • Maj. Gen. James Mattis
Pete Butcher
The Scope
Gallente Federation
#67 - 2014-08-30 07:48:37 UTC
Tee Kay Solus wrote:
Any chances in the nearest future of making it available for 32Bit systems ?


Actually there was a 32 bit version, but it only ran on 64bit systems (oh, the irony!). I'm going for a second attempt for 1.11 and we'll see. It takes much longer with no direct access to a 32bit system, but it will be there hopefully next week.

http://evernus.com - the ultimate multiplatform EVE trade tool + nullsec Alliance Market tool

Tee Kay Solus
Poseidon Industries And Trading
#68 - 2014-08-30 07:50:53 UTC
That`d be fantastic! I`ll be eagerly looking forward to it.

"Be polite, be professional, but have a plan to kill everybody you meet."

  • Maj. Gen. James Mattis
Syd Echerie
Fort Hill Cartel
#69 - 2014-08-30 23:36:21 UTC
The corp-as-character orders isn't working really.

The in game export button on 'My Orders' doesn't work with Evernus' 'File Import' on the 'Character orders' tab.

Exporting from 'Corporate Orders' in-game and 'File Import' on the 'Corporation orders' in-app does get the orders into Evernus. But, it is not reading the 'Issued by'. It's treating all of the corps' orders as owned by whatever character is selected in the Evernus character drop-down menu when the 'File import' is clicked.

I've tried to work around that as best I can, the 'limit to station' checkbox on the IGB scanner does help.

However, when an order is completed, and therefore no longer being exported, I have to do multiple exports and imports in order to make Evernus stop listing the order, since the 'Owner' is dependent on the dropdown.

Pete Butcher
The Scope
Gallente Federation
#70 - 2014-08-31 07:38:11 UTC  |  Edited by: Pete Butcher
Syd Echerie wrote:
The corp-as-character orders isn't working really.

The in game export button on 'My Orders' doesn't work with Evernus' 'File Import' on the 'Character orders' tab.

Exporting from 'Corporate Orders' in-game and 'File Import' on the 'Corporation orders' in-app does get the orders into Evernus. But, it is not reading the 'Issued by'. It's treating all of the corps' orders as owned by whatever character is selected in the Evernus character drop-down menu when the 'File import' is clicked.

I've tried to work around that as best I can, the 'limit to station' checkbox on the IGB scanner does help.

However, when an order is completed, and therefore no longer being exported, I have to do multiple exports and imports in order to make Evernus stop listing the order, since the 'Owner' is dependent on the dropdown.



Ok, I did some tests and got these results:

  • Character order import from logs works without any problems.
  • Character log import doesn't import corporation orders - that is by design, so no error here.
  • Corporation log import doesn't import character orders - by design.
  • Corporation log import imports orders, but indeed the owner is replaced by current character.

The owner will be fixed in the next version. API import doesn't have this problem.

http://evernus.com - the ultimate multiplatform EVE trade tool + nullsec Alliance Market tool

Pete Butcher
The Scope
Gallente Federation
#71 - 2014-09-01 17:53:24 UTC
New version is here:

  • [new] all tables now save their hidden and moved columns
  • [new] favorite items in IGB
  • [new] overbid/undercut orders in IGB
  • [new] below min. margin orders in IGB
  • [new] copy suggested price in context menus
  • [new] contract timer warning in character tab
  • [new] corporation wallet status in statistics
  • [new] option to combine wallet journal/transactions with character’s (Price settings in Preferences)
  • [new] deleting orders from order tables
  • [new] market browser quick link in context menus
  • [new] auto-import prices when market scan completes
  • [new] possibility to open market in EVE from a context menu in Evernus
  • [fixed] incorrect corporation order owner when importing from logs
  • [fixed] ETA calculation now displays correct values
  • [fixed] character removal
  • [fixed] margin tool opening only once from IGB
  • [fixed] importing HUGE asset lists from the Web
  • [fixed] unit size number formating in market browser
  • [changed] leading and trailing whitespace is now removed from key vCode – no more manual trimming
  • [changed] not showing market orders for order history
  • [changed] batch database storing now happens in a separate thread (no more freezing)
  • [changed] new user agent when polling API

http://evernus.com - the ultimate multiplatform EVE trade tool + nullsec Alliance Market tool

Pete Butcher
The Scope
Gallente Federation
#72 - 2014-09-02 17:45:50 UTC
Hotfix 1.12 is available:

  • [new] option to display packaged ship sizes
  • [fixed] partial corporation orders in IGB
  • [fixed] sorting by ETA
  • [fixed] crash when trying to communicate with non-existent IGB connection


As Evernus has real-time bi-directional communication with IGB, anyone has any ideas for some additional features which could use that?

http://evernus.com - the ultimate multiplatform EVE trade tool + nullsec Alliance Market tool

Pete Butcher
The Scope
Gallente Federation
#73 - 2014-09-03 20:04:12 UTC
An experimental Windows 32bit version is available: http://evernus.com/download/

Was tested on Windows 7 and seems to work fine, but for the moment is considered experimental, just in case.

http://evernus.com - the ultimate multiplatform EVE trade tool + nullsec Alliance Market tool

Tee Kay Solus
Poseidon Industries And Trading
#74 - 2014-09-04 09:42:54 UTC
Have just downloaded the 32bit version and will be testing it on Vista. I`ll report any problems here should i come across them.

"Be polite, be professional, but have a plan to kill everybody you meet."

  • Maj. Gen. James Mattis
Pete Butcher
The Scope
Gallente Federation
#75 - 2014-09-04 16:14:51 UTC  |  Edited by: Pete Butcher
Anyone interested in trying out experimental Dropbox synchronization? https://bitbucket.org/krojew/evernus/downloads/evernus-setup-1.12-64bit-dropbox.exe (back up your database just in case)

Sync settings are in the preferences dialog and tools menu. Limited to 100 users during tests.

http://evernus.com - the ultimate multiplatform EVE trade tool + nullsec Alliance Market tool

Grymtrade Wulf
GoonWaffe
Goonswarm Federation
#76 - 2014-09-04 21:06:27 UTC
Feature Request:

Charater Orders API import, option to switch to file only or pick source. For some reason API clears orders, have to reimport wallet order export.

I am a card carrying copper-plated Bitch, with a capital B.  Deal with it.

Pete Butcher
The Scope
Gallente Federation
#77 - 2014-09-05 04:25:58 UTC
Grymtrade Wulf wrote:
Feature Request:

Charater Orders API import, option to switch to file only or pick source. For some reason API clears orders, have to reimport wallet order export.


That's most likely due to re-importing cached data, which updates all the delta information. I will add a default import source and an option to ignore cached data import.

http://evernus.com - the ultimate multiplatform EVE trade tool + nullsec Alliance Market tool

Grymtrade Wulf
GoonWaffe
Goonswarm Federation
#78 - 2014-09-05 06:15:17 UTC
Pete Butcher wrote:

That's most likely due to re-importing cached data, which updates all the delta information. I will add a default import source and an option to ignore cached data import.


Thank you

I am a card carrying copper-plated Bitch, with a capital B.  Deal with it.

Grymtrade Wulf
GoonWaffe
Goonswarm Federation
#79 - 2014-09-09 09:54:09 UTC  |  Edited by: Grymtrade Wulf
Request:

Ability to clear market browser history for items. I've got a couple of items that won't update price and imports from logs and cache at an incorrect value. It seems to be trying to match a price located at a different station in the same system than the one I'm doing my trading in. Price was pulled on 9/6/14 - but won't fall out. Just the ability to clear all price data to re-import would help clear these issues. Pulling price data from logs and cache from today 9/9/14 does not clear this invalid data point.

(Deleting the evernus db in appdata/local/evernus.com and re-importing everything cleared this invalid price point - but I'd sure love not to have to put all the api data in, and lose order histories etc)

Request:

Check to see if another copy of evernus is running before opening a new instance.

I am a card carrying copper-plated Bitch, with a capital B.  Deal with it.

Pete Butcher
The Scope
Gallente Federation
#80 - 2014-09-09 13:38:15 UTC
Grymtrade Wulf wrote:
Request:

Ability to clear market browser history for items. I've got a couple of items that won't update price and imports from logs and cache at an incorrect value. It seems to be trying to match a price located at a different station in the same system than the one I'm doing my trading in. Price was pulled on 9/6/14 - but won't fall out. Just the ability to clear all price data to re-import would help clear these issues. Pulling price data from logs and cache from today 9/9/14 does not clear this invalid data point.

(Deleting the evernus db in appdata/local/evernus.com and re-importing everything cleared this invalid price point - but I'd sure love not to have to put all the api data in, and lose order histories etc)

Request:

Check to see if another copy of evernus is running before opening a new instance.


Done and done. A new version will be out soon.

http://evernus.com - the ultimate multiplatform EVE trade tool + nullsec Alliance Market tool