NoMethodError when making request to an invoker-proxied task

In my invoker.ini, I have an HTTP server. When making requests to it via the browser, everything works fine. When making requests via a node.js HTTP client, this happens:
/usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/balancer.rb:105:in `extract_host_from_domain': undefined method `match' for nil:NilClass (NoMethodError)
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/balancer.rb:111:in `select_backend_config'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/balancer.rb:68:in `headers_received'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/balancer.rb:51:in `block in install_callbacks'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/http_parser.rb:63:in `call'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/http_parser.rb:63:in `complete_headers_received'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/http_parser.rb:11:in `block in initialize'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/http_parser.rb:40:in `<<'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/http_parser.rb:40:in `<<'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/balancer.rb:84:in `append_for_http_parsing'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/balancer.rb:79:in `upstream_data'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/balancer.rb:53:in `block in install_callbacks'
    from /usr/local/lib/ruby/gems/2.2.0/gems/em-proxy-0.1.8/lib/em-proxy/connection.rb:20:in `call'
    from /usr/local/lib/ruby/gems/2.2.0/gems/em-proxy-0.1.8/lib/em-proxy/connection.rb:20:in `receive_data'
    from /usr/local/lib/ruby/gems/2.2.0/gems/eventmachine-1.0.4/lib/eventmachine.rb:187:in `run_machine'
    from /usr/local/lib/ruby/gems/2.2.0/gems/eventmachine-1.0.4/lib/eventmachine.rb:187:in `run'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/powerup.rb:13:in `run'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/powerup.rb:7:in `block in fork_and_start'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/powerup.rb:7:in `fork'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/powerup.rb:7:in `fork_and_start'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/process_manager.rb:72:in `run_power_server'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/commander.rb:39:in `start_manager'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/cli.rb:46:in `start'
    from /usr/local/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
    from /usr/local/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
    from /usr/local/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
    from /usr/local/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/cli.rb:12:in `start'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/bin/invoker:7:in `<top (required)>'
    from /usr/local/bin/invoker:23:in `load'
    from /usr/local/bin/invoker:23:in `<main>'

Here's the node.js script used to make the request:
var request = require('request');
request('http://web.dev', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body) // Show the HTML for the Google homepage.
  }
})

It uses this lib

This error happens when no Host header is set, due to this line: https://github.com/code-mancers/invoker/blob/master/lib/invoker/power/balancer.rb#L67

That line was different from my installed version of invoker (the latest from rubygems, 1.3.2), so I tried re-installing invoker from the repo and got this error instead:
/usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/url_rewriter.rb:21:in `block in extract_host_from_domain': undefined method `match' for nil:NilClass (NoMethodError)
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/url_rewriter.rb:20:in `map'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/url_rewriter.rb:20:in `extract_host_from_domain'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/url_rewriter.rb:7:in `select_backend_config'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/balancer.rb:67:in `headers_received'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/balancer.rb:50:in `block in install_callbacks'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/http_parser.rb:63:in `call'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/http_parser.rb:63:in `complete_headers_received'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/http_parser.rb:11:in `block in initialize'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/http_parser.rb:40:in `<<'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/http_parser.rb:40:in `<<'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/balancer.rb:83:in `append_for_http_parsing'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/balancer.rb:78:in `upstream_data'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/balancer.rb:52:in `block in install_callbacks'
    from /usr/local/lib/ruby/gems/2.2.0/gems/em-proxy-0.1.8/lib/em-proxy/connection.rb:20:in `call'
    from /usr/local/lib/ruby/gems/2.2.0/gems/em-proxy-0.1.8/lib/em-proxy/connection.rb:20:in `receive_data'
    from /usr/local/lib/ruby/gems/2.2.0/gems/eventmachine-1.0.4/lib/eventmachine.rb:187:in `run_machine'
    from /usr/local/lib/ruby/gems/2.2.0/gems/eventmachine-1.0.4/lib/eventmachine.rb:187:in `run'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/powerup.rb:13:in `run'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/powerup.rb:7:in `block in fork_and_start'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/powerup.rb:7:in `fork'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/power/powerup.rb:7:in `fork_and_start'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/process_manager.rb:72:in `run_power_server'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/commander.rb:39:in `start_manager'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/cli.rb:46:in `start'
    from /usr/local/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
    from /usr/local/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
    from /usr/local/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
    from /usr/local/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/lib/invoker/cli.rb:12:in `start'
    from /usr/local/lib/ruby/gems/2.2.0/gems/invoker-1.3.2/bin/invoker:7:in `<top (required)>'
    from /usr/local/bin/invoker:23:in `load'
    from /usr/local/bin/invoker:23:in `<main>'

Invoker can't work if Host header field is not present in the request. Here is from http/1.1 specs:
A client MUST include a Host header field in all HTTP/1.1 request messages . If the requested URI does not include an Internet host name for the service being requested, then the Host header field MUST be given with an empty value. An HTTP/1.1 proxy MUST ensure that any request message it forwards does contain an appropriate Host header field that identifies the service being requested by the proxy. All Internet-based HTTP/1.1 servers MUST respond with a 400 (Bad Request) status code to any HTTP/1.1 request message which lacks a Host header field.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
In other words, I think the node.js http client should be fixed to include Host header. Invoker works bit like Apache Virtual hosts and absence of Host field in headers would be greatly confusing to it.

On the flipside, I think will update Invoker to return 400 Bad request if Host field is missing. Thanks for the bug report!

Great, thanks! The HTTP spec does allow for Host headers with an empty string value. I think that's what the request library is doing.
If the Host header is not absolutely required to resolve the backend, it might make sense to handle empty string values without a 400 response. But it seems like it is.

Fixed by #131

It would be hard to return non-400 response if Host header is empty from requests, because then Invoker can't decide which backend Invoker should proxy the request to. Theoretically, Invoker can be made to work via other ways, But I as per HTTP specs it seems right thing to do is - always include a valid Host field in requests. The empty Host field is really a special case and kinda last resort. I am sure, node http client can be easily fixed to insert that header manually. :-)

Yep, makes sense and that's what I'm doing for my use case. Just want to prevent others from getting caught up on this issue in the future. Thanks again.


Implemented notification popup if compiler options includes any that might be "unwise"

This implements request from issue 1379, while adding ability to add more unsafe options

Later on we also have to change this to a per-compiler configurable setting, -march is just Clang and other compilers and languages will have other options.

@LukaPrebil I talked to @RabsRincon about this, and perhaps the best you can do is to put this as the second parameter at the call to this.alertSystem.notify
{group: 'unwiseOption', collapseSimilar: true}
After that I think we can merge this.

@partouf I've added the grouping, as suggested. If you wish, i can also implement it in a way that checks if options actually changed :)

Both "-march=native" and -march="native" in the options box work, but won't trigger the warning - it's definitely a bit pedantic of an issue, just thought I would mention it.
I also wonder if it may be preferable to implement the checks server side and have the client simply pop any notifications that appear in the API response.
It looks like the server side already has logic to deal with quoting in compiler arguments, since the quotes in my examples above disappear from the full list of compiler flags that appear when you hover over the green checkmark next to the options box.
Might make it easier to implement compiler specific checks in the future. (ICC's equivalent flag is -qHost for example).

@apmorton I'm not sure server side is appropriate to check for something that is merely a notification to the user, and has no effect whatsoever on the application itself. Though reusing an existing parser for the options would be nice. I will take a look at what can be done.

Am not a fan of putting the logic serverside even though it makes more sense in terms of parsing. We might be able to tweak the clientside argument parsing...

Hey Luka: Apologies for being slow: we're trying to get the scary big "execution support" pushed to prod. Once that's done we will look to merge and release this! Thanks for your patience! (also not quite sure where we are with this and will have to read all this back to work out what the next steps are :))

We are going to merge this and work on making it a configurable setting for more compilers. Apologies again for taking so long. :)

Thank you everyone for your comments and suggestions. I will work on a more powerful/general implementation of this feature next :)


Eureka registration payload is serialized incorrectly

