Start implementing --head and --tail flags for sort.

See:
https://github.com/briandfoy/PerlPowerTools/pull/65
similar to "sort | head -10" or "sort | tail -10" but should
be more efficient (using a priority queue / heap).
Note that this is highly experimental, but comments are welcome.

I hereby disclaim any implicit or explicit ownership of my changes in this
changeset, and put them under a multiple licence consisting of your choice of
one of more of:

The CC0 / Public Domain - https://creativecommons.org/choose/zero/ .

The MIT / Expat license - https://en.wikipedia.org/wiki/MIT_License

The default licence of your project

The https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License - version
2.1 or higher

The https://en.wikipedia.org/wiki/GNU_General_Public_License - version 2 or
higher

Any licence in the 2018-Aug-27 popular licenses list of
https://opensource.org/licenses

The https://en.wikipedia.org/wiki/Apache_License version 2.0 or later

The https://en.wikipedia.org/wiki/Artistic_License version 2.0 or later

The https://en.wikipedia.org/wiki/ISC_license

The https://opensource.org/licenses/BSD-2-Clause

Crediting me will be nice, but not mandatory, and you can change the licence
of the project without needing my permission.

Latest benchmarks on the 0fc branch:
+ set -e -x
+ inputfn=0fc-log.txt
+ sh=shuffled.txt
+ test -f shuffled.txt
+ cargo_dir=/home/shlomif/.cargo/bin
+ cargo_sort=/home/shlomif/.cargo/bin/moved-bin/sort
+ cargo_uu=/home/shlomif/.cargo/bin/uutils
+ test -e /home/shlomif/.cargo/bin/moved-bin/sort
+ _t /home/shlomif/.cargo/bin/moved-bin/sort -n --head 100
+ eval time /home/shlomif/.cargo/bin/moved-bin/sort -n --head 100
++ /home/shlomif/.cargo/bin/moved-bin/sort -n --head 100

real	0m23.422s
user	0m23.366s
sys	0m0.035s
+ _t sort -n '|' head -100
+ eval time sort -n '|' head -100
++ sort -n
++ head -100

real	0m9.407s
user	1m11.094s
sys	0m0.399s
+ _t /home/shlomif/.cargo/bin/moved-bin/sort -n --tail 100
+ eval time /home/shlomif/.cargo/bin/moved-bin/sort -n --tail 100
++ /home/shlomif/.cargo/bin/moved-bin/sort -n --tail 100

real	0m28.650s
user	0m28.598s
sys	0m0.026s
+ _t sort -n '|' tail -100
+ eval time sort -n '|' tail -100
++ sort -n
++ tail -100

real	0m15.943s
user	1m25.300s
sys	0m0.938s

Hi! Does anyone have any comments about the features proposed in this PR? Would you be happy to merge a revised version (which remedies the file conflicts)? Ping!

I will have a look. Could you please rebase your patch ?

I will have a look. Could you please rebase your patch ?

Thanks!
I have rebased the branch. Should I also squash the commits? Sorry for the delayed reply.

@sylvestre [and all]: ping!

Sorry, I didn't see the update!
Please reformat the patches (rustfmt) and fix the clippy warnings :)

@sylvestre : hi! Hopefully it is OK now. I am using rustfmt and cargo-clippy from the fedora 32 x86-64 repositories.

Thanks, sorry again for the latency :)

Seems that your patch needs rebasing. I see all the recent history of coreutils in this PR :)

@sylvestre : hi! I rebased with squashing commits and did a git push --force

@sylvestre : thanks for your commentary on my changes! I'll try to amend the PR soon.

Thanks, @sylvestre ! I incorporated most of your suggestions. Please review at your leisure.

Hi @sylvestre !
Sorry for the late reply.

Actually, I thought you were implementing something already support by the GNU coreutils but this isn't the case:
$ sort --head 5 build.rs
sort: unrecognized option '--head'

and
$ sort --tail 5 build.rs
sort: unrecognized option '--tail'

