tenant owner can't impersonate a namespace admin

Bug description
The tenant owner Alice can't impersonate the namespace admin Joe assigned by her.
Only Cluster Admin can do this as of now.
How to reproduce
By following the docs, the tenant owner Alice assign Joe as the namespace admin:
export KUBECONFIG=alice-oil.kubeconfig

kubectl apply -f - << EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  labels:
  name: oil-development:admin
  namespace: oil-development
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: admin
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: joe
EOF

But she can't impersonate Joe:
kubectl --as joe --as-group capsule.clastix.io auth can-i create pod -n oil-development
Error from server (Forbidden): users "joe" is forbidden: User "alice" cannot impersonate resource "users" in API group "" at the cluster scope

And only Cluster admin can.
unset KUBECONFIG
kubectl --as joe --as-group capsule.clastix.io auth can-i create pod -n oil-development
yes
kubectl --as joe --as-group capsule.clastix.io auth can-i create pod -n oil-production
no

Expected behavior
The tenant owner should be able to act like a Cluster Admin within the assigned tenant.
Additional context

Capsule version: v0.1.0
Kubernetes version: v1.21.2

@brightzheng100 Thanks for reporting this issue.
Currently, Capsule operator creates a RoleBinding between the tenant owner identity, e.g. alice user and the regular user-facing ClusterRole admin
$ kubectl get rolebindings -n oil-development
NAME                    ROLE                                    AGE
namespace-deleter       ClusterRole/capsule-namespace-deleter   8d
namespace:admin         ClusterRole/admin                       8d

The User-facing ClusterRole admin does not provide users and groups impersonating but the serviceaccounts
$ kubectl describe ClusterRole/admin
Name:         admin
Labels:       kubernetes.io/bootstrapping=rbac-defaults
Annotations:  rbac.authorization.kubernetes.io/autoupdate: true
PolicyRule:
  Resources                                       Non-Resource URLs  Resource Names  Verbs
  ---------                                       -----------------  --------------  -----
  clusterpolicies.kyverno.io                      []                 []              [*]
  clusterreportchangerequests.kyverno.io          []                 []              [*]
  policies.kyverno.io                             []                 []              [*]
  reportchangerequests.kyverno.io                 []                 []              [*]
  clusterpolicyreports.wgpolicyk8s.io/v1alpha1    []                 []              [*]
  policyreports.wgpolicyk8s.io/v1alpha1           []                 []              [*]
  rolebindings.rbac.authorization.k8s.io          []                 []              [create delete deletecollection get list patch update watch]
  roles.rbac.authorization.k8s.io                 []                 []              [create delete deletecollection get list patch update watch]
  configmaps                                      []                 []              [create delete deletecollection patch update get list watch]
  endpoints                                       []                 []              [create delete deletecollection patch update get list watch]
  persistentvolumeclaims                          []                 []              [create delete deletecollection patch update get list watch]
  pods                                            []                 []              [create delete deletecollection patch update get list watch]
  replicationcontrollers/scale                    []                 []              [create delete deletecollection patch update get list watch]
  replicationcontrollers                          []                 []              [create delete deletecollection patch update get list watch]
  services                                        []                 []              [create delete deletecollection patch update get list watch]
  daemonsets.apps                                 []                 []              [create delete deletecollection patch update get list watch]
  deployments.apps/scale                          []                 []              [create delete deletecollection patch update get list watch]
  deployments.apps                                []                 []              [create delete deletecollection patch update get list watch]
  replicasets.apps/scale                          []                 []              [create delete deletecollection patch update get list watch]
  replicasets.apps                                []                 []              [create delete deletecollection patch update get list watch]
  statefulsets.apps/scale                         []                 []              [create delete deletecollection patch update get list watch]
  statefulsets.apps                               []                 []              [create delete deletecollection patch update get list watch]
  horizontalpodautoscalers.autoscaling            []                 []              [create delete deletecollection patch update get list watch]
  cronjobs.batch                                  []                 []              [create delete deletecollection patch update get list watch]
  jobs.batch                                      []                 []              [create delete deletecollection patch update get list watch]
  daemonsets.extensions                           []                 []              [create delete deletecollection patch update get list watch]
  deployments.extensions/scale                    []                 []              [create delete deletecollection patch update get list watch]
  deployments.extensions                          []                 []              [create delete deletecollection patch update get list watch]
  ingresses.extensions                            []                 []              [create delete deletecollection patch update get list watch]
  networkpolicies.extensions                      []                 []              [create delete deletecollection patch update get list watch]
  replicasets.extensions/scale                    []                 []              [create delete deletecollection patch update get list watch]
  replicasets.extensions                          []                 []              [create delete deletecollection patch update get list watch]
  replicationcontrollers.extensions/scale         []                 []              [create delete deletecollection patch update get list watch]
  ingresses.networking.k8s.io                     []                 []              [create delete deletecollection patch update get list watch]
  networkpolicies.networking.k8s.io               []                 []              [create delete deletecollection patch update get list watch]
  poddisruptionbudgets.policy                     []                 []              [create delete deletecollection patch update get list watch]
  deployments.apps/rollback                       []                 []              [create delete deletecollection patch update]
  deployments.extensions/rollback                 []                 []              [create delete deletecollection patch update]
  localsubjectaccessreviews.authorization.k8s.io  []                 []              [create]
  pods/attach                                     []                 []              [get list watch create delete deletecollection patch update]
  pods/exec                                       []                 []              [get list watch create delete deletecollection patch update]
  pods/portforward                                []                 []              [get list watch create delete deletecollection patch update]
  pods/proxy                                      []                 []              [get list watch create delete deletecollection patch update]
  secrets                                         []                 []              [get list watch create delete deletecollection patch update]
  services/proxy                                  []                 []              [get list watch create delete deletecollection patch update]
  bindings                                        []                 []              [get list watch]
  events                                          []                 []              [get list watch]
  limitranges                                     []                 []              [get list watch]
  namespaces/status                               []                 []              [get list watch]
  namespaces                                      []                 []              [get list watch]
  persistentvolumeclaims/status                   []                 []              [get list watch]
  pods/log                                        []                 []              [get list watch]
  pods/status                                     []                 []              [get list watch]
  replicationcontrollers/status                   []                 []              [get list watch]
  resourcequotas/status                           []                 []              [get list watch]
  resourcequotas                                  []                 []              [get list watch]
  services/status                                 []                 []              [get list watch]
  controllerrevisions.apps                        []                 []              [get list watch]
  daemonsets.apps/status                          []                 []              [get list watch]
  deployments.apps/status                         []                 []              [get list watch]
  replicasets.apps/status                         []                 []              [get list watch]
  statefulsets.apps/status                        []                 []              [get list watch]
  horizontalpodautoscalers.autoscaling/status     []                 []              [get list watch]
  cronjobs.batch/status                           []                 []              [get list watch]
  jobs.batch/status                               []                 []              [get list watch]
  daemonsets.extensions/status                    []                 []              [get list watch]
  deployments.extensions/status                   []                 []              [get list watch]
  ingresses.extensions/status                     []                 []              [get list watch]
  replicasets.extensions/status                   []                 []              [get list watch]
  nodes.metrics.k8s.io                            []                 []              [get list watch]
  pods.metrics.k8s.io                             []                 []              [get list watch]
  ingresses.networking.k8s.io/status              []                 []              [get list watch]
  poddisruptionbudgets.policy/status              []                 []              [get list watch]
  serviceaccounts                                 []                 []              [impersonate create delete deletecollection patch update get list watch]

So impersonate users is not allowed to tenant owners.
On the other side, giving impersonate users and groups permission can lead to a security issue since the tenant owner can use this capability to access resources not allowed to.
For example, if we provide as cluster admin
kubectl apply -f - << EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: impersonator
rules:
- apiGroups: [""]
  resources: ["users"]
  verbs: ["impersonate"]
EOF

kubectl apply -f - << EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: impersonator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: impersonator
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: capsule.clastix.io
EOF

the tenant owner alice can impersonate the user joe
alice@cmp:~$ kubectl --as joe get sa -n oil-development
NAME      SECRETS   AGE
default   1         8d

At same time, she can impersonate any other user
alice@cmp:~$ kubectl --as bob get sa -n water-development
NAME      SECRETS   AGE
default   1         8d

Any idea how to solve this in a safe way would be really appreciated.

I don't know the rationale behind the ClusterRole/admin design in terms of permissions, but that makes some sense too.
As we're assuming the Tenant Owner works like the Cluster Admin in the assigned namespaces, so this security issue shouldn't be a big concern just like we shouldn't challenge why Cluster Admin can impersonate anyone within the assigned cluster.
So this may raise a potential requirement, where a custom cluster role, instead of the in-built admin may be used while creating the Tenant for the assigned Tenant Owners.
In this case, the design might be slightly changed to something like:
type OwnerSpec struct {
	Name string `json:"name"`
	Kind Kind   `json:"kind"`
        // +kubebuilder:default=admin
	Role string `json:"role,omitempty"`
}

Not sure whether this makes any sense, thanks!

@brightzheng100 thanks for your suggestion, definitively something we can consider for next releases.

Before considering this feature request for the next release, I'd like to chime in on this topic.
The goal of Capsule is to provide the ability to provision in a fashioned self-service way Namespace without the help of external parties, such as opening tickets, sending emails, and so on. The users will be granted admin capabilities on the created Namespace resources using the ClusterRole resource named admin with capabilities @bsctl already shared in the discussion.
The imperonsate feature is absolutely a nice feature that I used several times to understand what was not going on with my applications, and it's convenient. At the same time, it's really important to understand that _with great power comes great responsibility: impersonating another user in a multi-tenant scenario, in most of the scenarios, is a privilege escalation since it allows to bypass any permission set by RBAC boundaries.
Additionally, we have always to remember that Kubernetes API hasn't been designed with a User first approach, a fact that implies most of the limitations that users are complaining about, like getting the list of owner Namespaces: the rationale is that these resources are cluster scoped and the ACL is based on the resource objects rather than the user, as most of the web applications are doing. The same applies to the user and groups resources, although these are just headers and not resources even tho backed by RBAC, that's another story.
With that said, I just wanted to explain why we (and Kubernetes with its admin ClusterRole) are not providing the impersonate verb, now it's time to understand how to provide this enhancement and I'd say we got two options: working on Capsule code base or, rather, working on capsule-proxy.
Working on Capsule code base
The operator could start watching for any RoleBinding with a kind subject equals to User (or even Group?) on the Tenant namespaces and create a ClusterRole as follows.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: impersonator-${tenant_name}
rules:
- apiGroups:
  - ""
  resources:
  - groups
  verbs:
  - impersonate
