Move Arrow benchmarks to its own crate

Note: migrated from original JIRA: https://issues.apache.org/jira/browse/ARROW-11624
None

I guess we could close this issue now.

I agree - thanks @HaoYang670


Fix missing kgraph nodes issue

I think this should fix #248?

Isn't this going to remove more nodes? #248 is about not having nodes present...

This was a problem with subclass handling in Strider. A fix has been deployed there.


Use flutter.js API

Once the flutter.js API lands in the stable and old channels, we can start using this API for DartPad.
This would allow us to load the engine once

@johnpryan is this still a P1 issue?

Yes, here's the pull request: https://github.com/dart-lang/dart-pad/pull/2792


Memory Leak detection / System Monitoring Alerts

Run-time memory leak detection could trigger alerts.
Orphan nodes and other things can leak memory and be detected to tell the developer when their code has taken a misstep.
I think for this one monitor value, you'd want 3 settings:

toggle to enable checking
frequency setting (number of seconds between each check)
an orphan node threshold (some projects may have some expected number of orphans)

Using Performance.get_monitor(Performance.OBJECT_ORPHAN_NODE_COUNT) we can check against the threshold to make the alert.
The alert should just be a log entry, I think. If you had a pop-up option, you would close it and immediately get the pop-up again, most likely, making things impossible to deal with. Or there could be a pop-up, but it can only happen once?
If feeling super industrious, this could be a new window that allows for min/max tolerance values for any/all Monitor values.

Hey, I want to add on that :). Besides the count itself, it would be nice if the node itself would be logged aswell (if count > 0).
I don't know if it's possible or not, but resources can leak aswell sometimes and it would be nice to have a possibility to track these aswell.


Refactor / Layout and AppRoutes cleanup

Description
We noticed that when adding platforms, we hoisted the AppRoutes and Layout containers to change the routing and main layout with platform-specific changes. However, these currently contain lots of logic and conditionals, which feel redundant and error-prone when syncing upstream changes.
I might have gone too far with this PR, but the idea was to split more logic into smaller containers. The Header component was way too big and received way too many props. I could simply wrap the Header component in a container, but then we still need to hoist all this logic when making a small change to the header for a platform. For example, when we don't want the user menu or actions.
The size of the AppRoutes and Layout containers is an essential part of this PR:
https://github.com/jwplayer/ott-web-app/blob/78ec79bc2ed0a28fd28b5050faf799a1364e4714/platforms/web/src/containers/AppRoutes/AppRoutes.tsx
https://github.com/jwplayer/ott-web-app/blob/78ec79bc2ed0a28fd28b5050faf799a1364e4714/packages/ui-react/src/containers/Layout/Layout.tsx
Steps completed:

According to our definition of done, I have completed the following steps:

[x] Acceptance criteria met
[ ] Unit tests added
[ ] Docs updated (including config and env variables)
[ ] Translations added
[x] UX tested
[x] Browsers / platforms tested
[x] Rebased & ready to merge without conflicts
[ ] Reviewed own code

Moving forward, a change like this is necessary. I see some minor improvements we could apply in the CSS selectors, but that can always be improved upon in a later phase. I hope we can merge this ASAP.

@ChristiaanScheermeijer please resolve the conflicts and I will merge it.

@AntonLantukh this branch is rebased and squashed (making it easier to rebase)


Basic workspace and editor features

Basic workspace and editor features are missed:

Copy-paste
Import-export of files
Tab handling (close all, close all to the right etc)
Name of tab too long to fit does not show as tooltip
Git integration

Closing with references to individual tickets:
Copy/Paste works with the usual short cuts, but it is unfortunately not possible to support a menu action (see https://github.com/theia-ide/theia/issues/210).
Import / Export Files is covered here: https://github.com/theia-ide/theia/issues/351
The tab handling is tracked here: https://github.com/theia-ide/theia/issues/83
Name of tab (hover) : https://github.com/theia-ide/theia/issues/378
Git integration : https://github.com/theia-ide/theia/issues/165


Fix syntax error in testregistry.textproto

Pull Request Functional Test Report for #2761 / 53faa150f33e07407c51ab00f6fdd08a2e069900
No tests identified for validation.
Help

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 53.035%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1730

Relevant Lines:
3262

💛  - Coveralls


Improve subctl unit tests

Now that we have SonarCloud to better see coverage, it's clear that subctl is the main gap. We currently ahve 4.6% coverage.
https://sonarcloud.io/component_measures?id=submariner-io_subctl&metric=new_coverage&view=list
Add unit tests to get coverage up, maybe targeting 70ish%. This can be split into smaller issues, maybe this should be treated as an epic.

Duplicate of https://github.com/submariner-io/subctl/issues/422


Project.sync should fail when stale output cannot be deleted

When project.sync is execute - and destination directory contains files to be remove the operation succeed even though extra  files are not removed.
Expected Behavior
When sync cannot remove extra file in destination it should fail.
Current Behavior
Sync complete and workerResult api give work is done - when work was half done ( only copy without remove)
Context
All the sync tasks are not working as expected - lot of runtime exceptions
Steps to Reproduce (for bugs)
Create a project with the following task:

tasks.register("aFailedSync") {

    inputs.file project.buildDir.toPath().resolve("myProject.jar")

    outputs.dir project.buildDir.toPath().resolve("newFolder")

    doLast {

        def wk = project.sync {
            from project.buildDir.toPath().resolve("myProject.jar")
            into project.buildDir.toPath().resolve("newFolder")
        }
        println "wk.didWork ${wk.didWork}"
    }
}

create a file  myProject.jar under build folder and one under newFolder (the one that should be remove - keep it lock during execution)
Your Environment
https://gradle.com/s/m5ofmnjuuvlsc

In addition:
The page "Authoring Tasks" says:
"Note that if a task has an output directory specified, any files added to that directory since the last time it was executed are ignored and will NOT cause the task to be out of date. This is so unrelated tasks may share an output directory without interfering with each other. If this is not the behavior you want for some reason, consider using TaskOutputs.upToDateWhen(groovy.lang.Closure) "
Since it is related to the Sync Task I wanted to two questions:
a) Is it possible to add to the Sync Task a Boolean property to make it run when the destination contains extra files.
b) When a user set both the inputs + outputs and define an action for the upToDateWhen is it overriding the inputs/outputs incremental behavior or expanding it?  I looked for some documentation about it both in Docs and in API and could not found any.
inputs.files aFile
outputs.dir aDir
outputs.upToDateWhen { some logic to make it run on extra files in directory}

Thanks

I found that we were inadvertently hiding the failure when deleting a single file vs a directory.  This will be fixed in 5.4.

a) Is it possible to add to the Sync Task a Boolean property to make it run when the destination contains extra files.

I don't think we'd do this as a boolean/opt-in sort of thing, but just as something we'd always do.  How would extra files get into the directory?

b) When a user set both the inputs + outputs and define an action for the upToDateWhen is it overriding the inputs/outputs incremental behavior or expanding it? I looked for some documentation about it both in Docs and in API and could not found any.

It adds to it.  Returning true from this doesn't override Gradle's up-to-date checks.


Serialize/Deserialize

First of all, congratz for this lib.
Just have a question/concern about the approach taked on type-safe messages in the recent release, why use protobuf when we can use libs in rust ecosystem like this one?
Can we extended or add another libs for type-safe messages?, there is a guidance about how to implement other options (like the proposed)?, thanks.

Yeah, you can remove Protobuf and use other serialization method you like :) This is possible because data being passed between Dart and Rust are basically bytes arrays.
alkahest seems to be a decent serialization library for Rust, but it doesn't seem to support Dart code serialization. We adopted Protobuf to ensure type-safety from "same" messages(.proto) in both Dart and Rust. Protobuf was currently the most widely-used language-neutral message generator.


Add a CODEOWNERS to experiment with different review gating.

/lgtm
/approve

/lgtm
/approve

/retest

/retest


Add evaluate! and fit!

Fixes #19
I haven't written any tests for this yet (also with different dim arguments). Maybe somebody wants to do that, otherwise I'll try tomorrow.

Great work! I have several comments. What do you think?

TauSampling/MatsubaraSampling object may not necessarily hold a reference to a basis object. Removing this attribute, these parametric types have one less type parameter.
It'd be nice to have a function returning buffersize for fit!, which may take the same augments as fit!.
For less memory allocations, the target axis may be moved either to the first or to the last dimension.
https://github.com/SpM-lab/SparseIR.jl/blob/Samuel3008/issue19/src/sampling.jl#L187

Thank you!
The first one is a great suggestion, I've done it and it's cleaner now. As for the other two, could you please elaborate a little bit? I'm not sure how exactly the workspace will function (as opposed to buffer) and how we could perform multiplications and least squares if the target dimension is not in first place.

Second point:
If I understand correctly, ldiv! may internally allocate a workspace:
https://github.com/JuliaLang/julia/blob/master/stdlib/LinearAlgebra/src/factorization.jl#L122

I don't think there is a way to avoid the branch you linked. More generally, both ldiv!(Y, A, B) and ldiv!(A, B) allocate for non-square A, so we may just have to settle for that.

The user can preallocate a work array and pass it to fit! optionally if he/she wants to dynamically allocate a huge array at each self-consistent cycle.

Yes, that makes sense, but I don't know if the in-built ldiv! function offers the option of passing in such a workspace array. Or are you proposing we call something other than ldiv! from fit!?

Oh, I was proposing that we can implement something like ldiv! because the function is really short.