Describe the bug
Whilst validating that Eureka does work with gRPC (#433), I came across an issue.
gRPC requires https for HTTP/2 negotiation, so I configured eureka within my service to enable https and disable http:
  "Eureka": {
    "Instance": {
      "appName": "admin",
      "nonSecurePortEnabled": false,
      "securePortEnabled": true,
      "securePort": 5001,
      "hostName": "localhost"
    }
  },

This results in a payload that looks like this:
"port":{"@enabled":"False","$":80},"securePort":{"@enabled":"True","$":5001},

However, when you inspect Eureka's service metadata, you'll find SecurePort to be false.
<port enabled="false">80</port>
<securePort enabled="false">5001</securePort>

This then goes on to resolve within the calling service and implode when the request is done over http instead of https:
[17:48:58 INF] Start processing HTTP request POST https://admin/user.UserService/GetUser
[17:48:58 DBG] LookupService(https://admin/user.UserService/GetUser)
[17:48:58 DBG] GetInstances returning: Instance[InstanceId=***:unknown:80,HostName=localhost,IpAddr=****,Status=UP,IsUnsecurePortEnabled=False,Port=80,IsSecurePortEnabled=False,SecurePort=5001,VipAddress=admin,SecureVipAddress=admin,ActionType=ADDED]
[17:48:58 INF] Sending HTTP request POST http://localhost/user.UserService/GetUser
[17:48:58 DBG] Sending message.
[17:48:58 INF] Received HTTP response after 99.0835ms - NotFound
[17:48:58 INF] End processing HTTP request after 113.969ms - NotFound
[17:48:58 INF] Call failed with gRPC error status. Status code: 'Internal', Message: 'Bad gRPC response. Response protocol downgraded to HTTP/1.1.'.

Expected behavior
It seems Eureka expects the lowercase form of "@enabled":"true" or "@enabled": true instead of "@enabled":"True"
As a side note, it would probably be useful if the library warned the developer if a request is attempted on a service with both IsUnsecurePortEnabled and IsSecurePortEnabled set to false instead of silently defaulting to http.
Environment (please complete the following information):

Platform: local
OS: Windows
.NET Version: .NET Core 3.1 & 5 Preview 8
Steeltoe Version: 3.0.0
spring-cloud-starter-netflix-eureka-server 2.2.5-RELEASE

This is probably a relatively new bug, thanks for digging deep enough to get what looks like a pretty good definition of the problem - I probably introduced it when I switched our Eureka code from using Newtonsoft to System.Text.Json... and it's probably this line, but I haven't verified anything here yet

We have tests with mocked response data showing this value to be a string... might just be old test data, but that's likely why there is a string converter in there right now

might just be old test data

I did some manual testing against the registration endpoint and as far as I can tell, Eureka will accept both the boolean and string form of true. It just doesn't accept "True" with a capital T that's currently being sent. The converter calls boolean.ToString() which outputs with a capital, so I assume removing the converter would fix the issue.

Removing the converter broke the tests... adding .ToLower() when we write a bool seems to fix registration without breaking tests
We should plan to add more tests for this (de)serialization area in #384


Add support for TOML files with -c, --config

I would like to add support for passing TOML files for configuration options as an alternative to providing different options in the command line.
Using -c, --config with an appropriate .toml file as an argument will be accepted as input and will replace any of the individual options in your program (lang, output). To parse the TOML file contents, I'll use the tomli TOML file parser to get the file contents.
If this solution is okay, let me know. Thanks

Sure, please go ahead with it @ijacobs-cpa .
Note: I just merged a PR with major refactoring to how markdown processing is done. Please pull the latest changes from master before starting your work.

@ijacobs-cpa Also, I think you should mostly only need to make changes to src/utils/commandline.py file.


Remove Gas estimator link in footer

Problem solved
Short description of the bug fixed or feature added

PR-Codex overview
This PR focuses on modifying the app-footer.tsx component by removing the Gas Estimator link from the footer.
Detailed summary

Removed the Link component for Gas Estimator.
The remaining Link component for chainlist retains its class names and attributes.

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

#5134  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @MananTank and the rest of your teammates on  Graphite


add Array2D.at(x, y)

Add "at" function to array2D.
It should behave exactly like operator().
see implementation of std::vector.at() for use details
This should allow for cleaner accessing of array elements when the Array2D is a pointer.
copy unit tests for array2D operator()
to ensure that functionality is correct.

We already had a getter and setter for this guy. I've removed those and added "at" as an accessor using the overloaded operator.


Convert to free format issues

Hi everyone,
this variable declaration is not converted correctly.
D QprObj                          a   len(500000) varying
QprObj         Varchar()  LEN(500000);

Same for
D QvgTagRowSql    s         500000a   varying(4) inz('')
dcl-s QvgTagRowSql Varchar(500000) (4) INZ('');
Even more, blank spaces is not removed.
expected:
QprObj varchar() len(500000)
got:
QprObj         Varchar()  LEN(500000)

The correct conversion would be:
 QprObj varchar(500000) inz('');
Although the INS keyword is redundant in this case and unneeded.


Add v<IP_ADDRESS>

Add Shopware Version <IP_ADDRESS>

Thank you. We definitely need to automate this :)

Thank you. We definitely need to automate this :)


Add IRQ_OFFSET_NESTED, with a portable (!) nested interrupt test

Nested interrupts on xtensa weren't being exercised due to bitrot (I wrote a test long ago that fell out of the suite, and the nested interrupt test was always arch-specific and never got a port).  This extends the irq_offset() API to be able to interrupt an ISR on supported architectures (just x86 and xtensa for now), and adds a trivially small case to tests/kernel/common to validate it.

Nested interrupts on xtensa weren't being exercised due to bitrot (I wrote a test long ago that fell out of the suite, and the nested interrupt test was always arch-specific and never got a port). This extends the irq_offset() API to be able to interrupt an ISR on supported architectures (just x86 and xtensa for now), and adds a trivially small case to tests/kernel/common to validate it.

This test seems to have an obvious place to pay attention to. He assumes that the sw interrupt has a higher priority than the time0 interrupt? When this condition is not met, I don't think the test will work as it should?
For example, my architecture should need to be adjusted, and these two interrupts cannot be used directly to test interrupt nesting

Yes, if you don't have a software interrupt at higher priority than your lowest timer this test won't work, and the board should deselect IRQ_OFFSET_NESTED.  I wish it were true you could rely on the highest software interrupt being higher than the lowest timer, but Cadence lets people configure cores in all sorts of ways.

