protect assets still have hash in the file link, and the old file link doesn't redirect to the new file

Affected Version
Replicated in 4.4.1, might be replicable in 4.4.0
Description
Give the fact that version 4.4 is trying to solve the file link dynamically changing due to a hash (to refect file version) in the URL, once the file is replaced by another file where we can see the issue prior to version 4.3 (inclusive), but the fixes or the feature seemed not affecting protected assets
Steps to Reproduce

[OK] Login as Admin and visit 'admin/assets'
[OK] Create a Folder and set the folder to be protected, i.e. config those Who can view to Only These People and Viewer Group to an Administration group
[OK] Upload a file to the folder created in step 2, edit the file and Save and Publish
[OK] Insert a link pointing to the file created in step 3 to a page, Save and Publish* the Page
[Fail] Landing the page in another tab, copy the file's address and paste it to a text editor, observe that the link, expecting it is not containing the versioning hash in the URL, but it still containing a hash
[OK] Paste the file's URL in a new tab of the same browser, the file is accessible.
[OK] Go to the file's editing interface, make a replacement operation on the file, with a new file (either the same file with some changes or another file so we could easily compare later)
[OK] Refresh the page with the file link, inspect the file link has changed with a new hash in the URL.
[OK] Click on the file link or open it in a new tab, the content accessed shows it is the new file.
[Fail] Revisit the old File link that is copied and put it in the text editor in Step 5, expecting it is either show the new's File's content or redirecting to the new file link. But, the link simply shows a "Not Found"

If Step 5 is not considered as a failure, i.e. this is supposed behavior by SS4.4, at least Step 10 should be considered as a failure, right? An old URL bookmarked by site user should either redirect to the new URL or load with the new file content.

The issue might be better logged on the https://github.com/silverstripe/silverstripe-asset-admin repo.

Yes, noticed that after the creation of the issue :) @michalkleiner
I think I will manage to migrate the issue to either SilverStripe-asset-admin or SilverStripe-assets (now they are separated), will ask SilverStripe though.

I'd say this probably belongs in assets, not asset-admin. The administration screens are being used correctly but the URLs generated to serve the assets are wrong - which implies it's assets. I'll move it for you.


Aspect ratio, when using the deprecated option, does not work.

Currently, there is code that adds a ':1'  to all aspect ratios passed in the deprecated format: https://github.com/imgix/ember-cli-imgix/blob/0a12f4ab65ae6ddfeb1b3866a46a43d8f8d87d99/addon/components/imgix-image.js#L186
When passing a valid aspectRatio of 4:3, it adds a :1 and then throws an invalid aspect ratio format error here: https://github.com/imgix/ember-cli-imgix/blob/0a12f4ab65ae6ddfeb1b3866a46a43d8f8d87d99/addon/components/imgix-image.js#L201
Subsequently, because it cannot parse that aspect ratio. The aspect ratio doe now work.
Since this is a deprecated feature... maybe we can just ignore it.
Passing the aspect ration the preferred way works great:
{{imgix-image
    path='/bingbong.jpg'
    options=(hash
        ar='4:3'
    )
}}

Now that I am trying to transition TheDyrt to using the official imgix lib, using srcsets and what not.
I dont think the aspectRatio implementing in this lib works at all. I will do some digging

Hey @Duder-onomy! Although it may not be the best behavior, this is actually by design. I wanted to nudge people to move away from the old aspect ratio configuration, and so if we allowed people to pass the new format while still using the deprecated configuration option, it would be hard to have them move away from the deprecated usage and we would likely have to support the deprecated configuration longer. I hope this makes some sense!
So, when you say this "When passing a valid aspectRatio of 4:3" - I don't think this is a valid statement, as 4:3 has never been a valid format for aspectRatio.
Anyway, if we think it's better to support the new format with the old attribute, we can change this behavior of course.

I dont think the aspectRatio implementing in this lib works at all.

This doesn't sound good at all! Please let us know if you find something that doesn't work.

Curious. In your mind what would be the correct way to express the 4:3 or 4x3 aspect ratio.  As long as I have been alive that is a 100% valid aspect ratio... as are most 2 numbers within reason.  If you mean to say that format is invalid.. I think some docs would suffice. Looking at the code, there is no possible way to pass a correct aspect ratio (using the deprecated pathway) as this prop will always have :1 added to it. The code is clearly incorrect. Additionally, if you want someone to stop using a certain pattern you simply need to deprecate it.
Lastly, Does imgix the service support aspect ratio at all? It seems that passing the prop on the path does nothing... and is no documentation for it on the imgix website.
So yes. using the deprecated pathway AND the supported pathway do not work.

Either way. I have re-written your code in my fork and will open a PR once I get some testing on it.
I am going to correctly deprecate the old pathway  of passing a aspectRatio  and encourage aspect ratio passed via an options obj. Until imgix the service supports the ar param, we will need to treat them the same.

Hey 👋 I'm definitely on the same page as you that 4:3 and 4x3 are valid aspect ratio formats, there's no debate about that! The thing is that this library, in the past, has only been able to handle decimal aspect ratios, and this is how it's been documented in previous versions (https://github.com/imgix/ember-cli-imgix/tree/4347765f4994ab314fb83dad1c36c2222d376a63#aspectratio). I based the upgrade to the new format off this behavior, and didn't expect people to start using the old parameter with the new format.

The code is clearly incorrect.

I would appreciate some more constructive criticism than this - I have tried to outline my reasoning (and have elaborated on it above), so I'm not on the same page with this. We could probably implement a warning to prevent people from using the new format with the old parameter.

Additionally, if you want someone to stop using a certain pattern you simply need to deprecate it.

The parameter is deprecated. https://github.com/imgix/ember-cli-imgix/blob/0a12f4ab65ae6ddfeb1b3866a46a43d8f8d87d99/addon/components/imgix-image.js#L153

some docs would suffice.

As the feature is deprecated, it was removed from the documentation for the current versions. It was present in the documentation of old versions :)

does imgix the service support aspect ratio at all?

This is something that @jayeb will have to respond to, but to my knowledge, it doesn't support it yet.

using the deprecated pathway AND the supported pathway do not work.

You wrote in the first post in this issue that "passing the aspect ration the preferred way works great" - has this changed? There are extensive tests for both the deprecated and new parameter, so if there's an issue with the tests or something that we haven't covered, we'd love to hear about it!
Here are the tests: https://github.com/imgix/ember-cli-imgix/blob/0a12f4ab65ae6ddfeb1b3866a46a43d8f8d87d99/tests/integration/components/imgix-image-test.js#L57

I have re-written the code in my fork and will open a PR once I get some testing on it. I am going to correctly deprecate the old pathway of passing a aspectRatio and encourage aspect ratio passed via an options obj.

As discussed above, the parameter is already deprecated.

Until imgix the service supports the ar param, we will need to treat them the same.

This will be up to you and @jayeb to decide if you both want to change the behavior.


Erasing an edge also erases a node

Also causes other unwanted behavior such as preventing some edges from being created, and preventing some nodes from being placed.

fixed this in cabf305034221014fa8054c8d6d9110ded403fbb


Secret decode

This PR contains a new keybinding for char('x'). When viewing secrets, this new handler logic allows the user to see the base64-decoded secret contents.

Awesiome! Thanks. Could you add one or two tests for the decoding part please

I've added a test -- test_decode_secret. I've also done a little cleanup to make clippy happy. Let me know if you'd like me to change the way its implemented. I wasn't sure where exactly to put the handler for decoding the secret, so I put the logic within the handle_describe_or_yaml_action() function - possibly not the ideal place, but it does work.


A Story is hard to delete from. the browser cache

Describe the bug
When you are building a new story using the Storytelling app, the configurations are almost permanent. Even if you start and stop the app or reload the app the configuration does not go away
Expected behavior
When you restart the node app, it will clear the browser cache or the local storage should have a Time to Live and it should delete the entry after x amount of time..

Right now there are following workarounds:

Start the app in incognito mode which will start with no local storage
Follow these instructions and clear your local storage: https://docs.devolutions.net/kb/general-knowledge-base/clear-browser-local-storage/clear-chrome-local-storage/
When starting the app locally using the bash script, use a different port. The bash script supports passing port as an argument.


Simmer stops working after reconfigure

Hi,
I'm trying to use Simmer library in my JS project (using dist/simmer.js). I need to use configuration different than default one so I've tried to reconfigure Simmer in this way:
var simmer = window.Simmer.configure({
 depth: 6
});
var selector = simmer(node);

In this case "selector" is always false, no matter what node is. If I remove .configure() call then everything works as expected.

Hi,
Thanks for the feedback.
Can you provide me with examples to help recreate the issue?
Ideally full DOM of the page where you're having trouble and a selector you're failing to get a result for?
I'll try and have a look in the next day or two.

Hi,
I took a quick look and realised when the problem was introduced.
I apologise, it's part of the growing pains of updating code from 6 years ago.
I'm in the process of extending all the tests as this code was very poorly tested by myself when originally written many years ago. It's from before I discovered the wonders of TDD. :)

Thanks man, I'll take a look at this tomorrow. Hope it works :)

My pleasure. I hope it works too. ;)
If you're still experiencing a problem I suggest you create a repo with an example where you recreate the issue, it'll help me figure out the problem. :)

I checked new version 0.5.5 and it works now. Thank you very much :) I noticed another issue. Is it possible to run simmer on cloned document? In example shown below Simmer() always returns false.
var clonedDocument = document.cloneNode(true);

console.log(window.Simmer(document.getElementById("example")); // works
console.log(window.Simmer(clonedDocument.getElementById("example")); // false

hmm interesting usage.
The reason that doesn't work is because the browser injected Simmer automatically binds to the current window.
I think it should work using the context argument, but that's only available via the NPM module, not the browser distribution.
I'm seriously contemplating the API, because currently the library is maintaining an API from 6 years ago which is quite old school in terms of Front End tech. :p
But for now the API is like this:
`js
var clonedDocument = document.cloneNode(true);
import Simmer from 'simmerjs';
const simmer = new Simmer(clonedDocument)
`
This is totally off the top of my head, and I haven't tried it.
I can take a look tomorrow and see how best to support this.

Actually "context" argument would be the best solution :) In my project I also use SizzleJS which works based on the same idea and there is no problem with cloned document. It would be nice if Simmer could work in the same way.

Well the context is there, you can use it, but not using the "drop it" script located at dist/simmer.js with the current API, you'll have to use the NPM module instead.
Sizzle and Simmer come from the same "old school" approach. I'm trying to migrate Simmer to a more modern usage using a proper ES Module, rather than an IIF that installs itself.
It's more forwards looking.

Huh! I'm so short of memory this late at night.
The context is available so this should work:
You can do:

const clonedDocument = document.cloneNode(true);
const simmerOnClonedDocument = window.Simmer.configure({}, clonedDocument);

I've tried to use it in this way but it seems that something is broken :)

hmm interesting, this is definitely a use case I wasn't taking into account as it wasn't relevant to our needs at the time.
That said, it should work, so I'll take a look.
If you can provide a repo recreating the problem that might help, but I'll try none the less, I'm assuming it isn't hard to recreate.

Hi,
I have found the problem.
This should work now, as the context was expecting a window not a document, but I've extended it to support document fragments and should work across the board, now.

Amazing, it works now. Thank you very much :)


