 not working.

According to neovim docs,
|CTRL-W_CTRL-C|	CTRL-W CTRL-C	   same as "CTRL-W c"

so it should also close the window, but currently doesn't. It's a good thing to have because I can press wcwcwc a lot faster while my pinky holds ctrl. Pressing ctrl+w c ctrl+w c ctrl+w c is slower and error prone (easy to accidentally do <c-w><c-c>, which is probably why that map exists in neovim).

So far I tried this:
        // Make ctrl+c also send <c-c> to neovim in normal mode. {
            // First modify Neo Vim's escape behavior to work only when not in normal mode, so everything works as expected.
            { "key": "ctrl+c", "command": "vscode-neovim.escape", "when": "editorTextFocus && neovim.init && neovim.mode != normal" },
            // Then, only send <c-c> in normal mode so that our normal mode <c-c> in init.vim works.
            { "key": "ctrl+c", "command": "vscode-neovim.send", "when": "editorTextFocus && neovim.init && neovim.mode == normal", "args": "<c-c>" },
        // }

        { "key": "ctrl+w ctrl+c", "command": "vscode-neovim.send", "when": "editorTextFocus && neovim.ctrlKeysNormal && neovim.init && neovim.mode != 'insert'", "args": "<c-w><c-c>" },

but with or without that line, when I press <c-w><c-c> the underlying neovim seems to exit (or get stuck), then switching to another tab and coming back fixes it.

A workaround I found is to use these mappings:
            { "key": "ctrl+w ctrl+c", "command": "workbench.action.closeActiveEditor", "when": "editorTextFocus && neovim.init && neovim.mode == normal" },
            { "key": "ctrl+w c", "command": "workbench.action.closeActiveEditor", "when": "editorTextFocus && neovim.init && neovim.mode == normal" },

but this overrides the devault ctrl+w mapping, and means I have to add mappings for all the other ctrl+w mappings which no longer work.

when I press  the underlying neovim seems to exit (or get stuck), then switching to another tab and coming back fixes it.

Hmmmmm, regarding that, if I'm on the last window, first time I press <c-w><c-c> nothing appears to happen in VS Code except normal becomes unresponsive. But when I press <c-w><c-c> again, I see the message E444: Cannot close the last window at the bottom of VS Code.
This indicates that Neovim is in fact receiving the key sequences, but perhaps the extension isn't doing the right thing to VS Code in this case.

Why are you sending this hotkey to Neovim?
    {
        "key": "ctrl+w c",
        "command": "workbench.action.closeEditorsInGroup",
        "when": "!terminalFocus"
    },

I'm learning! Adding this to init.vim worked:
nnoremap <C-w>c <Cmd>call VSCodeNotify('workbench.action.closeActiveEditor')<CR>
xnoremap <C-w>c <Cmd>call VSCodeNotify('workbench.action.closeActiveEditor')<CR>

Looks like we just need to lines at
https://github.com/asvetliakov/vscode-neovim/blob/d366766f397954078e5b9eeb01532913fb90b48f/vim/vscode-window-commands.vim#L60-L62

I think that it would be more convenient to map such things inside VSCode since I see no reason to call the VSCode command through Neovim.
@asvetliakov, what do you think?

Should the extension instead listen for (with autocmds?) when a buffer is closed, and then close the matching window, so it doesn't matter what neovim key combo the user has mapped for closing a window?
Similarly, could it listen for new tabs, and then make the new tab in VS Code, that way it doesn't matter how the user open a new tab (f.e. they might have functions can call :tabnew).

I think that it would be more convenient to map such things inside VSCode since I see no reason to call the VSCode command through Neovim.

Just defining any keybinding in vscode started by ctrl+w will block any <C-w> keybindings for neovim. Vscode just wouldn't pass the key to extension, unless it was explicitly defined

Just defining any keybinding in vscode started by ctrl+w will block any  keybindings for neovim. Vscode just wouldn't pass the key to extension, unless it was explicitly defined

Got it!

I think it doesn't work because of ctrl+c escape key bound in vscode. If you don't use it you can unbind it and set your mapping in neovim. It should work i think

Yeah, I modified VS Code ctrl+c already, so it doesn't do Escape in Normal mode (see third comment above).
Then, after adding this to init.vim it works great:
nnoremap <c-w><c-c> <cmd>call VSCodeNotify('workbench.action.closeActiveEditor')<cr>
xnoremap <c-w><c-c> <cmd>call VSCodeNotify('workbench.action.closeActiveEditor')<cr>

Made a PR for it: https://github.com/asvetliakov/vscode-neovim/pull/494

Yeah, I modified VS Code ctrl+c already, so it doesn't do Escape in Normal mode (see third comment above).
Then, after adding this to init.vim it works great:
nnoremap <c-w><c-c> <cmd>call VSCodeNotify('workbench.action.closeActiveEditor')<cr>
xnoremap <c-w><c-c> <cmd>call VSCodeNotify('workbench.action.closeActiveEditor')<cr>

Made a PR for it: https://github.com/asvetliakov/vscode-neovim/pull/494


[BUG] Pod eviction timeout when draining node causes cycleNodeRequest transitioning errors