Add some docs to explain the edge case called out above (being nested-capable isn't magic, it still requires that you be running at an interruptible level), clean up one stray newline-at-EOF.  Seems like CI had glitched on this one anyway and was showing a lot of download failures.


Install lsxss on Windows

The feature is being installed by Win10.ps1. We just need to execute "bash", capture the window, then enter "y"


Pull changes made at pool test into master branch

Small tweaks of control loop values were made and launch files were significantly changed to allow the robot to run for real life tests.

Workflow is broken, ignore failing tests.


Feature request: build Bee from source

It would be good to be able to build a Bee image from a given source tree. Maybe it's possible but I could not find out how.
The use case is when working on a new version that has not been released yet. For that it's possible to use the latest tag to pull from docker, but the content of that image is mutable because it is pushed from the master, therefore it cannot be reliably used to reproduce issues between different developers.

Closed by #47


C# + (test using Unity MonoBehaviour)

C# port of the latest version. The testing thing is made to run in Unity so might be a pain to check.

This is excellent, thank you Mark!
Seeing another implementation made me decide to create a GitHub organization for HUSL. I would love to see its name associated with all the people who have contributed to it, not just with my account. If you accept my invite, you should have write access to the husl.cs repository where you can commit this code. If you would rather not join, please open a pull request there. Thanks again! :thumbsup:


Non-atomic APT Loss

This will implement the non-atomic APT loss. The loss can be used if the density estimator is a Mixture of Gaussians. It does not have leakage issues (as atomic APT).

[x] set up infrastructure for the loss
[x] implement the loss function
[x] clean up code and refactor things
[x] write tests and make sure everything is correct
[x] implement z-scoring

1D-cases are not yet covered because mdn have a log_prob error. This has been addressed but is not yet on PyPI.

Fun fact: this PR will close our oldest issue, dating back to the 11th of February (!!!) :D

Closes #6
That's great!


Pet's image is broken

Ever since installing the extension, images of pets won't show up.

Please try reloading the window and see if this fixes it. If not, change to another pet.

Hi Tony! Adding a new pet works! Thanks!


Fix webaudio pipeline

Summary: Link audioconvert and audioresample elements for all sinks.
Type: BugFix
Test Plan: YouTube Cert Tests, NPLB Tests
Jira: RIALTO-166

https://jenkins.code.rdkcentral.com/job/build-component/70107/ started.

https://jenkinsrdkm.cmf.code.rdkcentral.com/job/github-triggered/1678/ started

https://jenkinsrdkm.cmf.code.rdkcentral.com/job/build-component-platform/3337/ started.

Sanity tests for ['RPI3 Refapp2'] added.
https://jenkinsrdkm.cmf.code.rdkcentral.com/job/test-components-flow/7929/

Sanity tests for ['RPI3 Hybrid/MC'] added.
https://jenkinsrdkm.cmf.code.rdkcentral.com/job/test-components-flow/7928/

Sanity tests for ['BCM Reference Refapp2'] added.
https://jenkinsrdkm.cmf.code.rdkcentral.com/job/test-components-flow/7949/

https://jenkins.code.rdkcentral.com/job/github-triggered/32936/ started

https://jenkins.code.rdkcentral.com/job/build-component/70211/ started.

https://jenkins.code.rdkcentral.com/job/github-triggered/32938/ started

https://jenkins.code.rdkcentral.com/job/build-component/70212/ started.

https://jenkinsrdkm.cmf.code.rdkcentral.com/job/github-triggered/1692/ started

https://jenkinsrdkm.cmf.code.rdkcentral.com/job/github-triggered/1693/ started

https://jenkinsrdkm.cmf.code.rdkcentral.com/job/build-component-platform/3433/ started.

https://jenkinsrdkm.cmf.code.rdkcentral.com/job/build-component-platform/3434/ started.

Sanity tests for ['RPI3 Hybrid/MC'] added.
https://jenkinsrdkm.cmf.code.rdkcentral.com/job/test-components-flow/8072/

Sanity tests for ['RPI3 Refapp2'] added.
https://jenkinsrdkm.cmf.code.rdkcentral.com/job/test-components-flow/8071/

Sanity tests for ['RPI3 Hybrid/MC'] added.
https://jenkinsrdkm.cmf.code.rdkcentral.com/job/test-components-flow/8074/

Sanity tests for ['RPI3 Refapp2'] added.
https://jenkinsrdkm.cmf.code.rdkcentral.com/job/test-components-flow/8073/

'['BCM Reference Refapp2']' Sanity test FAILURE, investigation pending.
Build Job/Num: build-brcm-refboard/2123
Flash BCMREF [SUCCESS]
BCMREF - Video Test [FAILURE]
RefApp Movie Session Mgr VoD Test [SUCCESS]
RefApp Movie Firebolt MP Encrypted VoD Test [SUCCESS]
RefApp Channel Change Video Tests [SUCCESS]
RefApp Lightning Bouncing Ball App Launch and Exit Test [SUCCESS]
Video local (H264) using gst-play-1.0 [SUCCESS]
HLS Video Streaming using aamp-cli [SUCCESS]
DASH Video Streaming using aamp-cli [FAILURE]
PLAYREADY_DRM Video Streaming using aamp-cli [FAILURE]
https://jenkinsrdkm.cmf.code.rdkcentral.com/job/test-bcmref-refapp2-flow/1671/

Sanity tests for ['BCM Reference Refapp2'] added.
https://jenkinsrdkm.cmf.code.rdkcentral.com/job/test-components-flow/8104/


Use hatch to manage builds, versioning, and such

You can still install with just plain old pip install, but using hatch gives lots of pleasant advantages:

Easy version update - hatch version $NEWVERSION will update src/pyfoma/__init__.py and the version number is taken directly from there, so it can't get out of sync.
Run tests under multiple python versions - hatch test --all.  If you want a specific version, hatch test -py 3.11 (for instance).  If you want just the currently installed version, hatch test.
No need to mess around with virtualenv, you can just hatch shell and get an environment with pyfoma in it.

It does other stuff too!
Also, I cleaned up the conda release workflow so that it explictly specifies which version to use and will fail if that version doesn't exist on PyPI.  There's also no longer any need to use sed to add noarch, the --noarch-python flag does that.

Note that this includes the changes in #36 because I can't figure out how to tell github to apply it on top of that one... you could apply that one first and then this one, or just that one, if you don't like this one, or just this one :)


Bootstrap tooltip

Can't make Bootstrap tooltip work properly inside tag...
http://plnkr.co/edit/jsh4wLVknDlhL9IwQFwV?p=preview

You can not bind jquery to elements that are not yet in the DOM, you should wait the mount event http://plnkr.co/edit/B8u2XKJiqW9vHptPpyTO?p=preview

Thanks, I saw it worked in plunker, but didn't in my project. I tried to put .tooltip()in mountand other places, but a not styled tooltip appears :(


Skillgrid ecdf

Ecdf is a way to compare the skill of two (or more) models across many observation locations, very common in hydrology (Kratzert et al, 2019.
This PR is an attempt to add this functionality to gridded skill.
Example:
plot() delegates to xarray, so how do I add plot.ecdf()🤔

I guess we would need to implement a plotter class for SkillGrid then. We could wrap xarray plotter but also add our own plotting functions like ecdf


Seems boards get deleted upon restart of app.

This is probably just a dev problem, but is worth investigating to see if it occurs with a stable database as well.

Figure out a way to load database/collections from mongo docker. Mongo docker may try to save information on disk.

Appears mongo is stable for prod.


Feature request: percentage of files

Was trying to determine whether a lib as heavily used in a project.
For every module I will have to compare it to the number of files in project.
It would be cool if we could have the percentage of use in the output of the CLI.
I just don't know about how. Should it be optional? Maybe plugins?
IDK, random toughts.
Would love to hear what you think @pmqueiroz

You can achieve this by grabbing the occurrences of the specifier you want, dividing by the total files obtained in glob (printed at the beginning of execution), and then multiplying by 100. Consider the example below, following the image:
The ImportDeclaration specifier is imported in two modules (or files) and was found in a total of 14 files, which means that this specifier is imported in 14.28% of the entire project.

In a mature/big node project, calculating this can be messy. Since the table in the terminal has viewport limits, I would rather not inflate the default output with that. However, the plugin idea seems great to me.
Do you have any ideas on how to implement this plugin @rodrigo-picanco?

Well, I guess for most use cases making the calculation using de std out of the lib would be ok.
That said, I guess the simpler way I see a plugin logic being introduced here is by first making the occurrences counter a default plugin and then enforce the same API on third-party/later implementations.


Added notice requirement for invalid_passwords.txt as required by CC …

…BY SA 3.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/incubator-trafficcontrol-PR/798/
Test PASSed.


Fixed README.md markdown

Due to a misplaced "```", half of the file was badly formatted (code was in normal text, normal text was in code blocks)

Thanks!


upload coverage report to codeclimate

Codecov Report

Merging #4 (6ff7a8d) into main (ced09b2) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main       #4   +/-   ##
=======================================
  Coverage   78.19%   78.19%
=======================================
  Files           3        3
  Lines         188      188
=======================================
  Hits          147      147
  Misses         41       41

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


PR #1119 Follow-up changes

Why are these changes needed?
@kevin85421 - This PR addresses the comments left in PR https://github.com/ray-project/kuberay/pull/1119
Following up with the updates requested in this PR.
Checks

[x] I've made sure the tests are passing.
Testing Strategy

[ ] Unit tests
[x] Manual tests
[ ] This PR is not tested :(

Close this PR in favor of https://github.com/ray-project/kuberay/pull/1271. Thank you for the PR.


Add tf ci GitHub actions

When PR #54 was created there was an error that was picked up only after the merge that CI could have found (PR #55). This PR adds a github action job per terraform directory to initialize and validate which can be added to branch protection to make sure only validated terraform gets merged. This will not stop errors that occur because of remote data not being what is expected but should help find 80-ish% or more of the issues.
We had to remove the empty terraform backend blocks that reference Google Cloud Storage because the GitHub Actions validation will be run within the docker image and are not needed anyway as the initial_start.sh script creates override.tf files per directory that replace the entire block anyway.
Fixes #3

Does this lint shell scripts too, or only terraform validation?

only terraform validation.


[gardening] Convert Testing.rst to markdown and rename to Testing.md

[gardening] Convert Testing.rst to markdown and rename to Testing.md

@swift-ci smoke test and merge


Best fitness result NaN

Hi,
I would like to ask if this actually an error.
The software produces correct result. But when I have lots of elements to nest the sum of area becomes so large that instead of large number it displays NaN.
Does such result produces an error internally? Or yield incorrect genetic algorithm result?
Would it be possible to scale down internally?

Hello, i think this is error somewhere. If you give me your input data, i'll try to reproduce this bug and try to fix it.

I cannot replicate NaN error anymore.
It seems that it happens only when an element cannot be placed withing a sheet i.e. a polygon bounding box diagonal is bigger than the sheet bounding box diagonal.
I noticed that scaling is highly important too. Here comes the tolerance issue. Below I do not display simplified polygons, as I do not know which property could give me the simplified polygon (Please advice which property I should search for).
Below I compare different tolerances. By tolerance. I mean that I scale polygons before outputting to nesting application and when nesting is finished I scale back to original scale.
Original scale:

Scaling 10 times more:

Scaling 10 times less

Scaling 100 times results in shape not nested as they are probably average to integers and becomes bigger shapes than sheets:

Thank you, for this report. I'll check it out.

The code uses float in parts of the nest which can result in overflows so in my branch I flipped to double, just kicks the can down the road though. If you keep scaling up then of course the issue could reappear, as you've found. You could get some mileage by reducing ClipperScale but if you go too far you'll very quickly lose precision in the nest.

Thank for the reply.
Other question: do you know how to nest long linear elements, they usually nest very poorly?

Only noticed after I replied that the question was 3 years old! Sorry for that, glad it helped. You're still using regularly?
I had a similar problem; some long thin parts that nest fairly well with each other leaving gaps that could be filled by small parts if they were fit later, after the long thin ones have placed already. I've attempted two routes;

restricting rotation on a part by part basis to only vertical or horizontal (for the long thin parts) - which works well and on the original branch you can replicate by either
-  reducing the number of Rotations from default 4 to 2 but then that applies to all parts.
-  changing the code in the procreant GeneticAlgorithm constructor for the long thin parts
the notion of IsPriority - essentially forcing the long thin parts to get placed first which, especially in combination with the rotation restriction, works very well IF you can fit all parts on a single sheet. More than one sheet and the parts overlay and the nest is invalidated. Still debugging this one and isn't really easy to replicate in the code as it stands. If I fix the problem I'll publish the code :)


Parsing/Tokenizing a file with Ginza from command line

Hi, Ginza is primarily used as a  dependency parser. However, it can also be used for tokenization. Hence, I would like to know if there is a command line interface similar to Jieba for tokenizing a file.
In Jieba, we can use:
python -m jieba -d filename
How could we do that using Ginza? :)
Kind Regards,

@MastafaF It is typical use-case of GiNZA. I'd like to add the tokenization mode for command_line.py in next release. Thank you!

@MastafaF Please try to use sudachipy command, which is installed together with ginza, if you need to.
Or, do you need --delimiter option like Jieba?
Actually, I don't want to add that for ginza command.
I'm planning to add a format option which provides MeCab compatible output format.
https://taku910.github.io/mecab/

I am just looking for a way to tokenize a txt file with Ginza/Sudachipy as in mecab:
% mecab INPUT -o OUTPUT
It is not clear how to do it or if it is possible to do it currently from command line.

Please try to use ginzame command in v3.0.0.
Thank you! @MastafaF


Add a Robots.txt File

I think umami by default should have a robots.txt file to prevent search engines from indexing umami. I think in almost all situations an umami instance should not show in search results.

The pull request has been merged.


Fix intro message test.dart

PR Description
This pull request resolves the issue by fixing the test case to ensure it runs successfully. The error causing the test to be skipped is addressed, allowing us to verify the functionality of the IntroMessage widget accurately.
Related Issues

Related Issue #233
Closes #233

Checklist

[x] I have gone through the contributing guide
[x] I have run the tests (flutter test) and all tests are passing

Added/updated tests?

[x] Yes

Thanks for the PR. LGTM 🚀


Still Not Copying

Hello,
I've added the extension into chrome but it's still not working and I seriously need it. Please tell how it works.

not the developer, AFAIK: it unregister events with copy and pasting
you should also list the sites which you encounter errors to help others fix it faster

That is not a helpful bug report.  What version of Chrome are you using? Have you confirmed that the extension is enabled, not disabled?  Are you using Incognito mode? What is the URL of the site or sites you have tested it on?

@Thunder33345 & @jasonjhofmann: Thanks for jumping in here and asking for additional information.
@001aj: There are many way that a site can effectively blocks you from copying content, this extension prevents the most direct form of copy blocking. If you provide more details, I will try to reproduce your problem.
That said, as long as the extension is configured correctly, if you are not able to copy content, the site is most likely hooking into more browser events, and there's not much I'm going to be able to do.

@jasonjhofmann  I'm using Version 57.0.2987.133 (64-bit) of chrome. Neah, I'm not using Incognito mode. What sihnificant changes it reflect when the extension is enabled. I mean it always remains same, a D with grey background.
@Thunder33345 I'm using it on simple coding websites.
@jswanner Well it's kind of environment where I get a question and I have to answer it, I can type it but it takes a lot of time.

With the release of version 2 of this extension, it should be much easier to configure the extension to be active on particular sites, and provides visibility into the active/inactive state of the extension for any given site.
Without more context about the problem, I'm closing this issue for now.


Failed to open encrypted file no identity matched any of the recipients this happens when there is an encrypted file on disk but there is no key to decrypt it. decide what to do when that happens.

working as expected.
I thought about deleting the file, but better to not destroy the data since if the user can find the correct key, they can recover the secret.


module 'tensorflow' has no attribute 'Summary'

I'm running pose_to_vid.py and it raises:
File  "../EverybodyDanceNow_reproduce_pytorch/src/pix2pixHD/util/visualizer.py", line 102, in plot_current_errors
summary = self.tf.Summary(value=[self.tf.Summary.Value(tag=tag, simple_value=value)])
AttributeError: module 'tensorflow' has no attribute 'Summary'
My tensorflow version is 2.0. I would like to know which version is proper and is there any solutions to this problem?

The problem is solved. This code uses an older version of Tensorflow. It works with the following configuration:
Python: 3.6.10
Tensorflow: 1.14
Pytorch: 1.4
Use conda to install.


Move READMEs to the root of the future repos

I moved the READMEs to the roots of the repos, but I didn't really fix them up yet. That will be a separate PR, probably after the repos are created.
@aslo PTAL

LGTM


Add agent mode identifier

Identify in the logs and liveness endpoints if the server is running in
Agent mode or not.
Signed-off-by: SuperQ<EMAIL_ADDRESS>

friendly ping

Sorry, forgot about this one. Added the mode field to the log line.

Ping @roidelapluie


Default MVC project.json is not taking Areas into consideration for publishing.

The default template of MVC have a project.json with this content:
  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "appsettings.json",
      "web.config"
    ]
  },