I am really sorry, I should have noticed that earlier.
This isn't the goal of this project. Currently, this project is to mirror was is done with the GNU coreutils, not add new options :(
Again, sorry for not noticing this earlier :(

To be frank, I am a little disappointed, but not too much so. My primary motivation with this changeset was to be a prototype or stepping stone for implementing it in GNU sort (after the initial patch for PerlPowerTools sort) and also to learn rust-lang better. I understand that rejecting changes that are considered out-of-scope of the project is natural (see "Never Try to Please Everyone" ) and accept that. Thanks for the review and comments, and sorry if I too wasted your time.

Sure, sorry again :(
There are plenty of options in rust/coreutils which aren't implemented yet.


⚠ Bofrost.lu has degraded performance

In 5055bec, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1212 ms

Resolved: Bofrost.lu performance has improved in 7746671 after 25 minutes.


[Bug]: First search returns no results, always have to search twice

What happened?
Whenever I use the Discover Packages search, it always comes back with no results, initially. I have to hit the search button again for it to show anything.
Version
3.1.1
What distribution are you seeing the problem on?
Windows 11
Relevant output
n/a

I guess you wanted to report this in the unigetui project: https://github.com/marticliment/UniGetUI

I guess you wanted to report this in the unigetui project: https://github.com/marticliment/UniGetUI

lol, omg, yes. Sorry about that. That's what I get for having a million tabs open!


Fix segfault that happens after server is stopped

Reproduction script:
(This is the same code present in examples/benchmark.rb. Refer to the last benchmark script)
 server = Rbkit.start_profiling(pub_port: 9999, request_port: 9998)
 server.stop

 # Running code after disabling rbkit
 do_stuff

Before this change, that script will abort. One of the issues is a mistake in
naming of the GC stat stop flag in rbkit/server.rb.  There are two different
flags being used in that file: profiler_stop_thread and
stop_profiler_thread. profiler_stop_thread is now removed and
stop_profiler_thread is used everywhere instead.
Just to ensure that the message packing of GC stats doesn't happen if the server is not started, the send_hash_as_event method is short-circuited early.

@kgrz can you check these notes?


Use "This game will unlock in approximately" to determine correct release time

Due to "approximately", this approach won't work.


feat(katana-provider): implement a DB provider

This PR adds another storage provider implementation based on MDBX.
Checklist

[ ] implements all provider traits
[x] historical states access
[x] add tests for this provider impl

Codecov Report
Attention: 460 lines in your changes are missing coverage. Please review.

Comparison is base (1840d72) 60.31% compared to head (c133a34) 60.85%.

:exclamation: Current head c133a34 differs from pull request most recent head 87b7dc0. Consider uploading reports for the commit 87b7dc0 to get more accurate results

Files
Patch %
Lines

crates/katana/storage/db/src/models/class.rs
17.56%
230 Missing :warning:

...es/katana/storage/provider/src/providers/db/mod.rs
70.30%
155 Missing :warning:

.../katana/storage/provider/src/providers/db/state.rs
65.62%
66 Missing :warning:

crates/katana/storage/db/src/codecs/postcard.rs
0.00%
3 Missing :warning:

.../katana/storage/provider/src/traits/transaction.rs
0.00%
3 Missing :warning:

crates/katana/storage/db/src/models/contract.rs
91.30%
2 Missing :warning:

crates/katana/storage/db/src/models/storage.rs
98.14%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1299      +/-   ##
==========================================
+ Coverage   60.31%   60.85%   +0.53%
==========================================
  Files         225      228       +3
  Lines       18953    19753     +800
==========================================
+ Hits        11431    12020     +589
- Misses       7522     7733     +211

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


FIP-14: Ensuring API response data integrity comments

Please comment on FIP-14 here.

One fundamental drawback of proposed solution is that it doesn't offer a client to determine the authenticity of API results automonously. It needs to go through a complex set of requests to verify the data, which affects the scalability of the service.
Ideally, the smart contract data would already contain signatures (like in PGP) that allow the client to verify the integrity and authenticity. But that requires a full re-do of the whole protocol.
So, my proposal is to build a system of add-on information that lets the client verify the API output in minimal time, and using only a single API endpoint. The method should also not change if a third-party operator sets up their own nodes for their users.
The primary purpose of the FIO API is to provide a mapping between a user@domain account and cryptocurrency addresses, such as BTC or ETH. thus, the solution should protect this information from man-in-the-middle attacks and rogue API service.
In this proposal, a certificate is a data element similar to X.509 certificates: the original data, such as a public key, is signed by a higher authority's key. certificates have expiration dates. Unlike X.509, they may include multiple signatures by higher authorities.
The design defines 3 levels of certificates:

Root level: a certificate containing BP keys, cross-signed by at least 15 active producers. These certificates form a file-based chain, so that every change in the list refers to the previous version and gets at least 15 signatures from the previous list. So, the wallet software needs to have only the first certificate hardcoded or pre-distributed, and all updates can be downloaded from a public carrier, such as FIO chain itself. As new producers are moving into top 21, their keys are added to the new version of the certificate. The keys of producers which are pushed down the list are still preserved in the list for validating the signatures from the past. The list of keys contains also a revocation list: those keys which were compromised and all their signatures must be rejected.

Account level certitifates: they are issued by active BP, and the authority is verified through the root certificate. The account certificate states the FIO public key and FIO account name@domain. Only one signature of an active BP is sufficient. If other players detect invalid data being signed, the BP key gets into the revocation lust, and all its signed data is invaluidated.

Cryptocurrency address level: the user signs their own addresses with their key.

These certiticates are stored in FIO chain memory. it is important too note that they can also be stored elsewhere, and the blockchain is simply a convenient way to deliver the data.
So, the API would implement new requests that deliver certificate chains accordingly, so that the wallet software can validate the output. The certificates woudl be cached on the client side, so the APi traffic overhead is quite moderate.
The client software is supposed to have the initial root certificate, pre-installed in a trusted way.
The following API requests would be needed:

get_root_certs. Input argument is the serial number of the root certificate that the client has. the API returns a number of root certificates in their sequential order, so that the client can request more if the chain is too big. The client caches the results in non-volatile memory.

get_account_cert. Input argument is user@domain or the EOSIO account name, and the output is a copy of the account certificate. the client normally stores for long term, probably maintaining an eviction list to clean up its storage.

get_addres_certs. The input argument is user@domain and a list of cryptocurrency addresses needing verification. The result is a set of cryptocurrency level certificates that can be stored in the client.

Once a client receives an invalid certificate or invalid data that is not confirmed by a certificate, it can report the potential fraud on-chain, supplying all the details of the API call and returned results. This will allow the BP to set up a monitoring infrastructure that will react immediately on such alerts.

My concern with this approach is that if a single BP is successfully attacked, the attacker can issue a valid account-level certificate and then modify responses from its API and all that while producing valid blocks. It may be a while before someone notices the attack, reports it and BPs revoke the certificate of that BP. Because of that the reader can never be certain the response is valid.

it needs thinking, but one of possible ways is multiple signatures on account-level certicates. For example, 3 random different producers need to sign them before they become valid. Also the certificates can have a sequence number and a hash of previous certificate, and the contract would control that the next certificate is signed by a 3 different producers than the last one.

I'd also like us to consider existing solution providers that may be handling similar challenges such as https://www.pokt.network/ or https://liquidapps.io/ (in how they validate vRAM data)

greetings team -- im getting oriented on FIP-14 and will try to make some documentation that will help to facilitate further discussion and evaluation of these options....

thanks for the summary @cc32d9 its appreciated..great detail you have provided..

This discussion is being moved to: https://fioprotocol.atlassian.net/browse/WP-103


Message compression

Optimization: message compression.  Can we do this in a streaming fashion?  E.g., dictionary-style encoding (like in LZSS) that can use keywords from prior messages would make verbose CRDT names/paths, and long replica IDs in vector clocks, both non-issues.

Heather's advice is that even simple GZIP message compression would be too CPU expensive.  We should focus on making the messages smaller directly instead.
For streaming compression: this requires creating per-replica tombstones that last the lifetime of the application, which could eventually use up a lot of memory.  We could perhaps work around this by storing them on disk, but I don't currently think it is worth it.


Snapshot table should only define one primary key

Fixes #71.

This PR breaks the UPSERT functionality of slick, please check.
See my anwer on issue #71
Hi, this is true, but for the fact that this workaround is necessary to get the UPSERT functionality working with Slick see Slick Issue #966 - Scala's Slick with multiple PK insertOrUpdate() throws exception ERROR: syntax error at end of input, as it stands, we must wait for slick 3.2.0

No worries, we can close it for now if you want.

Agreed.

Hi @dnvriend - now that the plugin makes use of slick 3.2.0, could this PR be looked at again?

Put on the backlog

@jroper this PR is probably ok now because the master branch is using Slick 3.2.1.
GitHub is showing conflict, but I could merge locally without problem. And all tests passed.
Could you have a quick look into it?

Rebased.


Airlock deconstruction doesn't show the proper steps

How to reproduce:

Right click on an airlock and begin deconstruction.
The examine instructions will correctly tell you to weld the airlock and open the panel.
On the next step, the examine verb won't tell you what to do (cut the power and use a crowbar)
All other steps (including deconstructing the airlock assembly) work fine.

It tells you the steps now


Make KML format ignore image styles that aren't icons

As reported in https://github.com/openlayers/ol3/issues/3882, the KML format currently fails when attempting to serialize point features represented using image styles that are not icon styles.
This PR is an alternative to #3955. #3955 still creates an <IconStyle> when the point feature is represented as an image style that is not an icon.
I am more strict in this PR, not creating any <IconStyle> at all when the point feature is not represented with an icon style.
Fixes #3882.

LGTM

Thanks a lot for the review @fredj.


Game beta

THIS IS A BETA MODEL AND HISTORY AND THE FINAL PROJECT

Input and physics work and successful MVP push to main can made!
Time to make the square shoot something!

Approved lol


⚠ Bofrost.at has degraded performance

In 83ae842, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1262 ms

Resolved: Bofrost.at performance has improved in bd25f87 after 6 minutes.


My data added

hey priyansh ,i'am  getting your merge request as excluded.
I think there might be issue in repo please review it.

hey priyansh ,i'am getting your merge request as excluded. I think there might be issue in repo please review it.

I don't think there is any issue from my side

hey priyansh ,i'am getting your merge request as excluded. I think there might be issue in repo please review it.

I don't think there is any issue from my side

saying this

I have no idea about this


Chapter 14

To load dataset using this statement
celeba_train_dataset = torchvision.datasets.CelebA(
image_path, split='train',
target_type='attr', download=True
)
dataset can not load why?

https://drive.google.com/file/d/1m8-EBPgi5MRubrm6iQjafK2QMHDBMSfJ/view
Use this link.

Sorry for the hassle here. It's a bit frustrating that it doesn't work out of the box via torchvision anymore.
This was also shared as an issue here: https://github.com/pytorch/vision/issues/1920
What I did is I downloaded the files from here: https://drive.google.com/drive/folders/0B7EVK8r0v71pWEZsZE9oNnFzTm8?resourcekey=0-5BR16BdXnb8hVj6CNHKzLg
For simplicity, you can also use my link here where I already prepared the directory structure: https://drive.google.com/file/d/1m8-EBPgi5MRubrm6iQjafK2QMHDBMSfJ/view?usp=share_link
Download that zip file and place it in the celeba folder. Then unzip img_align_celeba.zip. And it should work:

Let me know in case it still doesn't work, and please feel free to reopen this issue then.


Close #LGVISIUM-60: Elevation extraction

This PR adds the functionality to extract the elevation from the borehole profiles. The extracted information is then saved into the metadata part of the document.
The current metrics on the Zurich dataset of this feature are:

'elevation_accuracy': 0.68125,
'elevation_precision': 0.9008264462809917,
'elevation_recall': 0.7364864864864865,
'elevation_f1': 0.8104089219330854,
'elevation_tp': 109,
'elevation_fp': 12,
'elevation_fn': 39

Potential improvements for future issues:

Use the elevation information to compute the depth of the groundwater
Currently, some functions and methods of the groundwater extraction and elevation extraction are quite redundant. It would make sense to refactor the code to have a parent class that implements some of the logic.
Currently, I did not spend a lot of time trying to optimize the performance of the extraction. There are certainly still a few easy wins to achieve here by taking more time to work on this feature extractor.

Latest performance: 'elevation_accuracy': 0.7028571428571428, 'elevation_precision': 0.8913043478260869, 'elevation_recall': 0.76875, 'elevation_f1': 0.825503355704698, 'elevation_tp': 123, 'elevation_fp': 15, 'elevation_fn': 37,

Why did it pick the number "682.783" instead of "408.40" in this document? (268124094-bp.pdf)

Edit: nevermind, the "408.40" seems to be missing from the OCR, so that's not something that we can deal with in the context of elevation extraction...

There are indeed a few other examples for this behavior. I tried to list them in https://jira.swisstopo.ch/projects/LGVISIUM/issues/LGVISIUM-62?filter=allopenissues.

Thank you for the detailed look into the PR. Yes, I do believe that I still need to merge with the latest main branch which will add your changes. Currently, there is also still the n-best logic in there that we removed. On 2 Sep 2024, at 17:01, Stijn Vermeeren @.***> wrote:
@stijnvermeeren-swisstopo requested changes on this pull request.
In src/stratigraphy/data_extractor/data_extractor.py:

"""Abstract class for data extraction from stratigraphy data files.

This class defines the interface for extracting data from stratigraphy data files. Subclasses must implement the
extract_data method to define the data extraction logic.
"""

doc: fitz.Document = None
feature_keys: list[str] = None
feature_name = None

def init(self, document: fitz.Document, feature_name: str = "coordinate"):

   """Initializes the CoordinateExtractor object.

   Args:

       document (fitz.Document): A PDF document.

       feature_name (str, optional): The name of the feature to extract. Defaults to "coordinate".

why have a default value at all for this?
In src/stratigraphy/data_extractor/data_extractor.py:

+logger = logging.getLogger(name)

+class DataExtractor(ABC):

"""Abstract class for data extraction from stratigraphy data files.

This class defines the interface for extracting data from stratigraphy data files. Subclasses must implement the
extract_data method to define the data extraction logic.
"""

doc: fitz.Document = None
feature_keys: list[str] = None
feature_name = None

def init(self, document: fitz.Document, feature_name: str = "coordinate"):

   """Initializes the CoordinateExtractor object.

Make the description more generic
In src/stratigraphy/data_extractor/data_extractor.py:

   """Finds the location of a coordinate key in a string of text.

   This is useful to reduce the text within which the coordinates are searched. If the text is too large

   false positive (found coordinates that are no coordinates) are more likely.

Make the description more generic.
In src/stratigraphy/main.py:

@@ -172,24 +172,33 @@ def start_pipeline(
predictions[filename]["language"] = language

                 # Extract the coordinates of the borehole

               coordinate_extractor = CoordinateExtractor(doc)

               coordinates = coordinate_extractor.extract_coordinates()

               coordinate_extractor = CoordinateExtractor(

                   document=doc,

                   feature_name="coordinate",

Wouldn't it be better to fix the feature_name in the CoordinateExtractor class definition? Because we will never instantiate a CoordinateExtractor with a different feature_name, or will we?
(Same for elevation and groundwater.)
In src/stratigraphy/data_extractor/data_extractor.py:

       if self.feature_name in ["elevation", "coordinate"]:

           if found_feature_value:

               feature_value = getattr(found_feature_value, self.feature_name)

               logger.info(f"Found {self.feature_name} information on page {page_number}: {feature_value}")

               return found_feature_value

       elif self.feature_name == "groundwater":

           if len(found_feature_value):

               groundwater_output = ", ".join(

                   [str(getattr(entry, self.feature_name)) for entry in found_feature_value]

               )

               logger.info(f"Found groundwater information on page {page_number}: {groundwater_output}")

               return found_feature_value

       else:

           raise ValueError(f"Feature name '{self.feature_name}' not supported")

It might be cleaner to implement the in this respected child classes, instead of having this if-else logic here?
In src/stratigraphy/data_extractor/data_extractor.py:

   """Extracts the groundwater information from a borehole profile.

   Processes the borehole profile page by page and tries to find the coordinates in the respective text of the

   page.

   Algorithm description:

       1. if that gives no results, search for coordinates close to an explicit "groundwater" label (e.g. "Gswp")

   Returns:

       list[GroundwaterInformationOnPage] | None: the extracted coordinates (if any)

generalise the description and fix the return type
In src/stratigraphy/data_extractor/data_extractor.py:

       if self.feature_name in ["elevation", "coordinate"]:

           if found_feature_value:

               feature_value = getattr(found_feature_value, self.feature_name)

               logger.info(f"Found {self.feature_name} information on page {page_number}: {feature_value}")

               return found_feature_value

       elif self.feature_name == "groundwater":

           if len(found_feature_value):

               groundwater_output = ", ".join(

                   [str(getattr(entry, self.feature_name)) for entry in found_feature_value]

               )

               logger.info(f"Found groundwater information on page {page_number}: {groundwater_output}")

               return found_feature_value

       else:

           raise ValueError(f"Feature name '{self.feature_name}' not supported")

   logger.info("No groundwater found in this borehole profile.")

generalise the log message
In src/stratigraphy/data_extractor/data_extractor.py:

   if self.feature_name == "coordinate":

       # Return the best match (line only)

       best_match = min(matches, key=lambda x: x[1])

       return best_match[0]

   elif self.feature_name in ["elevation", "groundwater"]:

       # Sort the matches by their error counts (ascending order)

       matches.sort(key=lambda x: x[1])

       # Return the top three matches (lines only)

       return [match[0] for match in matches[:5]]

   else:

       raise ValueError(f"Feature name '{self.feature_name}' not supported.")

It might be cleaner to implement the in this respected child classes, instead of having this if-else logic here?
In src/stratigraphy/data_extractor/data_extractor.py:

       else:

           pattern = regex.compile(r"\b(" + key + "){e<" + str(allowed_errors) + r"}\b", flags=regex.IGNORECASE)

       for line in lines:

           match = pattern.search(line.text)

           if match:

               matches.append((line, sum(match.fuzzy_counts)))

   # if no match was found, return None

   if len(matches) == 0:

       return None

   # Remove duplicates

   matches = list(dict.fromkeys(matches))

   # OPTION 1

what's "option 1"?
In src/stratigraphy/data_extractor/data_extractor.py:

   # if no match was found, return None

   if len(matches) == 0:

       return None

   # Remove duplicates

   matches = list(dict.fromkeys(matches))

For groundwater extraction, I implemented this differently in ee46a82 . I believe that that that implementation might also be better for the other attributes.
Maybe this is also what is causing the merge conflict that Github is currently reporting?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were assigned.Message ID: @.***>


Chain aggregation broken in Heroic 0.10.x

After updating Heroic to 0.10.2 some of our queries stopped working. After investigating, it looks like it's related to queries using the chain aggregation type.
Consider this query that used to work...
{
  ...
  "aggregation": {
    "type": "chain",
    "chain": [
      { "type": "delta" },
      { "type": "sum", "size": "60s" }
    ]
  }
}

...now returns a 400 Bad Request with the following error:

Cannot construct instance of com.spotify.heroic.aggregation.Chain (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)

I see the docs were removed on Oct 3, 2019.  However, the API still lists chain as a valid aggregation type (which are returned when passing an invalid aggregation type)

Could not resolve type id 'foo' as a subtype of [simple type, class
com.spotify.heroic.aggregation.Aggregation]: known type ids = [
abovek, average, belowk, bottomk, cardinality, chain, collapse, count,
delta, deltaPerSecond, empty, group, group-unique, max, min, notNegative,
opts, pointsabove, pointsbelow, quantile, spread, stddev, sum, sum2, topk, tpl]

Has the chain aggregation type been deprecated?  Or did the query syntax change somehow?

Hey @hampusohlsson
Thanks for bringing this up! We are going to look into what broke chain aggregations and either fix or deprecate it as a result. It likely broke as a result of removing lombok recently.
Will update you as soon as we have more information!

@lmuhlha thanks for the quick reply! I'm not familiar enough with Java to tell why it stopped working, but Google indeed suggests it has something to do with lombok, or jackson + parameter naming.
As a side note, I actually did some source code digging and found out the chain aggs work if you use the legacy "aggregators": [ <agg>, ... ] syntax.
And please, do not deprecate the chain aggregation :) we use it in production and need to upgrade to 0.10.3 since it contains some important bug fixes.

Just an update before the weekend hits:
Looks like we won't be deprecating this functionality. I have a PR in progress with the fix, just need to finish up the tests:
https://github.com/spotify/heroic/pull/581
Thanks again for pointing this out :)