Describe the bug
Created a deployment which is protected by PDB with maxUnavailable = 0, and tried to cycle the node where the pod was running. Node draining failed as the eviction of the pod timed out as expected. The cycleNodeRequest then got rapidly transitioned between WaitingTermination and Initialised phases while errors were repeatedly hit. cyclops-operator pod log also got flooded by these messages and errors.
To Reproduce
Created a deployment which is protected by PDB with maxUnavailable = 0, and tried to cycle the node where the pod was running.
Expected behavior
cycleNodeRequest ends up with Failed status
Screenshots or Logs
Before pod eviction timeout, cycleNodeRequest was in WaitingTermination phase
2020-09-17T20:49:39.269Z        INFO    cyclenodestatus.controller      Transitioning cycleNodeStatus   {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling-node-name", "namespace": "lab0", "phase": "DrainingPods"}
2020-09-17T20:49:39.270Z        INFO    cyclenodestatus.controller      found drainable pods    {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling-node-name", "namespace": "lab0", "phase": "DrainingPods", "numPods": 1, "nodeName": "node-name"}
2020-09-17T20:49:39.270Z        DEBUG   controller-runtime.manager.events       Normal  {"object": {"kind":"CycleNodeStatus","namespace":"lab0","name":"lab0-eks-test-node-rolling-20200917134652-test-rolling-node-name","uid":"4db7fddf-f927-11ea-a7f2-0e74e339351b","apiVersion":"atlassian.com/v1","resourceVersion":"97750821"}, "reason": "DrainingPods", "message": "Draining pods from node: node-name"}
2020-09-17T20:49:39.272Z        INFO    k8s.pod.go      Evicting pod    {"podName": "test-6bd8f475c-65dc6", "nodeName": "node-name", "apiVersion": "policy/v1beta1"}
2020-09-17T20:49:39.283Z        INFO    cyclenodestatus.controller      waiting to retry after receiving StatusTooManyRequests error    {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling-node-name", "namespace": "lab0", "phase": "DrainingPods", "podName": ""}
2020-09-17T20:49:39.283Z        INFO    cyclenodestatus.controller      Finished transitioning cycleNodeStatus  {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling-node-name", "namespace": "lab0", "phase": "DrainingPods", "requeue": true, "requeue_after": "15s"}

After timeout, cycleNodeStatus transitioning error was hit repeatedly
2020-09-17T23:49:43.436Z        ERROR   cyclenodestatus.controller      Error transitioning cycleNodeStatus     {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling-node-name", "namespace": "lab0", "phase": "DrainingPods", "error": "timed out while draining pods"}
github.com/go-logr/zapr.(*zapLogger).Error
        /go/pkg/mod/github.com/go-logr/zapr@v0.1.1/zapr.go:128
github.com/atlassian-labs/cyclops/pkg/controller/cyclenodestatus/transitioner.(*CycleNodeStatusTransitioner).Run
        /go/src/github.com/atlassian-labs/cyclops/pkg/controller/cyclenodestatus/transitioner/transitioner.go:51
github.com/atlassian-labs/cyclops/pkg/controller/cyclenodestatus.(*Reconciler).Reconcile
        /go/src/github.com/atlassian-labs/cyclops/pkg/controller/cyclenodestatus/controller.go:118
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler
        /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.5.2/pkg/internal/controller/controller.go:256
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
        /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.5.2/pkg/internal/controller/controller.go:232
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker
        /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.5.2/pkg/internal/controller/controller.go:211
k8s.io/apimachinery/pkg/util/wait.JitterUntil.func1
        /go/pkg/mod/k8s.io/apimachinery@v0.17.4/pkg/util/wait/wait.go:152
k8s.io/apimachinery/pkg/util/wait.JitterUntil
        /go/pkg/mod/k8s.io/apimachinery@v0.17.4/pkg/util/wait/wait.go:153
k8s.io/apimachinery/pkg/util/wait.Until
        /go/pkg/mod/k8s.io/apimachinery@v0.17.4/pkg/util/wait/wait.go:88

Then cycleNodeStatus ended as Failed, but cycleNodeRequest started to flap rapidly between WaitingTermination and Initialised, until it was deleted
2020-09-17T23:49:43.436Z        INFO    cyclenodestatus.controller      Transitioning cycleNodeStatus   {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling-node-name", "namespace": "lab0", "phase": "Failed"}
2020-09-17T23:49:43.436Z        INFO    cyclenodestatus.controller      Finished transitioning cycleNodeStatus  {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling-node-name", "namespace": "lab0", "phase": "Failed", "requeue": false, "requeue_after": "0s"}
2020-09-17T23:49:43.436Z        DEBUG   controller-runtime.controller   Successfully Reconciled {"controller": "cyclenodestatus.controller", "request": "lab0/lab0-eks-test-node-rolling-20200917134652-test-rolling-node-name"}
2020-09-17T23:49:43.443Z        INFO    cyclenodestatus.controller      Transitioning cycleNodeStatus   {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling-node-name", "namespace": "lab0", "phase": "Failed"}
2020-09-17T23:49:43.443Z        INFO    cyclenodestatus.controller      Finished transitioning cycleNodeStatus  {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling-node-name", "namespace": "lab0", "phase": "Failed", "requeue": false, "requeue_after": "0s"}
2020-09-17T23:49:43.443Z        DEBUG   controller-runtime.controller   Successfully Reconciled {"controller": "cyclenodestatus.controller", "request": "lab0/lab0-eks-test-node-rolling-20200917134652-test-rolling-node-name"}
2020-09-17T23:49:49.527Z        INFO    cyclenoderequest.controller     Transitioning cycleNodeRequest  {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling", "namespace": "lab0", "phase": "WaitingTermination"}
2020-09-17T23:49:49.528Z        INFO    cyclenoderequest.controller     Child has failed        {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling", "namespace": "lab0", "phase": "WaitingTermination", "nodeName": "lab0-eks-test-node-rolling-20200917134652-test-rolling-node-name", "status": "Failed", "message": "timed out while draining pods"}
2020-09-17T23:49:49.528Z        DEBUG   controller-runtime.manager.events       Normal  {"object": {"kind":"CycleNodeRequest","namespace":"lab0","name":"lab0-eks-test-node-rolling-20200917134652-test-rolling","uid":"ee0f3fa4-f926-11ea-9bdb-0a9852e5c4cd","apiVersion":"atlassian.com/v1","resourceVersion":"97750817"}, "reason": "WaitingTermination", "message": "Waiting for instances to terminate"}
2020-09-17T23:49:49.528Z        DEBUG   controller-runtime.manager.events       Warning {"object": {"kind":"CycleNodeRequest","namespace":"lab0","name":"lab0-eks-test-node-rolling-20200917134652-test-rolling","uid":"ee0f3fa4-f926-11ea-9bdb-0a9852e5c4cd","apiVersion":"atlassian.com/v1","resourceVersion":"97750817"}, "reason": "ReapChildren", "message": "Failed to cycle node: node-name, reason: timed out while draining pods"}
2020-09-17T23:49:49.540Z        DEBUG   controller-runtime.controller   Successfully Reconciled {"controller": "cyclenodestatus.controller", "request": "lab0/lab0-eks-test-node-rolling-20200917134652-test-rolling-node-name"}
2020-09-17T23:49:49.540Z        INFO    cyclenoderequest.controller     Reaped child    {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling", "namespace": "lab0", "phase": "WaitingTermination", "nodeName": "lab0-eks-test-node-rolling-20200917134652-test-rolling-node-name", "status": "Failed"}
2020-09-17T23:49:49.540Z        INFO    cyclenoderequest.controller     Transition back to Initialised to grab more child nodes {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling", "namespace": "lab0", "phase": "WaitingTermination", "ActiveChildren": 0, "Concurrency": 1}
2020-09-17T23:49:49.550Z        INFO    cyclenoderequest.controller     Finished transitioning cycleNodeRequest {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling", "namespace": "lab0", "phase": "WaitingTermination", "requeue": true, "requeue_after": "10s"}
2020-09-17T23:49:49.550Z        INFO    cyclenoderequest.controller     Transitioning cycleNodeRequest  {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling", "namespace": "lab0", "phase": "WaitingTermination"}
2020-09-17T23:49:49.550Z        INFO    cyclenoderequest.controller     Transition back to Initialised to grab more child nodes {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling", "namespace": "lab0", "phase": "WaitingTermination", "ActiveChildren": 0, "Concurrency": 1}
2020-09-17T23:49:49.550Z        DEBUG   controller-runtime.manager.events       Normal  {"object": {"kind":"CycleNodeRequest","namespace":"lab0","name":"lab0-eks-test-node-rolling-20200917134652-test-rolling","uid":"ee0f3fa4-f926-11ea-9bdb-0a9852e5c4cd","apiVersion":"atlassian.com/v1","resourceVersion":"97816499"}, "reason": "WaitingTermination", "message": "Waiting for instances to terminate"}
2020-09-17T23:49:49.554Z        ERROR   cyclenoderequest.controller     unable to update API object     {"name": "lab0-eks-test-node-rolling-20200917134652-test-rolling", "namespace": "lab0", "phase": "WaitingTermination", "objectType": "atlassian.com/v1, Kind=CycleNodeRequest", "error": "Operation cannot be fulfilled on cyclenoderequests.atlassian.com \"lab0-eks-test-node-rolling-20200917134652-test-rolling\": the object has been modified; please apply your changes to the latest version and try again"}

... ...

2020-09-18T01:40:38.420Z        ERROR   controller-runtime.controller   Reconciler error        {"controller": "cyclenoderequest.controller", "request": "lab0/lab0-eks-test-node-rolling-20200917134652-test-rolling", "error": "Operation cannot be fulfilled on cyclenoderequests.atlassian.com \"lab0-eks-test-node-rolling-20200917134652-test-rolling\": StorageError: invalid object, Code: 4, Key: /registry/atlassian.com/cyclenoderequests/lab0/lab0-eks-test-node-rolling-20200917134652-test-rolling, ResourceVersion: 0, AdditionalErrorMsg: Precondition failed: UID in precondition: ee0f3fa4-f926-11ea-9bdb-0a9852e5c4cd, UID in object meta: "}
github.com/go-logr/zapr.(*zapLogger).Error
        /go/pkg/mod/github.com/go-logr/zapr@v0.1.1/zapr.go:128
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler
        /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.5.2/pkg/internal/controller/controller.go:258
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
        /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.5.2/pkg/internal/controller/controller.go:232
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker
        /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.5.2/pkg/internal/controller/controller.go:211
k8s.io/apimachinery/pkg/util/wait.JitterUntil.func1
        /go/pkg/mod/k8s.io/apimachinery@v0.17.4/pkg/util/wait/wait.go:152
k8s.io/apimachinery/pkg/util/wait.JitterUntil
        /go/pkg/mod/k8s.io/apimachinery@v0.17.4/pkg/util/wait/wait.go:153
k8s.io/apimachinery/pkg/util/wait.Until
        /go/pkg/mod/k8s.io/apimachinery@v0.17.4/pkg/util/wait/wait.go:88

Kubernetes Cluster Version
v1.14.9
Cyclops Version
v1.0.0
Additional context
CycleNodeRequest events shows tens of thousands of transitions within <5hr
Events:
  Type    Reason              Age                        From     Message
  ----    ------              ----                       ----     -------
  Normal  SelectingNodes      5m32s (x39845 over 4h50m)  cyclops  Selecting nodes to terminate
  Normal  WaitingTermination  32s (x43405 over 4h47m)    cyclops  Waiting for instances to terminate

CycleNodeStatus objects cannot be queried through kubectl to verify the status (even when there was no errors in CycleNodeRequest. please let me know if a separate issue should be created for this)
$ kubectl get cyclenodestatus
No resources found.

Hi @chaosunsfx,
Thanks for raising this issue!
I see the issue there. We can look into this. I imagine the solution would try to make the CNR fails much faster if stuck draining pods, and making it so Cyclops doesn't flap so fast between states, creating a large volume of logs and etcd events. You're also more than welcome to submit a PR if you have your own solution in the meantime.
As a recommendation, try not to run Cyclops on nodegroups where you expect Pods to have Disruption Budgets of maxUnavailable = 0, as the desired behavior if Cyclops in this case will always be to fail.

Thanks @Jacobious52 .
Yes. We were just testing whether it could handle failed node draining correctly, and will avoid this in real use cases.

Not hit since v1.1.1. Closing it.


API access to LCS monitoring data

Hi,
We'd like to integrate LCS monitoring data to our monitoring tool. The interesting monitoring metrics include SQL deadlocks, slow SQL statements (%), and server CPU utilizations. In other word, the data that is shown in Health metrics tab of Environment monitoring section in LCS user interface.
Does LCS offer a ready-to-use REST api for us to access? Or maybe the metrics are collected to Azure Monitor where we could get them?
It seems that LCS also has https://diag.lcs.dynamics.com/ComponentMonitors/GetMetricData REST API which offers the data to the frontend - perhaps we could utilize that?
Thanks in advance,
BR,
Tommi Palomäki

Bug 276839 has been logged to track this issue.

Thanks @sericks007 . Probably https://diag.lcs.dynamics.com/ComponentMonitors/GetMetricData could be the right answer - the problem is that it does not seem to support authentication via OAuth 2.0 access token ie. granting permissions to the resource from Azure Application management and then using a token in Authorization http header to access the REST API.

I'd like to see what Microsoft's solution is as I have a definite requirement to deliver monitoring and alerting on D365.
Environment monitoring within D365 is useful, but without being able to raise alerts when certain things occur it's not good enough.

We are currently using the following solution:

LCS monitoring data is queried from diag.lcs.dynamics.com REST interfaces that the LCS web UI uses
There is currently no good way to generate an authentication token for machine clients; queries require cookies that must be generated manually by logging into LCS
To overcome this, we implemented a Selenium job that logs into LCS once a day and stores the cookie and other session data for the monitoring process

A more client-friendly solution would be much appreciated :)

Much appreciated @kompa3 - that gives me a good start.

@kompa3, thank you for your posts! Unfortunately, we're unable to handle requests for the product here. Please consider adding your request to the Ideas site.

@kompa3

We are currently using the following solution:

LCS monitoring data is queried from diag.lcs.dynamics.com REST interfaces that the LCS web UI uses
There is currently no good way to generate an authentication token for machine clients; queries require cookies that must be generated manually by logging into LCS
To overcome this, we implemented a Selenium job that logs into LCS once a day and stores the cookie and other session data for the monitoring process

A more client-friendly solution would be much appreciated :)

The above sounds like a nice workaround. There a couple of REST calls which I've found in LCS, that I would like to make use of.
I'm able to get a response by using the "copy as cURL" command in Chrome and pasting that into Postman, as it contains all the required headers (the cookie being the main one).
Would you be willing to share how you automated the process in Selenium to fetch and store the cookie, and in what manner you then query LCS? My goal is to get certain environment data and related metrics onto our SharePoint site.
Thanks.

Thanks.

Ok, the below "as is", no guarantees given :)
Selenium process to fetch and store cookie etc:
#!/usr/bin/python
#
# get authentication cookies, with selenium, for LCS and write to disk.
#

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from time import strftime
import json

SIGNIN_lcs = (By.CLASS_NAME, "lnkAnkr")                  # LCS
EMAILFIELD = (By.ID, "i0116")                            # microsoftonline
NEXT_BTN = (By.ID, "idSIButton9")                        # microsoftonline
PASSWORD = (By.ID, "passwordInput")
SIGNIN = (By.ID, "submitButton")
STAY_SIGNED_IN = (By.ID, "idSIButton9")                  # microsoftonline
LCS_MAIN_TITLE = "Microsoft Dynamics Lifecycle Services" # LCS
REQUESTTOKEN = (By.NAME, "__RequestVerificationToken")   # LCS

def log(msg):
   now = strftime("%Y-%m-%d %H:%M:%S")
   print(str(now) + " | " + msg)

def write_to_file(headers):
   try:
      f = open("lcs_auth_headers.json", "w+")
      f.write(headers)
      f.close()
      log("Headers updated")
   except IOError as e:
      log("File not found!")
      log("Error: " + str(e))
      exit(1)

def main():
   url='http://localhost:4455/wd/hub'
   chrome_options = webdriver.ChromeOptions()
   chrome_options.add_argument('--headless')
   chrome_options.add_argument('--no-sandbox')
   chrome_options.add_argument('--disable-dev-shm-usage')

   cookie_list = {}
   request_token = {}

   try:
      driver = webdriver.Remote(command_executor=url, desired_capabilities=DesiredCapabilities.CHROME, options=chrome_options)
      driver.get("https://lcs.dynamics.com/Logon/Index?redirectUrl=https%3A%2F%2Flcs.dynamics.com%2Fv2") # login page to start from
      wait = WebDriverWait(driver, 10)

      # LCS
      wait.until(EC.element_to_be_clickable(SIGNIN_lcs)).click()

      # microsoftonline
      wait.until(EC.visibility_of_element_located(EMAILFIELD)).send_keys("emailaddress")
      wait.until(EC.element_to_be_clickable(NEXT_BTN)).click()

      # note: email field should be filled by redirect from microsoftonline
      wait.until(EC.visibility_of_element_located(PASSWORD)).send_keys("password")
      wait.until(EC.element_to_be_clickable(SIGNIN)).click()
      wait.until(EC.element_to_be_clickable(STAY_SIGNED_IN)).click()

      # LCS
      wait.until(EC.title_is(LCS_MAIN_TITLE))
      wait.until(EC.presence_of_element_located(REQUESTTOKEN))
      element = driver.find_element_by_xpath("/html/body/input[@name='__RequestVerificationToken']")
      request_token = {
         "name": element.get_attribute('name'),
         "value": element.get_attribute('value')
      }

      cookie_list = driver.get_cookies()

   except TimeoutException as e:
      log("Timeout at url: " + str(driver.current_url))
      log("Error: " + str(e))
      exit(1)

   except Exception as e:
      log("Error at url: " + str(driver.current_url))
      log("Error: " + str(e))
      exit(1)

   finally:
      driver.quit()

   if (request_token != None):
      auth_headers_json = {
         'headers': {
            request_token['name']:request_token['value']
         },
         'cookies': {}
      }

      for cookie in cookie_list:
         auth_headers_json['cookies'][cookie['name']] = cookie['value']

      write_to_file(json.dumps(auth_headers_json))

if __name__ == "__main__":
   main()

Getting LCS metrics:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Returns LCS monitoring metrics.
#
# Usage: python lcs_metrics.py <data type> <metric name> <server name>
#
# data type            - lcs "metric_data" or "sql_insights"
# metric/query name    - metric/query name for required data
# server name          - get data from specific server (only for metric_data, returns all if not given)
#

import requests, json, sys, time

def get_auth_headers(filename):
    with open(filename, 'r') as json_file:
        cookie_json = json_file.read()
    return json.loads(cookie_json)

def main():
   data_type = ""
   data_name = "" # metric/query name
   server_name = ""
   try:
      if len(sys.argv) == 4 and str(sys.argv[1]) == 'metric_data':
         data_type = str(sys.argv[1])
         data_name = str(sys.argv[2])
         server_name = str(sys.argv[3])
      elif len(sys.argv) == 3:
         data_type = str(sys.argv[1])
         data_name = str(sys.argv[2])
      elif len(sys.argv) == 2:
         data_type = str(sys.argv[1])
      else:
         print ("Invalid parameter(s)")
         exit(1)

   except ValueError as e:
      print ("Invalid parameter(s)")

   auth_headers = get_auth_headers('lcs_auth_headers.json')
   headers = auth_headers['headers']
   headers['accept'] = '*/*'
   headers['user-agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
   headers['x-requested-with'] = 'XMLHttpRequest'
   cookies = auth_headers['cookies']

   try:
      resp = None
      if (data_type == "metric_data"):
         now = int(time.time())
         url = 'https://diag.lcs.dynamics.com/ComponentMonitors/GetMetricData/ourid?environmentId=ourenvironment'
         data = {'startStr':str(now-60) + '000', 'endStr':str(now-60) + '000', 'maxPntsStr':1, 'metrics[]':data_name, 'serviceUnit':'westeurope.thisisidaswell'}
         resp = requests.post(url, data=data, headers=headers, cookies=cookies, timeout=15)

      elif (data_type == "sql_insights"):
         url = "https://diag.lcs.dynamics.com/Performance/InvokeFastQuery/ourid"
         data = {'environmentId':'ourenvironment', 'queryName':data_name, 'queryDescription':'Get+current+DTU+details+on+the+selected+database', 'actionType':'Query'}
         resp = requests.post(url, data=data , headers=headers, cookies=cookies, timeout=15)

      # if redirected to login page resp.text is html
      if(resp.text.lstrip().startswith('<!DOCTYPE html>')):
         print ("Invalid cookies")
         exit(1)

      json_data = json.loads(resp.text)

      if str(sys.argv[1]) == 'metric_data':
         json_data = json_data[data_name]

      if(len(sys.argv) == 4 and str(sys.argv[1]) == 'metric_data'):
         server = json_data[server_name]
         data = server.get("Data")[0]
         value = data.get("Value")
         print (value)
      elif str(sys.argv[1]) == 'sql_insights' and sys.argv[2] != None:
         dtu_json = str(resp.text)

         # response is not valid json so we need to make it so
         dtu_json = dtu_json.replace('\\"', '"')
         dtu_json = dtu_json.replace('"[', '[')
         dtu_json = dtu_json.replace(']"', ']')

         output = json.loads(dtu_json)

         if str(sys.argv[2]) == 'Current-DTU':
            print(json.dumps(output.get("Data")[0].get('DTU_CONSUMPTION_PERCENT')))
         elif str(sys.argv[2]) == 'Current-Blocking' or str(sys.argv[2]) == 'Currently-Running-Queries':
            print(len(output.get("Data")))
         else:
            print("Invalid parameter: " + str(sys.argv[2]))

      else:
         print(json.dumps(json_data))

   except requests.Timeout:
      print(-1)
   except Exception as e:
      print(-1)

if __name__ == "__main__":
   main()


scheduling confirmation email: time-zone of talk

The time-zone of the time-slot is not specified in the scheduling confirmation email.
An extra convenience would be if the time-zone was automatically converted into the applicant's local time zone. Perhaps local time zone could be one of the application question items?

I added UTC to the email. Speaker time zone is somewhat fragile: things like EST are deprecated, while full time zone names are something like America/New_York, and those are easy to type incorrectly.

I would try to avoid asking for a local timezone, but instead perhaps add a link to a website that shows what the UTC time is in the applicant's current timezone (there was a good website for this, I forgot what is called; something like 'whendowemeet.org'?!). What do you think @vfatemi?

I would try to avoid asking for a local timezone, but instead perhaps add a link to a website that shows what the UTC time is in the applicant's current timezone (there was a good website for this, I forgot what is called; something like 'whendowemeet.org'?!). What do you think @vfatemi?

I forgot what is called; something like 'whendowemeet.org'?!).

https://arewemeetingyet.com

I forgot what is called; something like 'whendowemeet.org'?!).

https://arewemeetingyet.com


Unable to translate Unicode character \uDC00

Using infersharp 1.3, I got the following:
`InferSharp is analyzing: //mnt/e/projects/WorkProject
Processing {//mnt/e/projects/WorkProject}
Copying binaries to a staging folder...
Code translation started...
Translation stage 1/3: Loading binaries.
Translation stage 2/3: Computing type environment.
Methods analyzed: ATranslation stage 3/3: Computing control-flow graph.
Methods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: T
Methods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: TMethods analyzed: T
Coverage Statistics:
Method successfully translated: 309817 (90%)
Method partially translated: 34265 (10%)
Instructions translated: 5548111 (72%)
Instructions skipped: 2140588 (28%)
ERROR: Unhandled exception: ERROR: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.Text.EncoderFallbackException: Unable to translate Unicode character \uDC00 at index 767 to specified code page.
at System.Text.EncoderExceptionFallbackBuffer.Fallback(Char charUnknown, Int32 index)
at System.Text.EncoderFallbackBuffer.InternalFallback(ReadOnlySpan1 chars, Int32& charsConsumed)    at System.Text.Encoding.GetBytesWithFallback(ReadOnlySpan1 chars, Int32 originalCharsLength, Span`1 bytes, Int32 originalBytesLength, EncoderNLS encoder)
at System.Text.Encoding.GetBytesWithFallback(Char* pOriginalChars, Int32 originalCharCount, Byte* pOriginalBytes, Int32 originalByteCount, Int32 charsConsumedSoFar, Int32 bytesWrittenSoFar, EncoderNLS encoder)
at System.Text.Encoding.GetBytes(Char* pChars, Int32 charCount, Byte* pBytes, Int32 byteCount, EncoderNLS encoder)
at System.Text.EncoderNLS.GetBytes(Char[] chars, Int32 charIndex, Int32 charCount, Byte[] bytes, Int32 byteIndex, Boolean flush)
at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
at System.IO.StreamWriter.Dispose(Boolean disposing)
at System.IO.TextWriter.Dispose()
at System.IO.File.WriteAllText(String path, String contents)
at Cilsil.Program.Translate(String[] paths, String outcfg, String cfgtxt, String outtenv, String dot, Boolean debug, Boolean extprogress) in /Cilsil/Program.cs:line 101
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at System.Delegate.DynamicInvoke(Object[] args)
at System.CommandLine.Invocation.ModelBindingCommandHandler.InvokeAsync(InvocationContext context)
at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass2_0.<b__0>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Invocation.InvocationExtensions.<>c.<b__16_0>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Invocation.InvocationExtensions.<>c__DisplayClass8_0.<b__0>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Invocation.InvocationExtensions.<>c.<b__7_0>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Invocation.InvocationExtensions.<>c.<b__6_0>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Invocation.InvocationExtensions.<>c.<b__14_0>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass3_0.<b__0>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Invocation.InvocationExtensions.<>c.<b__17_0>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Invocation.InvocationExtensions.<>c__DisplayClass5_0.<b__0>d.MoveNext()
Code translation completed. Analyzing...
ERROR: Uncaught Internal Error: (Sys_error
"/root/infersharp/infer-staging/tenv.json: No such file or directory")
Error backtrace:
Raised by primitive operation at Stdlib.open_in_gen in file "stdlib.ml", line 405, characters 28-54
Called from Stdlib.open_in in file "stdlib.ml" (inlined), line 410, characters 2-45
Called from Yojson.Safe.from_file in file "lib/read.mll" (inlined), line 1135, characters 13-25
Called from Backend__InferAnalyzeJson.analyze_json in file "src/backend/InferAnalyzeJson.ml", line 709, characters 24-57
Called from Integration__Driver.execute_analyze_json in file "src/integration/Driver.ml", line 200, characters 6-54
Called from IBase__Utils.timeit in file "src/base/Utils.ml", line 424, characters 16-20
Called from IBase__ScubaLogging.execute_with_time_logging in file "src/base/ScubaLogging.ml" (inlined), line 83, characters 29-44
Called from Integration__Driver.analyze_and_report in file "src/integration/Driver.ml" (inlined), line 299, characters 2-144
Called from Dune__exe__Infer.run in file "src/infer.ml" (inlined), line 21, characters 2-47
Called from IBase__Utils.timeit in file "src/base/Utils.ml" (inlined), line 424, characters 16-20
Called from IBase__ScubaLogging.execute_with_time_logging in file "src/base/ScubaLogging.ml" (inlined), line 83, characters 29-44
Called from Dune__exe__Infer.run in file "src/infer.ml", line 25, characters 22-94
Run the command again with --keep-going to try and ignore this error.`

Ah yes -- thank you for reporting this. This is a known issue and I am currently in the process of producing the fix -- will update this thread as soon as I've checked it in.

This issue should be fixed now.

I cannot reproduce in infersharp 1.4.


Wheelchair Accessible type is missing in TSML UI

Meetings with Wheelchair Accessible type do not show the missing types on the detail page. The edit meeting view shows it has the blue check mark.
https://alanonma.org/meetings/?weekday=sunday&type=online&meeting=25004-monthly-business-meeting-district-4
TSML Version 3.14.22
WP version: 6.3.2

This type is missing in TSML UI version but not in Legacy UI.
similar problem to Discussion #1198?

hi @charlesrbasin yes, that's right, meetings that don't have a physical location are not considered to be "wheelchair accessible" by TSML UI
here's an example of a meeting with a phyiscal location that shows the Wheelchair Accessible type https://alanonma.org/meetings/?meeting=38035-pause-for-serenity-sunday-am-afg

I restored the address, and it shows Wheelchair Accessible type in the meeting detail, but meeting is not in the list when the Wheelchair Accessible type is selected.
https://alanonma.org/meetings/?search=6160&meeting=6160-constantly-changing-afg

I restored the address, and it shows Wheelchair Accessible type in the meeting detail, but meeting is not in the list when the Wheelchair Accessible type is selected.
https://alanonma.org/meetings/?search=6160 https://alanonma.org/meetings/?search=6160&meeting=6160-constantly-changing-afg &meeting=6160-constantly-changing-afg
Barry Nelson
@.> @.
https://alanonma.org/ alanonma.org
From: Josh Reisner @.>
Sent: Sunday, October 22, 2023 3:49 PM
To: code4recovery/tsml-ui @.>
Cc: Charles Basin @.>; Mention @.>
Subject: Re: [code4recovery/tsml-ui] Wheelchair Accessible type is missing in TSML UI (Issue #335)
Closed #335 https://github.com/code4recovery/tsml-ui/issues/335  as completed.
—
Reply to this email directly, view it on GitHub https://github.com/code4recovery/tsml-ui/issues/335#event-10733903201 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ALNWSN4CJGX2SPGMZPOQ6CLYAV2CNAVCNFSM6AAAAAA6LDON32VHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJQG4ZTGOJQGMZDAMI .
You are receiving this because you were mentioned.  https://github.com/notifications/beacon/ALNWSNYSVBN7VZIBOTQE5H3YAV2CNA5CNFSM6AAAAAA6LDON32WGG33NNVSW45C7OR4XAZNWJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XKUY3PNVWWK3TUL5UWJTYAAAAAE76KLVQQ.gif Message ID: @.*** @.***> >

Legacy UI https://staging7.alanonma.org/meetings/?tsml-day=4&tsml-type=X does show https://staging7.alanonma.org/meetings/6160-constantly-changing-afg/?tsml-day=4&tsml-type=X with type Wheelchair Accessible
TSML UI https://alanonma.org/meetings/?weekday=thursday&type=wheelchair-accessible does NOT show https://alanonma.org/meetings/?search=6160&meeting=6160-constantly-changing-afg

yes, we should also make it so Wheelchair Access only displays on in-person meetings in TSML, but we haven't done that yet

Your comment confuses me. TSML UI only displays in-person meetings with type Wheelchair Accessible when that type is selected. The Legacy UI displays that type for meetings that are online only.

hi @charlesrbasin to reframe: we believe that Wheelchair Access is a type that only makes sense to apply to meetings that meet in person, or in-person + online, but not online-only
if i am a user who selects the Wheelchair Access type from the dropdown, i do not want to see an online-only meeting listed there, it doesn't make sense
in AA we have a number of other types that fit this category: Babysitting Available, Breakfast, Candlelight, Child-Friendly, Concurrent with Al-Anon / Alateen, Fragrance Free, Outdoor, Smoking Permitted, Wheelchair-Accessible Bathroom
when TSML UI sees one of these types applied to an online-only meeting it ignores it. this is a feature, not a bug. it's to make the app's behavior more meaningful to users
we are investing more energy in developing features for TSML UI, with the goal of someday (but not soon) deprecating the "Legacy UI" interface. that is why TSML UI has more features that TSML, such as this, but also things like "Add to Calendar" or "Meetings In Progress"
hope that helps clarify a little


Reveal alignment  (feature request)

It doesn't seem possible at the moment to center or right align the Reveal component.

Semantic-UI-React only concerns itself with JS components that render down to valid Semantic-UI markup. Issues with CSS and HTML markup should be posted on the main repo:
https://github.com/Semantic-Org/Semantic-UI
Once it is supported in core, then we can update components to implement the new HTML/CSS features.


Default to public method only

It's enough to provide a method to control what kind of methods can be hook target.


Fix dynamic light bug

Fixes #386.
The off-by-one commit didn't do anything; it's the one with u_numLights.

I don't have hardware right now to reproduce the bug and test the fix, and I don't really know what that line does. Though the patch is very simple and I noticed no regression on radeon and intel on linux, so if it fixes nvidia, let's go!


make deterministic and add Source Link

It would be great if these were all green:

I can look into this. A good resource is:
https://github.com/clairernovotny/DeterministicBuilds

I can look into this.

Thanks, that would be awesome.


Refactor Person or Group selector in Advanced Search.

Problem Description:
Per: https://github.com/project-lux/lux-frontend/issues/141, we had created a new Person or Group selector that looked like a Boolean type. However, after discussion and new additions of Object Class, Events Class, Work Class, and Concept Class selectors, it was decided to re-factor Person or Group to function as the Scope Classes above to create consistency.
Expected Behavior/Solution:
The functionality of Person or Group will operate the same way as those in Object/Event/Work/Concept Class where it will have a drop down of options "Person" or "Group".
Requirements:

[ ]  Advanced search options will function as a drop down to select the values of Person or Group.
[ ] The drop down will have a default name of 'Select Value'
[ ] Should be Modeled on has single field drop down style

Needed for promotion:
If an item on the list is not needed, it should be crossed off but not removed.

[ ] Wireframe/Mockup - Mike
[ ] Committee discussions - Sarah
[ ] Feasibility/Team discussion - Sarah
[ ] Backend requirements - TBD
[ ] Frontend requirements- TBD
[ ] Questions
List of questions for discussions. Answers should be documented within the issue.

UAT/LUX Examples:

https://lux-front-dev.collections.yale.edu/view/results/people?q={"AND"%3A[{"name"%3A"andy+warhol"}%2C{"recordType"%3A"Person"}]}

Dependencies/Blocks:
N/A
Related Github Issues:

https://github.com/project-lux/lux-frontend/issues/141

Related links:
Wireframe/Mockup:
TBD but to look like mockups from https://github.com/project-lux/lux-frontend/issues/176

This issue has been updated to reflect the discussion of today's UX/BA meeting. Rather than changing Boolean types we will only refactor the Person or Group selector in Advanced Search.

Please promote as the wireframe can be added later considering we have examples in other tickets.
@prowns @jffcamp @roamye

Approved by UAT

looks good in prod, closing.


[Enhancement] (nereids)implement analyzeTableCommand in nereids

analyzeTable command is supported in legacy planner but not in nereids(new doris fe planner). you need implement the following analyzeTable command in nereids:
unsupportedanalyzeTableStatement

[ ] ANALYZE TABLE name=multipartIdentifier partitionSpec?
columns=identifierList? (WITH analyzeProperties)* propertyClause?

@LiBinfeng-01 Please assign this issue to me


Lower reconcilePeriod

Description
We need to set reconcilePeriod as low as possible. As there are reconcile actions that does not modify the status of the Benchmark CR (modifying the Benchmark object triggers a reconcile),  (I observed this behaviour in the uperf benchmark), the benchmark-operator could wait up to 1 minute to perform the next actions of that Benchmark.
With this change we should dramatically drop the benchmark duration.
Signed-off-by: Raul Sevilla<EMAIL_ADDRESS>

/rerun all

@rsevilla87 looks like this was introduced in a recent PR (likely the version upgrade). It used to be 3 seconds. I propose we go back to that number.


Fix den_x <-> den_z swap

Closes https://github.com/STMicroelectronics/lsm6dsr-pid/issues/1

This pull request has been refused, the Contribution License Agreement must be signed.


The Necessity of an Isolate for Event Listener

I really appreciated the simplicity and clarity of your event listener example in the Readme:
import 'package:tdlib/td_client.dart';
import 'package:tdlib/td_api.dart' as td;

Future<void> main() async {
  final Client client = Client.create();

  client.updates.listen((td.TdObject event) async {
    print('update: ${event.toJson()}');
  });
  await client.initialize();
}

Is it a good idea to put that event listener on a background isolate? I've managed to do that like this:
startTelegram() async{
  final receivePort = ReceivePort();

  await Isolate.spawn(Telegram.to.listenUp, receivePort.sendPort, errorsAreFatal: true);

  receivePort.listen((data) async {
    print(data); //<-- JSON string
  });
}

class Telegram {
  Client? client;
  StreamSubscription<td.TdObject>? eventsSubscription;

  listenUp(SendPort sendPort) async {
    if (client != null) return;

    final Client newClient = Client.create();
    client = newClient;
    eventsSubscription?.cancel();

    newClient.initialize();
    eventsSubscription = client?.updates.listen((td.TdObject event) async {
      print('--- Event Received ---');
      sendPort.send(event.toJson()); //<-- Convert to JSON string
    });
  }
}

But the problem is an isolate ReceivePort can't send a complex object like a TdObject. So I have to serialize the data to JSON with .toJSON(). But when it reaches the listenevent back up in startTelegram (on the main thread), it's a string that I cannot turn back into a TdObject.
As far as I can tell, there is no .fromJson() option available in this library. Am I mistaken?
Am I prematurely optimizing by putting this listener in an isolate? Is it not necessary? Any other tips or suggestions?
Thank you! 😊

@cliftonlabrum Have you thought about creating a pull request?


Doodle Game

Develop a Javascript Doodle jump game app.

Requirements:

Doodle will jump and be able to move left and right
Make more smooth if you can
At last show your score

Bonuses 🎉🎉:

Improve your design is a plus
more features like some monster tackle would be great!

Any number of people can work on a single issue,
This issue is open to all.
Project location 👉🏻 DoodlerGame/USERNAME/
👨🏻💻 Happy Coding 👩🏻💻

Hey @thinkswell  assign me this  i am working on it

Sure, @itsdharmxd, go ahead.

@thinkswell      PR given take a review

Hey @thinkswell   please add the tag hacktoberfest-accepted  : ) it will be a help for me


Support console api being optional

Signed-off-by: John Pitman<EMAIL_ADDRESS>Support console api being optional
What type of PR is this?

Uncomment only one  /kind line, and delete the rest.
For example, > /kind bug would simply become: /kind bug

/kind bug
/kind cleanup
/kind failing-test
/kind enhancement
/kind documentation
/kind code-refactoring

What does this PR do / why we need it:
Have you updated the necessary documentation?

[ ] Documentation update is required by this PR.
[ ] Documentation has been updated.

Which issue(s) this PR fixes:
Fixes #?
Test acceptance criteria:

[x] Unit Test
[ ] E2E Test

How to test changes / Special notes to the reviewer:

/lgtm

/approve


Always return 1 exit code for unzip

https://github.com/GPMDP/electron-devtools-installer/blob/master/index.js#L25
I used forceDownload, unzip always callback error, but actually unzip success.

Ahh, this will be a folder overwrite error, I'll fix it shortly :)

@jhen0409 It might be worth pointing out that React Dev tools doesn't work in any Electron version above 1.2.1
See #6101

Looks fs.mkdirSync cannot remove not empty folder, should use rimraf instead?

@jhen0409 My bad 😆 I tested with an empty folder 😢
I'll be setting up test suites for this shortly anyway 👍

@jhen0409 New version published with rimraf


Frontend starter code

Please review the starter code and gitignore files. I have separate gitignore for the backend and frontend so there may be an error ignoring those files.

Personally, I don't think we should push .idea to the repository. Could you please add .idea to .gitignore?

I have removed .idea and added them to gitignore.


[AutoPR resources/resource-manager] [DO NOT MERGE] Testing code gen

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

(message created by the CI based on PR content)

Codecov Report

Merging #2529 into restapi_auto_resources/resource-manager will increase coverage by <.01%.
The diff coverage is 64.44%.

@@                             Coverage Diff                             @@
##           restapi_auto_resources/resource-manager    #2529      +/-   ##
===========================================================================
+ Coverage                                    55.12%   55.12%   +<.01%
===========================================================================
  Files                                         6369     6371       +2
  Lines                                       141229   141249      +20
===========================================================================
+ Hits                                         77849    77861      +12
- Misses                                       63380    63388       +8

Impacted Files
Coverage Δ

.../resource/resources/v2018_02_01/models/identity.py
50% <0%> (-5.56%)
:arrow_down:

.../resource/resources/v2018_02_01/models/__init__.py
100% <100%> (ø)
:arrow_up:

...ource/resources/v2018_02_01/models/identity_py3.py
50% <50%> (-5.56%)
:arrow_down:

...ources/v2018_02_01/models/user_defined_identity.py
62.5% <62.5%> (ø)

...es/v2018_02_01/models/user_defined_identity_py3.py
62.5% <62.5%> (ø)

...esources/v2017_05_10/resource_management_client.py
39.47% <66.66%> (ø)
:arrow_up:

...source/links/v2016_09_01/management_link_client.py
35.71% <66.66%> (ø)
:arrow_up:

...source/locks/v2016_09_01/management_lock_client.py
35.71% <66.66%> (ø)
:arrow_up:

.../mgmt/resource/policy/v2016_12_01/policy_client.py
38.7% <66.66%> (ø)
:arrow_up:

...mt/resource/features/v2015_12_01/feature_client.py
35.71% <66.66%> (ø)
:arrow_up:

... and 5 more

Continue to review full report at Codecov.

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


Laravel 7 support

This looks like a great drop-in blog for established laravel sites!
Is there a chance for Laravel 7 support?

Yes it will support laravel 7 soon, and 8 later this year.

Added L7 support in version 2.


Moving EncodeUrl function to Builtin folder

Moving EncodeUrl function file to Texl/Builtins folder, where other builtin functions live.

✅ No public API change.

✅ No public API change.


Docker installation on Ubuntu 21.10 Impish Indri

Does anyone know how to fix this error Cannot connect to the Docker daemon at unix:///home/user/.docker/desktop/docker.sock?
I'm able to run it with sudo but without sudo it doesn't work. Have tried adding usergroup and everything as specified in the docs but nothing worked.
I'm on Ubuntu 21.10 Impish Indri.
When I check docker's logs, it says: failed to start daemon: error while opening volume store metadata database: time out

Thanks for sharing the issue. For interactive troubleshooting and support, please try the Docker Community Slack or Forums, https://www.docker.com/support/


Reference-type documentation

Currently there doesn't seem to be a complete reference listing all the commands and the operations they perform in a single place. The website has two buttons, "See the commands" and "View all commands", and both point to https://github.com/Originate/git-town#commands, which is more of a overview/summary -- albeit with links to more detailed pages, so that's a great start.
documentation/commands/ does contain a complete listing of the commands (perhaps the "View all commands" button should point to it), but one would have to open each page separately, and still those don't mention what exactly goes on behind the scenes.
The features/ directory does contain relevant information, like this, but it would be nice to be able to browse this documentation in a less contrived way.

Alternatively, the --dry-run option suggested in #659 could go a long way in providing this kind of information.

Thanks for the pointer, @waldyrious! I agree that the website didn't list all the commands properly. I have created #944 to document the commands new in 4.0 that weren't listed there. With this in place, the documentation on Github would be the place that documents all commands.
I will add pointers to the feature files that list the commands in a subsequent PR.

Thanks for such a quick reaction!

I will add pointers to the feature files that list the commands in a subsequent PR.

That'd be great :)

I have created #946 to create links to the Cucumber files that describe the steps from the command documentation.


Does not work if packages path is modified using Nuget.config

I use Nuget.config to change the path where packages are stored. The extension fails to detect any nuget references. I just had casing differences in the folder name and relocated it outside the solution folder. It should use packages.config/project.json file to detect nuget references rather than looking at the references in project file.

It should be searching for the packages.config in parent folder(s) as described here
https://docs.microsoft.com/da-dk/nuget/consume-packages/configuring-nuget-behavior#config-file-reference
c:\A\B\C\NuGet.Config
c:\A\B\NuGet.Config
c:\A\NuGet.Config
c:\NuGet.Config


feat: add missing implementations for Storage{Base}Address

Feature Request
Describe the Feature Request

Implement the Into trait to convert a Storage{Base}Address into a felt252
Implement the Into trait to convert a Storage{Base}Address into a u256
Implement PartialEq trait to allow comparison of StorageBaseAddress and StorageAddress

Describe Preferred Solution

Describe Alternatives

Related Code

Additional Context

If the feature request is approved, would you be willing to submit a PR?
(Help can be provided if you need assistance submitting a PR)

[x] Yes
[ ] No

Fixed by #5534


error calling toCSS: no Resource provided in transformation

with a virgin page (just ran hugo new site) and this theme, I get:
$ hugo server
Watching for changes in /home/user/hugo-site/{archetypes,assets,content,data,i18n,layouts,static,themes}
Watching for config changes in /home/user/hugo-site/hugo.toml
Start building sites …
hugo v0.131.0+extended linux/amd64 BuildDate=2024-09-03T01:15:37Z VendorInfo=debian:0.131.0-1

ERROR render of "taxonomy" failed: "/home/user/hugo-site/themes/magnolia/layouts/_default/baseof.html:3:6": execute of template failed: template: _default/taxonomy.html:3:6: executing "_default/taxonomy.html" at <partial "head.html" .>: error calling partial: "/home/user/hugo-site/themes/magnolia/layouts/partials/head.html:113:49": execute of template failed: template: partials/head.html:113:49: executing "partials/head.html" at <toCSS $options>: error calling toCSS: no Resource provided in transformation
ERROR render of "home" failed: "/home/user/hugo-site/themes/magnolia/layouts/_default/baseof.html:3:6": execute of template failed: template: _default/home.html:3:6: executing "_default/home.html" at <partial "head.html" .>: error calling partial: "/home/user/hugo-site/themes/magnolia/layouts/partials/head.html:113:49": execute of template failed: template: partials/head.html:113:49: executing "partials/head.html" at <toCSS $options>: error calling toCSS: no Resource provided in transformation
Built in 12 ms
Error: error building site: render: failed to render pages: render of "taxonomy" failed: "/home/user/hugo-site/themes/magnolia/layouts/_default/baseof.html:3:6": execute of template failed: template: _default/taxonomy.html:3:6: executing "_default/taxonomy.html" at <partial "head.html" .>: error calling partial: "/home/user/hugo-site/themes/magnolia/layouts/partials/head.html:113:49": execute of template failed: template: partials/head.html:113:49: executing "partials/head.html" at <toCSS $options>: error calling toCSS: no Resource provided in transformation

hugo v0.131.0+extended

ah.. I guess it does not work that way, and I need to use the example site as described in https://github.com/ololiuhqui/magnolia-free-hugo-theme#quick-start-how-to-install-
.. ooo k.. sorry!


Login Status is not visible Clearly in small screen width

Describe what problem your feature request solves:
When We open our the website in small screen width , the login status is not clearly visible in navbar as i shown below

Describe the solution you'd like:
I can propose two type of the solution either we can have background color as $orange for the login status or we can have the login status in $orange color for small screen width which we can do by updating the media query . i shown both of the results in the below images

Additional context:

What do you say @jgadsden

using a small screen for Threat Dragon is not a high priority - threat modeling with a restricted view is likely to be a poor experience, threat modeling being the creative experience and not about the tool
this could be looked at for sure, but it may not be adopted

using a small screen for Threat Dragon is not a high priority - threat modeling with a restricted view is likely to be a poor experience, threat modeling being the creative experience and not about the tool this could be looked at for sure, but it may not be adopted

media query is given for mobile screen width so that i think for this
however if you want me to close this issue i'll do it further..?

Hello @itsdheerajdp , this is probably good to have - but if we change the login status as orange then it would not bee seen in a browser using a larger screen:

Possibly black would work?

@jgadsden  in large screen this login status will be in same white color but in small screen we'll change it to orange color so that consistency in the application will be maintained
i'll make this change using updatation in media query so the color in large screen will be unchanged

OK, thanks @itsdheerajdp , appreciated and please go ahead with whichever solution you like best


fatpack playwright_server deps using webpack

This is probably not 100% possible due to playwright shipping browser nightlies.

not possible. closing.


Fix package init script to use "$@" in run file instead of "$*"

Fix the v3 package init script to insert "$@" in run file.

Checks failed because no package was actually edited, so this is a-ok to merge


feat(react-query): add <SuspenseQuery/>, <SuspenseInfiniteQuery/>

close #771
Thanks for your discussing this interfaces
@minsoo-web @sonsurim @2-NOW @minchodang @tooooo1 @chaaerim
PR Checklist

[x] I did below actions if need

I read the Contributing Guide
I added documents and tests.

shoutout with-function crew 🔥


Write only dirty metadata

Observed
As @SantiagoTorres and I have mentioned before, the repository tool currently automatically writes the next version of metadata that is signed by any signing key loaded into memory.
This is counter-intuitive when we, say, load the unclaimed signing key to sign for only a few bins that have changed. However, all of the bins are signed.
Expected
We expect only "dirty" metadata (which has seen explicit modification by the user) to be signed upon writing a repository from memory to disk.
A quick-and-dirty workaround we used is here, but certainly it does not constitute a well-designed long-term solution.
@JustinCappos noted that when nothing in the repository has changed, then only a new timestamp must be issued.
Thanks!

The repository tool now writes metadata only for the roles that are dirty:
https://github.com/theupdateframework/tuf/blob/0ce016b7b19a0fc15443eed657a90246ec5df0aa/tuf/repository_tool.py#L233-L248


Secure Dapr-to-app communication

In what area(s)?

/area runtime

/area operator
/area placement
/area docs
/area test-and-release

Current situation
Increasing the security of Dapr and applications using Dapr, it would be necessary to secure Dapr-to-app communication. This also relates to /dapr/docs/issues/346
As stated at Security Concepts

"Dapr assumes it runs in the same security domain of the application. So, there are no authentication, authorization or encryption between a Dapr sidecar and the application."

Currently it is normal for the sidecar patterns to assume this (e.g. at Service Meshes).
But with Dapr are coming more possibilites and thus also more responsibilities.
Challenge
It is possible to leverage existing pubsub topics, bindings and even normal service invocations, if the application container itself is compromised or another container in the same pod (Kubernetes env). They all can just talk per localhost with the Dapr sidecar and without any auth and knowing about specific connection string, host addresses etc. they can store/manipulate data into the system.
When executing it standalone the situation is even worse, because no pod as a boundary exists.
Describe the feature
Provide any authentication mechanism between Dapr and the application, e.g. a secret/token.

@yaron2 does linkerd and istio encrypt between its proxy sidecar and app ?

@yaron2 does linkerd and istio encrypt between its proxy sidecar and app ?

No

That's because they can't: the app doesn't talk to Envoy or Linkerd-proxy directly. the proxies intercept the traffic using iptables, so they can't secure it.
But it doesn't mean we can't to token authentication in Dapr..

Design Proposal
This design proposes the means by which Dapr could allow authenticated calls to its APIs.
API authentication using tokens is a common theme and an overview is out of scope of this proposal.
For more information on token based authentication, please see here and here.
The rational is that Dapr will inspect a token for every incoming request to its public APIs (user facing APIs) for both gRPC and HTTP, and only allow authenticated requests to pass.
A call to Dapr (for example, to v1.0/state) is considered authenticated if a valid token is present on the call from the client side.
Implementation
Since Dapr can call back into the application, we can achieve a more secure architecture where the Dapr sidecar itself generates a new token every time it boots up, and communicates it to the application over the configured application port.
Doing this allows us to leave the token in the Dapr sidecar's memory address space, as opposed to keeping it in a secret store or any other location which increases the attack surface.
Once the application receives the token, it should then include it in the header or metadata of the Dapr API call.
Any calls arriving to Dapr not including the token will be rejected.
Pros

Token is self-generated in the sidecar and not kept at rest anywhere
Zero additional ops maintenance for developers and operators
No dependency on secret or state stores
Works on every hosting platform

Cons

Apps that do not need Dapr to call back into them will need to open a web-server to receive the token. After the token is received, the user can close and dispose of the web-server.

Configuration on Kubernetes
API authentication will be turned off by default.
To enable token based authentication, the following annotation will be used:
dapr.io/token-authentication: "true"

Configuration on Self Hosted
daprd will receive an additional flag: --token-authentication true.
Token metadata inspection
Dapr will inspect the token authentication flag when it inits.
If the flag is set to true, Dapr will generate a GUID to represent the API token.
HTTP
Dapr will inspect an incoming call for the API token via the following header:
dapr-api-token.
gRPC
Dapr will inspect an incoming call for the API token on the gRPC metadata for the following value:
dapr-api-token[0].

Thanks for writing this spec. Overall LGTM.
I have a few feedbacks:

Can we use standard header Authorization header?
In terms of security, App Callback may not accept additional token from dapr sidecar once it gets it at the first time.

Thanks for writing this spec. Overall LGTM.
I have a few feedbacks:

Can we use standard header Authorization header?
In terms of security, App Callback may not accept additional token from dapr sidecar once it gets it at the first time.

Yeah we can use the auth header for HTTP.
Can you elaborate on the AppCallback? Not sure I understand

In terms of security, App Callback may not accept additional token from dapr sidecar once it gets it at the first time.

Yeah we can use the auth header for HTTP.

grpc-gateway project use the same authorization metadata for grpc and asp.net core uses the same authorization header for http and metadata. - https://docs.microsoft.com/en-us/aspnet/core/grpc/authn-and-authz?view=aspnetcore-3.1

Can you elaborate on the AppCallback? Not sure I understand

There is a possibility that attacker can inject wrong token to user app if user app continue to accepts the token. So we may need to give user the guideline to not accept token forever.

In terms of security, App Callback may not accept additional token from dapr sidecar once it gets it at the first time.

Yeah we can use the auth header for HTTP.

grpc-gateway project use the same authorization metadata for grpc and asp.net core uses the same authorization header for http and metadata. - https://docs.microsoft.com/en-us/aspnet/core/grpc/authn-and-authz?view=aspnetcore-3.1

Can you elaborate on the AppCallback? Not sure I understand

There is a possibility that attacker can inject wrong token to user app if user app continue to accept the token. So we may need to give user the guideline to not accept token forever.

Oh ok, yes, certainly.
If that happens BTW, the attacker will not have access to Dapr, since the token he injects for the app will not be recognized in Dapr.
So yes, we can guide the user on accepting the token once, or to check the port from which the call came to make sure that Dapr is the one who called the app.

When it comes to GUID generation for token, we need to make sure that the generated token is secured.
According to http://www.ietf.org/rfc/rfc4122.txt,

Do not assume that UUIDs are hard to guess; they should not be used as security capabilities (identifiers whose mere possession grants access), for example.

I cannot recall the exact way and code, but I used the secure random function with HMAC in the previous production code.

When it comes to GUID generation for token, we need to make sure that the generated token is secured.
According to http://www.ietf.org/rfc/rfc4122.txt,

Do not assume that UUIDs are hard to guess; they should not be used as security capabilities (identifiers whose mere possession grants access), for example.

I do not remember the exact code, but I used the secure random function with HMAC in the previous production code.

Ok I changed the description to a more general notion and removed the GUID reference.

Going through the design. It looks good to me.  I am finding and reading more references around this flow and will comment if I have something.

Reading on as how application containers be compromised, found this one a good reference .

@yaron2 one thing that I missed is that user app will be able to pass their own authorization token to service invocation api :) So in this case, your original proposal(dapr-api-token) is better than using Authorization.

Thanks, @yaron2 LGTM overall. I like that its opt-in feature, this is specially applicable to apps which are purely making client calls to Dapr.
I agree with @youngbupark that its better to use a custom header name.
This would need changes in all the SDKs (specially Actors to keep the token and present it on all subsequent calls into Dapr)
Could you add following clarifications to the proposal as well:

Specifics of the call, will it be a new http/grpc call into user code?
How would dapr side car restarts be handled:
Consider scenario, where Dapr sent a token, app is using it. Then Dapr restarts, app keeps on using the older token. This would need guidance from our side for users. Even if we document that users must use the latest token, there will be a race for some calls. Lets be clear on what will be Error code in this case and what app needs to do.
How would app restarts be handled?
Consider scenario, where Dapr sent a token, app is using it. Then app restarts, it will not have a token. Can app signal to Dapr by making a call, so that Dapr side car makes another call into user app to send the secret?

I agree with @youngbupark that its better to use a custom header name.

Yeah it was actually a custom header name in the beginning, I reverted to a dapr-api-token name.

Specifics of the call, will it be a new http/grpc call into user code?

This is for user code calls into Dapr via HTTP or gRPC.

How would dapr side car restarts be handled:

If Dapr restarts, it will reissue a new token to the app. Since a token will only be issued once on boot, there can be no race conditions here, as the desired behavior is last write wins.

How would app restarts be handled?

We already have health checks in place in the sidecar to verify if the app is healthy or not. we can use those primitives to resend the token once the app becomes healthy again.

Specifics of the call, will it be a new http/grpc call into user code?

This is for user code calls into Dapr via HTTP or gRPC.

App is not asking for initial token, Dapr is sending it to the app which then app is presenting on future calls. I was referring to specifics of the call on which Dapr will deliver the intial token to app.

How would dapr side car restarts be handled:

If Dapr restarts, it will reissue a new token to the app. Since a token will only be issued once on boot, there can be no race conditions here, as the desired behavior is last write wins.
When an app comes up, it will get the token from Dapr, it will keep it in memory and use it for all the requests to Dapr. Now consider at time T1 Dapr restarts, it sends a new token at Time T2. To use this new token we will have to share guidance for customers for token cachine. Even with guidance, for Calls originating from app between time T1 and T2 will use older token and Dapr should return correct error code based so that app can retry it with new token.

How would app restarts be handled?

We already have health checks in place in the sidecar to verify if the app is healthy or not. we can use those primitives to resend the token once the app becomes healthy again.

Leveraging health checks sounds good, but that still leaves a race. App going down and coming back up between 2 heath checks and Dapr wont notice that app went down.

How will the token be stored in dapr?  Will it be encrypted?

Might slightly tangential to this specific issue but does the App need a mechanism by which it can verify the integrity and identity of Dapr itself - i.e. if the side car injector was compromised and injected a malicious dapr image - could we provide a way that the app can detect it’s not speaking to who it expects to be. Or is the platform and Dapr assumes to be safe and trusted?

How will the token be stored in dapr? Will it be encrypted?

It remains in-memory, not on disk.

Might be slightly tangential to this specific issue but does the App need a mechanism by which it can verify the integrity and identity of Dapr itself - i.e. if the side car injector was compromised and injected a malicious dapr image - could we provide a way that the app can detect it’s not speaking to who it expects to be. Or is the platform and Dapr assumes to be safe and trusted?

OCI image integrity is a host platform (or even a layer above it) concern.

Update
There's one scenario where proposal 1 fails to deliver on: when Dapr is exposed to callers outside of the pod (or local network namespace), it will not be able to communicate the authentication token unless the caller is the app which Dapr knows how to call back into.
A concrete example of this would be Ingress: For example, running Dapr next to Nginx, where Dapr cannot call back into Nginx, or to the actual caller which Nginx is proxying the request on behalf of.
IMO this is enough to rule out proposal 1, unless someone feel differently.
Proposal 2
This proposal builds on proposal 1 for the means of authentication, which is using an API token to validate the caller.
Instead of generating the token from within the Dapr runtime, the API token can optionally be injected into the Dapr runtime via an environment variable.
This allows operators to create the token and deliver it to their applications using their existing CI/CD tools and frameworks.
For standardization purposes,  the token itself is a standard JWT token that is generated by the user.
While Dapr is not the JWT token issuer in this case, being explicit about JWT as the standard will help keeping users in the right lane.
Dapr only needs to be injected with this token, and it is the app's responsibility to get hold of the token and deliver it to Dapr.
Kubernetes walkthrough
On Kubernetes, the flow can be the following:

Operator generates a JWT token string using their own secret key. The secret key does not need to be stored anywhere in the cluster, and Dapr does not need to know about the secret key.

A Kubernetes secret is created to hold the token. The secret is created per namespace.

kubectl create secret generic dapr-api-token --from-literal=token=<JWT-TOKEN>

The user tells Dapr to secure its APIs with the token by adding the dapr.io/token-authentication annotation to the pod.

The sidecar injector will add an environment variable (DAPR_API_TOKEN) to the daprd container with the secretKey reference. The pod will then consume the token from the secret.

Self hosted walkthrough

Operator generates a JWT token string using their own secret key. The secret key does not need to be known to Dapr.

The user sets the environment variable for the daprd process or session:

export DAPR_API_TOKEN=<JWT-TOKEN>

Token expiry
The operator is free to choose whatever expiry date they want when issuing the token. In order to rotate it, the secret needs to be updated (or recreated) with the new token and the container/process to be restarted.
/cc @amanbha @youngbupark @jjcollinge

@yaron2 SGTM, just to clarify in the Kubernetes scenario, would the injector resolve the secret and pass the value you in or would it simply pass the secret name so the dapr runtime can resolve it (which would allow token rotation without down time).

@yaron2 SGTM, just to clarify in the Kubernetes scenario, would the injector resolve the secret and pass the value you in or would it simply pass the secret name so the dapr runtime can resolve it (which would allow token rotation without down time).

It would simply pass the secret name ref, and the Pod will resolve it.

@yaron2 yes, Proposal 2 sounds lot better than Proposal 1, it doesn't need app to start a server to recieve the token and it solves the issues of sidecar, dapr restarts which I mentioned earlier.
The walkthrough is good, it clarifies a lot of things. Could you also add walkthrough steps for token update/rotation, To support rotation with minimal downtime, do we need to introduce Primary and Secondary tokens.

@yaron2 yes, Proposal 2 sounds lot better than Proposal 1, it doesn't need app to start a server to recieve the token and it solves the issues of sidecar, dapr restarts as mentioned earlier.
The walkthrough is good, it clarifies a lot of things. Could you also add walkthrough steps for token update/rotation, To support rotation with minimal downtime, do we need to introduce Primary and Secondary tokens.

Updated.

Thanks @yaron2 , proposal 2 is better. Just curious , is Step 4 actually needed for setting environment variable. Can we just provide the secret config reference [not the key of course] in the annotation and not actually set the environment variable? This is similar to what we do for other configuration like tracing configuration.  Is that possible or step 4 is something that can not be avoided?

Thanks @yaron2 , proposal 2 is better. Just curious , is Step 4 actually needed for setting environment variable. Can we just provide the secret config reference [not the key of course] in the annotation and not actually set the environment variable? This is similar to what we do for other configuration like tracing configuration. Is that possible or step 4 is something that can not be avoided?

Using a secret reference for an environment variable is the idiomatic way to do it, and it won't require Dapr to have extra permissions or code to pull the secret itself.

Got it. Thanks for clarification @yaron2 .

There's now a PR: #1606


emitter.setMaxListeners()

Just thought I'd drop this here since it took me FOREVER to figure this out.
If you're getting these errors:
warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.

just set the maxListeners option in your watch config to something large. Like this:
watch: {
  options: {
    maxListeners: 99,
    ...
  }
}

Hope this helps.

if (process.setMaxListeners) {
process.setMaxListeners(10000);
}

was searching for this as Smeagol was searching for his precious.

https://stackoverflow.com/a/31443386


CTRL + F not working on fresh install

Issue:
Trying to search within a note using the default keyboard shortcut CTRL + F does not work, no search from inside iCloud Notes pops up.
OS & relevant info:
Manjaro Linux x86_64
kernel 6.9.10-1-MANJARO

fresh install of icloud-notes using:
sudo snap install icloud-notes
sudo snap info icloud-notes:

snap-id:      GSrXSNKNLcd1pSAF6avYUSQnIiHaF8Hj
tracking:     latest/stable
refresh-date: today at 11:38 EEST
channels:
  latest/stable:    1.2.0 2024-05-07 (3) 89MB -
  latest/candidate: ↑
  latest/beta:      ↑
  latest/edge:      ↑
installed:          1.2.0            (3) 89MB -

I can use other keyboard shortcuts like CTRL + SHIFT + I to check browser version from console for example:

console.log(browser.name)
Chrome
console.log(browser.version)
124

Thanks in advance for any support offered!

This might be an issue with icloud itself,

I did not tested on Manjaro. If anybody can solve this issue. please make a pull request.


Add CI workflow for GitHub Actions

Tracking issue for tokenless codecov reports: https://community.codecov.io/t/whitelist-github-action-servers-to-upload-without-a-token/491/5

Remember to let me know if you ever remove Travis so we can set up the Jazzband release system via a GH action.

Hey @webknjaz. Thank you so much for such huge feedback! Much appreciated! ❤ I've resolved all the discussions (I hope, feel free to unresolve otherwise) and I'm ready for another round of review! 🚀

Looks good. I am not sure I need tox in a GitHub actions world, but that is certainly a question of preference.

It's needed with any CI because it works like a glue between different platforms, plus it allows running tests locally exactly the same way. It's a well-established practice to use it like this.

@atugushev maybe on the next iteration we could make the CI actually test the dists too, not just source. And add macOS into the matrix. But right now it seems ready to go. Done is better than perfect.

maybe on the next iteration we could make the CI actually test the dists too, not just source. And add macOS into the matrix. But right now it seems ready to go. Done is better than perfect.

What do you mean by "test the dists"?

What do you mean by "test the dists"?

When you run tox, it works with the source in the project dir and even creates some temporary dists. But they are not what you're going to publish to PyPI hence you test not exactly the same as users will get. Also, you may be testing not what's installed for various reasons.
Better way would be to divide this process into stages:
  (1) build dists -> (2) test dists from [1] -> (3) upload *exactly* those dists from [1] that have been tested

@webknjaz
Good suggestion! There is an issue #1134 to track.

@webknjaz
I've added MacOS to the matrix.

pypy test jobs are so slow 😞 By the way pip doesn't run tests on pypy, see https://github.com/pypa/pip/issues/7279#issuecomment-612911682. It's tempting to turn them off...

You could add a condition to only run them on cron and push, for example

@codingjoe do you still want to block this?

Seems like it's ready to go! 🚀

I'm so happy we've finally done this. Huge thanks to the reviewers! ❤


⚠ Samsung has degraded performance

In 8e85b01, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2430 ms

Resolved: Samsung performance has improved in ef25760.


I don't get notifications when the window is minimized

Description:
I don't get notifications when the window is minimized
Steps to reproduce:
I minimize the window and I don't know if a message comes in
App version:
2.0.1.-beta
OS:
Windows 10
Works in WhatsApp Web:
Extra:
[Not answered]

Press the gear icon, then settings and enable desktop notifications


feat: improve NYC

Fix vulnerabilities by bumping to safer versions on affected dependencies
Add loaders to improve the UX (fix #107)
Get rid of warnings showing in IDEs

What's your npm name?

Published at 3.9.0.

What's your npm name?

berkmann18


Update release/2.1 readme: remove Jenkins

Removes Jenkins CI from the table on our readme.
Nice view: https://github.com/dagood/source-build/blob/92dc3dfc8aa54cd21f083ffbe7a9c7c0c81ca7b7/README.md

Wait a sec, the Jenkins legs are still being triggered. Maybe what I turned off is only the thing that regenerates the jobs and I have to delete them. I'll chat with mmitche.


upgrade from 3.2 to 3.9

I am trying to upgrade from 3.2 to 3.9. I first installed 3.3 and started the service and logged into the web interface once. I see there are 2 new DB tables related to schema updates. I then stopped 3.3 service, deleted the traccar directory and then installed 3.9 and started the service using the new .sh file. I realized I had an issue with my MYSQL connection url which I guess changed slightly since I first set it up.
sessionVariables=sql_mode=ANSI_QUOTES changed to sessionVariables=sql_mode='' at the end. Not sure if that was an issue but changing to the 2 single quotes resolved an issue starting tracker service initially.
So now I am able to get traccar service to start but I cannot load the web interface now...  If I check for open ports on my server I do not see anything listening on 8082

Change in the database URL shouldn't affect anything.
If server is not listening on the port, it means that either something wrong with config file, or service is not running. Is it running?


Can't delete executions?

Following tutorial.. deleing an execution just hangs on the k3s docker container.


Unimplemented message type: null

Hi @pedroSG94
I have got an error when I try to startStream()

I think my issue is the same as #1168
My URL server is youtube server: rtmp://a.rtmp.youtube.com/live2
Please help me with this. Thanks so much!

@pedroSG94
Sorry, I knew my issue. Thanks!

@pedroSG94 facing same

This is caused because the server close connection with you. If you are using YouTube remember add stream key after the url. Instead of:
rtmp://a.rtmp.youtube.com/live2

Use:
rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx-xxxx

Where xxxx-xxxx-xxxx-xxxx-xxxx is the key of your stream that should be provided from the youtube studio where you create the new stream

facing same, I use RSR service， the url looks like   rtmp://<IP_ADDRESS>/live/livestream

Hello,
Please, open an issue if necessary and reference to this issue but avoid write in a closed issue.
About your case:
Don't use amf3-support because it is not finished. It is freezed until I'm able to find a server that support amf3 because I need it to test it.


opencv error while training a 3D model

Hello,
Thank you for developing this cool segmentation library, I have been trying to train a cellpose model with some 3D images on google colab with the following code but got an error message (see below) which I have no idea how to fix
Here is the dataset i used for training (it's very small): https://gofile.io/d/rxDpKt
Code:
from cellpose import models
from imutils import paths
import skimage.io

data_folder = '/content/drive/MyDrive/cellpose/train3D/images/'
labels_folder = '/content/drive/MyDrive/cellpose/train3D/masks/'
data_files = list(paths.list_images(data_folder))
labels_files = list(paths.list_images(labels_folder))

train_data = [skimage.io.imread(f).reshape(2, -1) for f in data_files]
train_labels = [skimage.io.imread(f).reshape(2, -1) for f in labels_files]

channels = [0,0]

new_model = models.CellposeModel(gpu=True, pretrained_model=False,
                                 diam_mean=30.0, net_avg=True,
                                 device=None, residual_on=True,
                                 style_on=True, concatenation=False)

new_model.train(train_data=train_data, train_labels=train_labels,
                           train_files=data_files,test_data=None, test_labels=None,
                           test_files=None, channels=channels, normalize=True,
                           pretrained_model=None,save_path='/content/drive/MyDrive/cellpose/train3D/images',
                           save_every=100,learning_rate=0.2, n_epochs=500, batch_size=2, rescale=True)

Error message:
  0%|          | 0/5 [00:00<?, ?it/s]** CUDA version installed and working. **
>>>> using GPU
NOTE: test data not provided OR labels incorrect OR not same number of channels as train data
NOTE: computing flows for labels (could be done before to save time)
/usr/local/lib/python3.6/dist-packages/cellpose/dynamics.py:158: RuntimeWarning: overflow encountered in exp
  mu_c[sr.start+y-1, sc.start+x-1] = np.exp(-d2/s2)
100%|██████████| 5/5 [1:06:50<00:00, 802.19s/it]>>>> training network with 2 channel input <<<<
>>>> saving every 100 epochs
>>>> median diameter = 30
>>>> LR: 0.20000, batch_size: 2, weight_decay: 0.00001
>>>> ntrain = 5
(2, 2, 345600)

---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-39-b1b8bd8c7e92> in <module>()
     20                            test_files=None, channels=channels, normalize=True,
     21                            pretrained_model=None,save_path='/content/drive/MyDrive/cellpose/train3D/images',
---> 22                            save_every=100,learning_rate=0.2, n_epochs=500, batch_size=2, rescale=False)
     23

2 frames
/usr/local/lib/python3.6/dist-packages/cellpose/transforms.py in random_rotate_and_resize(X, Y, scale_range, xy, do_flip, rescale, unet)
    562
    563         for k in range(nchan):
--> 564             I = cv2.warpAffine(img[k], M, (xy[1],xy[0]), flags=cv2.INTER_LINEAR)
    565             imgi[n,k] = I
    566

error: OpenCV(4.4.0) /tmp/pip-req-build-hw4jq8lf/opencv/modules/imgproc/src/imgwarp.cpp:1724: error: (-215:Assertion failed) dst.cols < SHRT_MAX && dst.rows < SHRT_MAX && src.cols < SHRT_MAX && src.rows < SHRT_MAX in function 'remap'

Hello,
I am wondering how to save XY, YZ, and XZ slices. Can this be done on Fiji and are you referring to a stack labeled with masks that needs to be sliced? Also, should the test data be saved as stacks if I hope to segment 3D data?


last active user link

Describe the bug
link to user profile form last active user stop to work

fix see #168


bundled Embree .dylib's out of date causing link error

Hi, I did a build with:
./Tools/premake/osx/premake5 --use_embree --embed_kernels gmake
make

and got the following error:
Linking FireRays
ld: warning: directory not found for option '-L/usr/lib64'
Undefined symbols for architecture x86_64:
  "_rtcDeleteDevice", referenced from:
      FireRays::EmbreeIntersectionDevice::~EmbreeIntersectionDevice() in embree_intersection_device.o
  "_rtcDeviceGetError", referenced from:
      FireRays::EmbreeIntersectionDevice::EmbreeIntersectionDevice() in embree_intersection_device.o
      FireRays::EmbreeIntersectionDevice::CheckEmbreeError() const in embree_intersection_device.o
  "_rtcDeviceNewScene", referenced from:
      FireRays::EmbreeIntersectionDevice::EmbreeIntersectionDevice() in embree_intersection_device.o
      FireRays::EmbreeIntersectionDevice::Preprocess(FireRays::World const&) in embree_intersection_device.o
      FireRays::EmbreeIntersectionDevice::GetEmbreeMesh(FireRays::Mesh const*) in embree_intersection_device.o
  "_rtcNewDevice", referenced from:
      FireRays::EmbreeIntersectionDevice::EmbreeIntersectionDevice() in embree_intersection_device.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [../Bin/Debug/x64/libFireRays64D.dylib] Error 1
make: *** [FireRays] Error 2

rtcDeleteDevice is a newer API in embree, so it seems that the .dylib's in 3rdparty/embree/lib/x64/ are too old.
Replacing the .dylib's in 3rdparty/embree/lib/x64/ with the ones from https://github.com/embree/embree/releases/download/v2.10.0/embree-2.10.0.x86_64.macosx.tar.gz fixed the issue.

@beasterio , could you please update embree for OSX in our repo?


All Roboto variants have functionality issues on Office 2016, except Mono

I hate the new versions of Roboto now, they don't properly work on Office 2016 now (they once did and it's my favorite font to use there). Some variants are either missing or not functional, when you select their other weights on Font Properties, they don't render at all.
On Windows 10, Roboto only works in Bold, Bold Italic, Medium and Light weights are switched, the rest is not working.
On Roboto Condensed, the rest is working but Regular is switched to Light, Light is not showing anything
On Roboto Slab: Light and Thin are the only ones not working
Mono is all fine
Please fix this. Here's the screenshots album for proof :https://imgur.com/a/VZT3u Also there's problem with Office 2016 on Windows 7 too tho I can't remember what's missing and not functional there specifically, but what I remember it has less problem than on Windows 10.

What was the previous version you were using?

Have you tried this on a different machine?
@laerm0 could you check this on your Win machine?

I don't know, I think it's the 2015 version. It's very long time ago. But I lost it since I formatted and just download the latest version. Clearing font cache doesn't do anything. Yes as I've said I've tried this on the computer cafe on Windows 7, but s I've said there's fewer problems tho I can't remember specifically what's missing and what's not. I may have to try it tommorow for confirmation

@Mancerrss thank you for the details!
With git you can rollback to earlier commits so you'll be able to retrieve the version which worked for you. I will look into this in more details some time this week.

There's like 500+ commits? Are you saying to me that I'll have to try that every version revision just to get what's working on mine? Also how could I do that? I just reported it here bc I can't seem find any official feedback forum to report this other than this? I don't know how to use Git

Go to and try the first commit. Those were v1.000 days.

I can reproduce this issue in Roboto Slab (thin and light not visible in Windows), but not the others. I don't have Word for Win 10, however WordPad has the same ability to show fonts.

@laerm0 Yea it's strange. Missing weights could vary if not random

What's the update on this? Did you guys already pushed an update fixing this?

Roboto Mono and Slab have functionality issues on Haiku.
On Roboto Mono, Regular is switched to Medium and Thin Italic is switched to Light Italic.
On Roboto Slab, Thin is switched to Light.


Question about Customized Dataset

Hello, I'm using Uni3D to try to extract embeddings from 3D models from Objaverse. The format of 3d models are .glb, and I don't know how to transform it into .npy that you use in Objaverse-LVIS. Do you know how to make it or where can I find it?
BTW, the code snippet below is how I manage to extract the embedding of 3D models. Am I missing something?
@torch.no_grad()
def encode(dataloader):
    model = create_uni3d()
    model.eval()
    model.to(device)
    embeddings = []
    for (pc, _, _, rgb) in tqdm(dataloader, desc="Extracting embeddings"):
        pc = pc.to(device=device, non_blocking=True)
        rgb = rgb.to(device=device, non_blocking=True)
        feature = torch.cat((pc, rgb), dim=-1)
        pc_features = model.encode_pc(feature)
        pc_features = pc_features / pc_features.norm(dim=-1, keepdim=True)
        embeddings.append(pc_features)
    embeddings = torch.cat(embeddings, dim=0)
    return embeddings

Hello, I'm using Uni3D to try to extract embeddings from 3D models from Objaverse. The format of 3d models are .glb, and I don't know how to transform it into .npy that you use in Objaverse-LVIS. Do you know how to make it or where can I find it?
BTW, the code snippet below is how I manage to extract the embedding of 3D models. Am I missing something?
@torch.no_grad()
def encode(dataloader):
    model = create_uni3d()
    model.eval()
    model.to(device)
    embeddings = []
    for (pc, _, _, rgb) in tqdm(dataloader, desc="Extracting embeddings"):
        pc = pc.to(device=device, non_blocking=True)
        rgb = rgb.to(device=device, non_blocking=True)
        feature = torch.cat((pc, rgb), dim=-1)
        pc_features = model.encode_pc(feature)
        pc_features = pc_features / pc_features.norm(dim=-1, keepdim=True)
        embeddings.append(pc_features)
    embeddings = torch.cat(embeddings, dim=0)
    return embeddings

I just noticed that in your paper Sec 4.6, you used Objaverse to testify retrieval ability. Can you tell me how did you guys do it?

Hi,
Thanks for your interest in Uni3D. You can easily sample point clouds and the corresponding colors from the mesh file (e.g. glb) with some python tools like Trimesh or some software, e.g. Meshlab. If you have trouble in sampling colors, you can simply set the color to 0.4 as we handle the point clouds without color.
Your code for extracting embeddings with Uni3D seems to be correct, but you should remember to normalize the point cloud as we did in the dataset file. The retrieval process is simple, where you can first collect a set of model embeddings and find the most similar 3D model to the text/image embeddings.

Thank you for your really quick response. But I still get some questions.

Can you share us the code that you use to get the Objaverse-LVIS dataset? In order to gain the best performance, I think it is important to align the input.
Why don't you use the color channel? I have seen this behavior in 3D Object Detection, but still can't understand it. After all, in my opinion it implies some patterns that benefit.
If you don't need the color channel, why not just use the xyz but concat them together?
And finally what is the meaning of the number 0.4?

I just found that in openshape's hf, they released a code snippet to transfer .glbs. Can I use this?


telemetry-gateway chart is installed if default ingress gateway is disabled

Describe the bug
I am not sure if this is Istio's expected behaviour but telemetry-gateway sub-chart is installed after disabling default ingress gateway in chart values. Although this is doesn't have any visible effects, I think it shouldn't be installed if default ingress gateway is disabled.
Expected behavior
telemetry-gateway sub-chart should not be installed if default ingress gateway is disabled.
Steps to reproduce the bug
helm install install/kubernetes/helm/istio --set gateways.enabled=false --name istio --namespace istio-system
Version
Kubernetes: 1.11
Istio: 1.0.6
Installation
helm install install/kubernetes/helm/istio --set gateways.enabled=false --name istio --namespace istio-system
Environment
Minikube v0.34.1
Cluster state
N/A

It is possible to use the 1.0.6 telemetry-gateway without coupling it to the ingress gateway. In that case, it would be a purely internal proxy for the telemetry services (in your case, prometheus).  The configuration is harmless, as you point out, if you do not intend to use it.
That being said, telemetry-gateway was removed in 1.1, in favor of individual gateways for each telemetry service, iirc.
I'm going to close this, as this was intentional and is unlikely to be fixed in a 1.0.X release.


QuickUMLS : Typo in portuguese language name preventing NLTK stopwords from working

Currently the QuickUMLS lookup map for portuguese looks correct, but it prevents loading NLTK stopwords due to a typo

This fix is now in the develop branch.


GZip compression support

http://www.sitemaps.org/faq.html#faq_compression
Since sitemap size is limited to 10mb http://www.sitemaps.org/faq.html#faq_sitemap_size it is also good to gzip sitemap after minification.

gzipping should be handled by webserver.


camera: only request flight info when system has autopilot

Currently, the camera plugin assumes that the system was an autopilot and always requests flight information. However it may be the case that the system is not an autopilot, e.g. a stand-alone camera.
This adds a condition to check that the system is an autopilot before sending the request.

Oh, style is failing. Can you run the script? ./tools/fix_style.sh . should do it.

style is fixed


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-archive-test-source-version-target/pull/210 is merged into live branch.
Auto archive content to https://github.com/opstest2/docs-archive-test-source-version-target.git

Docs Build status updates of commit 740976e:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

versioningArchiveSourceFolder/TOC.yml
:white_check_mark:Succeeded
View (sql-server-2014 || azuresqldb-current || azuresqldb-mi-current || azure-sqldw-latest || >= aps-pdw-2016 || >= sql-server-2016 || >= sql-server-linux-2017 || sql-server-previousversions || sqlallproducts-allversions)

versioningArchiveSourceFolder/docfx.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