If you add an Area, those are not copied when publishing.
I think it's safe to make the default template as:
  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "Areas/**/Views",
      "appsettings.json",
      "web.config"
    ]
  },

unfortunatelly, that glob pattern doesn't work.

For the time being, Areas/**/*.cshtml seems to get the job done.

Tried this workaround on version 1. Does not seem to work. Any idea?

@emailtowalter
This works:
  "publishOptions": {
    "include": [
      "**/*.cshtml",
      "web.config",
      "wwwroot"
    ]
  },

I don't have the link handy but I recall a team member saying that the default templates are going to start using that pattern.

yes, that's the change we're making to the templates

It is sort of not working. when I publish to a folder outside of project foder, none of the folders are copied. But if I use the default location, things work. Should I log a separate issue?
dotnet publish -r ubuntu.14.04-x64 -o ....\publish\ubuntu\

@emailtowalter please log an issue on CLI https://github.com/dotnet/cli

I'm seeing the same thing as @emailtowalter. I created https://github.com/dotnet/cli/issues/3951

This change has now gone into the VS templates and dotnet new for 1.0.1


feat(ipfs-coord): Pull out ipfs-coord stuff

PR related to this trello task --> https://trello.com/c/m5RQUaVn

:tada: This PR is included in version 1.1.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


clang: error: -fobjc-weak is not supported on the current deployment target

Expected Behaviour
Build success
Actual Behaviour
Build failed for iOS 😢
CompileC /Users/sebas/Library/Developer/Xcode/DerivedData/Pharmacap-dzqvgmbzyeemwxczaqhkhklhixpw/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/nanopb.build/Objects-normal/armv7/nanopb-dummy.o Target\ Support\ Files/nanopb/nanopb-dummy.m normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler
    cd /Users/sebas/Sites/evrard-client/platforms/ios/Pods
    export LANG=en_US.US-ASCII
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c -arch armv7 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu11 -fobjc-arc -fobjc-weak -fmodules -fmodules-cache-path=/Users/sebas/Library/Developer/Xcode/DerivedData/ModuleCache -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fbuild-session-file=/Users/sebas/Library/Developer/Xcode/DerivedData/ModuleCache/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror=non-modular-include-in-framework-module -Wno-trigraphs -fpascal-strings -O0 -fno-common -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wdocumentation -Wunreachable-code -Wno-implicit-atomic-properties -Werror=deprecated-objc-isa-usage -Werror=objc-root-class -Wno-arc-repeated-use-of-weak -Wimplicit-retain-self -Wduplicate-method-match -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wundeclared-selector -Wdeprecated-implementations -DPOD_CONFIGURATION_DEBUG=1 -DDEBUG=1 -DCOCOAPODS=1 -DPOD_CONFIGURATION_DEBUG=1 -DDEBUG=1 -DPB_FIELD_32BIT=1 -DPB_NO_PACKED_STRUCTS=1 -DOBJC_OLD_DISPATCH_PROTOTYPES=0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -miphoneos-version-min=4.3 -g -Wno-sign-conversion -Winfinite-recursion -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wunguarded-availability -fembed-bitcode-marker -index-store-path /Users/sebas/Library/Developer/Xcode/DerivedData/Pharmacap-dzqvgmbzyeemwxczaqhkhklhixpw/Index/DataStore -iquote /Users/sebas/Library/Developer/Xcode/DerivedData/Pharmacap-dzqvgmbzyeemwxczaqhkhklhixpw/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/nanopb.build/nanopb-generated-files.hmap -I/Users/sebas/Library/Developer/Xcode/DerivedData/Pharmacap-dzqvgmbzyeemwxczaqhkhklhixpw/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/nanopb.build/nanopb-own-target-headers.hmap -I/Users/sebas/Library/Developer/Xcode/DerivedData/Pharmacap-dzqvgmbzyeemwxczaqhkhklhixpw/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/nanopb.build/nanopb-all-target-headers.hmap -iquote /Users/sebas/Library/Developer/Xcode/DerivedData/Pharmacap-dzqvgmbzyeemwxczaqhkhklhixpw/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/nanopb.build/nanopb-project-headers.hmap -I/Users/sebas/Library/Developer/Xcode/DerivedData/Pharmacap-dzqvgmbzyeemwxczaqhkhklhixpw/Build/Products/Debug-iphoneos/nanopb/include -I/Users/sebas/Sites/evrard-client/platforms/ios/Pods/Headers/Private -I/Users/sebas/Sites/evrard-client/platforms/ios/Pods/Headers/Private/nanopb -I/Users/sebas/Sites/evrard-client/platforms/ios/Pods/Headers/Public -I/Users/sebas/Sites/evrard-client/platforms/ios/Pods/Headers/Public/FirebaseAnalytics -I/Users/sebas/Sites/evrard-client/platforms/ios/Pods/Headers/Public/FirebaseCore -I/Users/sebas/Sites/evrard-client/platforms/ios/Pods/Headers/Public/FirebaseInstanceID -I/Users/sebas/Sites/evrard-client/platforms/ios/Pods/Headers/Public/FirebaseMessaging -I/Users/sebas/Sites/evrard-client/platforms/ios/Pods/Headers/Public/GoogleToolboxForMac -I/Users/sebas/Sites/evrard-client/platforms/ios/Pods/Headers/Public/Protobuf -I/Users/sebas/Sites/evrard-client/platforms/ios/Pods/Headers/Public/nanopb -I/Users/sebas/Library/Developer/Xcode/DerivedData/Pharmacap-dzqvgmbzyeemwxczaqhkhklhixpw/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/nanopb.build/DerivedSources/armv7 -I/Users/sebas/Library/Developer/Xcode/DerivedData/Pharmacap-dzqvgmbzyeemwxczaqhkhklhixpw/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/nanopb.build/DerivedSources -F/Users/sebas/Library/Developer/Xcode/DerivedData/Pharmacap-dzqvgmbzyeemwxczaqhkhklhixpw/Build/Products/Debug-iphoneos/nanopb -include /Users/sebas/Sites/evrard-client/platforms/ios/Pods/Target\ Support\ Files/nanopb/nanopb-prefix.pch -MMD -MT dependencies -MF /Users/sebas/Library/Developer/Xcode/DerivedData/Pharmacap-dzqvgmbzyeemwxczaqhkhklhixpw/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/nanopb.build/Objects-normal/armv7/nanopb-dummy.d --serialize-diagnostics /Users/sebas/Library/Developer/Xcode/DerivedData/Pharmacap-dzqvgmbzyeemwxczaqhkhklhixpw/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/nanopb.build/Objects-normal/armv7/nanopb-dummy.dia -c /Users/sebas/Sites/evrard-client/platforms/ios/Pods/Target\ Support\ Files/nanopb/nanopb-dummy.m -o /Users/sebas/Library/Developer/Xcode/DerivedData/Pharmacap-dzqvgmbzyeemwxczaqhkhklhixpw/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/nanopb.build/Objects-normal/armv7/nanopb-dummy.o

I added a plugin on another computer for Android platform. I made a git pull on the Mac, removed ios platform and re-added platform in order to make the plugin work. After that, I could not build the app for iOS anymore.
After adding the platform, I had to do a pod install and a pod setup to make it work. Without that, I had the Library not found for -lGoogleToolboxForMac error.
Reproduce Scenario (including but not limited to)
Steps to Reproduce
I really don't know what caused the problem :(
Cordova CLI version and cordova platform version
cordova 8.0.0
cordova-ios 4.5.4
I tried to build with every Deployment target listed (from 8.0 to 11.1) but it did not change anything.
Plugin version
phonegap-plugin-push 2.1.2 "PushPlugin"
Other plugins:
cordova-custom-config 5.0.2 "cordova-custom-config"
cordova-plugin-appversion 1.0.0 "App Version"
cordova-plugin-camera 4.0.2 "Camera"
cordova-plugin-whitelist 1.3.3 "Whitelist"
Additional information
I'm not really used to MacOS, so please be comprehensive!
Thanks for your help!

I can't see any indication of errors on the logs you pasted. Can you recheck and share the whole build log? Preferably as a file on https://pastebin.com/ so we don't overflow the issue with a monster comment.

same error =\

Having the same issue here.
cordova 7.1.0
cordova-ios 4.5.4
I'm using ionic.

Tried to create the application from scratch ionic start.
Then did ionic cordova build ios and it was successful.
After that, I added the plugin ionic cordova plugin add phonegap-plugin-push.
Again, I did ionic cordova build ios. But this time it failed with the same issue.

Not sure how phonegap-plugin-push depends on nanopb. But seems that's where the issue coming from?

Hmm, nanopb doesn't specify that build option so I assume it's coming from their build configuration.

Quoted from the issue created with nanopb. Not too much info, but hopefully can help isolate the root cause.

Here's my complete build log https://pastebin.com/VbNgys6P

I'm getting this error too.

I'm getting this error too.

I can't actually reproduce this one. Anyone have more detailed reproduction notes?

I confirm that it works now when I explicitly set the deployment target to 9.0! Thanks for the workaround :)
@macdonst Which logs do you want and where can I find them?

@sebj54 I just need a better reproduction scenario. I started a new test app from scratch using the same version of cordova and cordova-ios. Then I set the deployment target as 8, 9, 10 & 11. Couldn't reproduce the issue.

@macdonst I have the same error than @misaxi, don't you?