- apiGroups:
  - ""
  resourceNames:
  - joe
  resources:
  - users
  verbs:
  - impersonate

with a following ClusterRoleBinding as the following one.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: impersonator-${tenant_name}-${tenant_owner}
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: impersonator-${tenant_name}
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: ${tenant_owner}

All the resources must be attached to the Tenant using the ControllerReference to take advantage of the reconciliation and the GC, too.
I tested this and it seems working since we're targeting the subjects using the resourceNames filed, limiting the scope of the permission just to a specific set of users.
Pros

It's just a change on the code-base, so could be shipped with a patch release
Reusing the Kubernetes capabilities, no reinventing the wheel, it's just automation

Cons

Sprawl of ClusterRoleBinding when dealing with multiple Tenant resources owning multiple Namespaces
Higher memory usage on Capsule side due to watching
Expected higher latency requested by reconciliation for said resources (more stuff to do)

Working with capsule-proxy
Our proxy is providing a smart approach to overcome Kubernetes limitations and could be playing a role also here, as we're doing with the listing of Namespaces, Ingress and PodPriority and Storage Class resources.
We would just pipe the request in a middleware matching the control of the impersonate headers and check if the targeted user got a RoleBinding matching the criteria: if that's the case, proxy to the upstream API Server updating the request with the right fields, otherwise do nothing and let Kubernetes deal with the failure since the user is not entitled to impersonate a user.
Pros

No need to touch the Capsule code base
Overcome Kubernetes limitations as we're doing with other resources in a separate project

Cons

Addressing this issue/feature would require capsule-proxy, although it's highly recommended.

Said so, we have to pick a choice, and would be great to have as much feedback as possible from the community in order to start a discussion and find the optimal solution.
@MaxFedotov please, join the discussion, your opinion is highly appreciated.

I personally think that having the flexibility of setting up a ClusterRole for a Tenant, which defaults to predefined admin, is already good enough as it can cater for more similar requirements around "can I assign xxx permissions to some specific Tenants?".
As you know, such a change is easy and 100% backwards compatible.
The capsule-proxy is really a good design to complement what K8s upstream is lacking in terms of having part of the permissions, like a verb with some specified namespaces**, or maybe some CRDs within some namespaces if possible.

@prometherion
The problem I was thinking about is the possibility to make a security issue with impersonating.
Let's imagine that user Joe had permissions in namespaces in two tenants:

oil-foo (owner of tenant oil is Alice)
gas-bar (owner of tenant gas is Bob).

If Alice will have permissions to impersonate Joe, she will be able to access namespace gas-bar, which is a pure security issue

If Alice will have permissions to impersonate Joe, will she be able to access gas-bar namespace?

Hadn't test yet, it seems doable, tho, and this confirms my concerns regarding the privilege esclation.
I think we have to investigate addressing this on capsule-proxy if we don't have any other option.

I think we have to investigate addressing this on capsule-proxy if we don't have any other option.

In order to impersonate, we have to give wider permission and using the capsule-proxy for this job makes sense to me as we done for kubectl get ns.
NB
In the current implementation, the tenant admin acts as namespace admin for all the namespaces of the tenant and that's coherent with the model we designed, so I turned this issue into a feature request.

With that said, we have to track this down on capsule-proxy repository, I'll link it once created.

The capsule-proxy is really a good design to complement what K8s upstream is lacking in terms of having part of the permissions, like a verb with some specified namespaces**, or maybe some CRDs within some namespaces if possible.

Would be better to move the discussion to the proper repository, although I can briefly answer your questions here.
We wanted to keep the same look and feel, and developer experience too, of native kubernetes, without adding any additional extra thing like a new path or verb.
Allowing tenants to install CRDs, rather, is another issue we cannot overcome with the soft multi-tenancy model implemented by Capsule since it's a hard limitation put in place by Kubernetes and at the current state just a separated etcd store would be able to provide this.

Allowing tenants to install CRDs, rather, is another issue we cannot overcome with the soft multi-tenancy model implemented by Capsule since it's a hard limitation put in place by Kubernetes and at the current state just a separated etcd store would be able to provide this.

I guess that's what Virtual Cluster within multi-tenancy WG is trying to solve -- a dedicated control plane for each tenant -- which definitely is a much heavier solution.
Not sure whether there is a lighter weight solution in the community. But yeah, we may discuss this in the capsule-proxy where might put this into consideration, if possible

@brightzheng100 it's quite accepted into the community two types of multi-tenancy for Kubernetes:

soft multi-tenancy where the control plane is shared between all tenants
harder multi-tenancy where each tenant has its own control-plane

The first one is addressed very well by Capsule. For the second one, may you can be interested into a new project we're working on. It's called Kamaji. The project is still in its infancy and comments and contributions are really welcomed. Would you like to help us?

Yeah and this is a good blog there: Three Tenancy Models For Kubernetes
Not sure how Karmaji differentiates itself from:

Virtual Clusters for hard multi-tenant management and
Karmada or Open Cluster Management for multi-cluster management

I don't know each of one the projects you mentioned, so my tl;dr; could be highly wrong.

Virtual Clusters is a compatible Cluster API provider to install pod-based Kubernetes clusters (API server, scheduler, controller-manager, and etcd).
Karmada looks like a federation of clusters, but not entirely sure.
Open Cluster Management looks like an entire toolset to manage many Kubernetes instances using an open format

If I made some mistakes on these, please, let me know!

Said so, Kamaji takes a different approach, using a shared and multi-tenant etcd cluster, in which each tenant is used by a set of pod-based Kubernetes Control Plane.
If you got more concerns and inquiries I'd say to move the discussion to the Kamaji repository to keep sticking the discussion regarding the feature request.


How could sockexec run shell script as root?

I've try configs as below, but as I run prog({'ngxin','-s', 'reload'}) in openresty worker
It threw permission denied error.
Could you please fix it?
cat > /etc/systemd/system/sockexec.service <<eof
[Unit]
description=sockexec
After=network.target
[Service]
ExecStart=/usr/local/openresty/nginx/docker/bin/sockexec /tmp/exec.sock
User=root
[Install]
WantedBy=multi-user.target
eof

There's nothing stopping sockexec from running programs as root. What's likely happening is your default umask is 022, so the socket is being created with 755 permissions - meaning only the root user can write data into it. And nginx is probably running as not root.
You can edit the service script to specify a umask, but I always have a hard time getting my umasks straight since it's kinda backwards from how we usually think of file permissions.
I just pushed up version 3.1.0 which lets you specify the file creation mode with -M. Additionally, I changed the default permissions to 660 - so the owner and group can read/write.
After updating, I'd suggest changing the group of the sockexec process to something other than root, and making sure your openresty process is in that same group.

Thank you so much, I am really appreciate!
I will try it later.


Retemplating the Galaxy Introduction Hands-on

Just for practice I repacked it according to the new design. For some reason the metadata is not working fully: The Overview and Keypoint boxes remain empty.

@bebatut Thank's for the review, should be fixed now.


[AutoPR containerservices/resource-manager] [AKS] remove "ports" property from managed cluster agent pool

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/3487

This PR has been merged into https://github.com/Azure/azure-sdk-for-go/pull/2342


Image-To-Text Task Page

Partially fixes #352.

A question, did you get the caption in the schema from a model? It didn't seemed like a frisbee to me that's why I'm asking.
(content: "a dog running in the water with a frisbee.",)

Yeah, I used one of the default images present in nlpconnect/vit-gpt2-image-captioning space. Even I felt its not the accurate description but it was closest one as compared to other default images. Plus the dog was cute for demo. 😅
I will look for some other nice photo for demo.

@RaghavPrabhakar66 I'd like to merge your PR, can you please firstly merge the main branch of huggingface/hub-docs into your branch. To do it, you can firstly sync your fork and merge RaghavPrabhakar66/main into RaghavPrabhakar66/image-to-text. then I will be able to get a local build and see your changes 🙂

@RaghavPrabhakar66 do you need extra hand with this?

Hey @RaghavPrabhakar66,
We have moved the codes for Tasks project to huggingface.js repository so if you feel like continuing this pull request you can move your work over there. Many thanks! 🤗


Scope problem with log10

Here's a bug I just found:
julia> using LoopVectorization

julia> let x=rand(10), y=zeros(10)
       @avx for i in 1:10
       y[i]= log10(x[i])  # same for log2, but log is OK
       end
       y
       end
ERROR: UndefVarError: SLEEFPirates not defined
Stacktrace:
 [1] top-level scope
   @ ./REPL[2]:2

(@v1.6) pkg> st LoopVectorization
      Status `~/.julia/environments/v1.6/Project.toml`
  [bdcacae8] LoopVectorization v0.12.12

julia> using LoopVectorization.SLEEFPirates  # fixes it

julia> let x=rand(10), y=zeros(10)
       @avx for i in 1:10
       y[i]= log10(x[i])
       end
       y
       end
10-element Vector{Float64}:
 -0.5899438714198465
 -0.06561577333335653
...

Thanks for the issue.
That's a little goofy, but should be simple to fix.
Hopefully I'll finally have another release in the next few days that closes a bunch of issues, including this one.

Fixed.


I have manually fixed subtitles having speech can I train my voice?

Yours looking best however only female voice?
For example my these videos have manually fixed subtitles and auto timed by youtube
Can I use them to train my voice? If so can you release a script to do it?
Or can you also release a male voice?
thank you
e.g. few videos of mine
https://youtu.be/kIyqAdd_i10
https://youtu.be/EPRa8EZl9Os

Do you know about any other Text to Speech with Natural sound with other voices  and which is also fast in synthesis of audio .