Add python3.9 support

https://github.com/bswck/commonvars/issues/1

New release?

New release?

Ready!


composer vendor/bin not set in $PATH and owner issue.

Describe the bug

Setting the BIN directories of the composer vendor directory are not set correctly when starting the workspace.
Normally this should be set via this command.
https://github.com/apolopena/gitpod-laravel-starter/blob/32419c8799962568eaa4cc54a8769db5f8307fb8/.gp/bash/init-complete.sh#L19-L22
In addition, the Composer Global folder belongs to the owner "root:root" and not "gitpod:gitpod".
Screenshots

Steps to reproduce

start workspace
check the $PATH variable.
echo $PATH | grep vendor

Expected behavior

System-wide use of the programs in the "vendor/bin" folders of the Global and User composer directory.
Running composer global require without sudo

Additional information

@strausmann
Lets talk this through because I am not fully understanding the use case for calling composer from the vendor/bin folder when its already installed in /usr/bin. Does this article sum up the use case?
https://www.chriskankiewicz.com/post/run-composer-binaries-from-project-directories

By Gitpod design ownership of the binaries in /usr/bin/ are always root. Check it out by running ls -al /usr/bin/
I have not seen a situation where sudo is required to run a composer command, all the other binaries in /usr/bin behave the same way.
For context I wanted to find the issue where we added https://github.com/apolopena/gitpod-laravel-starter/blob/32419c8799962568eaa4cc54a8769db5f8307fb8/.gp/bash/init-complete.sh#L19-L22 Do you know which issue that was?
Do you think this issue is caused by the above line of code not firing off or ending with a silent error?
Can you show me a use case where calling composer with sudo is required?
What is your use case for using composer from vender/bin rather than /usr/bin?

@apolopena
this is not about running composer from the vendor/bin directory.
Since I'm using GitLab, I can't use the GitHub changelogger which is already integrated in this project.
As an alternative I use this project here.
https://github.com/churchtools/changelogger
For the installation I often use the installation into the Global Composer directory and not into the composer directory of the project itself.
composer global require churchtools/changelogger
So that the command "changelogger" works then, the vendor/bin directories must be deposited in $PATH.

https://github.com/apolopena/gitpod-laravel-starter/blob/32419c8799962568eaa4cc54a8769db5f8307fb8/.gp/bash/init-complete.sh#L19-L22
If you execute this line after the project has been completely loaded in the workspace, everything works as well. The vendir/bin paths can be found in the $PATH.
I don't understand why it doesn't work in the init-complete.sh or before-tasks.sh though....

I get it now. I feel like this is a regression. It could be some wierdness with Gitpod prebuilds and the init task. I'll look into it.


Add public API endpoint for finding repos by commit (including forks)

Gitea version (or commit ref):
Git version:
Operating system:
Database (use [x]):

[ ] PostgreSQL
[ ] MySQL
[ ] MSSQL
[ ] SQLite

Can you reproduce the bug at https://try.gitea.io:

[ ] Yes (provide example URL)
[ ] No
[ ] Not relevant

Log gist:

Description
I'd like a public API endpoint that lists the repos/branches that contain a given commit.
Screenshots

More context: I am currently working on this thing https://ganarchy.autistic.space/
I'd like it to be more efficient and perhaps integrate it into gitea at some later point. Mainly just more efficient, i.e. it should be able to run on shitbox VPSes.


MM-18236 Prevent the post menu from triggering when using the back gesture

Summary
MM-18236 Prevent the post menu from triggering when using the back gesture in the thread screen.
More about the PR:
I ended up creating a common TouchableWithFeedback component that will allow us to set different touchables with different options for Android and iOS including ripple effect, preventing a touch if the gesture is panning or flinging and we can extend it to add other options as needed.
Ticket Link
https://mattermost.atlassian.net/browse/MM-18236

cherry picked to 1.24 manually


INFERRED_LINK_RELS is missing items links?

In stac-fastapi (latest) with pgstac backend we noticed in our stac catalog that collection.links were getting lots of "rel":"items" stored, which was causing problems with API consumers- because incorrect or duplicated items links were being returned by the API.
Here is where the inferred link rels are defined:
https://github.com/stac-utils/stac-fastapi-pgstac/blob/a1b06331d5882b682c7471fbe330c1e0d18586cb/stac_fastapi/pgstac/models/links.py#L14
and note also that the items are actually dynamically constructed over here:
https://github.com/stac-utils/stac-fastapi-pgstac/blob/a1b06331d5882b682c7471fbe330c1e0d18586cb/stac_fastapi/pgstac/models/links.py#L199-L205
The fix could be as simple as adding items to that list constant, but also noting that this fix might involve touching these 3 repos:
https://github.com/search?q=org%3Astac-utils INFERRED_LINK_RELS&type=code
Related issue: https://github.com/stac-utils/stac-fastapi/issues/505
cc @geospatial-jeff @duckontheweb

this was resolved by #640 and will be published in next stac-fastapi version
Note: Backend repo will need to be fixed


Improved Installing BoneJ screenshot for wiki

I want to contribute the following image to https://github.com/bonej-org/BoneJ2/wiki/Installing-BoneJ

Uploaded to https://github.com/imagej/imagej.github.io


add ability to store alerts on the metrics table too

done here https://github.com/andrewm4894/anomstack/pull/48


Use individual modules from base module so we can reuse the operator module as platform operator

Upgraded base module to 1.2.2
Use operator from base module as olcne operator
Set default networking parameters and removed redundant variables
Upgraded Oracle Linux version to 7.8
Added support for new regions (Hyderabad and Chuncheon)
Added terraformoptions to documentation
Added README.md for HashiCorp registry
Removed default backend on nginxcontroller

Resolves #7

I don't have the dynamic-groups to spare to test this deployment but I can confirm deployment begins and thanks for resolving the issues I mentioned.


Optimized .vscodeignore

Description
I used a "leave what is necessary" strategy, instead of adding a large list of files that do not need to be added to the extension package (which increases the high probability of unwanted files getting into the package), I wrote down the files that just need to be left, this is a safer practice and in addition, .vscodeignore is now clearer
Here is the file tree in the finished package:
INFO  Files included in the VSIX:
material-icon-theme-5.7.0.vsix
├─ [Content_Types].xml
├─ extension.vsixmanifest
└─ extension/
   ├─ .npmignore [0.08 KB]
   ├─ CHANGELOG.md [172.13 KB]
   ├─ LICENSE.md [1.05 KB]
   ├─ README.md [12.38 KB]
   ├─ logo.png [17.32 KB]
   ├─ package.json [10.77 KB]
   ├─ package.nls.cs.json [2.28 KB]
   ├─ package.nls.de.json [2.32 KB]
   ├─ package.nls.es.json [3.28 KB]
   ├─ package.nls.fr.json [2.17 KB]
   ├─ package.nls.ja.json [2.77 KB]
   ├─ package.nls.ko.json [2.33 KB]
   ├─ package.nls.nl.json [2.14 KB]
   ├─ package.nls.pl.json [2.11 KB]
   ├─ package.nls.pt-BR.json [2.11 KB]
   ├─ package.nls.pt-PT.json [2.17 KB]
   ├─ package.nls.ru.json [2.65 KB]
   ├─ package.nls.zh-CN.json [1.9 KB]
   ├─ package.nls.zh-TW.json [1.9 KB]
   ├─ dist/ (4 files) [773.03 KB]
   └─ icons/ (943 files) [844.37 KB]

And another question, is the .npmignore file really necessary?
Contribution Guidelines

[x] By creating this pull request, I acknowledge that I have read the Contribution Guidelines for this project.
[x] I have read the Code Of Conduct and promise to abide by these rules

@okineadev .npmignore is necessary as this project is also published as npm package on the npm registry with different files: https://www.npmjs.com/package/material-icon-theme. You can test it with the command npm pack. It will create a local archive with all the files needed for the npm package.

@okineadev .npmignore is necessary as this project is also published as npm package on the npm registry with different files: npmjs.com/package/material-icon-theme. You can test it with the command npm pack. It will create a local archive with all the files needed for the npm package.

We are now talking about the files that are necessary for the vscode extension

@okineadev .npmignore is necessary as this project is also published as npm package on the npm registry with different files: npmjs.com/package/material-icon-theme. You can test it with the command npm pack. It will create a local archive with all the files needed for the npm package.

We are now talking about the files that are necessary for the vscode extension

Yep, I've misunderstood your question. For the vscode extension it's not needed.


fix: Clean up pods of fulfilled nodes when workflow manual retry. Fix…

Fixes #12028
Motivation
PodGC strategy: OnWorkflowSuccess.
Pods of the previously successful steps were not cleaned up after workflow manual retry.
Modifications
Pods of fulfilled nodes will be relabeled completed=false when workflow manual retry.
Verification
Workflow Demo
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: workflow-fail-with-argument-
spec:
  entrypoint: main
  podGC:
    strategy: OnWorkflowSuccess
  arguments:
    parameters:
      - name: code
        value: 1
  templates:
  - name: main
    steps:
    - - name: print
        template: print-with-argument
        arguments:
          parameters:
            - name: code
              value: '{{workflow.parameters.code}}'
    - - name: check-status
        template: fail-with-argument
        arguments:
          parameters:
            - name: code
              value: '{{workflow.parameters.code}}'
  - name: print-with-argument
    inputs:
      parameters:
        - name: code
    container:
      image: docker/whalesay:latest
      command: [sh, -c]
      args: ["echo {{inputs.parameters.code}}"]
  - name: fail-with-argument
    inputs:
      parameters:
        - name: code
    container:
      image: python:alpine3.6
      command: [python, -c]
      args: ["import sys; sys.exit({{inputs.parameters.code}})"]