It didn't work when I changed the deployment target first because I was editing build settings of my main project. I should have changed the build settings of the nanopb target.
I also have last versions of xcode and cocoapods gem, I don't know it change anything.
Please tell me if I can provide you more context!

@sebj54 I do not have the error. I can't reproduce it at all.

Okay, so I'll try to provide you more context.

I don't build the project with cordova build ios command line but I run cordova prepare instead + run from Xcode.
Like I said before, I have last versions of MacOS, Xcode and the cocoapods' gem.
I have the ld: library not found for -lGoogleToolboxForMac issue after adding the phonegap-plugin-push plugin. I have to manually run pod install.

Regarding that lGoogleToolboxForMac issue, everyone is not affected by the problem. I guess it is the same for the current issue.
Just asking, don't be mad at me if I'm wrong, can the Deployment target be set in the podfile or something that this plugin can specify?
If not, I think we should add a paragraph in INSTALLATION.md to inform about this problem that might occurs.

I am also getting clang: error: -fobjc-weak is not supported on the current deployment target. Didn't change anything except removing and re-adding the platform

same issue for me, i got the -lGoogleToolboxForMac error first, then ran pod install so maybe its somehow related.
workaround of setting deployment target of nanopb to 9.0 solved it

▸ Compiling GTMNSData+zlib.m
▸ Compiling GoogleToolboxForMac-dummy.m
▸ Compiling GTMLogger.m
▸ Compiling GTMNSData+zlib.m
▸ Building Pods/Protobuf [Release]
▸ Check Dependencies
▸ Compiling Any.pbobjc.m
▸ Compiling Api.pbobjc.m
▸ Building Pods/nanopb [Release]
▸ Check Dependencies
▸ Compiling nanopb-dummy.m
❌  clang: error: -fobjc-weak is not supported on the current deployment target
How can I change  deployment target  if I compile not in xcode?

I'm going to close this as I can't reproduce the issue and all new apps have to target iOS 9.0 or later now.


Reorganize repo and replace demo project

