https://github.com/yomorun/yomo-wasmedge-tensorflow/pull/11

Hello, I am a serverless review bot on flows.network. Here are my reviews of changed source code files in this PR.

flow/app.go
Overall, the code is well-structured and easy to understand. However, there are a few noteworthy points:

Error handling: In the Handler function, the code silently returns 0 and nil value if there's an error in initializing the VM or executing WasmEdge function. It's better to log the error for easier debugging.

Before:
// Handler process the data in the stream
func Handler(img []byte) (frame.Tag, []byte) {
    // Initialize WasmEdge's VM
    w, err := initVM()
    if err != nil {
        fmt.Printf("wasmedge init failed: %v\n", err)
        return 0, nil
    }
    ...
}

After:
// Handler process the data in the stream
func Handler(img []byte) (frame.Tag, []byte) {
    // Initialize WasmEdge's VM
    w, err := initVM()
    if err != nil {
        log.Printf("wasmedge init failed: %v\n", err)
        return 0, nil
    }
    ...
}

The cleanup of resources in WasmObj.Release() can be improved to unload registered modules from VM before releasing them.

Before:
func (w *WasmObj) Release() {
    w.tfobj.Release()
    w.tfliteobj.Release()
    w.conf.Release()
    w.vm.Release()
}

After:
func (w *WasmObj) Release() {
    w.vm.UnregisterModule(w.tfobj)
    w.vm.UnregisterModule(w.tfliteobj)
    w.tfobj.Release()
    w.tfliteobj.Release()
    w.conf.Release()
    w.vm.Release()
}

It's recommended to separate the initialization logic for WasmEdge VM into a separate function (e.g., getInitializedVM()), which returns a new, fully-initialized VM.

Code formatting: It's better to use the go fmt tool to ensure consistent formatting among your codebase.

Consider adding comments to describe what each function does for better code maintainability.

Although not a problem, the select {} statement in the main() function is used to block the process from exiting. It's better to add a comment to explain its purpose for better code readability.

Not a problem, just a suggestion: Move variables/constants, structs, and relevant methods to separate files (e.g., constants.go, structures.go, etc.) for improved organization and readability.

Here is a summary of the key changes in the patch:

The constant InferenceResultKey with a value of 0x11 is added.
The return type of Handler function is changed from (byte, []byte) to (frame.Tag, []byte), and it now returns InferenceResultKey as the first return value in the success case.
WasmObj struct type is introduced to store WasmEdge's VM related objects with a Release() method for proper cleanup.
The initVM() function now returns (*WasmObj, error) instead of  (*wasmedge.Configure, *wasmedge.VM).
The initVM() function now initializes and returns the WasmObj struct containing WasmEdge objects and handles associated error cases.
The initVM() function uses wasmedge.NewTensorflowModule(), wasmedge.NewTensorflowLiteModule(), and wasmedge.NewImageModule() instead of the previous wasmedge.NewTensorflowImportObject(), wasmedge.NewTensorflowLiteImportObject(), and wasmedge.NewImageImportObject() functions.
Error handling is improved in the initVM() function; it now returns errors instead of ignoring them.
The Handler function uses the new WasmObj struct and its Release() method for proper cleanup.
The bg.Execute("infer", img) function is changed to return a third value '_', which is ignored here.

flow/dependencies.sh
Here are some potential issues and suggestions for improvement in the script:

No error handling upon failure of individual commands: You are using set -e which causes the script to exit if any command exits with a non-zero status. However, it would be better to provide custom error messages to inform the user about what failed.

You can add custom error messages after each command like this:
command || { echo "Error Message"; exit 1; }

Hardcoding of version numbers: In the script, version numbers are hardcoded which makes it difficult to maintain and update the script.

You can use variables to store the version numbers like this:
WASMEDGE_VERSION="0.8.0"

And then use the variable in the script like this:
wget https://github.com/WasmEdge/WasmEdge/releases/download/${WASMEDGE_VERSION}/WasmEdge-${WASMEDGE_VERSION}-manylinux2014_x86_64.tar.gz

Temporary files created during the installation process are not removed: The script downloads and extracts tar files, but does not remove them after the installation. This can cause clutter in the user's system.

You can remove the temporary files after the installation process like this:
rm WasmEdge-${WASMEDGE_VERSION}-manylinux2014_x86_64.tar.gz

No check for required commands: The script assumes that required commands like wget, tar, cp and ldconfig are available on the user's system. It is good to check if the required commands are installed before executing the script.

You can add a function to check for the existence of required commands like this:
function check_command() {
  command -v "$1" >/dev/null 2>&1 || { echo >&2 "Requires '$1' but it's not installed. Please install it and run again."; exit 1; }
}

Then call this function for each required command:
check_command wget
check_command tar
check_command cp
check_command ldconfig

Script does not check for root permissions: The script has some commands that require root permissions to run. It would be helpful to inform the user to run the script as root (or by using sudo) if necessary permissions are not available.

You can check for root permissions like this:
if [ "$(id -u)" != "0" ]; then
   echo "Please run this script as root or using sudo."
   exit 1
fi

These improvements will make the script easier to maintain and more user-friendly.
This patch removes the entire original script, which means it's a complete deletion of the source code. No new changes or additions have been made in this patch. All the lines that were previously part of the script have been removed with a '-' sign in front of them.
flow/rust_mobilenet_food/Cargo.toml
Here are my observations of the given code snippet:

Dependency versions: Make sure to use the latest version of libraries or the one that's compatible with your project. You have listed all dependencies with specific versions; however, it's good to cross-check them with the current latest available versions.

Features for image dependency: You have disabled default features and enabled three features: "jpeg", "png", and "gif". Ensure that these are the only required features for your project, and you don't need any other features.

Code formatting: The code seems properly formatted and utilizes the standard TOML format for listing dependencies and configurations.

Since the provided code snippet only contains the package configuration and dependencies, there isn't much to review in terms of code logic or potential runtime problems. Make sure to pay attention to the Rust source files (e.g., lib.rs and other code files) and analyze them for any potential issues.
The key changes in the patch are:

The wasmedge-bindgen dependency version has been updated from 0.1.0 to 0.4.1.

The wasmedge-bindgen-macro dependency version has been updated from 0.1.0 to 0.4.1.

The formatting of the features field in the image dependency has been modified to span multiple lines for improved readability. The dependency's features, however, remain the same: "jpeg", "png", and "gif".

flow/rust_mobilenet_food_lib.so
It seems you have not provided any patch for me to review. Please provide a patch or a code snippet for me to summarize the key changes.
go.mod
As this is a Go module file (go.mod) rather than actual source code, the process for reviewing it is different. Instead of looking for programming issues or logic errors, the focus should be on checking the module dependencies and versions for potential problems with compatibility or security vulnerabilities.

Package versions: All the packages seem to be using versioned releases instead of using the master branch. This is a good practice because it ensures the application is using a stable package version. However, it's essential to ensure that these versions are up-to-date and contain the necessary fixes for any known issues.

Obsolete packages: Make sure none of the packages have been abandoned or deprecated. If they are, it would be a good idea to look for alternatives, as obsolete packages may not receive security updates or bug fixes. After a quick check, all the packages listed seem to be actively maintained.

Compatibility: Ensure that the packages are compatible with each other. In most cases, package developers follow semantic versioning, and version updates should not introduce any breaking changes. Nonetheless, it is wise to consult the documentation and changelogs, and be aware of any potential conflicts.

Security vulnerabilities: Periodically check for security vulnerabilities in the libraries you are using. You can use tools like GoSec to scan your dependencies for any known vulnerabilities.

Apart from the points mentioned above, the go.mod file looks fine. However, remember that the most critical aspects of a code review involve analyzing the actual source code, its logic, and its efficiency, which are not found in this file.
The patch updates the versions of four dependencies in the go.mod file:

github.com/second-state/WasmEdge-go is updated from v0.9.2 to v0.11.2.
github.com/second-state/wasmedge-bindgen is updated from v0.1.12 to v0.4.1.
github.com/u2takey/ffmpeg-go is updated from v0.3.0 to v0.4.1.
github.com/yomorun/yomo is updated from v1.7.2 to v1.12.2.

These changes suggest that the application keeps up-to-date with the latest stable versions of its dependencies, ensuring bug fixes, security patches, and new features are incorporated.
go.sum
It seems that you haven't provided any patch to review. Please provide the patch you'd like me to review, and I'll be happy to summarize the key changes.
source/dependencies.sh
Here are a few potential problems that might occur:

Operating System Compatibility: This script assumes that it is being run on a Debian-based Linux distribution (e.g., Ubuntu) with the Advanced Packaging Tool (APT) package manager installed. It is important to mention this requirement in the script's documentation or comments to prevent users from assuming that it will work on other operating systems.

Error Handling: The set -e option causes the script to exit immediately if any command returns a non-zero status. While it can be helpful to ensure that errors do not go unnoticed, it may also make the script less robust because it does not handle errors explicitly. Instead, consider adding error reporting and logging, and gracefully handling errors that can be recovered from.

Running as Root: The script uses sudo to run commands, requiring the user to have root or administrative privileges. This can be a security risk if the script is run by a user who does not have experience with system administration, or if it is not expected that the user will have such elevated privileges. Consider adding documentation or comments to clarify that the script requires root privileges, and weigh the potential risks of allowing users to run the script with those permissions.

Unattended Installation: The -y flag is used when installing the ffmpeg package, allowing package installation without any further user input. This is fine for situations where the assumptions made by the package manager can be trusted. However, in production environments or other critical use-cases, unattended installation may bring minor compatibility or stability issues that would otherwise be noticed by the user installing manually. Consider allowing the user to confirm package installations if the script is intended for a wider and varied audience.

Dependencies and Package Versions: The script does not specify any particular version of the ffmpeg package to be installed, so it will always install the latest version available in the operating system's package repository. This can be problematic if your software depends on a specific version of ffmpeg. Consider specifying a version or range of versions that are known to be compatible with your software, or at least document the compatibility requirements in the script or accompanying documentation.

The patch completely removes the content of the script file, which originally had six lines. Key changes are:

