iOS Screenshots for Version: 2.3.0

iOS Screenshots for Version: 2.3.0

obsolete with https://github.com/corona-warn-app/cwa-website/tree/svengabr/screenshot-archive

@dsarkar Could you maybe explain what purpose the screenshot archive has? And why it makes this PR obsolete?
Thank you!

@Ein-Tim It will show from now on past screenshot versions. starting with 2.2

Okay thanks, and why is this PR obsolete then?

Obsolete because of: https://github.com/corona-warn-app/cwa-website/commit/90ea0c6988b11ccf26e37ae477b0d0f6a15c0a69


Improved logic of directory mode in warn plugin

As we discussed:

[warn] plugin -> is simply processing separate files
[warn] plugin + DIRECTORY flag -> run ONLY on this directory. Plugin uses from one single file with all warnings (no inline warnings). It will make the logic less complex. In this mode (with directory flag) we will ignore other nested save.toml files and detect tests from the file with expected warnings.

We need to create a logic on save-cloud for it also...
Originally posted by @akuleshov7 in https://github.com/saveourtool/save-cli/issues/402#issuecomment-1165571071

Another related comment from that thread: https://github.com/saveourtool/save-cli/issues/402#issuecomment-1164620902.
And one more suggestion - we discussed that we should extract test discovering logic into an interface with several implementations: match by suffix (default behavior of warn plugin), match a pair of files by suffix (fix plugin) and match all files in a directory (new logic). However, then we decided to remove discovering in directory mode and rely only on a file with a list of expected tests. Nevertheless, extracting logic is almost always a good idea :)


Issues with body parser.

Considering the following setup:
  app.use(
    helmet(),
    (req, res, next) => {
      console.log(req.headers);
      if (req.header('Content-Type')?.toLowerCase() != 'application/json')
        return res
          .status(415)
          .json({ status: false, message: 'Unsupported Media Type' });

      next();
    },
    express.json({ limit: '10b' }),
    //@ts-expect-error
    (error, req: express.Request, res: express.Response, next) => {
      console.log(res.destroyed);
      console.error('Failed parsing body', error);
      res.status(400).json({ status: false, message: 'Invalid body provided' });
    }
  )

This snippet works as intended when the Content-Length header matches the Length of the actual body. However if the client gives false data, express acts with weird behavior.

[x] When the Content-Length is shorter than the body size, res.status(400).json({ status: false, message: 'Invalid body provided' }) Only returns an empty body and a 400 status.

Even when Content-Length is not equal to zero, the same behavior happens

And obviously the middle-ware is actually executed and i indeed receive logs of 'Failed parsing body',

[x] When the Content-Length is bigger than the body size, express appears to await forever and never closes the request.

This problem have been fixed by using the following snippet
req.setTimeout(1000 * 60, () => {
        if (res.headersSent) return;
        console.log('Request timed out');
        res
          .status(408)
          .json({
            status: false,
            message: 'Request timeout'
          })
          .end();
      });

Note that i added if (res.headersSent) return; Because this is triggered twice for some reason.

Yes, these behaviors are expected. It is how any body reading module would work, as the content-lenght header is actually part of the framing in http. When you make it longer than the body, Node.js (the http module from Node.js is what controls this) will never emit the 'end' event, instead it will wait until the server timeout that is set to receive the nody. When you make it shorter, extra bytes are recieved after the http body, which is a framing error and Node.js itself will close the http conecton (which is why you never can send a response); the response sent is what is defined on your http server (outside of express).

As for why your callback to req.setTimeout is involed twice for the same request, that is strange. That API is direct to Node.js and the core code, which is what triggers your callback. It may be a bug in Node.js, as I don't think it is expected to be called multiple times.


Recommended way to suppress stack frames not in my own code

Hello, I have an issue where my stack traces include a lot of stack frames that are not in my own code.  E.g., if in my code I call a std::function then it jumps through a bunch of stack frames in std::function that I am not interested in before landing back in my own code base.
What is the recommended way to suppress those?

I think you could filter the stackframe as you print it. Look at the
printer code in backward.hpp for how to print traces. You could modify it
to your need (or copy pieces or it, whatever the easiest).
As you loop over the traces you could ignore the one that have a filename
and/or function that you do not care about.
On Sun, 7 Jun 2020, 09:00 David P. Sicilia<EMAIL_ADDRESS>wrote:

Hello, I have an issue where my stack traces include a lot of stack frames
that are not in my own code. E.g., if in my code I call a std::function
then it jumps through a bunch of stack frames in std::function that I am
not interested in before landing back in my own code base.
What is the recommended way to suppress those?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/bombela/backward-cpp/issues/175, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABUZDCZFSZOHA2NUTHB6ZLRVO2SRANCNFSM4NXL2E3A
.

Ok thanks


Error building PHP Version: 8.3.3 with sap nw rfc 7.5 patch 12