Cleans things up and makes the plugin easier to package by moving everything in the package into one directory (also removes the need for duplicated instances of the addon files, since the demo can just load directly from the addons directory).
Replaces the demo project with a simple demo that works with the latest version of the library (pretty similar to CoffeeCoder1/godot-pure-data-test-project).
(resolves #8)
Adds a (very) basic import plugin for .pd files.
Updates the binaries to a newer build.

Awesome. Just one thing. I think the godot asset lib works by expecting their to be a dir named “addons” in the root of the git repo.


TCP port forwarding

Add a CRD or ConfigMap for tcp port forward.
We can't use Ingress Route for all our services (some of them not use http & etc),
so we currently use haproxy for tcp port forwarding from K8s.
K8s 1.12+
Linux
Several local baremetal setups
May be i misunderstood documentation and contour already can do that.
Thanks.

Thank you for raising this issue.
Contour can do TCP forwarding when the TCP stream is encapsulated in TLS. This is currently implemented only in IngressRoute, we haven't backported it do Ingress.
You can mix and match Ingress and IngressRoute objects in a k8s cluster using Contour.
Can you please tell me more about your requirements, perhaps there is something that can be done to satisfy them.

As example, we expose rtmp.
Some times Postgres & etc app specific things. All without ssl.

Thank you for your reply. At the moment contour needs TLS encapsulation to use the SNI handshake message to direct the connection to the correct backend service. Without this encapsulation the only way I know to separate the different TCP streams is to assign each service it its own tcp port. You mentioned that in your environment you are using bare metal, so I'm guessing you're using your own firewall or similar to direct traffic into your k8s cluster, why not just send the traffic directly to the services you needed, and cut contour out of the loop?

@davecheney, sorry for long answer
Yep, we have firewall, but it between external networks & cluster, so it know nothing.
We use currently:
internet - external firewall -  K8s(VIP/VRRP - Haproxy/Ingress - SVC - Pod)
Thanks.

Another example, currently K8s kubectl use SPDY for exec.
So envoy can't pass exec to API server.

If you need raw tcp forwarding to a service on a bare metal cluster I suggest something like MetalLB. That operates at Layer 3.

Thank you for raising this issue. I am going to close it because it is outside the scope of Contour's requirements. Contour is an L7 http reverse proxy, this is somewhat complicated by our support for L4 TCP+TLS proxying, but this does not make Contour a generic L3 TCP firewall. I think you would be better served by using a different product for your cluster.


fix: minor syntax error in example code

Fix of a small syntax error in the example code 😄

Thank you so much! ❤


CONSULT README

This is a breaking change.
Use of the ?. is required for perf reasons. DO NOT ignore this change. The old version suffered from perf problems due to string allocations.


Add class Decorator Ruby Project Module four

In this project,

I use the Decorator design pattern to correct the names of people.
I understand the concept of inheritance and composition in deep.

Thank you for reviewing my project!!!!.

Hi @juaryimami 😊,
STATUS: APPROVED! 🥇 💯

Your project is complete!  There is nothing else to say other than... it's time to merge it :shipit: 🚀
Congratulations! 🎉
Highlights
✅ Project has met all the technical aspects you needed for this project. Keep rocking!
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Remember to tag me in your question so I can receive the notification.

As described in the Code reviews limits policy  you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.


Introduce support for emitting lineage in BQ Source

Adds a Helper class which wraps around StringSet metrics to define sources/sinks metrics for lineage.
Add support in BQ IO Java SDK sources to emit the dataset they are accessing as lineage via stringset metrics.

addresses https://github.com/apache/beam/issues/31804
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI or the workflows README to see a list of phrases to trigger workflows.

R: @robertwb

It causes Java PostCommit to fail due to same reason of #31814 . When there is StringSet counter in the pipeline, Dataflow legacy runner pipeline fails updating work item. This is due to backend not supporting it


generate_report - report_title not working

ive tried to generate a report which works but when i try to specify the report_title the generated report isnt named the same as specified:
import datetime from datetime import date, timedelta nowstring = datetime.datetime.now().strftime("%Y%m%d%H%M%S") report = survey_by_id.generate_report(templates[6], where="objectid=10471", report_title="SUR_{0}".format(nowstring), folder_id=folder_ID) print(report)
returns
<Item title:"Survey_V3_report_9c629a"

Hello @StuMooreCGAS,
Please ensure the version of the ArcGIS API for Python you are using is version 1.9. Prior to the 1.9 release of the Python API the generate_report method was using retired syntax when submitting the request to the Survey123 Report REST API. With Python API version 1.9 and later this has been resolved.
Thank you,
Zach

thanks @Zachary-Sutherby i'm using the "ArcGIS Notebook Python 3 Standard - 5.0" in ArcGIS Online, i have to say i don't know what version it is
thanks
Stu

Hello @StuMooreCGAS,
Unfortunately the current version of the ArcGIS API for Python in ArcGIS Online is 1.8.4, please see the Available Python libraries ArcGIS Online documentation for reference.
The best way to work with the 1.9 version of the ArcGIS API for Python is to upgrade the arcgis package in a cloned Python environment in ArcGIS Pro. Please use this link for reference regarding how to upgrade the Python API version in ArcGIS Pro.
Thank you,
Zach

thanks @Zachary-Sutherby that's great it didn't occur that it was a different version
i'll close the issue
thanks
Stu


[Feature Request] Folder view/option for filler or channel bumps

Hello,
I'm new to ErsatzTV. I previously used the PseudoTV Kodi addon. So far, I love the app. I'm sure there's something I'm doing incorrectly here, but I'd like to have a folder view or option when organizing and applying fillers. I do not require metadata or poster views for what are essentially commercials.
Currently, I'm adding filler via the 'Media Sources' tab, selecting 'Local Libraries' (I keep fillers for each channel within its own folder), assigning the media type to 'Other Videos', then to a 'Collection', and finally to the 'Filler Presets' tab. This can become extremely hectic when I add multiple 'Other Videos' folders for each channel. It feels like one too many steps to have ErsatzTV grab an item from a folder and add it to the schedule as a filler. I'm having a very tough time. Even if the solution is to sort the 'Other Videos' view by library name, it would help immensely when I add those fillers to a collection and setup a filler preset.
If I'm doing something wrong in the setup, please let me know. I'm still learning the ins and outs of the app.
Thank You

I agree the other video view is not ideal for that content type. I'll think about how we could improve it. Perhaps something closer to the image library view.


When loading multiple gpx files, labels from first file stay visible

When importing one track after the other (by drag and drop), the labels of the tags are wrong. Some of the labels from the first tracks are displayed on tags of the second track.
I added two tracks. First track has a tag with 'Lindenstraße 4 keine Moschee' in Furtwangen (48.05102/8.20671). Importing the second track afterwards, the label appears in Waldau (47.98213/8.16653) This should be the filename of an image (0DKl_dil--.1.jpg)
twotracks_errorlabel.zip

This NOT a duplicate of #3031 but a different issue.
It's really confusing, if you map one track after the other and see completly wrong tags on your editor. Filenames of images and text comments are mixed up, old and new tags are mixed up.

May it be, that during loading of a new track the old 'database' is not cleaned up correctly?
May it have to do with characters in the filename like <.> in the example <0DKl_dil--.1.jpg> ?

Thanks for the bug report, I do see this issue with the gpx file labels..


Crawl PDF content and metadata from a JSON file

Hi, we have a JSON file which has data from our AEM DAM repository.
The files stored in AEM DAM are mostly PDF files. We need to read PDF content and index them.
We have exported the metadata as well as PDF URL in the json file and want to read this JSON. The process will read metadata as well as read the PDF content and then index it into Elastic Search.
Do you think we can use HTTP collector for this use case. If yes can you please guide.
Thanks,
Amit

So I tried testing the HTTP collector for the JSON content. The JSON is located on a different server. When I try crawling the JSON it indexed the complete JSON as one record. It did not crawl the URLs embedded in the JSON fields.
Should I be using link extractors so that those PDF URLs are crawled?

Ok I made some more progress. I was able to use RegexLinkExtractor to get the PDF link from the JSON file. So far so good.
But when I looked at my index - seems the PDF isnt parsed completely. I only see some partial text being crawled. It missed lot of the text from the initial page and also did index few paragraphs from the second page...thats it...
Any idea what could be wrong?

Hello! First, congrats on your progress.   It looks like you are quite close.
Just like that, I can't tell you the cause of getting a partial content. It could be that some pages are images of text instead of the actual text.  If so, it is normal you do not get the text, but you can use the OCR support the collector has.
It is hard to tell without reproducing it.  Can you share a sample PDF causing this issue, along with your config?

First of all - I am impressed with the way crawler works!
You are absolutely right....I looked at the PDF and it seems the PDF has images with the text. My bad. I will attach the sample PDF in this comment.
Overall I want some guidance on the way I am trying to use the HTTP Collector. Like I mentioned earlier - we are having a huge JSON which has metadata including the PDF URL for all assets (~30K PDFs) in our AEM DAM . We need to index both metadata as well as PDF content in Elastic Search. The metadata fields in the JSON should be indexed as separate fields in Elastic Search and not the complete json record in one field.
The JSON is in this flat format:
{
"CRAWLABLE": "true",
"COUNTRIES": "US",
"CREATED_DATE": "2009-03-27T17:44:55.000Z",
"ASSET_PATH": "https://example.com/pdf/testing.pdf",
"CONTENT_TYPE_NAME": "training-materials",
"CONTENT_TYPE_TITLE": "Training Materials",
"ABSTRACT": "",
"DOC_TYPE": "Asset",
"LANGUAGE_TITLE": "English",
}
The above represents one record.
One option is to index the metadata using a separate process and use HTTP collector to fetch PDF URLs and then crawl them to get the content for indexing. This is not what we want to follow since it would mean first creating ES record with just the metadata and then using Elastic Search Committer to update the same record with PDF content.
Preference is to be able to read the entire JSON record. Pick each field and crawl the PDF URL and index in one shot. The ES record would look like exactly the way JSON is but with an additional field "CONTENT" which will have PDF crawled content.
Is this something we can do? Mainly how do I read the JSON fields individually.

Testing.pdf
PDF file which had text in images

Pascal, were you able to look the files I attached in my previous comments.

Just to confirm, are you saying you want to store the PDF in its original binary format or its text?
If you want to search through it and want its text, I recommend you have a look at Tesserac OCR.  You can configure the Importer module to use it via the GenericDocumentParserFactory.
OCR is not always 100% accurate, but it can get you quite far if your document images are of decent quality.
With Tesseract, you will have both the metadata AND content extracted during the same pass.  Is it what you are after?


DOC: improve HACKING guide - mention reviewing PRs as contribution.

[ci skip]

Maybe you could make a "sign-up sheet" of people who can review certain types of PRs, and notify them when things need reviewing?  I've gotten a few notifications like that in the past, and I wouldn't know about the PRs otherwise.

Github has a feature to do some stuff like that automatically: https://help.github.com/articles/about-codeowners/  That's a bit like the "maintainers" idea we had previously, but with automatic "enforcement" (in that it marks you automatically as a reviewer).

The codeowners thing is interesting, I'd be in favor of adding that (in another PR). Then people can be in charge of their own notifications.

The wording "adequately discussed prior to implementation" sounds
strange --- if something wasn't discussed, it's not possible to go back
in time... Maybe write just "adequately discussed".
.
It may also make sense to add/change/remove some points to make the PR
checklist more specific to Scipy (the list comes from an Android app, a
different type of a project):
.

Is the feature scientifically sound? Algorithms may be known to work
based on literature; otherwise, closer look at correctness is valuable.
.
The "unit tests" and "easy to understand" may be same as the
"Contributing new code" guidelines?

Thanks @pv, good point - fixed in most recent commit.

any objections to merging this?

All review comments seem to be addressed. I'll merge this now, further changes can be done in follow-up PRs. Thanks Ralf, all!


Restore dependencies in buildall.bat

Without this, even the C++ code fails to build (from a clean clone) due to missing includes.
Note that this requires that nuget.exe is on the path. Better alternatives welcomed...

Can one of the admins verify this patch?

Can one of the admins verify this patch?

Can one of the admins verify this patch?

Can one of the admins verify this patch?

This is OK to test

Can one of the admins verify this patch?

Can one of the admins verify this patch?

retest this

test this please

Fixes #5769.

All test failures are known flakes.


Search by sdss_id & catalog_id

Adding search by sdss_id and catalog_id under the /query endpoint.

Also, I think there can be more one result returned by sdss_id, so having it return a list makes sense.  I'm not sure if a search by catalogid can return more than one result, so maybe that should just return the object?

no problem.


New release?

I apologise for the gumption in my making this suggestion, but I wonder given that develop now has a couple of bug fixes that v3.0.9 doesn't (i.e., #65 and #70 plus the crc32c warning issue), whether it might be nice to tag a v3.0.10?
Of course you will have your own processes and timelines which I understand, but it will save us carrying a patch in https://github.com/JuliaBinaryWrappers/libmseed_jll.jl and also have libmseed cross compiled and working for all these targets.

Thanks, Chad!

You're welcome and it was time.
NOTE that this version of the library remains PRE_RELEASE as the version "3" of data format that it supports is not yet a standard.  Two things to keep in mind:

the v3 library API remains subject to change
the v3 format should not be used at all except for testing

The good news is that review of the v3 format is under review.
I also took the opportunity to rename the master branch to main.


Role of Gaming To Adopt Crypto Worldwide

Description: This talk aims to introduce the potential of gaming industry for global adoption for crypto/blockchain. The way means for entertainment industry changes from Theatre to OTTs to now Gaming. I'll be happy to cover all major potential means for global adoption of crypto/blockchain & how this industry can create massive job opporunity .
Style of Session: 10 min talk or 45 min
Submission Type: Individual or Panel Discussion
About Me: I'm Founder of StockMarketFair - World's First Online Stock Market Gaming Exchange with over 500,000+ Players. I have scalled business from zero to multi million dollar mark. I have been advisor to couple of crypto projects, Some of them are CrypDax - A leading crypto asset digital management platform & MarsPay -  A Crypto Gateway for B2C. I have worked with crypto fund globally & happy to chat with great minds in person.
Linkedin

You can email at @.***
On Wed, 22 Jun 2022 at 10:15 PM, Web3ConfIndia @.***>
wrote:

Hello, @kingvish1 https://github.com/kingvish1 Congratulations on
getting shortlisted for a talk at Web3Conf India. Please share your email
so that we can take it further.
—
Reply to this email directly, view it on GitHub
https://github.com/Web3-Conf-India/Proposal-2022/issues/43#issuecomment-1163367878,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AG6SI2E44PHDK4WTP7OU55LVQM7KDANCNFSM5W4M6JIA
.
You are receiving this because you were mentioned.Message ID:
@.***>

Hey @kingvish1! Seems like your email isn't visible, do you mind dropping it again? If not feel free to drop a mail to<EMAIL_ADDRESS>with your proposal link and name.

Hi Aditya,
Sure, that's my email<EMAIL_ADDRESS>& I have send you the revert on your mail as well.

Thank you!
On Mon, 27 Jun 2022 at 10:35, Vishesh @.***> wrote:

Hi Aditya,
Sure, that's my email @.*** & I have send you the
revert on your mail as well.
—
Reply to this email directly, view it on GitHub
https://github.com/Web3-Conf-India/Proposal-2022/issues/43#issuecomment-1166850294,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AM6VQJIAXHS76AMZJ33J2G3VREZBTANCNFSM5W4M6JIA
.
You are receiving this because you commented.Message ID:
@.***>

Hi Aditya,
Sure, This is my email id :- @.***
Best,
Vishesh
On Sun, 26 Jun 2022 at 1:08 PM, Aditya Gupta @.***>
wrote:

Hey @kingvish1 https://github.com/kingvish1! Seems like your email
isn't visible, do you mind dropping it again? If not feel free to drop a
mail to @.*** with your proposal link and name.
—
Reply to this email directly, view it on GitHub
https://github.com/Web3-Conf-India/Proposal-2022/issues/43#issuecomment-1166441472,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AG6SI2EBO6O3DXI5CDYL2LTVRACG3ANCNFSM5W4M6JIA
.
You are receiving this because you were mentioned.Message ID:
@.***>


Re-integrate an open source acknowledgements section

Currently broken and being removed (#332), we should still list the open source contributions though. Since we're reworking a lot of the deps for the SwiftUI design (#331), let's revisit for that project rather than try to list the current UIKit deps that will mostly be removed.

@nickoneill thoughts about using this? It seems to be pretty up-to-date and has dozens of forks and hundreds of stars.


Fix autoCenterTooltip property behavior for small tooltips

Resolves #913
For small tooltips shift value is negative and according to the calculations for left property its absolute value will be added to leftSpacing value resulting in correct tooltip position

Thanks for this PR @onyx-flame


haku adding dl_iterate_phdr bsd extension

@bors r+

:pushpin: Commit 009dc97a94246126d20e2778a23379ff530809d8 has been approved by JohnTitor
It is now in the queue for this repository.

:lock: Merge conflict
This pull request and the master branch diverged in a way that cannot be automatically merged. Please rebase on top of the latest master branch, and let the reviewer approve again.
How do I rebase?
Assuming self is your fork and upstream is this repository, you can resolve the conflict following these steps:

git checkout dl_iterate_phdr_haiku (switch to your branch)
git fetch upstream master (retrieve the latest master)
git rebase upstream/master -p (rebase on top of it)
Follow the on-screen instruction to resolve conflicts (check git status if you got lost).
git push self dl_iterate_phdr_haiku --force-with-lease (update this PR)

You may also read Git Rebasing to Resolve Conflicts by Drew Blessing for a short tutorial.
Please avoid the "Resolve conflicts" button on GitHub. It uses git merge instead of git rebase which makes the PR commit history more difficult to read.
Sometimes step 4 will complete without asking for resolution. This is usually due to difference between how Cargo.lock conflict is handled during merge and rebase. This is normal, and you should still perform step 5 to update this PR.

Error message
Auto-merging src/unix/haiku/mod.rs
CONFLICT (content): Merge conflict in src/unix/haiku/mod.rs
Automatic merge failed; fix conflicts and then commit the result.

:umbrella: The latest upstream changes (presumably #3158) made this pull request unmergeable. Please resolve the merge conflicts.

@bors r+

:pushpin: Commit 47b56cd35b98b6d840452bf0ff70b00ff41461e5 has been approved by JohnTitor
It is now in the queue for this repository.


improve onboarding experiment 1

Task/Issue URL: https://app.asana.com/0/392891325557410/1110624620486758
Tech Design URL: n/a
CC:
Description:
Shows new onboarding depending on the variant.  See tests for details.
Tests should be performed on a range of devices:

iPhone SE
iPhone 6 / 8
iPhone X
iPad

Note: ATB tests now pass an environment variable to override the variant for consistency, setting it to sc, so that UI tests don't need to be updated for every experiment.
Steps to test this PR:
Control group:

Set variant to the control group (or blank)
Onboarding should behave as it has done thus far

Summary:

Set the variant to the summary onboarding
The onboarding is now a single summary page with a "Starting Browsing" button
Tapping the button cross-dissolves to the home screen
Rotation not supported for phone devices, but is for iPad devices

Contextual:

Set the variant to the contextual onboarding
The app loads straight in to the home view
The first time on the home view a contextual tip showing "search privately" message should show
The second time on the home view a contextual tip showing "customize" message should show
The first time browsing a none-DDG page the "privacy grade" tip should show
The second time browsing a non-DDG page (could even just be tapping a link on the above page) the "fire button" tip should show
Tapping anywhere on the screen should dismiss the tip[1] while simultaneously allowing whatever interaction the user intended to do

[1] A delay of 1 second has been deliberately added to prevent accidental dismissal.

Internal references:
Software Engineering Expectations
Technical Design Template

(Hopefully) fixed the ATB tests by passing an environment variable to override the variant for consistency, setting it to sc, so that UI tests don't need to be updated for every experiment.

@bwaresiak that's ready for re-review when you get chance, please.
We're going to ignore the edge-case behaviours you found for this experiment. Good spots though!
I can't work out what's wrong with BitRise - it'll build develop, but not this branch. Please run the unit and atb tests locally to be sure.
Thanks!


Add X-Personium-EventId and X-Personium-RuleChain Http headers.

Add headers for personium/personium-core#123.

released v1.4.8


Orchard.MediaLibrary - Wrong css causes txt wrap to fail

And should bind the value to title attrib as well.


increasing ResNet output size by changing block.expansion does not work

Hello,
I am working with ResNet-18 and actually, after discarding the last self.fc layer, we obtain an output tensor of shape [1,512]. For my research, I would like to obtain different sizes such as [1,1024] or [1,2048] for instances.
What works
Inside the ResNet, changing the final output channel sizes works perfectly, namely:
self.layer1 = self._make_layer(block, 64, layers[0])
self.layer2 = self._make_layer(block, 128 , layers[1], stride=2, dilate=replace_stride_with_dilation[0])
self.layer3 = self._make_layer(block, 256, layers[2], stride=2, dilate=replace_stride_with_dilation[1])
self.layer4 = self._make_layer(block, 512 * 2, layers[3], stride=2, dilate=replace_stride_with_dilation[2])

I just added the * 2 factor and everything behaves as expected.
What does not work
Reading the code and the paper, it appears that increasing the block.expansion parameter from 1 to 2 inside our BottleNeck (or BasicBlock in the ResNet-18 case) should expand the output channel dimension for each layer (see the line self.inplanes = planes * block.expansion inside the _make_layer() function), but it does not work and gives the following error at the first forward pass. My input tensor is of size [1,1,512,512]. I changed the input channel of the first Conv2d accordingly.
[<ipython-input-61-1b2c58243ae8>](https://vzt71jrqtl-496ff2e9c6d22116-0-colab.googleusercontent.com/outputframe.html?vrz=colab-20220329-060048-RC00_437987085#) in forward(self, x)
    103         print(identity.shape)
    104
--> 105         out += identity
    106         out = self.relu(out)
    107

RuntimeError: The size of tensor a (64) must match the size of tensor b (128) at non-singleton dimension 1

Possible explanation
The forward function of the BasicBlock module is the following:
def forward(self, x: Tensor) -> Tensor:
      identity = x

      print(identity.shape)

      # torch.Size([1, 64, 128, 128])
      # torch.Size([1, 64, 128, 128])

      out = self.conv1(x)
      out = self.bn1(out)
      out = self.relu(out)

      out = self.conv2(out)
      out = self.bn2(out)

      print(out.shape)

      print(self.downsample)

      if self.downsample is not None:
          identity = self.downsample(x)

      print(identity.shape)

      out += identity
      out = self.relu(out)

      return out

with the prints I've added, we can see the shapes before the error happens and the downsample attribute:
identity: torch.Size([1, 64, 128, 128])
out: torch.Size([1, 64, 128, 128])
downsample: Sequential(
  (0): Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
  (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
identity (after downsample): torch.Size([1, 128, 128, 128])

In other words, it looks like the downsample increases the size of identity but it does not match the shape of the out tensor. So I would like to know if I missed something I had to add, in addition to the block.expansion parameter ? I tried to increase the in_planes and planes parameters without success...
I might not be the first who wants to tune this expansion parameter, and even if I already have a solution that answers to my problem, I would like to know where I miss the point.
Thanks a lot!

@esarf Thanks for reporting this.
Could you please provide a snippet that fully reproduces this and the patch/diff of what you try to modify on the TorchVision code? This will help us investigate.

@datumbox Thanks for your answer. Here is the full code with my modifications:
def conv3x3(in_planes: int, out_planes: int, stride: int = 1, groups: int = 1, dilation: int = 1) -> nn.Conv2d:
    """3x3 convolution with padding"""
    return nn.Conv2d(
        in_planes,
        out_planes,
        kernel_size=3,
        stride=stride,
        padding=dilation,
        groups=groups,
        bias=False,
        dilation=dilation,
    )

def conv1x1(in_planes: int, out_planes: int, stride: int = 1) -> nn.Conv2d:
    """1x1 convolution"""
    return nn.Conv2d(in_planes, out_planes, kernel_size=1, stride=stride, bias=False)

class BasicBlock(nn.Module):
    expansion: int = 2      # MODIF: put 2 instead of 1 here

    def __init__(
        self,
        inplanes: int,
        planes: int,
        stride: int = 1,
        downsample: Optional[nn.Module] = None,
        groups: int = 1,
        base_width: int = 64,
        dilation: int = 1,
        norm_layer: Optional[Callable[..., nn.Module]] = None,
    ) -> None:
        super().__init__()
        if norm_layer is None:
            norm_layer = nn.BatchNorm2d
        if groups != 1 or base_width != 64:
            raise ValueError("BasicBlock only supports groups=1 and base_width=64")
        if dilation > 1:
            raise NotImplementedError("Dilation > 1 not supported in BasicBlock")
        # Both self.conv1 and self.downsample layers downsample the input when stride != 1
        self.conv1 = conv3x3(inplanes, planes, stride)
        self.bn1 = norm_layer(planes)
        self.relu = nn.ReLU(inplace=True)
        self.conv2 = conv3x3(planes, planes)
        self.bn2 = norm_layer(planes)
        self.downsample = downsample
        self.stride = stride

    def forward(self, x: Tensor) -> Tensor:
        identity = x

        print(identity.shape)

        out = self.conv1(x)
        out = self.bn1(out)
        out = self.relu(out)

        out = self.conv2(out)
        out = self.bn2(out)

        print(out.shape)

        print(self.downsample)

        if self.downsample is not None:
            identity = self.downsample(x)

        print(identity.shape)

        out += identity
        out = self.relu(out)

        return out

class Bottleneck(nn.Module):
    # Bottleneck in torchvision places the stride for downsampling at 3x3 convolution(self.conv2)
    # while original implementation places the stride at the first 1x1 convolution(self.conv1)
    # according to "Deep residual learning for image recognition"https://arxiv.org/abs/1512.03385.
    # This variant is also known as ResNet V1.5 and improves accuracy according to
    # https://ngc.nvidia.com/catalog/model-scripts/nvidia:resnet_50_v1_5_for_pytorch.

    expansion: int = 4

    def __init__(
        self,
        inplanes: int,
        planes: int,
        stride: int = 1,
        downsample: Optional[nn.Module] = None,
        groups: int = 1,
        base_width: int = 64,
        dilation: int = 1,
        norm_layer: Optional[Callable[..., nn.Module]] = None,
    ) -> None:
        super().__init__()
        if norm_layer is None:
            norm_layer = nn.BatchNorm2d
        width = int(planes * (base_width / 64.0)) * groups
        # Both self.conv2 and self.downsample layers downsample the input when stride != 1
        self.conv1 = conv1x1(inplanes, width)
        self.bn1 = norm_layer(width)
        self.conv2 = conv3x3(width, width, stride, groups, dilation)
        self.bn2 = norm_layer(width)
        self.conv3 = conv1x1(width, planes * self.expansion)
        self.bn3 = norm_layer(planes * self.expansion)
        self.relu = nn.ReLU(inplace=True)
        self.downsample = downsample
        self.stride = stride

    def forward(self, x: Tensor) -> Tensor:
        identity = x

        print(identity.shape)

        out = self.conv1(x)
        out = self.bn1(out)
        out = self.relu(out)

        out = self.conv2(out)
        out = self.bn2(out)
        out = self.relu(out)

        out = self.conv3(out)
        out = self.bn3(out)

        print(out.shape)

        print(self.downsample)

        if self.downsample is not None:
            identity = self.downsample(x)

        out += identity
        out = self.relu(out)

        return out

class ResNet(nn.Module):
    def __init__(
        self,
        block: Type[Union[BasicBlock, Bottleneck]],
        layers: List[int],
        num_classes: int = 1000,
        zero_init_residual: bool = False,
        groups: int = 1,
        width_per_group: int = 64,
        replace_stride_with_dilation: Optional[List[bool]] = None,
        norm_layer: Optional[Callable[..., nn.Module]] = None,
    ) -> None:
        super().__init__()
        _log_api_usage_once(self)
        if norm_layer is None:
            norm_layer = nn.BatchNorm2d
        self._norm_layer = norm_layer

        self.inplanes = 64
        self.dilation = 1
        if replace_stride_with_dilation is None:
            # each element in the tuple indicates if we should replace
            # the 2x2 stride with a dilated convolution instead
            replace_stride_with_dilation = [False, False, False]
        if len(replace_stride_with_dilation) != 3:
            raise ValueError(
                "replace_stride_with_dilation should be None "
                f"or a 3-element tuple, got {replace_stride_with_dilation}"
            )
        self.groups = groups
        self.base_width = width_per_group
        self.conv1 = nn.Conv2d(1, self.inplanes, kernel_size=7, stride=2, padding=3, bias=False)    # MODIF: put 1 channel instead of 3 here
        self.bn1 = norm_layer(self.inplanes)
        self.relu = nn.ReLU(inplace=True)
        self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)
        self.layer1 = self._make_layer(block, 64, layers[0])
        self.layer2 = self._make_layer(block, 128, layers[1], stride=2, dilate=replace_stride_with_dilation[0])
        self.layer3 = self._make_layer(block, 256, layers[2], stride=2, dilate=replace_stride_with_dilation[1])
        self.layer4 = self._make_layer(block, 512, layers[3], stride=2, dilate=replace_stride_with_dilation[2])
        self.avgpool = nn.AdaptiveAvgPool2d((1, 1))
        self.fc = nn.Linear(512 * block.expansion, num_classes)

        for m in self.modules():
            if isinstance(m, nn.Conv2d):
                nn.init.kaiming_normal_(m.weight, mode="fan_out", nonlinearity="relu")
            elif isinstance(m, (nn.BatchNorm2d, nn.GroupNorm)):
                nn.init.constant_(m.weight, 1)
                nn.init.constant_(m.bias, 0)

        # Zero-initialize the last BN in each residual branch,
        # so that the residual branch starts with zeros, and each residual block behaves like an identity.
        # This improves the model by 0.2~0.3% according to https://arxiv.org/abs/1706.02677
        if zero_init_residual:
            for m in self.modules():
                if isinstance(m, Bottleneck):
                    nn.init.constant_(m.bn3.weight, 0)  # type: ignore[arg-type]
                elif isinstance(m, BasicBlock):
                    nn.init.constant_(m.bn2.weight, 0)  # type: ignore[arg-type]

    def _make_layer(
        self,
        block: Type[Union[BasicBlock, Bottleneck]],
        planes: int,
        blocks: int,
        stride: int = 1,
        dilate: bool = False,
    ) -> nn.Sequential:
        norm_layer = self._norm_layer
        downsample = None
        previous_dilation = self.dilation
        if dilate:
            self.dilation *= stride
            stride = 1
        if stride != 1 or self.inplanes != planes * block.expansion:
            downsample = nn.Sequential(
                conv1x1(self.inplanes, planes * block.expansion, stride),
                norm_layer(planes * block.expansion),
            )

        layers = []
        layers.append(
            block(
                self.inplanes, planes, stride, downsample, self.groups, self.base_width, previous_dilation, norm_layer
            )
        )
        self.inplanes = planes * block.expansion
        for _ in range(1, blocks):
            layers.append(
                block(
                    self.inplanes,
                    planes,
                    groups=self.groups,
                    base_width=self.base_width,
                    dilation=self.dilation,
                    norm_layer=norm_layer,
                )
            )

        return nn.Sequential(*layers)

    def _forward_impl(self, x: Tensor) -> Tensor:
        # See note [TorchScript super()]
        x = self.conv1(x)
        x = self.bn1(x)
        x = self.relu(x)
        x = self.maxpool(x)

        x = self.layer1(x)
        x = self.layer2(x)
        x = self.layer3(x)
        x = self.layer4(x)

        x = self.avgpool(x)
        x = torch.flatten(x, 1)
        #x = self.fc(x)

        return x

    def forward(self, x: Tensor) -> Tensor:
        return self._forward_impl(x)

def _resnet(
    block: Type[Union[BasicBlock, Bottleneck]],
    layers: List[int],
    progress: bool,
    **kwargs: Any,
) -> ResNet:

    model = ResNet(block, layers, **kwargs)

    return model

def resnet18(*, progress: bool = True, **kwargs: Any) -> ResNet:
    r"""ResNet-18 model from
    `"Deep Residual Learning for Image Recognition" <https://arxiv.org/pdf/1512.03385.pdf>`_.

    Args:
        weights (ResNet18_Weights, optional): The pretrained weights for the model
        progress (bool): If True, displays a progress bar of the download to stderr
    """
    weights = None

    return _resnet(BasicBlock, [2, 2, 2, 2], progress, **kwargs)

model = resnet18() ```

As you can see, I only changed the first convolution (1 channel instead of 3) and the expansion parameter in the BasicBlock with 2 instead of 1. I tested the forward pass with a random image:

```python
img = torch.randn(1,1,512,512)
model(img)

And got this immediately:
torch.Size([1, 64, 128, 128])     # identity.shape
torch.Size([1, 64, 128, 128])     # out.shape
Sequential(
  (0): Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
  (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)                                               # downsample
torch.Size([1, 128, 128, 128])   # identity.shape after downsample
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
[<ipython-input-3-748d27272d07>](https://localhost:8080/#) in <module>()
      1 img = torch.randn(1,1,512,512)
      2
----> 3 model(img).shape

6 frames
[<ipython-input-2-9cbb4e23f480>](https://localhost:8080/#) in forward(self, x)
     96         print(identity.shape)
     97
---> 98         out += identity
     99         out = self.relu(out)
    100

RuntimeError: The size of tensor a (64) must match the size of tensor b (128) at non-singleton dimension 1

As you can see we just have tensors with different shapes between out and identity due to the downsample operation. So I do not really know how to solve it. I must miss something in the deep understanding of ResNet, however I thought it was clear for me.
Thank you!
Emma

@esarf Thanks for the info.
I looked into this and I believe that the expansion property is not meant to be overwritten like that. It's a read-only internal property used by the private _make_layer method so that it figure out the number of channels. Note that modifying the expansion is also the wrong thing to do here as it will have global effect (it's a class-level property). Moreover the BasicBlock is not supposed to expand the input channels or apply the bottleneck logic.
On the other hand, your approach of doubling the output channels when you call _make_layer, is the right approach. Of course this is not the approach that the ResNet paper recommends and that's why our implementation doesn't make this configurable. Doubling the channels, while halving the edge of the input if an extremely standard approach to scale networks so adding a property to overwrite this is not something worth doing here.
As far as I see there are 3 options for you:

Create a custom ResNet class that inherits from TorchVision's ResNet class to make the necessary modifications on the model. Note that doing so, you would be forced to use private methods of the class that might change on the future. An alternative if you want stability is to copy the implementation.
Do "model surgery" to replace the old layer4 block with something that meets your needs. You can do this simply by assigning your own custom block model.layer4 = custom_conv_block.
Instead of modifying the architecture just add a projection layer from 512 to 1024 channels at the end. This way, you won't have to deal with custom implementations. Whether this makes sense depends on your use-case.

I'm going to close the issue as I think the above answers the question but if you still face problems feel free to reopen.

So in my opinion, such trick will work if you use bottleneck to initialize the resnet, but won't work when you use basicblock since basicblock dose not use self.expansion at all?


Proposal: Optimizing Ordinals Protocol Performance for Log-Based Protocols

Background
The Ordinals protocol is currently facing a performance issue related to protocols built on top of it, such as BRC20, which use Inscriptions as logs. After these Inscriptions are inscribed and indexed, they essentially become obsolete, with users no longer concerned about them and often spending the BTC contained within. However, the Ordinals protocol continues to track SatPoint changes for these Inscriptions, leading to an increasing number of Inscriptions in certain transactions. This significantly impacts the performance of Ordinals protocol indexers.
Problem Statement
The continuous tracking of SatPoint changes for Inscriptions used as logs in higher-layer protocols (e.g., BRC20) is causing unnecessary computational overhead and degrading the performance of Ordinals indexers.
Examples of Problematic Transactions
To illustrate the severity of this issue, consider the following examples:

Transaction ID: 80c233e3d72b5dbb735b7e06acd4accd74f33b5703292a36d9d0faba79e45c63

Transaction ID: 832e9a18d07e9dcdaa21d4a2b548c28d17f0ad21ac5853976600d2c2853d4878
The two transactions involve changes to over 10,000 Inscriptions. The sheer volume of Inscription updates in a single transaction demonstrates the scale of the tracking overhead.

Proposed Solutions
To address this issue, we propose the following solutions:

Selective Tracking of Inscriptions
Implement a mechanism to stop tracking SatPoint changes for Inscriptions that are used as logs by protocols like BRC20. This would involve identifying such Inscriptions and excluding them from ongoing SatPoint change tracking.

One-Time Inscription Flag
Introduce a new attribute or instruction at the Ordinals protocol level to flag an Inscription as "one-time" or "ephemeral". This flag would indicate that the Inscription should not be tracked for SatPoint changes after its initial inscription, similar to the OP_RETURN opcode in Bitcoin UTXO.

Thanks for making this issue!
I think this is worth considering. We could add an optional flag, off by default, --no-index-brc20, which, if set, causes ord to treat BRC-20 inscriptions as being unbound. I.e, not having any particular location. ord would still recognize that these inscriptions were created, but would not track them.
However, we know that there are a large number of BRC-20 inscriptions, however, we don't know what the performance impact of these inscriptions actually is, so profiling whether or not such a change would impact indexing speed is the first thing that would need to be done.
Here's a branch which unconditionally unbinds BRC-20 inscriptions: https://github.com/ordinals/ord/commit/4a873d0106624b6e87ce77ab83c1ff2ce3c0e421
I have a bunch on my plate at the moment, and don't know when I'll be able to get to this.


Fix atom_concat/3 calls that create atoms that are not used

Applying Logtalk's linter to the eye.pl  file uncovered this issue. A call such as atom_concat(prefix, _, Atom) creates an atom (second argument) that is not used and thus pollutes the atom table and creates additional work for a Prolog system atom garbage collector (which most Prolog systems don't have). It's a performance issue that can be easily fixed as in this pull request by replacing those calls with equivalent calls to the standard sub_atom/5 predicate.

Thanks @pmoura and it now also in the latest release available at

https://github.com/josd/eye/releases/tag/v21.1111.1241
https://sourceforge.net/projects/eulersharp/files/eulersharp/
https://hub.docker.com/r/bdevloed/eye/


⚠ Bofrost.be has degraded performance

In 153a6a3, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1669 ms

Resolved: Bofrost.be performance has improved in 0ee6bd8.


DATA: Lab Commands

@mimendel @terrypalo data is for data migration - models alone are not data. they just become a part of whatever task you are trying to accomplish.