Coqui-TTS has a wide range of voices, the fastest probably being the Glow-TTS models (about the speed of Nix-TTS I'd say). They usually don't handle numbers and temperature etc. as well as Nix-TTS (depends on the model).
Mimic-3 by Mycroft is similar in speed and has good quality too.


Aligning Gitab and Github plugins with Bitbucket

This pull request introduces several significant enhancements and fixes to the VCS plugin's integration with GitLab and GitHub APIs. These updates improve functionality, add support for new features, and resolve existing issues.
Common Functionality Across GitLab and GitHub
The following functionalities have been aligned and supported for both GitLab and GitHub plugins:

Listing organizations and repositories for GitHub and groups, subgroups, and projects for GitLab.
Retrieve Pull/Merge Request Information.
Add Role to a Pull/Merge Request: Supports adding users to a PR/MR as reviewers or assignees.
Set Status of a Pull/Merge Request.
Fetches repository/project code and changes associated with a PR/MR.

GitLab Plugin Enhancements

Resolves projects across all sub-projects of a given group.
Lists groups available for the current user, supporting the entire VCS scope.
AddRoleToPR supports assignee and reviewer roles.
SetStatusOfPR supports approve and unapprove statuses.
File Upload and Markdown Commenting. Uploads files and constructs markdown comments with links to uploaded files.
Library Migration: Moved from xanzy/go-gitlab to gitlab.com/gitlab-org/api/client-go due to deprecation of the former library.

GitHub Plugin Enhancements

Lists all organizations accessible to the authenticated user if a user doesn't pass a namespace in args.
AddRoleToPR supports assignee and reviewer roles.
SetStatusOfPR supports approve and request_changes statuses. Approve status requires a comment, unlike other VCS providers.

Custom HTTP Clients for VCS
VCS clients now support custom HTTP clients, which can be configured via the Scanio configuration file.
Custom headers are fully supported, providing enhanced flexibility.
VCS URL Parsing
Introduced specialized parsers for GitLab and GitHub URL formats.
Fixes
Fixed incorrect argument validation for the list command, ensuring proper input handling.

During development,I have faced with restrictions from the side of Github API - https://github.com/scan-io-git/scan-io/issues/107


Fix bug when writing header to request signer

A '\n' character was always being added at the beginning of the signing
string causing the validation to fail.

@arekinath is this library being maintained yet? If so, can you check this PR please?


non-support for array for observable?

Which @ngneat/elf-* package(s) are the source of the bug?
store
Is this a regression?
No
Description

Please provide a link to a minimal reproduction of the bug
No response
Please provide the exception or error you saw
the expected result is each change in array triggers the path$.

Please provide the environment you discovered this bug in
No response
Anything else?
No response
Do you want to create a pull request?
Yes

Yes. It works. Thanks.


License headers are cut in all files

Currently it is
Code generated by Microsoft (R) AutoRest Code Generator <IP_ADDRESS>
Changes may cause incorrect behavior and will be lost if the code is
But should be
Code generated by Microsoft (R) AutoRest Code Generator <IP_ADDRESS>
Changes may cause incorrect behavior and will be lost if the code is
regenerated

It was issue in the core of AutoRest and is already fixed.


Fix min max for draco files

This helps https://github.com/KhronosGroup/glTF-Sample-Models/pull/236
with files created from gltf-pipeline.

Is it possible to compute the min max knowing the accessor min/max and the quantization bits? Or maybe it's more involved. Main reason I ask is the extra decode could hurt performance.
This branch:
(base) Seans-MacBook-Pro:gltf-pipeline slilley$ node bin/gltf-pipeline.js -i ~/Code/glTF-Sample-Models/2.0/BrainStem/glTF/BrainStem.gltf -o ~/Desktop/brainstem.gltf  -d
Total: 1272.551ms

Master:
(base) Seans-MacBook-Pro:gltf-pipeline slilley$ node bin/gltf-pipeline.js -i ~/Code/glTF-Sample-Models/2.0/BrainStem/glTF/BrainStem.gltf -o ~/Desktop/brainstem.gltf  -d
Total: 838.950ms

So I tried some things, but there can always be some inconsistencies. Unless we adjust max and min by about 0.001. I think this might be fine. What do you think?
Also there is no guarantee that for some models 0.001 will be enough. It is for all of the gltf sample models.

I think we will need to add getEncodedMinMax() to the encoder.

I changed the code to not do the the decode. It works on all of the glTF sample models.

@FrankGalligan The latest changes look good. The 0.001 tolerance should be ok. Is the main goal to run --draco.uncompressedFallback to get the exact values for https://github.com/KhronosGroup/glTF-Sample-Models/pull/236 and provide a reasonable backup for non --draco.uncompressedFallback?

Yes if you run --draco.uncompressedFallback you will get exact. Otherwise you will get the tolerance based on the accessor.min and accessor.max.
In the future I think we can remove the tolerance. Filed an issue: https://github.com/google/draco/issues/599

Cool, we'll follow https://github.com/google/draco/issues/599. In the meantime I think this change is fine.


[Bug]: interactive_beam.show_graph() distorts Jupyter noteboook page

What happened?
Trying to display the beam pipeline DAG while using the  InteractiveRunner distorts the Jupyter notebook layout.
Here is a code snippet to reproduce it
import apache_beam as beam
import apache_beam.runners.interactive.interactive_beam as ib
from apache_beam.runners.interactive.interactive_runner import InteractiveRunner

with beam.Pipeline(runner=InteractiveRunner()) as p:
    (
        p
        | "Create numbers" >> beam.Create([1, 2, 3])
        | "Print results" >> beam.Map(print)
    )

Software versions
apache-beam              2.46.0
jupyter                  1.0.0

See the the screenshots below of before and after running this script in a Jupyter notebook.
Before

After

Issue Priority
Priority: 2 (default / most bugs should be filed as P2)
Issue Components

[X] Component: Python SDK
[ ] Component: Java SDK
[ ] Component: Go SDK
[ ] Component: Typescript SDK
[ ] Component: IO connector
[ ] Component: Beam examples
[ ] Component: Beam playground
[ ] Component: Beam katas
[ ] Component: Website
[ ] Component: Spark Runner
[ ] Component: Flink Runner
[ ] Component: Samza Runner
[ ] Component: Twister2 Runner
[ ] Component: Hazelcast Jet Runner
[ ] Component: Google Cloud Dataflow Runner

.take-issue

.close-issue


(OUI Next Theme) Discover

This issue to be transferred to corresponding repository
I am working on launching new light and dark mode themes provided by OUI component library for a target launch within 2.10. These changes support the vision expressed in Future Vision for Dashboards
I have identified the following front end related issues that prevent the theme from appearing complete and potential solutions within this feature:

[ ] In Next theme, Source content highlight appears too dark. Utilize sass variable (tbd) in favor of hard coded color value. Potentially utilize EuiBadge .

[ ] View Surrounding Documents generates a table that utilizes colors from Current theme. These should be updated to dynamically match theme values.

[ ] Visualizations utilizes colors from Current theme. Remove background and utilize ouiPaletteColorBlind for visualization colors.

In Next theme, Source content highlight appears too dark. Utilize sass variable (tbd) in favor of hard coded color value. Potentially utilize EuiBadge .

This one is an easy fix. The reason it currently looks so bad is that they've set the opacity to just .1. It's an unnecessary use of transparency as a lazy way to further lighten the color rather than tint and shade.

View Surrounding Documents generates a table that utilizes colors from Current theme. These should be updated to dynamically match theme values.

Given the current work to refactor this view altogether for data explorer, we should pick the lowest hanging fruit here, because this page is built and styled with the legacy KUI. So I'd likely need a full mock with the correct colors, or specific styling to target, because the component refactoring is already underway.

Visualizations utilizes colors from Current theme. Remove background and utilize ouiPaletteColorBlind for visualization colors.

This is an ElasticCharts visualization, so we may need to update some of the chart themes.


Task 10 to 15

@kurubabullesairam
Task -10
Code verified.
Task -11
Code verified.
Task -12
Code verified.
Task -13
Code verified. Pending with excel activity and provide annotations
Task -14
Code verified. Provide annotations
Task -15
Code verified.


Fix SpecialMissionsProject sorting and abstract

See https://github.com/KSP-CKAN/NetKAN/pull/7161.
Sorting broken and too long, misparsed abstract.
V10.0 should be fixed if 7161 is merged.

Sorry if there was a notification spam :/
GitHub is clearly missing an option to edit multiple files before committing.

Luckily git itself does have the ability to edit multiple :grin:

I think I have to clone the ckan-meta repo someday...


Formatted date and times for event cards

Closes #245
Added a function that would format the date and times for the event cards.

I noticed that the Figma designs also include the ordinal, so "Jun 27th" instead of just "Jun 27".
To achieve this, try taking this approach: https://stackoverflow.com/questions/15397372/javascript-new-date-ordinal-st-nd-rd-th You can make a new method, put it in utils/util.ts perhaps, and call it something like getNumberOrdinal (that takes in a number and returns the ordinal string, so getNumberOrdinal(27) would return "th"  or getNumberWithOrdinal (that can take in a string number and return the string with the ordinal, so getNumberWithOrdinal("27") would return "27th").

Awesome!


Move reportbacks

All legacy reportbacks live in phoenix.
They should also live in rogue, to eventually turn phoenix reportbacks off

This has been handled / completed in other issues.


can't start

Description

Hello everyone,
I'm having trouble starting the server-code.
first I thought I was a user, so I tried with sudo.
then I thought it was the certificate.
what do I have to do :(

It started just fine. Visit http://localhost:8443 to use it.

it's on an online server, but when I type the www.link ... with: 8443 it will not go

Will improve this message thanks.


Unify Fixnum and Bignum into Integer 🐌

Though ISO/IEC 30170:2012 doesn’t specify details of the Integer class, Ruby had two visible Integer classes: Fixnum and Bignum.
Ruby 2.4 (released in 2016) unified them into Integer.
https://www.ruby-lang.org/en/news/2016/12/25/ruby-2-4-0-released/
http://www.a-k-r.org/pub/2016-09-08-rubykaigi-unified-integer.pdf

@nick-brown please check


ImageOptim failed always,with error not find ImageOptim

as follow :
mageoptim --directory testpng/
Running ImageOptim...
15:47: execution error: Can’t get application "ImageOptim". (-1728)

Any luck on this?

Install ImageOptim first: https://imageoptim.com/


New kobopatch instructions from v0.15.0

This issue is for any questions/comments about the new instructions introduced in v0.15.0 (see geek1011/kobopatch#32, e8c64f59ce032274f27a25994eda074c399d572f, and v0.15.0).

I just tried to download the v15.0 Windows .exe files. Windows Defender flags koboptch-windows.exe and cssextract-windows.exe as Severe threats and immediately removes them.
These are the details for koboptch-windows.exe cssextract-windows.exe is similar.
Threat detected: Trojan:Win32/Fuery.C!cl
Alert level: Severe
Category: Trojan
Details: This program is dangerous and executes commands from an attacker

and
Affected items:
webfile: D:\sysfiles\Downloads\koboptch-windows.exe|https://github-production-release-asset-2e65be.s3.amazonaws.com/130938106/bb33a480-67ca-11ea-9b06-7c46f4d06f0b?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200317%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200317T202526Z&X-Amz-Expires=300&X-Amz-Signature=2f3b40b60eb98272e989763f7cc46c38faddb4fe596f652ba6d2e7e276e1642f&X-Amz-SignedHeaders=host&actor_id=55494768&response-content-disposition=attachment%3B%20filename%3Dkoboptch-windows.exe&response-content-type=application%2Foctet-stream|pid:14116,ProcessStart:132289498495669039

Oh, that's annoying... I guess it's due to the fact that I have code which reads symbols and emulates ARM instructions.
I'll see what I can do about it. Thanks for the heads-up.

Does symdump trigger it?

OK, I just ran it through VirusTotal, and it doesn't seem to be detected by Defender that way: https://www.virustotal.com/gui/file/21254f046662846dd01a1679aaa846846c777b185b0a489961bc9e9fe53a3b61/detection.

Does symdump trigger it?

No. Neither does koboptch-apply-windows.exe although I don't know what these 2 do.

I've submitted it to Microsoft as a false positive for reclassification.

OK, I just ran it through VirusTotal, and it doesn't seem to be detected by Defender that way: https://www.virustotal.com/gui/file/21254f046662846dd01a1679aaa846846c777b185b0a489961bc9e9fe53a3b61/detection.

I suspect VirusTotal results won't carry as much weight as default Windows' own virus checking with your average MR Windows user. Getting MS to pass it as clean would be a good idea. Is that easy to do? Sounds time-consuming, not that I've any experience with such things.

Fixed.

@geek1011
Did you also report cssextract-windows.exe to MS? Because this is still getting zapped by Windows as a Severe threat when trying to download.
koboptch-windows.exe now downloads without complaint.

No, not yet. What is it being classified as?

As I said in my original post, cssextract-windows.exe and koboptch-windows.exe originally showed the same Trojan.

I've submitted it to MS: https://www.microsoft.com/en-us/wdsi/submission/3a34f341-5409-471f-a0de-97235c1592a3.

It should be fine now (update your definitions and try again).

All OK now. 👍

Released in v60.


chore: fast rebuild script when building dendron plugin locally

chore: fast rebuild script when building dendron plugin locally
This adds the steps in [[Build|dendron://dendron.docs/pkg.plugin-core.dev.build]] into a script

LGTM. remind me in what situation did we want to do this instead of a full cleanup / then yarn setup?

This is if you've already build the plugin locally and need to re-built it (you ran a yarn build:{version}:local).
The regular [[cleanup script|#cleanup]] will remove all node_modules across all packges.
The fast rebuild will only remove node_modules from packages where it needs to be removed.


Option for the Capturing helper to do copy-and-paste

Current behaviour
In its current incarnation, the capturing helper is cut-and-paste. That is to say that the following

Some text before

<% content_for :summary do %>

On this item, Nanoc is introduced, blah blah.

<% end %>

Some text after

will output

Some text before

Some text after

If one wants the captured text where it was written, one has to paste it right after cutting it

Some text before

<% content_for :summary do %>

On this item, Nanoc is introduced, blah blah.

<% end %>
<%= content_for(@item, :summary) %>

Some text after

Or course <%= content_for(..., :summary) %> would be used elsewhere!
Desired behavior
But I have a use case where a paragraph is used as an introduction on several different pages. It would be nice to have an option to avoid typing <%= content_for(@item, :summary) %> just after the capturing context. Maybe something like.

Some text before

<% content_for :summary, cut: false do %>

On this item, Nanoc is introduced, blah blah.

<% end %>

Some text after

which would result in

Some text before

On this item, Nanoc is introduced, blah blah.

Some text after

as well as capturing the paragraph to be reused elsewhere. I.e. copy-and-paste.

I like that idea!
I’ll move it to the nanoc/features repository, where I collect ideas for features and improvements.
If you want to and feel up for it, you can open up a PR. The Capturing helper has a test suite that hopefully should be pretty easy to adjust too.


plant axis elongation zone (PO:0025180) and child terms

The term elongation zone (PO:0020125) currently has no is_a parent.
Current definiton: The portion of the root that includes small, densely cytoplasmic cells that are dividing and expanding in size. [GR:pj]
synonym	 "region of cell elongation" RELATED []:
synonym	 "region of radial enlargement" RELATED []:
part_of root
Comment from DWS: Zone of elongation in roots at least refers to longitudinal expansion not radial. The new definition will not work. Also, those cells have enlarging vacuoles so the cytoplasm actually becomes less dense.
The elongation zone is the part of the root directly behind the root apical meristem, in which cells are expanding longitudinally. Since vascular tissue is beginning to differentiate in this part of the root, it is not composed of one type of tissue. Suggest making it is_a cardinal organ part.
Proposed definition (based on description in Raven et al.): A cardinal organ part that is part of a root that is located directly behind a root apical meristem, in which the cells are undergoing longitudinal expansion.
Comment: The elongation zone is only a few millimeters in length and is the only portion of the root in which cell elongation generally occurs. Root hairs are not yet produced in this region.
Synonym: region of cell elongation (Raven et al's name)
is_a cardinal organ part, part_of root
Reported by: rlwalls2008
Original Ticket: obo/plant-ontology-po-term-requests/197

plant axis elongation zone (PO:0025180):
Was: A cardinal organ part that is part of a plant axis that is located directly behind an apical meristem, in which the cells are undergoing longitudinal expansion.
Revised def'n: A cardinal organ part (PO:0025001) which is part of a plant axis (PO:0025004), is located proximal to an apical meristem (PO:0020144), and in which plant cells (PO:0009002) are undergoing longitudinal expansion.

Revised def'n: A plant axis elongation zone (PO:0025180) that is part of a shoot axis internode (PO:0005005).
Added missing Xref to PO_GIT:197

stem internode elongation zone  (PO:0008041)
Was: A shoot internode elongation zone that is part of a stem internode.
Revised def'n:A shoot axis internode elongation zone  (PO:0025100) that is part of a stem internode (PO:0009047).
Added missing Xref to PO_GIT:197

branch internode elongation zone (PO:0025101):
A shoot axis internode elongation zone that is part of a branch internode.
Revised def'n: A shoot axis internode elongation zone (PO:0025100) that is part of a branch internode (PO:0025080).
Added missing Xref to PO_GIT:197

root elongation zone (PO:0025181):
was: A plant axis elongation zone that is part of a root tip and located directly behind the root apical meristem.
Revised def'n:  A plant axis elongation zone (PO:0025180) that is part of a root tip (PO:0000025) and located proximal to a root apical meristem (PO:0020147).
Added missing Xref to PO_GIT:197

primary root elongation zone (PO:0025257):
was: A root elongation zone that is part of a primary root tip.
Revised def'n: A root elongation zone (PO:0025181) that is part of a primary root tip (PO:0000026).
Added missing Xref to PO_GIT:197


BUG: Fix of dlsim when the system is characterized has no dynamic.

See #4970 for more details.
When the system is characterized by A=[], B=[], C=[], D=[1] the function generate an error.
I've added a check on the value of the matrix A.

Thanks @tfabbri. Makes sense to make that work I think. Could you please add a unit test in signal/tests/test_dltisys.py?

I have added new unit test to signal/tests/test_dltisys.py

As per https://github.com/scipy/scipy/issues/4970#issuecomment-520613155, the underlying issue was resolved elsewhere


Bitbucket with Meteorhacks:npm

At my job we're using bitbucket for version control, and I have a set of repositories that I'd like to include in my meteor project. However, when I specify these files in my packages.json file, I get the following error:
package.js:13:7: must declare exact version of dependency: mypkg@https://bitbucket.org/myteam/mypkg/get/7466e099320c.tar.gz
The dependency is specified as:
"mypkg": "https://bitbucket.org/myteam/mypkg/get/7466e099320c.tar.gz"
Considering this is a tar file and refers to an exact version, it appears to me that the requirement is met but not recognized by meteorhacks. I'd love to get some clarification.

+1
Unfortunately, it looks like this project is abandoned.

@ssteinerx this project is not abandand. We are pretty much it is we can implement.
This project simply proxy the Meteor's npm support. So, this should be address in the meteor's repo not here.

Sorry, with 45 outstanding issues dating back to #11 opened on Sep 24, 2013 by davidworkman9, it looks pretty not-on-the-radar in terms of maintaining the project.  This particular bug, and the proposal to remove or make the version restriction optional, would really improve the package, in my opinion.  Will you accept a pull request if I can figure out how to implement it?

 This project is used by thousand of Meteor apps. But, we always welcome PRs. Most of these issues are due to how Meteor's NPM support work.
I try to respond to all such questions, but I can't answer all these questions I've already answered. If you get an issue:

You can search google
Search our issue list
Then ask it

If someone don't did it, it'll be pretty hard for us.


Add license

Not sure which one at this stage.
Will figure it out and add to the repo.

Based on advice from http://choosealicense.com I decided to go with a MIT based license.


Implement basic routing

What do You think about implementing basic routing to conversations/rooms and optionally to initial screen new like a Facebook messenger?
URLs could be looks like this:
https://vue-advanced-chat.herokuapp.com/chat/[id] ex.
https://vue-advanced-chat.herokuapp.com/chat/0hdt2xFHafgw2VLy4I4Ju0SeQgF2
and optional new conversation:
https://vue-advanced-chat.herokuapp.com/chat/new
It would be very useful to linking to conversations, improve navigation, and useability.
Without using any routing library:
In RoomList:
this.$emit('openRoom', this.room)
Handling click:
// open room, fetch messages etc..
window.history.pushState(room, null, baseUrl+ chat/[id]);

And sth like this in creating/init component:
    this.openRoom(id); // id from props (server can pass id from URL and pass to component) or directly from url

    window.onpopstate = (event) => {
      if (event.state) {
        if (event.state.id) {
          this.openRoom(event.state.id);
        } else {
          this.initNewConversation();
        }
      }
    }

Thanks to this we handle navigation buttons (forward / next).

I like the idea, as long as there is a prop to activate/deactivate this feature. Will you send a PR for that?

I like the idea, as long as there is a prop to activate/deactivate this feature. Will you send a PR for that?

Actually, can you not implement this feature outside the component scope? You could implement routing when fetch-messages event is triggered, would that work?
Even if I like the idea, any implementation that can be done outside the component is encouraged in order to keep the component light and simple, and not enforcing specific behaviour.

Actually, can you not implement this feature outside the component scope? You could implement routing when fetch-messages event is triggered, would that work?
Even if I like the idea, any implementation that can be done outside the component is encouraged in order to keep the component light and simple, and not enforcing specific behaviour.


Instructions for how to use an imported svg file with  component

Subject
Icon
Description
The examples used for https://chakra-ui.com/docs/components/icon/usage#using-the-createicon-function don't show how to use imported svg files.
The 'recommendation' says how to export icons as svg from Figma/Sketch, but does not provide guidance on how one would use that svg.

Hi @nick-inkeep,
the recommendation is meant as an alternative to the createIcon function. You can easily use your own svg like this https://github.com/chakra-ui/chakra-ui-docs/blob/main/src/components/logo.tsx with Chakra UI.
Closing this for now. Let me know if this was helpful :)


Get pretranslations algorithm refining

What is the actual algorithm for whether to pretranslate or not?  Here is what I think it should be:

The Pretranslation source corpora is defined (a single Monocorpus)
The Pretranslation source corpora filter is defined (or not - the textId's and ScriptureRange's, etc.) and filters the source corpora
All segments that will be used for training are defined.
For each parallel-corpora used for pretranslation:

If the same parallel-corpora was used for training, get it.
Every row that is actually being trained on where the source and target segment's length are > 0, don't pretranslate
Otherwise, pretranslate each row, based soly on the source Pretranslation corpora and filter.

To implement this algorithm:

The API can stay the same.  The Pretranslation target is meaningful if you want to populate the USFM.
We need the NParallelCorpus and MergedParallelCorpus to be defined to be used to merge the merged training source and target with the pretranslation source.

@Enkidu93, @ddaspit and @pmachapman, what do you think?

On a per ParallelCorpus basis, if there is target training data that passes the filter, those verses will not be pretranslated.


Intel RealSense R200 not available

Will the code work with the Intel D435 depth camera? The other is out-of-date.

Hey Russ,
Although not supported, D435 should work as long as topics matches the current real sense launch files.

Hey Russ,
Although not supported, D435 should work as long as topics matches the current real sense launch files.

I've got most of it installed but get an error with Platformio.
~/linorobot_ws/src/linorobot/teensy/firmware$ platformio ci --project-conf=./platformio.ini --lib="./lib/ros_lib" --lib="./lib/config"  --lib="./lib/motor"  --lib="./lib/kinematics"  --lib="./lib/pid"  --lib="./lib/imu" --lib="./lib/encoder"
Error: Python 3.6 or later is required for this operation.
Please check a migration guide:
https://docs.platformio.org/en/latest/core/migration.html#drop-support-for-python-2-and-3-5
Is there a legacy version I can use? Or should I go to Python 3.6?
Thanks, Russ

I've got most of it installed but get an error with Platformio.
~/linorobot_ws/src/linorobot/teensy/firmware$ platformio ci --project-conf=./platformio.ini --lib="./lib/ros_lib" --lib="./lib/config"  --lib="./lib/motor"  --lib="./lib/kinematics"  --lib="./lib/pid"  --lib="./lib/imu" --lib="./lib/encoder"
Error: Python 3.6 or later is required for this operation.
Please check a migration guide:
https://docs.platformio.org/en/latest/core/migration.html#drop-support-for-python-2-and-3-5
Is there a legacy version I can use? Or should I go to Python 3.6?
Thanks, Russ

Got it mostly installed but this error comes up:
~/linorobot_ws/src/linorobot/teensy/firmware$ platformio ci --project-conf=./platformio.ini --lib="./lib/ros_lib" --lib="./lib/config"  --lib="./lib/motor"  --lib="./lib/kinematics"  --lib="./lib/pid"  --lib="./lib/imu" --lib="./lib/encoder"
Error: Python 3.6 or later is required for this operation.
Please check a migration guide:
https://docs.platformio.org/en/latest/core/migration.html#drop-support-for-python-2-and-3-5
I'm using Raspberry Pi 4 with 4 Gig RAM, Raspbian Buster and ROS Melodic. Is there a way to program Teensy with the Arduino IDE? I see your libraries needed for Teensy code are extensive.
I installed Python 3.6 but still system reports 2.7 to Platformio and it refuses to run.
Russ

Got it mostly installed but this error comes up:
~/linorobot_ws/src/linorobot/teensy/firmware$ platformio ci --project-conf=./platformio.ini --lib="./lib/ros_lib" --lib="./lib/config"  --lib="./lib/motor"  --lib="./lib/kinematics"  --lib="./lib/pid"  --lib="./lib/imu" --lib="./lib/encoder"
Error: Python 3.6 or later is required for this operation.
Please check a migration guide:
https://docs.platformio.org/en/latest/core/migration.html#drop-support-for-python-2-and-3-5
I'm using Raspberry Pi 4 with 4 Gig RAM, Raspbian Buster and ROS Melodic. Is there a way to program Teensy with the Arduino IDE? I see your libraries needed for Teensy code are extensive.
I installed Python 3.6 but still system reports 2.7 to Platformio and it refuses to run.
Russ


Coin-toss Game

Aim:
To create a coin toss application which can be used to play.
Description:

The coin-toss application can be used for various application like starting a cricket game, to decide winner when there is a tie between games, etc.
The user is asked to choose a option (head or tail) and click on the spin coin.
If you choose head and heads turn up, score increases by 1.
First person to score 5 wins the game.

@Ayush7614 Kindly assign me this issue under HCSSoC


Allow starting stage after it has been previously stopped

While writing an integration test I noticed that I couldn't simply stop then start the Stage between tests; I had to kill and rebuild the Stage. Based on a comment on the Startable interface, I believe this is a bug.

It must be possible to call start twice without errors.

The comment in Startable is actually referring to the fact it may get called more than once before a stage starts.
However, it should be possible to stop and start a stage.
I'll do a couple of tests on this and merge as long as things look good.

I wrote a test that fails and pushed it so this doesn't get merged accidentally.
Getting this error when restarting the stage:
java.util.concurrent.CompletionException: org.infinispan.IllegalLifecycleStateException: ISPN000323: Cache 'distributedDirectory' is in 'TERMINATED' state and so it does not accept new invocations. Either restart it or recreate the cache container.
	at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:94)

@armsnyder because the distributed cache is .. cached in Hosting. See cloud.orbit.actors.runtime.Hosting#getDistributedDirectory


Can't compile .DTS to .DTBO on pocketbeagle

How can I do that ?

dtc --version
Ensure that the DTS file corresponds to the hardware description of your PocketBeagle.                                           dtc -O dtb -o output_file.dtbo -b 0 -@ input_file.dts
Also try rebooting if possible.


SymbolInstance replace with new Symbol

I am trying to import symbols from a library and replace a local symbol instance with a library symbol similar to the replace with option in the context menu.
I don't think this possible yet in the API.
var instance = master.createNewInstance();
mylocalSymbolInstance = instance; // not working

I currently do this (without sketch API)
mylocalSymbolInstance.changeInstanceToSymbol(instance.symbolMaster());

Will this be possible in the future? Or am I doing something wrong here?

you can already set the master of an instance:
mylocalSymbolInstance.master = master

works perfect thanks


upgrade gems for :test group, fix specs

 [TARIFF17] Review which gems/libraries need upgrading and update them


Error running train.py

Hi @amacati,
I tried to run train.py, the new script that you created for training an RL agent. However, it gives an error that says:
"File "examples/train.py", line 46, in main
env = create_race_env(config_path=config_path, gui=gui)
File "examples/train.py", line 39, in create_race_env
return DroneRacingWrapper(firmware_env, terminate_on_lap=True)
File "/home/tngrbz/drone_racing/lsy_drone_racing/lsy_drone_racing/wrapper.py", line 81, in init
n_gates = env.env.NUM_GATES
AttributeError: 'Quadrotor' object has no attribute 'NUM_GATES'"
It's weird because I switched the safe-control-gym repo to the "lsy_drone_racing" branch, which you suggested on Moodle, and I can see the place where the NUM_GATES is defined as well (in quadrotor.py line 346). Also, it was running well before switching to the dev. Here is the whole error prompt I get. I think I misconfigured something, but I couldn't really figure it out.
 I fixed a related error in commit 0025437, but cannot reproduce yours.

I also added some tests. You can install pytest and run them from the root folder with
pytest tests
There are some warnings from third-party packages that you can ignore. On my setup, all tests pass. If they don't on your end, then please double-check if you have installed safe-control-gym in editable mode. Otherwise the most recent updates are not applied, even though the repository has been updated.
Let me know if any of the above works

For safe-control-gym, I am exactly on the commit that you mentioned (efaf54cf9dd3c5ccc265e9cc31537172ebcc74a7); for the lsy_drone_racing; I fetched everything recently, so I am on the latest commit, which means one after the one you mentioned. I ran pytest, and it also failed with the very same error above, so I guess it is not in editable mode as you referred. I will have a look at it

Okay thanks for the help, installing it in editable mode
pip install -e .
made it work. Weird because I am sure that I did that in the beginning as well since you said so in the kick-off meeting.


Add label to children-start-date

visually hide helper text

🔗 Pivotal Tracker ticket
#186822601
✍ Description
Fix design feedback on children-ccap-start-date
Feedback:

Result of this PR:

📷 Design reference
Figma screen

These changes we discussed on a Tuple call, I'm going to go ahead and merge.


oxstore command

Utility command for managing blueox logs on disk and in S3

r+
Reading through this, I was thinking that the API/code might be simpler if there was a query datastructure for reading separate from the LogFile structure.  Also, maybe it would be good to have a LocalLogFile and RemoteLogFile and then encapsulate everything inside of those?  e.g.

class Query:
  def __init__(self, stream, start_at, end_at):

def open_reader(query):
   ..

def reading_example():
   for event in open_reader(Query("website_hits", Christmas, NewYears)):
        do_something(event)

class RemoteLogFile:
   def __init__(self, aws_conf, date):
      ..

class LocalLogFile:
    def __init__(self, date):

Also, as a library user it would be good to make it clear in blueox.store which methods are intended for export by prefixing them with underscores.

@bickfordb you read my mind. I realized last night after I put this out that I still wanted a programmatic API, which was like 25% of the reason for doing this.
I'll do another round of refactoring and see if I can do that.

R+


Add serverless middleware / proxy for stories CDN invalidation

Add middleware (Azure or Lambda function) that sits between the API CDN and frontend apps and adds a new timestamp token to requests each time a webhook call indicates content has been updated.
The webhook will change an environment variable in the function.
This will enable us to make cached requests to the CDN (much better performance) and still have instant cache invalidation.

Done. Implemented as a service instead of a proxy so we can still use the CMS API through it's CDN directly.


Android: NullReferenceException

Hi,
while working fine on iOS, CarouselView causes a NullReferenceException on Android:
System.NullReferenceException: Object reference not set to an instance of an object.    at CarouselView.FormsPlugin.Android.FormsToNativeDroid.ConvertFormsToNative (Xamarin.Forms.View view, Xamarin.Forms.Rectangle size) [0x00046] in <78f2e2234165408294ce634a82101454>:0     at CarouselView.FormsPlugin.Android.CarouselViewRenderer+PageAdapter.InstantiateItem (Android.Views.ViewGroup container, System.Int32 position) [0x000aa] in <78f2e2234165408294ce634a82101454>:0     at Android.Support.V4.View.PagerAdapter.n_InstantiateItem_Landroid_view_ViewGroup_I (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_container, System.Int32 position) [0x00011] in <27c17fe440cf491ba8255bcefade6e02>:0     at (wrapper dynamic-method) System.Object:7613faef-e6df-4e72-949c-70e9ffe163ff (intptr,intptr,intptr,int)
To me, this issue seems to be related to https://bugzilla.xamarin.com/show_bug.cgi?id=47911#c4.
Currently, CarouselView is added in xaml:
<controls:CarouselViewControl Orientation="Horizontal" InterPageSpacing="10" Position="0" PageIndicators="True" ItemsSource="{Binding Images}" x:Name="CarouselImages" IsVisible="false" Grid.Row="0" Grid.Column="0" Grid.RowSpan="3" Grid.ColumnSpan="3" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"> 	<controls:CarouselViewControl.ItemTemplate> 		<DataTemplate> 			<Image Aspect="AspectFill" Source="{Binding ImageUrl}"/> 		</DataTemplate> 	</controls:CarouselViewControl.ItemTemplate> </controls:CarouselViewControl>
I am using 2.3.2, but I also tried 4.2.7 on Forms <IP_ADDRESS>-pre3.
What could possibly cause this issue and how can I resolve it?
Thanks

Can you provide a demo project reproducing the issue?

Wow, that was a quick response.
While this demo doesn't make a lot of sense, it shows how I try to populate CarouselView with images and how I am running into a NullReferenceException.
DemoApp.zip
Thanks

I thought I have the same problem therefore I had a look into DemoApp. I think you are missing the initialization of the control:
CarouselViewRenderer.Init(); in MainActivity.cs

you are right, i am missing the initialization in this demo. but adding the line won't solve my problem.

jep but it shows that the problem is probably not relatet to a bug in the first place its more related to reading the documentation correctly.
I actually don't understand your DemoApp project. Its not a real XF project you cannot add references and its not a portable. Please notice the second line in the Readme:
Install in your PCL project and Client projects.
You did not install the package in the PCL since there is no pcl. Btw. you are using ItemSource with binding but you have no view model and you set the source twice, by binding and in code behind.
So there are many reasons for not working correctly.

@shoeIT it's not working for you because you are not using PCL.

yes thats what I mentioned to mcpummec, I don't have a problem anymore.
I use your controll inside my PCL and it works fine.


feat : Add toast to show the timestamp when the message was sent.

Added toast to show the timestamp when the message was sent.
Note : The message part is not fully implemented.

Need more details for further implementation on this particular feature.

please rectify this error

 please rectify this error

Can you please tell a way to run that snippet in order to check if it is resolved?

@Vishwajith-Shettigar wait for some time


Add base-product command

Add base-product command.
As the patch also needs support 'dest', so also include the below patch.
Will commit this  'dest' patch first, after that, will do the rebase work when merge this mainly patch.
plugin_helpers: Allow overriding 'dest' option.
JIRA: PDC-1914

Coverage increased (+0.2%) to 89.501% when pulling 4028fa3433fb584d52230d0e9d9c20344defeab9 on pdc-client-jira-1914 into f79982b7d3e1311e1b44d3b635de630c92227574 on master.

LGTM

Close this as patches have been merged.


Eliminate cgo usage.

This is silly. A separate C-kernel can only be created when there are no dependencies on external libraries


Add "How to build and test locally" section

The README.md file could have these sections:

"How to Build";
"How to test locally";

So any contributor knows how to test the repository locally.
/cc @zdne @Amzani

I think the guidelines Core Principles section (landing page) already covers these topics.  I'll close this issue.


Restrict videos to a certain size in the chat window

Is your feature request related to a problem? Please describe.
It is really messy that when someone or you yourself upload a video that it tends to take a lot of space in the chat window so that you have to scroll up a lot just to get back to prior messages or down to get back to recent ones.
Describe the solution you'd like
It would be clever to restrict the maximum size of the video element so that it doesn't just take up a lot of space inside the chat window

Do you suggest a max-width and/or max-height? I wonder what the "magical" number would be... Maybe max 40% of the chat height? Do you have a screenshot to make the issue clearer visually?

Do you suggest a max-width and/or max-height?

I think both would be good to have in some way. as seen in the GIF

Wow! Thanks for the gif. It makes it all much clearer 😮
I wonder how hard it will be to set max-height... Don't have time to look at it at the moment, but this will get fixed one way or another.

Yeah, I have realized this issue pretty early when I installed Convos and was surprised no one else showed this as it basically happens with every video.

The change will be part of the next release - Hopefully within 24 hours.

Yeah, I have realized this issue pretty early when I installed Convos and was surprised no one else showed this as it basically happens with every video.

I think the reason is that a lot of videos are horizontal and not vertically. At least I've never seen a vertical video in Convos, or I would've noticed.


Loading components on demand with sap.ui.define

OpenUI5 version: 1.54.4
I have problems to understand this error message from the ui5loader.js
https://github.com/SAP/openui5/blob/8c09ecea323ea8dbc75e919829ef9e0b3ea38c3a/src/sap.ui.core/src/ui5loader.js#L1521-L1525
We encounter this problem within the following setup (unfortunately I don't have a running example)
Our custom component looks like this
sap.ui.define([
    "sap/ui/core/UIComponent"
], function (UIComponent) {
    "use strict";

    var CustomComponent = UIComponent.extend("sap.ui.demo.custom.Component", {
        metadata: { ... }
    });

    CustomComponent.prototype.getSomeClient = function (sUrl) {
        return new Promise (function(resolve, reject) {
            sap.ui.define(["path/to/my/component/someClient"], function (someClient) {
                resolve(someClient);
            });
        }.bind(this));
    };

    return CustomComponent;
});

And we inherit from it within another component that tries to use the getSomeClient function like this
sap.ui.define([
    "sap/ui/demo/custom/Component"
], function (CustomComponent) {
    "use strict";

    var SomeModule = CustomComponent.extend("sap.ui.demo.some.Module", {
        metadata: { ... },
        doSomething = function() {
            this.getSomeClient.then(function(client) {
                // some operations on our custom client
            }
        }
    }

Is it generally a good idea to load components "on demand" using sap.ui.define. Or is this a special case because of the inheritance?
Sometimes I don't want to load all required components in a global scope. So is this still supported and best practice?
Any help is appreciated.

@Icydillic According to the API reference of sap.ui.define:

A single file must not contain multiple calls to sap.ui.define. Multiple calls currently are only supported in the so called 'preload' files that the UI5 merge tooling produces. The exact details of how this works might be changed in future implementations and are not part of the API contract.

Therefore, if some modules are to be loaded on demand within a module you define, the API sap.ui.require should be used instead of sap.ui.define.
sap.ui.define([
    "sap/ui/core/UIComponent"
], function(UIComponent) {
  // ...

  CustomComponent.prototype.getSomeClient = function(sUrl) {
    return new Promise(function(resolve, reject) {
      sap.ui.require(["path/to/my/component/someClient"], function(someClient) {
        resolve(someClient);
      });
    }.bind(this));
  };
});

You can read more about this in Modules and Dependencies: Static and Dynamic Dependencies.

Thank you very much for enlightening my understanding in this.
So if I want to use other components a sap.ui.require is a good way to go for but using a sap.ui.define will only work well on top level because it solves the dependencies with it's own sap.ui.require calls.
I'll give it a try.


#5 added some enhancements to UI

could you please review

thanks for contributing do star the repo

May I kindly request the 'hacktoberfest-accepted' tag?


Sync TaskRuns, not Runs

TaskRun is to a Task what PipelineRun is to a Pipeline [0]. A Run resource is used to execute a CustomTask[1].
We may want Run resources in the future, but for now, let's stick with the basic Tekton resources.
[0] https://tekton.dev/docs/pipelines/taskruns
[1] https://tekton.dev/docs/pipelines/runs/
Signed-off-by: Luiz Carvalho<EMAIL_ADDRESS>

Hi @lcarva, we have intentionally removed the syncing of TaskRuns because of pruning issues. Please see #122 and https://github.com/openshift-pipelines/pipeline-service/blob/main/docs/phase1_limitations.md#pruning-of-pipelineruns-and-taskruns. Until we have a kcp aware pruning mechanism this must be kept this way.

Hi @lcarva, we have intentionally removed the syncing of TaskRuns because of pruning issues. Please see #122 and https://github.com/openshift-pipelines/pipeline-service/blob/main/docs/phase1_limitations.md#pruning-of-pipelineruns-and-taskruns. Until we have a kcp aware pruning mechanism this must be kept this way.

Aha! Thanks for the pointer. What about Runs? Do we actually want to sync those?


Function to pre-select areas to keep hidden/obscure while taking a video

Hello
Do you think it would be possible to add a function to pre-select areas to keep hidden/obscure while taking a video?
Thx

Hello,
The goal would be to be able to make a video that takes up a large part of the screen without having to reveal the whole thing (like the central part).
for example here for an example of navigation in this application, there is no need for the central part with the personal photos displayed, it could very well be kept obscured/hidden while taking the video.

In the case of video, is it ok if this effect is also visible to you on screen? or are you looking for the obscure to only appear on the video and not on the screen you see? Is the current "Draw on Screen" capabilities sufficient for this? It already has the ability to draw shapes on your screen that will appear on video. There is no obscure option but you could draw a black rectangle.

It is now possible to edit the blur radius via the Pixelate tool.

Thank you very much for this :)

I have also added a filled rectangle to the screen drawing tools

Perfect , big thx !


explicitly declare supported Twig versions

Not being explicit which Twig versions the application supports mean
that users will get new major Twig releases when they become stable and
composer update is run. This can lead to undesired effects when the new
ajor release is breaking backwards compatibility.

I think this needs to be done in 2.7 as well.

Okay, I changed the target branch.

Thank you @xabbuh.


ci(release.yml): refactoring of workflow

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

v4.0.1
GitHub release

Your semantic-release bot :package::rocket:


Amplify push api throws error 403 with rds

How did you install the Amplify CLI?
npm
If applicable, what version of Node.js are you using?
v18.16.0
Amplify CLI Version
12.10.0
What operating system are you using?
Windows
Did you make any manual changes to the cloud resources managed by Amplify? Please describe the changes made.
No manual changes
Describe the bug
Whenever i try to run amplify push api command it returns an error Unable to retrieve layer mapping from https://amplify-rds-layer-resources.s3.amazonaws.com/sql-layer-versions/eu-south-1 with status code 403. But i'm not using rds at all
Expected behavior
i was expecting to push my schema update to the cloud
Reproduction steps
amplify push api
Project Identifier
No response
Log output

# Put your logs below this line

Unable to retrieve layer mapping from https://amplify-rds-layer-resources.s3.amazonaws.com/sql-layer-versions/eu-south-1 with status code 403.

Additional information
No response
Before submitting, please confirm:

[X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
[X] I have removed any sensitive information from my code snippets and submission.

Update:
I was able to reproduce the issue using the following steps

amplify init -> select region as eu-south-1
amplify add api
it should fail with the following

The error did not occur when running push with app in region such as us-east-1

Hey @ginuxone, the Amplify team has rolled back Amplify CLI v12.10.0 to v12.8.2 which should be the latest now. Could you retry running amplify push  with v12.8.2?

hey @ykethan I'll give it a try tomorrow at work! and let you know

@ykethan Yes! It's working now!
Thanks for the support!
I'll close the issue


Fix intermittent issues with server component test with valgrind

Summary: Increase event timeout and synchronising removing audio source in component tests.
Type: Fix
Test Plan: Valgrind server component tests.
Jira: NO-JIRA

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

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

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

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

Sanity tests for ['RPI4 Mediaclient'] added.
https://jenkinsrdkm.cmf.code.rdkcentral.com/job/test-components-flow/41980/

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


Update dependencies to the latest versions

Since we need to update nco to 5.0.7, we can also update other dependencies in the environments.

Update dependencies in ci.yml, prod.yml, and pub.yml

The dependencies versions should be loosened and simplified, so this GH issue is no longer needed.


Improve documentation

Add more detail on typical usage
Add installation instructions

@forsyth2, could you have a look at the modified README:
https://github.com/E3SM-Project/mache/blob/42b98eccdbf5c74b3b595e156f8f74b5f99c60ed/README.rst
and let me know if it clarifies questions you had in https://github.com/E3SM-Project/zppy/pull/237?

@forsyth2, thank you for the feedback.  I addressed your correction and suggestion.


GENEAread + gweardec + R3.3

This PR:

Fixes #627 => Deprecating the dependency on R package GENEAread such that we only use GGIRread now.
Fixes #722 => Replaces isFALSE and isTRUE by ==FALSE and ==TRUE to make code backward compatible with older R version 3.3.
Fixes #749 => Tidies up g.weardec function as it has been a long time since I wrote it, with a lot of redundancy and long code lines. Further, I am now adding a new boolean argument to allow for turning off the edge correction part of the nonwear detection. This is a part of the algorithm that cause problems when the recording only lasts one night and has some non-wear at the start or end.

Checklist before merging:

[ ] Existing tests still work (check by running the test suite, e.g. from RStudio).
[x] Added tests (if you added functionality) or fixed existing test (if you fixed a bug).
[ ] Updated or expanded the documentation.
[ ] Updated release notes in inst/NEWS.Rd with a user-readable summary. Please, include references to relevant issues or PR discussions.
[ ] Added your name to the contributors lists in the DESCRIPTION and CITATION.cff files.

Codecov Report

Merging #750 (15cca5d) into master (ecb001a) will increase coverage by 0.48%.
The diff coverage is 83.70%.

:exclamation: Current head 15cca5d differs from pull request most recent head cd62507. Consider uploading reports for the commit cd62507 to get more accurate results

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##           master     #750      +/-   ##
==========================================
+ Coverage   73.73%   74.21%   +0.48%
==========================================
  Files          88       88
  Lines       10868    10787      -81
==========================================
- Hits         8013     8006       -7
+ Misses       2855     2781      -74

Impacted Files
Coverage Δ

R/g.getmeta.R
62.54% <0.00%> (+0.20%)
:arrow_up:

R/g.part1.R
67.88% <0.00%> (ø)

R/zzz.R
11.11% <ø> (ø)

R/g.readaccfile.R
44.13% <42.85%> (+1.69%)
:arrow_up:

R/g.dotorcomma.R
67.27% <50.00%> (+0.60%)
:arrow_up:

R/g.inspectfile.R
63.38% <77.77%> (+7.80%)
:arrow_up:

R/g.weardec.R
93.75% <92.98%> (+6.44%)
:arrow_up:

R/check_params.R
75.37% <100.00%> (+0.75%)
:arrow_up:

R/createConfigFile.R
87.05% <100.00%> (+0.15%)
:arrow_up:

R/g.getbout.R
96.87% <100.00%> (ø)

... and 3 more

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


[admin] (links) Add individual Outlook requirement set redirects

Fixes https://github.com/OfficeDev/office-js-docs-reference/issues/1210.

Docs Build status updates of commit 84cf1ea:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Validate Inventory Module

Make sure that all of the functionality of the inventory module is still working after upgrade to Ember 1.13/ember-pouch

Inventory looks good.


Make QueryResult fields and QueryResultRow public

Hello team,
I want to use postgis types with postgis crate,  but the geometry type is not support currently
So, I use custom type like this:
use postgis::ewkb::Point as EwkbPoint;

#[derive(Clone, Debug)]
pub struct Point(EwkbPoint);

impl sqlx::Type<Postgres> for Point {
    fn type_info() -> PgTypeInfo {
        PgTypeInfo::with_name("geometry")
    }
}

impl<'de> sqlx::Decode<'de, Postgres> for Point {
    fn decode(value: PgValueRef<'de>) -> Result<Self, BoxDynError> {
        if value.is_null() {
            // Return empty geometry
            return Ok(Point(EwkbPoint::new(0.0, 0.0, None)));
        }
        let blob = <&[u8] as Decode<Postgres>>::decode(value)?;
        let mut file = Cursor::new(blob);
        let p = EwkbPoint::read_ewkb(&mut file).unwrap();
        return Ok(Point(p));
    }
}

impl<'q, DB> sqlx::Encode<'q, DB> for Point {
...
}

impl Serialize for Point {
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: serde::Serializer,
    {
        let s = format!("{} {}", (*self).x, (*self).y);
        serializer.serialize_str(s.as_str())
    }
}

impl<'de> Deserialize<'de> for Point {
    fn deserialize<D>(deserializer: D) -> Result<Point, D::Error>
    where
        D: Deserializer<'de>,
    {
        deserializer.deserialize_bytes(PointVisitor)
    }
}

impl PartialEq for Point {
   ...
}

impl Nullable for Point {
    fn null() -> Value {
        Value::Bytes(None)
    }
}

impl From<Point> for Value {
    fn from(p: Point) -> Self {
        let buf: Vec<u8> = Vec::new();
        let mut buf = Cursor::new(buf);
        (*p).as_ewkb().write_ewkb_body(&mut buf).unwrap();
        Value::Bytes(Some(Box::new(buf.into_inner())))
    }
}

impl ValueType for Point {
    fn try_from(v: Value) -> Result<Self, database::sea_query::ValueTypeErr> {
        match v {
            Value::Bytes(Some(buf)) => {
                let mut file = Cursor::new(*buf);
                let p = EwkbPoint::read_ewkb(&mut file).unwrap();
                Ok(Point(p))
            }
            _ => Err(sea_query::ValueTypeErr),
        }
    }

    fn type_name() -> String {
        stringify!(Point).to_owned()
    }

    fn column_type() -> database::sea_query::ColumnType {
        sea_query::ColumnType::Custom(NameIden("geometry").into_iden())
    }
}

impl TryGetable for Point {
    fn try_get(res: &QueryResult, pre: &str, col: &str) -> Result<Self, sea_orm::TryGetError> {
        let column = format!("{}{}", pre, col);
        match &res.row {
            sea_orm::QueryResultRow::SqlxPostgres(row) => {
                use sqlx::Row;
                row.try_get::<Option<Point>, _>(column.as_str())
                    .map_err(|e| sea_orm::TryGetError::DbErr(sea_orm::sqlx_error_to_query_err(e)))
                    .and_then(|opt| opt.ok_or(sea_orm::TryGetError::Null))
            }
            _ => Err(sea_orm::TryGetError::DbErr(
                DbErr::Custom("only unsupport postgresql".to_owned()).into(),
            )),
        }
    }
}

convert geometry to point need impl sqlx::Decode,  So I need QueryResultRow public
Would it be possible for these fields to be changed to be public similar to the relationship data? Alternatively could getter methods be implemented to fetch the row stored within QueryResult?
If they are public, it's able to impl any custom types in database by user.
I use sea-orm in rust. sea-orm and sea-query is wonderful! Thanks yours work!

I think so. At least if that's the only workaround available for now.

I don't think so as we do not want to 'leak' the SQLx types through the API.
Although it seems that these integration could be built into the library behind a feature gate. It benefits everyone then.
PR would be welcome. Let us know your thoughts?

Thank you for your reply quickly.
I am new to rust, and not very familiar with rust, so I couldn't make a right PR now.
I have a thought,
defined a struct just like named RawType that contain Vec , the raw binary data from database, then everyone can convert it to another type in rust within TryGetable trait.And it don't need to 'leak' sqlx types.
The RawType need impl sqlx::Type , and fn compatible() return true always.
I don't know if it will work?
I want to have a try 😀

Yeah that's one solution.
I was suggesting may be we can instead provide postgis support inside SeaORM. Such that we can simply dump all the boilerplate into a separate file which can be enabled with a sqlx-postgis feature flag.

Yeah that's one solution. But we can also save all the hassle.
I was suggesting may be we can instead provide postgis support inside SeaORM. Such that we can simply dump all the boilerplate into a separate file which can be enabled with a sqlx-postgis feature flag.

Oh, I see. May be I am able to do.  If I work it out and I will make a PR for it.

Hey @qyihua, I think SQLx did try to support postgis crate but it's still WIP

launchbadge/sqlx#166

Just a side note loll

I have an issue:
postgis type need convert to json value, I found crate geo-json and  geozero::wkt, but they haven't support 3d point in postgis yet.
I don't know how to deal with the serialize of postgis type. And it will have a lot of work without geo-json or geozero.
I am not able to save all the hassle now.
Can anyone help? @tyt2y3 @billy1624

Related issue: https://github.com/SeaQL/sea-orm/issues/559

I have an issue: postgis type need convert to json value, I found crate geo-json and geozero::wkt, but they haven't support 3d point in postgis yet. I don't know how to deal with the serialize of postgis type. And it will have a lot of work without geo-json or geozero. I am not able to save all the hassle now. Can anyone help? @tyt2y3 @billy1624

Hey @qyihua, sorry for the delay. I think you can use newtype pattern to define a custom serializer / deserializer?
pub struct NewStruct(postgis::SomeType);

// implement custom serializer and deserializer for NewStruct
impl ... for NewStruct { ... }

I'll close this for now. If you still have questions please reopen this :)

Is this any further along?
Even this

I don't think so as we do not want to 'leak' the SQLx types through the API.
Although it seems that these integration could be built into the library behind a feature gate. It benefits everyone then.
PR would be welcome. Let us know your thoughts?

Thank you for your reply quickly.
I am new to rust, and not very familiar with rust, so I couldn't make a right PR now. I have a thought, defined a struct just like named RawType that contain Vec , the raw binary data from database, then everyone can convert it to another type in rust within TryGetable trait.And it don't need to 'leak' sqlx types. The RawType need impl sqlx::Type , and fn compatible() return true always. I don't know if it will work? I want to have a try 😀

as a stop gap solution?

Hey @Zizico2, would you be interested on implementing that stopgap solution?

Yes!


Need guidance on how the code would look like for remote start transaction

I am trying to get our OCPP server to start the charger using RemoteStartTransaction request. Question I have here is with OCPP_loop() does the program automatically detect such a request and react to it OR would we need to enable a function to start the energy flow when onRemoteStartTransactionRecevieRequest is invoked?
An example function on how this would look like would be very helpful.

Hi Akhil,
Yes, the OCPP library listens to RemoteStartTransaction requests and your client has to define a reaction to it. See this example.

getting error
src/main.cpp:258:30: error: too few arguments to function 'void startTransaction(const char*, ArduinoOcpp::OnReceiveConfListener, ArduinoOcpp::OnAbortListener, ArduinoOcpp::OnTimeoutListener, ArduinoOcpp::OnReceiveErrorListener, std::unique_ptrArduinoOcpp::Timeout)'


extend automatic line continuation to autocmds and custom Ex commands

Is your feature request about something that is currently impossible or hard to do? Please describe the problem.
It is cumbersome to split a long autocmd or custom Ex command on multiple lines to improve its readability, because we need to add a leading backslash on each splitted line.
And it is cumbersome to join a long autocmd or custom Ex command on a single line when it gets shorter after a refactoring, because we need to remove a leading backslash on each joined line.
Describe the solution you'd like
In Vim9 script, extend the concept of automatic line continuation to autocmds and custom Ex commands.
Describe alternatives you've considered
I guess I could try a plugin such as splitjoin, but it would introduce one more dependency; and the backslashes would still make the code a little less readable.
Additional context
Vim already allows us to omit the leading backslash when a line starts with ->, even at the script level (i.e. no need of a :def function):
vim9script
let result = [3, 2, 1]
           ->reverse()
           ->join()
echo result

If Vim can allow an automatic line continuation in a multiline assignment, maybe it could do the same in a multiline autocmd.  Instead of looking for -> at the start of a line, maybe it could look for |.  As far as I can tell, a bar at the start of a line has no useful meaning.  Its only effect is to print the current line (is it documented?):
:|

Which you can already get with the much more readable :print command.
We can already refactor this autocmd in Vim script legacy:
autocmd CursorHold * call A()
                  \| call B()
                  \| call C()

into this in Vim9 script:
autocmd CursorHold * A()
                  \| B()
                  \| C()

With the enhancement, we could go a little further:
autocmd CursorHold * A()
                   | B()
                   | C()

Similarly, this custom Ex command in Vim script legacy:
com MyCmd call A()
       \| call B()
       \| call C()

Can be refactored into this in Vim9 script:
com MyCmd A()
       \| B()
       \| C()

With the enhancement, we could write:
com MyCmd A()
        | B()
        | C()

I was thinking about multiline mappings too, but it seems it wouldn't be possible.
Contrary to autocmds and commands which run in the context of the script where they're defined, and thus can leverage the new Vim9 syntax, mappings run outside the script; therefore, they can't leverage the new Vim9 syntax.

We haven't yet discussed how to specify whether the argument of :autocmd and :command uses legacy Vim script syntax or Vim9 script syntax.  Let's do that elsewhere.
So this is about the proposal to make a leading bar after an :autocmd and :command line a continuation line.  As you mention, the main advantage is that lines can be joined and split without further edits, so long as the split is just before the bar.
I think that can work.  It fits in with the Vim9 script work, in the sense that we take away a valid, but hardly ever used, old Vi command.  Thus it's not backwards compatible.

It would also be useful for global commands.
Right now, we need explicit line continuations:
g/pat/ cmd1
   \ | cmd2
   \ | cmd3
   ^

It would be simpler to edit this type of commands without line continuations:
g/pat/ cmd1
     | cmd2
     | cmd3

Thank you for implementing this.  I think it will be really appreciated; explicit continuation lines are one of the main reasons why people dislike Vim script.  The more we can get rid of them, the better.
Some feedback: I've quickly tested the feature, and while it works in a :def function:
vim9script
def Func()
    au CursorHold * echom 'first'
        | echom 'second'
    do CursorHold
enddef
Func()

first
second

It doesn't work at the script level:
vim9script
au CursorHold * echom 'first'
    | echom 'second'
do CursorHold

E749: empty buffer
first

Obviously, it is much more important that it works in a function than at the script level.  Still, it's inconsistent.  If it's working as intended or can only work in a function, then maybe we should document this limitation.

I guess it's working as intended, but to include a comment between 2 lines joined with a bar, we need an explicit continuation line:
vim9script
au CursorHold * echom 'BEFORE bar'
    # some comment
    | echom 'AFTER bar'
do CursorHold

BEFORE bar

vim9script
au CursorHold * echom 'BEFORE bar'
    #\ some comment
    | echom 'AFTER bar'
do CursorHold

BEFORE bar
AFTER bar

The current documentation makes it look like #\ is only necessary for a continuation line starting with a backslash:

-In places where line continuation with a backslash is still needed, such as

while in reality, it's also required for a continuation line starting with a bar.

-In places where line continuation with a backslash or a bar is still needed, such as

As a suggestion, here is a patch:
diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt
index e8d97a9c3..584ca0b5e 100644
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -578,8 +578,9 @@ add the "C" flag to 'cpoptions': >
 If the heredoc is inside a function 'cpoptions' must be set before :def and
 restored after the :enddef.

-In places where line continuation with a backslash is still needed, such as
-splitting up a long Ex command, comments can start with #\ instead of "\: >
+In places where line continuation with a backslash or a bar is still needed,
+such as splitting up a long Ex command, comments can start with #\ instead of
+"\: >
       syn region Text
 	      \ start='foo'
 	      #\ comment

This is a bit tricky.  In the first example, it's strange that the "echom 'AFTER bar'" goes missing.  Looks like it's joined into the comment.  I'll update the help and add an example.


Which issue does this PR close?

Closes #.
Rationale for this change
Some small changes to improve readability in cross join and nested loop join

What changes are included in this PR?

Are these changes tested?

Are there any user-facing changes?

Thanks @akurmustafa @Weijun-H


Paperlessdocument file encoding

Hi,
I'm missing some information about the encoding of the files to upload.
In the provided examples for the paperlessdocuments/{version}/upload endpoint the field UserCreatedFormFile looks like it is base64 encoded, but I couldn't find any information about that in the documentation.
So: Is this field meant to be base64 encoded and if so the documentation should reflect that.

Hi, thank you for your comment and patience. We have updated the specs to resolve this issue.


ci: Update CNS daemonset capabilities within E2E

Reason for Change:

Updates CNS daemonset capabilities to ensure that a race condition does not occur when creating the /var/run/azure-vnet directory
Issue Fixed:

Contributes to CI/CD to cover #2818
Requirements:

[x] uses conventional commit messages

[ ] includes documentation
[ ] adds unit tests
[x] relevant PR labels added

Notes:

It is not preventing a race, it is testing that we no longer have a race between the CNI and kubelet creating the dirs with incompatible permissions. CNI used to make it with 0644, but kubelet would make it with 0755 - so if CNI wins, CNS should not have access to the dir.
...but it does, because it has CAP_DAC_OVERRIDE by default. Dropping caps exposes the race and ensures we have resolved it by changing the CNI Mkdir perms.
This was a fun one to debug 🥲

fixes #2818

@rbtr Awesome, that makes sense to me :)

Thanks for the explanation @rbtr, was going to link the issue and ask for you to comment more if needed 😆 .


Prototype new install docs

I've tried to remove the stuff that is not directly relevant to pajbot.
Pull request checklist:

[x] CHANGELOG.md was updated, if applicable

The result can be viewed here: https://github.com/pajbot/pajbot/tree/randers00-new-install-docs/install-docs

Looks nice, @alazymeme can use this to set up a bot and let me know if he has any feedback

First step doesn't work on Ubuntu v19.10 - not sure if you're adding a specific version to the guide though: https://pastebin.com/raw/mcJ1gkCJ

First step doesn't work on Ubuntu v19.10 - not sure if you're adding a specific version to the guide though: https://pastebin.com/raw/mcJ1gkCJ

I'm not sure if I should be using the review function, as conflicting opinions arise, but I'll just leave my feedback here.

We have found that it would be benefitial to include the CloudFlare domain stuff anyways - at least the certbot how-to from the old steps: https://github.com/pajbot/pajbot/blob/d15b88a9dde00a498157ffa046e05d14259ca53f/install-docs/debian10/install-debian10.txt#L99-L120

@RAnders00 Will that include the nginx instructions, or is that apart of the new docs?

the new docs should be clearer about the fact you're supposed to put the streamer's name into every place it says streamer_name, especially in the example config file.
I should also put the "full" nginx setup stuff back, sort of as an optional "If you need a full nginx setup to get you started" thing.

Few things:

add sudo apt update and sudo apt upgrade to the start of the script - Just running these two commands fixed some issues for me (a regular pleb wouldn't have thought of this)

I was running into some permissions issues, but I need to retest this

The example config file is very "confusing", all the information just seems cluttered with all the comments there. I understand that the comments are beneficial for idiots like me, but they genuinely just confuse me more 4Head

Other than that and adding the certificate instructions from your other guide (for SSL), I also ran into an issue with my own incompetence of not reading the guide. Otherwise it's pretty easy to follow BroBalt

Might be slightly more useful to include all of these lines in the new guide:
https://github.com/pajbot/pajbot/blob/d15b88a9dde00a498157ffa046e05d14259ca53f/install-docs/debian10/install-debian10.txt#L76-L120

Also one more thing; add an https redirect config somewhere in the tutorial

Will run through this again when I get home

Will test again once the docs get updated with the fixes pajaDank - ping me when they get updated, I've got a channel I need to add it to

Don't forget to add the http to https redirect