Hi @lmuhlha, is there any update on the fix?

Hey @jakepeyser ,
I’ve been away at kubecon this week but I will be back on it Monday.
Thanks for your patience!

Thank you for merging the fix @lmuhlha! Do you expect it to be included in a new release in the near future?

New release has the fix :)
https://github.com/spotify/heroic/releases/tag/0.10.4


Implement v363 for MCEE support

This is a WIP to support MCEE 1.12.60 which uses protocol v363.
I've copied the closest protocol (v361) and added a couple items from the next version up. I don't really know what I'm doing here though but at the very least this will allow https://github.com/bundabrg/ProxyPass/tree/feature/mcee to compile.

References https://github.com/NukkitX/ProxyPass/pull/10

You only need to re create the serializers for packets that have changed, for the rest just use the v361 instance

Ahh so just reference the below. That makes things easier. I don't really know whats changed so is there a good way to work that out? Right now this is here purely to allow me to test MCEE through GeyserMC but I'd like to actually identify the changes.

If you are able to join through MCEE then that should be enough tbh. Just copy the Bedrock_v361 class and make chances if necessary

Not an issue with this PR, but i think you messed up your git config haha

Do you mean the author name?

It's not linked to your profile so its likely the email you're using for git is not on your github account

Thanks. I'll update. The annoying thing about working on multiple projects across multiple computers is I keep forgetting settings.  Also intellij doesn't help when it totally ignores local git settings.

We have a MCEE->Spigot connection.

i do actually have education edition but im honestly too lazy to test... sorry haha! it looks good at a glance though!

Is there anyway I could test this since I don't own a copy of education edition?

Unfortunately you need an account to run it.  Anyone with kids with a school office 365 account will have access to it and you will need 2 of them in the same tenant to test it through proxypass, so anyone with 2 or more school age kids will do.
Probably uni/college accounts may work as well?

I'll attach a session log later today between 2 mcee devices with just the handshake slightly redacted as it would leak my signed token.

Unfortunately you need an account to run it. Anyone with kids with a school office 365 account will have access to it and you will need 2 of them in the same tenant to test it through proxypass, so anyone with 2 or more school age kids will do.
Probably uni/college accounts may work as well?

My university uses office 365, so I should be able to test it by logging into mcbe using that Microsoft account?

That should work. I've just tested that the person who generates the original signedToken can join a server that broadcasts using that token so one 1 device is really needed.
The only complication is that you need 2 devices right now to get the signed token.  I may try write a small standalone tool that connects to an MCEE device to retrieve it thus only needing 1 device.

packets-cleaned.log
Packet capture between 2 MCEE Devices. I've redacted the jwt in the handshake. It also happened to have logging of chunk payloads as it was during my time of working out how the palettes work.

Tried to login with my university account but got an error stating that it's an invalid Microsoft account, and when I tried to create a new one for that email it stated that it requires a personal email account

Check here: https://www.microsoft.com/en-au/education/products/office
Perhaps you have to create the account via that.

It also looks like it might need to be explicitly added to the Azure AD (which you can't do unless you're the administrator). So it may only be possible to test with a trial account, otherwise you'll need to find some friends with kids: https://education.minecraft.net/get-started/
Bit of a pain unfortunately.

It works fine for me, I just have to login. I’m gonna test it later today with Nukkit 2.0

Start of work on refactor

This is now 1.16 ready as far as I can tell but will require further testing once I update Geyser mappings for MCEE.

I could be wrong, but this should be unnecessary as the latest beta for mcee is using protocol v390

@D3ATHBRINGER13 it's not "unnecessary"; Protocol maintains compatibility with many older versions of Bedrock, so still having support for it will be useful. And, the data can be used to easily add whatever the protocol is for 390 MCEE (likely not exactly 390).

Yeah, didn't really think about it, sorry

Closed as I'll maintain this at https://github.com/bundabrg/Reversion/tree/master/protocol


mongodb 7.0.4; switch to cirun

Given that 6.0 is supported way longer than 6.1-6.3, I'm starting the catch-up with 7.0 here, so that we can create a branch for this even if we move on to 7.2 soon after.

@conda-forge-admin, please rerender

@jaimergp @isuruf
Not sure if this is expected for the cirun builds, but I've seen this now several times that a failed job does not properly finish (e.g. "Build on Linux" still has a turning yellow wheel), and more importantly, that the raw logs for that job are effectively empty:
2024-02-28T04:21:10.5308211Z Requested labels: cirun-openstack-cpu-large--8075232475-linux_aarch64_, linux, x64, self-hosted
2024-02-28T04:21:10.5308629Z Job defined at: conda-forge/mongodb-feedstock/.github/workflows/conda-build.yml@refs/pull/80/merge
2024-02-28T04:21:10.5308806Z Waiting for a runner to pick up this job...
2024-02-28T04:22:29.1192514Z Job is about to start running on the runner: cirun-conda-forge--mongodb-feedstock-fd6a0cc (repository)

In this case, this means I cannot even see the point of failure in the logs, and neither scrolling up nor the built-in search can uncover it. This is a pretty large usability hurdle, so I think we should figure out how to fix this?

If you go to the job summary (the Home link), you'll see:

The self-hosted runner: cirun-conda-forge--mongodb-feedstock-fd6a0cc lost communication with the server. Verify the machine is running and has a healthy network connection. Anything in your workflow that terminates the runner process, starves it for CPU/Memory, or blocks its network access can cause this error.

We have seen this in cupy-feedstock while running the tests because it had a memory leak and starved every other process, including the runner itself. We have given higher priority to the runner process itself so the OOM killer tries other processes first, but it looks like we still need to refine that config.
In short, your job is using too many resources. Either reduce parallelism or upgrade to a bigger runner. But I'm surprised mongodb takes more resources than pytorch.
I'll also open an issue in the open-gpu-server repo to track this, so at least we have a reference to point people to while we iterate on this (no eta promised though).

xref https://github.com/Quansight/open-gpu-server/issues/28

Thanks for the input, makes sense!

In short, your job is using too many resources. Either reduce parallelism or upgrade to a bigger runner. But I'm surprised mongodb takes more resources than pytorch.

It seems that the compilation failure somehow blows things up - the other two arches were running fine...?

OK, new failure:
[4144+2/4544] Compiled build/opt/third_party/mozjs/extract/js/src/builtin/RegExp.o
FAILED: build/opt/third_party/mozjs/extract/js/src/builtin/RegExp.o
rm -f build/opt/third_party/mozjs/extract/js/src/builtin/RegExp.o; $BUILD_PREFIX/bin/x86_64-conda-linux-gnu-c++ @build/opt/third_party/mozjs/extract/js/src/builtin/RegExp.o.rsp
<command-line>: fatal error: js-confdefs.h: No such file or directory