The shebang (#!/usr/bin/env bash) is removed, which is used to inform the shell to run the script using the Bash interpreter.
The set -e command is removed, meaning that error handling behavior of immediately exiting the script when any command returns a non-zero status is no longer present.
The commands for updating the package index and installing ffmpeg with root privileges (using sudo) are removed: sudo apt-get update and sudo apt-get install -y ffmpeg.

source/main.go
Here are some potential issues and improvements in the code:

Error handling: In the loadVideoAndSendData function, there is no check for nil error when emitting data to yomo-zipper.

source.Connect()

This should be:
err := source.Connect()
if err != nil {
	fmt.Printf("❌ Emit the data to yomo-zipper failure with err: %v\n", err)
	return
}

Error handling: In the loadVideoAndSendData function, the loadVideoAndSendData function continues executing even if there is an error while extracting image bytes:

img, err := video.ExtractImageBytes(ffStream, i)
if err != nil {
	fmt.Printf("ExtractImage64 error: %v\n", err)
}
send(i, img)

Consider returning early if there is an error:
img, err := video.ExtractImageBytes(ffStream, i)
if err != nil {
	fmt.Printf("ExtractImage64 error: %v\n", err)
	continue
}
send(i, img)

Magic numbers: In the loadVideoAndSendData function, the magic number 24 appears without any explanation.

if i%24 == 0 {

It would be better to create a constant variable with a meaningful name that explains the purpose of this magic number. For example:
const ImageFrameSkip = 24

if i % ImageFrameSkip == 0 {

Unhandled error: In the VideoImage method extractImage, errors are not returned to the caller, but rather cause the application to crash with a panic.

err = stream...
if err != nil {
	panic(err)
}

It would be better to return errors to the caller and let them decide how to handle it:
err = stream...
if err != nil {
	return nil, err
}

Unnecessary type: The VideoImage type does not contain any fields, and its methods could simply be standalone functions instead of methods. If there's no plan to add fields to this type, consider turning the methods into standalone functions and removing the type itself.

For example:
func extractImageBytes(stream *ffmpeg.Stream, frameNum int) ([]byte, error) {
   // ...
}
// and so on for other methods

Code comments: There are no code comments explaining the purpose of methods or specific blocks of code. It is recommended to add comments for better code readability and maintainability.

The key changes in the patch are:

The import statement of the log package has been removed, as it is not used anymore.

- import (
- 	"log"
- )

Changed the initialization of source from using yomo.WithZipperAddr to directly passing the address as an argument.

- source := yomo.NewSource("image-recognition-source", yomo.WithZipperAddr("localhost:9900"))
+ source := yomo.NewSource("image-recognition-source", "localhost:9900")

Error handling has been added for video.GetFrameCount(filePath) to handle any errors while getting the frame count.

- num, _ := video.GetFrameCount(filePath)
+ num, err := video.GetFrameCount(filePath)
+ if err != nil {
+	fmt.Printf("❌ get frame count from %s err: %v", filePath, err)
+	return
+ }
+ fmt.Printf("total %d image frames\n", num)

The err variable has been declared twice for the same scope in the GetFrameCount function. The patch fixes this by reusing the previously declared err variable.

- data, _ := ffmpeg.Probe(inFileName)
+ data, err := ffmpeg.Probe(inFileName)
...
- err := json.Unmarshal([]byte(data), &m)
+ err = json.Unmarshal([]byte(data), &m)

Replaced the log package usage with fmt for printing messages.

All these changes improve the error handling and overall code quality.
zipper/config.yaml
This code snippet seems to be a configuration file, not the actual source code. However, I can still provide some feedback on the configuration itself.

Using <IP_ADDRESS> as the host might expose the service to all interfaces of the machine, which could potentially make it accessible from anywhere. It would be safer to use <IP_ADDRESS> or localhost if the service is supposed to be accessed only from the same machine. In case the service needs to be exposed to a specific network or externally, use the appropriate IP address or domain to restrict access to the intended audience.

Make sure to validate the port value provided in the configuration, as the use of reserved or privileged ports (1-1023) may lead to unintended consequences. Ports in the range of 1024-49151 are typically safe for use.

The configuration mentions an image-recognition function, but there is no implementation or reference to any implementation provided. Make sure to include any required libraries, configurations, or source code needed to run this function. Additionally, you could consider adding more details about how the function works and relevant parameters that may be used.

If this configuration file is intended to be used by other developers or systems, it might be helpful to add comments describing each item's purpose and the expected format of each configuration value. This can be helpful for both debugging and future updates to the software.

The format of this configuration file seems simple and human-readable, but it is not clear if it uses YAML, JSON, or another custom format. You could consider using a widely-adopted configuration format like TOML, YAML, INI, or JSON, which would make it easier for other developers and tools to parse and edit the configuration.

It is assumed this only contains a small portion of the code configuration, to ensure efficient code review, it would be helpful to access the complete source code/configuration file.

Unfortunately, there is no patch provided to summarize key changes. To provide a summary, please include the actual patch containing the differences between the old and new source code or configuration files.
cc https://github.com/yomorun/yomo-wasmedge-tensorflow/pull/11


Performance of MatrixVT

Thanks for your great work about MatrixVT! I train the model with config matrixVT 24 epochs in 2 RTX 4090ti，and  it seems that the performance(mAP 31.51 and NDS 38.55) is lower than your paper's results(mAP 33.7 and NDS 41.4 ) .
Is that reasonable result?  Could you give me some suggestions?

Did you turned on the CBGS?

Did you turned on the CBGS?

Yes, I used CBGS strategy.

That's strange... What is the performance of bevdepth under same setting (w/o da)?


operator-sdk create api Error: unable to run post-scaffold tasks of "base.go.kubebuilder.io/v3" on s390x architecture

I'm getting the below error when trying to create a go-based operator following through the example at https://sdk.operatorframework.io/docs/building-operators/golang/quickstart/ on a RHEL 8 machine with s390x architecture.
operator-sdk create api --group cache --version v1alpha1 --kind Memcached --resource --controller
...
/home/tdale/memcached-operator/bin/controller-gen object:headerFile="hack/boilerplate.go.txt" paths="./..."
/usr/local/go/src/net/cgo_linux.go:13:8: no such package located
Error: not all generators ran successfully
run `controller-gen object:headerFile=hack/boilerplate.go.txt paths=./... -w` to see all available markers, or `controller-gen object:headerFile=hack/boilerplate.go.txt paths=./... -h` for usage
make: *** [Makefile:95: generate] Error 1
Error: failed to create API: unable to run post-scaffold tasks of "base.go.kubebuilder.io/v3": exit status 2

This is the same error as mentioned in https://github.com/operator-framework/operator-sdk/issues/5284 , there the problem was said to be a versioning conflict, which cannot be the case here. I've been able to do the exact same steps with the same go and operator-sdk versions on an RHEL x86 machine.
Versions for s390x are the same versions as my working tests on x86:
# go version
go version go1.17.7 linux/s390x
# operator-sdk version
operator-sdk version: "v1.18.1", commit: "707240f006ecfc0bc86e5c21f6874d302992d598", kubernetes version: "1.21", go version: "go1.17.7", GOOS: "linux", GOARCH: "s390x"

I've tried multiple machines, and also with go version 1.16. Please let me know how I can further debug, or what needs to be done differently to create go-based s390x operators.  Thanks

Hi @tdaleibm. As far as I am aware the tooling that operator-sdk wraps to generate files for a Go operator is kubernetes-sigs/kubebuilder which from what I can tell does not currently have a binary that targets s390x. (There is currently an open issue in kubebuilder for it here: https://github.com/kubernetes-sigs/kubebuilder/issues/2298)
Due to this I don't think you would be able to generate the structure for a s390x Go operator using operator-sdk. I am new to working with and contributing to this project, so others may have some better insight.
@camilamacedo86  do you have any insight into this issue?

@tdaleibm After being informed that operator-sdk does indeed have a s390x release, I was able to set up an environment to test on s390x and replicate your issue on both Ubuntu and Fedora.
I was able to get it to work after making sure gcc was installed and running export CGO_ENABLED=0. I am curious, if you do the same does running operator-sdk create api --group cache --version v1alpha1 --kind Memcached --resource --controller end up working?

Ah yes, thank you so much CGO_ENABLED=0 solved my problem.


Ruby 2.2 error with mongoize_time

Hi,
I have a Rails 4.1.0 app where I just changed to use Ruby 2.2 and gives the error below.
Mongoid version is 4.0.1
NoMethodError - undefined method `year' for nil:NilClass:
  activesupport (4.1.0) lib/active_support/values/time_zone.rb:290:in `parse'
   () Users/josegranado/.rvm/gems/ruby-2.2.0@rails4.1.0/bundler/gems/mongoid-35aea60b285a/lib/mongoid/extensions/string.rb:48:in `__mongoize_time__'
   () Users/josegranado/.rvm/gems/ruby-2.2.0@rails4.1.0/bundler/gems/mongoid-35aea60b285a/lib/mongoid/extensions/date.rb:64:in `mongoize'
   () Users/josegranado/.rvm/gems/ruby-2.2.0@rails4.1.0/bundler/gems/mongoid-35aea60b285a/lib/mongoid/fields/standard.rb:10:in `mongoize'
   () Users/josegranado/.rvm/gems/ruby-2.2.0@rails4.1.0/bundler/gems/mongoid-35aea60b285a/lib/mongoid/attributes.rb:291:in `typed_value_for'
   () Users/josegranado/.rvm/gems/ruby-2.2.0@rails4.1.0/bundler/gems/mongoid-35aea60b285a/lib/mongoid/attributes.rb:174:in `block in write_attribute'
   () Users/josegranado/.rvm/gems/ruby-2.2.0@rails4.1.0/bundler/gems/mongoid-35aea60b285a/lib/mongoid/threaded/lifecycle.rb:26:in `_assigning'
   () Users/josegranado/.rvm/gems/ruby-2.2.0@rails4.1.0/bundler/gems/mongoid-35aea60b285a/lib/mongoid/attributes.rb:170:in `write_attribute'
   () Users/josegranado/.rvm/gems/ruby-2.2.0@rails4.1.0/bundler/gems/mongoid-35aea60b285a/lib/mongoid/fields.rb:457:in `block (2 levels) in create_field_setter'
   () Users/josegranado/.rvm/gems/ruby-2.2.0@rails4.1.0/bundler/gems/mongoid-35aea60b285a/lib/mongoid/attributes/processing.rb:97:in `process_attribute'
   () Users/josegranado/.rvm/gems/ruby-2.2.0@rails4.1.0/bundler/gems/mongoid-35aea60b285a/lib/mongoid/attributes/processing.rb:25:in `block in process_attributes'
   () Users/josegranado/.rvm/gems/ruby-2.2.0@rails4.1.0/bundler/gems/mongoid-35aea60b285a/lib/mongoid/attributes/processing.rb:23:in `process_attributes'
   () Users/josegranado/.rvm/gems/ruby-2.2.0@rails4.1.0/bundler/gems/mongoid-35aea60b285a/lib/mongoid/attributes.rb:205:in `block in assign_attributes'
   () Users/josegranado/.rvm/gems/ruby-2.2.0@rails4.1.0/bundler/gems/mongoid-35aea60b285a/lib/mongoid/threaded/lifecycle.rb:26:in `_assigning'
   () Users/josegranado/.rvm/gems/ruby-2.2.0@rails4.1.0/bundler/gems/mongoid-35aea60b285a/lib/mongoid/attributes.rb:204:in `assign_attributes'
   () Users/josegranado/.rvm/gems/ruby-2.2.0@rails4.1.0/bundler/gems/mongoid-35aea60b285a/lib/mongoid/persistable/updatable.rb:51:in `update'
  app/controllers/shipments_controller.rb:110:in `parcels'
  actionpack (4.1.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
  actionpack (4.1.0) lib/abstract_controller/base.rb:189:in `process_action'
  actionpack (4.1.0) lib/action_controller/metal/rendering.rb:10:in `process_action'
...

The model involved looks like this:
class Shipment
  include Mongoid::Document
  include Mongoid::Timestamps

  field :pickdate, type: Date
  ...
  ...
end

It was previously working fine with Ruby 2.1.5 and I can come back to that version easily, but wanted check if there's any hints how to solve it. Apparently caused by Ruby 2.2 but the resolution might be on mongoid.

Not sure if this is a issue on ActiveSupport or Ruby or Mongoid.
can you write a isolated test?
thanks

I get this error too.
ruby 2.0.0p598, Rails 4.1.0
update ruby to 2.2.0 still get this error

I'm also seeing this with Ruby 2.2.2 and Mongoid 3.1.6 with Rails 3.2.19.

This is a bug in Rails ActiveSupport's Timezone parse function.  This is fixed in latest versions of Rails. (See https://github.com/joe1chen/rails/commit/e88da370f190cabd1e9750c5b3531735950ab415).  Unfortunately still not fixed in Rails 3.2.21, so I had to patch Rails 3 to fix this.

Thanks @joe1chen


Can I create python functions with a dreamspark account? Thank you for your attention!

Does this occur consistently?
Repro steps:

Action: azureFunctions.createFunctionApp
Error type: DisallowedProvider
Error Message: The operation is not permitted for namespace 'Microsoft.Storage'. List of permitted provider namespaces is 'Microsoft.Authorization,Microsoft.Billing,Microsoft.Education,Microsoft.Features,microsoft.insights,Microsoft.NotificationHubs,Microsoft.Resources,Microsoft.Sql,Microsoft.Subscription,microsoft.support,microsoft.visualstudio,Microsoft.Web'.
Version: 1.8.1
OS: win32
OS Release: 10.0.19044
Product: Visual Studio Code
Product Version: 1.71.2
Language: ru

Call Stack
handleErrorResponse extension.bundle.js:2:1945875
deserializeResponseBody extension.bundle.js:2:1946606

Hi @IHVH
We'll have to investigate this more, but based off the error message shared, it seems like you're having an error because we are trying to create a Microsoft.Storage resource for you.
We may want to consider changing create to not fail in the event storage account creation fails. Unfortunately, your only workaround right now is to create a Function App via the Azure Portal.

@nturinski thanks for your reply.
Yes, indeed, I can create a function for python on the portal, but I cannot create a storage account with my subscription. Not on the portal, not somewhere else.
And I did not find the opportunity to upload the python code there.
Including there is no way to do this through the Azure portal. This is mentioned in this article. Function App via the Azure Portal.
Choose a runtime that supports your favorite function programming language. In-portal editing is only available for JavaScript, PowerShell, TypeScript, and C# script. C# class library, Java, and Python functions must be [developed locally](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-local#local-development-environments).

Would you be able to create in the Azure portal but then use VS Code to deploy your Python code?

There is no such possibility. I think also due to the lack of a storage account.
13:05:55 StartTbotOEMIBPI0119: Starting deployment...
13:05:58 StartTbotOEMIBPI0119: Creating zip package...
13:05:58 StartTbotOEMIBPI0119: Zip package size: 2.57 kB
13:05:59 StartTbotOEMIBPI0119: Fetching changes.
13:06:00 StartTbotOEMIBPI0119: Cleaning up temp folders from previous zip deployments and extracting pushed zip file /tmp/zipdeploy/189d70a5-b885-417b-95c2-0cf4cf439469.zip (0.00 MB) to /tmp/zipdeploy/extracted
13:06:02 StartTbotOEMIBPI0119: Updating submodules.
13:06:03 StartTbotOEMIBPI0119: Preparing deployment for commit id '15f6cedc-a'.
13:06:03 StartTbotOEMIBPI0119: PreDeployment: context.CleanOutputPath False
13:06:03 StartTbotOEMIBPI0119: PreDeployment: context.OutputPath /home/site/wwwroot
13:06:03 StartTbotOEMIBPI0119: Repository path is /tmp/zipdeploy/extracted
13:06:03 StartTbotOEMIBPI0119: Running oryx build...
13:06:03 StartTbotOEMIBPI0119: Command: oryx build /tmp/zipdeploy/extracted -o /home/site/wwwroot --platform python --platform-version 3.9.7 -p packagedir=.python_packages/lib/site-packages
13:06:04 StartTbotOEMIBPI0119: Operation performed by Microsoft Oryx, https://github.com/Microsoft/Oryx
13:06:04 StartTbotOEMIBPI0119: You can report issues at https://github.com/Microsoft/Oryx/issues
13:06:04 StartTbotOEMIBPI0119: Oryx Version: 0.2.20210120.1, Commit: 66c7820d7df527aaffabd2563a49ad57930999c9, ReleaseTagName: 20210120.1
13:06:04 StartTbotOEMIBPI0119: Build Operation ID: |T2wEq6nLriM=.acd5a7cb_
13:06:04 StartTbotOEMIBPI0119: Repository Commit : 15f6cedc-a57c-406d-bb99-324850811bd9
13:06:04 StartTbotOEMIBPI0119: Detecting platforms...
13:06:05 StartTbotOEMIBPI0119: Detected following platforms:
13:06:05 StartTbotOEMIBPI0119:   python: 3.9.7
13:06:05 StartTbotOEMIBPI0119: Version '3.9.7' of platform 'python' is not installed. Generating script to install it...
13:06:06 StartTbotOEMIBPI0119: Source directory     : /tmp/zipdeploy/extracted
13:06:06 StartTbotOEMIBPI0119: Destination directory: /home/site/wwwroot
13:06:06 StartTbotOEMIBPI0119: Downloading and extracting 'python' version '3.9.7' to '/tmp/oryx/platforms/python/3.9.7'...
13:06:07 StartTbotOEMIBPI0119: Downloaded in 0 sec(s).
13:06:07 StartTbotOEMIBPI0119: Verifying checksum...
13:06:07 StartTbotOEMIBPI0119: Extracting contents...
13:06:10 StartTbotOEMIBPI0119: Done in 4 sec(s).
13:06:10 StartTbotOEMIBPI0119: Python Version: /tmp/oryx/platforms/python/3.9.7/bin/python3.9
13:06:10 StartTbotOEMIBPI0119: Running pip install...
13:06:11 StartTbotOEMIBPI0119: [10:06:11+0000] Collecting azure-functions
13:06:11 StartTbotOEMIBPI0119: [10:06:11+0000]   Downloading azure_functions-1.11.2-py3-none-any.whl (206 kB)
13:06:11 StartTbotOEMIBPI0119: [10:06:11+0000] Installing collected packages: azure-functions
13:06:12 StartTbotOEMIBPI0119: [10:06:12+0000] Successfully installed azure-functions-1.11.2
13:06:12 StartTbotOEMIBPI0119: WARNING: You are using pip version 20.2.3; however, version 22.2.2 is available.
13:06:12 StartTbotOEMIBPI0119: You should consider upgrading via the '/tmp/oryx/platforms/python/3.9.7/bin/python3.9 -m pip install --upgrade pip' command.
13:06:12 StartTbotOEMIBPI0119: Done in 2 sec(s).
13:06:13 StartTbotOEMIBPI0119: Preparing output...
13:06:13 StartTbotOEMIBPI0119: Copying files to destination directory '/home/site/wwwroot'...
13:06:13 StartTbotOEMIBPI0119: Done in 0 sec(s).
13:06:13 StartTbotOEMIBPI0119: Removing existing manifest file
13:06:13 StartTbotOEMIBPI0119: Creating a manifest file...
13:06:13 StartTbotOEMIBPI0119: Manifest file created.
13:06:13 StartTbotOEMIBPI0119: Done in 6 sec(s).
13:06:13 StartTbotOEMIBPI0119: Running post deployment command(s)...
13:06:13 StartTbotOEMIBPI0119: Generating summary of Oryx build
13:06:13 StartTbotOEMIBPI0119: Deployment Log file does not exist in /tmp/oryx-build.log
13:06:14 StartTbotOEMIBPI0119: The logfile at /tmp/oryx-build.log is empty. Unable to fetch the summary of build
13:06:14 StartTbotOEMIBPI0119: Triggering recycle (preview mode disabled).
13:06:14 StartTbotOEMIBPI0119: Linux Consumption plan has a 1.5 GB memory limit on a remote build container.
13:06:14 StartTbotOEMIBPI0119: To check our service limit, please visit https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale#service-limits
13:06:14 StartTbotOEMIBPI0119: Creating placeholder blob for linux consumption function app...
13:06:14 StartTbotOEMIBPI0119: Malformed SCM_RUN_FROM_PACKAGE when uploading built content.
13:06:14 StartTbotOEMIBPI0119: Generating summary of Oryx build
13:06:14 StartTbotOEMIBPI0119: Deployment Log file does not exist in /tmp/oryx-build.log
13:06:14 StartTbotOEMIBPI0119: The logfile at /tmp/oryx-build.log is empty. Unable to fetch the summary of build
13:06:14 StartTbotOEMIBPI0119: Deployment Failed. deployer = Push-Deployer deploymentPath = Functions App ZipDeploy. Extract zip. Remote build.
13:06:22 StartTbotOEMIBPI0119: Deployment failed.

I also tried deploying via github.
Run Azure/functions-action@v1
Successfully parsed SCM credential from publish-profile format.
Using SCM credential for authentication, GitHub Action will not perform resource validation.
Warning: AzureWebJobsStorage does not exist in app settings (from Kudu SCM site with publish-profile credential). Please ensure the AzureWebJobsStorage app setting is configured as it is critical for function runtime. For more information, please visit the function app settings reference page: https://docs.microsoft.com/en-us/azure/azure-functions/functions-app-settings#azurewebjobsstorage
Successfully acquired app settings from function app (with SCM credential)!
Will archive . into /home/runner/work/_temp/temp_web_package_7410762042722174.zip as function app content
Will use Kudu https://<scmsite>/api/zipdeploy to deploy since publish-profile is detected.
Setting SCM_DO_BUILD_DURING_DEPLOYMENT in Kudu container to true
Update using Client.updateAppSettingViaKudu
Response with status code 204
App setting SCM_DO_BUILD_DURING_DEPLOYMENT propagated to Kudu container
Setting ENABLE_ORYX_BUILD in Kudu container to true
Update using Client.updateAppSettingViaKudu
Response with status code 204
App setting ENABLE_ORYX_BUILD propagated to Kudu container
Package deployment using ZIP Deploy initiated.
Updating submodules.
Preparing deployment for commit id '9a22d211-1'.
PreDeployment: context.CleanOutputPath False
PreDeployment: context.OutputPath /home/site/wwwroot
Repository path is /tmp/zipdeploy/extracted
Running oryx build...
Command: oryx build /tmp/zipdeploy/extracted -o /home/site/wwwroot --platform python --platform-version 3.9.7 -p packagedir=.python_packages/lib/site-packages
Operation performed by Microsoft Oryx, https://github.com/Microsoft/Oryx
You can report issues at https://github.com/Microsoft/Oryx/issues

Oryx Version: 0.2.20210120.1, Commit: 66c7820d7df527aaffabd2563a49ad57930999c9, ReleaseTagName: 20210120.1

Build Operation ID: |D4TBNuj5CRM=.2ff44e48_
Repository Commit : 9a22d211-17c7-4230-999b-35be7cadd577

Detecting platforms...
Detected following platforms:
  python: 3.9.7

Source directory     : /tmp/zipdeploy/extracted
Destination directory: /home/site/wwwroot

Python Version: /tmp/oryx/platforms/python/3.9.7/bin/python3.9

Running pip install...
[21:10:[15](https://github.com/IHVH/OEMIB_PI01_19_TBOT/actions/runs/3154605902/jobs/5132390081#step:3:16)+0000] Collecting azure-functions
[21:10:15+0000]   Using cached azure_functions-1.11.2-py3-none-any.whl (206 kB)
[21:10:15+0000] Installing collected packages: azure-functions
[21:10:15+0000] Successfully installed azure-functions-1.11.2
WARNING: You are using pip version 20.2.3; however, version 22.2.2 is available.
You should consider upgrading via the '/tmp/oryx/platforms/python/3.9.7/bin/python3.9 -m pip install --upgrade pip' command.
Done in 2 sec(s).
Preparing output...

Copying files to destination directory '/home/site/wwwroot'...
Done in 0 sec(s).

Removing existing manifest file
Creating a manifest file...
Manifest file created.

Done in 2 sec(s).
Running post deployment command(s)...

Generating summary of Oryx build
Deployment Log file does not exist in /tmp/oryx-build.log
The logfile at /tmp/oryx-build.log is empty. Unable to fetch the summary of build
Triggering recycle (preview mode disabled).
Linux Consumption plan has a 1.5 GB memory limit on a remote build container.
To check our service limit, please visit https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale#service-limits
Creating placeholder blob for linux consumption function app...
Malformed SCM_RUN_FROM_PACKAGE when uploading built content.

Generating summary of Oryx build
Deployment Log file does not exist in /tmp/oryx-build.log
The logfile at /tmp/oryx-build.log is empty. Unable to fetch the summary of build
Deployment Failed. deployer = GITHUB_ZIP_DEPLOY deploymentPath = Functions App ZipDeploy. Extract zip. Remote build.
Error: Failed to deploy web package to App Service.
Error: Execution Exception (state: PublishContent) (step: Invocation)
Error:   When request Azure resource at PublishContent, zipDeploy : Failed to use /home/runner/work/_temp/temp_web_package_7410762042722[17](https://github.com/IHVH/OEMIB_PI01_19_TBOT/actions/runs/3154605902/jobs/5132390081#step:3:18)4.zip as ZipDeploy content
Error:     Package deployment using ZIP Deploy failed. Refer logs for more details.
Error: Deployment Failed!

Could you try going through these steps to troubleshoot your error? https://stackoverflow.com/questions/62017288/azure-function-deployment-failed-malformed-scm-run-from-package-when-uploading
Also do you have the SCM_DO_BUILD_DURING_DEPLOYMENT app setting? And is it set to 1?

I have setup in .vscode\settings.json
{
    "azureFunctions.deploySubpath": ".",
    "azureFunctions.scmDoBuildDuringDeployment": true,
    "azureFunctions.pythonVenv": ".venv",
    "azureFunctions.projectLanguage": "Python",
    "azureFunctions.projectRuntime": "~4",
    "debug.internalConsoleOptions": "neverOpen"
}

is that enough?
And I tried it https://stackoverflow.com/questions/62017288/azure-function-deployment-failed-malformed-scm-run-from-package-when-uploading and got
'StartTbotOEMIBPI0119' app is missing AzureWebJobsStorage app setting. That setting is required for publishing consumption linux apps.

But as i said before, i can't create a storage account with a dreamspark subscription.

Right... This seems like a weird oversight with the Azure Education accounts. Is it possible to create the Functions with an App Service plan instead? Or maybe you can get access to some other storage account?
If you just need to do things locally, you can download Azurite and create a local emulator. If you do that, you'll need to set AzureWebJobsStorage to UseDevelopmentStorage=true

App Service plan is also not supported for subscription.
I have no problem with local development.
And what's more interesting, I can publish functions in C#, but it doesn't work for python.
I think we can close this issue?
Thanks Nathan!


mistake in hub-vnet.json

Hello,
in hub-vnet.json there is a mistake (script cannot create network interface, because cannot find virtual network, it tries to make it in the resource group where is VM), you need to add ResourceGroupName parameter for virtual network in row 44. So it will be:
"virtualNetwork": {
"name": "hub-vnet",
"resourceGroupName": "hub-vnet-rg"
}
Honza

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 104eba32-c77e-b013-e161-ff616d16a0f7
Version Independent ID: 3bc27d0a-ef32-f5f6-4c85-fe8e2e45155e
Content: Implementing a hub-spoke network topology in Azure
Content Source: docs/reference-architectures/hybrid-networking/hub-spoke.md
Service: guidance
GitHub Login: @telmosampaio
Microsoft Alias: pnp

Thanks for reporting this. We're currently reviewing all of the deployment scripts.

Hi - we recently updated the deployment template for this architecture. I've tested the updated version, but let us know if you still have issues. Thanks!


Formatter Removes spaces from $VERSIONINFO:Comments

Example...
$VERSIONINFO:Comments=QB64 is a modern extended BASIC programming language that retains QB4.5/QBasic compatibility and compiles native binaries for Windows, Linux and macOS.
becomes
$VERSIONINFO:Comments=QB64isamodernextendedBASICprogramminglanguagethatretainsQB4.5/QBasiccompatibilityandcompiles nativebinariesforWindows,LinuxandmacOS.

Updated the formatter to handle $VERSIONINFO:Comments


Why is str considered an STL function?

I noticed str is highlighted as a cFunction here. Sorry if the answer is obvious, but why is it?

e.g.
http://en.cppreference.com/w/cpp/io/basic_stringstream/str


[FLINK-9188] [kinesis] Generic mechanism to set ClientConfiguration properties.

What is the purpose of the change
This pull request enables setting properties on the AWS ClientConfiguration from user supplied properties with a specific prefix.
Brief change log

use Jackson to set properties in a generic way so that we don't need to assume knowledge of the AWS properties in the Flink connector code.

Verifying this change
This change added tests and can be verified as follows:
Added test to verify the configuration mechanism.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (yes / no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (yes / no)
The serializers: (yes / no / don't know)
The runtime per-record code paths (performance sensitive): (yes / no / don't know)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: (yes / no / don't know)
The S3 file system connector: (yes / no / don't know)

Documentation

Does this pull request introduce a new feature? (yes / no)
If yes, how is the feature documented? (not applicable / docs / JavaDocs / not documented)

R: @tzulitai

Thanks for the comments @tweise!
Looks good to me, will proceed to merge this ..


[SP-5759] Backport of PDI-18810 - Metadata Injection injected transfo…

…rmation change in behavior, can not save in file system when connected to repository (8.3 Suite)
cherry-pick of 4ffdfb41f34307147a0ff85ed7129c2dc6b67ec4
Original PR: https://github.com/pentaho/pentaho-kettle/pull/7691
@pentaho-lmartins @bcostahitachivantara

:white_check_mark: Build finished in 21m 10s
Build command:
mvn clean verify -B -e -Daudit -amd -pl core,plugins/meta-inject

:ok_hand: All tests passed!
Tests run: 4777, Failures: 0, Skipped: 7    Test Results

:information_source:  This is an automatic message


Improve docs/Fine-Tuning.md and support JsonlDataset at finetuning

In Fine-Tuning.md, add example code on how to specify custom data source and/or model;
Support loading custom data in jsonl;

Thanks!


Get "undefined is not a function" when plugin:add from git repo

Hi,
I try to add a cordova plugin from a git repo and I get the below error:
[alireza@arch tiwun_mobile]$ grunt plugin:add:https://github.com/EddyVerbruggen/Toast-PhoneGap-Plugin.git
Running "plugin:add:https://github.com/EddyVerbruggen/Toast-PhoneGap-Plugin.git" (plugin) task
Warning: undefined is not a function Use --force to continue.

Aborted due to warnings.

Execution Time (2015-04-20 05:46:23 UTC)
loading tasks                                                           5ms  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 56%
plugin:add:https://github.com/EddyVerbruggen/Toast-PhoneGap-Plugin.git  3ms  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 33%
Total 9ms

[alireza@arch tiwun_mobile]$

I tried with cordova cli itself and it was successful:
[alireza@arch tiwun_mobile]$ cordova plugin add https://github.com/EddyVerbruggen/Toast-PhoneGap-Plugin.git
Fetching plugin "https://github.com/EddyVerbruggen/Toast-PhoneGap-Plugin.git" via git clone
Installing "nl.x-services.plugins.toast" for android
Running command: /home/alireza/dev/pycharm/tiwun/tiwun_mobile/hooks/after_plugin_add/register_plugins.js /home/alireza/dev/pycharm/tiwun/tiwun_mobile

Versions:
[alireza@arch ~]$ yo --version && echo $PATH $NODE_PATH && node -e 'console.log(process.platform, process.versions)'
1.4.6
/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/alireza/.gem/ruby/1.9.1/bin/:/home/alireza/dev/apps/aws-elastic/eb/linux/python2.7:/usr/lib/ruby/gems/1.9.1/bin/:/home/alireza/.gem/ruby/2.0.0/bin:/home/alireza/dev/apps/android-sdk-linux/tools/:/home/alireza/dev/apps/android-sdk-linux/platform-tools/
linux { http_parser: '2.3',
  node: '0.12.2',
  v8: '3.28.73',
  uv: '1.4.2-node1',
  zlib: '1.2.8',
  modules: '14',
  openssl: '1.0.2a' }

Have you been able to use it in your project? My app can't find the new plugin. Did you have to add it somehwere?

I can't add any git repo based plugin with grunt plugin:add, but cordova cli itself works with no problem.
I updated to the latest but that didn't solved the issue, I even tried it in a newly created app created by by generator-ionic but that didn't help too.
Here's my app for the reference: https://github.com/SavandBros/tiwun-mobile

me too:
grunt plugin:add:https://github.com/katzer/cordova-plugin-badge.git
Running "plugin:add:https://github.com/katzer/cordova-plugin-badge.git" (plugin) task
Warning: Object //github.com/katzer/cordova-plugin-badge.git has no method 'join' Use --force to continue.

Aborted due to warnings.

I'm facing the same issue:
Running tasks: plugin:add:https://github.com/brodysoft/Cordova-SQLitePlugin.git

Running "plugin:add:https://github.com/brodysoft/Cordova-SQLitePlugin.git" (plugin) task
Warning: undefined is not a function Use --force to continue.

Aborted due to warnings.

same here in windows

I'm also having the same issue.
Running "plugin:add:https://github.com/VitaliiBlagodir/cordova-plugin-datepicker.git" (plugin) task
Warning: undefined is not a function Use --force to continue.
Aborted due to warnings.
Execution Time (2015-07-31 03:00:42 UTC)
loading tasks                                                                9ms  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 50%
plugin:add:https://github.com/VitaliiBlagodir/cordova-plugin-datepicker.git  7ms  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 39%
Total 18ms
Using the cordova-cli works though
cordova plugin add https://github.com/VitaliiBlagodir/cordova-plugin-datepicker.git
Fetching plugin "https://github.com/VitaliiBlagodir/cordova-plugin-datepicker.git" via git clone
Repository "https://github.com/VitaliiBlagodir/cordova-plugin-datepicker.git" checked out to git ref "master".
Installing "cordova-plugin-datepicker" for android
Installing "cordova-plugin-datepicker" for ios
Running command: /Users/bukhorimuhammad/pertamina-sales-app/app/pertamina-sales/hooks/after_plugin_add/register_plugins.js /Users/bukhorimuhammad/pertamina-sales-app/app/pertamina-sales

I have debug this issue and i found that the lodash methods are not available there, i am not sure and still try to debug that why _ method are not available there! for now and just running my work i just have replace the _ methods with javascript


Add statistics

I would like to see some statistics (graphs).
For example:
salary by primary technology
salary by gender / gender pay gap
salary by age
...
I think this will involve restricting some of these statistics to one country/city. (One can not mix salaries from e.g. Berlin and San Francisco, the salaries + living costs are just too different.)
Inspiration: https://storage.googleapis.com/js-journal/Berlin-Startup-Salary-Report-Jobspotting-May2016.pdf

sounds great @lisbethmarianne! Would you suggest having a statistics page where you can filter the types of things you are looking for? Or start with a few static graphs?


Attempt to add MacOS build

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

This PR attempt to fix #9

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

The Mac OS X pipeline fails with lots of errors in .m files, so I can't merge this.
The Linux build fails with an error related to the Meson build system, but that shouldn't be your fault.

Okay, I found the issue with the Linux build:
It is this line: https://github.com/conda-forge/gst-plugins-bad-feedstock/blob/fc8227dc735dae3ebb32f3ec1bbdfeb7e5555306/recipe/build.sh#L16
The option apparently was unused for some time now and can probably safely removed.
With meson 0.59 it would throw a warning while with meson 0.60 it now throws an error.
This doesn't solve the issue with the osx build though.

Thanks @kuepe-sl for the help. I will try to resolve the issue with MacOS then cc you for review again

See #30 and the work done in #27 to find the correct build parameters


chore(deps): update common-dev-assets digest to 3d44f8a

This PR contains the following updates:

Package
Update
Change

common-dev-assets
digest
d3a341c -> 3d44f8a

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

/run pipeline

:tada: This issue has been resolved in version 1.2.11 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Correct the README

I was supposed to follow a README in your project to understand how to run it, add it and after you will have 10/10.
I recommend you the use of husky and eslint.
Grade: 0/10

@alejandro-llanganate readme added on commit b510cda80de6b6280977d9c18df64724566c07bd (last commit). Thank you teacher for your recommendations.


coreos: add missing initrd= parameter

Without this parameter, boot fails with
“Failed to open 'baselayout.conf' : No such file of directory”

The Travis failure seems to be unrelated.

Thanks, looks like I missed one.


cron-send-zabbix-inventory-check.py: Fix hostnames for masters

Older master nodes may still have a hostname metadata label.  Otherwise construct the hostname from the provided cluster ID and the type and kubernetes.io/hostname metadata labels.

:+1: @robotmaxtron #4094


Merge master branch to prTesting1_201907111401 branch

Docs Build status updates of commit edcd9c3:
:clock10: Pending: waiting for processors (10 builds ahead of you)
:warning: Docs Build is busy, currently there are 10 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit edcd9c3:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details
Dependent Files

split/updateTestRef1.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


minimize total loss without step loss

I want to minimize total loss without step loss (each loss no back-propagation), how to implement it?
total_loss = 0
idx = 0
for data in train_datas:
pre = model(data)
loss = metric(pre, gt)
total_loss = total_loss + loss
idx = idx + 1
if idx %10 == 0:
train_ops = optimizer(total_loss)
sess.run(train_ops)

I am able to replicate the issue reported on tf 2.4 and nightly, please find the gist here.

@Saduf2019
I want to minimize total loss without step loss (each loss no back-propagation), how to implement it?
total_loss = 0
idx = 0
for data in train_datas:
pre = model(data)
loss = metric(pre, gt)
total_loss = total_loss + loss
idx = idx + 1
if idx %10 == 0:
train_ops = optimizer(total_loss)
sess.run(train_ops)


Fix closest layer point edge case

This pull request addresses an edge case in the closestLayerPoint function where it did not properly consider the segment between the last and first points of a Polygon.
Details:
Identified that the closestLayerPoint function was missing the edge case where the point could be on the segment between the last and first points of a Polygon.
Modified the iteration logic to ensure this segment is also evaluated when finding the closest layer point.

Testing:
Set up a local test environment with a triangle polygon and markers. Confirmed that the function now correctly identifies points on the edge between the last and first points of the Polygon.
All existing tests pass, and no regressions were identified.

Related Issues:
Fixes  #9098

#9098

This PR seems to break Polyline.closestLayerPoint, adding new edge between last and first point, and even for a Polygon this shouldn't work when clipping occures.
I'd try to construct polygon with both start and last points outside the screen. This should give reduced _parts arrays, and closestLayerPoint would find a point on the [last point; first point] edge,  which doesn't exist in original polygon.
Serge, author of #9098

I'd try to construct polygon with both start and last points outside the screen. This should give reduced _parts arrays, and closestLayerPoint would find a point on the [last point; first point] edge, which doesn't exist in original polygon.

@se-ti you are right, good catch 👍 but this problem already oocurs on polylines too and has not directly something to do with #9098
Demo Polyline: https://plnkr.co/edit/TzzbNQf5ljXTGRV2
Demo Polygon: https://plnkr.co/edit/7gPOyNiLgGOTDxUs
If I read the docs, I would think it will return always the closest point and has nothing todo with clipping. So my suggestion is to do a refactoring and use the actual latlngs (projected to points) and not the clipped parts.

I agree about docs, @Falke-Design.
Probably the only aspect where current design is better -- it's much faster for large geometries like countries' borders.

If we replace _parts with _rings everything works fine. https://plnkr.co/edit/J78vmzTx82kPh1Ck
Perfomance could be still an issue, needs to be tested.
@mourner @IvanSanchez @jonkoops do you see any problems if we use _rings instead of _parts in closestLayerPoint? With _parts we have the problem that the calcuation is done with the clipped path.

Thought for a while: if you decide to rewrite closestLayerPoint from _parts to _rings, could you please return not only point and distance, but also ring's index, and point's index in ring. (point -- starting point of the edge, closestLayerPoint belongs to).
I used closestLayerPoint's as a second filter (after bounding box) when looking for a nearest edge of large and complex geometries. But to find nearest edge i had to rewrite closestLayerPoint for a latlngs array and call it one more time, just to find those indices.


Create vtc_masked

Added misc function to efficiently load masked .vtc files. Masking happens at the level of the binary readout (reducing memory consumption, and increasing speed).

Ah cool. Actually, now thinking about it, maybe it is better to populate misc with such functions rather than the scripts I have put there now. E.g. import bvbabel.misc.read_vtc_msk ,  I am guessing that you are using is like this right?

Got it. I think it is fine for now to keep in under misc. I will think deeper how to organize if/when these misc functions grow.


model

Hello, where should I download the model stable-diffusion-2-inpainting used?

Do I need to download all the files here?https://hf-mirror.com/stabilityai/stable-diffusion-2-inpainting/tree/main

You don't need to download it manually. running the code it will download automatically

You don't need to download it manually. running the code it will download automatically

Thank you very much for your answer.


Proposal:  use bazel's cquery in place of query for queryForSourceFiles checks

Currently ibazel uses bazel query to determine if the build graph has changed.  However bazel query does not allow for configurations to be considered.
If you set a --define flag for your builds, every time ibazel runs bazel query, the analysis cache is invalidated in determining the query results only to have the results invalidated again by the next build.
If bazel cquery is used instead, the --define flag is now considered/valid and the correct graph is created.
cquery inherits all of its flags from build (as does run and test) which leads to all supported flags in ibazel being able to be forwarded to the "query" checks

Under the hood the commands that are called by ibazel in this instance look something like this:
Calls: bazel build //path/to/module:target
      ^ creates analysis cache using `--define` flag configuration

Change made to a file

Calls: bazel query //path/to/module:target
      ^ creates new analysis cache without `--define` flag, throwing out old cache
Calls: bazel build //path/to/module:target
      ^ creates new analysis cache using `--define` flag, throwing out old cache

with cquery it would instead be:
Calls: bazel build //path/to/module:target
      ^ creates analysis cache using `--define` flag configuration

Change made to a file

Calls: bazel cquery //path/to/module:target
      ^ uses analysis cache already created, updating as necessary
Calls: bazel build //path/to/module:target
      ^ uses analysis cache already created

@josephperrott, I think this would be a really really great feature to add. I've been doing some repo cleanup with the goal of engaging you on this issue. How could I help get you engaged?
All the code for controlling the query operation lives inside a small block inside the bazel lib.
https://github.com/bazelbuild/bazel-watcher/blob/7741ff3b41c6c99290f20505df18652e9ac99aa3/bazel/bazel.go#L216-L244
It doesn't look to me like it would be that hard to add a new method cquery and then change all the callers over. Is this a thing I could interest you in?
I'm about to do a release that will add colors (YAY!) and fix a lot of the output formatting issues (YAY!) but would love to do a v0.11.1 as early as this afternoon if you're interested.

Don't close this please.
On Sat, Feb 15, 2020, 4:14 PM github-actions[bot]<EMAIL_ADDRESS>wrote:

Stale issue message
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/bazelbuild/bazel-watcher/issues/305?email_source=notifications&email_token=AABUZ2EOYWP2BSJZZHN7EG3RDCAPFA5CNFSM4JU54OM2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEL32FGY#issuecomment-586654363,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABUZ2BQWL732LAMV4WOHU3RDCAPFANCNFSM4JU54OMQ
.

not stale

@achew22 Thanks for working on this. I think unfortunately it's not improving things as there is still a bazel query call for determining the build files. This causes the analysis cache to be still discarded.
The goal would be that the analysis cache is not discarded. We could achieve this by using cquery for determining the build files, or by using always bazel query and allowing define variables.
cquery does not support buildfiles, but maybe we could make that work with upstream changes in bazel? Ideally though, bazel query would just support --define for the sake of not discarding analysis cache, unless I miss something here. This makes me wonder why the analysis cache is even discard at all if standard bazel query is supposed to just run as part of the loading phase.

@devversion this sounds like a great issue to open upstream on the Bazel main repo. Unfortunately I don't have enough time to spin up on that particular issue, but I would be interested in seeing what they say. It could be something as simple as changing a Boolean value somewhere. That's something I would be happy to do.

Hey y'all, bazel engineer here. @devversion is right, query just runs the loading phase which is why it doesn't respect any build flags (like --define). That also means it shouldn't be invalidating the analysis cache because it doesn't run the analysis phase.
Out of curiosity, you're  running two query commands one after another and you're seeing symptoms that looks like analysis cache invalidation? What are those symptoms?
As for bazel changes, adding --define respect to query isn't an option. cquery was created to be a query that respects build flags. But adding buildfiles() support to cquery seems possible to me. If I remember correctly, there wasn't any major technical reason this didn't happen, we just figured we'd implement when a need arose:
https://cs.opensource.google/bazel/bazel/+/master:src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java;l=480
Here's the implementation in query:
https://cs.opensource.google/bazel/bazel/+/master:src/main/java/com/google/devtools/build/lib/query2/query/BlazeQueryEnvironment.java;l=410
Bazel team probably doesn't have the cycles to own this but If you wanted to investigate/make this change in the bazel repo I'd be happy to shepherd your PRs through.


:art: Refactor env facilities to align better with P3325

This provides for easier composability of environments.
See https://wg21.link/p3325

Additional test cases #3 and #8 can't both be true, Claude.


API socket timeout

I started uploading files and got a timeout after uploading 22 files. I've never gotten one before. Any suggestions on the proper way a client should handle this? (I'm gonna need to upload thousands of files pretty soon...)

Can you provide more details please, which end points and what the workflow was. I assume it timed out on an Api end point and not uploading to s3.

Looks like it was on upload, actually. Crashed on my Python line:
response = requests.put(signed_urls,headers=head,data=fp)

(where fp is the file pointer to the JPG image)
Here's what I got as an error message:
requests.exceptions.ConnectionError:
HTTPSConnectionPool(host='zooniverse-static.s3.amazonaws.com', port=443):
Max retries exceeded with url:
/panoptes-uploads.zooniverse.org/production/subject_location/c3a3c206-9dd3-4b4b-8d7e-bc77f72bc888.jpeg?AWSAccessKeyId=ASIAIQFTO3HUT4UBGTAQ&Expires=1436805211&Signature=8DPUuWyCG11R3FJtAW17xrp%2BmZY%3D&response-content-type=image%2Fjpeg&x-amz-acl=public-read&x-amz-security-token=AQoDYXdzELv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEa0AO9nYnFR0m6226Rqc2YyEkH7bbB%2BorT6ty13u%2FTLfbWU0BpL%2BIU0%2BAsQ391IjGqDvA%2BLAepWsEUZx3V%2FDjkrix9BKTWWHcdB4nZw01qoAqT3Tloa44hwesQyeOw33EaWk1%2F1OQLhJFJneDYhuNo%2B8I4Ywu3C7JZfihmMKwAgWukwvlCJYlKLY8xNsCHc2Roh0pgjraTJpUZwb4CHQJURNAeDGIvtlBarQn2CqJHimz65ygmcLSC6IZVaXMrIDa%2BZtFmv9RcWBBCIaDrRhDATTsc0H2N1WNroXDmgrhNCEKZ6C%2BjpSM5luT3I%2F3UEJ9OY78HU9pIORqBEaEO%2F0g%2BRgMpopAxG4Q5U%2BpO8yBsqpv6qJMUCJSMTkJaBc5oQvWYD1gm8YfeW9LcGeJDSbgY0naADDtHOV9eAn3riwW86cEr51p2wszeL2aMCRPbAEkihDO31y5SRFWer4454PX34VEpJCbQRGeiccVQv308h2w1ffCVYVHV%2BsUqNc%2BR%2FjYiCKwA%2B8L0Uc0TnIRnQdCuCwt1oVkvDNEfp6bbWFnBQ4N5eD4TKzbre5r%2B7bGmdB3YzrvEWdp01RzbVMvaDFlXkjseuRCqjg%2B92hyV6lHr1aHREyCkoY6tBQ%3D%3D
(Caused by <class 'socket.error'>: [Errno 110] Connection timed out)

Here's my create-a-subject routine. It generally works.
def create_subject(project_id,meta,filename,token):
    "Create a subject and return its ID"

    values = """
    {
        "subjects": {
            "locations": [
                "image/jpeg"
            ],
            "metadata": {
            """ + meta + """
            },
            "links": {
                "project": \"""" + str(project_id) + """\"
            }
        }
    }"""
    head = {'Content-Type':'application/json',
            'Accept':'application/vnd.api+json; version=1',
            'Authorization':'Bearer '+token}
    response = requests.post(hostapi+'subjects',headers=head,data=values)

    # put it in json structure and extract id
    data = response.json()

    subjid = data["subjects"][0]["id"]
    signed_urls = data["subjects"][0]["locations"][0]["image/jpeg"]

    # -----------
    # now that we have the signed URL, we can upload the file
    # -----------

    head = {'Content-Type':'image/jpeg'}
    with open(filename,'rb') as fp:
        response = requests.put(signed_urls,headers=head,data=fp)

    return subjid

Hmm - I'd suggest testing your code against the staging api, when you've got it working there try it again on production.
Any reason why you're not using the project builder to do this for you? Also there is this, https://github.com/zooniverse/panoptes-subject-uploader

@camallen I simply ran it again, and it did fine. (Like I said, I never ran into the timeout before.) I was using the script rather than project builder because (1) I already had the script written; and (2) it's faster. Right now I just want to seed the project with a few images for each workflow so I can make changes related to the beta test (via the Project Builder).
And, neat! I hadn't seen Brian's uploader.
I'm happy to use either the project builder or Brian's uploader for uploading thousands of images -- especially if they do more (=any) error-handling. Rather tricky to get all the images in the same directory though... perhaps I'll make some modifications.

Ok - you might want to add a retry when puting to s3 and if it all fails then some cleanup code to remove empty media subjects.


Create a temporary workaround in the back-end service to sign redeemer

Do you guys need any help figuring out what is going wrong here? I'm open to helping. FYI, you need to sign the entire transaction and insert that signature into the redeemer. Not just sign the redeemer itself.

Hello @JoshOrndorff , tell us what the redeemer consists of. We have the encoded transaction and the sign function from https://github.com/polkadot-js/wasm/blob/master/packages/wasm-crypto/src/rs/sr25519.rs is it the same signing algoritm that is used in Tuxedo? How can we leverage them to create redeemer?

You are working against the Tuxedo template runtime. It's Verifier type is this one: https://off-narrative-labs.github.io/Tuxedo/tuxedo_template_runtime/enum.OuterVerifier.html You can see it is an enum with three variants. I think you are already focusing on the first variant which is an sr25519 signature. This is good. Continue to focus on this one. For this variant **The redeemer is a plain array of bytes that is exactly the signature.
I believe you guys are working with a Tuxedo version around 36d7baca4ae so I will share links to that commit as well. If you are using a different version, please let me know. A few bits have changed in this logic recently, but the big picture idea is the same.
The exact logic used by the blockchain to check the signatures is this https://github.com/Off-Narrative-Labs/Tuxedo/blob/36d7baca4ae159d77ea545d7cb999bd1e715557d/tuxedo-core/src/verifier.rs#L40-L49 I recommend you add a log line here to print out the bytes received. Then you can check if the Rust code produces the same  bytes as the TS.
The signing algo you linked appears to be the correct one. Specifically this appears to be the signing function. https://github.com/polkadot-js/wasm/blob/master/packages/wasm-crypto/src/rs/sr25519.rs#L124
To debug, compare bytes each step of the way. Make sure you derived the same public and private keys between rust and js. Make sure you pass in the same exact message. Make sure you get out the same signature.
This reminds me about the message that needs to be signed. You should sign the entire transaction. But of course the transaction contains the signature itself. To get around this, you must first construct the transaction with everything except the redeemer. It is left blank. Then sign this entire transaction, then insert the signature into the proper place in the transaction. Here is a video of me explaining this at PBA Hong Kong https://youtu.be/cI75Je1Nvk8?si=YTFA20Fd7Ug4i5Tv&t=802 (the video starts at the exact place.)
Please let me know if I can help more, or if we should meet at some point. I really want you guys to have all the support you need.

@JoshOrndorff Yep, thanks. We were able to isolate the issue by following these steps:

Using the key generated in the back-end by importing it to the Talisman wallet
We have already got the process working to create a redeemer in the back-end service by signing with a local keystore and the transaction with that redeemer does pass the above verification in the Tuxedo Core
We had some differences in the encoding, but I've modified the webservice to return the encoded entire transaction as well so that there's no discrepancy to the input bytes that I've manually checked.

Given the above assumptions and the fact that sr25519 signature is deterministic, which means that signing the same bytes with the same private key should result in the same signature, the Talisman signRaw method is producing a different signature for some reason. So, we're stuck on it at the moment.

the fact that sr25519 signature is deterministic, which means that signing the same bytes with the same private key should result in the same signature

I don't think this is true. https://polkadot.js.org/docs/keyring/start/sign-verify/#using-known-pairs says they are nondeterministic. (And I believe I've observed nondeterminism myself, but I don't remember clearly.)

We had some differences in the encoding, but I've...

Good that you are controlling for that :+1:

Another thought. Remember that in scale, vectors are encoded by first encoding their compact length, then encoding the elements. The redeemer here is a &[u8], and TBH, I'm not sure how that is supposed to be encoded in scale (should it have a length prefix or not)? And I don't see it addressed in these reference docs https://docs.substrate.io/reference/scale-codec/
Inspect the working redeemer to see if it is length prefixed. Is it the same length as a plain signature? If so it is not prefixed. If it is longer, are the first few bytes the compact encoded length of the rest of the actual signature? (If the answer to both of those is no then idk wtf.)
Once you've determined whether it should be length prefixed, check whether the one from TS is also length prefixed.

I don't think this is true. https://polkadot.js.org/docs/keyring/start/sign-verify/#using-known-pairs says they are nondeterministic. (And I believe I've observed nondeterminism myself, but I don't remember clearly.)

Got it, still the verifies doesn't pass for some reason.
Thanks for the tip, we'll be looking into it.

Completed implementation with back-end webservice signing


Feat test worder word

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

34 of 69 (49.28%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-2.6%) to 41.996%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

helpers/html.go
7
8
87.5%

services/dictionary.go
27
35
77.14%

usecase/dictionary.go
0
10
0.0%

controller/dictionary.go
0
16
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
-2.6%

Covered Lines:
223

Relevant Lines:
531

💛  - Coveralls


manta libs not properly packaged source of VisIt hang on CZ when /nfs/tmp2 is down

Rcvd a hotline call from Ed Kokko VisIt wasn't launching on the CZ for him. He also noted that /nfs/tmp2 is currently down (lc hotline verified this) Did an strace no the viewer, and to my suprise it turns out one of the manta deps actually still lives on /nfs/tmp2/ where buildvisit was run:<PHONE_NUMBER>.440111 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 1, 0) = 0x2aaab7998000 <0.000007>1386368629.440306 open("/nfs/tmp2/brugger/buildvisit/manta2540/lib/tls/x86_64/libMagick.so.2", O_RDONLY So VisIt is stuck b/c of this dangling dependency.
-----------------------REDMINE MIGRATION-----------------------
This ticket was migrated from Redmine. As such, not all
information was able to be captured in the transition. Below is
a complete record of the original redmine ticket.
Ticket number: 1678
Status: Pending
Project: VisIt
Tracker: Bug
Priority: Normal
Subject: manta libs not properly packaged source of VisIt hang on CZ when /nfs/tmp2 is down
Assigned to: -
Category: -
Target version: -
Author: Cyrus Harrison
Start: 12/06/2013
Due date:
% Done: 0%
Estimated time:
Created: 12/06/2013 05:32 pm
Updated: 01/07/2014 12:52 pm
Likelihood: 2 - Rare
Severity: 5 - Very Serious
Found in version: 2.7.0
Impact:
Expected Use:
OS: All
Support Group: Any
Description:
Rcvd a hotline call from Ed Kokko VisIt wasn't launching on the CZ for him. He also noted that /nfs/tmp2 is currently down (lc hotline verified this) Did an strace no the viewer, and to my suprise it turns out one of the manta deps actually still lives on /nfs/tmp2/ where buildvisit was run:<PHONE_NUMBER>.440111 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 1, 0) = 0x2aaab7998000 <0.000007>1386368629.440306 open("/nfs/tmp2/brugger/buildvisit/manta2540/lib/tls/x86_64/libMagick.so.2", O_RDONLY So VisIt is stuck b/c of this dangling dependency.
Comments:

Outdated.


Azure Service Bus c++ client support

Is your feature request related to a problem? Please describe.
Hi there,
Are there any alternative to register a message handler to an Azure Service Bus topic with a c++ client?. I'm using Qt framework, developing a webassembly app and I would like to register a message handler to handle messages published to a topic, like .net core sdk do, but currently I can't find a solution for c++.
Describe the solution you'd like
A c++ sdk for azure service bus like the ones that exist for other languages.
Describe alternatives you've considered
I haven't found any alternatives.

Thank you for the feedback.  Unfortunately at this time, this project does not have Service Bus support.  We will be considering it in one of the future releases.  We are currently working on the initial release which will include support for Storage::Blobs, Storage::Files::DataLake, Storage::Files::Shares.  We are looking to add more services to the SDK over time.

Thanks for the response and kudos to the team for the excellent work. It'll be welcome a more complete c++ azure sdk since we are being struggle trying to connect to some azure service from c++.

+1

REST API is the only way to use Service Bus from C++ and there's a lot of low-level stuff to add to a client written this way, even with a good HTTP client library. Very unfortunate. Amazon does provide a C++ SDK for services like AWS SQS.


SheetAppender - change headers logic so that you can control to not append headers.

A have a sheet for which I want to every day append a csv file to it.
On the first day I want to include the headers (rows = 0) after that I do not.
Currently whatever value you pass to includeHeaders, it will always include the header as it will either add the header via csv.HeaderRecord or read all the rows (including headerrow).
I've changed the behaviour so that when you pass includeHeader = false, the first row is essentially skipped.
I believe this is a bug of the current build, but my change could also be a breaking change.
I only have one sheet/csv that I've tested on, but the change is working for this.

@drgrieve Thank you for identifying this bug!
To try and minimize the impact to existing users of the SheetAppender class, I took a slightly different approach from your original pull request.  I renamed the original parameter name includeHeaders to csvHasHeaderRecord to be more descriptive that this only tells you if the source CSV file has a header record as the first row in the CSV file.
I added a new optional parameter called skipWritingHeaderRow which lets you now configure if you want to avoid writing the header row into the actual Google spreadsheet file.  I believe this now gives you the control you are looking for.
Here's an example below,
// write the CSV file for the first time to the Google Spreadsheet
var appender = new SheetAppender(sheetHelper);

appender.AppendCsv(filePath, csvHasHeaderRecord: true, skipWritingHeaderRow: false);

// append the CSV file, but don't write the header row to the Google Spreadsheet this time
var appender = new SheetAppender(sheetHelper);

appender.AppendCsv(filePath, csvHasHeaderRecord: true, skipWritingHeaderRow: true);

I pushed this update into the newest version on Nuget.  If you download package version 2.0.19 you will get these changes.
https://github.com/SteveWinward/GoogleSheetsWrapper/releases/tag/v2.0.19

@SteveWinward I tested the new release and this is working.
Cheers.


Arrow next to lnurl address is confusing

The arrow on the rightmost side of the "Your BBW address" list item in the settings page is confusing because it doesn't take you to another screen like other list items, but rather copies the address to your clipboard.

Should it be replaced with a copy icon instead?

What about something like this icon?


pg_restore is not compatible with --set ON_ERROR_STOP=on

Since --set ON_ERROR_STOP=on is being automatically added when restoring postgresql backups, it is no longer possible to use pg_restore instead of default psql
I think this aspect should be configurable via settings, in a similar way as clean or single-transaction switches - but I am not sure what was the design decision behind that

Hello @vvarp,
Sorry for my latency,
The solution for this is coming: https://github.com/ZuluPro/django-dbbackup/commits/pgrestore
I'll make a Connector dedicated to binary PostgreSQL.
I still have some trouble with tests but hope it will merged soon...

@vvarp Could you test PR #241 resolve your problems ?

@ZuluPro thanks, that looks solid - I'll give it a try asap and report my findings


Prevent webpack mangling nrWrapper method

Overview

Updating the webpack config so the nrWrapper method is not mangled. This was preventing the jserrors feature from properly excluding the nrWrapper and subsequent agent code from error stack traces.
Also including an update to the debug script the asset test server injects that was causing errors in IE11. IE does not support template strings.
Related Issue(s)

https://issues.newrelic.com/browse/NEWRELIC-5929
Testing

Run the JIL test suite in GH. Optionally, should probably also run the polyfills tests.

Really need to have a changelog checklist somewhere lol, I keep forgetting to check for it.

Same


Plugins not injected into production webpack config correctly

Currently use baseConfig.plugins.concat([]) to merge extra plugins with the base configuration. While this merges the arrays, the existing array is not changed.
Instead baseConfig.plugins.push() should be used to update the original array of plugins.

Fixed in commit 60b2bda4ef9535dfea2af5b88b7e9f4cbb93c9a6


Can't mirror my android tab to laptop via scrcpy-win64-v1.15.1

My android Tab is a bit old
version 4.2.2
is it a version issue or something else?
Thank you

Scrcpy requires Android 5.

Scrcpy requires Android 5.

Scrcpy requires Android 5.

ok Thank you !
Right now I am using another device
I am getting this error

I am trying to find about how to fix it through this link:
https://github.com/Genymobile/scrcpy/issues/185
I wish someone can easily tell me what to do
Thank you

Scrcpy requires Android 5.

ok Thank you !
Right now I am using another device
I am getting this error

I am trying to find about how to fix it through this link:
https://github.com/Genymobile/scrcpy/issues/185
I wish someone can easily tell me what to do
Thank you

https://github.com/Genymobile/scrcpy/blob/master/FAQ.md#adb-issues
Also, did you enable USB debugging?
Btw, why v1.15.1 instead of v1.17?

https://github.com/Genymobile/scrcpy/blob/master/FAQ.md#adb-issues
Also, did you enable USB debugging?
Btw, why v1.15.1 instead of v1.17?

https://github.com/Genymobile/scrcpy/blob/master/FAQ.md#adb-issues
Also, did you enable USB debugging?

Yes, yesterday it was working.
Today I tried to mirror my tab and later I tried once again my samsung J7 core and it's not working.
I am even downloading abd drivers after viewing youtube videos
still nothing
any idea?

https://github.com/Genymobile/scrcpy/blob/master/FAQ.md#adb-issues
Also, did you enable USB debugging?

Yes, yesterday it was working.
Today I tried to mirror my tab and later I tried once again my samsung J7 core and it's not working.
I am even downloading abd drivers after viewing youtube videos
still nothing
any idea?

alright it took me a lot but eventually done!
I was able to fix it!
Thank you so much

alright it took me a lot but eventually done!
I was able to fix it!
Thank you so much

alright it took me a lot but eventually done! I was able to fix it!
Thank you so much

Hi, how you managed to fix scrcpy screen mirroring not working with android 4.2.2 phones and tablets. Same problem with vysor.


How to find the currently focused workspace in the Node tree?

I'd like to be able to get the Node from the Node tree that represents the currently focused workspace.
I think in the current state a possible solution is to

call I3Connection::get_workspaces(),
traverse the workspaces and find the one where focused is true,
remember the name of that workspace,
call I3Connection::get_tree(),
traverse the tree to find the node that is a workspace and has the same name.

This seems very cumbersome. Also, I'm not 100% sure workspace names in i3 are guaranteed to always be unique. Are there any better solutions?
Also, would it be in the scope of this library to add a helper function for this?

I think the solution would be similar to the example in https://github.com/tmerr/i3ipc-rs/issues/29, but you would stop the recursion short once Node.nodetype == NodeType::Workspace. I agree this is harder than it needs to be and a helper of some sort would make sense. How about this: we provide an node.iter_focused() function, so you could do:
for n in node.iter_focused() {
  if n.nodetype == NodeType::Workspace {
    ... do something
  }
}

While the current workspace has focused set to true in the result of get_workspaces(), that's not true in the Node tree (the result from get_tree()). All the Nodes that are workspaces in there have focused set to false. So your proposed solution wouldn't work, if I understand correctly.

Only one node in the tree has focused set to true. You can walk from the root of the tree toward it using the method is showed. The steps look something like root -> display -> workspace -> ... -> the focused container. Finding the workspace is a matter of filtering that list for the node with workspace type.

Oh, I see. Thanks for explaining. That would indeed work fairly well.

What's the status? the python bindings have this https://i3ipc-python.readthedocs.io/en/latest/con.html#i3ipc.Con under workspaces.


wtf?

`PHP Fatal error:  Uncaught SpotifyWebAPI\SpotifyWebAPIException: No token provided in spoty\vendor\jwilsson\spotify-web-api-php\src\Request.php:39
Stack trace:
#0 spoty\vendor\jwilsson\spotify-web-api-php\src\Request.php(240): SpotifyWebAPI\Request->parseBody(Object(stdClass), 401)
#1 spoty\vendor\jwilsson\spotify-web-api-php\src\Request.php(108): SpotifyWebAPI\Request->send('GET', 'https://api.spo...', 'offset=0', Array)
#2 spoty\vendor\jwilsson\spotify-web-api-php\src\SpotifyWebAPI.php(561): SpotifyWebAPI\Request->api('GET', '/v1/artists/0rd...', Array, Array)
#3 spoty\spotycount.php(32): SpotifyWebAPI\SpotifyWebAPI->getArtistAlbums('0rdOduCP1sLQHOM...', Array)`
¯ \ _ (ツ) _ / ¯

This sounds it's related to Spotify's change on May 29th where they started requiring access tokens for all requests (see this blog post).
I'm guessing you're not requesting any user information so the Client Credentials Flow should be enough for your use case.

Sorry, I messed up the link to the blog post. Here's the correct one: https://developer.spotify.com/news-stories/2017/01/27/removing-unauthenticated-calls-to-the-web-api/

thx!
Added this and everything turned out well

Great, glad to hear it worked out!


Not trimming

ZUGABE doesn't seem to trim the game at all. I need to look into that.

Trimming will be removed. Please use auto-h-encore for Windows.


configuration as volume

The settings (including admin password) will be lost then recreate containers
Please add /usr/local/etc/couchdb to volumes

You could add the volume yourself at runtime with something like docker run -v /usr/local/etc/couchdb or even mount a host directory in that path.
But imho it's better to specify your settings at build time and add your own local.ini to the image. If your settings change, you simply create a new container with the new settings.

Best practices for writing Dockerfiles

The VOLUME instruction should be used to expose any database storage area, configuration storage, or files/folders created by your docker container. You are strongly encouraged to use VOLUME for any mutable and/or user-serviceable parts of your image.

Interesting. I'm still curious why the other images for databases don't do it. I took a look at the official redis, Postgres and MySQL images and they don't seem to expose the config.

Clemens

Am 13.09.2015 um 08:04 schrieb Vasiliy Mikhaylovsky<EMAIL_ADDRESS>Best practices for writing Dockerfiles
The VOLUME instruction should be used to expose any database storage area, configuration storage, or files/folders created by your docker container. You are strongly encouraged to use VOLUME for any mutable and/or user-serviceable parts of your image.
—
Reply to this email directly or view it on GitHub.

Anyway, Couchdb is different database. It can change configuration in realtime through REST API


bots: Migrate source file for zulip-bot-shell to similar name.

Follow-up to #736 based on comment by Tim.
On noticing an exclusion of the file for type-checking, added a prep commit to do this, though based on this zulip-bot-shell doesn't cover the cases like the standard run script does, which we should unify to improve consistency and deduplicate.

Merged, thanks @neiljp!


WIP: Window API

This is a work in progress. There are probably things missing.
In the next two days I plan to add support for Windows on other
expressions besides base sa.sql.elements.ColumnElements.
For example, a window function on a subquery such as a GROUP BY doesn't work ATM.
Feedback in any form would be most helpful.
cc @llllllllll

cc @kwmsmith and @ltransom
this could use some review especially on the API

@cpcloud and @kwmsmith I reviewed the API and changes.  They are consistent with what we discussed.
+1 on the merge from me.

Looks great.
The group_by kwarg is new, if we discussed that two weeks ago, I don't recall the conversation.
Given that we have a by() / group_by() expression, and will likely be improving its API, does it make sense to have it be the go-to source for all grouping, rather than having multiple places in the API where group-bys occur?
IOW instead of this:
expr = tdate.amount.sum().over(preceding=2, group_by=tdate.name)

what about this?
expr = tdate.amount.sum().over(preceding=2).group_by(tdate.name)

Same goes for sorting:
expr = tdate.amount.sum().over(preceding=2).sort(by=tdate.occurred_on)

@llllllllll @kwmsmith I've added sort_by and group_by methods on Window expressions which return a new Window expression filling in the relevant slot

I may push this to 0.9.1

Closing to cleanup old PRs. Feel free to submit a new PR.


 Besides not actually providing some of the windows typewriter mappings this keymap is also missing few digits (and, thus, is actually almost unusable without numpad), the order of symbol definition was a bit wrong and comment also needed a fix.
I believe the intention of the original author was to have special symbols mapped in upper register the same way as in default winkeys, but in such case the keymap name is misleading.

As per contributing recommendation, I've tried contacting the file maintainer via email first, but haven't received any reply.

Codecov Report

Merging #1656 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #1656      +/-   ##
==========================================
- Coverage   74.87%   74.87%   -0.01%
==========================================
  Files          76       76
  Lines      124888   124848      -40
==========================================
- Hits        93516    93476      -40
  Misses      31372    31372

Impacted Files
Coverage Δ

src/if_py_both.h
75.56% <0%> (-0.47%)
:arrow_down:

src/channel.c
83.6% <0%> (-0.19%)
:arrow_down:

src/term.c
53.37% <0%> (-0.06%)
:arrow_down:

src/gui.c
45.5% <0%> (-0.06%)
:arrow_down:

src/window.c
81.08% <0%> (-0.04%)
:arrow_down:

src/message.c
68.52% <0%> (+0.45%)
:arrow_up:

src/version.c
80.3% <0%> (+1.01%)
:arrow_up:

Continue to review full report at Codecov.

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

Can someone confirm this is a good change to include?

It can be tested against setxkbmap -layout ru -variant typewriter. Just keep a way to run setxkbmap -layout us after you're done. ;)

I agree with the change as it matches the real keyboard. I don't know why letter ё was on key ~, for example.
as of typewriter keyboard map, there's not always a possibility to set keyboard settings in the OS.

I'll include it now, thanks.


Add user folders

It would be nice if we could sort our programs into folders.

It would be...

Not happening.

User folders have previously (calcs older than the CEs) been done using a byte in the var format that was unused. TI now uses it on the CE, thus making it impossible (that way).
I'll close that but in case @mateoconlechuga ever wants to do it in a different way, he'll probably reply and refer to it in a commit :P

I figured as much... I hope to add something similar on my shell but we will see how that goes.

I've asked Mateo already a long time ago, and he said he'll never add them.


V2 - Corporate Console - User without LFID who is added as CLA Manager is not getting added to Signature_ACL in signatures table

Create CLA Group with CCLA enabled
Sign CLA in Corporate Console
Add CLA Manager without LFID for the signed CLA project
Accept the invite link and create LFID for the user
Observed that CLA Manager role is assigned for the user with correct scope. However the CLA Manager is not added to Signature_ACL in signatures table

@nirupamav user without LFID is not allowed to be a CLA Manager.  This is a rule.

@dealako
Actually through invite flow they are assigned with CLA Manager role, but the CLA Manager is not getting updated in the database after the role i sassigned

As discussed in standup call user without LFID cannot be added as CLA Manager. A ticket #1882 is logged to update the API response for this flow and also to not send invite email to the user


Implement support for .debug_aranges

Section 6.1.2 of the DWARF 4 standard.

For lookup by address, a table is maintained in a separate object file section called .debug_aranges. The table consists of sets of variable length entries, each set describing the portion of the program’s address space that is covered by a single compilation unit.

So that we don't have another race a la #32/#33, I'm planning to do this.


Exception caught: Value cannot be null. Parameter name: invalid activity-missing From.Id

Version
4.5.3
Description
A lot of conversations arrived via the Facebook channel that was potentially missing identity key. I can't track the origin of the problem. If it is from BotFramework  or something went wrong on the Facebook Messenger
The exception was dealing with a missing From data. Missing From.Id:
Value cannot be null. Parameter name: invalid activity-missing From.Id

Hi @EmanuelCD95
Which Webhooks is the bot subscribed to?

Also, if you are able to debug the bot locally, and add the following to the Messages controller, it will print the incoming message contents to the output window in Visual Studio (this should help determine more about the incoming message):
        [HttpPost]
        public async Task PostAsync()
        {
            Request.EnableBuffering();

            using (var buffer = new MemoryStream())
            {
                await Request.Body.CopyToAsync(buffer);
                buffer.Position = 0L;
                using (var bodyReader = new JsonTextReader(new StreamReader(buffer, Encoding.UTF8)))
                {

   Debug.WriteLine(BotMessageHandlerBase.BotMessageSerializer.Deserialize(bodyReader).ToString());
                    buffer.Position = 0L;
                }
            }

            Request.Body.Position = 0;

            // Delegate the processing of the HTTP POST to the adapter.
            // The adapter will invoke the bot.
            await Adapter.ProcessAsync(Request, Response, Bot);
        }

Hi Eric.
Thank you for your fast reply.
I saw here https://github.com/microsoft/BotFramework-Services/issues/71, that message_echoes could be a problem, but I'm not using it on page Webhooks.
Unfortunately, I cannot debug it locally, but I will add this piece of code and check the logs on Azure.

Hi @EricDahlvang,
I checked our page Webhooks,
I am not sure if that's what you were talking about:

Thank you

From https://developers.facebook.com/apps/YOUR_APP_ID/messenger/settings/ there should be a Page associated with the App:

Hi @EricDahlvang,
Sorry for the misunderstanding.

My page has no webhooks configured then.

Hi @EmanuelCD95
Step 7. here describes how to subscribe to webhooks.  Please look this over and let us know if it helps.

Hi @EricDahlvang ,
There's our configuration:

Should I uncheck message_deliveries? And check the boxes on message_reads, messaging_handovers, standby and message_reactions?

Hi @EricDahlvang,
Just to provide an extra context of our problem: Our bot works as expected most of the time, but when we send a promotion to our clients to use it on Facebook Messenger, we got a lot of those errors. At that time we have extra requests: around 700k/min. And that's when that exception appears on app insight.

That is odd, if you are only seeing this during a promotion.
I would choose only the webhooks your bot actually requires.  I haven't had time to test if any of the hooks your bot is currently subscribed to are potentially causing the issue.  However, a co-worker pointed out to me that messaging_optins documentation states:

The sender object is not included for messaging_optins events triggered by the checkbox plugin.

Yes, it is truly odd...
In that scenario we have so many exceptions that the bot slows down to a point were it does not respond at all.
If that does happen with message_optins, this could be the reason why we have so many of that exceptions when clients are redirected to Facebook messenger.
I'm feeling like unsubscribe messaging_optins and message_echoes and check if it solves the issue. Or do you have any recommendation?
Thank you for your time and patience.

Missing From.Id:
Value cannot be null. Parameter name: invalid activity-missing From.Id

This exception seems to be thrown while retrieving a key during reading or writing UserState or PrivateConversationState. These BotState classes require an Activity.From.Id
var userId = turnContext.Activity.From?.Id ?? throw new ArgumentNullException("invalid activity-missing From.Id");

I would start with eliminating any web hooks the bot is not specifically using or interested in. Some other options could be:

add logging for when a message is received, before the bot begins processing it. This should help determine what type of message is causing the exception

add a generated id to Activity.From.Id if it is empty. This would at least avoid the current exception. (this could be done in the OnTurn, middleware, or UserState/PrivateConversationState overrides)

add code to ignore messages when they have no Activity.From.Id (this could be done with a short circuit middleware as described here the-bot-middleware-pipeline ) or in the bot's OnTurnAsync

add code to handle different message types, as demonstrated in this sample (since this is a state storage layer issue, these would need to be handled without using the Bot State classes):
23.facebook-events
and
FacebookEventsBotExpanded

the SDK also now provies a Facebook Adapter with sample here (I don't know if this will help, but it is pretty :cool: ):
61.facebook-adapter

finally, if this bot is hosted on Azure scaling horizontally can help with increased load:
auto-scaling


Allow &| and 2>| in pipes

Is it possible to add &| and 2>| as pipe operators? I'm thinking of something like:
pipe: $ => prec.left(seq($._statement, choice('&|', '2>|', '|'), $._statement)),

I'm new to tree-sitter and I'm not sure if this may cause any side effects.
For reference: convenience operators in the fish docs

Is it possible to add &| and 2>| as pipe operators?  I'm thinking of something like:
pipe: $ => prec.left(seq($._statement, choice('&|', '2>|', '|'), $._statement)),

I'm new to tree-sitter and I'm not sure if this may cause any side effects.
For reference: convenience operators in the fish docs

Yeah, just add the other alternatives to | here: https://github.com/ram02z/tree-sitter-fish/blob/master/grammar.ts#L87 just like you wrote.
And two more test cases here https://github.com/ram02z/tree-sitter-fish/blob/master/test/corpus/pipe.txt

Works like a charm locally in the Zed editor. See PR #21.
Let me know if I should make changes. Cheers!