[macOS] add a QML version of simple_demo

🎉 New feature
Summary
This PR adds a QML version of the simple_demo example. It uses a similar mechanism to render as used
by the Scene3D plugin and so serves as a useful prototyping and test environment for investigating
rendering issues in QML applications without the complexity of the full ignition gui or plugin infrastructure.
The initial use for this example was to resolve issues around support of ignition guis on macOS (https://github.com/ignitionrobotics/ign-gui/issues/145).
Upstream dependencies
For macOS there is an upstream dependency on Ogre2 pending this PR: https://github.com/OGRECave/ogre-next/pull/216 which adds support for the currentGLContext parameter when creating a render window.
Test it
The changes may be tested by building and running the example. The expected outcome is the window below showing the rendered ignition scene under a QML overlay (run on macOS Big Sur 11.4).

Checklist

[x ] Signed all commits for DCO
[ ] Added tests
[x ] Added example and/or tutorial
[ ] Updated documentation (as needed)
[ ] Updated migration guide (as needed)
[ ] codecheck passed (See contributing)
[ ] All tests passed (See test coverage)
[ ] While waiting for a review on your PR, please help review another open pull request to support the maintainers

Note to maintainers: Remember to use Squash-Merge

nice! About upgrading the version of ogre:

ignition uses a fork of ogre 2.1. In order to make use of this work, we'll need to pull the changes from https://github.com/OGRECave/ogre-next/pull/216 to our fork.
unfortunately I don't think we can just pull all the latest changes from ogre-next's v2-1 branch into our fork because of there are API changes, e.g. the ones that you had to make in this PR. If we do that, it'll break downstream users who use our ogre 2.1 packages.
From Ignition Fortress (ign-rendering6) onward, we will depend on ogre 2.2. Looks like with https://github.com/OGRECave/ogre-next/pull/209, we'll have GL3+ support on macOS. We can probably just update our ogre 2.2 fork to use the latest commit from the v2-2 branch once https://github.com/OGRECave/ogre-next/pull/216 is merged forward.

I think the best way forward for Edifice (ign-rendering5) and possibly Citadael (ign-rendering3) is to do 1. then make a new release of ogre 2.1 from our fork. @j-rivero is that do-able?

ignition uses a fork of ogre 2.1. In order to make use of this work, we'll need to pull the changes from [GL3+] add support for currentGLContext for macOS OGRECave/ogre-next#216 to our fork.

I thought that would be the case but figured placing the Ogre2 PR against the head of the v2-1 branch would be the best way to get it accepted.

2. unfortunately I don't think we can just pull all the latest changes from ogre-next's v2-1 branch into our fork because of there are API changes, e.g. the ones that you had to make in this PR. If we do that, it'll break downstream users who use our ogre 2.1 packages.

I can rebase the PR against the Ogre2.1 commit used in the osrf/simulation formula for ogre2.1 if that makes it easier, or you can edit my branch if you prefer?

I thought that would be the case but figured placing the Ogre2 PR against the head of the v2-1 branch would be the best way to get it accepted.

yeah that's fine. Once the PR is accepted upstream, we can pull the commit into our fork.

I can rebase the PR against the Ogre2.1 commit used in the osrf/simulation formula for ogre2.1 if that makes it easier, or you can edit my branch if you prefer?

yes, that'll be easier for us to get this in, thanks!

@ahcorde thanks for your review. I've made the changes you suggested and pushed them.
I still need to rebase on the branch of Ogre2.1 used by ignition-rendering5 which will eliminate some of the other changes not directly related to the example.

OGRECave/ogre-next#216 is merged. I just opened a pull request to build our ogre 2.1 bottle with that patch:
osrf/homebrew-simulation#1555

looks like the patch failed because we're using an older commit of ogre 2.1 and there have been quite a few changes to the osx render system in the 2.1 branch since then.

I still need to rebase on the branch of Ogre2.1 used by ignition-rendering5 which will eliminate some of the other changes not directly related to the example.

Were you able to get this working with our version of ogre 2.1?

Were you able to get this working with our version of ogre 2.1?

Yes, the other changes on the current version of Ogre2.1 were not specific to macOS. If you let me know the commit that you'd like me to rebase on I'll get the PR updated.
Having reviewed the Gazebo Scene3D plugin code in more detail I see that there is a synchronisation system in place to prevent a race condition between QML and Ogre. I've not implemented this in the demo, which does not seem to matter (mostly), probably because the window for contention is very small as explained in the dev notes by @darksylinc: Race condition between Qt and Ogre2 in presentation #304 and Fix race condition when rendering the UI #774 . It might be useful to add this in any case to make the example better reflect what happens in the main app.
The other issue I noticed when running the example on an Ubuntu VM hosted on macOS, is that I cannot necessarily rely on the scene graph calling updatePaintNode from the main thread - as this depends upon the value assigned to QSG_RENDER_LOOP. The default on macOS is QSG_RENDER_LOOP=basic so the example works, but it will fail if set to QSG_RENDER_LOOP=threaded.
@iche033's suggestion here of using event callbacks may provide a solution in this case as well.

probably because the window for contention is very small as explained in the dev notes by @darksylinc

Just to clear something up: Gazebo was rendering in two threads (Qt in one thread, Ogre in another) without proper synchronization. While "proper" synchronization is possible via a double buffer scheme; there were many difficulties so the solution we ended up implementing was brute force: serialize everything (i.e. thread A can't run while B is running, thread B can't run while A is running).
Such a simple concept ended up being more complex than we'd want to because of the signal/slot system Qt was using to communicate between threads; which could easily end up in either Deadlock or not serializing the threads as intended. But ultimately all the code is trying to do is to simply have A -> B -> A -> B executing as if it were just one thread.

@iche033 this turns out to be a bit trickier.
macOS
Applying just the OpenGL shared context change 79be9e99 to the OSRF ogre2.1 version is not enough. The simple_demo_qml example will build, however there is a segfault deep within some of the Ogre OpenGL buffer management code. It's not clear to me which of the changes over the last three years on the v2.1 branch resolves this.
linux
On an Ubuntu 20.04 virtual machine the simple_demo_qml example does run correctly when linked against the OSRF distributed Ogre2.1 libraries. There are a number of additional settings required to get OpenGL hardware acceleration working with a macOS host, but it does work. I have not tested on a machine running Ubuntu natively.
Proposal
In order to move this along I suggest the following:

[x] Rebase the PR to link to this version of Ogre2.1 b4c4fa78, so there are no changes required upstream for linux, and the demo will build on macOS (but not run correctly).
[x] Remove all extraneous changes to other examples.
[ ] Squash all the commits and tidy up the commit message [optional - but let me know if required]
[ ] Complete the review and merge the PR

Then as a follow up we can deal with macOS. I suspect to support Ignition Edifice GUI apps on macOS we'll need to incorporate many of the changes on the ogre-next v2-1 branch (up to v2-1-2). @darksylinc may be able to advise if a smaller subset of changes will suffice - I'm not sure where to begin!
I don't think there is an advantage in releasing a new version of ogre2.1 on homebrew unless all the GUI functionality is available.

hi, thanks for looking into it. It does look like there have been quite a few changes to the osx render system since 2018:
https://github.com/OGRECave/ogre-next/commits/v2-1/RenderSystems/GL3Plus/src/windowing/OSX. I noticed one of these commits also include API deprecation / change, e.g. copyContentsToMemory, so ideally we'll just need to apply a minimal subset that's sufficient to make our 2.1 version work on macOS.

Squash all the commits and tidy up the commit message [optional - but let me know if required]

yeah it's optional. We'll typically squash the commits when merging this PR.
Agree to get this PR in first then follow-up on macOS afterwards. I'll continue reviewing this PR as is to make sure it works on linux,

Did some quick tests. The example built fine but ran into a segfault on launch. I see these error msgs in the console:
QObject::moveToThread: Current thread (0x5594874796b0) is not the object's thread (0x5594871ef5c0).
Cannot move to target thread (0x55948734d5d0)

Cannot make QOpenGLContext current in a different thread
Aborted (core dumped)

backtrace points to this line:
https://github.com/ignitionrobotics/ign-rendering/blob/96d2444a3df28cb8655d823bb8c581e2cf77a84d/examples/simple_demo_qml/ThreadRenderer.cpp#L224
I'm on Ubuntu Bionic, Qt 5.9.5

Did some quick tests. The example built fine but ran into a segfault on launch.

Ah yes, the current version needs the Qt Quick Scene Graph to use the basic render loop:
export QSG_RENDER_LOOP=basic

should get it working, but I think a better approach is needed.

ah yes thanks, that worked! I should've read your earlier comment about the env variable. I think this may not be obvious to the user. We could either add a README.md file with instructions on how to run the demo. Alternatively, just set the env for them with this patch:
diff --git a/examples/simple_demo_qml/Main.cpp b/examples/simple_demo_qml/Main.cpp
index c749f2c9..120bb0b0 100644
--- a/examples/simple_demo_qml/Main.cpp
+++ b/examples/simple_demo_qml/Main.cpp
@@ -28,6 +28,9 @@ int main(int _argc, char** _argv)
 {
     try
     {
+        // use single-threaded scene graph rendering
+        qputenv("QSG_RENDER_LOOP", "basic");
+
         // requested surface format
         QSurfaceFormat format = RenderThread::CreateSurfaceFormat();
         QSurfaceFormat::setDefaultFormat(format);

If you run clang format with this file I'm attaching it should be pretty close to gazebo's style.
clang-format.zip
Things it does not cover:

Naming conventions (e.g. function arguments start with _underscore)
Member variable accessing convention, i.e. all member variables must be accessed via via this, for example this->myVariable
Access declaration should be in the same line. Clang format will insist in the following:

public:
  int myVariable;
  int myVariable2;

while gazebo enforces the following for each variable:
  public: int myVariable;
  public: int myVariable2;

Adding ////////////////////////////////////////////////// between every function.
Space between C++ brackets. i.e. Gazebo wants int variable{5} clang-format will do: int variable{ 5 }

However it will enforce the 80 line columns, it will also enforce spaces between conditional control keyword, e.g. if (condition) and 2 space indentation

I'm also happy to do this in a separate PR afterwards if you don't mind me changing the coding style. We can also leave the style as is if you prefer.

Happy for you to reformat to match house style.

Alternatively, just set the env for them with this patch:

I like this, it keeps the env variable local and explains why it is there. I'd like to rework the initialisation in a follow up so its not needed - the same approach can then be used for the Scene3D plugins and sensor system that need similar changes to support macOS.

It does look like there have been quite a few changes to the osx render system since 2018:
https://github.com/OGRECave/ogre-next/commits/v2-1/RenderSystems/GL3Plus/src/windowing/OSX

I've been through these changes, cherry-picking them onto the OSRF ogre2.1 branch. AFAICT the change that fixes the segfault on macOS is not among these commits.
The next step to isolated the commit is a bisection of all the change to the v2.1 branch since the OSRF fork.

great, thanks for working through those commits.  I'll give your branch a try later this week / early next week.

the feature/v2-1-osrf-macos branch without the last commit worked for me locally (on ubuntu). I've updated the homebrew formula with a new patch: https://github.com/ignition-forks/ogre-2.1-release/compare/b4c4fa785c03c2d4ba2a1d28d94394c7ca000358..81632330e3ab041345c7fa1075022cf6af30c658
Now just waiting for new bottles to be built :crossed_fingers:

Now just waiting for new bottles to be built 🤞

Just updated brew, reinstalled ogre2.1 and rebuilt ign-rendering. This demo working as are my local changes to support ignition gazebo 👍

awesome, thanks for verifying that the bottle works! I'm going to merge this and will update the coding style in a separate pull request.

@ahcorde, just went through your comments, I think most of them have been addressed. Some style changes will come in follow-up PR.


[Feature Request] Permanent Link to Shelves, etc

I'm looking to integrate (by way of link to bookstackapp) with existing systems. However, I do not want to trust users to not accidentally or intentionally change shelf names, etc.
Thus, I really need a static / permanent link to a shelf, etc. I would attempt this modification myself, but I'm not a php guy. That said, with brief guidance, I'd be willing to take a shot at it (having plenty of web app/mysql/linux experience, I just prefer python+flask for my utility apps I build).

@ssddanbrown Do you have a preference on how you would like this to be done or should I just give it a shot and make a PR?

@joveice Pages already have permalink ability, using the URL format of /link/<page_id>.
I think we should kind of follow this as close of possible so:
/link/shelf/<id>
/link/book/<id>
/link/chapter/<id>

In terms of UI, I like to keep power-user features hidden by default if possible but I think it'll be more trouble than its worth jamming this into some existing UI element, So maybe just a Permalink link at the bottom of the details panel will suffice, For power-users to right-click > copy link on.
Back-end logic should just match pages, Will need tests to cover the functionality.

@ssddanbrown Okey, I will take a look on that. I think a button on the right side with "Copy permanent link" would be a good option (have it open a popup with the link to copy). This is close to what Confluence from Atlassian does which I find quite useful.
But then I would also suggest that we add this link to be used with the insert link in the WYSIWYG.

This is very important feature to implement.
Currently our users are very frustrated to link pages together, because any small change (fix typo in page name, move page, rename book or shelve) make links structure unstable and broken.
I prefer to primary create internal link (thants means for links inside one BookStack instance) with persistent IDs.
Alternative way is analogy to WordPress URL management which is very robust to standard user's flow:

every page is saved own slug on first publish of page,
slug is no changed when page is renamed,
user can manually change slug (it's explicitly action in UI, here user can be notified about side effect of slug modification),
page slug is globally unicate over whole WordPress instance,
URL part of parent segments (chapter, book, shelves) are only cosmetic, can be invalid or completely omitted, only page's slug is used to define specifics page – invalid parent segment are only rebuilded and redirected to preferred format to ensure right canonicalization.

This is fully compatible with the principles communicated by @ssddanbrown at: https://github.com/BookStackApp/BookStack/issues/2374#issuecomment-729661891

Also here to give my plus one for slug feature. We renamed a book and it broke the links.

commenting to add our desire for a permanent/hashed link feature.  We've been using Confluence for the past 10 years and are already starting to see issues linking between pages.  If a page title or book name is changed, everything falls apart.

I made the experience that the links are changed automatically if I rename a book or page.
Other than that there is a button in the settings regenerate the index if it is corrupt.

It's very needed thing. May be better to create an option what use in URI. And alternative way is to copy URI from a button on top of each page.
But for us is better a permanent link because we can often rename an article.

One of the most organic ways to implement this is to have a system of "old link redirects". The way it works is:

System allows the URL of the resource (shelf/book/page) to be changed at any time, either by user, or - as it currently is - automatically by the app when title changes.
When the URL is changed, an entry is added to "redirects" database including the old and the new URL and a timestamp.
When a user visits a URL, the app first checks if there is a currently active content on that URL (as it does now). If it is not, the app loks into "redirects" database and if it find the URL in it, it 301 redirects the user to the new URL.

Current content always has precedense over historic URLs, so the system doesn't prevent new content to reuse retired URLs, while organicly keeping as many old URLs alive as possible. 301 redirects ensures search engines update content to new URLs.


chg: :pushpin: use pip-tools and setup.py to pin all dependencies

Use pip-tools and setup.py to pin all dependencies
Description
Remove requirements.dev.txt and use setup.py
Use pip-tools to compile requirements.txt from setup.py, pinning dependencies
Related Issue
#23
Motivation and Context
Simplify installing dependencies and pin them to specific versions for security reasons.
Types of changes

[x] Docs change / refactoring / dependency upgrade
[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[x] All new and existing tests passed.

@fakela can you review the changes in the README only for this PR please?

@ianardee unless you are waiting for other reviewers, you can merge it. @fakela should review the whole README anyway, not just your changes.


SSL Cert Verification issue with global CA_Path

Connection to endpoints whose SSL certificate's CA'a are not part of the grid-security certs, but rather the standard CA's fail if something like a wildcard setting:
locplugin.*.ca_path: /etc/grid-security/certificates/

is used. For instance, AWS servers will fail to verify as it only checks for CA's in the path given, not the standard ones with error:
Failed to establish a connection.SSL validation failed for https://... [Errno 21] Is a directory

Added second connection try for WebDAV and S3 endpoints (Azure does not need it) which tries the standard CA's in case the given ca_path fails. If it fails again, then an error is raised.
This fix is available on "dev" branch as 0.10.2

Issue resolved and merged into master.


Uncaught Error: channel closed

[Enter steps to reproduce below:]

...
...

Atom Version: 1.2.4
System: Microsoft Windows 10 Home Single Language
Thrown From: atom-jshint package, v2.0.0
Stack Trace
Uncaught Error: channel closed
At events.js:141

Error: channel closed
    at ChildProcess.target.send (internal/child_process.js:509:16)
    at AtomJsHint.module.exports.AtomJsHint.run (C:\Users\WittyParrot\.atom\packages\atom-jshint\lib\atom-jshint.js:105:21)
    at AtomJsHint.<anonymous> (C:\Users\WittyParrot\.atom\packages\atom-jshint\lib\atom-jshint.js:66:16)
    at Emitter.module.exports.Emitter.emit (C:\Users\WittyParrot\AppData\Local\atom\app-1.2.4\resources\app.asar\node_modules\event-kit\lib\emitter.js:86:11)
    at C:\Users\WittyParrot\AppData\Local\atom\app-1.2.4\resources\app.asar\node_modules\text-buffer\lib\text-buffer.js:1276:25

Commands
     -2:44.8.0 core:paste (atom-text-editor.editor.is-focused)
  2x -2:44.4.0 core:save (atom-text-editor.editor.is-focused)
     -2:36.3.0 core:copy (atom-text-editor.editor.is-focused)
     -2:34.6.0 core:paste (atom-text-editor.editor.is-focused)
  4x -2:27.4.0 core:save (atom-text-editor.editor.is-focused.autocomplete-active)
     -1:37.7.0 find-and-replace:show (atom-text-editor.editor.is-focused)
     -1:10.5.0 editor:newline (atom-text-editor.editor.is-focused)
  3x -1:05.7.0 core:move-left (atom-text-editor.editor.is-focused)
  7x -0:59.1.0 core:backspace (atom-text-editor.editor.is-focused)
  7x -0:46.6.0 core:save (atom-text-editor.editor.is-focused)
     -0:30 core:paste (atom-text-editor.editor.is-focused)
     -0:27.1.0 core:copy (atom-text-editor.editor.is-focused)
     -0:25.5.0 core:paste (atom-text-editor.editor.is-focused)
     -0:17.7.0 core:move-left (atom-text-editor.editor.is-focused)
  3x -0:13.8.0 core:save (atom-text-editor.editor.is-focused)
     -0:03.2.0 editor:newline (atom-text-editor.editor.is-focused)

Config
{
  "core": {
    "themes": [
      "atom-dark-ui",
      "solarized-dark-syntax"
    ]
  }
}

Installed Packages
# User
atom-jshint, v2.0.0
git-merge-conflicts, v0.0.2
pigments, v0.19.1

# Dev
No dev packages

+1

+1

I will become crazy!!

Seeing this all of a sudden. Running atom 1.3.3 on OSX Yosemite. The plugin version I'm running is 2.0.0.

You should just use linter-jshint since this project is not maintained anymore.


Jx3 unable to create repo on gitlab using go-scm

@jstrachan and the team of jx3 have finished migration of jx promote and jx project last week using go-scm for all git repository operations. But when I used the lasted jx-cli to run jx project quickstart --git-user myusername --git-token mytoken --git-kind gitlab --pr-poll-timeout 30m0s, it failed with this error message error: failed to create git repository myusername/projectname: json: cannot unmarshal array into Go value of type gitlab.gl_namespace. It seemed like it's not able to create repo on gitlab.
I also have encountered this error: error: failed to validate options: failed to create ScmClient: failed to find git token: could not find git token for git server mygitlaburl when I randomly tried jx project spring --git-kind gitlab.
What could be the cause of this behaviour?
I would be very grateful if anyone can take a look at this issue.

@pow-devops2020 I just made a PR that allowed me to jx import a project, https://github.com/jenkins-x/go-scm/pull/190 maybe once merged you can test again


Support for composite forms

feature request: Support for composite forms
What is the expected behavior?
Allow building of composite forms using material components.
What is the current behavior?
The controls won't pick up the correct parent form when in a composite form so their errors won't be shown according to the error state matcher. There are also no hooks for listening for blur on controls like select so we can propagate the touch event.
What are the steps to reproduce?
https://stackblitz.com/edit/angular-material2-issue-3vwszx
In the above stackbliz, is an example using just 2 inputs for first name, last name. In my use case there would be more than just 2 inputs but it demonstrates the issue. On the composite form when submit is clicked, the error messages are not shown. On the inline form when submit is clicked, the error messages correctly display.
What is the use-case or motivation for changing an existing behavior?
Being able to group many different controls under one composite control so it can be easily reused inside of a reactive or template driven form.
Is there anything else we should know?
Using the principles explained in the angular connect talk here https://www.youtube.com/watch?v=CD_t3m2WMM8&feature=youtu.be&t=1645

First i try to help, but no i'm lost... and i have questions !

Your mat-error has no condition *ngIf but it's working good on min length, how ?
Your formGroup with formControl has no Validators.minLength() or Validators.required() but formOne respect both of conditions. How ? It's not coded like that in the documentation, so i don't understand how it works :octopus:

mat-error is automatically hidden, if there's no error and automatically displayed if there's at least 1 error.
required is a bit counterintuitive when using Angular Material + Reactive Forms. If you set Validators.required the asterisk won't get appended to the label and placeholder. For this to work, you must add required to the input. Of course you can simply set both.
And the Reactive Form will just use the required attribute. Seems like it doesn't care if you use Validators.required or required attribute. Both seem to work fine.
I've just forked @scottshidlovsky's example and added Validators.required and some *ngIf.
firstName: ngIf hasError('required')
lastName: ngIf touched && hasError('required')
https://stackblitz.com/edit/angular-material2-issue-9udy8e?file=app%2Fname-field.component.html
As you can see the HAS ERROR output for firstName is always shown, but for lastName it won't show until you manually touched the input.
Conclusion: I guess that something doesn't get propagated when clicking the submit button. The mat-input-invalid and mat-form-field-invalid CSS classes won't get set on submit.

Thanks @benneq ! I can clean my code knowing this...

This might not be a material issue, but a general Angular problem.
However, the  should take a boolean 'formSubmitted'.
That form submitted state could come from an @Input(), that was passed to the nested component.
See stackblitz for a working example not using material

@dagerber  I've run into this issue with creating a dynamic form based loosely off the guide from Angular and have found that the inputs are not updating to their error state unless touched.
Does your approach work for dynamic form designs too?

I am also interested in this. Any news or some other way to do it?

I'm also troubled by this. Currently this is blocking me from creating nested forms. Does anyone have any workaround for submit propagation?

@jsonod You can still create nested forms, but Validation will be done in the parent component using a FormBuilder. This question on S.O shows how I did it. Hope it helps.

Currently this is blocking me from creating nested forms

@jsonod I'm 3.5 years late to the party but if you use ControlValueAccessor everything should work just fine. Because it tends to be quite verbose we've developed ngx-sub-form at work and open sourced it if it's of any use.


Added google analytics tracking code

checking if this will authenticate with google analytics.
will change it to the .lol account once I get things working
as it may need something embedded in the page header.

Signed-off-by: Brent Salisbury<EMAIL_ADDRESS>

Closing and opening another PR. Used wrong email.


Add Unit Tests for the chart

Important: This PR is blocked by #59 and requires it.
This PR introduces the following changes:

Add "Unit test" phase on the chart:

Use the make goal unit-test for this
Implemented with https://github.com/rancher/helm-unittest, fixed version. It's a fork of a repository which does not have activity since 8 month, while rancher maintains their fork. I tried with https://github.com/xchapter7x/hcunit but it does not provide "test suite runner": you must script commands OR write a single big OPA rego files 😨

Update directory structure:

Former directory ".test/" (from #59) renamed to "./lint/" the unit tests MUST be inside the chart directory. For this reason, the test's documentation has been moved to the root of the repository
Unit tests are stored in the default path of helm-unittest, aka. ./traefik/tests, which is ignored when packaging the chart.

Removing support for Kubernetes cluster under 1.9.0:

The "if case" was failing all the unit tests systems
The other objects (service, CRD, etc.) are using features which won't work with Kubernetes 1.9.x. I felt this "if case" was a copy and paste from the Traefik v1 helm chart.
Helm v3 changes the ".Capabilities" object structure: this "if case" is not working with helm v3
Kubernetes 1.9 is not updated since februrary 2019 (ref. https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.9.md).

Thanks @SantoDE ! Link fixed.
Btw, #59 had been rebased to master, and this one as well. Don't forget to review #59 first :)


cert-manager challenge hangs at "Waiting for dns-01 challenge propagation: DNS record.."

Issue:
Cert manager challenge hangs with following message.
"Waiting for dns-01 challenge propagation: DNS record for "skgtestk8s.com" not yet propagated"
kubectl get challenge
-------------------------
Status:
  Presented:   true
  Processing:  true
  Reason:      Waiting for dns-01 challenge propagation: DNS record for "skgtestk8s.com" not yet propagated
  State:       pending
Events:
  Type    Reason     Age   From          Message
  ----    ------     ----  ----          -------
  Normal  Started    46m   cert-manager  Challenge scheduled for processing
  Normal  Presented  46m   cert-manager  Presented challenge using dns-01 challenge mechanism

Expected behavior:
Certificate to be issued by letsencrypt-staging
**Other details
i can see TXT record created for  _acme-challenge.skgtestk8s.com in google CloudDNS
Steps to reproduce the bug:
Create issuer and certificate using following yaml files for kubernetes
--Issuer
apiVersion: cert-manager.io/v1alpha3
kind: Issuer
metadata:
  name: letsencrypt-staging
spec:
  acme:
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    email<EMAIL_ADDRESS>    privateKeySecretRef:
      name: letsencrypt-staging
    solvers:
     - dns01:
        clouddns:
          project: white-ci-273105
          serviceAccountSecretRef:
            name: clouddns-dns01-solver-svc-acct
            key: key.json

--certificate
apiVersion: cert-manager.io/v1alpha3
kind: Certificate
metadata:
  name: test
  namespace: default
spec:
  secretName: test-tls
  issuerRef:
    name: letsencrypt-staging
  dnsNames:
  - www.skgtestk8s.com

Environment details::

Kubernetes version: v1.16.13-gke.1
Cloud-provider/provisioner:  GKE
cert-manager version: v0.16.1
Install method (e.g. helm or static manifests):

helm3 install cert-manager --namespace cert-manager --version v0.16.1 jetstack/cert-manager --set installCRDs=true --set 'extraArgs={--dns01-recursive-nameservers=<IP_ADDRESS>:53,<IP_ADDRESS>:53,ns-cloud-a1.googledomains.com:53}'
/kind bug

can you see the TXT record on  _acme-challenge.skgtestk8s.com from your local machine?
/triage support

Thanks! meyskens.
Yes I see the records in CloudDNS. Please see screenshot below

Thanks, all. i have resolved the issue
Please follow the link below
https://community.letsencrypt.org/t/cert-manager-challenge-hangs-at-waiting-for-dns-01-challenge-propagation-dns-record/131352/2


Add "list" property to now.json

For passing flags to the list command that gets executed on the server

-1

@rauchg Then we at least need a now flag for --single 😛

I think it's ok for people to use list in package.json start for advanced scenarios, such as passwords. We should document it.
I don't want to make anything about static file serving specific to a specific module like list. list is simply our suggestion. Configuration also only gets you so far. Then people will want the password to only apply to a certain sub-directory… custom servers and code is the real solution.

@rauchg I completely with agree with what you've just said. But serving single page applications is NOT an advanced scenario, if you ask me. It's basically what the majority of users are using the static feature of now for.
Like I said, that's completely fine for advanced scenarios. But really, we cannot ask people to throw a new package.json into their ./dist dir each time they made changes and want to deploy them.

or WE will have to write a package that automates this.

👌
Build in build, then list ./dist -s in start.


Switch controller support for Android (hid-nintendo)

Getting a merge conflict for this so I copy-pasted the mapping into dev manually - https://github.com/JujuAdams/Input/commit/3a44914c69408cf32dd294de8dd9fe76baf756cb


Can't run ce-api in docker with current package.json

Running docker-compose build and docker-compose up results in the following error:
api_1    | internal/modules/cjs/loader.js:582
api_1    |     throw err;
api_1    |     ^
api_1    |
api_1    | Error: Cannot find module 'babel-runtime/helpers/objectWithoutProperties'
api_1    |     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:580:15)
api_1    |     at Function.Module._load (internal/modules/cjs/loader.js:506:25)
api_1    |     at Module.require (internal/modules/cjs/loader.js:636:17)
api_1    |     at require (internal/modules/cjs/helpers.js:20:18)
api_1    |     at Object.<anonymous> (/app/node_modules/neo4j-graphql-js/dist/index.js:8:33)
api_1    |     at Module._compile (internal/modules/cjs/loader.js:688:30)
api_1    |     at Module._compile (/app/node_modules/pirates/lib/index.js:99:24)
api_1    |     at Module._extensions..js (internal/modules/cjs/loader.js:699:10)
api_1    |     at Object.newLoader [as .js] (/app/node_modules/pirates/lib/index.js:104:7)
api_1    |     at Module.load (internal/modules/cjs/loader.js:598:32)
api_1    | [nodemon] app crashed - waiting for file changes before starting...

I can fix this by also copying package-lock.json into the image at this point:
https://github.com/trompamusic/ce-api/blob/e2405618acb0c796b8b87b8d08d9b689cade3f08/Dockerfile#L6
before running npm install. It looks like there are some packages missing in package.json that still exist in the lock file. I'm not sure what the best way of re-synchronising these files are.

@alastair has this been fixed for you in the latest release?

Yes, I tested it again and it seems to work for me.


ui-sref, html5mode, angular 1.4.4, IE9 issue

When I use ui-sref and html5mode, it does not correctly add in the hash, so the href is /join instead of /#/join.
It does appear to "try" to redirect to the correct page for the state, as my join page flashes up for a second, but it never actually changes the url, so it appears to redirect back to the root /.
Help?

When I use ui-sref and html5mode, it does not correctly add in the hash

.
:wink:
Do you mean when you turn HTML5-mode off?

@nateabele no I meant what I said.
I set html5Mode(true). I'm talking about the fallback for IE9. It doesn't work.

Oh, wow, I completely forgot that was a thing. Honestly I'm really not sure. Most of the hashbang/HTML5 logic is handled internally by $location.

Well all I know if our original app using angular 1.2.28 and the normal ngRoute worked as expected. If ui-sref correctly calculated the href with the # in it, it would work.

I just confirmed it's still an issue when using Angular 1.2.28. isHtml5 seems to be logging as true for IE9, and it should not be, as it is supposed to fall back, right?

isHtml5 is set based on the value of $locationProvider.html5Mode(), which seems like it only returns whether you've enabled HTML5-mode in your app, not actually whether or not it's active.
Unfortunately it doesn't look like the $location service exposes anything to even tell you whether you're in fallback mode, and worse yet, it appears to violate CQRS: you can't ask it to generate a URL, you can only ask it to update the URL in the browser.
I'm kind of at a loss as to how to move this forward. We might have to kick it up to the Angular team.
@christopherthielen @eddiemonge @wesleycho Can you guys think of anything I'm not thinking of here?

Yeah, this probably requires a hook from $locationProvider - maybe having Angular expose a private variable like $$html5 that is set to a boolean depending on the browser & html5Mode?

Could perhaps do a check for window.history.pushState?

That's a pretty big worst-practice in Angular land since it's untestable.

Not only that, but it is sure to cause other defects if we were to monkeypatch that method since it is guaranteed to cause unexpected behavior.

It's a better solution than using the wrong hrefs though

No it isn't, it would cause huge regressions.

I don't see this being the huge deal you guys are making it out to be, but I'll take your word for it.

I guess that's a matter of perspectives: you have to deal with your use cases; we have to deal with everyone's. And, frankly, this is the first time this has ever come up.

Well most people probably don't care about IE8 or IE9 or, for that matter, IE in general.

Actually, you'd be surprised. IE, and IE8 in particular, account for a nontrivial percentage of our bug reports.

It's a huge potential problem when talking about a library that is core to routing in many people's applications. Other people may be written code based around certain behavior with pushState, or even monkeypatched it themselves - this would be a breaking change of a bad nature for them.
Well-maintained libraries do their best to avoid changes of that nature if they can avoid it since libraries should be as flexible as possible.

I used $sniffer.history, but it's not really supposed to be used "for real" (This is an undocumented "private" service) https://github.com/angular/angular.js/blob/291d7c467fba51a9cb89cbeee62202d51fe64b09/src/ng/sniffer.js

Oh hey! Well that's better than nothing.

@wesleycho I understand the concern, and the desire for having the library be flexible, but I would expect ui-sref calculating urls to work correctly for all browsers.

Well yeah. We're not saying it's not a bug.

We agree it's a bug - the $sniffer approach sounds promising, and sounding likely html5Mode checking will be swapped out for it to fix this. If someone doesn't get to it by tonight, I can file a PR to fix this.

Awesome. Thanks for your help guys :smile:

I noticed that the release files are not updated with this fix, when might the next release be?

When all these are closed: https://github.com/angular-ui/ui-router/milestones/0.2.16


fix dangerous default arguments

[x] Closes #4002
[ ] Passes isort -rc . && black . && mypy . && flake8
[ ] Fully documented, including whats-new.rst for all changes and api.rst for new API

@keewis are there any other changes required?

Sorry for the delay @pnijhara ! Merging now.
Thanks again, we're happy to have you as a contributor!

Thank you!


document /format:xml parameter

This parameter was not documented at all. It can be important to retrieve important information about the workspaces that was not available in the other /format parameter options.

@FlorisDevreese : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Introduce max_idle_time for HTTP1 connections

@keathley as we discussed yesterday on IRC, this PR adds an optional max_idle_time pool configuration. This change allows us to deal with misbehaving endpoints that do not close connections cleanly. Before this change, we were seeing {:error, %Mint.TransportError{reason: :closed}} when Finch attempted to reuse connections that had not been cleanly closed.
After this commit, the user can specify a max_idle_time in milliseconds and, when checking out an existing connection, the pool will verify that the current idle time is less than this specified time. If it is greater, the pool will close the Mint connection and remove the worker from the pool.
This change should be backwards compatible as the default max_idle_time is :infinity.
We weren't sure how to add ex_unit tests for this change, nor if this option should have any effect on the HTTP2 pool. However, we have verified that deploying this change into our QA environment does indeed solve the problem we were previously seeing.
We also tested the change locally via iptables. To induce this misbehavior, you can run any kind of simple HTTP server locally (let's suppose it's on port 4000) and use this type of iptables rule to drop FIN packets from that server, which simulates a remote endpoint that does not cleanly close connections, leaving a stale connection in the Finch pool.
iptables -A INPUT --protocol tcp --source-port 4000 --tcp-flags FIN FIN -j DROP

Steps to reproduce:

Run a test HTTP endpoint locally, and use iptables to block FIN packets from that server (see above)
Configure Finch with a pool size of 1 to guarantee we hit the stale connection in the next steps
Make one request to the test HTTP server through Finch
Wait 60+ seconds for the remote endpoint to time out the idle connection (you can verify a stream of FINs are attempted to be sent by the server via tcpdump, etc.)
Make a new request through the Finch pool. You will see {:error, %Mint.TransportError{reason: :closed}}.

Thanks!
Drew and Mike
Signed-off-by: Mike Pilat<EMAIL_ADDRESS>

Ah, makes sense. I’m happy to make the update.
On Thu, Oct 8, 2020 at 11:32 AM nico piderman<EMAIL_ADDRESS>wrote:

@sneako commented on this pull request.
In lib/finch/http1/conn.ex
https://github.com/keathley/finch/pull/92#discussion_r501855774:

@@ -61,6 +62,16 @@ defmodule Finch.Conn do
def open?(%{mint: nil}), do: false
def open?(%{mint: mint}), do: HTTP1.open?(mint)

def idle_time(conn, unit \ :native) do
idle_time = System.monotonic_time() - conn.last_checkin

System.convert_time_unit(idle_time, :native, unit)
end

def reusable?(conn) do

I'm sure that it works, but I was thinking of it more as a minor
optimization, to skip the work done in idle_time/2
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/keathley/finch/pull/92#discussion_r501855774, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAA3UEC7UEUZDAHRELEH7LSJXSP7ANCNFSM4SI6UMKQ
.

Just a quick check in that we've been using this in our QA environment for the past few days and it has worked great. Please let me know if there's more needed before merging @keathley.

@drewolson Sounds good. I'm taking a look over it now. I suspect we'll be g2g but just want to confirm.

@drewolson Sounds good. I'm taking a look over it now. I suspect we'll be g2g but just want to confirm.

Just checking back in after the weekend. Apologies if I'm being too persistent here, but I would love to get this merged.

@drewolson Sorry for  the delay, this has been merged into main.

Thanks!


⚠ Digital Ocean - https://status.digitalocean.com/ has degraded performance

In 9419261, Digital Ocean - https://status.digitalocean.com/ (https://status.digitalocean.com/api/v2/status.json) experienced degraded performance:

HTTP code: 200
Response time: 63 ms

Resolved: Digital Ocean - https://status.digitalocean.com/ performance has improved in 6f28026.


Input 0 of layer denseC1 is incompatible with the layer: : expected min_ndim=2, found ndim=1.

I have been writing a simple ML model with tf keras and found an issue. I read the documentation and i know that dense layer needs a 2 dimensional input and it corresponds with the output dimension of  input layer but for some reasons it returns output in shape (x,). Could someone please help me?
This is the model
class Player:
def __init__(self, name, team, model):
    self.name = name
    self.hand = []
    self.team = team

    # model input is either the model or False
    if not model:
        self.inputs = tf.keras.Input(shape=(56,), name="input")
        self.model = self.build_model()

def build_model(self):
    color_branch = self.build_color_branch()
    number_branch = self.build_number_branch()

    model = tf.keras.models.Model(inputs=self.inputs,
                                  outputs=[number_branch, color_branch],
                                  name="kerasv1")
    return model

def build_color_branch(self):
    dense_1 = tf.keras.layers.Dense(100, activation='relu', name="denseC1")
    dense_2 = tf.keras.layers.Dense(50, name="denseC2")
    dense_3 = tf.keras.layers.Dense(30, name="denseC3")
    dense_4 = tf.keras.layers.Dense(4, name="denseC4")
    final = "softmax"

    x = dense_1(self.inputs)
    x = dense_2(x)
    x = dense_3(x)
    x = dense_4(x)
    x = Activation(final, name="color")(x)
    return x

def build_number_branch(self):
    dense_1 = tf.keras.layers.Dense(100, name="denseN1")
    dense_2 = tf.keras.layers.Dense(50, name="denseN2")
    dense_3 = tf.keras.layers.Dense(30, name="denseN3")
    dense_4 = tf.keras.layers.Dense(13, name="denseN4")
    final = "softmax"

    x = dense_1(self.inputs)
    x = dense_2(x)
    x = dense_3(x)
    x = dense_4(x)
    x = Activation(final, name="number")(x)
    return x

and when i run
player.model(np.array([ 0 for _ in range(56)])
it gives the error
ValueError: Input 0 of layer denseC1 is incompatible with the layer: : expected min_ndim=2, found ndim=1. Full shape received: (56,)

@WilczekxxD , im facing the same issue, could you please provide the code which fixed yours.
Thank you in advance.
this is the model:
       inputs = Input(shape=(col,)) # input tensor, col=126         hidden1 = Dense(units=50)(inputs) # hidden layer 1         hidden2 = Dense(units=50)(hidden1) # hidden layer 2         outputs = Dense(self._action_size, activation='softmax')(hidden2)           model = Model(inputs, outputs)         model.compile(loss='categorical_crossentropy', optimizer=self._optimizer,metrics=['accuracy'])         return model
the error occurs here:
q_values = self.q_network.predict(state)

@AdityaKane2001 how to batch the inputs please?

@fatenlouati Here is a simple example that gets past this error, I'm using TF 2.6.0 if that matters:
# model_inherit.py

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '1'
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

BATCH_SIZE = 64

class MNIST(keras.Model):
    def __init__(self):
        super().__init__()
        self.dense1 = layers.Dense(64, input_shape=(BATCH_SIZE, 784), activation='relu')
        self.dense2 = layers.Dense(10, activation='softmax')
    # end function

    def call(self, inputs):
        x = self.dense1(inputs)
        x = self.dense2(x)
        return x
    # end function
# end class

def main():
    model = MNIST()
    model.build((BATCH_SIZE, 784))
    model.summary()

    (x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()

    x_train = x_train.reshape(60000, 784).astype(np.float32) / 255.0
    x_test = x_test.reshape(10000, 784).astype(np.float32) / 255.0

    model.compile(
        loss=keras.losses.SparseCategoricalCrossentropy(),
        optimizer=keras.optimizers.Adam(),
        metrics=["accuracy"],
    )

    model.fit(x_train, y_train, batch_size=BATCH_SIZE, epochs=2, validation_split=0.2)

    test_scores = model.evaluate(x_test, y_test, verbose=2)

    print("Test loss:", test_scores[0])
    print("Test accuracy:", test_scores[1])
# end function

if __name__ == '__main__':
    main()

For the initial Player class:
Before:
player.model(np.array([ 0 for _ in range(56)]))
After (using numpy to reshape the input):
input_data = np.array([0 for _ in range(56)])
batched_input = input_data.reshape(1, -1)
player.model(batched_input)
For fatenlouati's model:
Before:
q_values = self.q_network.predict(state)
Assuming state is a numpy array with shape (126,):
After:
batched_state = state.reshape(1, -1)
q_values = self.q_network.predict(batched_state)
cdahms123's Solution: cdahms123 provided a more detailed example using the MNIST dataset, showing how to batch the input data properly. Their model expects input data in the shape (BATCH_SIZE, 784), and they correctly reshape the dataset to fit this shape.
Always ensure that your input data shape matches what the model expects. In the case of models expecting batches, even if you're predicting for a single sample, reshape the data to have a batch dimension.


Please make RobotiumUtils.TIMEOUT public

From sschuberth on November 23, 2012 04:02:29
What steps will reproduce the problem? 1. Override one of the waitFor* methods to add some default value for an argument that comes after the "timeout" argument.
2. The overriding method should not change the default "timeout".
3. Note that there current is no way to get the default timeout Robotium uses.
In such cases it would be nice to be able to just refer to RobotiumUtils.TIMEOUT.
Original issue: http://code.google.com/p/robotium/issues/detail?id=358

From sschuberth on November 23, 2012 04:21:18
I just noticed the timeouts are not defined in RobotiumUtils for a long time, but in Solo.TIMEOUT and Solo.SMALL_TIMEOUT.

From<EMAIL_ADDRESS>on November 23, 2012 04:54:39
Thanks for this. It will be included in the next release.
Status: Accepted
Owner<EMAIL_ADDRESS>

From<EMAIL_ADDRESS>on February 26, 2013 22:22:53
This has been included in Robotium 4.0.
Status: Verified


Not able to switch to google maps .

Right now I am using openstreetmap but I want to switch to google maps.
I am able to create and edited points/polygons with osm but I want to switch to Google maps. here is the plunker

Uhh are you sure you're in the right place?
Sounds like you need to look at https://github.com/shramov/leaflet-plugins


For restarting, use existing solution as initial values

It would make more sense to treat restarting as an alternative initial values function, similar to what I've done with deal.II/peclet.

Furthermore, we should handle a fenics.Function as the initial values rather than always having to point to restart files on disk.


new test to make sure apoc always loads when using NEO4J_PLUGINS

can't run this test on un-released neo4js.


[vue3.x] Typescript Errors

Describe the bug
Multiple Typescript errors show up upon running type checking tool: vue-tsc.
Implement the component, install vue-tsc, vite and this package's peer dependency vue-class-component all of Vue 3 compatible versions, and then run yarn vue-tsc --noEmit in the terminal.
Additional context (yarn vue-tsc --noEmit Printout)
node_modules/vite/client.d.ts:89:18 - error TS2300: Duplicate identifier 'css'.

89   export default css
                    ~~~

  node_modules/vue-slider-component/typings/typings/global.d.ts:22:18
    22   export default content
                        ~~~~~~~
    'css' was also declared here.

node_modules/vue-slider-component/typings/typings/global.d.ts:8:36 - error TS2709: Cannot use namespace 'Vue' as a type.

8     interface ElementClass extends Vue {}
                                     ~~~

node_modules/vue-slider-component/typings/typings/global.d.ts:22:3 - error TS2666: Exports and export assignments are not permitted in module augmentations.

22   export default content
     ~~~~~~

node_modules/vue-slider-component/typings/typings/global.d.ts:22:18 - error TS2300: Duplicate identifier 'css'.

22   export default content
                    ~~~~~~~

  node_modules/vite/client.d.ts:89:18
    89   export default css
                        ~~~
    'css' was also declared here.

OS & Version: macOS Big Sur Version 11.5 Beta (20G5023d)
Vue version: 3.1.0-beta.7
Component Version: 4.0.0-beta.3

My package.json
    "dependencies": {
        "axios": "0.21.1",
        "markdown-it-link-attributes": "3.0.0",
        "vue": "3.1.0-beta.7",
        "vue-axios": "3.2.4",
        "vue-class-component": "8.0.0-rc.1",
        "vue-i18n": "9.2.0-alpha.3",
        "vue-meta": "3.0.0-alpha.7",
        "vue-router": "4.0.8",
        "vue-slider-component": "4.0.0-beta.3",
        "vue3-markdown-it": "1.0.8",
        "vuex": "4.0.1"
    },
    "devDependencies": {
        "@intlify/vite-plugin-vue-i18n": "2.1.2",
        "@octokit/types": "6.16.2",
        "@types/markdown-it-link-attributes": "3.0.1",
        "@vitejs/plugin-legacy": "1.4.1",
        "@vitejs/plugin-vue": "1.2.3",
        "@vue/compiler-sfc": "3.1.0-beta.7",
        "pre-commit": "1.2.2",
        "prettier": "2.3.0",
        "sass": "1.34.1",
        "typescript": "4.4.0-dev.20210602",
        "vite": "2.3.6",
        "vite-plugin-package-version": "1.0.2",
        "vue-tsc": "0.1.7"
    },

I am not that familiar with implementing d.ts, and I'm quite occupied these days. So, if anyone wants to take on this project, please feel free to do so!

Did you manage to fix this somehow, @Penguinlay ? I'm facing the same issues.

Did you manage to fix this somehow, @Penguinlay ? I'm facing the same issues.

Hey, unfortunately, not yet.

"vue-slider-component": "^4.1.0-beta.1"
The error is still here

@vovaleontiev Try to ignore duplicate type definitions in tsconfig.json.

"compilerOptions": {
    "skipLibCheck": true,
    // ..
  }

I added this to my tsconfig file. And it helped me 👍


Warning about header

My project often shows the error, No such module Heimdall . It will be gone once I clean the project. How can I solve this problem permanently?

There is nothing I can do to help, I can't replicate this behavior with the example application or any of my own applications that use Heimdall. Closing this issue.


Unify 'help' and 'version' commands

closes #259

I think -help works right now. Adding support for -version may make dangerous precedence and we will need to add single-hypen version to all option so I am leaning towards not adding support for -version. @alexarchambault what do you think?

I think -help works right now. Adding support for -version may make dangerous precedence and we will need to add single-hypen version to all option so I am leaning towards not adding support for -version. @alexarchambault what do you think?

I don't really mind… It could be added if we supported --version already, which we don't (only scala-cli version).

This is quite interesting, because we support single-hyphen commands only in order to keep compatibility with scalac command. But if we added -version it would probably return scala-cli's version, not the underlying scalac's


Cannot find module 'bluebird'

I get the following error if I compile my project with tsc:
node_modules/cxml/dist/xml/Parser.d.ts(2,26): error TS2307: Cannot find module 'bluebird'.

Sorry about the delay! This should be already fixed in 0.1.1 if you update to TypeScript 2, which has better dependency handling for required npm packages.


have CreatePatch return a properly formed patch

Closes issue #138

this PR was created to address #158 , but when rebasing to recent release/v0.3 branch I realized that this part of the code changed in the meantime (possibly to address the same issue as #158 ?)


[CLI] - Set package.json name to the name the user entered for the project

Solves the issue #84

Thanks Mahesh! Looks good!
A few comments from me and I've asked our engineer @joaquim-verges to take a look too

Thanks for the PR! Please add a changeset (using yarn changeset) that briefly describes what these changes mean to a user.
In this case it can probably be a patch version change.


Update bpf.rst

Hello there!
I'm opening this PR to fix a non-working repo on the documentation here  related to the LLVM section:
# git clone https://git.llvm.org/git/llvm.git
Cloning into 'llvm'...
fatal: repository 'https://git.llvm.org/git/llvm.git/' not found

If the repo is the correct one i think we should fix it also for all other branches 1.9,1.7,stable and so on
Have a great day

@fnzv thanks for the changes, can you sign-off your commit please? Thank you

@fnzv thanks for the changes, can you sign-off your commit please? Thank you

Hi @aanm
Seems like i cannot clean the first commit in order to add the signature, i'm going to close this PR and open a clean one with the signature

Hi @aanm
Seems like i cannot clean the first commit in order to add the signature, i'm going to close this PR and open a clean one with the signature

@fnzv git commit -s --amend && git push -f should do the job.


[5.1] Return numeric from query builder sum

The sum function in the Query Builder should return a numeric value.
That is how it is on 5.4.
And that is how it used to be on 5.1 before it was changed (and changed back, incorrectly)
This is related to issues #14793, and #14994

I'm really not comfortable changing this on the LTS release. Even if the behavior is kinda wonky it is what apps are depending on now and have possibly coded around.

Ok, but it already changed once (breaking things on our site) so I thought it would be a good opportunity to change it back. That's fine though.

@taylorotwell It looks like the functionality of this method was broken when it was changed on #14793 and then reverted on #14994. Original functionality before the change and revert would at least return a 0 if the result was null, but now it just returns null.
Wouldn't this signify the behavior was broken and is now a bug? Even if we don't use the numericAggregate function we should at least check the results and return 0 if the value is falsy.


Cargo looks for manifest in parent dirs even if one exists, even with --manifest-path

Problem
I have a project with nested, non-workspace cargo projects. It's a niche but real use case.
I found that if the parent project has a broken manifest, the child project cannot be built, even if its manifest is completely valid. Here's an example project, the child is in testbins/does-build.
does-build • cargo build
error: failed to parse manifest at `/home/jason/Code/test-binary/Cargo.toml`

Caused by:
  can't find `test_it_builds` bin at `src/bin/test_it_builds.rs` or `src/bin/test_it_builds/main.rs`. Please specify bin.path if you want to use a non-default path.

Note that the error is in the parent project. The child project is fine. It's the same if I use --manifest-path ./Cargo.toml.
Steps

Clone linked project.
Change directory to testbins/does-build.
cargo build --manifest-path ./Cargo.toml.

Possible Solution(s)
It all works, and crucially, builds the child project but not the parent, if the parent manifest is fixed.
Notes
Seems related: https://github.com/rust-lang/cargo/issues/7871
The docs say:

Path to the Cargo.toml file. By default, Cargo searches for the Cargo.toml file in the current directory or any parent directory.

I would expect that by default it stops when it finds one, but that's not explicitly stated. However, the behaviour with --manifest-path seems very unexpected.
Version
cargo 1.62.0 (a748cf5a3 2022-06-08)`

The thing that trips me up about this documentation

Path to the Cargo.toml file. By default, Cargo searches for the Cargo.toml file in the current directory or any parent directory.

(which is on every instance of --manifest-path in the cargo reference to the best of my knowledge) is that it says that Cargo searches for "the Cargo.toml file" (i.e. one file) "in the current directory" (so preferring a local file over one further up the directory hierarchy) "or any parent directory" ("or," not "and," i.e. "only if one wasn't found there.")
This supposedly documents the default behavior ("By default, ..."), but isn't true, as it definitely also looks at/for Cargo.toml files further up the directory tree despite there being one in the current directory, but what's even more confusing is that it still does this even when being given an explicit --manifest-path option, which you'd think would override whatever is done "[by] default."

Cargo needs to search for other Cargo.toml files to discover if it is part of a workspace. I don't think that is something that can be changed, but Cargo could provide more information in the error message. Also, the workspaces chapter could mention this behavior as well (the workspaces chapter needs a lot of expansion in general).

Cargo needs to search for other Cargo.toml files to discover if it is part of a workspace. I don't think that is something that can be changed,

I guess I see the point here, you have two mutually exclusive(?) options for when Cargo recurses upwards and finds an invalid manifest:

It interprets it as no manifest and keeps going; if it finds nothing else then the original child project is not in a workspace.
It interprets it as a manifest, but an invalid one. The child project IS (possibly) in a workspace, but can't be built.

1 would be surprising if it was actually a workspace child. 2 is surprising when it's not. Since it is far, far more likely to be a workspace project than my niche thing (actually a workaround for #1982) then I see why you'd have it that way, even with the --manifest-path option (how else would Cargo know that the --manifest-path's project is part of a workspace?).
Nonetheless, there seems to be no way to explicitly inform Cargo that you actually know this is a top-level ie. not-a-workspace project. This is close to what is being asked for in #7871, but that seems to be asking for a CLI flag, which cannot be committed to version control in the manifest itself.

Nonetheless, there seems to be no way to explicitly inform Cargo that you actually know this is a top-level ie. not-a-workspace project.

You could always workaround this by putting
[workspace]

In your Cargo.toml.

@epage - you mean, literally the empty section [workspace]?

Yes, putting [workspace] in a manifest marks it as the root package. This makes it so it won't search for another workspace root as the package is the root.

FYI I used this suggestion and it's worked perfectly for weeks. I'll close this because I don't actually think anything should be changed here, I just needed a way to achieve a niche goal, which I got.


Create class with custom name other than the type name

Instead of Create.Class() which create the class name automatically, I have implemented a method to allow custom the class name Create.Class("MyTestClass")

Why you need this, driver already have ability to create Class by Name without type ?

Hi GoorMoon,
I need to create different Class name with same properties. For instance, I can create Class  "201501Salary", "201502Salary" but all with same Salary class structures so that I can make the size of the class smaller. I am not aware how the Create Class by Name method create the Salary properties I want that's why I added this feature on top of it. Do you have better practice which we shall follow?
Cordially,
Goh

Thanks GoorMoon.


change first letter to uppercase and rename targets

Hi @Dev1an,
In my opinion, the A is a word in this "A*" context, as all the frameworks provided by Apple start with a capital letter, how about let's make it same with them?
So, In this PR,

Changed the project name in Xcode to AStar, like this

Set the minimum target version to 10.0 and align all the relevant settings consistently.

[x]  Project Setting

[x]  Target Setting

[x]  Build Settings

update the product name same as $(PROJECT_NAME).

Anyway, it's your baby, I totally respect your decision.
Have a good day. :smile:

Does the playground continue to work in your Xcode? My playground says: No such module 'AStar'

The tests also fail 😕.

I think you forgot to rename the project.

Ah no sorry I was doing something wrong... Forget what I said earlier.


First pass at changing factoryFor to use factoryFor().create()

Discussion: https://github.com/jasonmit/ember-i18n-cp-validations/issues/29
This will extend types, with the owner preserved, while still allowing us to access class properties.
Squash on merge.

@jasonmit this is a sleek approach but im not sure if its too much? To make the solution and code readability simpler, would it not be easier to just assume the no class returned from the factory carries over the owner and force inject it on create instead via owner.ownerInjection()?
May I'm just missing something here...
@rwjblue have you thought of polyfilling factoryFor to avoid this kind of problem?

Unsure what you mean by "assume the no class returned from the factory carries over the owner".

Any attempt to return the owner from the class would introduce an unnecessary extend which would defeat the new factoryFor API.

I think that we might not understand the new factory for. I've asked for help in slack and linked the original issue. Let's see what experts say is the right way of having the owner injected. I suspect that this might be because of the reopen.  Perhaps it should be a reopenClass

Should then, while we wait, revert the factoryFor PR as there is problems with anyone relying on the owner (i.e., inject.service)

Unsure what you mean by "assume the no class returned from the factory carries over the owner".

@jasonmit what I meant is that we just force inject the owner on create no matter what the situation is since we have access to the owner regardless. That should simplify the problem for now until we get a better alternative.
factoryFor('validator:presence').create(owner.ownerInjection(), options);

Same thing for the Messages class. Thoughts?

For the record, @rwjblue explained me the factoryFor thing in https://github.com/jamesarosen/ember-i18n/pull/431
Apparently it returns some sort of proxy that has a create method that already setups injections, so no need of returning the class.
Revert the change if you want, but I'm going to work on this in a moment. I want to create a failing test case first.

Im not at my computer right now so I will look into this more in a few hours. Im curious to see if the returned object from factoryFor is a proxy of the class. If so, the solution here is just
return owner.factoryFor ? owner.factoryFor(type) : owner_lookupFactory(type);

Will report back once I have some answers.

@jasonmit what I meant is that we just force inject the owner on create no matter what the situation is since we have access to the owner regardless. That should simplify the problem for now until we get a better alternative.

Unsure, but I'd say that mimics the behavior of the new API versus embracing the new API which could lead to other unknowns.

Im not at my computer right now so I will look into this more in a few hours. Im curious to see if the returned object from factoryFor is a proxy of the class. If so, the solution here is just

This will not work as the proxy throws by design: https://github.com/emberjs/rfcs/blob/master/text/0150-factory-for.md#detailed-design (See first bullet)

FWIW, I am working on a polyfill now to provide the new API to older Ember versions.  Hope to have it published later today...

https://github.com/rwjblue/ember-factory-for-polyfill should do the trick...

PR updated with @rwjblue's polyfill.  If everyone is in agreement on it I'll write some tests.

I'll keep working on this tonight, but I suspect that the polyfill doesn't support Ember < 2.3 yet (though I haven't tested).

@rwjblue yup, it looks like <= 2.0 is failing

FWIW LGTM

Build is failing for Ember <= 2.0. Looks like the polyfill isnt being injected at all.
cc @rwjblue

ZOMG, should be working now.  https://github.com/rwjblue/ember-getowner-polyfill/pull/18 + https://github.com/rwjblue/ember-factory-for-polyfill/compare/v1.0.2...v1.1.0.
We will need to bump to<EMAIL_ADDRESS>though.

WOOT! Awesome job @rwjblue.
@jasonmit can you update the dependencies in this PR? Can we remove ember-factory-for-polyfill or do we need them both?

Including only getowner polyfill should work, but I'd definitely appreciate testing. The coupling is somewhat complicated, and it's definitely possible that I've mucked something up.

@offirgolan PR ready.  Thanks.

Released in v3.2.3. Thank you everyone for helping out on this 😸 !


Signed-off-by: Rahul Ganesh<EMAIL_ADDRESS>

Corrected Contexts and logger
Issue #, if available:
Description of changes:
Testing (if applicable):
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

not needed anymore


added Transactions.

Now you can send an array, with multiple SQL commands, as a transaction.
A transaction is a single unit of work. If a transaction is successful, all data modifications made during the transaction are committed and become a permanent part of the database. If a transaction encounters errors and needs to be canceled or reversed, all data modifications are erased.

It does not pass the tests with node 8 and node 9 because as of version 8 of Mocha there is only support for node 10.12.0 or newer.
https://mochajs.org/#installation


Path 1

This pull request reduces the code in js/change_logos.js file and changes its syntax to ES6.

There's a reason all publicly-facing JS is ES5 (it's because support is meh (and the lowest common denominator is my phone with Android Firefox 42.0)) as well as a reason for things registering event handlers and being specified at the top, as opposed to the bottom (it's because (a) we live in a civilised society and (b) consistency).
As for that JS:

Formatting?
Shit I guess I forgot about reducing that to a modulo,
Semicolons?
It doesn't even work (at least IME, Firefox DevEd 56.0b12).

https://stackoverflow.com/questions/2451417/whats-pros-and-cons-putting-javascript-in-head-and-putting-just-before-the-bod
Javascript shouldn't be ever put in the documents head. It's a bad practice.

Formatting - 0 errors on ESLint
Semicolons are past
I've tested it on the same browser, meh


filter and options methods of Query object aren't correctly detected

Good Morning,
I was hoping my issue would be solved by #39 , sadly it isn't: you might want to have another look.
Describe the bug
Create a query using filter or options.
You will get
error: "filter" of "Query" does not return a value
or
error: "options" of "Query" does not return a value
Expected behavior
No mypy message.
To Reproduce
Not a complete example, but I guess it's clear:
session.query(User).filter(User.name == "John").options(joinedload(User.address)).all()

Versions.

OS:
Python: 3.8.6
SQLAlchemy: 1.4.9
Database:
DBAPI:

Have a nice day!
U2 :D

that would be this file which hasn't been worked on yet:
https://github.com/sqlalchemy/sqlalchemy2-stubs/blob/master/sqlalchemy-stubs/orm/query.pyi


Scheduler to optimistically use binding info

The scheduler binds a pod A to machine M.
Then it tries pod B to machine M.
In trying this second binding, it uses stale information about A, in particular, that it is not yet bound to a machine.
Sometime later, it "learns" about A being bound to M via watch.
It should assume all bindings it makes happen so as to avoid conflicts.
It will be very common for the scheduler to miss hostPort conflicts once I remove the check.
Also, spreading will work poorly.  It may put A and B on same machine.
(Note that optimism is bad for anti-conflicts, but we don't have those I think).

@lavalamp

I am working on this. Hope to have something out tomorrow.

+1 to this change.


Add failing test for getting successive balance updates from stream

Requires https://github.com/trustlines-protocol/relay/pull/577 to be fixed

Oops, idk why this test passes on circleci, probably timing luck, but it should fail most of the time. Investigating.

I confirm that the test is just flaky.


Vue Query Support

Hey, I'd like to ask if support for vue-query would be possible?
I've already seen the other request for Svelte (#186 )
Would also like to help with development. :)

Hey @psteinroe , started the integration here: https://github.com/cpannwitz/supabase-cache-helpers/tree/feature/add-vue-query-package
First thing I noticed is that the @tanstack/vue-query lib doesn't export the type UseQueryResult. (see here)
Do you perhaps know, if this is intentional?
Also I've encountered some type mismatches in the mutate hooks (eg. use-delete-mutation).
Above all, I'm VERY unexperienced with the PNPM / Workspace workflow and all the tooling around your lib. Would like to get some guidance from you :)
(for example, pnpm i wouldn't run, until I specified the exact PNPM version in the root package.json - "packageManager": "pnpm@8.15.6").

hey @cpannwitz, awesome!

First thing I noticed is that the @tanstack/vue-query lib doesn't export the type UseQueryResult. (see here)
Do you perhaps know, if this is intentional?

I went through the cue-query code and it seems like it just has a different name: https://github.com/TanStack/query/blob/4d37cfc733744501b0b4423c721cc038206994e8/packages/vue-query/src/useQuery.ts#L82-L85

Also I've encountered some type mismatches in the mutate hooks (eg. use-delete-mutation).

can you specify what mismatch?

Above all, I'm VERY unexperienced with the PNPM / Workspace workflow and all the tooling around your lib. Would like to get some guidance from you :)
(for example, pnpm i wouldn't run, until I specified the exact PNPM version in the root package.json - "packageManager": "pnpm@8.15.6").

sure! so far your setup looks good. how are vue libraries built? I thought it requires vite?

Ah, thanks, I guess that works. Still, the return type of the useQuery function doesn't work yet, but I'll fiddle around and try to get it into working state.
There are some mismatches caused by different return types of the useMutation hook (react-query vs vue-query).
Especially mutationFn: async (input) =>, where input is void instead of Partial<T["Row"]>.
Will fiddle around also, let's see :)
Hmm, I don't really know, as I'm actually a React dev thrown into the Vue world.
But I've found this example, also with tsup.
They are using vue-demi for library creation, which I guess is a thing for build Vue libs.

@psteinroe So far I've managed to add packages postgrest-vue-query and lately storage-vue-query.
What's missing:

fix type error here
adapt tests to use @testing-library/vue
make sure, that it actually builds and works (would need help here, to determine how this workspace/package actually works, tooling-wise)

Short update: managed to convert all tests (did not run them yet).
Main blockers currently are the type error mentioned in the previous post, which I am yet unable to solve, and missing information about how to properly test and build the libs.

Sorry for the delayed reply. I am s bit busy right now, but will try to look into this next week. 🙏🏼

Thanks, I'm also back from vaycay


How FasterTransformer output all hidden states and all attentions as BERT of HuggingFace?

I use Pytorch code.
I found relevant code:

FTEncoder: Line 117 assign address output to attribute of encoder_param.
BertEncoderTransformer: Line 587 is main forward function.

But I don't understand C code. Could anyone help me? Thanks.

I am not sure the meaning of "all hidden states".
If you hope to get all intermediate results during computation, I think you want to get these buffer:

buffers of bert: from link to link
buffers of attention: from link to link.

If you only want to check value, you can dump to file by copying the data of these buffer to cpu.
If you want to set them as some ouptuts of pytorch op, then you need to modify the pytorch op.

Sorry, I confused with all hidden states. I used RoBERTa model from HuggingFace. In output of RoBERTa forward, I need hidden_states (list num_encoder_layers of [batch_size, seq_len, hidden_size]), attentions (list num_encoder_layers of [batch_size, num_heads, seq_len, seq_len]).
My solution as below

Hidden_states

Modify Line 199 - 203.

all_hidden_states = []
all_attr_outputs = []
for i in range(self.layer_num):
    hidden_states, attr_output = self.encoders[i].forward(hidden_states, attention_mask, trt_seq_len, sequence_id_offset)
    all_attr_outputs.append(attr_output)
    if self.remove_padding:
        hidden_states_tmp = self.rebuild_padding(hidden_states, sequence_id_offset, attention_mask, 0)
        all_hidden_states.append(hidden_states_tmp)
return (all_hidden_states, all_attr_outputs)

Attentions

Modify code

Tensor* attr_output;
ftencoder->forward(batch_size, seq_len, input, attr_mask, output, attr_output, trt_seqlen_offset, sequence_id_offset, _remove_padding);
return output, *attr_output;

Modify forward function

void forward(..., Tensor& output, Tensor& attr_output){
    encoder_tmp->forward();
    attr_output = encoder_tmp.attr_matmul_buf_
    encoder_tmp->freeBuffer();
}

@byshiue can you review my solution? Is my code right? I don't sure about C syntax and some functions/variables (Has attr_matmul_buf_ size [batch_size, seq_len, seq_len] and sum by dim=-1 is 1?; Does Tensor* attr_output use right? Does encoder_tmp->freeBuffer() free attr_matmul_buf_?) of repo.

For hidden state, I think the solution is ok.
For attention, if you want to get the result of Q*K^T, then you must modify the source code of FT, but not only modify the th_op.

Close this bug because it is inactivated. Feel free to re-open this issue if you still have any problem.


Cloud Credentials: 创建 Azure failed

Setup

Rancher version: 2.6.2
Browser type & version:  Google Chrome 版本 95.0.4638.69（正式版本） （64 位）

Describe the bug

Authentication test failed, please check your credentials
To Reproduce

Result
Expected Result

Screenshots

Additional context

Detailed Description

Context

Can you please provide more detail including steps to reproduce. Thank you.

No steps to reproduce, closing


Add support for formulas in markdown

I think having the ability to show (Latex) formulas in my markdown files is a nice feature. It is not something that I use often, but it is a nice feature to have available.
I have currently added it to the template myself. I am using Katex, the other option would be mathjax. I am currently using the version where I load the javascript and CSS files in partials/assets/katex.html and in layouts/partials/head/head.html I conditionally load the Katex partial, depending on whether or not in the frontmatter math is set to true. This makes it not load on every page. Obviously, I also needed to modify server.toml to allow these external files to be loaded.
There is also a nodejs solution that I have not tried. Nor did I try the mathjax option. If you think it would be a nice addition to include in the template, I'll leave it to you to decide what the best solution is. If you don't like it, that is also fine, given that I already have a working solution :)

Thanks for submitting your feature request. It triggers me to look into some kind of customizable "modules" approach. I prefer the current npm setup, where all files are bundled and served without the need of a CDN - and are updated by dependabot automatically. But as you mention already, you wouldn't want to include a lot of unnecessary files either.
Would you mind sharing your current code as an example? I'll look into the KaTeX documentation, it looks like a mix of Node.js and Browser is needed.

Sure.
I added the file katex.html in layouts/partials/assets/ with the following contents:
<link rel="stylesheet"<EMAIL_ADDRESS>integrity="sha384-GvrOXuhMATgEsSwCs4smul74iXGOixntILdUW9XmUC6+HX0sLNAK3q71HotJqlAn" crossorigin="anonymous">
<!-- The loading of KaTeX is deferred to speed up page rendering -->
<script defer<EMAIL_ADDRESS>integrity="sha384-cpW21h6RZv/phavutF+AuVYrr+dA8xD9zs6FwLpaCct6O9ctzYFfFr4dgmgccOTx" crossorigin="anonymous"></script>
<!-- To automatically render math in text elements, include the auto-render extension: -->
<script defer<EMAIL_ADDRESS>integrity="sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05" crossorigin="anonymous"
    onload="renderMathInElement(document.body);"></script>

<script>document.addEventListener("DOMContentLoaded",function(){renderMathInElement(document.body,{delimiters:[{left:"$$",right:"$$",display:true},{left:"$",right:"$",display:false}]})});</script>

In the file layouts/partials/head/head.html I added {{ if .Params.math }}{{ partial "assets/katex.html" . }}{{ end }} to load the Katex partial.
in the file server.toml I have added https://cdn.jsdelivr.net  to script_src, style_src, font_src and connect_src.  And the hash 'sha256-zqrgdmVTCHeZA3joAgSlAjQWAQSAPSJwoKyRhD8nqnc=' has been added to script_src, which takes care of the last line of what is in katex.html.
This is my complete content-security-policy. It is quite different from yours as I removed everything from google and also added support for GOAT, which is default supported in Hugo already, and also support for utterances. I'm not sure if the hashes for GOAT also work in production, as I have not tried that yet. (I actually wanted to enable mermaid instead of GOAT, but that requires to add so many hashes in script-src, that it is impossible).

This is what I used for testing in the markdown file:
This is an inline $-b \pm \sqrt{b^2 - 4ac} \over 2a$ formula

This is not an inline formula:

$$x = a_0 + \frac{1}{a_1 + \frac{1}{a_2 + \frac{1}{a_3 + a_4}}}$$
$$\forall x \in X, \quad \exists y \leq \epsilon$$

That should be it.
Note that I am not an expert in Latex, so I use CodeCogs to help me build the equations.

Thanks for sharing! I've added a new feature request #323 to track the "modules" approach too. I'll use your code and the KaTeX npm library as a case example. Feel free to share your thoughts in either issue.
The feature might require a significant code change, so I can't commit to any schedule yet. However, the summer break is coming up, which might give me some ample time to work on this...

That would be a great way to add additional functionality.
I do hope that not all feature requests I might make, end up in being a big time sink :)

After some experimentation I believe to have found a satisfactory approach to include configurable Hugo modules. The findings are described in #323.
The next steps:

define an example module (using Leaflet for now)
adjust the build pipelines for JS and SCSS files
have an option to either include a module globally (site level) or individually (page by page using frontmatter params)
adjust the CI/CD pipeline to automatically upgrade (npm) dependencies AND to publish new releases (for modules)
adjust the CI/CD pipeline to automatically upgrade (hugo module) dependencies (core library and template)
add documentation on how to use and configure modules
update the guide on https://gethinode.com/guides/packages/
consider adapting the module approach for current npm modules (FlexSearch, Bootstrap, FontAwesome)

Feel free to comment!

I've read through all that and it would be great if that will work. My experience with Hugo is limited to working through the book, 'Hugo in Action' and modifying the Hinode template, so I might not be the one adding very meaningful comments.
From a management and maintenance perspective, I think it is good if the page that is being loaded into the browser has a payload that is as small as possible. Obviously CSS and JS files are cached on the client side, but still, if the page does not need a CSS or JS file, why bother including them. The second thing is that there is no reason to have modules on a site that are not used.
What you wrote, addresses both, so I would be very happy if you get that to work.
That said, I do have a comment related to your last bullet point. Some modules are essential to have on a site. Being able to search is one of them. It should be a basic module. The only reason to make it possible for such a module to remove it, is if someone wants to replace it with another search module. Having a site that you cannot search, is bad in my opinion.
For Bootstrap and FontAwesome this is not true, but I personally would not remove them. The additions to Markdown, bootstrap gives are great. There are other modules that also would add great things to Markdown and could replace bootstrap, but why not install them next to bootstrap.
FontAwesome is really nice to have, besides that, it is also used everywhere in the template where an icon could or is used, so that would break a number of things, which need to be changed if it would be removed.
I think it is fine to have core components that the template cannot do without. And for these 3 specific components I'm not sure if anyone will use the option to remove or replace them. As such I think the balance between the effort you put into it and how often it would be used is off.
If you however cannot resist the technical challenge to also make it happen for these modules, I do think it would be good to add an example of not only adding a module, but also removing one and/or replacing a module (but, perhaps you meant that with the 'add documentation' point).

Thanks with your elaborate feedback! It's of great help to have an outside-in perspective. I agree with your remark - the core modules are unlikely to be disabled and should be included by default. The main reason to put them into to modules is to standardize the approach and thus to minimize maintenance. For now, it has low priority.

Nice. I will try it out later this week.

I checked it out and it looks quit nice.
It works offline (once the modules are downloaded), which is good.
I tried to remove a module, but was unable to get that accomplished. It is very likely that I am missing something, which is going to be in the future documentation. So, I'll wait on that.
I'm still not sure about the usefulness  of a bootstrap module, given that a lot of the partials and shortcodes depend on bootstrap CSS. Not having bootstrap would not render the site properly. But perhaps there is a use case where having this makes sense.
Once it is out of the alpha stage, I would like to try to convert my additions to Hinode into a module (currently these are a gallery and a different way of displaying single images).

Thanks for taking the time to do an initial review. Meanwhile, I have now included the KaTeX module and updated the docs. A live preview is available on https://modules--gethinode-docs.netlify.app (it's updated on every push to the modules branch, so it might be unstable).

I tried to remove a module, but was unable to get that accomplished. It is very likely that I am missing something, which is going to be in the future documentation. So, I'll wait on that.

Would you care to elaborate on that? The documentation is available on https://modules--gethinode-docs.netlify.app/docs/configuration/modules/ (subject to change).

I'm still not sure about the usefulness of a bootstrap module, given that a lot of the partials and shortcodes depend on bootstrap CSS. Not having bootstrap would not render the site properly. But perhaps there is a use case where having this makes sense.

I agree that Bootstrap is an essential component of Hinode. Actually, I included a check in app.scss to confirm the module is included as a core module. However, there are two main reasons why I decided to move the code to a separate module:

Shifting all npm packages to a (separate) module means that Hinode itself is no longer reliant on npm. It becomes an option instead of a prerequisite. This means Hinode becomes more of a 'regular Hugo theme' and works like any other theme out-of-the-box. For advanced users - especially those interested in applying CI/CD - npm is still an option.

Standardizing the module approach means the maintenance becomes easier. I have now automated all dependency upgrades and releases for the five modules. I know from experience that it becomes quite tedious to manually test and merge every single dependency. The base code has been added to a module template that I intend to keep up-to-date.

Once it is out of the alpha stage, I would like to try to convert my additions to Hinode into a module (currently these are a gallery and a different way of displaying single images).

I'd be very interested in your experience with developing custom modules. I've prepared a guide on https://modules--gethinode-docs.netlify.app/guides/modules/ to get you started. If you're willing, you might want to share your modules with the OSS community too?

Thanks for your feedback, appreciate it! Let me know if you need any help with the module development. I used Gitea in the past myself (self-hosted on a NAS), so I'm not too unfamiliar with the challenge to keep it up and running. :-)
I'll update the Hinode template next and aim for a final release of v0.16 soon. There's one optimization left (the alphabetical sort of folders and files in layouts/partials/utilities/bundle.html requires some adjustment) - but I'll probably leave that for now.


Add gitignore

Just pointing out to @gcuisinier , this is a duplicate of https://github.com/gcuisinier/jenv/pull/110 .  While I agree with the sentiment, I'm unsure of the best implementation.
cc/ @x4121 @spodkowinski

I guess the easiest approach would be to look through the code and add any newly generated folders and files. Those do not really belong in git, so should be included in the .gitignore.
Otherwise it would be hard to update the software because of untracked files (git stash; git pull; git stash pop)


Fix method name on UpdateMessage

The correct method is chat.update, not chat.updateMessage.
Docs: https://api.slack.com/methods/chat.update

Thanks for this - tests needed to be updated to pass, so the change has been rolled into 2.1


Feature/k02 05 cumulative

Describe your changes

K04.FR.01 added get_profiles_on_evse() to verify that profiles are EVSE-specific and are only applied to that EVSE.
Added AddChargingProfileSource to distinguish profile source for validation. Specifically, when validate_and_add_profile is called from RequestStartTransactionRequest.
Removed AddChargingProfileSource::Unknown defaults to
AddChargingProfileSource::SetChargingProfile for the most validation
checks.
Added a check on SmartChargingCtrlrAvailableEnabled for F01.FR26,
K05.FR04 and K05.FR05
Added check for ChargingProfilePurposeEnum::TXProfile K05.FR02
K02.FR.05 delete transaction-specific profile from database.

Issue ticket number and link
Checklist before requesting a review

[x] I have performed a self-review of my code
[x] I have made corresponding changes to the documentation
[x] If OCPP 2.0.1: I have updated the OCPP 2.0.1 status document
[x] I read the contribution documentation and made sure that my changes meet its requirements

@shankari - this is ready for your review.

I noticed that the DCO check is failing but all of the commits have a Signed-Off line. I am not sure what the issue is.

@shankari I responded to your comments. Should this be approved?

It was approved 10 hours ago

@Pietfried this has been rebased and is ready to be merged.


I Got 401

Describe the bug
i did all the steps in the describtion but got  Paymob Cash In - Http request failed with status code (401).
Steps to reproduce
nothing just run the code
var amountCents = 1000; // 10 LE
var orderRequest = CashInCreateOrderRequest.CreateOrder(amountCents);
var orderResponse = await _broker.CreateOrderAsync(orderRequest);
		// Request card payment key.
		var billingData = new CashInBillingData(
			firstName: "Mahmoud",
			lastName: "Shaheen",
			phoneNumber: "010000000",
			email: "mxshaheen@gmail.com");

		var paymentKeyRequest = new CashInPaymentKeyRequest(
			integrationId: 123,
			orderId: orderResponse.Id,
			billingData: billingData,
			amountCents: amountCents);

		var paymentKeyResponse = await _broker.RequestPaymentKeyAsync(paymentKeyRequest);

		// Create iframe src.
		return _broker.CreateIframeSrc(iframeId: "776060", token: paymentKeyResponse.PaymentKey);

Expected behaviour
it should return iframe link

Do you configure your ApiKey and your Hmac correctly using
services.AddPaymobCashIn(config => {
    config.ApiKey = "Api Key";
    config.Hmac = "Hmac secret",
});

it was integrationid mistake not it's working


fix(auth): update deprecated current user posthog endpoint

Hey there!
When trying to enable this plugin in PostHog we were receiving the Invalid PostHog Personal API key or GitHub Personal Token error, which is thrown by the setupPlugin method
From having a fiddle with this repository and manually trying the requests in the setupPlugin method I received a 404 response from the posthogRes fetch
{
  "type": "invalid_request",
  "code": "not_found",
  "detail": "Endpoint not found.",
  "attr": null
}

I had a look at the PostHog documentation and noticed that the /api/user endpoint being used was deprecated in April 2021 in favour of the /api/users/@me endpoint
I manually requested to the /api/users/@me endpoint to verify that it worked with the options used in the original request and it seems to be correct, and figured I'd open a PR
Let me know if there's any feedback / issues :)

Good catch, and sorry for the trouble! Just made sure that the removed endpoint is not used in any other plugin and we should be all good after this.


Security vulnerability issues against OpenEBS 1.7 snapshot controller and snapshot provisioner

Description
While uploading OpenEBS1.7 into AWS market place, seeing security vulnerabilities are reported against snapshot provisioner and controller images.
Expected Behavior
No security vulnerability errors
Current Behavior
Throwing errors against these images
Screenshots

fixed with https://github.com/openebs/external-storage/pull/105


Remove jdk 6 support

Hi,
as discussed with @martinschimak, I removed JDK 6 support/from CI build, since newer Camunda versions do not support JDK 6 so the current CI build fails.
BR
Alexander

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Alexander Seik seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Time out sending a message, and indicate failure

Currently, when we try to send a message and can't, we keep the message around (as an Outbox message) and keep retrying indefinitely until it succeeds.
(Specifically, we do so in a loop with backoff, then at each subsequent message send and at each "initial fetch", so in particular at each launch of the app. See sendOutbox and its call sites.)
This isn't great, because most messages are eventually better to send never than send late. In particular a short conversational reply like "sure" or "no, sorry" may have a completely different meaning if the discussion has moved on.
Instead, when the oldest outbox message reaches a certain age (perhaps 60 seconds? 120 seconds?) and we've been unable to send, we should stop trying to send it; give the user feedback that it failed; and give an option to retry the message or delete it. This is similar to the experience in an SMS client, or in SMS-style chat apps like FB Messenger.
The feedback is important (so that users can be confident that messages are delivered whenever they don't see the feedback), and a bit tricky UI-wise:

In the message list, the failed-outbox message should continue to show up, but instead of a spinner should have a "warning" or "problem" indicator. E.g., a red ⚠ (U+2640 WARNING SIGN, :warning:) or similar.

Perhaps also a bit of text right there with an error message like "Failed to send this message. Tap for options." (Or maybe long-press instead?)
On tap (or long-press), we'd show an action sheet with two options labelled like "Retry" and "Delete".

Here's the trickier part: what if the user hit send and then navigated away, and assumed the message got sent? We'll want to somehow call their attention to the fact it didn't, so they can decide what to do.

I think what an SMS-style app would do here is make the situation visible in the conversation list.
For us: maybe treat the failed-send message as unread?

#3841 has been merged, clearing the way for work on this issue. Anyone interested in claiming this?

Let's say me. (I'm already working on #3881, which has a fair range of intersection, and I think if someone else claimed it we'd be stepping on each other's toes a lot.)


Adds "touched" to the field record

Implements #289

Roadmap

[x] Add touched property to the field record
[x] Add unit test on recordUtils to ensure default value of the touched property
[x] Adjust Form.reset integration scenario
[x] Adjust Form.setErrors() integration scenario

There is an issue that field value assertions includes wrong value (i.e. expected foo, includes oo). It's usually all but the first character in the field. The actual field value in the DOM is also wrong.
I am starting to think it has to do with #268.

Removing touched assertions from the default tests results into CI passing.
The separate touched assertion test fails, indicating the failing domain, which is good. Focusing on making that test correct.

Migrating integration test suits to run against open Storybook server.
Motivation:

Eliminate intermediate rendering layer when rendering the suits
Be as close to Storybook as possible
Have no runtime context (Storybook is already built and running)
Eliminate context overlapping issues (unmounting/async actions)

Even after changing the tests to run against Storybook, the pipeline reliability is still poor.
As previously, I see tests perfectly passing in both GUI and CLI on local, yet failing on CircleCI. The next strategy is to eliminate context change during tests, meaning that a test scenario is loaded once, and the group of test suits are executed sequentially, without reloading/reseting the scenario.

Tried increasing default timeout on Cypress from 4000ms to 10000ms (2x), didn't help.


open devnull but never close

You open /dev/null, but there's no fclose() statement
FILE *devnull = fopen("/dev/null", "w+");

This issue has been fixed at PR #80 commit
8574409cb2185109ec1ac9c05fc9deb3e7f76fad