I see! That's still gonna be tricky because while the ldiv!(Y, A, B) method you linked itself allocates, it then calls out to ldiv!(A::Factorization, ::AbstractVector), which is (1) where the majority of allocations happen, (2) dependent on A's type and (3) highly non-trivial (see for example https://github.com/JuliaLang/julia/blob/84e9989bee4ca9dce57ebe7b2a6d4e074c55b3b3/stdlib/LinearAlgebra/src/qr.jl#L884; but there are others, depending on the factorization).

Hmm, shall we add tests and merge the current code? Then, we could improve the code later.

Yes, let's do that! Do you have ideas for tests?

For instance, we call evaluate! here and compare the result with that from evaluate.
https://github.com/SpM-lab/SparseIR.jl/blob/main/test/sampling.jl#L42

Are you going to implement tests? If not, I will.


Updated TOS should automatically be shown to the user on login

This reproduction is an approximation of the original observation, which is recorded in the CloudWatch excerpt below. To replicate the circumstances of the original observation, we'd presumably need to wait for the Terra TOS to be updated again, which is outside of our control. Instead, this demonstrates the problem using an account that has never accepted the TOS, instead of having previously accepted an outdated version of the TOS.
To reproduce, you'll need a Google account that has not accepted the Terra TOS. I used a non-work-related account to test this.

Generate an OAuth token for the Google account. I did this using the Azul Swagger UI for anvilprod by logging in and copying the token from the generated cURL command.

Register the Google account with the prod SAM instance using the OAuth token from step 1 and confirm that the TOS have not been accepted.

$ curl -X POST 'https://sam.dsde-prod.broadinstitute.org/register/user/v1' -H "Authorization: Bearer <OAUTH-TOKEN>" | jq .enabled.tosAccepted
false

If the account has already been registered with SAM, use -X GET to view the registration status.

Log in to the AnVIL prod data browser using the Google account from the previous step.

Result:

Here are the logs for the initial observation that spawned this ticket. In this case, the TOS has previously been accepted, but the acceptance had been nullified, presumably due to the contents of the TOS being updated.
CloudWatch Logs Insights
region: us-east-1
log-group-names: /aws/lambda/azul-service-anvilprod
start-time: -3600s
end-time: 0s
query-string:
fields @timestamp, @message, @logStream, @log
| filter @requestId == '4348f98a-febd-4e1b-9249-5ff8d8d78523'
| sort @timestamp desc
| limit 20

@timestamp
@message
@logStream
@log

2023-07-18 21:35:25.418
END RequestId: 4348f98a-febd-4e1b-9249-5ff8d8d78523
2023/07/18/[$LATEST]af1e1e2424154241848d5a7fb1390605
465330168186:/aws/lambda/azul-service-anvilprod

2023-07-18 21:35:25.418
REPORT RequestId: 4348f98a-febd-4e1b-9249-5ff8d8d78523 Duration: 6265.63 ms Billed Duration: 6266 ms Memory Size: 2048 MB Max Memory Used: 169 MB
2023/07/18/[$LATEST]af1e1e2424154241848d5a7fb1390605
465330168186:/aws/lambda/azul-service-anvilprod

2023-07-18 21:35:25.417
[DEBUG] 2023-07-18T21:35:25.416Z 4348f98a-febd-4e1b-9249-5ff8d8d78523 azul.terra _request(…) -> 5.884s 200 b'{"enabled":{"tosAccepted":false,"google":true,"ldap":true,"allUsersGroup":true,"adminEnabled":true},"userInfo":{"userEmail":"nadove@ucsc.edu","userSubjectId":"116364599669986455537"}}'
2023/07/18/[$LATEST]af1e1e2424154241848d5a7fb1390605
465330168186:/aws/lambda/azul-service-anvilprod

2023-07-18 21:35:25.417
[DEBUG] 2023-07-18T21:35:25.417Z 4348f98a-febd-4e1b-9249-5ff8d8d78523 azul.chalice Returning 401 response with headers {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Authorization,Content-Type,X-Amz-Date,X-Amz-Security-Token,X-Api-Key", "Strict-Transport-Security": "max-age=31536000; includeSubDomains"}. See next line for the first 1024 characters of the body. {"Code": "UnauthorizedError", "Message": "The current user is not authorized to access https://data.terra.bio/api/repository/v1/snapshots/roleMap or that resource does not exist. Make sure that it exists, that the user is registered with Terra, that the provided access token is not expired, and that the following access scopes were granted when authenticating: https://www.googleapis.com/auth/userinfo.email."}
2023/07/18/[$LATEST]af1e1e2424154241848d5a7fb1390605
465330168186:/aws/lambda/azul-service-anvilprod

2023-07-18 21:35:24.672
[WARNING] 2023-07-18T21:35:24.671Z 4348f98a-febd-4e1b-9249-5ff8d8d78523 urllib3.connectionpool Retrying (Retry(total=None, connect=0, read=1, redirect=0, status=0)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='sam.dsde-prod.broadinstitute.org', port=443): Read timed out. (read timeout=5.0)")': /register/user/v1
2023/07/18/[$LATEST]af1e1e2424154241848d5a7fb1390605
465330168186:/aws/lambda/azul-service-anvilprod

2023-07-18 21:35:19.532
[DEBUG] 2023-07-18T21:35:19.532Z 4348f98a-febd-4e1b-9249-5ff8d8d78523 azul.terra _request('GET', https://sam.dsde-prod.broadinstitute.org/register/user/v1, headers=None, timeout=5.0, body=None)
2023/07/18/[$LATEST]af1e1e2424154241848d5a7fb1390605
465330168186:/aws/lambda/azul-service-anvilprod

2023-07-18 21:35:19.531
[DEBUG] 2023-07-18T21:35:19.531Z 4348f98a-febd-4e1b-9249-5ff8d8d78523 azul.terra _request(…) -> 0.366s 401 b'{"message":"User must accept the latest terms of service.","errorDetail":[]}'
2023/07/18/[$LATEST]af1e1e2424154241848d5a7fb1390605
465330168186:/aws/lambda/azul-service-anvilprod

2023-07-18 21:35:19.165
[DEBUG] 2023-07-18T21:35:19.164Z 4348f98a-febd-4e1b-9249-5ff8d8d78523 azul.terra _request('GET', https://data.terra.bio/api/repository/v1/snapshots/roleMap, headers=None, timeout=5.0, body=None)
2023/07/18/[$LATEST]af1e1e2424154241848d5a7fb1390605
465330168186:/aws/lambda/azul-service-anvilprod

2023-07-18 21:35:19.155
[INFO] 2023-07-18T21:35:19.153Z 4348f98a-febd-4e1b-9249-5ff8d8d78523 azul.chalice Authenticated request as OAuth2(access_token='')
2023/07/18/[$LATEST]af1e1e2424154241848d5a7fb1390605
465330168186:/aws/lambda/azul-service-anvilprod

2023-07-18 21:35:19.153
[INFO] 2023-07-18T21:35:19.153Z 4348f98a-febd-4e1b-9249-5ff8d8d78523 azul.chalice Received GET request for '/index/datasets', with {"query": {"catalog": "anvil", "filters": "{}", "order": "asc", "size": "25", "sort": "datasets.title"}, "headers": {"accept": "application/json, text/plain, /", "accept-encoding": "gzip, deflate, br", "accept-language": "en-US,en;q=0.5", "authorization": "Bearer ", "host": "service.prod.anvil.gi.ucsc.edu", "origin": "https://prod.anvil.gi.ucsc.edu", "referer": "https://prod.anvil.gi.ucsc.edu/", "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-site", "user-agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/114.0", "x-amzn-cipher-suite": "ECDHE-RSA-AES128-GCM-SHA256", "x-amzn-tls-version": "TLSv1.2", "x-amzn-trace-id": "Root=1-64b70597-6f50fb005045b74c538417bd", "x-amzn-vpc-id": "vpc-064632eddaa54a056", "x-amzn-vpce-config": "1", "x-amzn-vpce-id": "vpce-08637de8076b554c3", "x-forwarded-for": "<IP_ADDRESS>, <IP_ADDRESS>", "x-forwarded-port": "443", "x-forwarded-proto": "https"}}.
2023/07/18/[$LATEST]af1e1e2424154241848d5a7fb1390605
465330168186:/aws/lambda/azul-service-anvilprod

2023-07-18 21:35:19.152
START RequestId: 4348f98a-febd-4e1b-9249-5ff8d8d78523 Version: $LATEST
2023/07/18/[$LATEST]af1e1e2424154241848d5a7fb1390605
465330168186:/aws/lambda/azul-service-anvilprod

[ ] Security design review completed; the Resolution of this issue does not …

[ ] … affect authentication; for example:

OAuth 2.0 with the application (API or Swagger UI)
Authentication of developers with Google Cloud APIs
Authentication of developers with AWS APIs
Authentication with a GitLab instance in the system
Password and 2FA authentication with GitHub
API access token authentication with GitHub
Authentication with

[ ] … affect the permissions of internal users like access to

Cloud resources on AWS and GCP
GitLab repositories, projects and groups, administration
an EC2 instance via SSH
GitHub issues, pull requests, commits, commit statuses, wikis, repositories, organizations

[ ] … affect the permissions of external users like access to

TDR snapshots

[ ] … affect permissions of service or bot accounts

Cloud resources on AWS and GCP

[ ] … affect audit logging in the system, like

adding, removing or changing a log message that represents an auditable event
changing the routing of log messages through the system

[ ] … affect monitoring of the system
[ ] … introduce a new software dependency like

Python packages on PYPI
Command-line utilities
Docker images
Terraform providers

[ ] … add an interface that exposes sensitive or confidential data at the security boundary
[ ] … affect the encryption of data at rest
[ ] … require persistence of sensitive or confidential data that might require encryption at rest
[ ] … require unencrypted transmission of data within the security boundary
[ ] … affect the network security layer; for example by

modifying, adding or removing firewall rules
modifying, adding or removing security groups
changing or adding a port a service, proxy or load balancer listens on

[ ] Documentation on any unchecked boxes is provided in comments below

@hannes-ucsc: "Our initial analysis indicates that this is very likely a Data Browser bug. @bvizzier-ucsc to discuss with CC."


ONNX Model

Where can I find the ONNX model used for this demo?  The "Azure notebook" link stated in the article is not related.
If possible, where can I find the project used to create the ONNX model referenced in this article?

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

ID: 592bbede-8fb9-bc41-94e6-514587ff4249
Version Independent ID: a715cbad-e61f-05e7-f68a-0aae060afb79
Content: Make predictions with AutoML ONNX Model in .NET - Azure Machine Learning
Content Source: articles/machine-learning/how-to-use-automl-onnx-model-dotnet.md
Service: machine-learning
Sub-service: automl
GitHub Login: @manashgoswami
Microsoft Alias: magoswam

@snasr
Thanks for your feedback! We will investigate and update as appropriate.


Redesign the control panel to more closely match multilink

Does this PR close any open issues?
Closes #357
Give a longer description of what this PR addresses and why it's needed
Refactors the control menu to look more like multilink with the expanding card. I decided to simplify it down to one card, unlike on multilink, since Alex has been telling me that there isn't a clear reason why it's split up.
On my path to this design, I also fixed some other issues:

The legend SVGs were too large and overlapped with the v-autocompletes
I made it so that the aggregatedBy could be cleared, allowing the resetting of the labels.
I grouped controls that had visual styles together

Provide pictures/videos of the behavior before and after these changes (optional)
Previous look:

Current collapsed look:

Current expanded look:

Are there any additional TODOs before this PR is ready to go?
TODO:

[ ] Make an issue to add a search box (or check if there is one)

Looks good. A light design suggestion would be to remove the white space between the vis options and color scale legend.
It looks fine when the vis options are collapsed:
But mildly awkward when it is expanded:

This is where the search box will go. I made a TODO for it, but I should have been more explicit :)


Antigen load local theme file?

Description
I am trying to load my own .zsh-theme file. It is not part of the oh-my-zsh repo, and I don't know how I can load it. I tried to specify the path with antigen theme <path to file>, but that didnt work
Expected behavior:
- I'd like to load and use my theme

Software version

antigen version: 2.2.2
zsh --version: 5.8
uname -a: Linux void 5.9.4-arch1-1 #1 SMP PREEMPT Wed, 04 Nov 2020 21:41:09 +0000 x86_64 GNU/Linux

I was looking for this too. What I ended up doing is simply sourcing the theme file after I initialized antigen:
antigen init ./antigenrc
source ./sto.zsh-theme


Timesheet - 19/07/2021 - Justin Kim

Task 1

worked on beta wallet

Proof of Work

Time Spent
2.5

Task 2
Sprint Planning Meetring with Kristy Bucky Muhammad Manish
Proof of Work

https://docs.google.com/document/d/1T96jzaIGbeTB14k_8Mt9elM0LGfxoOAVzf5FM0MchXQ/edit?usp=sharing
https://docs.google.com/document/d/1EDQ23dFpnqwnoHtnB9Lms1Czp6Fhr0sOu8lDkCbVF0U/edit?usp=sharing

Time Spent
2 hours

Total Time Spent
4.5 hours
Account Number
67077b2397f99fb6c63185af25cdf49d43736b22b7ea5dd68089a04cd4dbf8cf

wife gave me permission to work more today, so i'm removing the 'ready for review'

now its ready for review


Apply CI into this project

CI Using Github Action with:

Ubuntu 18.04 LTS
latest TeX Live

The results will be uploaded into artifects in Github Action page, which will not affect the original project. This PR will fix #25.

I will merge this for now.
Some further changes I will make:

Upload individual pdf file instead of zip file

Besides, we'd better use SimSun and SimHei in CI environment. I have several ideas:

Install these two fonts under the CI environment (Ubuntu)
Switch Windows image which may contain these fonts
Create a docker image with texlive and Chinese fonts installed. And use the docker image in GitHub action.


Add Chat_GLM_Miner to Release 5.1.0

As per the conversation in this PR this new PR is to add Chat GLM miner support to Release 5.1.0.

Thanks KMFODA!  We're moving fast, so now we have a Huggingface base miner ABC
Would you mind converting to this new format from PR https://github.com/opentensor/bittensor/pull/1363?

@KMFODA Thank you! LGTM.


元数据按需加载到内存

Search before asking

[X] I searched in the issues and found nothing similar.

Motivation
当前所有元数据在程序启动时会将所有的元数据都写入到内存里面，这样在元数据不断增加的场景中很容易导致内存不够用
Solution
No response
Alternatives
No response
Are you willing to submit a PR?

[ ] I'm willing to submit a PR!

latest version has support it.

latest version has support it.

What is the specific version number that supports it?

latest version has support it.

What is the specific version number that supports it?

@lichanging Hi, will support PBTree schema storage in 1.2.1 (at 8.30), schema_engine_mode=PBTree
Another feather to lower the memory occupation of schema is the schema(device) template(already in 1.1).


Add Filter function to garray

Add custom filter functions to garray, developers can pass in custom functions to filter the elements in the garray, returning a new array without modifying the original array.

Codecov Report
Base: 79.98% // Head: 80.04% // Increases project coverage by +0.05% :tada:

Coverage data is based on head (7b7fd07) compared to base (adf90c8).
Patch coverage: 83.48% of modified lines in pull request are covered.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #2471      +/-   ##
==========================================
+ Coverage   79.98%   80.04%   +0.05%
==========================================
  Files         599      597       -2
  Lines       49779    49768      -11
==========================================
+ Hits        39816    39837      +21
+ Misses       8006     7982      -24
+ Partials     1957     1949       -8

Flag
Coverage Δ

go-1.15-386
?

go-1.15-amd64
80.02% <83.48%> (+0.01%)
:arrow_up:

go-1.16-386
80.03% <83.48%> (+0.02%)
:arrow_up:

go-1.16-amd64
?

go-1.17-386
80.02% <83.48%> (+0.02%)
:arrow_up:

go-1.17-amd64
?

go-1.18-386
?

go-1.18-amd64
?

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

encoding/gbase64/gbase64.go
62.60% <67.27%> (+4.27%)
:arrow_up:

container/garray/garray_normal_any.go
98.54% <100.00%> (+0.02%)
:arrow_up:

container/garray/garray_normal_int.go
98.50% <100.00%> (+0.02%)
:arrow_up:

container/garray/garray_normal_str.go
98.34% <100.00%> (+0.02%)
:arrow_up:

container/garray/garray_sorted_any.go
96.00% <100.00%> (+0.06%)
:arrow_up:

container/garray/garray_sorted_int.go
97.33% <100.00%> (+0.05%)
:arrow_up:

container/garray/garray_sorted_str.go
97.18% <100.00%> (+0.05%)
:arrow_up:

os/gfsnotify/gfsnotify_watcher_loop.go
78.15% <0.00%> (-5.05%)
:arrow_down:

contrib/registry/zookeeper/zookeeper_watcher.go
48.88% <0.00%> (-2.23%)
:arrow_down:

container/gmap/gmap_hash_str_any_map.go
97.00% <0.00%> (-1.00%)
:arrow_down:

... and 2 more

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

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

@wsy998 Any updates?

One PR does only one thing, please move the other features to other PRs.

So do I need to resubmit a PR?

Submit new PRs is better.


Faster tf remember

To improve the tf remember method, I am whiping the database to delete the indexes. Afterwards I am importing the tf data and then the indexes will be created. This improves the import time significantly.

@seba90 could you update the request? tf_plugin has been moved to another directory


Selecting database in a view adds it to the query

The database method on views allows specifying the database to query from.
  User.by_login.database(User.tmp_database).key("bla").first

However the database parameter gets added to the query so it's also present in the url. So the couch logs for this query for me show:
GET /tmp_users/_design/User/_view/by_login?database=http%3A%2F%2Flocalhost%3A5984%2Ftmp_users&key=%22bla%22&limit=1&include_docs=true&reduce=false 200

I would expect the query to not contain the database:
GET /tmp_users/_design/User/_view/by_login?key=%22bla%22&limit=1&include_docs=true&reduce=false 200

The database parameter clutters the query and also leaks credentials in the couch logs.

I've looked into implementing a fix for this a bit. I see two options...
The hacky one... remove the database parameter from the query. This would have the ugly sideeffect of removing the parameter even if it was explicitly set.
The more correct one (?)... use something else than the query to store the database in. This is kind of complicated because of the nice way queries are build by chaining calls and creating new instances of the view. The initializer already has 4 parameters. The best way would probably be to fetch it from the parent like we currently do with name.


Add a utility to check for license headers

All repositories need to be checked for license headers. Let's provide the check utility from the prometheus project here.
@fabxc @sdurrheimer

Can/should these sort of things live in promu?

It makes sense to me to add it to promu.

Fine with me. In that case should we move this repo to the graveyard and
consolidate everything in promu?
On Thu, Aug 18, 2016 at 3:09 AM Steve Durrheimer<EMAIL_ADDRESS>wrote:

It makes sense to me to add it to promu.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/prometheus/utils/issues/23#issuecomment-240641837,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAANaMxs0K1xxbybEzZoQxZvlmarsGyBks5qhAURgaJpZM4JnLkX
.

Moved to https://github.com/prometheus/promu/issues/58 and done by @beorn7.


fix(mcdaStyle): 18809 don't show hexes with MCDA value === Infinity on the map

https://kontur.fibery.io/Tasks/Task/FE-MCDA-hex-shows-Infinity-result-if-the-denominator-is-0-18809

Summary by CodeRabbit

Bug Fixes

Improved handling of mcdaResult values to address cases where the result equals Infinity, marking them as invalid by setting them to transparent.

It was decided to not filter out Infinity values on FE (because they can be valid in theory), and instead to try and fix this on BE/data side within MVTs. See comment: https://kontur.fibery.io/Tasks/Task/FE-MCDA-hex-shows-Infinity-result-if-the-denominator-is-0-18809/comment=23678

It was decided to not filter out Infinity values on FE (because they can be valid in theory), and instead to try and fix this on BE/data side within MVTs. See comment: https://kontur.fibery.io/Tasks/Task/FE-MCDA-hex-shows-Infinity-result-if-the-denominator-is-0-18809/comment=23678


The Clock Panel’s “Bg Color” Function doesn’t work

Hi,
After Grafana v6.7.x,The Clock Panel’s “Bg Color” Function doesn’t work. But It’s normal in v6.6.2. May be a bug is here? Hope it can be confirmed and solved as soon as possible.
Thanks.

Hi, we noticed the same issue, this makes the panel unsuitable with Grafana 6.7.

This is a bug in Grafana not in the plugin. Follow https://github.com/grafana/grafana/issues/23306 for more info.

The clock panel was editing a css class that is no longer in grafana... this is now fixed in 7+ with clock 1.1+


(maint) Update submodule and tests to Puppet 3.8.1

Without this patch the tests are mixing and matching the version of Puppet
being installed.  For example, the legacy puppet agent tests are installing
3.8.1 while the unit and integration tests run with a Puppet 3.7 version from
the submodule.
This patch addresses the problem by updating the behavior of the tests to use
the same version, 3.8.1.

:+1:

:+1:


Suppress warnings about trying to import module without psd1 file

If a provider module does not have *.psd1 file, warning messages are displayed by invoking New-PSDrive cmdlet:
PS> New-PSDrive -Name Austin -PSProvider SHiPS -Root 'FamilyTree#Austin'
WARNING: 'C:\Users\matt9ucci\SHiPS\samples\FamilyTree\FamilyTree.psd1' does not exist.
WARNING: Trying 'C:\Users\matt9ucci\SHiPS\samples\FamilyTree\FamilyTree.psm1'.

These warning messages are somewhat noisy, especially when running unit tests with Invoke-SHiPSTest function in setup.psm1.
*.psd1 files are not required for a module (see the official doc). It would be better to change the log level from warning to debug.

Thank you @matt9ucci for the fix!


Clarification Optuna optimization n-jobs

Hi, i would like to ask for a clarification in how optuna is actually implemented. Suppose i have a DummyVecEnv, and in the configuration file I have n_envs = 4. I know that they will run in just one core of the CPU sequentially.
But what happens if i launch the optuna optimization with a number of jobs  = 2? Do Optuna automatically will use two cores, putting 4 env in one core e 4 to the another?
Thank you!

Hello,
This look like more a question for optuna, but I would say yes, it should create two processes and so use two cores with 4 envs on each of those.
Looking at the code of optuna, it uses a multiprocessing thread pool (apparently undocumented feature of python).

Thank you for the answer. But in my machine it seems to make the computation longer (therefore it seems optuna is not parallelizing!), but i will investigate a little bit more

Hi,
Thank you for using Optuna in this great library!
I would like to answer about Optuna's behavior when n_jobs > 2 is specified at Study.optimize method.
In such cases, Optuna spawns multiple threads to execute the optimization. However, Python's GIL (Global Interpreter Lock) prevents those threads to run in parallel. Thus, typically, you can only parallelize I/O heavy workload by specifying n_jobs option.
To utilize your CPU cores, you need to parallelize your objective function or use Distributed Optimization feature.

@sile thanks for the clarification (in fact, I was afraid of the GIL when I read ThreadPool) and thank you this great library which is Optuna =).


Add convenience methods to Alert and Pager

Alert - setter/getters to control fade out on close
Pager - setter/getters to control visibility and enable/disable the next/prev buttons

Great, thanks!


replacePlaylistTracks tests for wrong response status

Hi. I've been using your library, it works great!
But when updating a playlist I noticed the return false when actually I see the playlist updating.
The cause is the comparation with 201 of the response status in replacePlaylistTracks in src/SpotifyWebAPI.php when the Spotify api docs specify a 200 response in case of success (https://developer.spotify.com/documentation/web-api/reference/reorder-or-replace-playlists-tracks)

Hey!
It does indeed! Spotify must have changed that at some point 🤔 I'll get that sorted straight away.

6.0.4 fixes it, thanks for the report!

Seems like that changed throughout other methods too, for example addPlaylistTracks


Clarified pronunciation

Added link to the Wikimedia audio recording of the Swedish word for a hunt.

Hello!
One or more of the commit messages in this PR do not match the Jakt code submission policy, please check the lint_commits CI job for more details on which commits were flagged and why.
Please do not close this PR and open another, instead modify your commit message(s) with git commit --amend and force push those changes to update this PR.


StartupViewSet

Develop StartupViewSet with get_profile method
Create update_profile method in StartupViewSet
Implement list_deals method in StartupViewSet
Develop create_deal method in StartupViewSet
Create get_deal method in StartupViewSet
Implement update_deal method in StartupViewSet
Develop delete_deal method in StartupViewSet
Create list_investments method in StartupViewSet
Implement get_dataroom method in StartupViewSet
Develop update_dataroom method in StartupViewSet
Create manage_dataroom_access method in StartupViewSet
Implement list_meetings method in StartupViewSet
Develop schedule_meeting method in StartupViewSet
Create get_meeting method in StartupViewSet
Implement update_meeting_status method in StartupViewSet


Apply --force flag if set for taps

I have
tap "homebrew/core"
tap "homebrew/cask"

in my Brewfile and since those casks are no longer required, brew bundle install will receive and error via calling brew tap :name.
Passing --force flag in brew bundle install has no effect due to TapInstaller.install() force argument is ignored.

Makes sense, thanks @tony-sol!


MSFS micro stuttering due to reading/monitoring too many Simvars

Great Thanks to MobiFlight, I found I have no reason to develop a new module, except to reuse mobiflight. it is a great gift of open source community.
After I deeply developed a client based on your module, I found a serious performance issue.
micro stuttering is seen regularly every xxx ms. a sudden frame drop regularly be seen in below screenshot
From a user experience, it is not acceptable.

By removing Community\mobiflight-event-module,  micro stuttering is gone.
Background: I am developing a SimConnect client calling MobiFlight module.

with how many values does this happen? I haven't encountered this problem yet in my setups.

@DocMoebiuz I have around 40 SimVars to be monitored. I have confirmed it will cause micro stuttering. I did CtrlX/CtrlV mobiflight-event-module at least 10 times. I am sure it has side effect on MSFS performace

I have uploaded a video to show you what was happened
https://youtu.be/uX5df6sIRN4

Hi,
nice video with sound effects ;-).
I will do some tests as well.
An issue on the mobiflight WASM side is just one possibility.
Problems might also be caused on the simconnect client side:

There is only one callback thread with the DispatchProc callback function. If you're code in the callback function is too slow and takes too long processing the callbacks, this might create problems as well.
If your code receives too many values and  you do some heavy calculations, you could use too much CPU in your simconnect client which also might cause stutters in the sim.

Some tests will show.

Ok I did tests and can confirm. It also happens if the external simconnect client is disconnected and the WASM just does its work with the registered variables.
On my system:

Until 50 simple variables there is barely anything noticeable
With 70 variables I have stutter every 3s
With 80 variables I have stutter every 2.5s
With 100 variables I have stutter every 2s
Above 100 it goes crazy and it is a stutterfest. It seems there some threshold is reached.

Ok I did tests and can confirm. It also happens if the external simconnect client is disconnected and the WASM just does its work with the registered variables.
On my system:

Until 50 simple variables there is barely anything noticeable
With 70 variables I have stutter every 3s
With 80 variables I have stutter every 2.5s
With 100 variables I have stutter every 2s
Above 100 it goes crazy and it is a stutterfest. It seems there some threshold is reached.

it is exactly matching my testing, micro shutter will be there once the client has registered these values in Mobi. Thanks for confirmation


How to retrieve embedded collections?

Not sure, which place is more suitable for this question -- here or the ZF HAL issues page...
I'm working at an Apigility driven application with following end points:
/projects
/projects/:id
/images
/images/:id

The relationship between Project and Image is 1:n.
The configs render_embedded_entities and render_collections (see Apigility documentation: "ZF HAL -> Configuration -> User Configuration -> renderer") are not set, that means set to the default value (true). Somehow it didn't work for me, so I implemented this in the ProjectService class:
...

class ProjectService implements ServiceManagerAwareInterface {

    ...

    public function getProject($id) {
        $project = $this->getMapper()->findById($id);
        $images = $this->getImageService()->getImagesForProject($id);
        $project->setImages($images);
        return $project;
    }

    ...

}

The /projects/:id end point provides a project with an image list. Well. Now I want to achieve the same behavior for the /projects -- every element should provide a list of images, that belong to it. The implementation like
public function getProjects() {
    $projects = $this->getMapper()->findAll();
    foreach ($projects as $project) {
        $images = $this->getImageService()->getImagesForProject($project->getId());
        $project->setImages($images);
    }
    return $projects;
}

is not possible, since a collection is not a list of single entity elements.
So how to implement this?

I'm having the exact same problem. Did you ever solve this?

Unfortunately not. I tried different ways to solve it and "spammed" staskoverflow with thousand Apigility related questions (nested responses, linking collections to theentities, Doctrine, data manipulation before sending to the client, and some other), but I have not found neither a solution, nor even an acceptable workaround.
I wonder, why this basic question cannot find an answer. Nearly every application, that is more complex than "Hello World!", needs nested output. I'm sure, it must be possible with Apigility and would be glad to get some information, how to do this. And it would be nice, if the Documentation would contain an example with a nested ouput (like a projects list { ... _embedded: { projects: [ { ... _embedded: { images: [ { image }, { image }, { image } ] } }, { ... _embedded: { images: [ { image }, { image }, { image } ] } }, ... ] } }).

Hey, I think I figured this out. At least, I found a way to do this, though I don't know if it is the correct way. I saw a post by Matthew on the Google groups addressing a similar issue and changed one line to make it work for embedding other resources. I've left the FQCN in to be clearer.
In my case I have a Member entity which has a Membership embedded entity.
// MembersResource.php
    /**
     * Fetch all or a subset of resources
     *
     * @param  array $params
     * @return ApiProblem|mixed
     */
    public function fetchAll($params = array())
    {
        $resultSet = new \Zend\Db\ResultSet\HydratingResultSet(
            $this->services->get('Application\Model\Hydrator\MemberHydrator'),
            new \Application\Model\Entity\Member
        );

        $select = new \Zend\Db\Sql\Select('members');
        $paginatorAdapter = new \Zend\Paginator\Adapter\DbSelect($select, $this->services->get('Zend\Db\Adapter\Adapter'), $resultSet);
        $collection = new \Admin\V1\Rest\Members\MembersCollection($paginatorAdapter);
        return $collection;
    }

The key here is the custom MemberHydrator I'm passing in. It's almost an empty class that extends Zend\Stdlib\Hydrator\ClassMethods but overrides the extract() and hydrate() methods.
I'm still working on this implementation (haven't even finished my extract() method properly, but the hydrate() method goes something like this:
//MemberHydrator
    /**
     * Hydrate an object by populating getter/setter methods
     *
     * Hydrates an object by getter/setter methods of the object.
     *
     * @param  array $data
     * @param  object $object
     * @return object
     * @throws Exception\BadMethodCallException for a non-object $object
     */
    public function hydrate(array $data, $object)
    {
        $object = parent::hydrate($data, $object);

        if ($object->getMembershipId() !== null)
        {
            $membership = $this->membershipMapper->findById($object->getMembershipId());
        }
        $object->setMembershipId($membership);
        return $object;
    }

Basically when hydrating, if the getMembershipId() method is not null (in my case its an INT column) then I find that record on the membership table and replace the id on my member table with the membership entity object. (Note, I will be renaming membershipId with membership). If you have more embedded entities, this is the place to embed them.
Now, my fetchAll() returns a proper collection with working pagination and embedded entities.
Pros: Easy to code.
Cons: Makes an extra db query per embedded entity.
I'm going to attempt a version 2 of this where the Select object does a JOIN with the related table and brings in all the necessary fields so that the MemberHydrator does not have to make any extra db calls.
I completely agree with you that this should be documented somewhere as I too think this is a very basic need. If Matthew ever confirms that this is the way to go, I will gladly submit a PR to the docs repo with a recipe to do this.
Caveats: (and I think this too should be part of Apigility at least in an optional manner) If you PUT/POST/PATCH a document with embedded resources back to Apigility it will complain about the unknown _embedded and _links fields and will stop dead on its tracks. It would be very nice to have a way to declare your embedded resources so that Apigility knows what to expects.

Trying to implement you solution... How do you make the Mapper class available in the custom Hydrator? Are you passing the ServiceManager into it somehow? Can you please post the whole class code here or a link to it?

Pretty much like you said: I inject the ServiceManager into the Hydrator since I will need to pull out many mappers, none of which I know the name yet. Supposedly composing the ServiceManager is not a good practice but in this case I think I have a good case for it.
Note that in my case I am subclassing the ClassMethods hydrator since it does 99% of the work for me. I'm including an entity so that you know what they look like. This is an early version with just one embedded entity (which suffices for an example). Note that I autogenerate my entities from a little script that I wrote which introspects the MySQL tables so that I don't have to code everything again with every schema change. This means that if I name my database fields correctly, the rest is done for me: I can use just ONE hydrator and it will work with every entity.
<?php
// EmbeddedEntity.php
namespace Application\Model\Hydrator;

use Zend\Stdlib\Exception;
use Zend\Stdlib\Hydrator\ClassMethods as ClassMethodsHydrator;

class EmbeddedEntity extends ClassMethodsHydrator
{
    /**
     * @var \Zend\ServiceManager\ServiceManager
     */
    protected $serviceManager;

    public function __construct()
    {
        parent::__construct(false);
    }

    /**
     * Extract values from an object with class methods
     *
     * Extracts the getter/setter of the given $object.
     *
     * @param  object $object
     * @return array
     * @throws Exception\BadMethodCallException for a non-object $object
     */
    public function extract($object)
    {
        $data = parent::extract($object);

        foreach ($object->getSpecialFields() as $realField => $entityField)
        {
            unset($data[$entityField]);
        }
        unset($data['specialFields']);
        return $data;
    }

    /**
     * Hydrate an object by populating getter/setter methods
     *
     * Hydrates an object by getter/setter methods of the object.
     *
     * @param  array $data
     * @param  object $object
     * @return object
     * @throws Exception\BadMethodCallException for a non-object $object
     */
    public function hydrate(array $data, $object)
    {
        $object = parent::hydrate($data, $object);

        foreach ($object->getSpecialFields() as $realField => $entityField)
        {
            // $realField is "membershipId"
            // $entityField is "membership"
            // Now I find my membership entity and do something like
            // $object->membership = $membershipMapper->findById(...)
        }

        return $object;
    }

    /**
     * @return \Zend\ServiceManager\ServiceManager
     */
    public function getServiceManager()
    {
        return $this->serviceManager;
    }

    /**
     * @param \Zend\ServiceManager\ServiceManager $serviceManager
     */
    public function setServiceManager($serviceManager)
    {
        $this->serviceManager = $serviceManager;
    }
}

Here's the entity:
/// Member.php

<?php

namespace Application\Model\Entity;

class Member implements MemberInterface
{

    protected $id = '';

    protected $name = '';

    protected $email = '';

    protected $email2 = '';

    protected $validatedEmail = '';

    protected $activateCode = '';

    protected $city = '';

    protected $address = '';

    protected $phone1 = '';

    protected $phone2 = '';

    protected $phone3 = '';

    protected $isMember = '';

    protected $wantsMail = '';

    protected $birthdate = '';

    protected $creationDate = '';

    protected $memberSince = '';

    protected $membershipId = '';

    protected $membership = null; // <-- not a real field in the DB but an embedded entity

    protected $isInstitute = '';

    protected $instituteName = '';

    protected $comments = '';

    protected $plays = '';

    // This is how I tell my hydrator, what database column "goes" into what
    // embedded entity property. In this case, I'm saying "put a Membership entity
    // into the membership property and find it by membershipId in the membership table"
    protected $specialFields = array(
        'membershipId' => 'membership'
    );

    /**
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @param int $id
     * @return \Application\Model\Entity\Members
     */
    public function setId($id)
    {
        $this->id = $id;
        return $this;
    }

    /**
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * @param string $name
     * @return \Application\Model\Entity\Members
     */
    public function setName($name)
    {
        $this->name = $name;
        return $this;
    }

    /**
     * @return string
     */
    public function getEmail()
    {
        return $this->email;
    }

    /**
     * @param string $email
     * @return \Application\Model\Entity\Members
     */
    public function setEmail($email)
    {
        $this->email = $email;
        return $this;
    }

    /**
     * @return string
     */
    public function getEmail2()
    {
        return $this->email2;
    }

    /**
     * @param string $email2
     * @return \Application\Model\Entity\Members
     */
    public function setEmail2($email2)
    {
        $this->email2 = $email2;
        return $this;
    }

    /**
     * @return int
     */
    public function getValidatedEmail()
    {
        return $this->validatedEmail;
    }

    /**
     * @param int $validatedEmail
     * @return \Application\Model\Entity\Members
     */
    public function setValidatedEmail($validatedEmail)
    {
        $this->validatedEmail = $validatedEmail;
        return $this;
    }

    /**
     * @return string
     */
    public function getActivateCode()
    {
        return $this->activateCode;
    }

    /**
     * @param string $activateCode
     * @return \Application\Model\Entity\Members
     */
    public function setActivateCode($activateCode)
    {
        $this->activateCode = $activateCode;
        return $this;
    }

    /**
     * @return string
     */
    public function getCity()
    {
        return $this->city;
    }

    /**
     * @param string $city
     * @return \Application\Model\Entity\Members
     */
    public function setCity($city)
    {
        $this->city = $city;
        return $this;
    }

    /**
     * @return string
     */
    public function getAddress()
    {
        return $this->address;
    }

    /**
     * @param string $address
     * @return \Application\Model\Entity\Members
     */
    public function setAddress($address)
    {
        $this->address = $address;
        return $this;
    }

    /**
     * @return string
     */
    public function getPhone1()
    {
        return $this->phone1;
    }

    /**
     * @param string $phone1
     * @return \Application\Model\Entity\Members
     */
    public function setPhone1($phone1)
    {
        $this->phone1 = $phone1;
        return $this;
    }

    /**
     * @return string
     */
    public function getPhone2()
    {
        return $this->phone2;
    }

    /**
     * @param string $phone2
     * @return \Application\Model\Entity\Members
     */
    public function setPhone2($phone2)
    {
        $this->phone2 = $phone2;
        return $this;
    }

    /**
     * @return string
     */
    public function getPhone3()
    {
        return $this->phone3;
    }

    /**
     * @param string $phone3
     * @return \Application\Model\Entity\Members
     */
    public function setPhone3($phone3)
    {
        $this->phone3 = $phone3;
        return $this;
    }

    /**
     * @return int
     */
    public function getIsMember()
    {
        return $this->isMember;
    }

    /**
     * @param int $isMember
     * @return \Application\Model\Entity\Members
     */
    public function setIsMember($isMember)
    {
        $this->isMember = $isMember;
        return $this;
    }

    /**
     * @return int
     */
    public function getWantsMail()
    {
        return $this->wantsMail;
    }

    /**
     * @param int $wantsMail
     * @return \Application\Model\Entity\Members
     */
    public function setWantsMail($wantsMail)
    {
        $this->wantsMail = $wantsMail;
        return $this;
    }

    /**
     * @return string
     */
    public function getBirthdate()
    {
        return $this->birthdate;
    }

    /**
     * @param string $birthdate
     * @return \Application\Model\Entity\Members
     */
    public function setBirthdate($birthdate)
    {
        $this->birthdate = $birthdate;
        return $this;
    }

    /**
     * @return string
     */
    public function getCreationDate()
    {
        return $this->creationDate;
    }

    /**
     * @param string $creationDate
     * @return \Application\Model\Entity\Members
     */
    public function setCreationDate($creationDate)
    {
        $this->creationDate = $creationDate;
        return $this;
    }

    /**
     * @return string
     */
    public function getMemberSince()
    {
        return $this->memberSince;
    }

    /**
     * @param string $memberSince
     * @return \Application\Model\Entity\Members
     */
    public function setMemberSince($memberSince)
    {
        $this->memberSince = $memberSince;
        return $this;
    }

    public function getMembership()
    {
        return $this->membership;
    }

    public function setMembership($membership)
    {
        $this->membership = $membership;
        return $this;
    }

    /**
     * @return int
     */
    public function getMembershipId()
    {
        return $this->membershipId;
    }

    /**
     * @param int $membershipId
     * @return \Application\Model\Entity\Members
     */
    public function setMembershipId($membershipId)
    {
        $this->membershipId = $membershipId;
        return $this;
    }

    /**
     * @return int
     */
    public function getIsInstitute()
    {
        return $this->isInstitute;
    }

    /**
     * @param int $isInstitute
     * @return \Application\Model\Entity\Members
     */
    public function setIsInstitute($isInstitute)
    {
        $this->isInstitute = $isInstitute;
        return $this;
    }

    /**
     * @return string
     */
    public function getInstituteName()
    {
        return $this->instituteName;
    }

    /**
     * @param string $instituteName
     * @return \Application\Model\Entity\Members
     */
    public function setInstituteName($instituteName)
    {
        $this->instituteName = $instituteName;
        return $this;
    }

    /**
     * @return string
     */
    public function getComments()
    {
        return $this->comments;
    }

    /**
     * @param string $comments
     * @return \Application\Model\Entity\Members
     */
    public function setComments($comments)
    {
        $this->comments = $comments;
        return $this;
    }

    /**
     * @return string
     */
    public function getPlays()
    {
        return $this->plays;
    }

    /**
     * @param string $plays
     * @return \Application\Model\Entity\Members
     */
    public function setPlays($plays)
    {
        $this->plays = $plays;
        return $this;
    }

    public function getSpecialFields()
    {
        return $this->specialFields;
    }

}

Thank you for your datailed example! It's not working for me yet. The problem is, that the entity hydration settings seem not to work for collection calls (SO question here). I've debugged a litttle and haven't observe any hydrate() or extract() calls on a hydrator. Whatever I set for the entity hydration, when a collection is retrieved, neither ClassMethods, nor other hydrators are called.
Module class
class Module implements ApigilityProviderInterface {
    ...
    public function getServiceConfig() {
        return array(
            'factories' => array(
                ...
                'MyNamespace\\Hydrator\\ProjectHydrator' => function(ServiceManager $serviceManager) {
                    $projectHydrator = new ProjectHydrator();
                    $projectHydrator->setImageService($serviceManager->get('Portfolio\V2    \Rest\ImageService'));
                    return $projectHydrator;
	            }
            ),
            ...
        );
    }
}

module.config.php
...
'zf-hal' => array(
    'metadata_map' => array(
        ...
        'Portfolio\\V2\\Rest\\Project\\ProjectEntity' => array(
            'entity_identifier_name' => 'id',
            'route_name' => 'portfolio.rest.project',
            'route_identifier_name' => 'id',
            // 'hydrator' => 'Zend\\Stdlib\\Hydrator\\ClassMethods',
            'hydrator' => 'MyNamespace\\Hydrator\\ProjectHydrator',
        ),
        ...
    ),
),
...

How have you configured the system for using your EmbeddedEntity hydrator?

Your config looks like mine. In my case, the only way to properly hydrate collection calls was to use what I posted in this comment.
Here's a fun fact: in my module.config.php I am using the ClassMethods hydrator. Well, actually I'm using  what I call a Generic hydrator which is exactly the same but it configures the $underscoreSeparatedKeys to false:
<?php

namespace Application\Model\Hydrator;

use Zend\Stdlib\Hydrator\ClassMethods as ClassMethodsHydrator;

class Generic extends ClassMethodsHydrator
{
    public function __construct()
    {
        parent::__construct(false);
    }
}

So to all intents and purposes this is exactly the same as the ClassMethods hydrator. If I use my own hydrator here, I get flat responses from Apigility and if I use this hydrator I get the properly embedded responses. Sounds backwards but I think it has to do with me already providing Apigility with properly hydrated entities:
    /**
     * Fetch a resource
     *
     * @param  mixed $id
     * @return ApiProblem|mixed
     */
    public function fetch($id)
    {
        // My mapper is already using my own hydrator which already returns all the embedded
        // entities where they should be
        return $this->mapper->findById($id);
    }

It wokrs! I want to post my variant of your (@poisa) solution:
/module/Portfolio/config/module.config.php
return array(
	...
    'zf-hal' => array(
        'metadata_map' => array(
        	...
            'Portfolio\\V2\\Rest\\Project\\ProjectCollection' => array(
                'entity_identifier_name' => 'id',
                'route_name' => 'portfolio.rest.project',
                'route_identifier_name' => 'id',
                'is_collection' => true,
            ),
            ...
        ),
    ),
);

Portfolio\Module
class Module implements ApigilityProviderInterface {

	...

	public function getHydratorConfig() {
		return array(
			'factories' => array(
				// V2
				'MyNamespace\\Hydrator\\ProjectHydrator' => function(ServiceManager $serviceManager) {
					$projectHydrator = new ProjectHydrator();
					$projectHydrator->setImageService($serviceManager->getServiceLocator()->get('Portfolio\V2\Rest\ImageService'));
					return $projectHydrator;
				}
			),
		);
	}

	...

}

MyNamespace\Hydrator\ProjectHydrator
namespace MyNamespace\Hydrator;

use Zend\Stdlib\Hydrator\ClassMethods;
use Portfolio\V2\Rest\Image\ImageService;

class ProjectHydrator extends ClassMethods {

	/**
	 * @var ImageService
	 */
	protected $imageService;

	/**
	 * @return ImageService the $imageService
	 */
	public function getImageService() {
		return $this->imageService;
	}

	/**
	 * @param ImageService $imageService
	 */
	public function setImageService(ImageService $imageService) {
		$this->imageService = $imageService;
		return $this;
	}

	/**
	 * @see \Zend\Stdlib\Hydrator\ClassMethods::hydrate()
	 */
	public function hydrate(array $data, $object) {
		$object = parent::hydrate($data, $object);
		// It works without this part -- the ClassMethods hydrator handle the $data already as wished.
// 		if ($object->getId() !== null) {
// 			$images = $this->imageService->getImagesForProject($object->getId());
// 			$object->setImages($images);
// 		}
		return $object;
	}

	/**
	 * @see \Zend\Stdlib\Hydrator\ClassMethods::extract()
	 */
	public function extract($object) {
		$array = parent::extract($object);
		if ($array['id'] !== null) {
			$images = $this->imageService->getImagesForProject($array['id']);
			$array['images'] = $images;
		}
		return $array;
	}

}

Portfolio\V2\Rest\Project\ProjectMapperFactory
namespace Portfolio\V2\Rest\Project;

use Zend\ServiceManager\ServiceLocatorInterface;

class ProjectMapperFactory {

	public function __invoke(ServiceLocatorInterface $serviceManager) {
		$mapper = new ProjectMapper();
		$mapper->setDbAdapter($serviceManager->get('PortfolioDbAdapter_V2'));
		$mapper->setEntityPrototype($serviceManager->get('Portfolio\V2\Rest\Project\ProjectEntity'));
		$projectHydrator = $serviceManager->get('HydratorManager')->get('MyNamespace\\Hydrator\\ProjectHydrator');
		$mapper->setHydrator($projectHydrator);
		return $mapper;
	}

}

Portfolio\V2\Rest\Project\ProjectMapper
namespace Portfolio\V2\Rest\Project;

use ZfcBase\Mapper\AbstractDbMapper;
use Zend\Paginator\Adapter\DbSelect;
use Zend\Db\ResultSet\HydratingResultSet;

class ProjectMapper extends AbstractDbMapper {

	...

	/**
	 * Provides a collection of all the available projects.
	 *
	 * @return \Portfolio\V2\Rest\Project\ProjectCollection
	 */
	public function findAll() {
		$resultSetPrototype = new HydratingResultSet(
			$this->getHydrator(),
			new ProjectEntity()
		);
		$select = $this->getSelect();
		$adapter = $this->getDbAdapter();
		$paginatorAdapter = new DbSelect($select, $adapter, $resultSetPrototype);
		$collection = new ProjectCollection($paginatorAdapter);
		return $collection;
	}

	/**
	 * Provides a project by ID.
	 *
	 * @param int $id
	 * @return \Portfolio\V2\Rest\Project\ProjectEntity
	 */
	public function findById($id) {
		$select = $this->getSelect();
		$select->where(array(
			'id' => $id,
		));
		$entity = $this->select($select)->current();
		return $entity;
	}

	...

}

It would be great to get a feedback from someone of the Apigility core team, wheter this solution is "Apigility conform" add, if not, which should be used.

This repository has been closed and moved to laminas-api-tools/api-tools; a new issue has been opened at https://github.com/laminas-api-tools/api-tools/issues/54.


fix: Fix issue with unwind and empty arrays creating an extra column

Fixes #494 in vnext

Coverage decreased (-0.5%) to 99.509% when pulling 61c173720e753952116edf4ecbe7bc0a67abbe3b on juanjoDiaz:fix_unwind_bug into bcce91f953625bb6a3b401d839670bb3cb5ba11a on zemirco:master.

Coverage decreased (-0.5%) to 99.509% when pulling 61c173720e753952116edf4ecbe7bc0a67abbe3b on juanjoDiaz:fix_unwind_bug into bcce91f953625bb6a3b401d839670bb3cb5ba11a on zemirco:master.

Restarted broken job

Hi! I'm having this issue as well — when could we get a new release tagged in order to have this bug fix? Or should I pull from master?

Will probably release do a release candidate this week. If you need it earlier, use master.


HTTPCLIENT-2030: Fix PublicSuffixMatcher::getDomainRoot on invalid hostnames

This fixes the behaviour of PublicSuffixMatcher::getDomainRoot in the case when you feed it a hostname for which NO rule has been defined; and you specify an expected domaintype (i.e. either ICANN or PRIVATE).
Notable changes for reviewers:

PublicSuffixMatcher load(final InputStream in)  is now public to make testing a lot easier and also useful for downstream users.
I had to change the test for HTTPCLIENT-1997 also because that used an invalid domain name in their test. So instead of "cloud.a" it now uses "cloud.com" instead.

Understood. I'll put up an updated pull request soon.

I have added an optional DomainType parameter to the DefaultHostnameVerifier in case a PublicSuffixMatcher is specified. The default value is null if not specified because that matches the behavior as it currently is.
I handled the review comments.
Did a rebase against the latest master.
@ok2c Please review.


block support with example

Hi!. I looked for writer and noticed that there block and block record entities. But in the examples there is no example at all. And I also looked for "Drawing.js" file in the source. Can't find any examples of blocks how to add entities to blocks and how to write it to dxf('Cause in the block and blockrecord files, there's no entities included while writing to dxf. According dxf block documentation, enities must be included in blocks.

Hi,
Unfortunately, blocks are not implemented.


:tada: create about us page :boom:

This task has been assigned to Emmanuel Serem.
Tasks ;
Create an about us page as per screenshot below.
Select and edit suitable images or graphics that visually enhance the page and align with our brand identity.
Center the title about us.
Screenshot.

Steps;
Create a fork .
Clone the repo to your machine.
npm install
npm run dev to start the server
git branch about-page to create your own branch
git switch about-page
commit your changes and push to your github account
Lastly make a PR of your branch in your own Github account to the main branch of indices-trade-lab  repo in TechInnovatorsHub .

I have started working on this


Feature/tp refetch

This is a continuation of the work in (PR 6118) as defined in the (Refetch Blueprint). These changes allow Traffic Portal to take advantage of the changes to the Traffic Ops API and Invalidation Jobs.
The table listing invalidation jobs has been modified to show the TTL explicitly (rather than Parameters) and the create form has been modified to account for the new Invalidation Type field. Traffic Portal integration test was updated to account for these changes as well.
There was also a minor change cleaning up the roles that were defined in some tests that may have been conflicting (read-only user should be read-only).

Which Traffic Control components are affected by this PR?

Traffic Portal

What is the best way to verify this PR?

Manually, to launch and run Traffic Ops and Traffic Portal. Navigate to the Invalidation Content page under the Tools menu in Traffic Portal. Note the Parameters column is now titled TTL (Hours) as well as the addition of the Invalidation Type.
Manually, create an Invalidation Request. Note the new required field for Invalidation Type, which defaults to REFRESH.
Repeat the same observation and test as above, however navigate to Delivery Services. Select a Delivery Service. In the upper right drop down menu More -> Manage Invalidation Requests. The difference here is that the table and create form are specific to this particular DS.
Automatic integration tests must pass.
PR submission checklist

[x] This PR has tests
[ ] This PR has documentation - Documentation will be addressed in a separate PR
[x] This PR has a CHANGELOG.md entry
[x] This PR DOES NOT FIX A SERIOUS SECURITY VULNERABILITY (see the Apache Software Foundation's security guidelines for details)

In order for CI to pass, #6325 needs to be rebased onto the apache:master branch now that the CI fix in apache/trafficcontrol#6329 is merged:
git remote add apache git@github.com:apache/trafficcontrol.git
git fetch apache
git rebase apache
git push your-fork your-branch --force


Appinstaller fails on update with "The parameter is incorrect"

I have an application that I am sideloading, using hand crafted appinstaller and msix files and delivering over http.
The application installs fine, but if I republish and start it, it correctly identifies the update, downloads it and then fails with the message "The parameter is incorrect". I have found the log created by appinstaller.exe and attached it below.
Is there any way I can troubleshoot this further?
AILog.txt

@glent1
Can you try looking at the Event Logs for AppxDeployment-Server at the time the application fails to run after the update. You can find them in Event Viewer:
Search for Event Viewer in the Search Bar
Once Open, navigate into the Application and Services Logs tree on the left (it can take a few seconds before the child branches load correctly:
Application and Services Logs\Microsoft\Windows\AppxDeployment-Server\Microsoft-Windows-AppXDeploymentServer\Operational
When you get to the Microsoft-Windows-AppXDeploymentServer/Operational event logs look for Error! events in the main view and the details of the error, around the time your updated app launch fails. I've attached an example below.
Tanaka MS

Thanks for taking the time to help.  It is very much appreciated.
I have attached the eventlog in question from the time of an initial
install and subsequent update.  There is nothing of note in it.  I've also
included the AILog.txt, which does contain the error.
Here is a picture of Fiddler watching the install and update ...
[image: image.png]
The update begins at 08:47.  As you can see, it never downloads the
majority of the MSIX file if it is an update, but does if it is an
install.  If I was guessing (and I know you shouldn't) I wonder if there is
some sort of internal calculation as to what part of the MSIX is required
to just get what has changed and that results in an internally inconsistent
state during update, or maybe even a broken range request.
If I subsequently do this in powershell ...
Add-AppxPackage http://<IP_ADDRESS>:60000/api/Search/getappx
this is what happens in Fiddler ...
[image: image.png]
Note the doubled range request, which does not happen in the appinstaller
based update.  Note also that it fails (because my code does not implement
multiple ranges) and that powershell goes on repeat the requests
individually.  At this point, despite only a fraction of the msix having
been downloaded, the application is now updated, backing up my original
theory.
So, I am wondering if the unusual doubled range request calculation is also
present in the appinstaller code and breaks it.
On Fri, Sep 20, 2019 at 8:31 AM Tanaka Jimha<EMAIL_ADDRESS>wrote:

@glent1 https://github.com/glent1
Can you try looking at the Event Logs for AppxDeployment-Server at the
time the application fails to run after the update. You can find them in
Event Viewer:
Search for Event Viewer in the Search Bar
Once Open, navigate into the Application and Services Logs tree on the
left (it can take a few seconds before the child branches load correctly:
Application and Services
Logs\Microsoft\Windows\AppxDeployment-Server\Microsoft-Windows-AppXDeploymentServer\Operational
When you get to the Microsoft-Windows-AppXDeploymentServer/Operational
event logs look for Error! events in the main view and the details of the
error, around the time your updated app launch fails. I've attached an
example below.
Tanaka MS
[image: AppxDepServerError]
https://user-images.githubusercontent.com/5958833/65290221-3a3d6e00-db03-11e9-82e9-c48f52420215.PNG
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/msix-docs/issues/51?email_source=notifications&email_token=AAQS6V77L4NPLZTLDW2SGXLQKQKXZA5CNFSM4IWWSSYKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7FGG5I#issuecomment-533357429,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAQS6V4OF4VK6TESYMABP2TQKQKXZANCNFSM4IWWSSYA
.

[Fri Sep 20 08:47:51 2019] Log File is located under: C:\Users\glen\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\TempState\AILog.txt
[Fri Sep 20 08:47:51 2019]{10048} ConvertVersionToUINT64(String) -> Version [2814750835277824]
[Fri Sep 20 08:47:51 2019]{10048} ConvertVersionToUINT64(String) -> Version [2814750835343360]
[Fri Sep 20 08:47:51 2019]{10048} ConvertVersionToUINT64(String) -> Version [2814750890000384]
[Fri Sep 20 08:47:51 2019]{10048} ConvertVersionToUINT64(String) -> Version [2814750890065920]
[Fri Sep 20 08:47:51 2019]{10048} ConvertVersionToUINT64(String) -> Version [2814750931222528]
[Fri Sep 20 08:47:51 2019]{10048} ConvertVersionToUINT64(String) -> Version [2814750931288064]
[Fri Sep 20 08:47:51 2019]{10048} ConvertVersionToUINT64(String) -> Version [2814751004164096]
[Fri Sep 20 08:47:51 2019]{10048} App::OnActivated: Activated via other means (protocol/protocol for results/toast notification)
[Fri Sep 20 08:47:51 2019]{10048} Activated with ProtocolForResults contract.
[Fri Sep 20 08:47:51 2019]{10048} Argument is a Uri: [ms-appinstaller:?checkForUpdates=GTAudioPlayerVBox_<IP_ADDRESS>7_neutral__3p97hvjvwcjma]
[Fri Sep 20 08:47:51 2019]{10048} Setting launch intent to MSAPPINSTALLER_UPDATE_ON_APP_ACTIVATION
[Fri Sep 20 08:47:51 2019]{10048} RegisterBackgroundTask -> Checking if Toast Notification Background Task is already registered.
[Fri Sep 20 08:47:51 2019]{10048} RegisterBackgroundTask -> Toast Notification Background Task is already registered.
[Fri Sep 20 08:47:51 2019]{10048} RegisterBackgroundTask -> Checking if Installation Background Task is already registered.
[Fri Sep 20 08:47:51 2019]{10048} RegisterBackgroundTask -> Installation Background Task is already registered.
[Fri Sep 20 08:47:51 2019]{10048} GoToState -> WindowButtonsPresentState
[Fri Sep 20 08:47:51 2019]{10048} GoToState -> LoadingState
[Fri Sep 20 08:47:51 2019]{10048} CheckForAppInstallerExtensionUpdatesOnAppActivationClickAsync.
[Fri Sep 20 08:47:51 2019]{10048} GetIsCheckForUpdateApiSupported -> True
[Fri Sep 20 08:47:51 2019]{10048} AppInstallerUri constructor, URI: [ms-appinstaller:?checkForUpdates=GTAudioPlayerVBox_<IP_ADDRESS>7_neutral__3p97hvjvwcjma]
[Fri Sep 20 08:47:51 2019]{10048} Parsed AppInstaller URI: source: [N/A], activationUri: [N/A], checkForUdpates: [GTAudioPlayerVBox_<IP_ADDRESS>7_neutral__3p97hvjvwcjma]
[Fri Sep 20 08:47:51 2019]{10048} Retrieving installed package for user with full name: [GTAudioPlayerVBox_<IP_ADDRESS>7_neutral__3p97hvjvwcjma]
[Fri Sep 20 08:47:51 2019]{10048} GetAppInstallerUriForInstalledPackage -> location of .appinstaller file is: [http://<IP_ADDRESS>:60000/api/Search/getappi]
[Fri Sep 20 08:47:51 2019]{10048} GetIsMSIXExtensionSupported -> True
[Fri Sep 20 08:47:51 2019]{10048} GetIsMSIXBundleExtensionSupported -> True
[Fri Sep 20 08:47:51 2019]{10048} AppsInfo->CreateAsync, URI: [http://<IP_ADDRESS>:60000/api/Search/getappi]
[Fri Sep 20 08:47:51 2019]{10048} AppsInfo, File Type: [Package]
[Fri Sep 20 08:47:51 2019]{10048} AppDataSource::CreateAsync
[Fri Sep 20 08:47:51 2019]{10048} AppPackageInfo::CreateAsync -> Populating package info
[Fri Sep 20 08:47:51 2019]{10048} ERROR: AppsInfo -> Error: [0x8051100f]
[Fri Sep 20 08:47:51 2019]{10048} AppsInfo, File Type: [Bundle]
[Fri Sep 20 08:47:51 2019]{10048} AppDataSource::CreateAsync
[Fri Sep 20 08:47:51 2019]{10048} AppPackageInfo::CreateAsync -> Populating bundle info
[Fri Sep 20 08:47:51 2019]{10048} ERROR: AppsInfo -> Error: [0x8051100f]
[Fri Sep 20 08:47:51 2019]{10048} AppsInfo, File Type: [AppInstaller]
[Fri Sep 20 08:47:51 2019]{10048} AppDataSource::CreateAsync
[Fri Sep 20 08:47:51 2019]{10048} AppInstaller XML content:

true

[Fri Sep 20 08:47:51 2019]{10048} GetIsAppInstallerExtensionApiWithHttpReferencesSupported -> True
[Fri Sep 20 08:47:51 2019]{10048} AppInstallerExtension::CreateAsync -> .appinstaller URI is [http://<IP_ADDRESS>:60000/api/Search/getappi]
[Fri Sep 20 08:47:51 2019]{10048} AppDataSource::CreateAsync
[Fri Sep 20 08:47:51 2019]{10048} AppInstaller XML content:

true

[Fri Sep 20 08:47:51 2019]{10048} AppInstallerExtension -> Retrieving the redirection URI from the XML
[Fri Sep 20 08:47:51 2019]{10048} AppInstallerExtension -> Populating primary package information
[Fri Sep 20 08:47:51 2019]{10048} GetIsMSIXBundleExtensionSupported -> True
[Fri Sep 20 08:47:51 2019]{10048} AppInstaller - Primary Package:
Name: [GTAudioPlayerVBox]
Uri: [http://<IP_ADDRESS>:60000/api/Search/getappx]
Publisher: [CN=esselsystems.com]
Version: [<IP_ADDRESS>5]
[Fri Sep 20 08:47:51 2019]{10048} GetIsAppInstallerExtensionWithHttpAndLocalReferenceParsingSupported -> True
[Fri Sep 20 08:47:51 2019]{10048} AppDataSource::CreateAsync
[Fri Sep 20 08:47:51 2019]{10048} AppPackageInfo::CreateAsync -> Populating package info
[Fri Sep 20 08:47:52 2019]{10048} Manifest Info -> Package Name is: GTAudioPlayerVBox
[Fri Sep 20 08:47:52 2019]{10048} Manifest Info -> Package Full Name is: GTAudioPlayerVBox_<IP_ADDRESS>5_neutral__3p97hvjvwcjma
[Fri Sep 20 08:47:52 2019]{10048} Manifest Info -> Package Family Name is: GTAudioPlayerVBox_3p97hvjvwcjma
[Fri Sep 20 08:47:52 2019]{10048} Manifest Info -> Publisher is: CN=esselsystems.com
[Fri Sep 20 08:47:52 2019]{10048} Manifest Info -> Processor architecture is: Neutral
[Fri Sep 20 08:47:52 2019]{10048} Manifest Info -> Package Version is: <IP_ADDRESS>5
[Fri Sep 20 08:47:52 2019]{10048} Manifest Info -> App DisplayName is: GTAudioPlayerVBox
[Fri Sep 20 08:47:52 2019]{10048} Manifest Info -> App PublisherDisplayName  is: Esselsystems
[Fri Sep 20 08:47:52 2019]{10048} Manifest Info -> App Logo  is: Logo.png
[Fri Sep 20 08:47:52 2019]{10048} Manifest Info -> First Application AppUserModelId GTAudioPlayerVBox_3p97hvjvwcjma!GTAudioPlayerVBox
[Fri Sep 20 08:47:52 2019]{10048} Manifest Info -> Populating package dependencies
[Fri Sep 20 08:47:52 2019]{10048} Manifest Info -> Package is Not a Modification Package
[Fri Sep 20 08:47:52 2019]{10048} LocalizeManifestInfo -> Display Name is not localized and Publisher Display Name is not localized.
[Fri Sep 20 08:47:52 2019]{10048} Retrieving installed application package for user with package name: [GTAudioPlayerVBox] and publisher name: [CN=esselsystems.com] with package types: [33]
[Fri Sep 20 08:47:52 2019]{10048} WARNING: Found package [GTAudioPlayerVBox_<IP_ADDRESS>7_neutral__3p97hvjvwcjma] but VerifyIsOK returned false (ignoring)
[Fri Sep 20 08:47:52 2019]{10048} ConvertVersionToUINT64(PackageVersion) -> Version [5348063213519685]
[Fri Sep 20 08:47:52 2019]{10048} Retrieving installed application package for user with package name: [GTAudioPlayerVBox] and publisher name: [CN=esselsystems.com] with package types: [8]
[Fri Sep 20 08:47:52 2019]{10048} PopulateAppInstallationStatus -> App Already Installed! App Package Full Name: GTAudioPlayerVBox_<IP_ADDRESS>7_neutral__3p97hvjvwcjma
[Fri Sep 20 08:47:52 2019]{10048} Installation Status [Package] -> Older version of the App is already installed
[Fri Sep 20 08:47:52 2019]{10048} AppInstallerExtension -> Populating optional packages information
[Fri Sep 20 08:47:52 2019]{10048} AppInstallerExtension -> Populating related packages information
[Fri Sep 20 08:47:52 2019]{10048} AppInstallerExtension -> Populating optional and related packages that should be installed
[Fri Sep 20 08:47:52 2019]{10048} AppInstallerExtension -> Populating Overall Installation Status
[Fri Sep 20 08:47:52 2019]{10048} Installation Status: INSTALLED_OLDER_VERSION
[Fri Sep 20 08:47:52 2019]{10048} Overall AppInstallerExtension Installation Status: 1
[Fri Sep 20 08:47:52 2019]{10048} AppInstallerExtension -> Populating dependency packages information
[Fri Sep 20 08:47:52 2019]{10048} AppInstaller - ForceUpdateFromAnyVersion XML Value: [true]
[Fri Sep 20 08:47:52 2019]{10048} AppInstaller - ForceUpdateFromAnyVersion setting: [True]
[Fri Sep 20 08:47:52 2019]{10048} AppInstaller - xmlns: [[Fri Sep 20 08:47:52 2019]{10048} AppInstaller - UpdateBlocksActivation XML Value: [true]
[Fri Sep 20 08:47:52 2019]{10048} AppInstaller - UpdateBlocksActivation setting: [True]
[Fri Sep 20 08:47:52 2019]{10048} AppInstaller - UpdateSettings XML node found.
[Fri Sep 20 08:47:52 2019]{10048} GetIsAppInstallerFile2018Supported -> True
[Fri Sep 20 08:47:52 2019]{10048} AppsInfo -> PopulateFromAppInstallerExtensionAsync
[Fri Sep 20 08:47:52 2019]{10048} PopulateAppInstallerUpdateAvailabilityAsync
[Fri Sep 20 08:47:52 2019]{10048} GetIsCheckForUpdateApiSupported -> True
[Fri Sep 20 08:47:52 2019]{10048} Retrieving installed application package for user with package name: [GTAudioPlayerVBox] and publisher name: [CN=esselsystems.com] with package types: [33]
[Fri Sep 20 08:47:52 2019]{10048} WARNING: Found package [GTAudioPlayerVBox_<IP_ADDRESS>7_neutral__3p97hvjvwcjma] but VerifyIsOK returned false (ignoring)
[Fri Sep 20 08:47:52 2019]{10048} PopulateAppInstallerUpdateAvailabilityAsync -> location of already installed .appinstaller file is: [http://<IP_ADDRESS>:60000/api/Search/getappi]
[Fri Sep 20 08:47:53 2019]{10048} PopulateAppInstallerUpdateAvailabilityAsync -> m_appInstallerUpdateAvailability is Required
[Fri Sep 20 08:47:53 2019]{10048} GetIsSmartScreenInvokedThroughAddpackageAsyncSupported -> True
[Fri Sep 20 08:47:53 2019]{10048} CheckForAppInstallerExtensionUpdatesOnAppActivationClickAsync -> [Required] found.
[Fri Sep 20 08:47:53 2019]{10048} GoToState -> LoadedState
[Fri Sep 20 08:47:53 2019]{10048} GoToState -> DisplayAppsInfoState
[Fri Sep 20 08:47:53 2019]{10048} DisplayAppsInfoState -> DisplayAppsInfoSetDefaultsHelper
[Fri Sep 20 08:47:53 2019]{10048} GetIsSelfElevatedAppServiceClientSupported -> False
[Fri Sep 20 08:47:53 2019]{10048} DisplayAppsInfoState -> DisplayAppsInfoTopPartHelper
[Fri Sep 20 08:47:53 2019]{10048} GetIsSelfElevatedAppServiceClientSupported -> False
[Fri Sep 20 08:47:53 2019]{10048} DisplayAppsInfoState -> DisplayAppsInfoBottomPartForReadyStateHelper
[Fri Sep 20 08:47:53 2019]{10048} GetIsAppInstallerExtensionWithForceUpdateFromAnyVersionSupported -> True
[Fri Sep 20 08:47:53 2019]{10048} GetIsAppInstallerExtensionWithUpdateBlocksActivationSupported -> True
[Fri Sep 20 08:47:53 2019]{10048} mainContentContainer height: 151.000000
[Fri Sep 20 08:47:53 2019]{10048} bottomContentContainer height: 157.000000
[Fri Sep 20 08:47:53 2019]{10048} mainContentContainer height: 151.000000
[Fri Sep 20 08:47:53 2019]{10048} bottomContentContainer height: 157.000000
[Fri Sep 20 08:48:14 2019]{10048} MainPage -> Update button was clicked
[Fri Sep 20 08:48:14 2019]{10048} PackageDependencyInstaller -> Missing Dependency Packages count: 0
[Fri Sep 20 08:48:14 2019]{10048} PackageDependencyInstaller -> Required missing dependency packages count: 0
[Fri Sep 20 08:48:14 2019]{10048} GoToState -> GoToPreparingDeploymentState
[Fri Sep 20 08:48:14 2019]{10048} MainPage -> Preparing for Main App Install
[Fri Sep 20 08:48:14 2019]{10048} MainPage -> Installing Main App
[Fri Sep 20 08:48:14 2019]{10048} GoToState -> GoToDeployingState
[Fri Sep 20 08:48:14 2019]{10048} StartInstallOperation -> URI: http://<IP_ADDRESS>:60000/api/Search/getappi
[Fri Sep 20 08:48:14 2019]{10048} GetIsSelfElevatedAppServiceClientSupported -> False
[Fri Sep 20 08:48:14 2019]{10048} Deploying AppInstaller extension file
[Fri Sep 20 08:48:14 2019]{10048} GetIsAppInstallerExtensionApiWithHttpReferencesSupported -> True
[Fri Sep 20 08:48:14 2019]{10048} GetIsAddPackageByAppInstallerOptionsLimitToExistingPackagesEnumNameValuePresent -> True
[Fri Sep 20 08:48:14 2019]{10048} [RequestAddPackageByAppInstallerFileAsync] -> With ForceTargetAppShutdown and LimitToExistingPackages
[Fri Sep 20 08:48:14 2019]{10048} ERROR: StartInstallOperation -> Install Operation Failed: 0x80070057
[Fri Sep 20 08:48:14 2019]{10048} GetErrorMessageFromHResult -> Message: [The parameter is incorrect.]
[Fri Sep 20 08:48:14 2019]{10048} GoToState -> DeploymentErrorState
[Fri Sep 20 08:48:14 2019]{10048} GetIsToastNotificationApiSupported -> True
[Fri Sep 20 08:48:14 2019]{10048} Toaster->ShowToast [Error]
[Fri Sep 20 08:48:14 2019]{10048} GetEncodedXmlValue -> XML: [GTAudioPlayerVBox installation failed], Encoded XML: [GTAudioPlayerVBox installation failed]
[Fri Sep 20 08:48:14 2019]{10048} GetEncodedXmlValue -> XML: [App installation failed with error message: The parameter is incorrect.], Encoded XML: [App installation failed with error message: The parameter is incorrect.]
[Fri Sep 20 08:48:14 2019]{10048} Toaster->Toast Error Data [GTAudioPlayerVBox installation failedApp installation failed with error message: The parameter is incorrect.]

Thanks for the response @glent1
Can you please reattach the logs and the fiddler images directly into the chat thread (I think you responded via email). They aren't showing up for me at the moment.
Thanks!

Below as requested
AILog.txt

@glent1
Unfortunately our devs weren't able to reproduce the issue and the AILogs.txt logs aren’t showing enough detail for us t debug the issue. Can you please:

Attach the AppxDeplymentServer Eventlogs directly in this chat.
File a feedback hub item capturing the issue. This will give us more logs & traces for investigating:

Launch Feedback Hub
Category -> Problem -> Install & Update -> App installation issues
Make new bug
Important functionality not working
Recreate My Problem -> Start Recording
Try reproduce the issue
Stop recording
Submit
Thanks,
Tanaka

I cleared the eventlogs before attempting the update.  Nothing was written.
I submitted a "feedback hub item" as requested.
Thanks for looking at this.

We'll track this issue with the feedback item. Thanks again for submitting.


When you open ERC721 or ERC 1155 collection, Assets tab should be opened by default

So the middle tab is opened by default. This works fine on Android and ERC1155.

Middle tab - Assets


If you use some mod it will crash (dedicated server) (assuming it is malisiscore because it is show it is sponge part problem from malisiscore)

Minecraft version:1.12.2
Mod version: VanillaFix-1.0.2-18.jar
crash log:
https://pastebin.com/JKTc7XKY

you mean this?
https://pastebin.com/TrZCQDJq

Yes, I noticed that now. There is currently a bug in our code with our ModIdentification class trying to access those classes, which we already know of and are trying to fix. I'd recommend removing VanillaFix or going back to the CurseForge release until we can fix that issue, since it likes to crash servers for some reason. It should hopefully be fixed within the next few days or so.

Fixed.


Rethink name

The name of this gem implies that it is somehow related to "Google Authenticator". When in reality it simply allows "Two Factor Support" in devise.
When searching for a gem to help us implement two factor with devise, yours was off my radar because I wanted support for something more than just "Google authenticator". There are many 2 factor apps for both Android and iOS at this point and we don't want our users locked into one app
There is already https://github.com/tinfoil/devise-two-factor. The advantage you have over them is that you've worked out the second step a good bit of people are looking for. https://github.com/tinfoil/devise-two-factor/issues/14
I recommend changing the name of this gem to "devise_two_factor" or "devise_two_factor_athentication" You'll surely see an increase in usage and contribution.

I agree with this, because I almost used another tool until I saw this "issue".

@vrogers you might also look at https://github.com/wmlele/devise-otp. I put some time into that and it's a touch more recently updated.  I found it to better suit my needs.

I like it! thanks!


Close popup in Firefox when connecting

Popup closes in Chrome when new tab opens, but not in Firefox. Should close to bring user's attention to connect process (but only when the new tab opens).

https://github.com/user-attachments/assets/2483ea89-9b7b-4eee-a47c-de7e220914df
Just tested the main branch and didn't seem to reproduce. any steps to reproduce this?

@devcer it stays open in Firefox once you begin the connect wallet process.

@arashveysi3 Do you want to try this one?

Looks great to me. I'll take this.


Shouldn't the master list be ordered alphabetically?

I find it easier to scan a list if it is ordered alphabetically.
I understand that you ask new list links to be added to the end of the corresponding category. I guess it is to keep track of what's new.
Maybe instead you could ask new links to be inserted alphabetically and a :new: emoji to be added in front. If the category already has a link with :new: then remove the old :new: emoji.

Well, I brought that up lately: #201

I still don't think it's worth the overhead. This list is for discovering new lists, not look up something.

I guess it is to keep track of what's new.

 We just don't order things alphabetically to keep maintenance and contributing easier.

But I find the idea with the new emoji pretty nice.

Personally, I'm :-1: but let's hear @sindresorhus.

I like the idea of inserting :new: emoji. I also posted a similar issue (#117), which got miscellaneous category sorted alphabetically.

The idea of inserting a NEW emoji has some drawbacks:
Imagine that you saw the list once, and you read all the links for a certain category. Then some new items are added to the list with the NEW emoji. Again, another pull request add some new items so this deletes the old NEW previously added.
Finally you come to this list to see what's new, and you will only find the new items from the last pull request, and not the previous new items.
This can be avoided in the way they are listed now, if an old visitor come to the list, they just look for the last item they remember remember they saw, and then continue reading the new items, which are the links below the last one they remember.

...or we could keep the emoji for like one moth before removing it.

:-1: on pretty much all of this.

...or we could keep the emoji for like one moth before removing it.

Sounds like a pain to maintain.

well, a new emoji would also clutter the commits to oblivion. You couldn't see in the commit log what was changed. I changed my mind about the emoji, let us not do it.
I honestly think we have more pressing issues to solve, e.g. that a lot of the awesome-repositories don't have a license or contributing file or are badly formatted or have non-awesome apps in them.

After reading the comments on #201 I think I better understand your point of view @arthurvr . And in fact I agree. The top priority is to make it easy to contribute lists and links.
Ordering, flagging new lists and beautifying should be done automatically with a web site generated with the README. Like it was already suggested in #210 by @n1trux :)
So feel free to close this issue (or should I close it myself?)

Feel free to reopen if anyone disagrees.