The subnet is not created by ansible...

I have used:
ibmcloud is subnet-create jclere-subnet $VPC_ID --zone eu-de-1 --ipv4-address-count 256
to create it.

Hi @jfclere . I think I need more information on this.
I've just executed the  vpc-create playbook and AFAIK it did create the subnet although it doesn't have an associated gateway.
$ export IC_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ; export IC_REGION=eu-de
$ ansible-playbook vpc-create.yml
PLAY [Create IBM Cloud VPC VSI] *****************************************************************************************************************...
Thursday 21 October 2021  12:42:20 +0200 (0:00:00.049)       0:00:51.391 ******
===============================================================================
Configure VPC ------------------------------------------------------ 28.59s
Configure VPC Subnet ----------------------------------------------- 21.73s
Gathering Facts ----------------------------------------------------- 0.95s
Save VPC Subnet as fact --------------------------------------------- 0.05s
Save VPC as fact ---------------------------------------------------- 0.04s
Fetch the variables from var file ----------------------------------- 0.02s

Retrieving the subnet information, I used a playbook that I didn't publish yet, I get the following.
        "subnets": [
            {
                "available_ipv4_address_count": 251,
                "id": "xxxx-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
                "name": "snowdrop-subnet",
                "status": "available",
                "total_ipv4_address_count": 256,
                "zone": "eu-de-1"
            }
        ],

Could this be what you mean, that it is missing the Public Gateway?
Thank you.

thanks ;-)


Graphic Problem

Hi guys, I have a problem to change the graph of this datapicker. Basically I should use it in a form.
I'm looking to change the graph aspect, expecially I would change the rettangle in a line

I would change in a line with the text above.
Thank you.

You can use the customStyles prop to overwrite default style:
<DatePicker
    // other props
    customStyles={{
        dateInput: {
	    borderWidth: 0,
	    borderBottomWidth: 1,
            // etc
        }
    }}

Thank you!


Support multiple trace IDs in trace persistence and query, in H2 and ElasticSearch

In 6.0.0-alpha, we miss this feature, need to support in beta release scheduled releasing in Nov. By missing that, MQ plugin wouldn't support consuming messages in batch mode.
FYI @ascrutae @hanahmily

Multiple segment ids query is bad for performance. And make MySQL and H2 storage difficult to implement elegantly.
So I am closing this. Only use UI to show batch refs at span page. @hanahmily do we have supported this?


Script and document for tagging new release

Patch the make upstream_release command to do proper clean up by removing tmp change log file and nmstate tarballs
Add document for how to do new release as packaging/README.release.md

Force merging as this is not related to production code.


the push command crash

Traceback (most recent call last):
  File "/Users/baidu/Yohoo/.repo/repo/main.py", line 538, in <module>
    _Main(sys.argv[1:])
  File "/Users/baidu/Yohoo/.repo/repo/main.py", line 512, in _Main
    result = repo._Run(argv) or 0
  File "/Users/baidu/Yohoo/.repo/repo/main.py", line 185, in _Run
    result = cmd.Execute(copts, cargs)
  File "/Users/baidu/Yohoo/.repo/repo/subcmds/push.py", line 381, in Execute
    self.manifest.topdir, abort_if_user_denies=True)

Thanks! Can you check if this was fixed by @flxo with #51  ? Otherwise, please reopen the issue :).

fixed