Workflow executed failed first time.

Retry the failed workflow manually, then workflow executes successfully and changes to succeeded phase.

All pods were successfully cleaned up.

Thanks for taking the time to investigate and fix this!
Per the in-line comments, we may want to refactor some existing logic that this PR highlights as potentially having broken the Controller/Server separation of responsibilities.
I think the current code more or less makes sense within that existing context (the re-processing checks in the Controller are a bit confusing, though that's partially due to the existing logic)

Retries(both auto or manual) are indeed the most complex parts of the codebase,  which bring a lot of problems like #12009, #12010.
Moving the implementation into Controller really make sense, I'm glad to see this improvement.


Adjusted default value of updateLedger of walletsUpdate

On the documentation and on the code tooltips it says that the default is true, while on practice the default was false, changed the default to true.

@LucasGaspar Thanks for the PR but in this case the documentation is wrong, the default for this flag should be false. We'll address this in PR #681.


Update to -m (Adding mount points)

Attempt to resolve #41

hey @kasbohm sorry I missed this - I wasn't watching the repo! I'd like to suggest that I put in an updated (version 3.+ family) branch and then we address your issue there. The master was never updated to latest, mostly because I was keeping it constant for a particular user base still using the 2.x family, but that's not the best way to proceed I think.

hey @kasbohm I think this looks good - I just turned on building forked pull requests on circle (not sure why it was off) if you want to try a trivial commit/push to see if it triggers again. I'd also suggest we get this fix into the other branches.

heya again @kasbohm - I got the fix in for you here:
https://github.com/singularityware/docker2singularity/blob/master/docker2singularity.sh#L290
if it looks good, feel free to close this PR. Apologies again for missing your contribution - I'll be updating latest (master) to the newest singularity likely tomorrow, and your feedback / help will be appreciated!

Hi @vsoch, thanks a lot for picking this up again! I added a small commit to the branch, and it seems to hae triggered the build. Closing.


TOMEE-2873 Translate to Portuguese: examples/mp-rest-jwt-jwk

Link to Jira: https://issues.apache.org/jira/browse/TOMEE-2873

thanks @willesreis to review.

+1 thanks @Daniel-Dos and @willesreis.


This is not for swift 4.0

Are you still supporting this?

Hi, 9SumeetMourya!
You can try it:
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['SWIFT_VERSION'] = '3.2'
    end
  end
end

This makes Xcode build all your pods with Swift 3.2.

you can use version 2.0.1, see README for details.


buildvcs=false must be added to a default build args

Since Go 1.18

The go command now embeds version control information in binaries. It includes the currently checked-out revision, commit time, and a flag indicating whether edited or untracked files are present. Version control information is embedded if the go command is invoked in a directory within a Git, Mercurial, Fossil, or Bazaar repository, and the main package and its containing main module are in the same repository. This information may be omitted using the flag -buildvcs=false.

It means, that go binary maybe changed without actual changes, and also means that building on CI machine is failed (since no Git in path).
Workaround: prepend ko command with GOFLAGS="-buildvcs=false"

It might make sense to add a -buildvcs flag to ko, but I think if there's a workaround it might not become a priority. We could document this better though, perhaps in an FAQ section in the readme.

Better add -buildvcs=auto as a default?

Better add something like -buildvcs=auto as a default?

I had to look this up myself. It looks like -buildvcs=auto is a new option being planned for the next Go 1.18 patch release: see https://github.com/golang/go/issues/51798 and https://github.com/golang/go/issues/51748


[VM] Supporting "compiled" exec mode.

This PR adds support of "compiled" mode to the VM. The compiled mode translate the relax function into TIR function and drive it through the TIR function.
It is different from the micro AOT codegen, which generate TIR code that targets the micro C runtime environment and useful for resource limited settings with smaller set of features. Both leverages the low-level TIR build that is also shared with TensorIR.
The current implementation targets full TVM (VM) runtime, that comes with PackedFunc, object, tuple, closure and all kinds of rich structure support. This also mean that we can leverage the full runtime support to handle things like allocation, dynamic shape, easy plugins and python interaction, which are not available in more limited runtime.
The user directly use the same API to load the generated code regardless of compiled mode or bytecode. And just need to change one line
ex = relax.vm.build(mod, target, exec_mode="compiled")

Most of the codegen features are lifted before the codegen phase, so the overall implementation would be around 500 loc for each exec mode and can be further cut down with future introduction of PrimValue.
The simplicity is thanks to the TVM runtime archiecture that allows us to compose things together in objects. The only difference is how the PackedFunc of high-level driving is being provided. In the case of bytecode it is normal interpretation and in the case of compiled mode it is TIR.
It is a complete implementation Unit-testcases are added. All codegen build tests are updated to include two exec_modes and have passed locally. The only exception that we skipped some special packedfunc handling(printing) because can be further simplified after we introduce PrimValue.
Co-authored-by: Junru Shao<EMAIL_ADDRESS>

Thanks @tqchen for the new aot mode for the VM runtime! Could you elaborate a bit on the benefits of this "compiled" mode, and when should one prefer to use "bytecode" mode vs. "compiled" mode?

Because we are operating on high-level NN models. likely there won't be difference for most of the use-cases. On workloads that contains a lot of very small operators, compiled mode might be useful.  I personally find bytecode easier to debug and introspect, but that is a preference issue. Having two mode also helps us to be able to do cross checking in cases that need them.
The implementation is mainly to show that we can unify the two with minimum effort under the same runtime. Our majority of the code and engineering focus should still be on building the runtime and relevant API support that is used by both.

@tqchen, thanks for improving the VM!
Can I understand "compiled" mode as the generic AOT mode where it has more resources than micro AOT?
Or is it something different?

"aot" would be the wrong wau to categorize things and that was source of confusion for a lot of us lately.
I would generally start with runtime convention -- which defines:

Q0: What is the convention to pass around parameters.
Q1:How you call one function from another one.
Q2: What are set of standard libraries available in the runtime
Q3: What are set of data structures we support.
Q4: How do we store weights and other things

Once we have all these questions settled. Then the high-level driving part (run allocation, call into operator) is just one function that calls into other functions. Each operator or BYOC section is a function, the high-level driving part is just another function.
The execution mode(the "compiled"/"aot" or "bytecode") becomes really secondary issue. Because that is just how we implement that function who drives the NN computation. We can mix and match. For example, you can have operator implemented by interpretating some bytecode or json(which we did in BYOC) but still composes together well.
So the right way to categorize would be:

R0: VM Runtime(perhaps vm is even not the right term): which comes with the full tvm object system, runtime support for dyn allocator, tuple etc. PackedFunc as calling convention
R1: Tiny Runtime: limited resources, favors other kinds of convention for resource efficiency reasons

This is mainly an implementation of R0. Which is different from R1. It just turns out that R1 usually would require compiled mode(you can in theory also develop bytecode for R1 but that defeats the purpose of limited resource) and as a result more coupled with the term "AOT".
Once the runtime is fixed, the exec_mode in R0 is only a matter of a few hundreds lines of code.

I would to add that this implementation does not take away the merit of tiny runtime, which is also significantly important when it comes to support resource limited settings. We cannot go down to under 100K  regime with the full TVM runtime that comes with object system support.
In that front, we also need to focus strongly on runtime, in that case removing assumption on runtime capabilities, kicks hard on static memory allocation, and possible data structures around them.
The two runtimes will serve as pillar for our applications that covers the scenarios across the whole spectrum of target environments.

Thank you @tqchen and @junrushao for the nice work!


Add RBAC support

Fixes spring-cloud/spring-cloud-deployer-kubernetes#162
Fixes spring-cloud/spring-cloud-dataflow-server-kubernetes#243

Hi, @trisberg: When you get a chance, it'd be great if you can weigh-in on the proposed changes.

I'm getting a merge conflict on the docs that I'm not entirely sure how to resolve, could you rebase the PR?

@trisberg just fixed it

Updated to use BUILD-SNAPSHOT versions and getting a failure when deploying ticktock stream
2017-12-20 19:30:39.965 ERROR 1 --- [p-nio-80-exec-6] o.s.c.d.s.s.AppDeployerStreamDeployer    : Exception when deploying the app [stream name = ticktock, application name = log, application properties = {spring.metrics.export.triggers.application.includes=integration**, spring.cloud.dataflow.stream.app.label=log, spring.cloud.stream.metrics.key=ticktock.log.${spring.cloud.application.guid}, spring.cloud.stream.bindings.input.group=ticktock, spring.cloud.stream.metrics.properties=spring.application.name,spring.application.index,spring.cloud.application.*,spring.cloud.dataflow.*, spring.cloud.stream.bindings.applicationMetrics.destination=metrics, spring.cloud.dataflow.stream.name=ticktock, spring.cloud.dataflow.stream.app.type=sink, spring.cloud.stream.bindings.input.destination=ticktock.time}: Create StatefulSet failed. response code 403, message Forbidden

This configuration seems to work with StatefulSets:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: scdf-role
  namespace: default
rules:
  - apiGroups: [""]
    resources: ["services", "pods", "replicationcontrollers", "persistentvolumeclaims"]
    verbs: ["get", "list", "watch", "create", "delete", "update"]
  - apiGroups: [""]
    resources: ["configmaps", "secrets"]
    verbs: ["get", "list", "watch"]
  - apiGroups: ["apps"]
    resources: ["statefulsets"]
    verbs: ["get", "list", "watch", "create", "delete", "update"]
  - apiGroups: ["extensions"]
    resources: ["deployments", "replicasets", "jobs"]
    verbs: ["get", "list", "watch", "create", "delete", "update", "patch"]

Just squashed all the commits @trisberg let me know if it addresses all issues

LGTM, merging ...

Merged as commit 9a568b153c49e65cb2e04c09a03ca7c3011524bf


Point the documentation link in Cargo.toml to docs.rs

The link in the readme already points there, so better to keep it consistent. As a nice side effect, it upgrades the link to https and no longer throws a flash bang at users of a dark theme.

Thanks, I noticed this the other day and also wanted to switch the URL to docs.rs


Ingress on Minikube with the NGINX Ingress Controller does not opens in browser

As listed in the official docs about set of ingress, I found out that the ingress is not reachable by the browser.
I created an ingress:
kubectl apply -f https://k8s.io/examples/service/networking/example-ingress.yaml
And added its mapping on the /etc/hosts file in my windows 10 home edition.
<IP_ADDRESS> hello-world.info
Where <IP_ADDRESS> is the ip address of the ingress.
Finally I tried opening the hello-world.info on the browser but the browser says 'This site can’t be reached'.
Curl command also gave no response.
curl hello-world.info
What is the solution ??

Hi @yogyogi
Would you be willing to describe the context for your findings? We'd want to know what kind of cluster you ran it on (eg: local minikube? minikube from Katacoda as found in that task page? something else), the version of that cluster, and whether you deviated from any of the steps.
I suspect that if you are using Minikube in katacoda, there isn't any way to access the Ingress from the public internet. I haven't checked though.

Hello @sftim,
I am using local Minikube installed in Windows 10 Home. There is also docker desktop in my pc.
I have also described this problem on stackoverflow with no luck till now.
Please provide me a solution. Let me know if you need any other information from me.
thank you

Hi @yogyogi
Thanks for asking that question on Stack Overflow - it sounds like a good place for it.
I did notice that the advice about listing hello-world.info is POSIX-specific. Windows doesn't actually have /etc/hosts file.
When I try this and run curl -H "Host: hello-world.info" "http://$(minikube ip)", it works fine. If you're using PowerShell and have curl available, that should also work OK. Does that help? If so, you could suggest revising the page.

Hello @sftim,
Windows have etc/hosts file, i found it inside C:\Windows\System32\drivers\etc\hosts.
I updated it with notepad.
After that on cmd, i did a ping to it - ping hello-world.info. It was pointing to the ip address <IP_ADDRESS> which i just set on
etc/hosts. So i was able to confirm this that I changed the etc/hosts file correctly.
I will update the stackoverflow with the image of the ping soon.
I also curl to these 2 paths which results in timeout. These 2 paths were:

curl <IP_ADDRESS>
curl hello-world.info

What can be the problem here?
thank you

I have updated stackoverflow  question with screenshots of curl command showing timeouts and also for ping command to the ip which also shows timeout.

/remove-lifecycle rotten

/remove-lifecycle rotten

/remove-lifecycle stale

/remove-lifecycle rotten

/remove-lifecycle stale


saddle-points: PEP8 compliance updated

The exercise saddle-points had some minor inconsistencies with PEP8 which I fixed (#214).
tmo$ flake8 saddle-points/ --ignore=E501
saddle-points/example.py:4:18: E225 missing whitespace around operator
saddle-points/example.py:8:17: E231 missing whitespace after ','
saddle-points/example.py:9:1: W293 blank line contains whitespace

Thanks


"Current language" filter from home screen should be applied to the term listing

From the home screen, this setting:

should be applied in the term listing filters:

The current language selected on the home screen is saved as a user setting, the term listing should just get that setting value and give it to the lute/templates/term/index.html page to set the drop down value.

An alternative might be to implement the Language selection field the same way as on the home screen next to the search box.
In that case it might not be necessary to have it as a filter as well.

That's a possibility, I'll do whichever is faster -- unless someone else picks it up first. 👍


DROP DATABASE CASCADE should be supported

Currently, CASCADE is ignored mistakenly.

This is resolved via #31


Fetch blocks Content-Length: 0 with GET request

This is similar to https://github.com/node-fetch/node-fetch/pull/795 but different.  795 is asking to actually send a body with a GET request.  I've noticed that sending a GET request even with NO body is still blocked if there is a Content-Length header present, even if the length is set to 0.  i.e.
Content-Length: 0

I've come across a handful of older HTTP clients who do this just as a matter of course and it causes issues specifically in CloudFlare workers were developers are proxying the original request through the Fetch API.  The following error is thrown:
Request with a GET or HEAD method cannot have a body.

And just to be very clear-- there is no actual body in my case.  There is only a Content-Length header of 0.
https://datatracker.ietf.org/doc/html/rfc7230#section-3.3.2 says

A user agent SHOULD NOT send a Content-Length header field when the request message does not contain  a payload body and the method semantics do not anticipate such a body.

The key words here are "SHOULD NOT".   Per https://datatracker.ietf.org/doc/html/rfc2119 "SHOULD NOT" means the behavior is not recommended, but is not striclty prohibited by the spec.  And since the spec does not say "MUST NOT", libraries such as the Ruby httprb Gem refuse to change the behavior of their code as they claim having a content-length header is not strictly forbidden in the spec.  See the thread in this ticket here:
https://github.com/httprb/http/issues/487
My suggestion is that an content-length of 0 should simply be ignored for GET requests as the mere inclusion of the header is not in violation of the spec.  I'm fine if actual request bodies are still rejected.
I am not a direct user of either of these libraries, but a stranded third party trying to work through this issue for context:
https://meta.discourse.org/t/link-preview-http-get-breaks-spec/200996

Hmm, I tried:
fetch('https://httpbin.org/get', {
  headers: {
    'content-length': '2'
  }
}).then(r => r.json()).then(j => console.log(j.headers))

In Chrome, Safari & FF: no content-length: 2 was sent
Deno & node-fetch: content-length: 2 was sent
Not sure if undici is sending content-length also (they could have the same issue).
looks almost like if undici may land into nodejs core one day as the default fetch api for NodeJS
can ping @ronag just in case if they have this issue.
Would be grate if there also was a WPT test case for this also so undici, node-fetch Deno and NodeJS can pick this up.
Almost wonder if this should not have be handled more deeply within NodeJS itself such that if a GET request is crafted then it should just ignore sending the content-length header with http/https module...
(pinging @lucacasonato also that is more involved in Deno and have some more knowledge with WPT, just to let him know)
I quickly skimmed through https://fetch.spec.whatwg.org/ about ignoring content-length header with empty bodies - didn't find any, but it might be more deeply submerge within some other xhr or http specification...

Here is something else that is kind of funny: Tried the old XMLHttpRequest
Says that content-length is an unsafe http header

I guess we have something else that ignores sending content-length headers
the fetch spec don't throws when you send unsafe headers... they are simply just ignored. and content-length is one of those unsafe headers that you should not be sending.

@jimmywarting Thanks for chiming in, I appreciate you taking a look at this.  I wish I could provide some more information but unfortunately I'm trying to troubleshoot issues with software that I don't control.  I have more information in the Discourse thread I posted above, but it includes a custom Cloudflare worker who's source code I don't have access to (By the company Gitbook) and they're blaming Fetch for the problem saying it is the library that is throwing the error.  I can't account for all the moving pieces, so while I know it's an issue somewhere, it is possible the error is coming from another layer.  It is a possibility the source lies elsewhere.  I'll poke at Gitbook.io and see if their support will give me more information about their Node Cloudflare worker that is the source of my issues to help create a reproducible case.
My original assumption was that this code was being hit:
https://github.com/node-fetch/node-fetch/blob/136a5f143329f383594fd5510dcd893cc91c93aa/src/request.js#L58
but I also notice the wording of that message is slightly different than the one I'm getting so I'm unclear if it's coming from a different version or perhaps just another place entirely.

Starting to think whether or not we should also ignore a user supplied content-length header and threat it as a unsafe header.
Unless we can't figure out the content-length header our self then it should not be sent.
But i have no clue how that would look like if we where to change it. From lots of places you already have a readable stream and you also know how large the content is. It would be kind of unwise to forbid the content-length header now? specially so if you are acting as a proxy.
I also found this thread be quite interesting:
What header should be sent with streaming uploads: https://github.com/whatwg/fetch/issues/966#issuecomment-644519365
Part of the spec says that when you upload a ReadableStream then transfer encoding should be set to chunked encoding and content-length should be unknown

Looking back throguh some old messages I have from Gitbook's support, they pointed me to this page to describe how their proxy was working:
https://developers.cloudflare.com/workers/runtime-apis/fetch
Now I know nothing about how Cloudflare's workers operate, but I'm assuming the fetch() methods there are essentially using this library.  I've reached out to Gitbook's support for more information,

One think can be for certain, GET and HEAD should not include the content-length header...

Right, "should not", but it also doesn't mean that the existence of the header should be grounds to reject the request.

but I'm assuming the fetch() methods there are essentially using this library.

That seems like a pretty big assumption -- have you contacted them?

but I'm assuming the fetch() methods there are essentially using this library.

That seems like a pretty big assumption -- have you contacted them?

if you don't get a straight answer then u can try sending a http request to httpbin.org/get

look at what the user agent is - we set our own to node-fetch
check if new Response('x').body is of type ReadableStream we haven't implemented whatwg:stream yet
check if CORS are disabled on cloudflare workers
check if you can send any other forbidden headers with cloudflare wokers
you could also try to log what the fetch.toString() says. If it's native code or some custom stuff

This might help debunk wether or not cloudflare's fetch is node-fetch native browser fetch or something own entirely

Cloudflare does not use Node fetch. They also do not use Node.

That seems like a pretty big assumption -- have you contacted them?

@mnot Thanks for the reply, and yes, as I said above I have contact them.  A lot. In fact I've been going back and forth with their support for months and getting nowhere.  The Cloudflare documentation I was given by them led me to believe they were using Node Fetch.  I also tried to work with CloudFlare directly, but since I don't own the account that actually contains the workers, Cloudflare refused to help me.  As I've been going 'round and 'round with Gitbook's customer service for months, posting here was a last resort to try and get to the bottom of where the issue lies.  GitBook has refused to even look at fixing the issue on their Cloudflare workers and aren't being very helpful.

Cloudflare does not use Node fetch. They also do not use Node.

@lucacasonato Ah, very interesting.  I've never used CloudFlare workers so I don't really know how they work.  The company who maintains the CloudFlare workers basically told me they weren't going to spend any time trying to fix it and told me I needed to follow this up with Fetch, which appeared to be Node based.   I did find this yesterday before I created this ticket which is a Cloudflare repo named serverless-cloudflare-workers and it contains a package.json including the node-fetch dependency.
https://github.com/cloudflare/serverless-cloudflare-workers/blob/master/package.json#L27
While I don't know how the 3rd party work is written that is giving me issues, it would appear that CloudFlare does, in fact, use Node and Node-fetch at least somewhere in their stack.

u can try sending a http request to httpbin.org/get

@jimmywarting Thanks again for all your ideas.  Sadly I don't have any control over the CloudFlare worker in question.  It has been created and maintained by Gitbook.io which puts me at a terrible disadvantage since they have refused to help me.

Here is something else that is kind of funny: Tried the old XMLHttpRequest
Says that content-length is an unsafe http header

@jimmywarting was able to run this with out issue in chrome.
xhr = new XMLHttpRequest()
xhr.open('POST', 'https://httpbin.org/get')
xhr.setRequestHeader('content-length', '0')

@bdw429s Agree that serverless-cloudflare-workers indeed use node-fetch. Taking a look at the 3rd party lib they are not doing anything fancy that I could see. I work with fetch/node-fetch daily and haven't seen the sort of issue you are describing unless it was me doing something dumb. Take a look at Fiddler 4 it's an excellent tool for debugging this sort of stuff.

@jimmywarting was able to run this with out issue in chrome.

@MichaelLeeHobbs tried it Safari and Firefox, got the same forbidden header error

@jimmywarting same for me in Firefox. So far works in Chrome/Edge/IE but does not work in Firefox. As Chrome/Edge are basically the same and Node is based on V8 makes sense. I recently learned the hard way that Google doesn't always follow the standard and/or pushes edge proposals of theirs as the standard that I would lean towards Firefox being correct.  Getting back to the original issue I'd say the issue should be closed unless an MVP can be provided showing the issue/bug.

I think we shouldn't completely block overwriting Content-Length headers. There might be applications that want to send a Content-Length header even on GET requests (Example: to write a test for server non-compliance). This also applies to all other forbidden headers (Host, Date, Origin...)
To cater to those uses while retaining spec compliance, we can have a separate request option allowForbiddenHeaders that toggles the blocking of forbidden headers.

We don't have any forbidden headers on the server side.
And i'm not keen on adding non standard options such as allowBody and bodySizeHint
We wouldn't completely block content-length header as a forbidden header
it's more or less fetch job to figure out the size of the payload and then add the content-length header if it's known
but here on the server side it's possible to upload a stream as a body (that have no known size) and setting the content-length header to help/hint to fetch of what the size is: it could be compared to your bodySizeHint

On a side note: one of the forbidden headers you wrote was: Date
Think it would be good if we added that last-modified date thing if someone uploads a File class? new Request('/', {body: new File(...)})
new Issue/Feature perhaps?

I think we should remove content-length header where it don't makes sense to have them.

I think we shouldn't. Here's what I think:

Removing the header when the user intentionally added the header can lead to confusion. Someone might actually want to send a Content-Length: 0 header on a GET request.
Using forbidden headers in node-fetch should be undefined behaviour (in the eyes of the fetch spec). We should not try to define undefined behaviour.

(Regarding (1), as a user, I expect this to work and send a Content-Length: 0 header because I intentionally specified it):
await fetch('https://httpbin.org/get', { headers: { 'Content-Length': '0' } })


flutter analyzing Time is too long, and check again and again, resulting in my development efficiency

Hi @beyondbkcy
To better address the issue, we need more information such as complete flutter doctor -v  and some code sample to demonstrate the issue, with those details we can compare results between 1.22.6 and 2.0.1
Thank you

@TahaTesser I've solved it. Thank you

Hi @beyondbkcy
Given your last message I feel safe to close this issue, if you disagree please write in the comments and I will reopen it.
Thank you


here v0.7.0 but 0.8.0 on npmjs

It seems that this repository is outdated because the version of this module is 0.8.0 on npmjs:

and it's still 0.7.0 here

Oh whoops! Good spot.
For reference, there was no meaningful diff:
> git diff v0.8.0 ef892b2fff2b3be6541dfb0f883a318f9b412af8
diff --git a/package.json b/package.json
index 87feebe..c23712d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "transit-immutable-js",
-  "version": "0.8.0",
+  "version": "0.7.0",
   "description": "Transit serialisation for Immutable.js",
   "main": "index.js",
   "scripts": {


Cve

Adding Quantum Optics support for Qaintessent.jl.
Should this be in another repo?

Requires more work to efficiently represent action of large operators on truncated states. See the walrus.


Calling block.super in extra_js and extra_css.

The specific use case is if you'd globally like to inject css and js
then you can via django overextending wagtailadmin/base.html.
Why not just use the insert_editor_js and insert_editor_css hooks?

It isn't global across the admin, only on editor pages.
In my opinion, this stuff shouldn't be in python.

Why not overextend wagtailadmin/admin_base.html?

Can't use super if you need to insert code after loading vendor libs
like jquery, bootstrap etc but before extra_js. So you then have to
copy-paste a ton of code from the parent - this goes against the
open closed principle and should be avoided.

So given the current build process for front end admin/dashboard assets
in wagtail, this seems like the best solution for now.

@m-sanders Thanks! It took a while for me to come round to the idea of adding code lines in so many places just for the sake of supporting 'unofficial' extensions, but now I realise that {{ block.super }} is a useful convention for Wagtail's own purposes too, as it means we can extend {% block extra_js %} as deeply as we like, without having to come up with silly things like {% block extra_extra_js %}. :-)
Logically it seems like we should ditch extra_js entirely, and just extend {% block js %} each time instead - but as you point out, that means we lose some control over the order of includes. So, I think this is a good pragmatic solution.


Describe offer filtering by language

Issue in ./help/using/offers/api-reference/decisions-api/deliver-offers.md
Please describe how the offer language can be leveraged by the delivery API.
With "offer language" I'm referring to this section in Create personalized offers :

Finally, select the language of your choice to help identify and manage what to display to the users.

DOCAC-7188


Colour funkyheatmap by rank, not score

When scores are similar it's hard to see the differences in ranking. Ideal: keep size by absolute score, colour by rank. cc @LuckyMD

@LuckyMD you originally asked for this -- how do you feel about it now that we have the sorting function?

I think it would still be very useful. I would like to digest this information for other metrics/datasets when i am sorting by another one as well.

The current implementation allows colouring by rank by checking a box :)


thx for password and key to pypi

look at line 52 of .travis.yml

You are welcome!
The password is RSA encrypted.
Happy brute-forcing!


Native target build fails on linux

Hi there, I tried out both the default and android targets. Both of them fails on ubuntu22.04 and my archlinux
 ~/zig-sokol-crossplatform-starter (main*)
guest$ zig version
0.12.0-dev.1837+cbf2b1fea

 ~/zig-sokol-crossplatform-starter (main*)
guest$ zig build default
Using android sdk at ANDROID_HOME: /home/guest/AndroidSDK
Using side by side NDK install: /home/guest/AndroidSDK/ndk/26.1.10909125
Using java at /usr
zig build-exe MyApp_native Debug native: error: the following command failed with 1 compilation errors:
/home/guest/bin/share/zig-linux-x86_64-0.12.0-dev.1837+cbf2b1fea/zig build-exe /home/guest/zig-sokol-crossplatform-starter/zig-cache/o/2e46ee3c33da5ac172cef18dd74d67a2/libMyApp_native.a /home/guest/zig-sokol-crossplatform-starter/zig-cache/o/be9b3951759fcdca5fbf381ac94da486/libsokol.a -lasound -lGL -lX11 -lXi -lXcursor -lc --cache-dir /home/guest/zig-sokol-crossplatform-starter/zig-cache --global-cache-dir /home/guest/.cache/zig --name MyApp_native --listen=-
Build Summary: 2/5 steps succeeded; 1 failed (disable with --summary none)
default transitive failure
└─ install MyApp_native transitive failure
   └─ zig build-exe MyApp_native Debug native 1 errors
error: ld.lld: undefined symbol: main
    note: referenced by /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crt1.o:(_start)

 ~/zig-sokol-crossplatform-starter (main*)
guest$ zig build android
Using android sdk at ANDROID_HOME: /home/guest/AndroidSDK
Using side by side NDK install: /home/guest/AndroidSDK/ndk/26.1.10909125
Using java at /usr
Generate keystore: error: Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 90 days
        for: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown

steps [4/18] zig build-lib MyApp_aarch64-linux-android Debug aarch64-linux-android... L... Archive:  /home/guest/zig-sokol-crossplatform-starter/zig-out/compiled_resources
 extracting: /home/guest/zig-sokol-crossplatform-starter/zig-out/compiled_resources_unzipped/drawable_ic_launcher_background.xml.flat
 extracting: /home/guest/zig-sokol-crossplatform-starter/zig-out/compiled_resources_unzipped/drawable_ic_launcher_foreground.xml.flat
 extracting: /home/guest/zig-sokol-crossplatform-starter/zig-out/compiled_resources_unzipped/mipmap-anydpi-v26_ic_launcher.xml.flat
 extracting: /home/guest/zig-sokol-crossplatform-starter/zig-out/compiled_resources_unzipped/mipmap-anydpi-v26_ic_launcher_round.xml.flat
 extracting: /home/guest/zig-sokol-crossplatform-starter/zig-out/compiled_resources_unzipped/mipmap-hdpi_ic_launcher.webp.flat
 extracting: /home/guest/zig-sokol-crossplatform-starter/zig-out/compiled_resources_unzipped/mipmap-hdpi_ic_launcher_round.webp.flat
 extracting: /home/guest/zig-sokol-crossplatform-starter/zig-out/compiled_resources_unzipped/mipmap-mdpi_ic_launcher.webp.flat
 extracting: /home/guest/zig-sokol-crossplatform-starter/zig-out/compiled_resources_unzipped/mipmap-mdpi_ic_launcher_round.webp.flat
 extracting: /home/guest/zig-sokol-crossplatform-starter/zig-out/compiled_resources_unzipped/mipmap-xhdpi_ic_launcher.webp.flat
 extracting: /home/guest/zig-sokol-crossplatform-starter/zig-out/compiled_resources_unzipped/mipmap-xhdpi_ic_launcher_round.webp.flat
 extracting: /home/guest/zig-sokol-crossplatform-starter/zig-out/compiled_resources_unzipped/mipmap-xxhdpi_ic_launcher.webp.flat
 extracting: /home/guest/zig-sokol-crossplatform-starter/zig-out/compiled_resources_unzipped/mipmap-xxhdpi_ic_launcher_round.webp.flat
 extracting: /home/guest/zig-sokol-crossplatform-starter/zig-out/compiled_resources_unzipped/mipmap-xxxhdpi_ic_launcher.webp.flat
 extracting: /home/guest/zig-sokol-crossplatform-starter/zig-out/compiled_resources_unzipped/mipmap-xxxhdpi_ic_launcher_round.webp.flat
 extracting: /home/guest/zig-sokol-crossplatform-starter/zig-out/compiled_resources_unzipped/values_strings.arsc.flat
thread 7814 panic: reached unreachable code
/home/guest/bin/share/zig-linux-x86_64-0.12.0-dev.1837+cbf2b1fea/lib/std/os.zig:4942:18: 0x39fd21 in lseek_SET (build)
        .BADF => unreachable, // always a race condition
                 ^
/home/guest/bin/share/zig-linux-x86_64-0.12.0-dev.1837+cbf2b1fea/lib/std/fs/Dir.zig:343:40: 0x366c24 in nextLinux (build)
                        posix.lseek_SET(self.dir.fd, 0) catch unreachable; // EBADF here likely means that the Dir was not opened with iteration permissions
                                       ^
/home/guest/bin/share/zig-linux-x86_64-0.12.0-dev.1837+cbf2b1fea/lib/std/fs/Dir.zig:327:34: 0x32fb67 in next (build)
            return self.nextLinux() catch |err| switch (err) {
                                 ^
/home/guest/zig-sokol-crossplatform-starter/build/ListFiles.zig:48:25: 0x38b479 in make (build)
    while (try iter.next()) |*entry| {
                        ^
/home/guest/bin/share/zig-linux-x86_64-0.12.0-dev.1837+cbf2b1fea/lib/std/Build/Step.zig:180:13: 0x34aad8 in make (build)
    s.makeFn(s, prog_node) catch |err| switch (err) {
            ^
/home/guest/bin/share/zig-linux-x86_64-0.12.0-dev.1837+cbf2b1fea/lib/build_runner.zig:888:31: 0x2f2b50 in workerMakeOneStep (build)
    const make_result = s.make(&sub_prog_node);
                              ^
/home/guest/bin/share/zig-linux-x86_64-0.12.0-dev.1837+cbf2b1fea/lib/std/Thread/Pool.zig:94:39: 0x2b9492 in runFn (build)
            @call(.auto, func, closure.arguments);
                                      ^
/home/guest/bin/share/zig-linux-x86_64-0.12.0-dev.1837+cbf2b1fea/lib/std/Thread/Pool.zig:133:18: 0x38d594 in worker (build)
            runFn(&run_node.data);
                 ^
/home/guest/bin/share/zig-linux-x86_64-0.12.0-dev.1837+cbf2b1fea/lib/std/Thread.zig:411:13: 0x34a34d in callFn__anon_17100 (build)
            @call(.auto, f, args);
            ^
/home/guest/bin/share/zig-linux-x86_64-0.12.0-dev.1837+cbf2b1fea/lib/std/Thread.zig:1209:30: 0x2f24dc in entryFn (build)
                return callFn(f, self.fn_args);
                             ^
/home/guest/bin/share/zig-linux-x86_64-0.12.0-dev.1837+cbf2b1fea/lib/c.zig:239:13: 0x477ec0 in clone (c)
            asm volatile (
            ^
???:?:?: 0x7f639df05fff in ??? (???)
Unwind information for `???:0x7f639df05fff` was not available, trace may be incomplete

error: the following build command crashed:
/home/guest/zig-sokol-crossplatform-starter/zig-cache/o/89f8b2481ddee470a206e7cbc0caf474/build /home/guest/bin/share/zig-linux-x86_64-0.12.0-dev.1837+cbf2b1fea/zig /home/guest/zig-sokol-crossplatform-starter /home/guest/zig-sokol-crossplatform-starter/zig-cache /home/guest/.cache/zig --seed 0x68c7e35c android

Hi there,
Just pushed a change that should fix the issue for the default build. Still have to explore whats going on with the android build.

Pushed a change that should fix the android build. Also make sure you have the zip command installed (pacman -Sy zip). Probably will try to make that not a dependency in the future.
Cheers,
George


docs(topics): add key-value provider tutorial

Adds a tutorial around configuring an external key value provider for a SpinApp

Ref https://github.com/spinkube/documentation/issues/199

Thanks for the review @bacongobbler.  The recent amended commit just fixes a couple of typos I spotted in one last read-through.


Output annotations for brew audit.

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[ ] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.

[x] Have you successfully run brew tests with your changes locally?

What would this do/add/fix?

Add annotations in the “Files” tab in the GitHub UI.

Can't really judge the code. But the feature sounds great.


GLException$InvalidOperation in different tests

See the logs below.
These are the outputs from running, respectively, Geom3DTest and Graphics2DTest.
I've just recently started digging into the engine (great job, btw!), but from my limited understanding it appears the ResourceLoader is trying to draw the logo before OpenGL has been initialized.
[INFO 03/15/2015 9:18:41 PM] Initializing SilenceEngine. Platform identified as WINDOWS_64
[INFO 03/15/2015 9:18:41 PM] Initializing LWJGL library. Extracting natives
[INFO 03/15/2015 9:18:41 PM] LWJGL version 3.0.0a is initialised
[INFO 03/15/2015 9:18:42 PM] Initializing Audio Engine with OpenAL 1.1
AL lib: (EE) UpdateDeviceParams: Failed to set 48000hz, got 44100hz instead
[INFO 03/15/2015 9:18:42 PM] Audio Engine initialized successfully, with device OpenAL Soft
[INFO 03/15/2015 9:18:42 PM] SilenceEngine version 0.0.3a was initialized successfully
[INFO 03/15/2015 9:18:42 PM] Initializing the Game resources
com.shc.silenceengine.graphics.opengl.GLException$InvalidOperation: The specified operation is not allowed in current state
	at com.shc.silenceengine.graphics.opengl.GLError.check(GLError.java:79)
	at com.shc.silenceengine.graphics.opengl.GLError.check(GLError.java:54)
	at com.shc.silenceengine.graphics.opengl.Program.setUniform(Program.java:158)
	at com.shc.silenceengine.graphics.opengl.Program.setUniform(Program.java:163)
	at com.shc.silenceengine.graphics.programs.DefaultProgram.prepareFrame(DefaultProgram.java:84)
	at com.shc.silenceengine.graphics.Batcher.flush(Batcher.java:219)
	at com.shc.silenceengine.graphics.Batcher.end(Batcher.java:185)
	at com.shc.silenceengine.graphics.Graphics2D.drawTexture(Graphics2D.java:306)
	at com.shc.silenceengine.graphics.Graphics2D.drawTexture(Graphics2D.java:267)
	at com.shc.silenceengine.graphics.Graphics2D.drawTexture(Graphics2D.java:313)
	at com.shc.silenceengine.core.ResourceLoader.renderProgress(ResourceLoader.java:226)
	at com.shc.silenceengine.core.ResourceLoader.startLoading(ResourceLoader.java:167)
	at com.shc.silenceengine.tests.Geom3DTest.init(Geom3DTest.java:71)
	at com.shc.silenceengine.core.Game.start(Game.java:188)
	at com.shc.silenceengine.tests.Geom3DTest.main(Geom3DTest.java:59)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
AL lib: (EE) alc_cleanup: 1 device not closed

[INFO 03/15/2015 9:31:20 PM] Initializing SilenceEngine. Platform identified as WINDOWS_64
[INFO 03/15/2015 9:31:20 PM] Initializing LWJGL library. Extracting natives
[INFO 03/15/2015 9:31:20 PM] LWJGL version 3.0.0a is initialised
[INFO 03/15/2015 9:31:20 PM] Initializing Audio Engine with OpenAL 1.1
AL lib: (EE) UpdateDeviceParams: Failed to set 48000hz, got 44100hz instead
[INFO 03/15/2015 9:31:20 PM] Audio Engine initialized successfully, with device OpenAL Soft
[INFO 03/15/2015 9:31:20 PM] SilenceEngine version 0.0.3a was initialized successfully
[INFO 03/15/2015 9:31:20 PM] Initializing the Game resources
com.shc.silenceengine.graphics.opengl.GLException$InvalidOperation: The specified operation is not allowed in current state
	at com.shc.silenceengine.graphics.opengl.GLError.check(GLError.java:79)
	at com.shc.silenceengine.graphics.opengl.GLError.check(GLError.java:54)
	at com.shc.silenceengine.graphics.opengl.Program.setUniform(Program.java:158)
	at com.shc.silenceengine.graphics.opengl.Program.setUniform(Program.java:163)
	at com.shc.silenceengine.graphics.programs.DefaultProgram.prepareFrame(DefaultProgram.java:84)
	at com.shc.silenceengine.graphics.Batcher.flush(Batcher.java:219)
	at com.shc.silenceengine.graphics.Batcher.end(Batcher.java:185)
	at com.shc.silenceengine.graphics.Graphics2D.drawTexture(Graphics2D.java:306)
	at com.shc.silenceengine.graphics.Graphics2D.drawTexture(Graphics2D.java:267)
	at com.shc.silenceengine.graphics.Graphics2D.drawTexture(Graphics2D.java:313)
	at com.shc.silenceengine.core.ResourceLoader.renderProgress(ResourceLoader.java:226)
	at com.shc.silenceengine.core.ResourceLoader.startLoading(ResourceLoader.java:143)
	at com.shc.silenceengine.tests.Graphics2DTest.init(Graphics2DTest.java:59)
	at com.shc.silenceengine.core.Game.start(Game.java:188)
	at com.shc.silenceengine.tests.Graphics2DTest.main(Graphics2DTest.java:45)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
AL lib: (EE) alc_cleanup: 1 device not closed

@DamianX
I think I found the issue, which is not the problem of ResourceLoader but is the new Display class implementation, this occurs right after calling Display.setResizable(false) method. Thanks for reporting, I'll investigate into this issue further.

@DamianX
I have solved the issue, it turned up that I forgot to update the Display after replacing the window handle. If you also confirm that this is gone I'll close this issue.

Yep, it works. Case closed I guess.

Good to hear, I'm now closing this issue.


Distingues direction in Chapter 6.2.2 and 6.2.3

Chapters 6.2.2 and 6.2.3: How to distinguish the cases between chapters 6.2.2 and 6.2.3? Is there an attribute, which explains the direction?
Section: Ch 6.2.2 and 6.2.3

I suggest we remove this text for now and work through it and put it back in the next version? @andersbonielsen

I've talked to @andersbonielsen and this concept is also documented in the AIP. Removing might cause consistency problems. @carlwilson to review today and will propose something for the A2 meeting on 14/05.

See also AIP
https://github.com/DILCISBoard/E-ARK-AIP/blob/master/index.md#child-aip-references-parent-aip
https://github.com/DILCISBoard/E-ARK-AIP/blob/master/index.md#parent-aip-references-child-aips

DILCIS Board meeting at 21st of May decided that this part needs more work involving more partners from DILCIS as well as E-ARK so for now this part will be shortened until a result has been reached.

Trusting that the rewritten AIP specification handles these issues and closing this


Complex UI example

As there isn't an integration with VS studio (read  XAML designer) yet, could you add an example the builds a UI that is a little bit more complex, like having multiple UI elements  arranged in some grid or stackpanel that also automatically stretches to the whole window.
I tried to tranlate some of the UWP examples on the web, but that turned out to be all but trivial (at least for an inexperienced user like me). E.g. most examples either only show XAML code which I can't use or c# code, which apparently has access to some methods not available at cppwinrt. In both cases it is often not clear, what the equivalent cppwinrt syntax to a particular XAML / c# example would be, even if the respective functions are available.

Please have a look here: https://github.com/Microsoft/cppwinrt/issues/176
I plan to record a video on bindings this weekend.

@FeBrex: I had a look at your solution and it is really handy. However, I am actually interested in how to compose the UI's programatically and as far as I understand your solution it leaves me with the same problem of the difference between the API used in the c# examples and the onw available via the cppwinrt library.

Could you list some of the APIs you're talking about? We project all the APIs present in the metadata, so if there's an issue, it's most likely a fundamental difference in the C++ Windows API surface area that has nothing to do with cppwinrt.

Unfortunately I haven't documented my exact problems. One thing that comes to mind and was afaik already mentioned here somewhere was add vs append and I think I ran into problems once or twice due to the lack of properties in c++.

Any updates on this? Do you need more information? Or is it just too low on your priority list?

I'll second MikeGitb's request. I'd like to see an example that combines regular controls like labels, combo boxes, text boxes, with some Composition visual functionality, like a rectangle that spins.

Working example of bindings https://github.com/Mr1Penguin/cppwinrtbinding

And spinning button using composition https://github.com/Mr1Penguin/cppwinrtcomposition

Basic stack panel sample program.
http://www.c-sharpcorner.com/article/learn-universal-windows-programming-via-modern-cpp-stackpanel/

@rvinothrajendran: thanks, that was pretty much, what I was looking for. Can you also give an example using a gridlayout? If I remember correctly, this was where my trouble started. Also, what is the best way to create overlapping UI elements?
@Mr1Penguin: Thank you too. Your approach seems like the best one for professional use, but first I would like to get a feeling of how to compose (and manipulate) a UI programmatically.

Continuing with Vinoth's article on stack panel, I have been using a menu of buttons in my experiments.
From a high level, each button starts a function.  The GUI namespace handles most of the plumbing:
`#pragma once
#include "pch.h"
struct LabelHandler {
hstring label;
Windows::UI::Xaml::RoutedEventHandler handler;
};
namespace Gui
{
// Add these labeled handlers as buttons to the stack panel
void appendButtons(std::vector< LabelHandler > & menu, std::vector< Button > & buttons, StackPanel & stackPanel);
void myBlockStyle(TextBlock & block);
void myButtonStyle(Button & button);

void setButtonContent(Button & button, const std::wstring & text);

std::wstring getButtonContent(Button & button);

};
 #include "pch.h"
namespace Gui
{
// Add these labeled handlers as buttons to the stack panel
//
void appendButtons(std::vector< LabelHandler > & menu, std::vector< Button > & buttons, StackPanel & stackPanel )
{
for (auto lh : menu) {
buttons.push_back(Button());
Gui::myButtonStyle(buttons.back());
Gui::setButtonContent(buttons.back(), lh.label);
buttons.back().Click(lh.handler);
stackPanel.Children().Append(buttons.back());
}
}
void myBlockStyle(TextBlock & block)
{
	block.FontFamily(FontFamily(L"Segoe UI Semibold"));
	block.FontSize(32.0);
	block.Foreground(SolidColorBrush(Colors::Orange()));
	block.VerticalAlignment(VerticalAlignment::Center);
	block.TextAlignment(TextAlignment::Center);
	block.TextWrapping(TextWrapping::Wrap);
}

void myButtonStyle(Button & button)
{
	button.FontFamily(FontFamily(L"Segoe UI Semibold"));
	button.FontSize(36.0);
	button.Foreground(SolidColorBrush(Colors::DarkBlue()));
	button.VerticalAlignment(VerticalAlignment::Center);
	button.HorizontalContentAlignment(HorizontalAlignment::Left);
	button.MinWidth(350);
}

void setButtonContent(Button & button, const std::wstring & text)
{
	Windows::IInspectable value = PropertyValue::CreateString(text); // std::wstring converted to hstring
	button.Content(value);
}

std::wstring getButtonContent(Button & button)
{
	IPropertyValue senderContent = button.Content().as< IPropertyValue >();
	return senderContent.GetString();	// hstring converted to std::wstring
}

}
`
So all I have to do is pass a vector of LabelHandler into appendButtons, and I get a menu of buttons.
class HelloGui : public ApplicationT		// Or struct HelloGui : ApplicationT
{
public:
StackPanel stackPanel;
TextBlock textBlock;
std::vector< Button > buttons;
void OnLaunched(LaunchActivatedEventArgs const &)
{
	std::vector< LabelHandler > menu = {

	{ L"Write own content",
		[=](Windows::IInspectable const & sender, RoutedEventArgs const & args)
	{
		// How to use the event parameters
		// See https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.RoutedEventArgs
		try {
			Button sendButton = sender.as<Button>();
			textBlock.Text(Gui::getButtonContent(sendButton));
		}
		catch (winrt::hresult_error const & ex) {
			textBlock.Text(ex.message());
		}
	}
		},

	{ L"OCR from Image",
		[=](Windows::IInspectable const & sender, RoutedEventArgs const & args)
	{
		Ocr_ForegroundAsync(textBlock);   // Implement your own function here...
		UNREFERENCED_PARAMETER(sender);
		UNREFERENCED_PARAMETER(args);
	}
		},

	};

	textBlock.Text(L"Textblock fill");
	Gui::myBlockStyle(textBlock);

	stackPanel.HorizontalAlignment(Windows::UI::Xaml::HorizontalAlignment::Left);
	Gui::appendButtons(menu, buttons, stackPanel);
	stackPanel.Children().Append(textBlock);

	using namespace Windows::UI::ViewManagement;
	ApplicationView appView = ApplicationView::GetForCurrentView();
	appView.Title(L"Menu of buttons");

	Window window = Window::Current();
	window.Content(stackPanel);
	window.Activate();
}

Hope this helps people trying to experiment without the XAML infrastructure.

@mikegitb surely i will share the sample but I am on vacation , i will update on coming Friday , hope meantime you find the way or some folks will share it

No worries I'm not on any project that uses einer. Just wanted to play around a bit.

@mikeGitb please find the Grid sample application
https://github.com/rvinothrajendran/CppuwpExample

Thank you very much. Worked like a charm. I still think it would be nice, if examples like these would be added to the repo, but as far as I am concerned, this issue can be closed.

@MikeGitb you're welcome

I haven't had time to look into them yet, but assuming that one of these examples shows how to mix 3D animations and regular controls, I'd like to also thank you very much.

What am I missing? I got a link error related to buttonbase:
Severity	Code	Description	Project	File	Line	Suppression State
Error	LNK2019	unresolved external symbol "public: struct winrt::event_token __cdecl winrt::impl::consume_Windows_UI_Xaml_Controls_Primitives_IButtonBase::Click(struct winrt::Windows::UI::Xaml::RoutedEventHandler const &)const "
I reviewed "pch.h" and all the headers are included, as far as my knowledge allows me to see.
#pragma once
#pragma comment(lib,"windowsapp")
#include <winrt\base.h>
#include <winrt\Windows.ApplicationModel.h>
#include <winrt\Windows.ApplicationModel.Activation.h>
#include <winrt\Windows.Foundation.h>
#include <winrt/Windows.UI.Xaml.Input.h>
#include <winrt\Windows.UI.Xaml.Controls.h>
#include <winrt\Windows.UI.Xaml.Media.h>
#include <winrt\Windows.Storage.Streams.h>
#include <winrt\Windows.Graphics.Imaging.h>
#include <winrt\Windows.Media.Ocr.h>
#include <winrt\Windows.Networking.h>
#include <winrt\Windows.UI.Popups.h>
Please help.

Hi
Please include #include "winrt/Windows.UI.Xaml.Controls.Primitives.h"
Thanks,
Vinoth

Perfect! Work wonderfully!
Thanks a lot.
Geolffrey.

Thanks goes to @Scottj1s 👍


Change the CI helm chart to reference pcccr

Description
Change the CI helm chart to reference the new image name https://pcccr.azurecr.io/private/planetary-computer-apis/stac and tiler
Fixes # (issue)
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration
Checklist:
Please delete options that are not relevant.

[ ] I have performed a self-review
[ ] Changelog has been updated
[ ] Documentation has been updated
[ ] Unit tests pass locally (./scripts/test)
[ ] Code is linted and styled (./scripts/format)

Looks good! I realized that since we are pulling from a new ACR, we'll need to update the permissions on the cluster. Previously, we were granting pull permissions for a test ACR, but we have been actually pulling from MCR. In that case, I think we can just switch the unused ACR to pcccr and apply the role to it:
diff --git a/deployment/terraform/staging/main.tf b/deployment/terraform/staging/main.tf
index 3351718..a2f8f79 100644
--- a/deployment/terraform/staging/main.tf
+++ b/deployment/terraform/staging/main.tf
@@ -9,6 +9,8 @@ module "resources" {
   cluster_cert_issuer = "letsencrypt"
   cluster_cert_server = "https://acme-v02.api.letsencrypt.org/directory"

+  pc_test_resources_acr = "pcccr"
+
   aks_node_count      = 2
   stac_replica_count  = 2
   tiler_replica_count = 2

(see acr.tf)


chore: migrated create comment function to drizzle

✨ Codu Pull Request 💻

Pull Request details

Pretty much a lift and shift. Nothing to complex

Any Breaking changes

Potentially if we dont migrate the DB to match the Drizzle schema before we deploy this
Drizzle schema has updatedAt as defaultNow() but it seems prisma had some type of @updatedAt which was doing this. Therefore theres a nonNull constraint on updatedAt from the prisma schema and a defaultNow() from the drizzle schema. To overcome this I was able to drop the DB and recreate it from the drizzle schema. We may not be able to do this in Prod

Associated Screenshots

Summary by CodeRabbit

Refactor

Enhanced comment and notification handling for improved performance and consistency.

So just for clarity, what exactly could break when I deploy this? Or what do I need to change? We should be matching the schema of Prisma for the migration so that's why this worries me 😹
Do we need to make sure the edit function is completed with this PR? Just so the updatedAt can be manually updated each time too?

So just for clarity, what exactly could break when I deploy this? Or what do I need to change? We should be matching the schema of Prisma for the migration so that's why this worries me 😹
Do we need to make sure the edit function is completed with this PR? Just so the updatedAt can be manually updated each time too?

Sure so the comment schema is

and updatedAt is notNull and defaults to now() which is all good.
However the prisma schema doesnt have the default to now()

So if you initialise the DB with the prisma schema and then try to use the drizzle schema to update a comment. Drizzle will think its ok to leave updatedAt as null but Prisma/ Postgres will not be happy and will throw an error.
However if you initialise the DB with the Drizzle schema then everything will work as per. I didnt manage to get the migration working myself but I didnt put too much time into it

So just for clarity, what exactly could break when I deploy this? Or what do I need to change? We should be matching the schema of Prisma for the migration so that's why this worries me 😹
Do we need to make sure the edit function is completed with this PR? Just so the updatedAt can be manually updated each time too?

Sure so the drizzle comment schema is
and updatedAt is notNull and defaults to now() which is all good.
However the prisma schema doesnt have the default to now()
So if you initialise the DB with the prisma schema and then try to use the drizzle schema to update a comment. Drizzle will think its ok to leave updatedAt as null but Prisma/ Postgres will not be happy and will throw an error.
However if you initialise the DB with the Drizzle schema then everything will work as per. I didnt manage to get the migration working myself but I didnt put too much time into it

I think this okay! Its just because Drizzle doesn't offer that auto update now function but we will always create an object with a default date if it's not provided at creation time. I think it should be fine. Now let's watch the world burn 😂

@NiallJoeMaher i don't think we do... if you look at the PR we aren't providing the updatedAt property and are expecting the drizzle to sort it for us.
I can make this change in the follow on PR to ensure we always send one anyway but this might have broken the commment creation. I'll check dev

Oh yeah just throw it into the next PR then and we will be sorted 😎


[v1.16] Author proxy backports

[ ] #36142 (@jrajahalme)
[ ] #36389 (@jrajahalme)
[ ] #36399 (@jrajahalme)
[ ] #36330 (@jrajahalme) ⚠ had to add a commit to update github.com/cilium/proxy Envoy API, which also pulled in various other vendor updates

Once this PR is merged, a GitHub action will update the labels of these PRs:
 36142 36389 36399 36330

/test-backport-1.16

Fixed vendoring

Added new vendored files to the 2nd to last commit.

/test-backport-1.16

/test-backport-1.16

/test-backport-1.16

/test-backport-1.16


the program closes without reason after logging in, this problem is in several servers

the program immediately after logging in, the program closes without reason.
I tried on the servers below and the same problem.
Ar Server: Error
https://s34-ae.ikariam.gameforge.com/
En Server: same problem
https://s44-en.ikariam.gameforge.com/
Error:
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='pixelzirkus.gameforge.com', port=443): Max retries exceeded with url: /do/simple (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000001F2E87669C8>: Failed to establish a new connection: [Errno 11004] getaddrinfo failed'))
[15660] Failed to execute script command_line

as I said in the other issue, that is a connection issue, are you connected to the internet? can you login from the browser?

yes, I am connected to the Internet and I can log in from the browser to the game without problems

that's weird, because ikabot can't establish an HTTPS connection with ikariam

Watch the video:
https://gofile.io/d/dU2sps
If the email and password were entered correctly, incorrectly, or randomly !!! there is no difference !!!.
I have disabled all system protections and added ikabot to the firewall !!! and try it on a new user !!! same problem :(

it doesn't matter what mail and password you enter because ikabot can't connect to the ikariam's server.
is not a bug in the code, but you can try to install ikabot with pip instead of using the .exe.
the instructions are in the readme.

I already tried to do it and it didn't help !!!
Using Pip: python3 -m pip install --user ikabot
I tried again and re-add the program !!! the same problem when I run the program 😔

there is no solution to this problem !!! I tried all the ways and nothing worked !!!! 😔 can you, in future versions of the program try to find a solution to this problem !!!! or give hints for example or anything that helps others like me solve the problem.

It all points to a connection/DNS problem in your side, this doesn't seem to be a bug in the code,
in the stack trace you can see that the 'requests' library is failing, meaning it was unable to make a connection to ikariam.
if I found any issues I will re-open this and let you know

I have talked with the user, and we successfully solved the problem. Unfortunately, because of the language barrier, I had a hard time understanding what exactly fixed the user's issue, but here's a couple of things we tried:

The user had the 'http_proxy' environment variable set on his Windows account. This was fixed by creating a new user account on his Windows machine and running ikabot.
At this point, the network errors had stopped but the user had issues with logging in. This was solved by applying one of the following (again, I'm unsure as to which fix was the actual working one)

The user copy/pasted his email and password into the terminal instead of typing it in.
The user changed his credentials in Ikariam to ASCII only characters.

Lastly, I think the user said that he changed the DNS server on his machine but I'm not sure about that either. If you are reading this and have similar issues, try to exhaust the above list. If all else fails, you can contact us for support on our Discord server.

Awesome! thanks 😃


ImportError: cannot import name 'constants'

When I run this:
from dm_control import suite

The error occurs:
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-2-2addf36a480e> in <module>()
----> 1 from dm_control import suite

~/ai-ink/Jupyter-zhouxin12/github/dm_control/dm_control/suite/__init__.py in <module>()
     26 from dm_control.rl import control
     27
---> 28 from dm_control.suite import acrobot
     29 from dm_control.suite import ball_in_cup
     30 from dm_control.suite import cartpole

~/ai-ink/Jupyter-zhouxin12/github/dm_control/dm_control/suite/acrobot.py in <module>()
     24 # Internal dependencies.
     25
---> 26 from dm_control import mujoco
     27 from dm_control.rl import control
     28 from dm_control.suite import base

~/ai-ink/Jupyter-zhouxin12/github/dm_control/dm_control/mujoco/__init__.py in <module>()
     16 """Mujoco implementations of base classes."""
     17
---> 18 from dm_control.mujoco.engine import action_spec
     19
     20 from dm_control.mujoco.engine import Camera

~/ai-ink/Jupyter-zhouxin12/github/dm_control/dm_control/mujoco/engine.py in <module>()
     41
     42 from dm_control import render
---> 43 from dm_control.mujoco import index
     44
     45 from dm_control.mujoco import wrapper

~/ai-ink/Jupyter-zhouxin12/github/dm_control/dm_control/mujoco/index.py in <module>()
     92 # Internal dependencies.
     93
---> 94 from dm_control.mujoco.wrapper import util
     95 from dm_control.mujoco.wrapper.mjbindings import sizes
     96 import numpy as np

~/ai-ink/Jupyter-zhouxin12/github/dm_control/dm_control/mujoco/wrapper/__init__.py in <module>()
     21
     22
---> 23 from dm_control.mujoco.wrapper import mjbindings
     24
     25 from dm_control.mujoco.wrapper.core import callback_context

~/ai-ink/Jupyter-zhouxin12/github/dm_control/dm_control/mujoco/wrapper/mjbindings/__init__.py in <module>()
     22 from absl import logging
     23
---> 24 from dm_control.mujoco.wrapper.mjbindings import constants
     25 from dm_control.mujoco.wrapper.mjbindings import enums
     26 from dm_control.mujoco.wrapper.mjbindings import sizes

ImportError: cannot import name 'constants'

I have the same problem, any ideas someone?

I have the same problem when first cloning the repository and then  running pip install dm_control.
If I install this by using pip install git+git://github.com/deepmind/dm_control.git, the error would become
p = os.fspath(p)
TypeError: expected str, bytes or os.PathLike object, not NoneType.
Any ideas?
By the way, I'm using win10 , I think it might due to my operating system?

Duplicate of #6

This happens when the interpreter fails to find the auto-generated code, often because the interpreter starts in the source tree or when installation is run with "install e".


add flatMap on EntityDecoder?

trait EntityDecoder[T]{
  def flatMap[U](f: T => DecodeResult[U]): EntityDecoder[U] = ???
}

I like the method but not the name: its not really a flatMap operation. Is there a common name for this type of transformation? I believe @rossabaker dug into this at one point and had an answer that didn't work out for some reason or another, but perhaps I'm wrong.
Bottom line, I don't mind adding a method of that form, just not with that name.

I agree it's not a flatMap, and I don't know a standard name.
Similar precedents:

Service has a flatMapTask.
Kleisli has a flatMapK.

I ran into this exact problem today when trying to write a decoder from Argonaut Json to T. I ended up with something like this
object ArgonautDecoders extends ArgonautInstances {
implicit def argonatuDecoder[T](implicit decode: DecodeJson[T]): EntityDecoder[T] = {
json.map((json: Json) => decode.decodeJson(json).value.get)
}
}
The value.get is quite nasty. Is there a better way to handle this in the short term.  The 'flatMap; function is exactly what i need, regardless of what is ends up being call.

As there is no obvious method name, lets just make one up. How about flatMapR where R is for Result? I don't have any particular affinity but a single capitol char at the end seems right.

@kaiserpelagic you may also be interested in issue #156. I imagine that will get done sooner than later, but if you are interested in lending a hand, PR's appreciated :)

Wonder if this might be relevant? http://arxiv.org/abs/1412.7148
"Monads need not be endofunctors". So the "monoid" op of monad doesn't necessarily have to be closed, i.e. yield the same type of monad as the two you were "flattening" together?

Well, how nice that the relative operation is already named flatMapR. :-)
On Jan 11, 2015 1:02 AM, "Leif Warner"<EMAIL_ADDRESS>wrote:

Wonder if this might be relevant? http://arxiv.org/abs/1412.7148
"Monads need not be endofunctors". So the "monoid" op of monad doesn't
necessarily have to be closed, i.e. yield the same type of monad as the two
you were "flattening" together?
--
Reply to this email directly or view it on GitHub
https://github.com/http4s/http4s/issues/160#issuecomment-69484830.


Login link visible even when user session active

Sort of a corner case, but one that will be tested in "real" apps... so we should address it.
Steps to reproduce:

Login to the app.
Open another tab, and enter the site root URL. Note you access the landing page, but instead of the username you are presented with the Log in link. Also, the main menu is not visible:

Though the menu is missing, you can access protected parts of the app by entering in the URL directly:

This is also occurring on a refresh.
To recreate:

login
refresh browser