PHP version: 8.3.3
SAP NW RFC version: 7.5 patch 12 (the latest patch, SAP doesn't provide old versions of patch)
When i execute the nmake command to build the extension, the following errors appear:
rfc_parameters.obj : error LNK2001: unresolved external symbol RfcSetInt8
rfc_parameters.obj : error LNK2001: unresolved external symbol RfcGetInt8
C:\PHP\php-sdk\phpdev\vs16\x64\php-8.3.3-src\x64\Release\php_sapnwrfc.dll : fatal error LNK1120: 2 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\link.exe"' : return code '0x460'
Stop.

Are you sure the SDK is in the path?


expose addApplicationDelegate for macOS

addApplicationDelegate is available in iOS framework, but it is missing in macOS

This isn't there only because it hasn't been wired up. This should be a fairly straightforward change if someone wants to add it soon (there's a lot of higher-priority work for desktop at the moment, so I'm not sure when we'll get to this).

 I am a bit scared of hacking this into the engine but will do with some guidance from @stuartmorgan unless there is someone else already working on this.

I was a bit quick, firebase_messaging would also need lifecycle delegation.

@cbenhagen no, never had a chance and left the AppDelegate code up to plugin users to add

@cbenhagen What guidance are you looking for specifically? The macOS plugin API is heavily modeled on the iOS API (including sharing a non-trivial amount of it directly), so there's an existing example to work from.

This is the last puzzle piece needed to finish the firebase_messaging plugin for macOS

A note that on iOS that here's related issue I raised a while back that got resolved to allow the multiple plugins to receive UNUserNotificationCenterDelegate calls. Similar work could be done on macOS and I believe it's also missing as well. Let me know if I should file a separate issue on this

Small addition to this one, publish is also missing on MacOS implementation of FlutterPluginRegistrar, e.g. [registrar publish:pluginInstance];, without this detachFromEngineForRegistrar: is supposedly not called unless the plugin instance has been published.
iOS implementation of publish: https://github.com/flutter/engine/blob/master/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h#L323-L335

@Salakar Can we change the description and title to something like "Merge FlutterPluginMacOS.h and FlutterPluginRegistrarMacOS.h with the iOS FlutterPlugin.h, sharing all but the platform-specific methods"  to match the comments in the header files?
Or should a new issue be created for this?

Merging the heaters is an implementation detail that should be largely irrelevant to anyone but people working on the engine. Wiring up application state delegation in macOS will be platform specific since the application classes aren't the same.

Oh, I thought the intention was to not only merge the headers but also the implementations where possible. But I might have overestimated how much code could be shared between the two platforms.

This issue is blocking some auth work we're doing for desktop in FlutterFire

@stuartmorgan Any update here? it blocks google sign in for macos

Any updates on this one?

Any update on this?

It's now possible (on master) to register for a subset of notifications (including core app lifecycle) via the new addApplicationDelegate: method on FlutterPluginRegistrar. The PR linked just above will also add openURLs:. I'm going to close this as fixed when that lands, but please file issues (and/or send PRs; adding new methods now that the plumbing is in place should be very straightforward) for any delegate methods that you need that aren't present yet.


Streaming example?

From the paper:

Is there an example of how this would work in practice?

The current state of the project does not officially support it.
However, that didn't stop me from having a go:
See https://github.com/thomas-xin/Encodec-Stream for more info!


8051 CJNE decompile appears wrong

I disassembled 8051 code and it appears that the CJNE decompile is incorrect.  It has been awhile since I did assembly, so maybe I made a mistake but looking at the function calls it does not look this way.

Thanks!


Add field to operator selector control element

In addition to PR #27, also adding the 'field' param to the operatorSelector on the Rule.
When providing my own operatorSelector, I wanted access to the first field so I could perform an async filter of operators against an API.
I could not achieve this by providing the 'getOperators' function as it does not allow for asynchronously retrieving the list. Given that the 'field' param is passed into 'getOperators' anyway, it seems reasonable to pass it to the controlElement as well..

Codecov Report

Merging #28 into master will increase coverage by 4.49%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #28      +/-   ##
==========================================
+ Coverage   66.37%   70.86%   +4.49%
==========================================
  Files           6        6
  Lines         113      127      +14
  Branches       13       17       +4
==========================================
+ Hits           75       90      +15
  Misses         34       34
+ Partials        4        3       -1

Impacted Files
Coverage Δ

lib/RuleGroup.jsx
100% <100%> (ø)
:white_check_mark:

lib/QueryBuilder.jsx
46.37% <100%> (+13.04%)
:white_check_mark:

lib/Rule.jsx
100% <100%> (ø)
:white_check_mark:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 760550d...dadbe1c. Read the comment docs.


chore: additional test cases for TestCalcJoinPoolShares (multi-coin swap with unequal ratios)

Closes:
Creating this PR as #1732  was closed due to merge of #1713

[x] Test: Multi-tokens In: swap unequal amounts, equal weights with 0.01 swap fee
[x] Test: Multi-tokens In: swap unequal amounts, with unequal weights with 0.03 swap fee

Brief Changelog
Testing and Verifying
This change added tests and can be verified as follows:
Adds unit test that checks shares for multi asset deposits
Documentation and Release Note

Does this pull request introduce a new feature or user-facing behavior changes? (no)
Is a relevant changelog entry added to the Unreleased section in CHANGELOG.md? (yes / no)
How is the feature or change documented? (not applicable   /   specification (x/<module>/spec/)  /  Osmosis docs repo   /   not documented)

Need someone to verify these number as they are pretty off;
 Test:           TestCalcJoinPoolShares/Multi-tokens_In:_unequal_amounts,_equal_weights_with_0.01_swap_fee
                Messages:       expectedShares:<PHONE_NUMBER>000, actualShares:<PHONE_NUMBER>293

Test:           TestCalcJoinPoolShares/Multi-tokens_In:_unequal_amounts,_with_unequal_weights_with_0.03_swap_fee
                Messages:       expectedShares:<PHONE_NUMBER>000000, actualShares:<PHONE_NUMBER>768

Changed this to draft to fix math


The add action icon is a different size on the sayings page vs action response page

Should be the same size.

Closed by https://github.com/samtecspg/articulate/commit/4896901df66582bcbae7726d33c91b2444a91e8d


rails tasks are not being found

Summary
When I run bundle exec rails -T webdrivers  no webdrivers tasks are listed.
They're not listed even if I run bundle exec rails -T -A
It works (the tasks are found) if I add these lines into the Rakefile of my Rails project:
require 'webdrivers'
load 'webdrivers/Rakefile'

I found that suggestion in this old closed issue: #160
Debug Info
I found the problem exists with 2 of the projects I'm working on; I also tested with webdrivers 5.0.0

Webdrivers version: 4.6.1, 4.7.0, 5.0.0
Ruby version:  2.6.6, 2.7.4
Operating system / CI Environment: macos 11.6
Browser and version:  n/a

Rails versions  <IP_ADDRESS>, 5.2.6
Expected Behavior
All webdrivers tasks defined in the  webdrivers gem webdrivers/lib/tasks/*.rake files should be listed.
Actual Behavior
no tasks are listed

@weedySeaDragon Can you take a look at this StackOverflow post and see if that's what you're running into? The railtie support still exists here and should be working.

Closing due to lack of response.


Form for adding new game

For this milestone, I added the form that will allow user to add a new game.

@Gardimy I suggest you pull from Dev before we can approve and merge this PR. As we discussed earlier today.


[cli_config] Support non-String map keys

YAML supports non-String map keys.
Our hierarchical key structure requires Strings as keys for maps, however it could be perfectly valid to use valueOf on the config to access a map that does not have Strings as keys.

@HosseinYousefi I've instead made these things FormatExceptions now.

Thanks @HosseinYousefi for the feedback, much nicer now! 🚀


Allow localized content to use non-localized URLs to content

Right now, links in Chinese content must be written as:
/zh/docs/foo
But in English it's just
/docs/foo
We should see if its possible to manipulate the baseURL setting in Hugo to make it so translated content can use the simpler form too.

I don't believe this is possible, so I'm closing.


Outlook

I am unable to use TextExpander in Outlook OWA WebMail. It says that there is a fix, but it's not working currently. Would someone be able to look in to it?
It's also not working in this text box that I'm typing in right now
Thanks,
Peter

It works for me in OWA WebMail in the subject line only. If the expansion is in the body, it does not expand. This has me baffled.


Scheme Fusuma is not currently configured for the build action

Hi, I've just tried to install Fusuma and I get the following error:
A shell task (/usr/bin/xcrun xcodebuild -workspace /Carthage/Checkouts/Fusuma/Fusuma.xcworkspace -scheme Fusuma -configuration Release CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES -showBuildSettings) failed with exit code 66:
xcodebuild: error: Scheme Fusuma is not currently configured for the build action.
Researching on Carthage issues (https://github.com/Carthage/Carthage/issues/896), I've found that it's an issue with the library.
I also tried to install version 0.4.0 and it works, so it's probably an issue with the latest version (0.5.1).
What should I do?

I got the same error.

+1

@rodrigoruiz @jerry-sjtu @DerkBusser Seems like the schemes are just misconfigured a bit. To fix, do the following.

open Carthage/Checkouts/Fusuma/Fusuma.xcworkspace

Product > Schemes > Manage Schemes

Disable Autocreate schemes (not sure if necessary, I'm just documenting all the steps I took)

Delete the first two schemes (Fusuma and FusumaExample)

Share the third scheme, named Fusuma. Make sure that the build target isn't missing. If it is, add it back.

carthage build --platform iOS

And that should fix it. At least, it did for me, so hopefully it helps y'all.

Alternatively, I have a branch that fixes this issue. Use
github "Shrugs/Fusuma" ~> 0.5.2

I do not commit to keeping this branch up to date (I'm planning on modifying it to be usable within a UINavigationController), so please only use this as a stop gap solution.

fixed in #76.


All files for Ancestry.com Case Study

Adding HTML, CSS, images, and update index file for the Ancestry.com case study.

This change is

/assign @steveperry-53 @chenopis

/unassign

@steveperry-53 @janetkuo Is it possible to take a look at this today?

Yes, I'll take a look today.
On Jul 24, 2017 9:37 AM, "Kaitlyn Barnard"<EMAIL_ADDRESS>wrote:

@steveperry-53 https://github.com/steveperry-53 @janetkuo
https://github.com/janetkuo Is it possible to take a look at this today?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes/kubernetes.github.io/pull/4412#issuecomment-317480258,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ANJ2Dqn7eLuSVFUDydL28zFjiS-eLLKgks5sRMhUgaJpZM4OdbYZ
.

@kbarnard10, Added one comment about css path. I think you need to add /css/.

@steveperry-53 Took a look at all your comments and made the suggested copy edits.

@kbarnard10, LGTM. Let me know when you're ready for me to merge this.

@steveperry-53 Ready when you are!

@kbarnard10, Can you update your branch?


Sentiment Classification Model

Given a statement classify it as positive sentiment or negative sentiment. I am working on it.

Model added with web demo, notebook and dataset.


Updated README.md

Some things could be improved.

What exactly @Devansh-Singh-Parmar ? Yes we may need to add shields as well


make the gateway optional when forcing static network config on the kernel command line with bootset

Hi!
Partly related to enhancement request #720.
I need to force the network config statically on the kernel command line with the following command:
bootset -n MY_SERVER -b osdeploy --force network

But the network used for OS installation has no gateway:

the OS gets installed through an interface on a closed network (internal to the cluster)
the server will be connected to a DMZ through another network interface (that's where the default gateway will be)

It'd be nice if we could force a static network config on the kernel command for OS installation purposes (bootset --force network) without being forced to define a (dummy) gateway on the installation network.
Thanks!

Dear @sla31
Yes, I understand, it also make sens.
I will fix that at the same time than the other issue reported 🙂


Negative player position

Description

I don't know why I'm getting a negative player position, it's not a problem of the library I'm using because it doesn't touch any of that value, lavalink is giving it like that, I don't understand why.

Version info
Client used:  @skyra/audio
Output of java -version:
openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment (build 11.0.12+7-post-Debian-2deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.12+7-post-Debian-2deb10u1, mixed mode, sharing)

:/home/container$ bash start.sh
2022-03-16 02:12:10.237  INFO 30 --- [           main] lavalink.server.Launcher                 :

       .   _                  _ _       _    __ _ _
      /\\ | | __ ___   ____ _| (_)_ __ | | __\ \ \ \
     ( ( )| |/ _` \ \ / / _` | | | '_ \| |/ / \ \ \ \
      \\/ | | (_| |\ V / (_| | | | | | |   <   ) ) ) )
       '  |_|\__,_| \_/ \__,_|_|_|_| |_|_|\_\ / / / /
    =========================================/_/_/_/

        Version:        eec629def799086d30e7df25f03c398d64357783-SNAPSHOT
        Build:          1342
        Build time:     22.02.2022 11:17:22 UTC
        Branch          master
        Commit:         eec629d
        Commit time:    22.02.2022 11:14:41 UTC
        JVM:            17.0.2
        Lavaplayer      1.3.96-original

2022-03-16 02:12:10.336  INFO 30 --- [           main] lavalink.server.Launcher                 : Starting Launcher on 264be74b-da66-40fe-bec6-5646901150df with PID 30 (/home/container/app.jar started by ? in /home/container)
2022-03-16 02:12:10.337  INFO 30 --- [           main] lavalink.server.Launcher                 : No active profile set, falling back to default profiles: default
2022-03-16 02:12:10.510  WARN 30 --- [kground-preinit] o.s.h.c.j.Jackson2ObjectMapperBuilder    : For Jackson Kotlin classes support please add "com.fasterxml.jackson.module:jackson-module-kotlin" to the classpath
2022-03-16 02:12:11.668  WARN 30 --- [           main] io.undertow.websockets.jsr               : UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used
2022-03-16 02:12:11.692  INFO 30 --- [           main] io.undertow.servlet                      : Initializing Spring embedded WebApplicationContext
2022-03-16 02:12:11.693  INFO 30 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1303 ms
2022-03-16 02:12:11.811  INFO 30 --- [           main] l.server.metrics.PrometheusMetrics       : Prometheus metrics set up
2022-03-16 02:12:12.082  WARN 30 --- [           main] l.server.config.SentryConfiguration      : Turning off sentry
2022-03-16 02:12:12.380  INFO 30 --- [           main] c.s.d.l.tools.GarbageCollectionMonitor   : GC monitoring enabled, reporting results every 2 minutes.
2022-03-16 02:12:12.559  INFO 30 --- [           main] lavalink.server.config.KoeConfiguration  : OS: Linux, Arch: amd64
2022-03-16 02:12:12.560  INFO 30 --- [           main] lavalink.server.config.KoeConfiguration  : Enabling JDA-NAS
2022-03-16 02:12:12.563  INFO 30 --- [           main] c.s.l.c.natives.NativeLibraryLoader      : Native library udpqueue: loading with filter null
2022-03-16 02:12:12.567  INFO 30 --- [           main] c.s.l.c.natives.NativeLibraryLoader      : Native library udpqueue: successfully loaded.
2022-03-16 02:12:12.837  INFO 30 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2022-03-16 02:12:13.201  INFO 30 --- [           main] org.xnio                                 : XNIO version 3.3.8.Final
2022-03-16 02:12:13.226  INFO 30 --- [           main] org.xnio.nio                             : XNIO NIO Implementation Version 3.3.8.Final
2022-03-16 02:12:13.302  INFO 30 --- [           main] o.s.b.w.e.u.UndertowServletWebServer     : Undertow started on port(s) 1230 (http) with context path ''
2022-03-16 02:12:13.306  INFO 30 --- [           main] lavalink.server.Launcher                 : Started Launcher in 3.543 seconds (JVM running for 4.055)
2022-03-16 02:12:13.308  INFO 30 --- [           main] lavalink.server.Launcher                 : You can safely ignore the big red warning about illegal reflection. See https://github.com/freyacodes/Lavalink/issues/295
2022-03-16 02:12:15.482  INFO 30 --- [  XNIO-1 task-1] io.undertow.servlet                      : Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-03-16 02:12:15.483  INFO 30 --- [  XNIO-1 task-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2022-03-16 02:12:15.489  INFO 30 --- [  XNIO-1 task-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 6 ms
2022-03-16 02:12:15.509  INFO 30 --- [  XNIO-1 task-1] l.server.io.HandshakeInterceptorImpl     : Incoming connection from /x:49214
2022-03-16 02:12:15.576  INFO 30 --- [  XNIO-1 task-1] lavalink.server.io.SocketServer          : Connection successfully established from @skyra/audio
2022-03-16 02:12:15.637  INFO 30 --- [   XNIO-1 I/O-2] lavalink.server.io.SocketServer          : {"op":"configureResuming","key":null,"timeout":60}
2022-03-16 02:12:45.886  INFO 30 --- [   XNIO-1 I/O-2] lavalink.server.io.SocketServer          : Connection closed from /x:49214 -- CloseStatus[code=1006, reason=]
2022-03-16 02:12:45.886  INFO 30 --- [   XNIO-1 I/O-2] lavalink.server.io.SocketContext         : Shutting down 0 playing players.
2022-03-16 02:12:58.588  INFO 30 --- [  XNIO-1 task-2] l.server.io.HandshakeInterceptorImpl     : Incoming connection from /x:17863
2022-03-16 02:12:58.594  INFO 30 --- [  XNIO-1 task-2] lavalink.server.io.SocketServer          : Connection successfully established from @skyra/audio
2022-03-16 02:12:58.765  INFO 30 --- [   XNIO-1 I/O-3] lavalink.server.io.SocketServer          : {"op":"configureResuming","key":null,"timeout":60}
2022-03-16 02:13:12.820  INFO 30 --- [  XNIO-1 task-3] l.server.player.AudioLoaderRestHandler   : Got request to load for identifier "https://www.youtube.com/watch?v=Ix-Y4jv7yvM"
2022-03-16 02:13:13.770  INFO 30 --- [ader-2-thread-1] lavalink.server.player.AudioLoader       : Loaded track Ayasa - The reason why
2022-03-16 02:13:13.929  INFO 30 --- [  XNIO-1 task-5] l.server.player.AudioLoaderRestHandler   : GET /decodetrack
2022-03-16 02:13:14.017  INFO 30 --- [   XNIO-1 I/O-3] lavalink.server.io.SocketServer          : {"op":"play","guildId":"x","track":"QAAAdQIAFkF5YXNhIC0gVGhlIHJlYXNvbiB3aHkABURhekw2AAAAAAAEcLgAC0l4LVk0anY3eXZNAAEAK2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9SXgtWTRqdjd5dk0AB3lvdXR1YmUAAAAAAAAAAA=="}
2022-03-16 02:13:14.325  INFO 30 --- [   XNIO-1 I/O-3] lavalink.server.io.SocketServer          : {"op":"voiceUpdate","guildId":"x","event":{"token":"x","guild_id":"x","endpoint":"atlanta2585.discord.media:443"},"sessionId":"x"}

Your library does in fact modify the value.
It uses the received position from Lavalink along with an offset. Usually the time difference between current_time and when the last update was received.
This might suggest that, somehow, the time has become desynced between your client and Lavalink.

 It looks like your server is a couple minutes behind. Ideally this is automatically updated by your OS.
Please reopen this if you are certain that Lavalink is doing something wrong


Proper source map support for development mode

Hello. In order to speed up our development process, we have build a custom solution for the hypernova server which can load Javascript bundles over HTTP. With that, we can spin up a webpack dev server and reload the compiled bundle each time the source files change. That has been working wonders for the time being and we are really happy that we don't have to compile the files over and over again.
In order to make development even better, we wanted to add source map support for the generated stack traces. Our current implementation is the following.

Client asks for component Foo
We load the code for component Foo over the webpack dev server
We evaluate its code with vm.runInNewContext and we catch any errors generated
Should we catch any error, we load the source map file and we feed it into a sourceMapConsumer from Mozilla's source-map.
We then map all the stack trace elements into new ones by querying the consumer.
Finally we throw the modified error.

Code would look something like this
let scriptContent;
  try {
    const response = await axios.get(url);
    scriptContent = response.data;
  } catch (e) {
    console.error('Error while getting remote file');
    console.error(e);
    throw e;
  }
  let module = require('module');

  const wrappedCode = module.wrap(scriptContent);
  const moduleRunner = vm.runInNewContext(wrappedCode, createContext(), {
    displayErrors: true,
    filename: 'ssr.node.js'
  });

  const { data } = await axios.get(`${url}.map`)
  const sourceMapConsumer = await new sourceMap.SourceMapConsumer(data);

  return () => {
    const modExports = {};
    const modContext = {};

    try {
      moduleRunner(modExports, require, modContext, __filename, __dirname);
    } catch(error) {
      // Get the trace lines
      const trace = error.stack.split("\n").slice(1).map(l => l.trim());
      const originalStackTrace = sourceMappedStackTrace(trace, sourceMapConsumer);
      // Map them to the original files
      // Construct the new stack trace
      const newTrace = originalStackTrace.map((orig, index) => {
        if(orig.source === null || orig.line === null || orig.column === null) {
          // Something that we don't have a mapping for. Leave the original
          return `    ${trace[index]}`;
        }
        let base = '    at ';
        if(orig.name) {
          base += `${orig.name} `;
        }
        base += `${orig.source}:${orig.line}:${orig.column}`;
        return base;
      })
      .filter(e => e !== null)

      // Throw the modified error
      throw new Error(error.stack.split('\n')[0] + '\n' + newTrace.join('\n'))
    }
    return modContext.exports;

Although this works great for the time being, we wanted to catch "runtime" errors as well. That is, errors  generated when (e.g. ReactDOM.renderToString runs). To my understanding, there is no way to manipulate such errors from BatchManager.render as the exceptions are caught and modified there.
We could submit a patch upstream to enable custom error handling if there is no other elegant way of manipulating error traces.

Problem is, the bundle will never reach the browser:
--> Browser requests page (e.g. /home)
--> Hypernova Ruby Client (needs to partially render a div with hypernova, so it requests hypernova for a render)
--> Hypernova (tries to render the component and gets and error, so it returns the error)
--> Hypernova Ruby Client (renders the error generated from nova)
-->  Browser renders the HTML page generated
Indeed we have source map generated (with webpack)

Gotcha - and in this case, the client render doesn’t take over?

If by take over, you mean handling the stack trace the answer is no. The Ruby Client knows nothing of the original javascript bundle that the error came from. The idea was to transform the source map in the hypernova server

@ljharb For example, the backtrace displayed on the browser is something along the lines of:
"ReferenceError: idontexist is not defined",
     "at new SampleComponent (ssr.bundle.js:35348:5)",
     "at processChild (ssr.bundle.js:34431:14)",
     "at resolve (ssr.bundle.js:34397:5)",
     "at ReactDOMServerRenderer.render (ssr.bundle.js:34724:22)",
     "at ReactDOMServerRenderer.read (ssr.bundle.js:34695:25)",
     "at Object.renderToString (ssr.bundle.js:35109:25)",
     "at ssr.bundle.js:11566:46",
     "at /home/dev/node_modules/hypernova/lib/utils/BatchManager.js:190:18",
     "at tryCatcher (/home/dev/node_modules/bluebird/js/release/util.js:16:23)",
     "at Promise._settlePromiseFromHandler (/home/dev/node_modules/bluebird/js/release/promise.js:512:31)"

Note that:

we compile our SSR code using webpack and the generated bundle (ssr.bundle.js) is the one executed by Hypernova
the above backtrace is displayed in the Rails view, since we have the hypernova developer plugin enabled
what we're trying to achieve, is to have the trace point to the line of the original source file/lineno (before it's been compiled by webpack), which would be something like app/assets/javascript/foo.js:3

Thanks!

Gotcha. So you do have a source map for that bundle, you just want it somehow applied in the hypernova error.
That does seem like something that could be done inside hypernova itself. However, perhaps if you included https://www.npmjs.com/package/source-map-support yourself, it would be handled for you?

It's hard for me to really understand the scope of this without a PR. Would you be willing to make one, with the understanding that there's no promise to merge it? If it's reasonable and doesn't seem to add much complexity, I'm sure it'd be fine, but I want to set your expectations appropriately :-)


Added challenge for Attribute Selector

Pre-Submission Checklist

[X] Your pull request targets the staging branch of freeCodeCamp.
[X] Branch starts with either fix/, feature/, or translate/ (e.g. fix/signin-issue)
[X] You have only one commit (if not, squash them into one commit).
[X] All new and existing tests pass the command npm test. Use git commit --amend to amend any fixes.

Type of Change

[X] Small bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds new functionality)
[ ] Breaking change (fix or feature that would change existing functionality)
[ ] Add new translation (feature adding new translations)

Checklist:

[X] Tested changes locally.
[ ] Closes currently open issue (replace XXXX with an issue no): Closes #XXXX

Description

Introduced the attribute selector challenge as part of the curriculum teaching about pseudo classes/elements and selectors. Deals with issue #13594 .
@Ethan-Arrowood Hi ethan, could you help to review the challenge? 😄 I plan to add in the solutions after finalising the content of all the challenges, so as to reduce the portions i have to change if there are any amendments, hope that's fine with you.

@Ethan-Arrowood @HKuz would either of you be interested in reviewing this challenge?

@QuincyLarson I'll add it to my todo list

Okay I copied your code into my own branch and ran through the challenge. Explanation sounds good to me. I'd recommend filling out the solution though so the challenge is included in npm test.  Another note is I know these challenges tend to build on each other, so would it be useful to keep the [type='radio'] { } selector on the remaining Cat Photo App challenges so the user can get familiar seeing it over and over again.
Great work none the less!

@Ethan-Arrowood you would need to pull down the pull request and then run this locally.
Two ways to do this (well there are others, these are just the way I do it):
1. If you are not reviewing pull request regularly:
git checkout -b hay-dee-fix/include-selectors-challenge staging
git pull https://github.com/hay-dee/freeCodeCamp.git fix/include-selectors-challenge
node seed
gulp

2. If you intend to this more often (recommended)

Install git-extras (one time only installation)
Follow these:

git checkout staging
git pr https://github.com/freeCodeCamp/freeCodeCamp/pull/13996
node seed
gulp

Clean up is done by:

git checkout staging
git pr clean

@Ethan-Arrowood Apologies for the delay! Was busy during the weekdays. I was not planning to carry the changes over to the subsequent CatPhotoApp challenges and hence did not focus on the aesthetics of my changes. As you can see, the end result is not that aesthetically pleasing 😅 .
I found a more better method, which is to move the challenge right after the Use Clockwise Notation to Specify the Margin of an Element. I will then utilise margin properties to space out the checkboxes. Will that be fine with you?

@Ethan-Arrowood Should I proceed with the changes stated? 😄

Your changes sound good to me.  Good work!

I have re-positioned and reworked the attribute selectors challenge.
cc/ @freeCodeCamp/moderators

@hay-dee the only thing I can see as a problem being the use of word checkboxes vs checkbox in the type.
I believe the tests and instructions areas should explicitly mention something like [type='checkbox'] because we might get a lot of support issues with newcomers trying to use 'checkboxes' in the selector as in [type='checkboxes'] and fail the tests.
Else this is ready for a merge.
If you agree, either update this PR or feel free to make a new one after we merge this, I'll let you decide how you would want that.
And thanks again for creating this challenge, good work!

@raisedadead I could change the example given in the description to a [type="checkbox"] selector, instead of the [type="radio"] selector. Will update the PR soon.

@hay-dee  I'll go ahead and merge this so that it does not go stale. Please open a fresh PR when you are ready.
Thanks once again!


Package Hierarchy drifts on horizontal scrolling

To reproduce:

Open Package Hierarchy
Select a different class in the class column
Scroll views with horizontal mouse scroll

My two cents, adding a video capture (as opposed to static screenshot) of the issue helps a lot with something like this (UX-centric), especially if it were intermittent, hard to reproduce or specific to a system/OS (not saying that's true in this case).

We can reproduce this particular problem.


Add PKCS#11 URI support for private key

Enable the use of PKCS#11 URIs in the mod_ssl configuration files, allowing the use of keys stored in PKCS#11 devices.
Only the SSLCertificateKeyFile directive is modified.
Summary of changes:

ssl_engine_config.c

Modified the SSLCertificateKeyFile directive validation to accept PKCS#11 URIs

ssl_engine_init.c

Modify ssl_init_server_certs() in ssl_engine_init.c to make it try to load using a engine, if available

ssl_engine_pphrase.c

Added ssl_engine_load_pkey() to call ENGINE_load_private_key()

To test this, it is necessary to have a PKCS#11 device, generate a key pair, and a certificate. The 'apache' user (or the one which owns the httpd processes after detach) must have access to such device and keys. The following can be used to generate a device, a key pair, and its certificate for testing:
#!/bin/bash

# Create a new soft token, generate a key pair, and a self-signed certificate.
# This have to be run as the 'apache' user to make the generated device/keys
# available for httpd

# This requires:
#    - openssl
#    - p11-kit
#    - libp11
#    - softhsm
#    - gnutls (provides p11tool)

# It is possible to know if the OpenSSL pkcs11 engine is correctly configured
# by running:
#
# $ openssl engine -t pkcs11
#
# It should print:
#
# (pkcs11) pkcs11 engine
# [ available ]

echo "Running as: $USER"
if [ $USER != 'apache' ]
then
    echo "To make the keys available for httpd, run as the user 'apache'"
    echo "try: sudo runuser -u apache $0"
    exit 1
fi

# Create a new soft token (PKCS#11 device)
softhsm2-util --init-token --free --label apache-test --pin 123456 \
    --so-pin 123456

# Generate a key pair
p11tool --generate-rsa --bits=2048 --login --label=pkey \
    "pkcs11:token=apache-test;pin-value=123456"

# Generate a self-signed certificate using the generated key
openssl req -engine pkcs11 -new -key \
    "pkcs11:token=apache-test;object=pkey;type=private;pin-value=123456" \
    -keyform engine -out /tmp/localhost.crt -x509 -subj "/CN=localhost"
echo "Certificate written to /tmp/localhost.crt"

# List the generated keys
echo "Generated key pair:"
p11tool --list-all --login "pkcs11:token=apache-test;pin-value=123456"

Patches should now be completely integrated through http://svn.apache.org/viewvc?rev=1835240&view=rev - thanks a lot for the contribution!


Connection refused to Direct.Mega website?

Tried connecting to the direct.mega website to use the splitter. Connection refused? No proxies.

Check issue 18.
I will update the readme.


Investigate (and implement) if it's possible to run the worker in non-privileged mode

For some users, running the worker container in privileged mode is a no-go. We should investigate if and how we can allow for non-privileged mode use with our container-sync approach (podman in a container)

It doesn't seem possible in the current iteration.

In order to run a container engine like Podman within a container, the first thing you need to understand is that you need a   fair amount of privilege.

Containers require multiple UIDs. Most container images need more than one UID to work. For example, you might have an image with most of the files owned by root, but some owned by the apache user (UID=60).
Container engines mount file systems and use the system call clone to create user namespaces.

[source]
Alternative workarounds using CAP_SYS_ADMIN also doesn't seem to work. When running the worker with:
docker run --rm -it --cap-add=sys_admin --cap-add mknod --device=/dev/fuse --security-opt seccomp=unconfined --security-opt label=disable mergestat/worker /bin/sh

and then running podman like:
podman run --rm -it --network host alpine echo hi

still fails because /sys/fs/croup is mounted as read-only (and I couldn't figure out a way to fix it).
Even running as root without --privileged fails 🙄
For now, the only option seems to go with --privileged

Useful links

https://github.com/containers/podman/blob/main/rootless.md
https://github.com/containers/podman/blob/main/troubleshooting.md
https://www.redhat.com/sysadmin/podman-inside-container

I was never able to get this to work in Docker without privileged mode. In K8s I was able to get it to work but it still required elevated permissions and not much different that running it in privileged mode. We will have to revisit this again at some point if the community in general is not supportive of this. We have had some users not be comfortable with this requirement in their production so we need to keep our eyes open for alternatives here.

I have made some test changes that make it possible to run it without privileged mode. I have rewritten the podman controls to use docker api. #1160


Difficulty installing the package dependencies

I can install torch-geometric itself but when I try to run ~$ pip install --verbose --no-cache-dir torch-scatter I get the error below. Updated cmake, setuptools, wheel and pip.  Not what else to try.
Environment

OS: Ubuntu18.04
Python version: 3.7
PyTorch version: 1.10
CUDA/cuDNN version: None
Any other relevant information: Installed in anaconda environment, majority of packages installed using conda

Error: https://pastebin.com/Aj9aS11a

You do not have g++ installed, so please install the Ubuntu developer suite.

Pretty sure that is fully updated now but still got this error: https://pastebin.com/56uBv4mV

virtual memory exhausted: Cannot allocate memory: Strange error, how much RAM do you have?

Thank you, resized my 1gb droplet to 3gb and the installs worked. Is it expected that much RAM is needed to install these packages on a dedicated virtual server?

Surely not expected, but I do not have much influence on this either :)


KeyError: 'closest' when parsing accounts with larger number of tweets.

Hi,
after the latest update, the tool seems to be working perfectly when scraping accounts with lower number of tweets archived, but when I tried accounts with 1000+ tweets archived, the process failed with:
Traceback (most recent call last):
File "C:\15tway\twayback B\twayback.py", line 112, in
wayback_url = (jsonResponse['archived_snapshots']['closest']['url'])
KeyError: 'closest'
as also seen below on the screenshots.

Thanks for reporting the issue. Yes, I have gotten the same error in the past, and it's frustrating. Basically, it's Archive.org's fault. They can for whatever reason think the requests you're sending should be refused. To mitigate this, I've made it so that if you get an error like this, Python will wait 10 seconds and try again, until it works again, and it should pick up from where it stopped. Similar to the screenshot below.

I updated the release, please try again and let me know if you face more errors.

Hi @xander8945 , please download the latest version in Twayback’s GitHub repo, this method above has been replaced with a better one.


Updated dependencies and Scala version

Updated dependencies, Scala and sbt version, making the library compatible with 0.5.0-SNAPSHOT update of Scala Exercises Core

Failing in travis because of the local dependencies


Pod name should not have capitals

Adding pod 'Objective-Zip', '~> 1.0' as indicated in the Readme does not work. Need to drop the capitals
Should be: pod 'objective-zip', '~> 1.0'

Fixed the pod name. Sorry about that.


Fix for link to the map.json

map.json points to the wrong spot but it's fixed now.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Closing this PR as obsolete


pgo: profile-guided optimization for golang v1.17

This PR implements profile-guided optimization for Golang v1.17. At a very high-level, our implementation consumes PPROF CPU profiles via the compiler flag '-fpprofprofileuse' and performs three key optimizations based on profiles: code specialization ('-specialize'), inlining ('-pprofinline'), code layout ('-codelayout'). Code specialization targets interface method calls to specialize them to direct function calls. Inlining decisions are made based on profiles. Codelayout optimization currently reorders functions based on profiles. BasicBlock layout optimization is currently WIP.
Inlining based on profiles yields decent wins (avg 15%, max 40%).
For bitset, we see ~19% gain from inlining. Please find the steps below to reproduce:
(bitset)  go test -bench=LemireIterateManyb -cpu 1 -parallel 1 -benchtime=3x -cpuprofile LemireIterate.pprof
pkg: github.com/bits-and-blooms/bitset
cpu: Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
BenchmarkLemireIterateManyb 	       3<PHONE_NUMBER> ns/op
PASS
ok  	github.com/bits-and-blooms/bitset	12.828s
(bitset)   go test -bench=LemireIterateManyb -cpu 1 -parallel 1 -benchtime=3x -gcflags="-fpprofprofileuse LemireIterate.pprof -specialize -pprofinline"
goos: darwin
goarch: amd64
pkg: github.com/bits-and-blooms/bitset
cpu: Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
BenchmarkLemireIterateManyb 	       3<PHONE_NUMBER> ns/op
PASS
ok  	github.com/bits-and-blooms/bitset	10.303s
Please note: due to Go compiler dependency issues, we had to duplicate a lot of functionalities from PPROF and from inline/inl.go in order to make this work. We are currently working closely with Google-go folks to eliminate these redundancies.

Did you see https://github.com/golang/go/issues/28262? Usually, big features like these are designed and discussed in the issue tracker first. This is a very large amount of code to show up with all of a sudden :)

@mvdan and others: for background, the authors of this CL have been discussing their PGO implementation privately with the Go compiler team.  This pull request is the mechanism they are using to share their code changes.  This pull request certainly isn't going to go in as is--for one thing, it's against the 1.17 branch--but will be used for further discussion and, I hope, a later updated implementation on mainline.
So, it's new to the community (and new to me too, for that matter) but it's not entirely out of the blue.

Thanks for the quick reply, @ianlancetaylor! I had some thoughts but they weren't related to the code changes, so I've left a comment on the issue instead.

Thank you for proving the context @ianlancetaylor. This PR is still WIP as we (Uber) are working closely with @cherrymui @aclements and @jeremyfaller on cleaning up compiler dependencies (which would avoid a large amount of code duplication), supporting the common profiling format, adding bblayout optimization, and integrating our code in the main branch.

Usually changes of this magnitude start with a publicly circulated design proposal.

Usually changes of this magnitude start with a publicly circulated design proposal.

This will be no different. I don't think anyone is implying we would skip the proposal process. Uber's code drop is to get their work and ours on the same page, so we can build from there. I don't know what form it will take, but we have to start by sharing. :)

Minor note: @google-cla thinks there is no CLA signed yet. Per https://opensource.google/docs/cla/#external-contributors, I believe you need to get added to the appropriate "Google CLA" Google Group within Uber to be seen as from Uber by the bot.

@rajbarik, thanks for sharing this very interesting WIP patch!
When building your feature branch at https://github.com/rajbarik/go/tree/pgo, I got the following errors
~/src/go/src$ ./make.bash
Building Go cmd/dist using /usr/local/go. (go1.17.2 darwin/arm64)
Building Go toolchain1 using /usr/local/go.
# bootstrap/cmd/compile/internal/pgo
/Users/lni/src/go/src/cmd/compile/internal/pgo/irgraph.go:230: fn.NodeFreq undefined (type *ir.Func has no field or method NodeFreq)
/Users/lni/src/go/src/cmd/compile/internal/pgo/irgraph.go:230: undefined: ir.NodeFrequency
/Users/lni/src/go/src/cmd/compile/internal/pgo/irgraph.go:258: call.EdgeFreq undefined (type *ir.CallExpr has no field or method EdgeFreq)
/Users/lni/src/go/src/cmd/compile/internal/pgo/irgraph.go:259: call.EdgeFreq undefined (type *ir.CallExpr has no field or method EdgeFreq)
/Users/lni/src/go/src/cmd/compile/internal/pgo/irgraph.go:259: undefined: ir.EdgeFrequency
/Users/lni/src/go/src/cmd/compile/internal/pgo/irgraph.go:262: call.EdgeFreq undefined (type *ir.CallExpr has no field or method EdgeFreq)
/Users/lni/src/go/src/cmd/compile/internal/pgo/irgraph.go:262: undefined: ir.EdgeFrequency
/Users/lni/src/go/src/cmd/compile/internal/pgo/irgraph.go:303: f.NodeFreq undefined (type *ir.Func has no field or method NodeFreq)
/Users/lni/src/go/src/cmd/compile/internal/pgo/irgraph.go:303: undefined: ir.NodeFrequency
go tool dist: FAILED: /usr/local/go/bin/go install -gcflags=-l -tags=math_big_pure_go compiler_bootstrap bootstrap/cmd/...: exit status 2

quick grep search shows ir.NodeFrequency is indeed missing from the ir package.
Did I miss something here? Thanks.

@lni My apologies. I have updated the PR now and have tested it to work.
@cherrymui fyi.

Minor note: @google-cla thinks there is no CLA signed yet. Per https://opensource.google/docs/cla/#external-contributors, I believe you need to get added to the appropriate "Google CLA" Google Group within Uber to be seen as from Uber by the bot. This will be needed eventually before changes can go in, though as noted above, design docs / proposals will come well before that.

Thanks for pointing this out. I am working on getting this fixed.

@rajbarik thanks a lot for the quick response.
I've managed to build your patched version of go, interestingly I couldn't reproduce the above reported performance improvements. That LemireIterateManyb benchmark from bitset is slower when PGO is enabled. Please see my results below.
$ /Users/lni/src/go/bin/go test -bench=LemireIterateManyb -cpu 1 -parallel 1 -benchtime=3x -cpuprofile LemireIterate.pprof
goos: darwin
goarch: amd64
pkg: github.com/bits-and-blooms/bitset
cpu: Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz
BenchmarkLemireIterateManyb 	       3	   2676432 ns/op
PASS
ok  	github.com/bits-and-blooms/bitset	0.230s

$ /Users/lni/src/go/bin/go test -bench=LemireIterateManyb -cpu 1 -parallel 1 -benchtime=3x -gcflags="-fpprofprofileuse LemireIterate.pprof -specialize -pprofinline"
goos: darwin
goarch: amd64
pkg: github.com/bits-and-blooms/bitset
cpu: Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz
BenchmarkLemireIterateManyb 	       3	   2775468 ns/op
PASS
ok  	github.com/bits-and-blooms/bitset	0.233s

two observed differences in our benchmark outputs,

your ns/op is significantly higher than mine,<PHONE_NUMBER> ns/op vs. 2676432 ns/op
different processors, i7-8850H processor at 2.6Ghz vs. i9-9980HK at 2.4Ghz

I've tried on a M1 ARM processor based mbp as well and I got similar results.
Did I still miss anything here? Thanks!

@lni Great to hear that you are able to build and test the patch.
AFAICT, performance improvements may vary between hardware generations and SKUs. You may want to increase the benchtime to 10x or more to increase the execution time [in order to eliminate any noises]. Also, I recommend adding "-m" to gcflags and mining the logs to ensure inlining via pprof profiles is indeed working as expected [before and after].  Please see example below:
Before pprofinline
(bitset) go test -bench=LemireIterateManyb -cpu 1 -parallel 1 -benchtime=3x -gcflags="-m" -cpuprofile LemireIterate.pprof 2> before_log.txt
goos: darwin
goarch: amd64
pkg: github.com/bits-and-blooms/bitset
cpu: Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
BenchmarkLemireIterateManyb 	       3<PHONE_NUMBER> ns/op
PASS
ok  	github.com/bits-and-blooms/bitset	11.476s
(bitset) go tool pprof LemireIterate.pprof
Type: cpu
Time: Dec 6, 2021 at 9:42am (PST)
Duration: 10.74s, Total samples = 9.29s (86.47%)
Entering interactive mode (type "help" for commands, "o" for options)
(pprof) top20
Showing nodes accounting for 9.21s, 99.14% of 9.29s total
Dropped 19 nodes (cum <= 0.05s)
flat  flat%   sum%        cum   cum%
3.29s 35.41% 35.41%      3.39s 36.49%  github.com/bits-and-blooms/bitset.(*BitSet).NextSetMany
2.69s 28.96% 64.37%      9.11s 98.06%  github.com/bits-and-blooms/bitset.BenchmarkLemireIterateManyb
1.57s 16.90% 81.27%         3s 32.29%  github.com/bits-and-blooms/bitset.(*BitSet).Set
1.38s 14.85% 96.12%      1.43s 15.39%  github.com/bits-and-blooms/bitset.(*BitSet).extendSetMaybe
After pprofinline
bitset) go test -bench=LemireIterateManyb -cpu 1 -parallel 1 -benchtime=3x -gcflags="-m -fpprofprofileuse LemireIterate.pprof -pprofinline" -cpuprofile LemireIterate_after.pprof 2> after_log.txt
goos: darwin
goarch: amd64
pkg: github.com/bits-and-blooms/bitset
cpu: Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
BenchmarkLemireIterateManyb 	       3<PHONE_NUMBER> ns/op
PASS
ok  	github.com/bits-and-blooms/bitset	8.782s
(bitset) go tool pprof LemireIterate_after.pprof
Type: cpu
Time: Dec 6, 2021 at 9:46am (PST)
Duration: 8.02s, Total samples = 6.97s (86.95%)
Entering interactive mode (type "help" for commands, "o" for options)
(pprof) top20
Showing nodes accounting for 6.93s, 99.43% of 6.97s total
Dropped 9 nodes (cum <= 0.03s)
flat  flat%   sum%        cum   cum%
3.38s 48.49% 48.49%      3.40s 48.78%  github.com/bits-and-blooms/bitset.(*BitSet).NextSetMany
3.31s 47.49% 95.98%      6.81s 97.70%  github.com/bits-and-blooms/bitset.BenchmarkLemireIterateManyb
after_log.txt content
PprofInline: [hot] inline (*BitSet).extendSetMaybe in (*BitSet).Set with weight 5.20
PprofInline: [hot] inline (*BitSet).Set in BenchmarkLemireIterateManyb with weight 10.92
PprofInline: [hot] inline (*BitSet).NextSetMany in BenchmarkLemireIterateManyb with weight 12.34
Please let me know if they help.

@rajbarik Thanks for the help above, sadly I still couldn't reproduce the performance improvements.
Based on your suggestion above, I changed benchtime to 1000x and repeated the test -
lni$ /Users/lni/src/go/bin/go test -bench=LemireIterateManyb -cpu 1 -parallel 1 -benchtime=1000x -gcflags="-m" -cpuprofile LemireIterate.pprof 2> before_log.txt
goos: darwin
goarch: amd64
pkg: github.com/bits-and-blooms/bitset
cpu: Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz
BenchmarkLemireIterateManyb 	    1000	   2275634 ns/op
PASS
ok  	github.com/bits-and-blooms/bitset	3.114s

lni$ go tool pprof LemireIterate.pprof
Type: cpu
Time: Dec 8, 2021 at 11:07pm (CST)
Duration: 2.52s, Total samples = 2.09s (82.86%)
Entering interactive mode (type "help" for commands, "o" for options)
(pprof) top30
Showing nodes accounting for 2.07s, 99.04% of 2.09s total
Dropped 14 nodes (cum <= 0.01s)
      flat  flat%   sum%        cum   cum%
     1.61s 77.03% 77.03%      1.63s 77.99%  github.com/bits-and-blooms/bitset.(*BitSet).NextSetMany
     0.41s 19.62% 96.65%      2.05s 98.09%  github.com/bits-and-blooms/bitset.BenchmarkLemireIterateManyb
     0.03s  1.44% 98.09%      0.03s  1.44%  runtime.asyncPreempt
     0.02s  0.96% 99.04%      0.02s  0.96%  runtime.kevent
         0     0% 99.04%      0.02s  0.96%  runtime.netpoll
         0     0% 99.04%      0.02s  0.96%  runtime.startTheWorldWithSema
         0     0% 99.04%      0.03s  1.44%  runtime.systemstack
         0     0% 99.04%      2.05s 98.09%  testing.(*B).launch
         0     0% 99.04%      2.05s 98.09%  testing.(*B).runN

lni$ /Users/lni/src/go/bin/go test -bench=LemireIterateManyb -cpu 1 -parallel 1 -benchtime=1000x -gcflags="-m -fpprofprofileuse LemireIterate.pprof -pprofinline" -cpuprofile LemireIterate_after.pprof 2> after_log.txt
goos: darwin
goarch: amd64
pkg: github.com/bits-and-blooms/bitset
cpu: Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz
BenchmarkLemireIterateManyb 	    1000	   2290498 ns/op
PASS
ok  	github.com/bits-and-blooms/bitset	2.599s

lni$ go tool pprof LemireIterate_after.pprof
Type: cpu
Time: Dec 8, 2021 at 11:08pm (CST)
Duration: 2.49s, Total samples = 2.05s (82.47%)
Entering interactive mode (type "help" for commands, "o" for options)
(pprof) top40
Showing nodes accounting for 2.03s, 99.02% of 2.05s total
Dropped 9 nodes (cum <= 0.01s)
      flat  flat%   sum%        cum   cum%
     1.48s 72.20% 72.20%      1.52s 74.15%  github.com/bits-and-blooms/bitset.(*BitSet).NextSetMany
     0.48s 23.41% 95.61%      2.04s 99.51%  github.com/bits-and-blooms/bitset.BenchmarkLemireIterateManyb
     0.05s  2.44% 98.05%      0.05s  2.44%  runtime.asyncPreempt
     0.02s  0.98% 99.02%      0.02s  0.98%  runtime.memclrNoHeapPointers
         0     0% 99.02%      0.02s  0.98%  github.com/bits-and-blooms/bitset.(*BitSet).Set
         0     0% 99.02%      0.02s  0.98%  github.com/bits-and-blooms/bitset.(*BitSet).extendSetMaybe
         0     0% 99.02%      0.03s  1.46%  runtime.makeslice
         0     0% 99.02%      0.03s  1.46%  runtime.mallocgc
         0     0% 99.02%      0.02s  0.98%  runtime.memclrNoHeapPointersChunked
         0     0% 99.02%      2.02s 98.54%  testing.(*B).launch
         0     0% 99.02%      0.02s  0.98%  testing.(*B).run1.func1
         0     0% 99.02%      2.04s 99.51%  testing.(*B).runN

lni$ cat after_log.txt | grep NextSetMany
PprofInline: can't determine the hotness, but inline trailingZeroes64 in (*BitSet).NextSetMany
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkLemireIterateManyb
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkLemireIterateManyb
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkFlorianUekermannIterateMany
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkFlorianUekermannIterateMany
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkFlorianUekermannLowDensityIterateMany
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkFlorianUekermannLowDensityIterateMany
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkFlorianUekermannMidDensityIterateMany
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkFlorianUekermannMidDensityIterateMany
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkFlorianUekermannMidStrongDensityIterateMany
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkFlorianUekermannMidStrongDensityIterateMany

lni$ cat after_log.txt | grep "\[hot\]"
PprofInline: [hot] inline (*BitSet).extendSetMaybe in (*BitSet).Set with weight 3.57
PprofInline: [hot] inline strconv.FormatInt in (*BitSet).String with weight 3.57
PprofInline: [hot] inline (*BitSet).Set in BenchmarkLemireIterateManyb with weight 7.14
PprofInline: [hot] inline (*BitSet).String in TestStringLong with weight 3.57
PprofInline: [hot] inline New in TestBitSetHuge with weight 3.57

Please let me know if there anything else I should try. Thanks!

I‘m trying. ButI couldn't reproduce the performance improvements, too.
The result is a little different with lni.

$ go test -bench=LemireIterateManyb -cpu 1 -parallel 1 -benchtime=1000x -gcflags="-m" -cpuprofile LemireIterate.pprof 2> before_log.txt
goos: linux
goarch: amd64
pkg: github.com/bits-and-blooms/bitset
cpu: Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz
BenchmarkLemireIterateManyb         1000           2482742 ns/op
PASS
ok      github.com/bits-and-blooms/bitset       2.754s
$ go tool pprof LemireIterate.pprof
File: bitset.test
Type: cpu
Time: Dec 10, 2021 at 1:18am (CST)
Duration: 2.72s, Total samples = 2.60s (95.47%)
Entering interactive mode (type "help" for commands, "o" for options)
(pprof)  top30
Showing nodes accounting for 2.58s, 99.23% of 2.60s total
Dropped 12 nodes (cum <= 0.01s)
      flat  flat%   sum%        cum   cum%
     1.95s 75.00% 75.00%      2.07s 79.62%  github.com/bits-and-blooms/bitset.(*BitSet).NextSetMany
     0.42s 16.15% 91.15%      2.50s 96.15%  github.com/bits-and-blooms/bitset.BenchmarkLemireIterateManyb
     0.12s  4.62% 95.77%      0.12s  4.62%  github.com/bits-and-blooms/bitset.trailingZeroes64 (inline)
     0.09s  3.46% 99.23%      0.09s  3.46%  runtime.memclrNoHeapPointers
         0     0% 99.23%      0.09s  3.46%  github.com/bits-and-blooms/bitset.New
         0     0% 99.23%      0.09s  3.46%  github.com/bits-and-blooms/bitset.TestBitSetHuge
         0     0% 99.23%      0.02s  0.77%  runtime.(*mcache).allocLarge
         0     0% 99.23%      0.10s  3.85%  runtime.makeslice
         0     0% 99.23%      0.10s  3.85%  runtime.mallocgc
         0     0% 99.23%      0.08s  3.08%  runtime.memclrNoHeapPointersChunked
         0     0% 99.23%      2.49s 95.77%  testing.(*B).launch
         0     0% 99.23%      2.50s 96.15%  testing.(*B).runN
         0     0% 99.23%      0.10s  3.85%  testing.tRunner
(pprof) q
go test -bench=LemireIterateManyb -cpu 1 -parallel 1 -benchtime=1000x -gcflags="-m -fpprofprofileuse LemireIterate.pprof -pprofinline" -cpuprofile LemireIterate_after.pprof 2> after_log.txt
goos: linux
goarch: amd64
pkg: github.com/bits-and-blooms/bitset
cpu: Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz
BenchmarkLemireIterateManyb         1000           2504440 ns/op
PASS
ok      github.com/bits-and-blooms/bitset       2.852s
$  go tool pprof LemireIterate.pprof
File: bitset.test
Type: cpu
Time: Dec 10, 2021 at 1:18am (CST)
Duration: 2.72s, Total samples = 2.60s (95.47%)
Entering interactive mode (type "help" for commands, "o" for options)
(pprof) top30
Showing nodes accounting for 2.58s, 99.23% of 2.60s total
Dropped 12 nodes (cum <= 0.01s)
      flat  flat%   sum%        cum   cum%
     1.95s 75.00% 75.00%      2.07s 79.62%  github.com/bits-and-blooms/bitset.(*BitSet).NextSetMany
     0.42s 16.15% 91.15%      2.50s 96.15%  github.com/bits-and-blooms/bitset.BenchmarkLemireIterateManyb
     0.12s  4.62% 95.77%      0.12s  4.62%  github.com/bits-and-blooms/bitset.trailingZeroes64 (inline)
     0.09s  3.46% 99.23%      0.09s  3.46%  runtime.memclrNoHeapPointers
         0     0% 99.23%      0.09s  3.46%  github.com/bits-and-blooms/bitset.New
         0     0% 99.23%      0.09s  3.46%  github.com/bits-and-blooms/bitset.TestBitSetHuge
         0     0% 99.23%      0.02s  0.77%  runtime.(*mcache).allocLarge
         0     0% 99.23%      0.10s  3.85%  runtime.makeslice
         0     0% 99.23%      0.10s  3.85%  runtime.mallocgc
         0     0% 99.23%      0.08s  3.08%  runtime.memclrNoHeapPointersChunked
         0     0% 99.23%      2.49s 95.77%  testing.(*B).launch
         0     0% 99.23%      2.50s 96.15%  testing.(*B).runN
         0     0% 99.23%      0.10s  3.85%  testing.tRunner
(pprof) q
$  cat after_log.txt | grep NextSetMany
PprofInline Caller=github.com/bits-and-blooms/bitset.BenchmarkLemireIterateManyb Callee=github.com/bits-and-blooms/bitset.(*BitSet).NextSetMany Weight=2200000000
PprofInline: can't determine the hotness, but inline trailingZeroes64 in (*BitSet).NextSetMany
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkLemireIterateManyb
PprofInline: [hot] inline (*BitSet).NextSetMany in BenchmarkLemireIterateManyb with weight 28.03
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkFlorianUekermannIterateMany
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkFlorianUekermannIterateMany
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkFlorianUekermannLowDensityIterateMany
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkFlorianUekermannLowDensityIterateMany
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkFlorianUekermannMidDensityIterateMany
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkFlorianUekermannMidDensityIterateMany
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkFlorianUekermannMidStrongDensityIterateMany
PprofInline: can't determine the hotness, but inline (*BitSet).NextSetMany in BenchmarkFlorianUekermannMidStrongDensityIterateMany
$   cat after_log.txt | grep "\[hot\]"
PprofInline: [hot] inline (*BitSet).NextSetMany in BenchmarkLemireIterateManyb with weight 28.03

@rajbarik
I want to know what else I should try, too.
Thank you.

For github.com/bits-and-blooms/bitset. I run benchmark for all the testcase. And add a test flag -count=100.

$ go test -bench=. -cpu 1 -parallel 1 -benchtime=3x -count=100 -cpuprofile all.pprof > before.txt
$ go test -bench=. -cpu 1 -parallel 1 -benchtime=3x -count=100 -gcflags="-fpprofprofileuse all.pprof -specialize -pprofinline" >after.txt
$ benchstat ./before.txt after.txt
name                                             old time/op   new time/op  delta
Set                                               91.4ns ±52%  55.8ns ±40%  -38.89%  (p=0.000 n=95+95)
GetTest                                           81.6ns ±38%  62.2ns ±39%  -23.72%  (p=0.000 n=98+98)
SetExpand                                        1.02µs ±153%  1.95µs ±15%  +90.68%  (p=0.000 n=98+91)
Count                                             1.16µs ± 1%  1.16µs ± 2%     ~     (p=0.777 n=90+96)
Iterate                                           13.1µs ± 0%  13.1µs ± 0%   -0.06%  (p=0.003 n=92+86)
SparseIterate                                     14.5µs ±30%  13.6µs ± 1%   -6.49%  (p=0.000 n=99+84)
LemireCreate                                      14.9ms ± 6%  15.7ms ± 4%   +5.62%  (p=0.000 n=95+97)
LemireCount                                       1.54ms ± 9%  1.51ms ± 7%   -1.85%  (p=0.000 n=98+100)
LemireIterate                                     4.20ms ± 1%  4.16ms ± 1%   -1.11%  (p=0.000 n=88+99)
LemireIterateb                                    4.22ms ± 1%  4.17ms ± 1%   -1.11%  (p=0.000 n=92+100)
LemireIterateManyb                                2.94ms ± 5%  2.98ms ± 2%   +1.05%  (p=0.000 n=94+96)
FlorianUekermannIterateMany                        724ns ±10%   679ns ± 9%   -6.24%  (p=0.000 n=89+98)
FlorianUekermannIterateManyReg                    1.46µs ± 4%  1.40µs ± 4%   -4.45%  (p=0.000 n=100+97)
FlorianUekermannIterateManyComp                    788ns ±11%   926ns ± 9%  +17.47%  (p=0.000 n=97+100)
FlorianUekermannLowDensityIterateMany             1.16ms ± 1%  1.19ms ± 1%   +2.54%  (p=0.000 n=91+97)
FlorianUekermannLowDensityIterateManyReg          1.14ms ± 1%  1.13ms ± 1%   -0.74%  (p=0.000 n=90+98)
FlorianUekermannLowDensityIterateManyComp         1.34ms ± 1%  1.35ms ± 1%   +0.54%  (p=0.000 n=94+93)
FlorianUekermannMidDensityIterateMany             12.7ms ± 1%  12.9ms ± 1%   +1.79%  (p=0.000 n=89+100)
FlorianUekermannMidDensityIterateManyReg          19.0ms ± 1%  18.9ms ± 0%   -0.21%  (p=0.000 n=94+97)
FlorianUekermannMidDensityIterateManyComp         13.8ms ± 1%  13.7ms ± 0%   -0.45%  (p=0.000 n=92+99)
FlorianUekermannMidStrongDensityIterateMany       38.3ms ± 1%  38.4ms ± 0%   +0.36%  (p=0.000 n=96+98)
FlorianUekermannMidStrongDensityIterateManyReg    71.1ms ± 0%  74.8ms ± 0%   +5.26%  (p=0.000 n=95+97)
FlorianUekermannMidStrongDensityIterateManyComp   46.3ms ± 2%  46.4ms ± 1%   +0.21%  (p=0.000 n=99+92)

For some testcase, it improved. But some  testcases got a worse result.

@rajbarik
The bitset version I am using is 5a829244ffd64e4120015ce1bf8285b0b6168d55 which is the latest in its default branch. Any chance you can quickly check which version of bitset are you running?
Also wondering is there any other tests/benchmarks that are known to benefit from the PGO patch? Will be happy to try those as well. Thanks!

@lni I will take a look at this next week and update you. Please stay tuned.

@rajbarik Thanks a lot for looking into this.
We are building a new HTAP database in Go called MatrixOne. Our profiling results indicate that some hot functions are not inlined as expected when using the official compiler, in our experiments, we manually batched their invocations and immediately observed noticeable performance improvements. Profiling guided inlining as described in your PGO patch sounds like a pretty cool potential solution to the problem we face.
Looking forward to your update, will be very happy to further cooperate on this exciting PGO feature!

@lni @zhouguangyuan0718 My apologies, I had modified the BenchmarkLemireIterateManyb function in bitset_benchmark_test.go to increase its execution time by setting everybit in bitset. I had modified one line; please see the commented line below.
`// go test -bench=BenchmarkLemireIterateManyb
// see http://lemire.me/blog/2016/09/22/swift-versus-java-the-bitset-performance-test/
func BenchmarkLemireIterateManyb(b *testing.B) {
bitmap := New(1000000000)
for v := uint(0); v <=<PHONE_NUMBER>; v += 1 { // This is the only change to the code which replaces 100 with 1
bitmap.Set(v)
}
buffer := make([]uint, 256)
b.ResetTimer()
sum := uint(0)
for i := 0; i < b.N; i++ {
j := uint(0)
j, buffer = bitmap.NextSetMany(j, buffer)
for ; len(buffer) > 0; j, buffer = bitmap.NextSetMany(j, buffer) {
for k := range buffer {
sum += buffer[k]
}
j++
}
}
if sum == 0 { // added just to fool ineffassign
return
}
}`
With this change, here is what I see on my Intel Mac laptop:
`

go test -bench=BenchmarkLemireIterateManyb -cpu 1 -parallel 1 -count 5 -benchtime=3x -cpuprofile LemireIterate.pprof > before.txt
go test -bench=BenchmarkLemireIterateManyb -cpu 1 -parallel 1 -count 5 -benchtime=3x '-gcflags=-fpprofprofileuse LemireIterate.pprof -pprofinline' -cpuprofile LemireIterate_after.pprof > after.txt
benchstat before.txt after.txt
name                old time/op  new time/op  delta
LemireIterateManyb   1.46s ± 4%   1.31s ± 2%  -9.87%  (p=0.008 n=5+5)
`

Another benchmark where I see ~25% improvement is Tally. Steps below:
`

go test -bench=ScopeReporting/size1000000 -cpu 1 -parallel 1 -count 5 -benchtime=1x -cpuprofile scope.pprof > before.txt
go test -bench=ScopeReporting/size1000000 -cpu 1 -parallel 1 -count 5 -benchtime=1x '-gcflags=-fpprofprofileuse scope.pprof -pprofinline' -cpuprofile scope_after.pprof > after.txt
benchstat before.txt after.txt
name                        old time/op  new time/op  delta
ScopeReporting/size1000000  2.75ms ± 5%  2.04ms ± 5%  -25.75%  (p=0.008 n=5+5)
`

Please let me know if you are able to reproduce bitset and tally now.
@lni  Regarding MatrixOne, I am able to run the unit-tests. Is there any particular unit-test I should dig deeper? Are there integration/component tests?

It seems like PGO is being talked about internally again (https://github.com/golang/go/issues/43930#issuecomment-1209759830). Is there a chance that we could have more details about the current plan and design? For those of us interested in the Go compiler while outside Google, it's being particularly hard to follow what is happening, let alone contribute in any meaningful way :)
I understand that it may still be early for a formal proposal, but perhaps there could be a regular GitHub issue thread where we can subscribe for detailed updates every few weeks. Ideally the discussions about PGO would simply happen in a public place, removing the need for that back and forth between private and public communication.

It's only been two days, but my last comment is already buried by the commit push activity :) I had to click on "see more" three times to find it again. Can we please at least have one tracking issue to talk about PGO?

https://github.com/golang/go/issues/28262

Oh, thanks Josh. It has been some time and I even forgot I already asked this last year :)

FYI, this has moved to https://go.dev/cl/429863, and there is a proposal at #55022.


Add unzip instance for Getter

Closes GH-455
@julien-truffaut While I was at it :)

if you get the time, could you also add unzip to the Getter class, the signature should probably look like this:
import scalaz.Leibniz.===
def unzip[B, C](implicit ev: (B, C) === A): (Getter[S, B], Getter[S, C])

but we should check that type inference works with something like:
getterA.zip(getterB).unzip

see also https://github.com/julien-truffaut/Monocle/blob/master/core/shared/src/main/scala/monocle/Prism.scala#L246

I added the instance method to Getter, but it doesn't look like type inference can cope with it.  The compiler won't find the implicit evidence for === unless you explicitly give type parameters to unzip.

@julien-truffaut I dropped the .unzip instance method again.

@lunaryorn sorry for the back and force. Thank you very much 👍

@julien-truffaut Never mind; I learned a bit about scalaz along the way for I never actually used it before.


The ability to instantiate sockets for a certain namespace

The swift and java sockets have the interfaces to create a socket for a certain namespace, called nsp in both native frameworks.
In android io.socket.client.manager -> public Socket socket(final String nsp, Options opts) and for swift SocketIO: SocketManager.swift -> open func socket(forNamespace nsp: String)
It would be tremendously helpful if we could expose it to kotlin multiplatform as for now the socket binds to default / name space. I wanted to submit the pull request but having issues with building the project locally and validating the pull request on my local machine.
As a a side note: Awesome work on this library!

thx for report! we not use in our project namespace anytime, but your pull request will be good :)
can you describe what problems you have with building project locally? now configuration support very simple dev start - git clone and gradle build will success without any additional actions.
maybe not all environment available? jdk 1.8, android-sdk, xcode cli tools?

thx for report! we not use in our project namespace anytime, but your pull request will be good :)
can you describe what problems you have with building project locally? now configuration support very simple dev start - git clone and gradle build will success without any additional actions.
maybe not all environment available? jdk 1.8, android-sdk, xcode cli tools?


Allow getting the top N frames of the current stack trace

Sometimes for debugging related purposes, you want to know where an object got created or when a method was called. You typically do not need the full stack trace to do this - only the top 1 or 2 frames.
Calling StackTrace.current can become very expensive, particularly in a Flutter application that can easily have a 400+ frame stack trace. It would be great if there was some API like StackTrace.topFrames(int numberOfFrames). Such an API would make it more feasible to capture debugging information for object creation without as much of a performance hit.
/cc @bkonyi @a-siva @jacob314

FWIW, Flutter already has a debug helper method called debugPrintStack, but it still has to call StackTrace.current and then parse the output. It's not really suitable for usage if there's any kind of profiling going on.

If you only need 1 frame, it is ideal to use a kernel transformer which is close to free.
For the small # of frames this is an interesting request. Any estimate how much time this would save? My expectation is capturing StackTrace.current is fairly cheap and that most of the cost is getting a string of the stack trace which you can trigger later only when needed.

According to @bkonyi, walking the entire stack is expensive if you have to do it frequently.
Would a kernel transformer be able to get frame 1? Frame 0 makes sense, but does the kernel know what method is calling the current one?

Marking this as vm for now, but if we do this, we may need to support on the web?
@jacob314 - I thought we already support this at some level?  It was important to getting vscode stepping to be fast - at least on the web - so I think we have something at the protocol level already ( @grouma )?

getStack supports a limit parameter. This prevents package:dwds from unnecessarily translating JS frames to Dart frames. However this is independent from @dnfield's request because I believe he wants to get the frames within the application context, not through the VM service protocol.

//cc @bkonyi

@grouma is correct, I want to be able to more efficiently get the top n frames of the stack in an application

According to @bkonyi, walking the entire stack is expensive if you have to do it frequently.
Would a kernel transformer be able to get frame 1? Frame 0 makes sense, but does the kernel know what method is calling the current one?

The widget creation location transformer is getting frame 1. The trick is to add an extra named parameter to the methods you need to transform that includes frame 1.


RB3DX/RPCS3 MIDI Pro Adapter Mode and will the touch strip ever be usable?

I found this when i was trying to jump through hoops to get my keyboard working on RB3 Deluxe, and wanted to ask for a couple features if you ever work on this again.

Could you make a mode for the MIDI out to map it the buttons and overdrive to the keys that the Midi pro adapter uses (C2 to A-Sharp 2) since right now to play keys on RPCS3 you need to either:

Take a Midi cable and loop the output to a virtual cable for RPCS3
Or, use this program to do the same thing without the touch strip being usable
With either option, you are unable to control menus unless you switch octaves to have C2 to B2 on the red and yellow keys, which you then have to switch back out of to start a song. then the touch strip and overdrive activate weirdly when in midi mode (because of pro keys midi out) where tapping the touch strip without holding down the overdrive button activates overdrive, while holding it down and then tapping the strip does whammy. If you had this mode, even without touch strip, having the main keys work like they're supposed to for RB3DX would be awesome.

I also just discovered this unbelieable tool. I never though it would be possible to Play RB3 on PC, and have pro instruments working even. I have the same issue in RPCS3. I only play on normal Keys mostly and not on Pro Keys, but still it would be great, if there would be some 'crossover' mode in the app, which have the upper xinput keys working as normal, and the octave would work as pro keys. Or maybe the app could somehow remap the buttons beetween the 2 modes (one for normal keys and navigation, and one for the full pro keys octave mode). Just my 2 cents. Great app, makes RB3 playable for a long long time on X86. Can't thank you enough!


Thank you!

I just wanted to say thank you for this library, @ryanrhymes! 👍 🥇 👍
It's amazing to see someone work on a numeric computation library for OCaml, and the initial performance benchmarks look super promising!

Hi Steffen, thank you for trying out Owl. I am really happy to see more people playing with it, experimenting with it, and even hacking it :)  It is still in quite a prototype stage, so all comments and feedback are highly appreciate. Thanks.
I hope Owl can be a good choice in future for those want to build numerical and analytical applications in OCaml.


OneFuzz 2.0 Initial Deployment Error "InvalidAppId"

Information

OneFuzz version: 2.0.0
OS: Tried on both macOS and Azure console "Common Base Linux Delridge (quinault)"

Provide detailed reproduction steps (if any)

Download the deployment artifact and install the requirements using pipenv install
Deploy OneFuzz using the command as shown in the section below.

Expected result
For it to be deployed, the same steps (with different venv) could deploy version 1.11.0.
Actual result
(onefuzz) user@Azure:~/onefuzz$ python deploy.py northeurope user_group <redacted>-onefuzz<EMAIL_ADDRESS>INFO:deploy:checking if RBAC already exists
INFO:deploy:creating Application registration
INFO:deploy:creating service principal
Traceback (most recent call last):
  File "deploy.py", line 902, in <module>
    main()
  File "deploy.py", line 896, in main
    state[1](client)
  File "deploy.py", line 349, in setup_rbac
    authorize_application(onefuzz_cli_app_uuid, app.app_id)
  File "/home/user/onefuzz/registration.py", line 340, in authorize_application
    "preAuthorizedApplications": preAuthorizedApplications.to_list()
  File "/home/user/onefuzz/registration.py", line 79, in query_microsoft_graph
    response.status_code,
registration.GraphQueryError: request did not succeed: HTTP 400 - {
  "error": {
    "code": "InvalidAppId",
    "message": "Property PreAuthorizedApplication references applications 72f1562a-8c0c-41ea-beb9-fa2b71c80134 that cannot be found.",
    "innerError": {
      "date": "2021-01-29T16:24:51",
      "request-id": "9253d1ee-4992-4a39-8c22-6add7ff311eb",
      "client-request-id": "9253d1ee-4992-4a39-8c22-6add7ff311eb"
    },
    "details": [
      {
        "target": "api.preAuthorizedApplications.appId",
        "code": "InvalidValue"
      }
    ]
  }
}

Thank you!

@chkeita, Please take a look at this issue.

@chkeita, Please take a look at this issue.

@Sinderella, 2.1.0 should fix the issue you've identified.  Please re-open this issue if the problem persists.

@Sinderella, 2.1.0 should fix the issue you've identified.  Please re-open this issue if the problem persists.


How can I build from source in a private Git repository?

What is the new topic you would like to added to the OpenShift cookbook?
How can I build from source in a private Git repository?
Distill information from:

https://blog.openshift.com/private-git-repositories-part-1-best-practices/

Also check chapter in Deploying to OpenShift book.
Note that blog posts were before the --source-secret existed so need to make sure cover that.

Added one for Bitbucket:

https://cookbook.openshift.org/building-and-deploying-from-source/how-can-i-build-from-a-private-repository-on-bitbucket.html

and GitHub:

https://cookbook.openshift.org/building-and-deploying-from-source/how-can-i-build-from-a-private-repository-on-github.html

Don't mention method of using annotations since that seems to be dodgy with SSH these days and doesn't always work.


WIP: KCSEU23 Initial Stub Out

This is the initial stub out with the info I currently have available
I put the pages that we have almost no info for in draft: true status
The thinking was that folks would update pages as information came in and remove the draft line when ready

I'm open to other processes.
/hold
/assign @mrbobbytables
/assign @qedrakmar

Save me...
/label tide/merge-method-squash
you're my only hope.

 New branch/PR coming.


Publishing changes

This PR fixes #8528.

I see one "problem". The pending changes are not persisted, right now they are tracked only in the current session, if the user reloads the browser, the pending changes get lost. I think that making a request with every change is too much, but...
cc @xavijam

@saleiva @javisantana see my comment above

Fine by me, but @saleiva and/or @javisantana I'd like some words from you.

Open a ticket for after 7/7 and go with this. :)

I'd use the typical pattern:

save every X seconds if there are changes
if the user is closing with pending changes tell him to wait or ask for confirmation

saving every single change is kind of killer but let see
Are we cancelling a previous request if is already working?


add build script (currently only for macOS)

TODO

[ ] Test script on Darwin

When you have the time, could you test the new commit?

It seems like the checks for darwin do not work.
The repo this comes from has been deleted so I can't push changes anymore. I'll merge it in then add fixes.


BLD: Use tempita for cython templating

[x] closes #13399
[x] tests added / passed
[x] passes git diff upstream/master | flake8 --diff

not sure what the setup.py 's best practice be...
CC: @gfyoung

does this change build time?
you might need to change the manifest (to not include the .pxi files)

[Current coverage][cc-pull] is 84.53%

Merging [#13716][cc-pull] into [master][cc-base-branch] will not change coverage

@@             master     #13716   diff @@
==========================================
  Files           141        141
  Lines         51145      51145
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits          43233      43233
  Misses         7912       7912
  Partials          0          0

Powered by Codecov. Last updated by [8acfad3...9c1d26a][cc-compare]
[cc-base-branch]: https://codecov.io/gh/pydata/pandas/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/pydata/pandas/compare/8acfad343c88760a6d09fea221996dd50393fa8a...9c1d26a642b7b90a382e0de6de57e1e23ff4c2fb?src=pr
[cc-pull]: https://codecov.io/gh/pydata/pandas/pull/13716?src=pr

For build time, tempita looks little slower. It may caused by include files are split to 4... (both after setup.py clean):
on current master:
Finished processing dependencies for pandas==0.18.1+220.g4c9ae94

real    5m23.612s
user    4m56.507s
sys 0m14.372s

tempita:
Finished processing dependencies for pandas==0.18.1+221.g9c1d26a

real    5m52.029s
user    5m12.612s
sys 0m13.344s

this looks fine to me. @jorisvandenbossche @wesm ?

Nice! (@sinhrks you're quite on speed lately! :-))
No further comment from me

LGTM - nice, @sinhrks !

you might need to change the manifest (to not include the .pxi files)

added *.pxi on gitignore and manifest, as currently we don't use .pxi elsewhere.

can you make sure this is lintable (and add on as well), see here
not a big deal, but if you manually lint pyx files these will be as well

@sinhrks ping when ready

@jorisvandenbossche

is there a reason you use pxi/pxi.in files in this case, while we use pyx extension in other cases for included files?

I don't have a strong opinion about it, the name "pxi.in" is derived from @gfyoung 's PR. whichever looks consistent:

use ".pyx" in all Cython files
use ".pxi" in template-generated Cython files

This link here should help clarify the file extensions.

@gfyoung that link doesn't seem to work, can you update.

Corrected. So from that link, pxi files are not specific for 'template-generated files', but for 'include' files.
But given that we currenlty use .pyx files for included files as well (eg join.pyx and generated.pyx included in algos.pyx https://github.com/pydata/pandas/blob/master/pandas/algos.pyx#L1337), I would either keep using pyx, or rename the other included files to pxi to have it consistent within the pandas source code.
(but to be clear, not that important, this PR is a really nice improvement in the code generation)

I actually like that .pxi is template generated, and .pyx is not. sort of a visual diff.

thanks @sinhrks
can always think about the .pxi vs .pyx question, but I think ok for now.


Move Projections (Read Model) to Infrastructure.

I made some mistakes in the past. Read Model and projections should be in Infra as are representations of the Entities and not Domain specific responsibility.
Still thinks about how to deal with Sessions, ATM I've a SessionInterface in domain but looks strange there. Will try to sort this in another PR.

Pull Request Test Coverage Report for Build 324

19 of 20 (95.0%)  changed or added relevant lines in 6 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.06%) to 95.379%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/Infrastructure/User/Auth/Auth.php
7
8
87.5%

Totals

Change from base Build 307:
0.06%

Covered Lines:
516

Relevant Lines:
541

💛  - Coveralls


SVG must not fill open paths

As per the SVG spec, an open path that is filled in SVG will be converted to a closed path. This ain't what we want, so make open paths ignore all fills in the SVG backend.

Actually, I think the current semantics might be correct. Need to think about this a bit more.

Current semantics are correct.


protoc on osx

Hi,
I've made my way through this blog post and the custom object detection and when trying to train my model it looks like Google cloud is failing because I didn't run the protoc in tensorflow/models .. just as you mentioned.
Should protoc be installed in the environment with the protobuf package??
thanks and again, awesome posts!
Chris

I moved past this point by

compiling protoc from source
generated my protos
created the cloud dist
untarred the package
added the protos to the package and re compressed

gonna close this


Update Globals “site_data”

Automatically generated by Netlify CMS

👷 Deploy Preview for singular-moonbeam-50eeea processing.

Name
Link

🔨 Latest commit
51a74f7287ce074ee406b6ec22c5336d5cf56e90

🔍 Latest deploy log
https://app.netlify.com/sites/singular-moonbeam-50eeea/deploys/63dcbc53c053860008bed5a2


Errors when building on Jenkins (with Service Account)

I get the error Invalid default value for firebase_cli_path, doesn't match verify_block when building on jenkins. I understand this is because I did not pass a firebase_cli_path as a param.
However, I can see that from the docs you can use service-accounts and set an env variable GOOGLE_APPLICATION_CREDENTIALS as the path to the service account's file, all of which I have done.
Any idea how/if this plugin uses service-accounts?
fastlane-plugin-firebase_app_distribution: 0.1.4

The fastlane plugin makes all calls through the Firebase CLI, so authentication and uploads are all handed through it. When you set GOOGLE_APPLICATION_CREDENTIALS, those credentials are used to authenticate the Firebase CLI calls. You still need to set the firebase_cli_path to tell plugin where your Firebase CLI is installed.

Thanks @alexsinger


Prep commits to don't cache message list for all messages view.

Commits extracted from #29259

Merged, thanks @amanagr!


shift = shift_0 + A*sqrt(cycle_number)

This is a quick experiment to determine if the cycle dependence of shift is in fact relatively straightforward.
The power of this equation is that A can depend on the avg_cycling_history and on cell_features,
and shift_0 depends on cell_features.
This equation is not literally true, but assuming that delta_shift is proportional to sqrt(time), there is a more or less linear relationship between time and cycle number (but the details do depend on cycling_history)

code successfully runs


pkgbuild GH action fails for latest Java 8 due to naming of package

GH action uses URL as follows:
- name: Download prebuilt binaries
  run: |
    mkdir -p workspace/target/
    cd workspace/target/
    wget -q "https://github.com/adoptium/temurin${{ env.MAJOR_VERSION }}-binaries/releases/download/${{ env.TAG }}/OpenJDK${{ env.MAJOR_VERSION }}U-jdk_${{ matrix.architecture }}_mac_hotspot_${{ env.SUB_TAG }}.tar.gz"

e.g. https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u422-b05.1/OpenJDK8U-jdk_x64_mac_hotspot_8u422b05.1.tar.gz
But the package we have built is at:
https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u422-b05.1/OpenJDK8U-jdk_x64_mac_hotspot_8u422b05.tar.gz
Note the missing .1 at the end of the file we have stored.
I think ${{ env.SUB_TAG }} needs to be enhanced or an extra ENV. added to the end for the .1 patch number

Maybe an extra dash-e in the seds, like this?
# SUB_TAG is used to create the file name of the JDK/JRE zip file
        release_name=$(echo "$json" | jq -r '.release_name')
        if [[ "$major" -eq 8 ]]; then
          subTag=$(echo "$release_name" | sed -e 's/jdk//' -e 's/-//' -e 's/\..*//')
        else
          subTag=$(echo "$release_name" | sed -e 's/jdk-//' -e 's/+/_/'  -e 's/\..*//')
        fi


Appstudio update test-component-pac-miot

Pipelines as Code configuration proposal

Pipelines as Code CI/test-component-pac-miot-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
38 seconds
init

✅ Succeeded
33 seconds
clone-repository

✅ Succeeded
1 minute
build-container

✅ Succeeded
36 seconds
deprecated-base-image-check

✅ Succeeded
36 seconds
sanity-inspect-image

✅ Succeeded
36 seconds
sbom-json-check

✅ Succeeded
4 minutes
clair-scan

✅ Succeeded
1 minute
clamav-scan

✅ Succeeded
19 seconds
sanity-optional-label-check

✅ Succeeded
18 seconds
sanity-label-check

✅ Succeeded
8 seconds
show-summary

Pipelines as Code CI/test-component-pac-miot-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
20 seconds
init

✅ Succeeded
14 seconds
clone-repository

✅ Succeeded
32 seconds
build-container

✅ Succeeded
14 seconds
deprecated-base-image-check

✅ Succeeded
16 seconds
sanity-inspect-image

✅ Succeeded
15 seconds
sbom-json-check

✅ Succeeded
54 seconds
clamav-scan

✅ Succeeded
17 seconds
clair-scan

✅ Succeeded
14 seconds
sanity-optional-label-check

✅ Succeeded
14 seconds
sanity-label-check

✅ Succeeded
8 seconds
show-summary


Test failures not correctly recognized

Hello @mikepenz, thank you for the plugin!
Unfortunatelly it seems that the JUnit 5 test failures are not correctly recognized by it. The configuration is as follows: https://github.com/FgForrest/evitaDB/blob/dev/.github/workflows/test-report.yml
But even if the tests fail: https://github.com/FgForrest/evitaDB/actions/runs/4808320797/jobs/8558154108
The report render the result as if everything is okay: https://github.com/FgForrest/evitaDB/actions/runs/4808320797/jobs/8558296700
Is there anything wrong in the configuration or there is a real issue in the plugin? Thank you for your support!

Based on the log I don't see a test failure, just a compilation failure.
Searching for Failures: 1, ...Failures: 9 did not result in any matches (all logs report Failures: 0)

Sorry, I referred wrong runs. This is correct:
https://github.com/FgForrest/evitaDB/actions/runs/4880097093/jobs/8707336172
It contains:
Error:  Failures:
Error:    FilterIndexTest.deliberateTestFailure:64 Deliberate test failure.
[INFO]
Error:  Tests run: 3143, Failures: 1, Errors: 0, Skipped: 13

Yet I see:

In following step of report generation: https://github.com/FgForrest/evitaDB/actions/runs/4880097093/jobs/8707457826
I'm uploading the output XML and downloading in the other workflow, but I double checked it and it should download the proper one. I also manually opened the artifact: https://github.com/FgForrest/evitaDB/suites/12666156144/artifacts/679089727 and I see the failure recorded there.

Looking through it, it seems the wrong report may be picked. 🤔
From the failed report I can see this order:

However when looking what the action saw is this:

I don't see a reason why it would not find pick it.
If you place the publish step right after the tests were run (without the downloading) does it work?
The failure build is here:
https://github.com/FgForrest/evitaDB/actions/runs/4880097093/jobs/8707336172
However it seems to have picked up:

With<PHONE_NUMBER>  seems to be a different run id? (perhaps)

Ok, I'll try to move the the job to the same workflow to avoid artifact passing, and inform you about the result.
I'm still a newbie in GitHub actions, so there is high chance I missed something - most of my workflow code is copy & paste from different sources and guesswork.
Thank you very much for your time!

I have tried to add it to the main workflow, but the result processing took extremely long time, so I have to cancel it to stop burning my free time on GitHub: https://github.com/FgForrest/evitaDB/actions/runs/4908927186/jobs/8765006012
The workflow was simple: https://github.com/FgForrest/evitaDB/actions/runs/4908927186/workflow
What can take it so long to process a few XML files? Build with tests took around 7 mins, processing (until I cancelled it) took over 15 minutes:

I minified the plugin configuration to:
    - name: Publish Test Report
      uses: mikepenz/action-junit-report@v3
      if: success() || failure() # always run even if the previous step fails
      with:
        report_paths: '**/TEST-*.xml'
        fail_on_failure: true

And now the parsing took only 7 seconds and it found the failing test ok: https://github.com/FgForrest/evitaDB/actions/runs/4909112592/jobs/8765311158
Probably the annotations took long? I don't know.
But your suggestion is most probably correct and the plugin download something else than what's uploaded. I'll investigate more. Thanks.

I got it! The problem was in missing run_id configuration in download plugin. The correct configuration is:
      - name: Download a test results # download `evita-server.jar` artifact if the workflow we react to was successful
        uses: dawidd6/action-download-artifact@v2
        with:
          workflow: ${{ github.event.workflow_run.workflow_id }}
          run_id: ${{ github.event.workflow_run.id }}
          name: test-results          # artifact name

Thank you for your support and I'd like to buy you a coffee. I hope, you don't mind.

Thank you very much @novoj