qa_crowbarsetup: decrease top TO for HA compute (bsc#1024742)

This PR is a workaround for the bug, injecting overrides for the pacemaker_remote service

I wonder if this still makes sense


Polyglot Dynomite Client

Dynomite can support any Redis/Memcached client. For a complete list see of Redis and Memcached client APIs see here:

http://redis.io/clients
https://code.google.com/p/memcached/wiki/Clients

There are some features that can benefit from the distributed nature of Dynomite and exist currently in Dyno (Dynomite's Java client). Since people tend to use different client libraries, it will be nice to make the python, node.js, golang redis/memcached clients to support some of the following features:
List of interesting features

Connection pooling of persistent connections - this can help reduce connection churn on the Dynomite server with client connection reuse.
Topology aware load balancing (Token Aware) for avoiding any intermediate hops to a Dynomite coordinator node that is not the owner of the specified data.
Application specific local rack affinity based request routing to Dynomite nodes.
Application resilience by intelligently failing over to remote racks when local Dynomite rack nodes fail.
Application resilience against network glitches by constantly monitoring connection health and recycling unhealthy connections.
Capability of surgically routing traffic away from any nodes that need to be taken offline for maintenance.
Flexible retry policies such as exponential backoff etc.
Insight into connection pool metrics
Highly configurable and pluggable connection pool components for implementing your advanced features.

I believe Dyno is available only as Java client. When can we expect Dyno - Nodejs client ?

@SanjeevMurthy Correct Dyno client is a wrapper around Jedis (Redis Java client), nonetheless Dynomite works with any Redis client including NodeJs.

@ipapapa  thank you.

Moved this to the Projects: https://github.com/Netflix/dynomite/projects/3

hi everyone, any update on this?

Any update on what client? We will Open Source soon our Dynomite-Explorer (UI) that will showcase some of the things we have done for Node.js. I do not have an estimate for that right now.

I'm looking for Go lang dynomite client. is it available?

You can use the vanilla Go Redis client but you may miss some of the above features. You do not need a special client to use Dynomite. We currently do not provide a specialized client for Go.

@ipapapa  thanks for the information.


Reduce some unnecessary ArrayUtil#grow calls

This change will slightly improve the performance of DataOutput#writeGroupVInts and some other methods related to XXXRefBuilder#append.
Here is a JMH benchmark for Util.toIntsRef, using java 21 on my MAC (intel chip).
Benchmark                    Mode  Cnt   Score   Error   Units
PR   ToIntsRefBenchMark.run  thrpt    5  38.208 ± 1.054  ops/us
main ToIntsRefBenchMark.run  thrpt    5   7.862 ± 0.832  ops/us

JMH benchmark code for Util#toIntsRef:
public class ToIntsRefBenchMark {
  IntsRefBuilder intsRefBuilder = new IntsRefBuilder();
  BytesRef bytesRef = new BytesRef(new byte[32]);

  @Benchmark
  public void run() {
    Util.toIntsRef(bytesRef, intsRefBuilder);
  }
}

@easyice - I'm probably missing something obvious, but I thought ArrayUtil.grow already made the same check. Can you explain why this PR helps?
https://github.com/apache/lucene/blob/04f335ad79cae019d1a552e41e0029d061d8e3d9/lucene/core/src/java/org/apache/lucene/util/ArrayUtil.java#L430-L435

@stefanvodita Thank you for looking into this!  when an array does not need to grow, The ArrayUtil.grow will return the input array, then it will call an extra assignment like ref.bytes = ref.bytes in BytesRefBuilder#grow. I observed there was some performance impact, which was noticeable in the append method. Maybe i'm being overly picky, Overall, it doesn't have a significant impact on performance.

Thanks for the explanation! The way I think about it is whether it would be ok to make this check every time we call grow. Probably not, it's nice that grow does the check for you. Maybe simplicity is worth more than the performance gain here? If you think the performance win is compelling, I won't argue against it.

I originally wanted to speed up writeGroupVInts in this way. Now there is a better way to speed up it (by https://github.com/apache/lucene/pull/13203) . I agree with you that only make the change where performance is important to keep things simple, Currently, I haven't seen any other places yet, so i will close it. Thank you!


Webpack builds fails with watchpack 1.3.0 [Fatal error: Cannot convert undefined or null to object]

Do you want to request a feature or report a bug?
Bug report

What is the current behavior?
Webpack karma builds fail with:
22 02 2017 16:38:38.711:INFO [karma]: Karma v1.5.0 server started at http://<IP_ADDRESS>:8080/
22 02 2017 16:38:38.712:INFO [launcher]: Launching browser PhantomJS with unlimited concurrency
22 02 2017 16:38:38.799:INFO [launcher]: Starting browser PhantomJS
Fatal error: Cannot convert undefined or null to object

If the current behavior is a bug, please provide the steps to reproduce.
Reproducing here would take me hours to set up. Its an task running karma/jasmine tests written in typescript inside phantomjs.  I will do later if you tell me that you really need it.

What is the expected behavior?
Webpack builds should not fail
Our investigation results in:
Webpack installed via npm yesterday: Webpack was installed with watchpack 1.2.1
Webpack installed via npm today: Webpack is installed with watchpack 1.3.0
Nailing down watchpack via npm-shrinkwrap.json "solves" our problem and all builds run fine again.
{
    "dependencies": {
        "webpack": {
            "version": "2.2.1",
            "dependencies": {
                "watchpack": {
                    "version": "1.2.1"
                }
            }
        }
    }
}

If this is a feature request, what is motivation or use case for changing the behavior?
Please mention other relevant information such as the browser version, Node.js version, webpack version and Operating System.
Same on Linux and Windows.
Node 6.9.1
Webpack 2.2.1

is there an easy way to reproduce this? (One that does not take hours :)) ?

I guess it's fixed in 1.3.1

Yeah it's fixed in 1.3.1, thanks a lot 👍


Update Non-Canvas Dialog Prefabs to Use Dialog component

Currently, the non-Canvas prefabs use the deprecated Dialog Shell component. Task to update to the new Dialog component.

Change merged


SAAS-469: chips/tags component

https://jira.percona.com/browse/SAAS-469
Implementation details:

Two components: Chip and ChipAreaInputField. The former can be used as a standalone component (isRemovable prop allows a chip to be removed). As for the latter, it's useful to be used within a form (react-final-form);
Rules for ChipAreaInputField:

No duplicate tags allowed (tags are usually unique, and it makes it easier for us to remove a tag without the need to track them using IDs or other hacky methods)
No empty tags allowed;
minTags validator can be used to make sure it's not empty;
On form submission, values are saved in a string array on the form (e.g. {tags: ["tag1", "tag2"]});

Clicking on the container will automatically focus the input.

@fabio-silva can we have an svg clear (cross) icon with tiny lines instead of that bootstrap icon?

@fabio-silva can we have an svg clear/cross icon with tiny lines instead of that aged font-awesome icon?

Yep, new screenshot added

@fabio-silva can we have an svg clear/cross icon with tiny lines instead of that aged font-awesome icon?

Yep, new screenshot added

Madonna, it looks so much cleaner! Aaaawesome, thanks!


Can not import new project

I've been trying for the past few days to import a new repository but it's not working.
Can not refresh my packages similar to #1809
Trying to use the "manual import" button but got the fail whale (like  #1832).
Tried to clean my browser (firefox) but nothing changed.
Anything I need to do?

I'm also getting the fail whale when importing new projects.

I have the same problem, manual import does not work.

I also cannot import a new project, tried a lot of different repositories, none are working. Always getting the message: Fail.  Check back in a bit!.

+1

Sorry, I think this was due to some users not having profiles. I've deployed a potential hotfix, with changes at #1839. Can anyone confirm?

@agjohnson now working for me :)!

Marking this as closed, feel free to reopen if that change didn't resolve the issue.

It is working fine now, thank you


Only filter metadata, not exceptions

Currently any filters set using $bugsnag->setFilters will filter values that match the key in 'exceptions' in addition to keys in 'metadata'.  This means that the 'code' element can be assigned the string "[FILTERED]".  Although this is currently accepted by Bugsnag, it doesn't meet the schema so may not be in the future.
The correct way to prevent code snippets from being sent is to use the existing $bugsnag->setSendCode(false).

This makes sense. Thanks @duncanhewett.


Proposal: Adds emulator support to Gax.Grpc

Still in draft because more tests are needed. And it's a proposal anyway.
I've added one test that shows what an actual client builder should do to use the base's emulator suppor code.
Might be a little messy on the generics but clients won't see that anyway, so I think we can deal with it.

We can definetely make it "less" generic at the expense of some casting (of course) in cases where the emulator support in GAX is not enough. I'm thinking that those might be very few (currently Datastore which has emulator projectId) so I'm totally fine with the tradeoff.
I'll add a new test to this commit showing how emulator support can be customized. And then I'll add a new commit removing the generics so we can compare the two.

Rebased onto the Gax EmulatorDetection enum.
Maybe start by looking at the tests which show how everything comes together. Two tests, one for default support (as is in GAX, which would cover Firestore and Spanner's 3 low level libraries) and another one for custom support (which would cover Datastore and Spanner.Data (I think)).

Closing in favor of #402. Will keep branch around for a while just in case.


"I logged in and I'm still under anonymous"

Originally reported by @rbigueras as openfoodfacts/openfoodfacts-server#1306
Summary:
I logged in and I'm still under anonymous
Steps to reproduce:
use the android app beta, and click on anonymous,
the app asks to log in,
log in
once logged in the user's name is still anonymous
and when you try to relog in, it says you already are.
Add system logs:
Add logcat files here (if you are able to add).
Expected behavior:
log in see name
Observed behavior:
log in, see anonymous

@teolemon I guess this issue was in an earlier version of the app. It must have been fixed at some point. Should we close this?

I think it must have been NULL values passed to the URL when the user had just logged in. Ok to close.

Ok to close if not reproducible

Could be closed or it's reproductible ?

I'm closing, I think it's been closed


github_detail: Limit bot to 5 requests per message.  Fixes #172 .

Fixes #172
Also Added a test to verify the same.

Can you put Fixes #172 on the third line of the commit message?  I also had a comment on the code.

Looking at your test, I'm wondering if the bot should also report identical IDs? Perhaps remove duplicates but add a warning message indicating that a duplicate was found? This could go into another PR (certainly a separate commit, though) - just a thought!

@neiljp  by remove duplicates you mean not fetching the same issue/PR in the same request? I thought about this but then I think practically, no one is gonna do so and even if they do, they won't be able to do more than 5 requests in one message so I thought we could ignore this. What do you think?

@nkmishra1997 Yes, I meant that. I suppose it does show an excessive use in that test, however it seemed like a simple change to make. As I said, though, just a thought - it's certainly not as important to resolve (if at all) as the issue this PR fundamentally fixes.

Merged!  Thanks @nkmishra1997 @neiljp


fix RuntimeWarning when importing in custom settings file

Coverage remained the same at 97.746% when pulling f2ddd38f203d97a25863b13867e3e01abe1ab2a4 on fix-settings-RuntimeWarning into c90c8532bd9dd01dcea4fe0c51697e37a957d6c1 on devel.

Coverage increased (+0.0005%) to 97.746% when pulling 000f906040d00b193efc4a9be382bbd79f4d70ab on fix-settings-RuntimeWarning into c90c8532bd9dd01dcea4fe0c51697e37a957d6c1 on devel.

Coverage increased (+0.0005%) to 97.746% when pulling 000f906040d00b193efc4a9be382bbd79f4d70ab on fix-settings-RuntimeWarning into c90c8532bd9dd01dcea4fe0c51697e37a957d6c1 on devel.

Coverage remained the same at 97.746% when pulling c15591157084e969d78a1f4b828b95c5fb478845 on fix-settings-RuntimeWarning into c90c8532bd9dd01dcea4fe0c51697e37a957d6c1 on devel.

Coverage remained the same at 97.746% when pulling c15591157084e969d78a1f4b828b95c5fb478845 on fix-settings-RuntimeWarning into c90c8532bd9dd01dcea4fe0c51697e37a957d6c1 on devel.


Postfix unary operator

Hi,
First, I would like to thank you for the work. I have recently implemented a calculator (still to be uploaded) and was looking for an expression evaluator that could surpass the limitations of double-precision with BigDecimal, and I think the work shown in EvalEx is excellent.
So, I saw that this subject has already been discussed on issues #126, #180 and #236, but since my previous code already used custom/user-defined operators, I went ahead and decided to modify the AbstractOperator and Expression classes, so they were able to handle postfix unary operators (e.g. "!" operator for factorial function) without throwing exceptions. However, I did not exclude the AbstractUnaryOperator class or joined it with the AbstractOperator class through the modifications herein. Therefore, the prefix unary operators are still defined by the AbstractUnaryOperator class.
In general lines, I added an int parameter in the AbstractOperator and AbstractLazyOperator class methods called "numberOperands" to keep track of the number of operands this operator expects (e.g. numberOperands=1 for "!" and numberOperands=2 for "^"). The method getNumberOperands() below was added to the LazyOperator and AbstractLazyOperator classes, associated with a protected int numberOperands variable. This value could later be called and used whenever necessary to check which type of operator is being used.
public int getNumberOperands(){
	return numberOperands;
}

With the above, the Expression class was edited at some points to understand and handle double-operand operators and postfix unary operators based on this numberOperands parameter, still classifying all as TokenType.OPERATOR, accepting the second operand v2=null without exceptions. As an example, when attributing the token types, a condition was added such that a postfix unary operator followed by a regular operator would not classify the later as a prefix unary operator, i.e. when analyzing the expression "4!+2" the operator "+" would not be classified as TokenType.UNARY_OPERATOR but rather TokenType.OPERATOR accepting it as a postfix unary operator, yielding the correct result 4!+2 = 26. It is crucial to notice that a sufficiently high precedence number must be passed when declaring the new AbstractOperator to avoid misinterpretations (e.g. I used precedence "Expression.OPERATOR_PRECEDENCE_POWER_HIGHER + 1" to the added postfix unary operators).
The expression evaluation has shown the correct results for the tests I have run so far, with different expressions and postfix unary operators. However, if any mistakes were made or some logical error I have not noticed, please let me know. For now, I didn't want to change the implementation for the prefix unary operators, but if the solution presented holds, I would gladly make changes to join all operators in a single class.
Again, thank you for the repository. Regards.

I've only quickly looked over the description, and it does sound good. However, getNumberOperands returning an int seems like a not so good choice, given that it can only be 1 or 2 (also I'd rename it to getNumberOfOperands or getOperandsNumber). I don't have in my head right now how EvalEx works in this regard, but maybe an Enum would be better suited, something like UNARY_LEFT/UNARY_RIGHT/BINARY or something like that.
But as I've said, I've only skipped over it and currently can't remember how the library works in ths regard.

Hi Robert. I understand the number of operands has only two choices (1 or 2), but I think returning int is an easier and clean way (besides intuitive) of understanding and using this number within the code, e.g. in Expression.java I used the int directly return from getNumberOperands in IF conditions and operations where int is required, which I found faster and more intuitive.
Moreover, I have to say that, after looking at the code, my first instinct was also to work with the Enum OPERATOR and UNARY_OPERATOR types, creating a new one (I called it POST_UNARY), so the changes would be contained to the Expression.java. However, this showed to be more complicated and prone to error given the structure and way the TokenType is analyzed and attributed, with more IF-ELSE blocks required and misclassification of operator's token and consequent errors occurring. With the new declared argument numberOperands one has another feature that can be used to compare and correctly analyze and evaluate the desired expression without necessarily creating a third TokenType for operators.
Therefore, I think a new int argument with a method returning its int value is an easy, simple and fitting solution.
Lastly, I don't see the difference from naming the method getNumberOperands to getOperandsNumber, or even getNumberOfOperands since they all carry the same meaning and can be all perfectly understood to what their function is. But if you think one of the later would best fit the style used in the repository, I can change it for sure :)

Thank you for the PR, but there are build errors with this PR. Can you please also squash the 7 commits into one and resubmit?


Show detail for failing examples using aggregate_failures

Fixes #56
Example
Before

After

Note
There is a minor change to how backtraces are formatted. It’s now the same as what rspec shows when ran from directly:
Before

After

Sorry that this hasn't had attention in a while, @jasoncodes.
I really like this idea, but I'm very concerned that the parsing code seems to be a bit brittle and may break if future rspecs change output formats slightly. I'm not sure what the best answer here, which is why I haven't really jumped into it. 🤔

What if I made the guards less strict so instead of raising on an unexpected format, they instead silently continue? This should at worst output a bit of duplication instead of erroring.
I’m not sure how to best add coverage for that though. Conditionally stub out fully_formatted_lines so it does something different than expected? Not sure if it’d be worth the effort.

@sj26 Sorry to bother, but do you have any further opinion on this?

Right now we're running on a fork based on this PR. I too would appreciate any opinions on a way forward. Thanks!

Any updates on this guys, would really love to see it going in ?

This would be a great addition to merge and then cut a release...

@sj26 any chance we can get this one on a new release? :)


Compilation fails in Ubuntu 21.10 Impish on a Raspberry Pi 4

The following is happening in Ubuntu 21.10 Impish on a Raspberry Pi 4, I have completed the previous steps and everything works find for the previous library that must be compiled, it is with Sysmon that this breaks with the following message:
[  1%] Extracting sysmonmsg.mc.utf16
[  2%] Extracting sysmonmsgop.man.utf16
[  3%] Converting sysmonmsgop.man.utf16 to UTF8
[  4%] Extracting sysmonmsgop.c from sysmonmsgop.man
[  5%] Extracting sysmonevents.h.utf16
Warning skip check of User due to misalignment
Warning skip check of Details due to misalignment
Warning skip check of User due to misalignment
Warning skip check of EventNamespace due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Query due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Type due to misalignment
Warning skip check of Destination due to misalignment
Warning skip check of User due to misalignment
Warning skip check of Details due to misalignment
Warning skip check of User due to misalignment
Warning skip check of EventNamespace due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Query due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Type due to misalignment
Warning skip check of Destination due to misalignment
Warning skip check of Details due to misalignment
Warning skip check of EventNamespace due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Query due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Type due to misalignment
Warning skip check of Destination due to misalignment
Warning skip check of Details due to misalignment
Warning skip check of EventNamespace due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Query due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Type due to misalignment
Warning skip check of Destination due to misalignment
Warning skip check of Details due to misalignment
Warning skip check of EventNamespace due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Query due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Type due to misalignment
Warning skip check of Destination due to misalignment
Warning skip check of Details due to misalignment
Warning skip check of EventNamespace due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Query due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Type due to misalignment
Warning skip check of Destination due to misalignment
Warning skip check of Details due to misalignment
Warning skip check of EventNamespace due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Query due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Type due to misalignment
Warning skip check of Destination due to misalignment
Warning skip check of Path due to misalignment
Warning skip check of Details due to misalignment
Warning skip check of EventNamespace due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Query due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Type due to misalignment
Warning skip check of Destination due to misalignment
Warning skip check of Path due to misalignment
Warning skip check of Details due to misalignment
Warning skip check of EventNamespace due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Query due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Type due to misalignment
Warning skip check of Destination due to misalignment
Warning skip check of Path due to misalignment
Warning skip check of Details due to misalignment
Warning skip check of EventNamespace due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Query due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Type due to misalignment
Warning skip check of Destination due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of TargetFilename due to misalignment
Warning skip check of Hashes due to misalignment
Warning skip check of Archived due to misalignment
Warning skip check of Path due to misalignment
Warning skip check of Details due to misalignment
Warning skip check of EventNamespace due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Query due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Type due to misalignment
Warning skip check of Destination due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of TargetFilename due to misalignment
Warning skip check of Hashes due to misalignment
Warning skip check of Archived due to misalignment
Warning skip check of Path due to misalignment
Warning skip check of Details due to misalignment
Warning skip check of EventNamespace due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Query due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Type due to misalignment
Warning skip check of Destination due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of TargetFilename due to misalignment
Warning skip check of Hashes due to misalignment
Warning skip check of Archived due to misalignment
Warning skip check of Path due to misalignment
Warning skip check of CommandLine due to misalignment
Warning skip check of CurrentDirectory due to misalignment
Warning skip check of User due to misalignment
Warning skip check of LogonGuid due to misalignment
Warning skip check of LogonId due to misalignment
Warning skip check of TerminalSessionId due to misalignment
Warning skip check of IntegrityLevel due to misalignment
Warning skip check of Hashes due to misalignment
Warning skip check of ParentProcessGuid due to misalignment
Warning skip check of ParentProcessId due to misalignment
Warning skip check of ParentImage due to misalignment
Warning skip check of ParentCommandLine due to misalignment
Warning skip check of Hashes due to misalignment
Warning skip check of Signed due to misalignment
Warning skip check of Signature due to misalignment
Warning skip check of SignatureStatus due to misalignment
Warning skip check of Details due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of PipeName due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of PipeName due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of EventNamespace due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Query due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Type due to misalignment
Warning skip check of Destination due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of TargetFilename due to misalignment
Warning skip check of Hashes due to misalignment
Warning skip check of Archived due to misalignment
Warning skip check of Path due to misalignment
Warning skip check of CommandLine due to misalignment
Warning skip check of CurrentDirectory due to misalignment
Warning skip check of User due to misalignment
Warning skip check of LogonGuid due to misalignment
Warning skip check of LogonId due to misalignment
Warning skip check of TerminalSessionId due to misalignment
Warning skip check of IntegrityLevel due to misalignment
Warning skip check of Hashes due to misalignment
Warning skip check of ParentProcessGuid due to misalignment
Warning skip check of ParentProcessId due to misalignment
Warning skip check of ParentImage due to misalignment
Warning skip check of ParentCommandLine due to misalignment
Warning skip check of Hashes due to misalignment
Warning skip check of Signed due to misalignment
Warning skip check of Signature due to misalignment
Warning skip check of SignatureStatus due to misalignment
Warning skip check of Details due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of PipeName due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of PipeName due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of EventNamespace due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Query due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Type due to misalignment
Warning skip check of Destination due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of TargetFilename due to misalignment
Warning skip check of Hashes due to misalignment
Warning skip check of Archived due to misalignment
Warning skip check of Path due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of FileVersion due to misalignment
Warning skip check of Description due to misalignment
Warning skip check of Product due to misalignment
Warning skip check of Company due to misalignment
Warning skip check of CommandLine due to misalignment
Warning skip check of CurrentDirectory due to misalignment
Warning skip check of User due to misalignment
Warning skip check of LogonGuid due to misalignment
Warning skip check of LogonId due to misalignment
Warning skip check of TerminalSessionId due to misalignment
Warning skip check of IntegrityLevel due to misalignment
Warning skip check of Hashes due to misalignment
Warning skip check of ParentProcessGuid due to misalignment
Warning skip check of ParentProcessId due to misalignment
Warning skip check of ParentImage due to misalignment
Warning skip check of ParentCommandLine due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of TargetFilename due to misalignment
Warning skip check of CreationUtcTime due to misalignment
Warning skip check of PreviousCreationUtcTime due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of User due to misalignment
Warning skip check of Protocol due to misalignment
Warning skip check of Initiated due to misalignment
Warning skip check of SourceIsIpv6 due to misalignment
Warning skip check of SourceIp due to misalignment
Warning skip check of SourceHostname due to misalignment
Warning skip check of SourcePort due to misalignment
Warning skip check of SourcePortName due to misalignment
Warning skip check of DestinationIsIpv6 due to misalignment
Warning skip check of DestinationIp due to misalignment
Warning skip check of DestinationHostname due to misalignment
Warning skip check of DestinationPort due to misalignment
Warning skip check of DestinationPortName due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ImageLoaded due to misalignment
Warning skip check of Hashes due to misalignment
Warning skip check of Signed due to misalignment
Warning skip check of Signature due to misalignment
Warning skip check of SignatureStatus due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of ImageLoaded due to misalignment
Warning skip check of FileVersion due to misalignment
Warning skip check of Description due to misalignment
Warning skip check of Product due to misalignment
Warning skip check of Company due to misalignment
Warning skip check of Hashes due to misalignment
Warning skip check of Signed due to misalignment
Warning skip check of Signature due to misalignment
Warning skip check of SignatureStatus due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of SourceProcessGuid due to misalignment
Warning skip check of SourceProcessId due to misalignment
Warning skip check of SourceImage due to misalignment
Warning skip check of TargetProcessGuid due to misalignment
Warning skip check of TargetProcessId due to misalignment
Warning skip check of TargetImage due to misalignment
Warning skip check of NewThreadId due to misalignment
Warning skip check of StartAddress due to misalignment
Warning skip check of StartModule due to misalignment
Warning skip check of StartFunction due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of Device due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of SourceProcessGUID due to misalignment
Warning skip check of SourceProcessId due to misalignment
Warning skip check of SourceThreadId due to misalignment
Warning skip check of SourceImage due to misalignment
Warning skip check of TargetProcessGUID due to misalignment
Warning skip check of TargetProcessId due to misalignment
Warning skip check of TargetImage due to misalignment
Warning skip check of GrantedAccess due to misalignment
Warning skip check of CallTrace due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of TargetFilename due to misalignment
Warning skip check of CreationUtcTime due to misalignment
Warning skip check of EventType due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of TargetObject due to misalignment
Warning skip check of EventType due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of TargetObject due to misalignment
Warning skip check of Details due to misalignment
Warning skip check of EventType due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of TargetObject due to misalignment
Warning skip check of NewName due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of TargetFilename due to misalignment
Warning skip check of CreationUtcTime due to misalignment
Warning skip check of Hash due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of PipeName due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of PipeName due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of EventType due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of Operation due to misalignment
Warning skip check of User due to misalignment
Warning skip check of EventNamespace due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Query due to misalignment
Warning skip check of EventType due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of Operation due to misalignment
Warning skip check of User due to misalignment
Warning skip check of Name due to misalignment
Warning skip check of Type due to misalignment
Warning skip check of Destination due to misalignment
Warning skip check of EventType due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of Operation due to misalignment
Warning skip check of User due to misalignment
Warning skip check of Consumer due to misalignment
Warning skip check of Filter due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of TargetFilename due to misalignment
Warning skip check of Hashes due to misalignment
Warning skip check of Archived due to misalignment
Warning skip check of UtcTime due to misalignment
Warning skip check of ProcessGuid due to misalignment
Warning skip check of ProcessId due to misalignment
Warning skip check of Image due to misalignment
Warning skip check of Session due to misalignment
Warning skip check of ClientInfo due to misalignment
Warning skip check of Hashes due to misalignment
Warning skip check of Path due to misalignment
Warning skip check of Archived due to misalignment
[  6%] Converting sysmonevents.h.utf16 to UTF8
[  7%] Converting sysmonmsg.mc.utf16 to UTF8
[  8%] Extracting sysmonmsg.h from sysmonmsg.mc
[  9%] Extracting sysmonmsgop.h from sysmonmsgop.man
Scanning dependencies of target sysmonLogView
[ 10%] Building CXX object CMakeFiles/sysmonLogView.dir/sysmonLogView/sysmonLogView.cpp.o
[ 11%] Building C object CMakeFiles/sysmonLogView.dir/sysmonLogView/sysmonGetEventName.c.o
[ 12%] Building C object CMakeFiles/sysmonLogView.dir/sysmonmsgop.c.o
[ 13%] Linking CXX executable sysmonLogView
[ 13%] Built target sysmonLogView
[ 13%] Built target sysmonEBPFkern5.3-5.5
[ 15%] Building C object CMakeFiles/checkEBPFsizes.dir/checkEBPFsizes/checkEBPFsizes.c.o
[ 16%] Linking C executable checkEBPFsizes
[ 16%] Built target checkEBPFsizes
[ 17%] Building C object CMakeFiles/mysleep.dir/test/mysleep.c.o
[ 18%] Linking C executable mysleep
[ 18%] Built target mysleep
[ 19%] Packing manifest.xml into manifest.xml.o
[ 20%] Building EBPF object sysmonEBPFkern4.15.o
In file included from /root/SysmonForLinux/ebpfKern/sysmonEBPFkern4.15.c:36:
In file included from /root/SysmonForLinux/ebpfKern/sysmonGenericEntry_tp.c:35:
In file included from /root/SysmonForLinux/ebpfKern/sysmonEBPF_common.h:34:
In file included from /opt/sysinternalsEBPF/ebpfKern/sysinternalsEBPF_common.h:34:
/usr/include/stdint.h:26:10: fatal error: 'bits/libc-header-start.h' file not found
#include <bits/libc-header-start.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
[ 21%] Packing sysmonEBPFkern4.15.o into sysmonEBPFkern4.15.o.o
[ 22%] Building EBPF object sysmonEBPFkern4.16.o
In file included from /root/SysmonForLinux/ebpfKern/sysmonEBPFkern4.16.c:36:
In file included from /root/SysmonForLinux/ebpfKern/sysmonGenericEntry_tp.c:35:
In file included from /root/SysmonForLinux/ebpfKern/sysmonEBPF_common.h:34:
In file included from /opt/sysinternalsEBPF/ebpfKern/sysinternalsEBPF_common.h:34:
/usr/include/stdint.h:26:10: fatal error: 'bits/libc-header-start.h' file not found
#include <bits/libc-header-start.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
[ 23%] Packing sysmonEBPFkern4.16.o into sysmonEBPFkern4.16.o.o
[ 24%] Building EBPF object sysmonEBPFkern4.17-5.1.o
In file included from /root/SysmonForLinux/ebpfKern/sysmonEBPFkern4.17-5.1.c:36:
In file included from /root/SysmonForLinux/ebpfKern/sysmonGenericEntry_rawtp.c:31:
In file included from /root/SysmonForLinux/ebpfKern/sysmonEBPF_common.h:34:
In file included from /opt/sysinternalsEBPF/ebpfKern/sysinternalsEBPF_common.h:34:
/usr/include/stdint.h:26:10: fatal error: 'bits/libc-header-start.h' file not found
#include <bits/libc-header-start.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
[ 25%] Packing sysmonEBPFkern4.17-5.1.o into sysmonEBPFkern4.17-5.1.o.o
[ 26%] Building EBPF object sysmonEBPFkern5.2.o
In file included from /root/SysmonForLinux/ebpfKern/sysmonEBPFkern5.2.c:35:
In file included from /root/SysmonForLinux/ebpfKern/sysmonGenericEntry_rawtp.c:31:
In file included from /root/SysmonForLinux/ebpfKern/sysmonEBPF_common.h:34:
In file included from /opt/sysinternalsEBPF/ebpfKern/sysinternalsEBPF_common.h:34:
/usr/include/stdint.h:26:10: fatal error: 'bits/libc-header-start.h' file not found
#include <bits/libc-header-start.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
[ 27%] Packing sysmonEBPFkern5.2.o into sysmonEBPFkern5.2.o.o
[ 29%] Building EBPF object sysmonEBPFkern5.3-5.5.o
In file included from /root/SysmonForLinux/ebpfKern/sysmonEBPFkern5.3-5.5.c:33:
In file included from /root/SysmonForLinux/ebpfKern/sysmonGenericEntry_rawtp.c:31:
In file included from /root/SysmonForLinux/ebpfKern/sysmonEBPF_common.h:34:
In file included from /opt/sysinternalsEBPF/ebpfKern/sysinternalsEBPF_common.h:34:
/usr/include/stdint.h:26:10: fatal error: 'bits/libc-header-start.h' file not found
#include <bits/libc-header-start.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
[ 30%] Packing sysmonEBPFkern5.3-5.5.o into sysmonEBPFkern5.3-5.5.o.o
[ 31%] Building EBPF object sysmonEBPFkern5.6-.o
In file included from /root/SysmonForLinux/ebpfKern/sysmonEBPFkern5.6-.c:33:
In file included from /root/SysmonForLinux/ebpfKern/sysmonGenericEntry_rawtp.c:31:
In file included from /root/SysmonForLinux/ebpfKern/sysmonEBPF_common.h:34:
In file included from /opt/sysinternalsEBPF/ebpfKern/sysinternalsEBPF_common.h:34:
/usr/include/stdint.h:26:10: fatal error: 'bits/libc-header-start.h' file not found
#include <bits/libc-header-start.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
[ 32%] Packing sysmonEBPFkern5.6-.o into sysmonEBPFkern5.6-.o.o
[ 33%] Packing sysmonLogView into sysmonLogView.o
[ 34%] Copying sysmon.d
[ 35%] Packing sysmon.d into sysmon.d.o
[ 36%] Copying sysmon.service
[ 37%] Packing sysmon.service into sysmon.service.o
[ 38%] Checking sysmonEBPFkern4.15.o

eBPF Program Sizes: (max 4096)

[ 39%] Checking sysmonEBPFkern4.16.o

eBPF Program Sizes: (max 4096)

[ 40%] Checking sysmonEBPFkern4.17-5.1.o

eBPF Program Sizes: (max 4096)

[ 41%] Checking sysmonEBPFkern5.2.o

eBPF Program Sizes: (max 32768)

[ 43%] Checking sysmonEBPFkern5.3-5.5.o

eBPF Program Sizes: (max 32768)

[ 44%] Checking sysmonEBPFkern5.6-.o

eBPF Program Sizes: (max 32768)

Scanning dependencies of target sysmon
[ 45%] Building C object CMakeFiles/sysmon.dir/sysmonforlinux.c.o
/root/SysmonForLinux/sysmonforlinux.c:100:6: error: ‘__NR_creat’ undeclared here (not in a function)
  100 |     {__NR_creat, "sysmon/FileCreate/exit"},
      |      ^~~~~~~~~~
/root/SysmonForLinux/sysmonforlinux.c:101:6: error: ‘__NR_open’ undeclared here (not in a function)
  101 |     {__NR_open, "sysmon/FileOpen/exit"},
      |      ^~~~~~~~~
/root/SysmonForLinux/sysmonforlinux.c:103:6: error: ‘__NR_unlink’ undeclared here (not in a function)
  103 |     {__NR_unlink, "sysmon/FileDelete/exit"},
      |      ^~~~~~~~~~~
make[2]: *** [CMakeFiles/sysmon.dir/build.make:520: CMakeFiles/sysmon.dir/sysmonforlinux.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:252: CMakeFiles/sysmon.dir/all] Error 2
make: *** [Makefile:103: all] Error 2

Sysmon is only supported on x64 currently.


Clearing cache

Is there a way to clear all cached data? Say f.e. when a user signs out I feel more comfortable when all data gets cleared.
Any recommendations?

This is something we also need mainly for unit testing. We need to be able to clear the cache beforeEach test.

Hey guys! Any plans to implement this?
We've ran into the issue when

user1 loads some data
user1 logs out
user2 logs in
user2 gets data from user1 until revalidation happens

PRs are welcomed

@mv-go would strongly consider keying off your user-id if sessions/cache calls are shared among browser sessions. You could achieve this by wrapping your useSwrv hook calls into a wrapper function that prefixes the user id keys, something like: https://github.com/Kong/swrv/issues/91#issuecomment-768200933. Would be cool to grab the cache to clear it like swr does: https://swr.vercel.app/docs/advanced/cache#access-to-the-cache


refactor: Make interfaces prefixed with I

I have an issue when I need to use interface of Binding, but there is no way to import it
Class and interface have the same name:
export interface Binding

export const Binding = makeBindingClass<BindingConstructor<Binding>>({ schema })

@XBeg9 thank you for creating this PR. Since this is a breaking change, we will discuss it internally and decide whether we should merge it or not. Until this PR is merged, however, I suggest you use your fork, instead of the library itself.

@maticzav Sounds good! Thanks

Thank you for reporting.
In the last few months, since the transition of many libraries under The Guild's leadership, We've reviewed and released many improvements and versions to graphql-cli, graphql-config and graphql-import.
We've reviewed graphql-binding, had many meetings with current users and engaged the community also through the roadmap issue.
What we've found is that the new GraphQL Mesh library is covering not only all the current capabilities of GraphQL Binding, but also the future ideas that were introduced in the original GraphQL Binding blog post and haven't come to life yet.
And the best thing - GraphQL Mesh gives you all those capabilities, even if your source is not a GraphQL service at all!
it can be GraphQL, OpenAPI/Swagger, gRPC, SQL or any other source!
And of course you can even merge all those sources into a single SDK.
Just like GraphQL Binding, you get a fully typed SDK (thanks to the protocols SDKs and the GraphQL Code Generator), but from any source, and that SDK can run anywhere, as a connector or as a full blown gateway.
And you can share your own "Mesh Modules" (which you would probably call "your own binding") and our community already created many of those!
Also, we decided to simply expose regular GraphQL, so you can choose how to consume it using all the awesome fluent client SDKs out there.
If you think that we've missed anything from GraphQL Binding that is not supported in a better way in GraphQL Mesh, please let us know!


Proxy not ready, retrying infinitely

What was expected?
I was expecting that the hot reload would work as stated in the docs, and it does, but the page has no JS injected in it nor does the browser reload when an update is made to the .templ file. I still have to manually reload the page.
Code
Templ
package views

templ Index() {
<body>Test</body>
}

Server
s.Port: ":8080"
s.Mux.Handle("GET /", templ.Handler(views.Index()))

if err := http.ListenAndServe("<IP_ADDRESS>" + s.Port, s.Mux); err != nil {
  panic(err)
}

I'm not using anything fancy, only the Go stdlib.
Command executed
templ generate -v -watch -proxy="https://<IP_ADDRESS>:8080" -cmd="go run cmd/api/main.go"

Logs
(!) templ version check: generator v0.2.747 is newer than templ version v0.2.731 found in go.mod file, consider running `go get -u github.com/a-h/templ` to upgrade
(✓) Starting post-generation handler
(✓) Walking directory [ path=... devMode=true ]
(✓) Starting event handler
(✓) Processing file [ file=... ]
(✓) Generated code [ file=... in=900.242µs ]
(✓) Waiting for context to be cancelled to stop watching files
(✓) Executing command [ command=go run cmd/api/main.go ]
(✓) First post-generation event received, starting proxy
(✓) Sending reload event
(✓) Waiting for proxy to be ready [ url=http://<IP_ADDRESS>:7331 ]
(✓) Proxying [ from=http://<IP_ADDRESS>:7331 to=https://<IP_ADDRESS>:8080 ]
{"time":"2024-07-10T11:43:39.387484379-04:00","level":"INFO","msg":"Server starting...","porta":":8080"}
(✓) Proxy not ready, retrying [ url=http://<IP_ADDRESS>:7331 backoff=580.973353ms ]
(✓) Proxy not ready, retrying [ url=http://<IP_ADDRESS>:7331 backoff=654.454401ms ]
(✓) Proxy not ready, retrying [ url=http://<IP_ADDRESS>:7331 backoff=686.458124ms ]
(✓) Proxy not ready, retrying [ url=http://<IP_ADDRESS>:7331 backoff=1.223573845s ]
(✓) Proxy not ready, retrying [ url=http://<IP_ADDRESS>:7331 backoff=3.340227396s ]
(✓) Proxy not ready, retrying [ url=http://<IP_ADDRESS>:7331 backoff=2.121858839s ]
(✓) Proxy not ready, retrying [ url=http://<IP_ADDRESS>:7331 backoff=5.623952829s ]
(✓) Proxy not ready, retrying [ url=http://<IP_ADDRESS>:7331 backoff=8.158013949s ]
(✓) Proxy not ready, retrying [ url=http://<IP_ADDRESS>:7331 backoff=6.414629462s ]
(✓) Proxy not ready, retrying [ url=http://<IP_ADDRESS>:7331 backoff=16.634991338s ]
(✓) Proxy not ready, retrying [ url=http://<IP_ADDRESS>:7331 backoff=39.028376777s ]

In the proxy argument it seems you are using https is that intentional?
Does this work: templ generate -v -watch -proxy="http://<IP_ADDRESS>:8080" -cmd="go run cmd/api/main.go"

That was it. Thanks for helping me out, such a silly mistake 🥲.


Roadmap

Docs

[ ] Document design patterns (react, units, areas)
[ ] Document code styles
[ ] Document code deliver mangement or platform mangement (github pull requests or time schedule)
[ ] Include guidelines about: task management, code base platform use, modules support, ...
[ ] Include roadmaps: about proficiency (junior, middle, senior), modules support, ...

Configs

[x] Docker
[x] Editor configs for IDEs (vscode, idea, etc.)
[ ] Debug configs for IDEs (vscode, idea, etc.)
[ ] Useful extensions for IDEs (vscode, idea, etc.)
[ ] Useful snippets for IDEs (vscode, idea, etc.)
[ ] GitHub (issue templates, workflows, ...)
[ ] GitLab CI
[x] EsLint
[x] TSConfig

Package.json

[ ] Add conditional (.env) gzip for building

Imports and Exports (across project)

[ ] Have good fences on auto importing from certain areas
[ ] ...

Development

[ ] ... Tools ...
[ ] API swagger auto export and sync
[ ] Lack of env variables warnings

Components

[ ] Have basic ui components included
[ ] Have a ui components viewer or ui show off to see, text and get experience

Independency and adaptation

[ ] Be independent from any external API, such as Django, Laravel or other
[ ] Have support for any (or most) APIs
[ ] Have API support for swagger (i.e. to make it easy to export endpoints)

Accessibility

Have accessible, at least, base components
Have a CI for accessibility check up

PWA

[ ] Add solid support for PWA
[ ] Avoid pit fails

By groups
CIs

[ ] #44
[ ] Lighthouse performance

GZIP
https://stackoverflow.com/questions/55704772/how-to-compress-build-with-without-ejecting-create-react-app-also-include-compr
https://stackoverflow.com/questions/18766678/running-npm-scripts-conditionally


Integrators refactoring

We currently advise users to use RungeKuttaVariableStepSizeIntegrator with a tolerance of inf if they wish to use high-order RK methods with a fixed step. Doing so, the RungeKuttaVariableStepSizeIntegrator still tries to compute the optimum step size.
I suggest two improvements.
First (and the easiest) is to detect when the tolerance is inf in RungeKuttaVariableStepSizeIntegrator, and to simply return the minimum step size in this case in the computeNextStepSizeAndValidateResult and computeNewStepSize. This would bypass useless computations (and avoid potential error if the step size computation goes to infinite values, see issue #77 for instance).
Second, we could add a new RungeKuttaIntegrator that, does fixed-step integrations, much like the RungeKutta4Integrator. The user would then only have to specify the initial epoch, the coefficient set, and the step size. In this setup, we could actually remove the RungeKutta4Integrator, as the user could now use the new RungeKuttaIntegrator and specify the coefficient set for this to become RK4. But removing RungeKutta4Integrator would break backward compatibility (we can simply remove it from the doc and/or the Python exposition).
@DominicDirkx also mentioned another improvement to make variable step size computation more efficient:
I propose adding new integrator options, where instead of evaluating all stages of (for instance) the RKF7(8), we evaluate only the stages needed for the 7th or 8th order one.

Update: the first thing to be implemented in this integrator refactoring is to make the fixed-step Euler and RK4 integrators use a new more general fixed-step integrator with Butcher tableau as input (#81).

The next step in this refactoring, after the new fixed-step integrator is implemented, could be the custom-step integrator described in #87.

Details on what is to be done to refactor the variable step size integrator (especially step size control) is given in #92.

All remaining tasks are tracked in other issues, closing this one


Windows Client invokes unexpected reboot.

Keybase GUI Version: 1.0.16-20160713110836+a1c00b3
Here is a copy of the Windows Logs / System:
The process C:\Users\MYUSER\AppData\Local\Temp{F36C4DE3-13A8-4897-B12D-59749802E2C9}.cr\DokanSetup_redist.exe (MYPCDOMAINNAME) has initiated the restart of computer MYPCDOMAINNAME on behalf of user MYPCDOMAINNAME\MYUSER for the following reason: Application: Installation (Planned)
Reason Code: 0x80040002
Shut-down Type: restart
Comment:
This caused my computer to random reboot. Maybe its due to the fact that I was typing while the program installed and the popup dialog that asked if its ok to reboot must have gotten activated? I presume there was meant to be a popup. However I suggest you don't "focus" the "control" that is the "yes" button. Other than that don't focus the form is another option.

@zanderz this is for you?

We have a known issue with these reboots caused by the Visual C++ Runtime Redistributable package which has been addressed in an upcoming update. On the plus side, this particular reboot won't happen to you again until our dependency changes to another runtime.  Sorry about that!

Yes I was not sure if it was due to focused controls or the program simply just reboots no matter what. I did not have time to fire up a VM and test the installer again to check. However you have confirmed my original guess. Ok well its good you know about the issue. It's not good since I nearly lost some data. Luckily I had a auto save. Thanks for taking note of the issue. I think this should stay open until its resolved properly.

I also had a forced reboot due to this issue and almost lost some work.
So you've added /norestart to the runtime redist installation in an upcoming update so it wont force restart?

The approach is to not run the runtime redist package silently, so that its reboot prompt gets shown to the user.  Available in an upcoming release, such as https://prerelease.keybase.io/windows/Keybase_1.0.17-20160820134520%2B9aefaa4.386.exe if you'd like to try it now.

I'm having the exact same problem and it has resulted in me uninstalling the keybase client.
Yesterday I installed the latest version but did not want to restart yet.
It should be my decision when to restart and it should never be forced by the client. If a forced restart is required then this should be made clear when the install client is run.

@osvaldsson thanks for your feedback, are you saying that you did get an unexpected reboot with the most recent version (linked directly above?)

@maxtaco nope, I'm using the latest released version, trying to avoid the reboot still.
I'll do a reboot now, install that version and see how it goes as I have some minutes to spare.

Probably totally unrelated but I had 8 separate install dialogs on my desktop when logged in this morning even after installing the update yesterday.

@maxtaco I'll have to correct myself as when I tried to install the prerelease version listed above I get an error:
Error 0x80070666: Cannot install a product when a newer version is installed.

cc: @zanderz

If someone has experienced a sudden reboot with no dialog box requesting it, I would be interested to see the installer bundle logs from the time in question, located at %temp%\Keybase*.log. We've seen that the visual studio runtime redistributable is the culprit, so we made it not invisible, and if it's something else we need to know.

I just got an unprompted reboot after accepting an update.  "keybase version" says I'm now on 1.0.17-20160822152935+692af12, so I presume this should have been after the fix.
I've attached the %TEMP%\Keybase*.log files (and keybaseInstallLayout*) that I had with a modified date of today: keybase_update_logs_joshpj_2016-08-25.zip

I'm sorry but there is a high number of logs in that directory and none seem to point out anything obvious to me but I can't upload them here without reading through them all to check for sensitive data.
I'll remove those that are there now and will upload if it happens again.

Since this thread was started, another unprompted reboot cause has been identified: When an update arrives which requires reboot, if you leave the "automatically update" checkbox checked, begin the update, then delay rebooting for at least an hour, an unprompted reboot may occur when the updater process does its check. A forthcoming update will address this, then next time drivers are updated, there should be no more unprompted reboots.

I'm no longer experiencing random restart requests, now I just get a random "Modify Setup" window as stated in #4186

I experienced this today, so it seems that this bug is still extant. Didn't see anything saying it required a reboot. Clicked "update" (leaving automatically update checked), went about my business, sudden reboot without a prompt about 3 minutes later.
keybase_logs_20170219_dyfrgi.zip
Should I expect this to happen on automatic updates as well?

No, this should never happen, sorry and thanks for the report.

https://keybase.atlassian.net/browse/CORE-4630

This may have happened to me today.
Today I was prompted to update Keybase client. I clicked ok. When it finished, it wanted to reboot. I said later because I had some work open. Hours later, I left the computer for ~30 min and came back to a rebooted machine and having lost some work. 😢
This may have been Windows 10 installing an update. However, Windows has been pretty good about warning about impending reboots recently.

@cinderblock Can you do a 'keybase log send' so we can see the installer logs? They should show whether our installer caused a reboot.

@zanderz Log id: 91e86ab5d185db6abb27441c


Prepare to cut 0.2.1

@paetling

did this in my own.  realized it after that you had sent me a pr.