Cannot control go2 when the second time.

I extracted the WebRTC part for controlling Go2 (without ROS) but encountered the following issues:
webrtc_driver.py

import base64
import hashlib
import json
import logging
import time

import aiohttp
from aiortc import RTCPeerConnection, RTCSessionDescription
from aiortc.contrib.media import MediaBlackhole

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

class Go2Connection():
    def __init__(self, robot_ip, robot_num, token="", on_validated=None, on_message=None, on_open=None):
        self.pc = RTCPeerConnection()
        self.robot_ip = robot_ip
        self.robot_num = str(robot_num)
        self.token = token
        self.robot_validation = "PENDING"
        self.on_validated = on_validated
        self.on_message = on_message
        self.on_open = on_open

        self.audio_track = MediaBlackhole()
        self.video_track = MediaBlackhole()

        self.data_channel = self.pc.createDataChannel("data", id=0)
        self.data_channel.on("open", self.on_data_channel_open)
        self.data_channel.on("message", self.on_data_channel_message)

        self.pc.on("track", self.on_track)
        self.pc.on("connectionstatechange", self.on_connection_state_change)

    def on_connection_state_change(self):
        logger.info(f"Connection state is {self.pc.connectionState}")

    def on_track(self, track):
        logger.info(f"Receiving {track.kind}")

    async def generate_offer(self):
        await self.audio_track.start()
        await self.video_track.start()
        offer = await self.pc.createOffer()
        await self.pc.setLocalDescription(offer)
        return offer.sdp

    async def set_answer(self, sdp):
        answer = RTCSessionDescription(sdp, type="answer")
        await self.pc.setRemoteDescription(answer)

    def on_data_channel_open(self):
        logger.info("Data channel is open")
        if self.on_open:
            self.on_open()

    def on_data_channel_message(self, msg):
        logger.info(f"Received message: {msg}")

        if self.data_channel.readyState != "open":
            self.data_channel._setReadyState("open")

        try:
            if isinstance(msg, str):
                msgobj = json.loads(msg)
                if msgobj.get("type") == "validation":
                    self.validate_robot_conn(msgobj)
            if self.on_message:
                self.on_message(msg, msgobj, self.robot_num)
        except json.JSONDecodeError:
            pass

    async def connect(self):
        offer = await self.generate_offer()
        url = f"http://{self.robot_ip}:8081/offer"
        headers = {"Content-Type": "application/json"}
        data = {
            "sdp": offer,
            "id": "STA_localNetwork",
            "type": "offer",
            "token": "",
        }

        connected = False
        while not connected:
            async with aiohttp.ClientSession() as session:
                async with session.post(url, json=data, headers=headers) as resp:
                    if resp.status == 200:
                        answer_data = await resp.json()
                        answer_sdp = answer_data.get("sdp")
                        await self.set_answer(answer_sdp)
                        connected = True
                    else:
                        logger.info(f"Failed to get answer from server: Reason: {resp}")
                        logger.info("Try to reconnect...")
                        time.sleep(1)

    def validate_robot_conn(self, message):
        if message.get("data") == "Validation Ok.":
            self.robot_validation = "SUCCESS"
            if self.on_validated:
                self.on_validated(self.robot_num)
        else:
            self.publish(
                "",
                self.encrypt_key(message.get("data")),
                "validation",
            )

    def publish(self, topic, data, msg_type):
        if self.data_channel.readyState != "open":
            logger.info(f"Data channel is not open. State is {self.data_channel.readyState}")
            return

        payload = {
            "type": msg_type,
            "topic": topic,
            "data": data,
        }

        payload_dumped = json.dumps(payload)
        logger.info(f"-> Sending message {payload_dumped}")
        self.data_channel.send(payload_dumped)

    @staticmethod
    def hex_to_base64(hex_str):
        bytes_array = bytes.fromhex(hex_str)
        return base64.b64encode(bytes_array).decode("utf-8")

    @staticmethod
    def encrypt_key(key):
        prefixed_key = f"UnitreeGo2_{key}"
        encrypted = Go2Connection.encrypt_by_md5(prefixed_key)
        return Go2Connection.hex_to_base64(encrypted)

    @staticmethod
    def encrypt_by_md5(input_str):
        hash_obj = hashlib.md5()
        hash_obj.update(input_str.encode("utf-8"))
        return hash_obj.hexdigest()

When asyncio.run(connect()) finishes, the connection automatically closes: INFO:scripts.webrtc_driver:Connection state is closed.

import asyncio
import logging
import time

from scripts.go2_func import gen_command
from scripts.webrtc_driver import Go2Connection

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

robot_ip = "myip"
token = ""
robot_num = "0"

conn = Go2Connection(
    robot_ip=robot_ip,
    robot_num=robot_num,
    token=token,
    on_validated=lambda _: logger.info("Robot validated"),
    on_message=lambda msg, _, __: logger.info(f"Message received: {msg}")
)

async def connect():
    await conn.connect()
    logger.info("Connected to robot")

    while conn.robot_validation == "PENDING":
        await asyncio.sleep(0.1)

    if conn.robot_validation != "SUCCESS":
        logger.error("Failed to validate robot connection")
        return

    logger.info("Robot connection validated successfully")

def fun1():
    cmd = gen_command(1029)
    conn.data_channel.send(cmd)
    print('fun1 called')

def fun2():
    cmd = gen_command(1029)
    conn.data_channel.send(cmd)
    print('fun2 called')

if __name__ == "__main__":
    asyncio.run(connect())
    time.sleep(3)
    fun1()
    time.sleep(10)
    fun2()

I tried adding nest_async(), which resolved the automatic disconnection issue, but found that although fun1 and fun2 are executed correctly, Go2 has no response.

import asyncio
import logging
import time

import nest_asyncio
from scripts.go2_func import gen_command
from scripts.webrtc_driver import Go2Connection

nest_asyncio.apply()

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

robot_ip = "myip"
token = ""
robot_num = "0"

conn = Go2Connection(
    robot_ip=robot_ip,
    robot_num=robot_num,
    token=token,
    on_validated=lambda _: logger.info("Robot validated"),
    on_message=lambda msg, _, __: logger.info(f"Message received: {msg}")
)

async def connect():
    await conn.connect()
    logger.info("Connected to robot")

    while conn.robot_validation == "PENDING":
        await asyncio.sleep(0.1)

    if conn.robot_validation != "SUCCESS":
        logger.error("Failed to validate robot connection")
        return

    logger.info("Robot connection validated successfully")

def fun1():
    cmd = gen_command(1029)
    conn.data_channel.send(cmd)
    print('fun1 called')

def fun2():
    cmd = gen_command(1029)
    conn.data_channel.send(cmd)
    print('fun2 called')

if __name__ == "__main__":
    asyncio.run(connect())
    time.sleep(3)
    fun1()
    time.sleep(10)
    fun2()

fun1 called.
fun2 called.

Then, I made fun1 and fun2 async. They both executed, but only fun2 successfully controlled Go2, while fun1 still had no response.

import asyncio
import logging
import time
from functools import wraps

import nest_asyncio
from scripts.go2_func import gen_command
from scripts.webrtc_driver import Go2Connection

nest_asyncio.apply()

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

robot_ip = "myip"
token = ""
robot_num = "0"

conn = Go2Connection(
    robot_ip=robot_ip,
    robot_num=robot_num,
    token=token,
    on_validated=lambda _: logger.info("Robot validated"),
    on_message=lambda msg, _, __: logger.info(f"Message received: {msg}")
)

async def connect():
    await conn.connect()
    logger.info("Connected to robot")

    while conn.robot_validation == "PENDING":
        await asyncio.sleep(0.1)

    if conn.robot_validation != "SUCCESS":
        logger.error("Failed to validate robot connection")
        return

    logger.info("Robot connection validated successfully")

def ensure_connected(func):
    @wraps(func)
    async def wrapper(*args, **kwargs):
        if conn.pc.connectionState != "connected":
            logger.info("Robot not connected")
            return
        if conn.data_channel.readyState != "open":
            logger.info("Data channel not opened")
            return
        return await func(*args, **kwargs)
    return wrapper

@ensure_connected
async def fun1():
    cmd = gen_command(1029)
    logger.info(f'Sending command from fun1: {cmd}')
    conn.data_channel.send(cmd)
    logger.info('fun1 called')

@ensure_connected
async def fun2():
    cmd = gen_command(1029)
    logger.info(f'Sending command from fun2: {cmd}')
    conn.data_channel.send(cmd)
    logger.info('fun2 called')

if __name__ == "__main__":
    asyncio.run(connect())
    time.sleep(3)
    asyncio.run(fun1())
    time.sleep(10)
    asyncio.run(fun2())

fun1 called.
fun2 called.

When I write all operations under a single async def can I control multiple commands correctly.

import asyncio
import logging

from scripts.go2_constants import ROBOT_CMD
from scripts.go2_func import gen_command, gen_mov_command
from scripts.webrtc_driver import Go2Connection

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

async def main():
    robot_ip = "myip"
    token = ""
    robot_num = "0"

    conn = Go2Connection(
        robot_ip=robot_ip,
        robot_num=robot_num,
        token=token,
        on_validated=lambda _: logger.info("Robot validated"),
        on_message=lambda msg, _, __: logger.info(f"Message received: {msg}")
    )
    await conn.connect()
    logger.info("Connected to robot")

    while conn.robot_validation == "PENDING":
        await asyncio.sleep(0.1)

    if conn.robot_validation != "SUCCESS":
        logger.error("Failed to validate robot connection")
        return

    logger.info("Robot connection validated successfully")

    cmd = gen_command(1029)
    conn.data_channel.send(cmd)

    await asyncio.sleep(10)

    cmd = gen_command(1029)
    conn.data_channel.send(cmd)

    await asyncio.sleep(5)

    await conn.pc.close()
    logger.info("Disconnected from robot to stop movement")

if __name__ == "__main__":
    asyncio.run(main())

Also the following method can work successfully.

import asyncio
import logging
import nest_asyncio
from functools import wraps
from scripts.go2_func import gen_command
from scripts.webrtc_driver import Go2Connection

nest_asyncio.apply()

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

robot_ip = "myip"
token = ""
robot_num = "0"

conn = Go2Connection(
    robot_ip=robot_ip,
    robot_num=robot_num,
    token=token,
    on_validated=lambda _: logger.info("Robot validated"),
    on_message=lambda msg, _, __: logger.info(f"Message received: {msg}")
)

async def connect():
    await conn.connect()
    logger.info("Connected to robot")

    while conn.robot_validation == "PENDING":
        await asyncio.sleep(0.1)

    if conn.robot_validation != "SUCCESS":
        logger.error("Failed to validate robot connection")
        return

    logger.info("Robot connection validated successfully")

def ensure_connected(func):
    @wraps(func)
    async def wrapper(*args, **kwargs):
        if conn.pc.connectionState != "connected":
            logger.info("Robot not connected")
            return
        if conn.data_channel.readyState != "open":
            logger.info("Data channel not opened")
            return
        return await func(*args, **kwargs)
    return wrapper

@ensure_connected
async def fun1():
    cmd = gen_command(1029)
    conn.data_channel.send(cmd)
    print('fun1 called')

@ensure_connected
async def fun2():
    cmd = gen_command(1029)
    conn.data_channel.send(cmd)
    print('fun2 called')

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(connect())
    loop.create_task(fun1())
    loop.create_task(fun2())
    loop.run_forever()

What might be causing this issue? How can I ensure that different functions are called correctly without placing all commands in the same coroutine?

Maybe the data send not correctly complete event loop in first time call fun?

Hi, there is no problem controlling the dog in real-time with the joystick from PC, something is wrong with the data that you are sending to it.

Also if you don't provide a conn token to fun1 and fun2 , you only will have 1 connection running at the same time.

@abizovnuralem
Thanks your reply.
Is the conn token can be any like the following?
conn = Go2Connection(
    robot_ip=ROBOT_IP,
    robot_num="0",
    token="Go2",
    on_open=lambda: logger.info("Data channel opened"),
    on_validated=lambda _: logger.info("Robot validated"),
    on_message=lambda msg, _, __: logger.info(f"Message received: {msg}")
)

async def go2_scrape():
    conn.data_channel.send(
        gen_command(ROBOT_CMD['Scrape'])
    )

Obtaining security token
Connecting to your device without a security token is possible and might allow a connection to be established. However, this method limits you to a single active connection at any time. To simultaneously use multiple clients, such as a WebRTC-based application and a phone app, a valid security token is necessary. This ensures secure, multi-client access to your device.
One way is to sniff the traffic between the dog and your phone. Assuming that you have Linux or Mac:
Run tinyproxy or any other HTTP proxy on your computer
Set your computer's IP and port as HTTP proxy on your phone
Run wireshark or ngrep on your box sniffing port 8081 like ngrep port 8081.
Look for the token in the TCP stream after you connect your phone to the dog via the app
The token looks like this in the request payload:
{
"token": "eyJ0eXAiOizI1NiJtlbiI[..]CI6MTcwODAxMzUwOX0.hiWOd9tNCIPzOOLNA",
"sdp": "v=0\r\no=- ",
"id": "STA_localNetwork",
"type": "offer"
}
Another option is to obtain token via the /login/email endpoint.
curl -vX POST https://global-robot-api.unitree.com/login/email -d "email=&password="


Autocomplete causes modal close does not work anymore.

The autocomplete causes modal close does not work anymore. Anyone encountered same issue?

if you have an example i'm happy to look into it

feel free to reopen with a jsfiddle to show the issue


[Suggestion] Add process for creating new TAG ENV communication channels

Description

As part of Green Reviews WG lifecycle we had a need to create a new Slack channel where WG specific discussions can take place. In addition we have recently created a TAG ENV LinkedIn page and with all the uncertainties around Twitter/X there may be a need to utilize additional social media platforms for TAG ENV communication in the future. In case new WGs will be created there may once again be a need to create a new Slack channel for instance.
In order to minimize uncertainty and repeating questions it can be beneficial to have the process outlined and put in writing as part of the TAG ENV governance folder. It doesn't need to be long but should outline a few steps that must be completed once a new communication channel is created, like f.ex. approval from TAG ENV lead, update README, website, etc.
Changes related to this are part of following PR: #252
Impact

This change will make the process clear and transparent once there will be a need to create a new communication channel in the future. Once the process is defined and put in writing we will also minimize repeating questions and uncertainty around how such changes should be done.
Scope

Changes are done in #252
@leonardpahlke FYI.

Thanks @guidemetothemoon, I think that is a great addition to the governance.

We may want to create a generic issue template for this purpose. "proposal to create a new slack channel for WG XYZ" / "proposal to utilize the social media platform XYZ"

Thanks @leonardpahlke ! Great suggestion regarding the issue template, I have now added it to #252.


No data source found

Note: If your question is regarding the AWS Amplify Console service, please log it in the
official AWS Amplify Console forum

I have a custom resolver function that doesn't require a data source. All the resolver does is add the appsync API id and the env to $ctx.stash so other functions in the pipeline can access it. I made the DataSourceName NONE (since it doesn't require a data source).  But I keep getting this error (No data source found named NONE).

My question is how do I create a custom resolver function without a data source
This is my custom resolver function
	"addEnvVariablesToStash": {
			"Type": "AWS::AppSync::FunctionConfiguration",
			"Properties": {
				"ApiId": {
					"Ref": "AppSyncApiId"
				},
				"DataSourceName": "NONE",
				"Description": "Sets $ctx.stash.env to the Amplify environment and $ctx.stash.apiId to the Amplify API ID",
				"FunctionVersion": "2018-05-29",
				"Name": "addEnvVariablesToStash",
				"RequestMappingTemplate": "{\n          \"version\": \"2017-02-28\",\n          \"payload\": {}\n        }",
				"ResponseMappingTemplate": {
					"Fn::Join": [
						"",
						[
							"$util.qr($context.stash.put(\"env\", \"",
							{ "Ref": "env" },
							"\"))\n$util.qr($context.stash.put(\"apiId\", \"",
							{ "Ref": "AppSyncApiId" },
							"\"))\n$util.toJson($ctx.prev.result)"
						]
					]
				}
			}
		},

When writing a resolver that is pointing to a NONE datasource you will need to create the datasource as well.
Docs:
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-type
Resolver Docs:
https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-none.html
Should you have further questions on writing your own custom resolvers we recommend our community discord: https://discord.gg/jWVbPfC


Can't find @drawable/abc_ic_ab_back_mtrl_am_alpha when using support libraries v23.2.0

Error message:
Error:(3, 5) No resource found that matches the given name (at 'android:actionModeCloseDrawable' with value '@drawable/abc_ic_ab_back_mtrl_am_alpha').

I think using private resources from the support libraries is not safe.

See #964


Add scoring system

The scoring system should count the number of Pacdots eaten, and stop counting once the game ends.

This can be attached to the current count system with minimal changes. For now, Pacdots will be worth 10 points and Powerdots will be worth 50 points.

Proposed API documentation:
API Documentation for Pacdots
Get Game Score
Description
Retrieves the current game score. An eaten Pacdot is worth 10 points, and an eaten Powerdot is worth 50 points.
Request
Method
GET
Mapping
/pacdots/score
Response
Codes

HTTP Status Code
Meanings

200 OK
Retrieved game score succesfully

500 Internal Server Error
An error occurred which could not be resolved

JSON body
{
	"score" : 60
}

Example cURL call

Completed in the above-referenced commit.
@pacmacro/android and @pacmacro/ios, the scoring system is now active.


Reimagine how the babel transform works

This PR is part of #36.
Caveats:

[x] To be used in EmberObject, the object needs to be created with an ownerInjection for this to work
[x] Does not yet support native classes, @service decorator
[x] Does not support a computed within a function
[x] Example of import { computedWithVariation as computed }

TODO

[x] Rename ldService
[x] Update README with caveats
[x] Update README with new babel transform location
[x] Update variation error with link to latest README info

@achambers Looks good, I see that the test-node tests are failing for me locally. We should probably include those as a part of the Travis test script 😄

@achambers Looks good, I see that the test-node tests are failing for me locally. We should probably include those as a part of the Travis test script 😄

On it. Thanks.


Get Apple Login required data

You must specify the information required to bring user information from his apple account, keep in mind that the token will be sent from the Client side (frontend - flutter) and our mission here is only to send it to apple  and bring information based on it.
After identifying the information, add it to the class assigned to it, and do not forget if it is general information to define it in the father's class as well so that the other colleagues will determine their required information as well
if there is a scope you should make it controllable from our side

I will take this task


Update messing with media queries

We updated our app from ^0.3.5 to 0.5.0 and we're having a bunch of specificity issues where the plugin is rendering css in the wrong places and/or using css classes weirdly.
Example
We have a component with the following sass code in it:
 h1 {
    font-size: 34px;
    text-align: center;
    margin: 40px 0 20px;
    @media (max-width: #{$screen-xs-max}) {
      font-size: 24px;
    }
 }

In the old version, this would correctly have the same class twice with one of them having a @media query that affects mobile. However, in the version, the css class changes for mobile and has one less selector. Basically, it goes from .a .b h1 to .a h1 and this causes the browser to render the desktop styles instead.
Any thoughts about what this might be?

@hassanbazzi hmm.. I don't think anything that was changed would have affected that. I can dig into this.


Update UI and properties for Stable Horde

I finally made time to dive into this in detail. The work you did was great. I made changes to the UI and the internal properties to allow for even more backends to be added easily in the future.
Not sure what happened when I tried to push to your pull request. My only option ended up being to create a new pull request on your repo... If you want to merge this in, hopefully it will bring it back to the pull request on my repo, and we can continue the conversation there.


Oracle 19.3.0 not getting deployed on AKS cluster because of Readiness probe failure

What is happening?
I'm trying to deploy Oracle 19.3.0 on AKs environment with persistence and when helm is deploying the chart to the AKS cluster, pod status is running, but it gets stuck at the Readiness probe inside the /opt/oracle/checkDBStatus.sh.

C:\Users\paju\Desktop\Oracle_db_helm>kubectl get pods
NAME                                   READY   STATUS    RESTARTS   AGE
oracle19c-oracle-db-5c59477cdb-br2m2   0/1     Running   0          23h

C:\Users\paju\Desktop\Oracle_db_helm>kubectl describe pods oracle19c-oracle-db-5c59477cdb-br2m2
Name:         oracle19c-oracle-db-5c59477cdb-br2m2
Namespace:    habs-namespace
Priority:     0
Node:         aks-xxxx-27628362-vmss000002/<IP_ADDRESS>
Start Time:   Thu, 13 Jan 2022 11:07:01 -0500
Labels:       app=oracle19c-oracle-db
pod-template-hash=5c59477cdb
Annotations:
Status:       Running
IP:           <IP_ADDRESS>
IPs:
IP:           <IP_ADDRESS>
Controlled By:  ReplicaSet/oracle19c-oracle-db-5c59477cdb
Containers:
oracle-db:
Container ID:   containerd://32d84ff46a2d3ed77b05aedd07dce79a95ba91073005ca70eb6103865e881b15
Image:          container-registry.oracle.com/database/enterprise:<IP_ADDRESS>
Image ID:       container-registry.oracle.com/database/enterprise@sha256:b1b3616864050409f95211d0c8196e1026c95fcd5e3e42985b1378f92394b4a7
Ports:          1521/TCP, 5500/TCP
Host Ports:     0/TCP, 0/TCP
State:          Running
Started:      Thu, 13 Jan 2022 11:12:36 -0500
Ready:          False
Restart Count:  0
Readiness:      exec [/bin/sh -c if [ -f $ORACLE_BASE/checkDBLockStatus.sh ]; then $ORACLE_BASE/checkDBLockStatus.sh ; else $ORACLE_BASE/checkDBStatus.sh; fi ] delay=20s timeout=20s period=40s #success=1 #failure=3
Environment:
SVC_HOST:             oracle19c-oracle-db
SVC_PORT:             1521
ORACLE_SID:           ORCLCDB
ORACLE_PDB:           ORCLPDB1
ORACLE_PWD:           <set to the key 'oracle_pwd' in secret 'oracle19c-oracle-db'>  Optional: false
ORACLE_CHARACTERSET:  AL32UTF8
ORACLE_EDITION:       enterprise
ENABLE_ARCHIVELOG:    false
Mounts:
/opt/oracle/oradata from datamount (rw)
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-mw4cq (ro)
Conditions:
Type              Status
Initialized       True
Ready             False
ContainersReady   False
PodScheduled      True
Volumes:
datamount:
Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName:  oracle19c-oracle-db
ReadOnly:   false
kube-api-access-mw4cq:
Type:                    Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds:  3607
ConfigMapName:           kube-root-ca.crt
ConfigMapOptional:
DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type     Reason     Age                   From     Message

Warning  Unhealthy  20s (x3115 over 22h)  kubelet  (combined from similar events): Readiness probe failed: [2022:01:14 15:07:41]: Connecting to the lock process /tmp/.ORCLCDB.exist_lck
[2022:01:14 15:07:41]: Lock held .ORCLCDB.exist_lck
ORACLE_HOME = [/home/oracle] ? ORACLE_BASE environment variable is not being set since this
information is not available for the current user ID .
You can set ORACLE_BASE manually if it is required.
Resetting ORACLE_BASE to its previous value or ORACLE_HOME
The Oracle base remains unchanged with value /opt/oracle
/opt/oracle/checkDBStatus.sh: line 26: sqlplus: command not found

What to expect?
I expect pod to be up and running correctly and create a PDB db based on the value I have provided inside the values.yaml file.
How to reproduce?

C:\Users\xxx\Desktop\Oracle_db_helm>helm version
version.BuildInfo{Version:"v3.7.1", GitCommit:"1d11fcb5d3f3bf00dbe6fe31b8412839a96b3dc4", GitTreeState:"clean", GoVersion:"go1.16.9"}

C:\Users\xxx\Desktop\Oracle_db_helm>kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.0", GitCommit:"c2b5237ccd9c0f1d600d3072634ca66cefdf272f", GitTreeState:"clean", BuildDate:"2021-08-04T18:03:20Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.4", GitCommit:"b695d79d4f967c403a96986f1750a35eb75e75f1", GitTreeState:"clean", BuildDate:"2021-11-18T19:30:35Z", GoVersion:"go1.16.10", Compiler:"gc", Platform:"linux/amd64"}

Storage class can be found here

{
"kind": "StorageClass",
"apiVersion": "storage.k8s.io/v1",
"metadata": {
"name": "my-azurefile-jp",
"uid": "xxxxx",
"resourceVersion": "3980480",
"creationTimestamp": "2022-01-07T16:24:50Z",
"managedFields": [
{
"manager": "kubectl-replace",
"operation": "Update",
"apiVersion": "storage.k8s.io/v1",
"time": "2022-01-07T16:24:50Z",
"fieldsType": "FieldsV1",
"fieldsV1": {
"f:mountOptions": {},
"f:parameters": {
".": {},
"f:location": {},
"f:skuName": {},
"f:storageAccount": {}
},
"f:provisioner": {},
"f:reclaimPolicy": {},
"f:volumeBindingMode": {}
}
}
]
},
"provisioner": "kubernetes.io/azure-file",
"parameters": {
"location": "Canada Central",
"skuName": "Standard_LRS",
"storageAccount": "xxx"
},
"reclaimPolicy": "Delete",
"mountOptions": [
"dir_mode=0777",
"file_mode=0777",
"mfsymlinks",
"cache=strict",
"actimeo=30"
],
"volumeBindingMode": "Immediate"
}

Values.yaml file is here

##This parameter changes the ORACLE_SID of the database. The default value is set to ORCLCDB.
oracle_sid: ORCLCDB
##This parameter modifies the name of the PDB. The default value is set to ORCLPDB1.
oracle_pdb: ORCLPDB1
##The Oracle Database SYS, SYSTEM and PDB_ADMIN password. Defaults to a randomly generated password
oracle_pwd:
##The character set to use when creating the database. Defaults to AL32UTF8
oracle_characterset: AL32UTF8
##The database edition (default: enterprise)
oracle_edition: enterprise
##Enable archive log mode when creating the database
enable_archivelog: false
##Enable persistence using Persistent Volume Claims
##ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
persistence:
##Oracle database data Persistent Volume Storage Class, nfs or block
storageClass: "my-azurefile-jp"
size: 30Gi
##Deploy only on nodes in a particular availability domain, eg PHX-AD-1 on OCI
##Leave empty if there is no such requirement
availabilityDomain:
##Deploy multiple replicas for fast fail over
replicas: 1
##deploy LoadBalancer service
loadBalService: false
##name of image
image: container-registry.oracle.com/database/enterprise:<IP_ADDRESS>
##image pull policy, IfNotPresent or Always
imagePullPolicy: Always
##container registry login/password
imagePullSecrets: regcred
##Deploy only on nodes having required labels .
##Format label_name : label_value . eg pool: sidb
##Leave empty if there is no such requirement
nodeLabels:
##agentpool: apppool

Please let me know if you need anything more for debugging

[2022:01:13 16:12:37]: Acquiring lock .ORCLCDB.create_lck with heartbeat 30 secs
[2022:01:13 16:12:37]: Lock acquired
[2022:01:13 16:12:37]: Starting heartbeat
[2022:01:13 16:12:37]: Lock held .ORCLCDB.create_lck
ORACLE EDITION: ENTERPRISE

LSNRCTL for Linux: Version <IP_ADDRESS>.0 - Production on 13-JAN-2022 16:12:37

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Starting /opt/oracle/product/19c/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version <IP_ADDRESS>.0 - Production
System parameter file is /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/oracle19c-oracle-db-5c59477cdb-br2m2/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<IP_ADDRESS>)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version <IP_ADDRESS>.0 - Production
Start Date                13-JAN-2022 16:12:37
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/oracle19c-oracle-db-5c59477cdb-br2m2/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<IP_ADDRESS>)(PORT=1521)))
The listener supports no services
The command completed successfully
Prepare for db operation
8% complete
Copying database files
31% complete
100% complete
[FATAL] Recovery Manager failed to restore datafiles. Refer logs for details.
8% complete
0% complete
Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB.log" for further details.
[ 2022-01-13 16:12:46.362 UTC ] Prepare for db operation
DBCA_PROGRESS : 8%
[ 2022-01-13 16:12:46.572 UTC ] Copying database files
DBCA_PROGRESS : 31%
DBCA_PROGRESS : 100%
[ 2022-01-13 16:14:30.087 UTC ] [FATAL] Recovery Manager failed to restore datafiles. Refer logs for details.
DBCA_PROGRESS : 8%
DBCA_PROGRESS : 0%

SQL*Plus: Release <IP_ADDRESS>.0 - Production on Thu Jan 13 16:14:30 2022
Version <IP_ADDRESS>.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release <IP_ADDRESS>.0 - Production
Version <IP_ADDRESS>.0

SQL>    ALTER SYSTEM SET control_files='/opt/oracle/oradata/ORCLCDB/control01.ctl' scope=spfile
*
ERROR at line 1:
ORA-32001: write to SPFILE requested but no SPFILE is in use

SQL>
System altered.

SQL>    ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE
*
ERROR at line 1:
ORA-01109: database not open

SQL> BEGIN DBMS_XDB_CONFIG.SETGLOBALPORTENABLED (TRUE); END;

      *
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00201: identifier 'DBMS_XDB_CONFIG.SETGLOBALPORTENABLED' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

SQL> SQL>
Session altered.

SQL>    CREATE USER OPS$oracle IDENTIFIED EXTERNALLY
*
ERROR at line 1:
ORA-01109: database not open

SQL>    GRANT CREATE SESSION TO OPS$oracle
*
ERROR at line 1:
ORA-01109: database not open

SQL>    GRANT SELECT ON sys.v_$pdbs TO OPS$oracle
*
ERROR at line 1:
ORA-01109: database not open

SQL>    GRANT SELECT ON sys.v_$database TO OPS$oracle
*
ERROR at line 1:
ORA-01109: database not open

SQL>    ALTER USER OPS$oracle SET container_data=all for sys.v_$pdbs container = current
*
ERROR at line 1:
ORA-01109: database not open

SQL> SQL> Disconnected from Oracle Database 19c Enterprise Edition Release <IP_ADDRESS>.0 - Production
Version <IP_ADDRESS>.0
ORACLE_HOME = [/home/oracle] ? ORACLE_BASE environment variable is not being set since this
information is not available for the current user ID .
You can set ORACLE_BASE manually if it is required.
Resetting ORACLE_BASE to its previous value or ORACLE_HOME
The Oracle base remains unchanged with value /opt/oracle
/opt/oracle/checkDBStatus.sh: line 26: sqlplus: command not found
mv: cannot stat '/opt/oracle/product/19c/dbhome_1/dbs/spfileORCLCDB.ora': No such file or directory
mv: cannot stat '/opt/oracle/product/19c/dbhome_1/dbs/orapwORCLCDB': No such file or directory
mv: preserving times for '/opt/oracle/oradata/dbconfig/ORCLCDB/sqlnet.ora': Operation not permitted
mv: preserving permissions for '/opt/oracle/oradata/dbconfig/ORCLCDB/sqlnet.ora': Operation not permitted
mv: preserving times for '/opt/oracle/oradata/dbconfig/ORCLCDB/listener.ora': Operation not permitted
mv: preserving permissions for '/opt/oracle/oradata/dbconfig/ORCLCDB/listener.ora': Operation not permitted
mv: preserving times for '/opt/oracle/oradata/dbconfig/ORCLCDB/tnsnames.ora': Operation not permitted
mv: preserving permissions for '/opt/oracle/oradata/dbconfig/ORCLCDB/tnsnames.ora': Operation not permitted
mv: preserving times for '/opt/oracle/oradata/dbconfig/ORCLCDB/.docker_enterprise': Operation not permitted
mv: preserving permissions for '/opt/oracle/oradata/dbconfig/ORCLCDB/.docker_enterprise': Operation not permitted

Executing user defined scripts
/opt/oracle/runUserScripts.sh: running /opt/oracle/scripts/extensions/setup/savePatchSummary.sh

/opt/oracle/runUserScripts.sh: running /opt/oracle/scripts/extensions/setup/swapLocks.sh
[2022:01:13 16:14:34]: Releasing lock .ORCLCDB.create_lck
[2022:01:13 16:14:34]: Lock released .ORCLCDB.create_lck
[2022:01:13 16:14:34]: Acquiring lock .ORCLCDB.exist_lck with heartbeat 30 secs
[2022:01:13 16:14:34]: Lock acquired
[2022:01:13 16:14:34]: Starting heartbeat
[2022:01:13 16:14:34]: Lock held .ORCLCDB.exist_lck

DONE: Executing user defined scripts

ORACLE_HOME = [/home/oracle] ? ORACLE_BASE environment variable is not being set since this
information is not available for the current user ID .
You can set ORACLE_BASE manually if it is required.
Resetting ORACLE_BASE to its previous value or ORACLE_HOME
The Oracle base remains unchanged with value /opt/oracle
/opt/oracle/checkDBStatus.sh: line 26: sqlplus: command not found
#####################################
########### E R R O R ###############
DATABASE SETUP WAS NOT SUCCESSFUL!
Please check output for further info!
########### E R R O R ###############
#####################################
The following output is now a tail of the alert.log:
2022-01-13T16:13:12.305142+00:00
Successful mount of redo thread 1, with mount id 127634132
2022-01-13T16:13:12.305724+00:00
Database mounted in Exclusive Mode
Lost write protection disabled
.... (PID:590): Using STANDBY_ARCHIVE_DEST parameter default value as /opt/oracle/product/19c/dbhome_1/dbs/arch [krsd.c:18141]
Create Relation IPS_PACKAGE_UNPACK_HISTORY
Completed: ALTER DATABASE   MOUNT
2022-01-13T16:14:30.810539+00:00
ALTER SYSTEM SET local_listener='' SCOPE=MEMORY;

@JithuPaul24
Please try with azure disk storage. With azure files, even if the persistent volume has 0777 permissions, the ownership of the files and directories is given to the root user (even if some other user i.e. oracle create them). This cause problems in setting up the database.

@JithuPaul24 Any update ??

@abhisbyk Sorry to resurrect this, but I can provide the information required on this one as I am having the exact same problem. The Helm chart in the helm-charts directory specifies that the persistent volume claim be for ReadWriteMany storage, and is hard coded in the template. managed-csi (the storageClass for disks in Azure) cannot provide ReadWriteMany, it can only provide ReadWriteOnce. The only storage that can provide ReadWriteMany is azurefile-csi.

This issue still exists. I tried the method which @abhisbyk suggested. Still didn't work for me. I'm not using persistence now since mine was a QA database and could live without persistent storage

@JithuPaul24 You can successfully deploy this chart by setting the storageClass to managed-csi, modifying the chart template to set the accessMode to ReadWriteOnce (in the persistent volume claim template), and ensuring that you don't create more than one replica, but that definitely enters into "you're on your own" territory. Ideally this chart should be more flexible than it currently is.


Change to Docker Enterprise

Docker Enterprise should be used instead. cc @paigehargrave

Proposed changes

Unreleased project version (optional)

Related issues (optional)

Deploy preview for docsdocker ready!
Built with commit cd9050475e83a187593624bfbb77472b89625a61
https://deploy-preview-8877--docsdocker.netlify.com

Deploy preview for docsdocker ready!
Built with commit 11348d8635ef07c8c2753d31447ca63dce47fdce
https://deploy-preview-8877--docsdocker.netlify.com


Save BufferedImage/Bitmap as a TGA file

It would be convenient to have built-in methods to save a BufferedImage or a Bitmap as a TGA file

Please try TGAWriter. :smile:
https://github.com/npedotnet/TGAReader/blob/master/README.md#tgawriter

Great, thanks!


Provide a simple Bayesian optimization loop example

The documentation currently doesn't include an example for how to do a complete Bayesian optimization loop with ENTMOOT, only a single iteration. I think we should provide an example of a complete loop for clarity, or at least tidy up the notebook below and include it in the readthedocs.
https://github.com/cog-imperial/entmoot/blob/master/docs/notebooks/single_obj_hyperparam_opt_localgurobi.ipynb

Hi Toby, that is a very good idea. Would you mind providing an example?


Use sudo's -H option in omnibus-test.sh

"sudo -H" is used for "bundle install" so ".bundle/cache" is put in the root user's HOME instead of the user running this script. This helps avoid file permission related problems in subsequent runs of "bundle install" that are not run with sudo.
Signed-off-by: Jeremiah Snapp<EMAIL_ADDRESS>

Closing this PR since we resolved our file permission issue


rocm_enabled

Add support for compilation with hip on rocm

@SeanSong-amd Did you run into errors with this approach?


*: downgrade rust to 2021-01-16

What problem does this PR solve?
Issue Number: close #9765
What is changed and how it works?
Change the rust toolchain version back to before https://github.com/rust-lang/rust/pull/77885.
However, the side effect is that https://github.com/tikv/tikv/issues/9444 will be broken again :(
Check List
Tests

Manual test (add detailed scripts or steps below)

Release note

No release note.

/merge

Test failed https://internal.pingcap.net/idc-jenkins/blue/rest/organizations/jenkins/pipelines/tikv_ghpr_test/runs/45206/nodes/206/steps/678/log/?start=0 (already reported https://github.com/tikv/tikv/issues/8700 )

/test

/test

/test


Better language detection with guesslang model

For syntax highlighting chroma is great, but unfortunately the analyzer doesn't support a lot of languages.
Since the uploads are via pipe, we can't get any metadata (like a file name) unless the user manually provides it with the --ext param on upload or changes it in the TUI.
That's where yeo/guesslang could be useful. It's a model trained to detect code and it's quite good at it. It's what vscode uses to detect languages.
Together with something like tfgo, it could provide better analysis on what the input language is.

https://github.com/robherley/guesslang-go


Request: Configurable timer for 'Recents' dash widgets

Continuing my theme of customizations for the dashboard, it seems to me that the carousel for the Recents (plex, kodi) moves on too quickly. Current setting is 5 seconds.
Could this be made into a configurable timer?

Assuming #581 is implemented in the suggested way, then the timer setting for these carousels would also be a drop-down box selection of relevant values, in order to ensure that only viable values are selected.

Too hard, the timing is somewhere in the css and I legit cannot find it.


Donations with Stripe credit card processing!

Finally getting going on the donations page! This is just the initial skeleton and will be a WIP as I continue to flesh things out.

On the support page, the link in the about crimethinc div in the footer are also green. :P

@veganstraightedge I'd put font-weight: 400 on the next button like the mothly / one-time label and I'd also set the mouse cursor to pointer when you hover the next button.

@veganstraightedge I looked into what it takes to "activate" a stripe account and it's pretty in-depth:

@just1602 I saw your comment about the hard-coded id and, yes, you are totally right. That was a goof and I got that fixed. 👍

You could do that. Or you could add a file specific exclude for that type of warning in .rubocop.yml

@veganstraightedge Hey hey heeeey! 🕺
Looks like we've still got two issues on code climate regarding that long helper method that I made an exception for in rubocop, and also the complexity of the create_session method:
def create_session
  email = params[:email]
  customers = Stripe::Customer.list(email: email).data

  if customers.present?
    customers.each do |customer|
      customers.delete(customer) if customer.subscriptions.data.empty?
    end

    if customers.empty?
      flash[:error] = "We can't find a subscription with that email address."
    elsif customers.one?
      subscription = SubscriptionSession.create!(
        stripe_customer_id: customers.first.id,
        token: SecureRandom.hex,
        expires_at: 1.hour.from_now
      )

      SubscriptionMailer.with(subscription: subscription, email: email).edit.deliver_later

      flash[:notice] = 'We sent you an email with a link to do the thing you need to do.'
    else
      flash[:error] = 'We found multiple subscriptions with that email address. Please send us an email.'
    end
  else
    flash[:error] = "We can't find a subscription with that email address."
  end

  redirect_to [:support]
end

I agree that it feels too complex, too many layers to that onion, but I don't really know how to clean it up. There are just so many scenarios that need checking and I can't think of how to make it easier to read. Maybe a case statement somewhere? /shrug
Another questionable spot:
def find_or_create_customer(email:, source:)
  return if email.blank? || source.blank?

  customers = Stripe::Customer.list(email: email).data

  if customers.present?
    customers.first
  else
    create_customer(email, source)
  end
end

Because store.crimethinc.com is creating new a Stripe 'customer' for every order (regardless of repeat email), we have lots customers with the same email address. I wasn't sure how best to address that when doing a find_or_create sorta thing. I opted to just grab the first customer because that is the most recent one. Thoughts on that?
Also, a couple other follow-up questions:

Do you still want me to rename: DonationsController => SupportController?
Should we limit people to just ONE cwc subscription per email / customer?
How do you feel about the general approach to the support edit screen:

Without an 'amount' selected:

With an 'amount' selected:

I did a super quick styling of things, totally open to suggestions. The main issue for me was creating as few forms as possible. It seemed a little too much to create another view for a single drop-down update form. Shoving the 'update' form into the table seemed like a happy compromise to keep all subscription "actions" in one place.
The credit card update is not functional yet. I was thinking about maybe holding off on that for now, button up what we've got elsewise. This is starting to feel like a pretty big PR and it would be nice to carve a little bit out so that I (we) can focus on refactoring what needs refactored and get this up to production! The credit card update functionality could always be an immediate follow-up PR.
I still need to move all the inline text to en.yml, but I want to wait until we've refactored what we want and have a very clear picture of what text we actually need. Oh, and @just1602, I tried converting the form_tag to form_with, but the Stripe checkout stuff was being weird and not populating the hidden fields like it had been:
<%= hidden_field_tag 'js-stripe-email' %>
<%= hidden_field_tag 'js-stripe-token' %>

I saved a copy of my attempts with form_with, so it could give it another shot later on, but it was starting to frustrate me. 🤦♂ Maybe we can punt that refactor to the follow-up PR as well?
Anyhoooooo, lemme know how y'all want to proceed.

I refactored the support edit page:

@veganstraightedge I'm getting pretty close here. I still need to flesh out the emails a tiny bit, move all the new text into en.yml, and figure out how to simplify the newly complicated create method.

@veganstraightedge If you've got some time in the next couple days, we could take a look at the newly-complex create method. 🙄


Add debug-real-cluster for testing the import service and the sync service

What type of PR is this?
/area simulator
/kind feature

What this PR does / why we need it:
This PR adds a kwok cluster that will be the source cluster of import/sync when debugging.
This cluster starts by running make docker_debug.
Which issue(s) this PR fixes:

Part of #327
Special notes for your reviewer:
When you edit simulator/config.yaml to enable externalImportEnabled and run make docker_debug, you will see node-0, node-1 and node-2 in the simulator UI.
/label tide/merge-method-squash

/ok-to-test

Could you please also update simulator/docs/running-simulator.md to describe how to run the fake source cluster?

↑ Updated!


Sparse Matrix Addition

Please star this repository to show your support, in the meantime I am reviewing your code.


Format Email Notifications

The email notification format needs some love. I'd also like to store the html templates in external html files instead of directly embedding in the Go code.
This will be low priority.

@tboerger patched the email plugin to use mailgun's templates with configurable templates to further customize the email message. this can be closed


RE: Great!

Great!
With respect to the older-sibling project https://github.com/nicolaskruchten/pivottable I think the biggest thing missing is localization in this React version, and possible a few other odds and ends but I can't recall just now.
Originally posted by @nicolaskruchten in https://github.com/plotly/react-pivottable/issues/95#issuecomment-587595788

Nicolas,
See #94 for a bug in react-pivottable that works in  pivottable.js. Also, how does on add an extension like Subtotal.js to react-pivottable?

OK, thanks!
Subtotal.js is a third-party project that's not maintained by me and is incompatible with react-pivottable, as it's not react-based... Basically you'd need to write a new renderer for react-pivottable that does this subtotal stuff.
There is an open PR here https://github.com/plotly/react-pivottable/pull/79 but it's too hard to review as-is and I've asked for it to be broken up into smaller, easier-to-merge pieces but I've gotten no uptake on that.


Main Page

[ ] Search Contacts
[ ] Create Contact
[ ] Delete Contact
[ ] Update Contact

@COP4331C-Project-Group/front-end

We might implement lazy loading if we have time


add julia-downgrade-compat-action to github CI

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (d3cbd75) 100.00% compared to head (8c2291d) 100.00%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff            @@
##              main       #23   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            7         7
  Lines          284       278    -6
=========================================
- Hits           284       278    -6

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Any plans on updating this essential mod?

I really miss BBOR in my 1.18 world...  :(

me too

bump because i used this mod so much. it was essential for me

Spam? I would understand if you just said "nope, won't happen" or "leave me some time to work on it". But praising the mod and asking if there will be a continuation isn't spam, at least not in my book.


Feat: Add Random Joke Generator Project

Pull Request: Random Joke Generator
Description
This pull request introduces the Random Joke Generator project, a simple web application that fetches and displays random jokes from the Official Joke API. The aim is to provide users with a lighthearted way to enjoy jokes and refresh them easily.
Changes Made

Created an index.html file to establish the basic structure and layout of the application.
Developed a random_joke_generator.js file to handle the logic for fetching and displaying random jokes.
Implemented dynamic HTML updates to show the joke setup and punchline.
Styled the application using CSS for a user-friendly interface.

Related Issues
None
Checklist

[x] I have tested these changes locally.
[x] I have added appropriate comments in the code, particularly in complex sections.
[x] I have updated the documentation if needed.
[x] My code follows the project's coding style guidelines.
[x] I have added/modified tests to cover the changes.

Screenshots (if applicable)

Additional Context
Email<EMAIL_ADDRESS>

@Chhunneng Please Review 🙏


ntl dev should start the dev server

ntl dev should open the dev server on port 8888.

How to solve this issue?

After deleting the .eleventy.js file, it's working correctly. Any solution?
My .eleventy.js files looks like this

module.exports = (config) => {
  config.addPassthroughCopy('src/css');
  config.addPassthroughCopy('src/images');
  config.addPassthroughCopy('src/js');

  return {
    dir: {
      input: 'src',
    },
  };
};

@subhamBharadwaz When you run ntl dev with your .eleventy.js file, and it displays the lines you screenshotted above, what happens when you visit the first listed URL at https://localhost:8088? What's being served at that address?

By default ntl dev will try to connect to port 8080 for an 11ty site:
https://github.com/netlify/framework-info/blob/043520db19c06ed9fe4b562c264dafe5487fb7d2/src/frameworks/eleventy.json#L12
@subhamBharadwaz, looks like your site is configured to run on 8088, so you'll need to configure it via ntl dev --targetPort 8088 or via the netlify.toml dev block.
@verythorough I think the main issue is that we don't print any kind of progress while waiting for the framework server to start, and the timeout for that operation is 10 minutes.

@subhamBharadwaz When you run ntl dev with your .eleventy.js file, and it displays the lines you screenshotted above, what happens when you visit the first listed URL at https://localhost:8088? What's being served at that address?

eleventy site was served at 8088 and netlify functions was at a different port. But after upgrading to netlify cli, it's working correctly today. Thank you!

By default ntl dev will try to connect to port 8080 for an 11ty site:
https://github.com/netlify/framework-info/blob/043520db19c06ed9fe4b562c264dafe5487fb7d2/src/frameworks/eleventy.json#L12
@subhamBharadwaz, looks like your site is configured to run on 8088, so you'll need to configure it via ntl dev --targetPort 8088 or via the netlify.toml dev block.
@verythorough I think the main issue is that we don't print any kind of progress while waiting for the framework server to start, and the timeout for that operation is 10 minutes.

It is working correctly after upgrading ntlify cli. Thank you!!

atfter installing npm install netfly-cli -g
i run ntl dev but didnt work?

one more question please?
after runin > npm run dev
do i need to cancel batch to run

npm install netlify-cli -g

let me know what's going on please ASAP cause i've being stuck with this for 3 days now and my brain is burning .
thank you for your time and your help is much appreciated

@Morazee for help with your Netlify site, I recommend you visit the Support Forums at https://answers.netlify.com/. Netlify's professional Support team and Community Pilots are there to help you out!


Lock dep @hackclub/design-system

Upgrading this dep breaks the site and I wasn't able to quickly figure it out. Let's lock it down until we can figure it out, to prevent breakage when running yarn upgrade.
Also, it seems that @hackclub/design-system has many commits on master that haven't made it into the npm release yet. Even pointing to the latest version on master yields a site which looks very wrong. We should investigate this.

@feross Yeah, I made DS, though I'm no longer working at Hack Club HQ. I would release it right now, but I'm pretty sure https://github.com/hackclub/design-system/commit/8d201941db91fb87d28d4b71c9921d0cfe9169e3, which replaces instances of styled-components' old .extend method they deprecated, was going to break all Button components. https://github.com/hackclub/design-system/commit/c3d14101f7aa5e9b24f9422a35e5172834426eab was also an ill-fated commit changed our typography, and as the site then required major reworking I didn't have time for when this was happening, I didn't release a new version. IIRC, we could revert those two commits, update snapshots, and release a new version, but it's been a hot minute so I don't remember all the details. DS, while being enormously helpful to me in making hackclub.com, is kind of a mess now.
I'm genuinely sorry this backstory is so tragic & for all the pain I inflicted—I'd make different choices now 😅


Proguard

What are the necessary proguard rules for this library?
Running into the following when building with minifyEnabled true.
Warning:com.liuguangqiang.swipeback.SwipeBackActivity: can't find superclass or interface android.support.v7.app.ActionBarActivity
Warning:com.liuguangqiang.swipeback.SwipeBackActivity: can't find referenced class android.support.v7.app.ActionBarActivity
Warning:com.liuguangqiang.swipeback.SwipeBackActivity: can't find referenced method 'android.content.res.Resources getResources()' in program class com.liuguangqiang.swipeback.SwipeBackActivity
Warning:com.liuguangqiang.swipeback.SwipeBackActivity: can't find referenced class android.support.v7.app.ActionBarActivity

-keep class com.liuguangqiang.** { *; }

-keep class com.liuguangqiang.** { ; }
-dontwarn com.liuguangqiang.*
Worked for me


PR real time test when target branch full build

OPS Build status updates of commit 9d8ee1f:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details
Dependent Files

docs-ref-conceptual/testing.md
:white_check_mark:Succeeded
View (azure-cli-latest) View (azure-cli-2017-03-09-profile) View (azure-cli-2018-03-01-hybrid)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Add option to include simple and/or full event history in savegame

Simple and full event history can be toggled separately. If one option is enabled:

Include that history in Dialogic.get_full_state() / Save.save().
On Dialogic.load_full_state() / Save.load() replace that history with the history from the savegame.

If the savegame doesn't contain that history, clear it.
Events appended to the full event history between the clear_game_state() and the load_game_state() are dropped intentionally.

On Dialogic.clear(FULL_CLEAR), clear that history.

The changes to the text event are needed to avoid duplicating the last entry in the simple history after a save+load. This also makes the text show up immediately after loading instead of the normal typing style.
Feel free to suggest a better option name or tooltip.

This looks good to me on the surface, will try to take a closer look the coming days.

I think this makes sense. I made some changes to follow the gdscript style guide.
I'm not entirely sure whether having these histories get erased on clear() is a good thing, but am willing to merge this and potentially adjust the behaviour in future PR's.
This incidentally fixes #1316

Thanks and congrats on your first PR!

Thanks for the cleanup!
I thought about adding another option for the clear behavior but decided against it in the end. Enabling the save/load behavior more or less makes it part of the game state, like variables. So I wanted to mirror their behavior for consistency.
I can only see the use case where a game has many relatively short and repeatable timelines and uses dialogic variables as temporaries while keeping the real state outside dialogic. And unless such a game supports saving inside such dialogue, it wouldn't use the dialogic save system anyway so it has no reason to enable the option.
I am not against adding a separate clear option, but I also didn't want to clutter the settings tab with something that might never be used (independently).


Add document 'How Selene Compares to Other Frameworks'

Compare Selene with other popular Selenium wrappers:

SeleniumBase
Pylenium
Splinter
Helium

Also compare with other frameworks from Java and JS world

I added PR with draft. I wrote what I could at that moment (Apr'23). There was one quick review by Yasha. I added his verbal comments to PR's description.
Further work is needed by the owner (@yashaka) or who knows how to write wrappers as Yashs knows :)


Transfer to aiidaplugins?

Hey @abelcarreras I have just created https://github.com/aiidaplugins as a central option for people to host their aiida plugin repositories, and invited you as a member.
Would you be willing to transfer this repository to there? (naturally you would still be given administrator access)

Sure, no problem!
Can you do it by yourself or I should do it?

done

thanks 😄


"snowpack dev" requires two Ctrl-C to exit.

Original Discussion: https://www.pika.dev/npm/snowpack/discuss/244
/cc @quasor, @acoyfellow, @FredKSchott
It should only require one.

So, I don't know if this is a Windows specific issue (I'm using Powershell on Windows 10), but I did find a sort of workaround here:
https://stackoverflow.com/questions/10021373/what-is-the-windows-equivalent-of-process-onsigint-in-node-js
Effectively creating a custom handler for the user input for Ctrl+C on Windows and then having that method process the "SIGINT" event so it gets picked up properly by the handler.
if (process.platform === "win32") {
 var rl = require('readline').createInterface({
      input: process.stdin,
      output: process.stdout
    });
    rl.on("SIGINT", function() {
      process.emit("SIGINT");
    });
  }
  process.on("SIGINT", function() {
    hmrEngine.disconnectAllClients();
    process.exit(0);
  });

It works, but causes no confirmation message to appear - need to look into that.
Interestingly though, CTRL+Break works fine on Windows without the above "fix".

FWIW I’m on latest MacOS when reporting.

FWIW I’m on latest MacOS when reporting.

I suppose it's possible to remove the windows check and manually handle the user input regardless of OS... I haven't tried on my Mac yet though.

I noticed this on my windows machine as well.

FWIW I’m on latest MacOS when reporting.

Confirms... the "fix" also works for Mac by removing the if statement:
// Inside \\node_modules\snowpack\dist-src\commands\dev.js
// but edited directly in \\node_modules\snowpack\dist-node\index.js
var rl = require('readline').createInterface({
 input: process.stdin,
 output: process.stdout
});
rl.on("SIGINT", function() {
 process.emit("SIGINT");
});

process.on("SIGINT", function() {
 hmrEngine.disconnectAllClients();
 process.exit(0);
});

I read somewhere that it's possible one of the other watchers is swallowing the initial ctrl+c command from the user, but I've not looked into that yet.

I noticed this on my windows machine as well using Git Bash

I noticed the same thing as well. Implementing the above does work on Git Bash as well.

Sounds like that's the fix then for all environments. Would love a PR if you can add one, @mojiwa!

Sounds like that's the fix then for all environments. Would love a PR if you can add one, @mojiwa!

Absolutely. I'll raise one this evening.

Resolved via #380


allow extending BlockHeader

to allow extending BlockHeader for ZCash

Sorry, this one made me pause for a while, and I regret not getting back to it sooner!
Any reason this can't be achieved with a complementary class ZcashBlockHeader which implements BlockHeaderInterface? That way you avoid the BlockHeader constructor checks, and we can avoid making private properties protected (part of the API, as people can hook into them..)

there is no way to hook into private properties, so it can not be considered as a part of api. it is completely hidden from the users.
you are right. i used decorator pattern to "extend" BlockHeader.
but i still think it would be better to use protected props rather then private to allow direct extension.
<?php namespace ZCash;

use BitWasp\Bitcoin\Block\BlockHeader;
use BitWasp\Bitcoin\Block\BlockHeaderInterface;
use BitWasp\Bitcoin\Serializable;
use BitWasp\Buffertools\BufferInterface;

class ZCashBlockHeader extends Serializable implements BlockHeaderInterface
{
    /** @var string */
    protected $zcashNonce;
    /** @var BlockHeader */
    protected $blockHeader;

    public function __construct(int $version, BufferInterface $prevBlock, BufferInterface $merkleRoot, int $timestamp, int $bits, string $zcashNonce)
    {
        $this->blockHeader = new BlockHeader($version, $prevBlock, $merkleRoot, $timestamp, $bits, 0);
        $this->zcashNonce = $zcashNonce;
    }

    /**
     * {@inheritdoc}
     * @see \BitWasp\Bitcoin\Block\BlockHeaderInterface::getNonce()
     */
    public function getNonce(): int
    {
        throw new ZCashGetNonceException("ZCash does not have integer nonce. Call ->getZcashNonce() method instead.");
    }

    public function getZcashNonce(): string
    {
        return $this->zcashNonce;
    }

    public function __call($name, $arguments)
    {
        $this->blockHeader->$name(...$arguments);
    }
}


social volume for cosmos project empty

Any social volume calls for the Atom/Cosmos project are empty.
{
  socialVolume(
    slug: "cosmos"
    from: "2019-12-01T00:00:00Z"
    to: "2019-12-31T00:00:00Z"
    interval: "1d"
    SocialVolumeType: TELEGRAM_CHATS_OVERVIEW) {
      datetime
      mentionsCount
  }
}

@josefansinger thanks for keeping the reports flowing!
We'll look into this.

@josefansinger currently we don't have social volume for cosmos (Atom) project.
You can list the available projects with social volume like this: https://api.santiment.net/graphiql?query={
  socialVolumeProjects
}

@ivanklimuk do we plan on adding cosmos to the social_volume metric ?


1.50 net::ERR_CONNECTION_TIMED_OUT no IP traffic to PC

Despite 1.50 seeming to connect very well at times it has also consistently failed to connect at times.
Unlike a previous similar problem in this case there is no observable SMB IP traffic between the chromebook and the PC. This was tested by capturing at the PC and at the intervening router (a Fritz! Box which supports packet capture).
I can ping between the two machines and observe the ICMP packets but there is no evidence of other traffic between the two IP addresses or traffic to port 445 on the PC.
Most of the time when there is no connection  and net::ERR_CONNECTION_TIMED_OUT
then the only output from the console is
background.js:6176 Domain name not specified. '?' will be applied.
background.js:6169 connect
e.g
Console
Looked up with chrome.mdns:  Array[0]length: 0__proto__: Array[0]concat: concat()constructor: Array()entries: entries()every: every()filter: filter()forEach: forEach()indexOf: indexOf()join: join()keys: keys()lastIndexOf: lastIndexOf()length: 0map: map()pop: pop()push: push()reduce: reduce()reduceRight: reduceRight()reverse: reverse()shift: shift()slice: slice()some: some()sort: sort()splice: splice()toLocaleString: toLocaleString()toString: toString()unshift: unshift()Symbol(Symbol.iterator): ArrayValues()Symbol(Symbol.unscopables): ObjectcopyWithin: trueentries: truefill: truefind: truefindIndex: truekeys: true__proto__: Object__defineGetter__: defineGetter()defineSetter: defineSetter()lookupGetter: lookupGetter()lookupSetter: lookupSetter()constructor: Object()hasOwnProperty: hasOwnProperty()isPrototypeOf: isPrototypeOf()propertyIsEnumerable: propertyIsEnumerable()toLocaleString: toLocaleString()toString: toString()valueOf: valueOf()get proto: get proto()set proto: set proto()
background.js:6176 Domain name not specified. '?' will be applied.
background.js:6169 connect
background.js:6176 Domain name not specified. '?' will be applied.
background.js:6169 connect
But then after a series of attempts an exception occurred (see below)
background.js:6176 Domain name not specified. '?' will be applied.
background.js:6169 connect
background.js:6176 Domain name not specified. '?' will be applied.
background.js:6169 connect
background.js:6176 Domain name not specified. '?' will be applied.
background.js:6169 connect
background.js:6176 Domain name not specified. '?' will be applied.
background.js:6169 connect
extensions::uncaught_exception_handler:8 Error in response to sockets.tcp.connect: Error: Attempting to use a disconnected port object
at chrome-extension://mfhnnfciefdpolbelmfkpmhhmlkehbdf/background.js:14287:17
at null. (chrome-extension://mfhnnfciefdpolbelmfkpmhhmlkehbdf/background.js:13246:25)
at null. (chrome-extension://mfhnnfciefdpolbelmfkpmhhmlkehbdf/background.js:14013:25)
at null. (chrome-extension://mfhnnfciefdpolbelmfkpmhhmlkehbdf/background.js:12024:13)
at null. (chrome-extension://mfhnnfciefdpolbelmfkpmhhmlkehbdf/background.js:12365:13)
at null. (chrome-extension://mfhnnfciefdpolbelmfkpmhhmlkehbdf/background.js:11519:13)
at null. (chrome-extension://mfhnnfciefdpolbelmfkpmhhmlkehbdf/background.js:11801:32)handler @ extensions::uncaught_exception_handler:8exports.handle @ extensions::uncaught_exception_handler:100safeCallbackApply @ extensions::sendRequest:23handleResponse @ extensions::sendRequest:72
background.js:6176 Domain name not specified. '?' will be applied.
background.js:6169 connect
This is when trying to connect to shares on a Win 7 Ultimate PC.

I have now found two problems with my set-up.

After a recent Windows update the Windows workgroup seems to have been turned off.
The Kaspersky firewall software on the Win 7 PC seems to block SMB traffic sometimes.

I have now re-enabled the Windows workgroup and checked the shares are in place.
I have configured the firewall to recognise the local network by subnet as local network where file sharing can be allowed.
I am testing the shares on my Win 7 PC from my Ubuntu 15.04 PC.
I can now see SMB packets on port 445 at my PC .
I can see things happening on the trace that seem to be associated with when playing a music file fails.
I should close this bug and open a new one for the exception seen and for the errors when playing a music file stops unexpectedly.


ValueError

Hi,
There are some errors when I run the sample code from others.
I guess that the sample code used the older version of chainer.
Can you give me some advices? Thank you!
Following are the error messages and the condition of my machine.

Error messages, stack traces, or logs

File "/usr/local/lib/python2.7/dist-packages/chainer/functions/noise/dropout.py", line 68, in dropout
    kwargs, train='train argument is not supported anymore. '
File "/usr/local/lib/python2.7/dist-packages/chainer/utils/argument.py", line 4, in check_unexpected_kwargs
    raise ValueError(message)
ValueError: train argument is not supported anymore. Use chainer.using_config

Conditions

Chainer version: 2.1.0
CuPy version: 1.0.3
OS/Platform: Ubuntu 16.04.3
CUDA version: 8.0.61

Thank you for posting!
There is a relevant section in the official upgrade guide. Please refer to it.
Also, we recommend posting questions (other than bug reports and feature suggestions) to StackOverflow with chainer tag, so that this kind of knowledges will be more exposed to wider range of users.
Please consider it next time :)


Validation gaps

Validate plus/minus in exchanges i:p/m = r:p/m.
Validate units and resources units in exchanges.

Shouldn't it be i:p/m = r:m/p ?


Survey reports should be improved with better reports and easier to navigate statistics

The current model only allows users to see answers to questions they answered, but we should provide a way to look through all of the aggregate data, and present this more nicely on a survey report page.
Surveys are also smaller now, so the report pages could be more specific to the individual survey or highlight questions in the survey.

Closed in recent survey report UI redesign


feature/unittests

The unit test framework chosen is GTest(https://github.com/apache/tsfile/issues/111#issuecomment-2165917872), as recommended by Chris.
The unit tests have been implemented for the common utils file encoding   section.

Excellent job.  Google Test is a good choice for verification testing in C/C++. However, it seems there is still an issue with the POM configuration.

LGTM

The C++ 14 version is actually a bit high; we should at least support up to C++ 11. Google Test might only support C++ 14 after a certain version, so perhaps we should adjust the version of Google Test.

The C++ 14 version is actually a bit high; we should at least support up to C++ 11. Google Test might only support C++ 14 after a certain version, so perhaps we should adjust the version of Google Test.
The test is compiled using C++ 14, but the code is written in C++ 11, which may lead to some errors.

I have updated the version of GTest. V0.12 is the latest version with support for C++11

The issues pointed out by the review have been fixed, are we ready to prepare for the merge? @jt2594838


[consensus] wrap safety rules remote client with monitor

Motivation

refactor the safety rules client code out
add counters for safety rules call.

Have you read the Contributing Guidelines on pull requests?
Y
Test Plan
Existing tests.
Related PRs
(If this PR adds or changes functionality, please take some time to update the docs at https://github.com/libra/website, and link to your PR here.)

@davidiw you don't have to wrap your feedback with so many nice words lol, I'll switch to easy one


date_range

Is there any precedent of submitting a range with comma separated values date_range=2015-06-01,2015-08-01 vs. having a from and to?

I was somewhat matching the SOAP interface I was referencing that uses a DateRange object. Also seemed reasonable if the need is a "range", i.e. it ensures both a from and to date. Do you think its better to have separate fields?


update python-requests.org to SSL

it's now free if you use Cloudflare for DNS

@kennethreitz: it matters because of https://github.com/requests/requests/issues/4885


try some lints

/cc @Hixie

I'm surprised you can enable avoid_returning_this without problems. In particular, we have code like this:
https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/painting/edge_insets.dart#L561

I don't know why but avoid_returning_this does only apply if the method contains at least 2 statements ( see https://github.com/dart-lang/linter/blob/6690b714b8bef67c474aa91837b0a023022e0067/lib/src/rules/avoid_returning_this.dart#L76 and https://github.com/dart-lang/linter/blob/6690b714b8bef67c474aa91837b0a023022e0067/test/rules/avoid_returning_this.dart#L23-L25)

That seems weird. I would leave that one out I think. I don't see why we'd want the first one below to be ok but not the second:
Foo resolve(TextDirection textDirection) {
  return this;
}

Foo resolve(TextDirection textDirection) {
  assert(textDirection != null);
  return this;
}

avoid_returning_this rule is out.
PTAL


Use of hb_uuid

hb_uuid appears to be deprecated or discouraged ( https://github.com/prebid/Prebid.js/issues/2189 ) yet is still referenced in the video creative setup instructions at http://prebid.org/adops/setting-up-prebid-video-in-dfp.html#creative-setup

#1975 was merged


Add support for Python3

mYQL must support Python3

Explicit relative import
from tests import TestClass # Bad
...
from .tests import TestClass # Good

Exception handling
except Exception, e: # Bad
...
except (Exception,) as e: # Good

change-in-import-handling-modules-from-python2-to-python3 :+1:


CreateInput and UpdateInput have different typings for optional relations

Note: I just upgraded from prisma 2.0.0-preview021 to 2.1.0
Bug description
I'm using an upsert call to update an entry or create it if it doesn't exist. Unfortunately I get an error because CreateInput and UpdateInput have different typings for optional relations (see Prisma information below).
error TS2322: Type 'JobContactCreateInput' is not assignable to type 'JobContactUpdateInput'.
  Types of property 'location' are incompatible.
    Type 'JobContactLocationCreateOneWithoutJobContactInput | null | undefined' is not assignable to type 'JobContactLocationUpdateOneWithoutJobContactInput | undefined'.
      Type 'null' is not assignable to type 'JobContactLocationUpdateOneWithoutJobContactInput | undefined'.

167     update: jobContact,

It works for relations which are required. I only get the error for location, not for phone.
I can temporarily work around it when I use
update: jobContact as JobContactUpdateInput,
How to reproduce
const jobContact: JobContactCreateInput // I'm calling a function which returns a variable of type JobContactCreateInput

const upsertResult = await prisma.jobContact.upsert({
  create: jobContact,
  update: jobContact,
  select: {
    id: true,
  },
  where: {
    foreignId: jobContact.foreignId,
  },
})

Expected behavior
CreateInput and UpdateInput should use the same typings for optional relations.
Prisma information
schema.prisma
model JobContact {
  id          String   @default(cuid()) @id
  foreignId   String   @unique

  /// [...] unimportant fields

  phoneId     String
  phone       JobContactPhone      @relation(fields: [phoneId], references: [id])
  locationId  String?
  location    JobContactLocation?  @relation(fields: [locationId], references: [id])
}

model JobContactPhone {
  id          String   @default(cuid()) @id
  areaCode    String
  prefix      String
  lineNumber  String
}

model JobContactLocation {
  id      String  @default(cuid()) @id
  zip     String?
  city    String?
  street  String?
}

generated typings from @prisma/client
export type JobContactCreateInput = {
  id?: string
  foreignId: string
  // [...] unimportant fields
  phone: JobContactPhoneCreateOneWithoutJobContactInput
  location?: JobContactLocationCreateOneWithoutJobContactInput | null
  JobOffer?: JobOfferCreateManyWithoutContactInput | null
}

export type JobContactUpdateInput = {
  id?: string
  foreignId?: string
  // [...] unimportant fields
  phone?: JobContactPhoneUpdateOneRequiredWithoutJobContactInput
  location?: JobContactLocationUpdateOneWithoutJobContactInput
  JobOffer?: JobOfferUpdateManyWithoutContactInput
}

Environment & setup

TypeScript: 3.7.5
OS: Linux Mint 19.2 Cinnamon
Database: PostgreSQL
Node.js version: v13.7.0
Prisma version:

Environment variables loaded from prisma/.env
@prisma/cli          : 2.1.0
Current platform     : debian-openssl-1.1.x
Query Engine         : query-engine<PHONE_NUMBER>795a0424be62040e2295c56e5c6ad0 (at<EMAIL_ADDRESS>Migration Engine     : migration-engine-cli<PHONE_NUMBER>795a0424be62040e2295c56e5c6ad0 (at<EMAIL_ADDRESS>Introspection Engine : introspection-core<PHONE_NUMBER>795a0424be62040e2295c56e5c6ad0 (at<EMAIL_ADDRESS>Format Binary        : prisma-fmt<PHONE_NUMBER>795a0424be62040e2295c56e5c6ad0 (at<EMAIL_ADDRESS>

I suspect this is part of null vs undefined work we did: https://github.com/prisma/prisma-engines/issues/678
Since you are upgrading for a very old version it would be a breaking change for you.
Also, update input if full optional because you can supply partial data to it.

Hi Harshit! Sorry, I didn't understand if that last sentence is for the prisma team or if this is an info for me and something I should change.

Are you referring to this?

Also, update input is fully optional because you can supply partial data to it.

This was just meant to inform you that why create and update inputs are different.

What @RafaelKr probably meant: For this code:
export type JobContactCreateInput = {
  id?: string
  foreignId: string
  // [...] unimportant fields
  phone: JobContactPhoneCreateOneWithoutJobContactInput
  location?: JobContactLocationCreateOneWithoutJobContactInput | null
  JobOffer?: JobOfferCreateManyWithoutContactInput | null
}
export type JobContactUpdateInput = {
  id?: string
  foreignId?: string
  // [...] unimportant fields
  phone?: JobContactPhoneUpdateOneRequiredWithoutJobContactInput
  location?: JobContactLocationUpdateOneWithoutJobContactInput
  JobOffer?: JobOfferUpdateManyWithoutContactInput
}

Why is it | null in create, but not in update? If you can set it to null, doesn’t that mean it should be also possible to set it to null in update? This seems like a bug to me.

Oh, yeah I missed that part. That is indeed a bug.

The fix is published and seems to have solved the main issue. However, there's still one difference, and I don't understand why. More specifically, the phone field can be undefined in CreateInput, but can be undefined OR null in UpdateInput. The field is required, so I don't understand why you can set it to null in UpdateInput.
export type JobContactCreateInput = {
  id?: string
  companaId: string
  salutation: string
  email: string
  firstName: string
  lastName: string
  phone: JobContactPhoneCreateOneWithoutJobContactInput
  location?: JobContactLocationCreateOneWithoutJobContactInput | null
  JobOffer?: JobOfferCreateManyWithoutContactInput | null
}

export type JobContactUpdateInput = {
  id?: string
  companaId?: string
  salutation?: string
  email?: string
  firstName?: string
  lastName?: string
  phone?: JobContactPhoneUpdateOneRequiredWithoutJobContactInput | null // <- here
  location?: JobContactLocationUpdateOneWithoutJobContactInput | null
  JobOffer?: JobOfferUpdateManyWithoutContactInput | null
}

I think the | null in the phone field needs to be removed as well in the UpdateInput.

I think the | null in the phone field needs to be removed as well in the UpdateInput.

This came from the requirement in the JS client (can't dig up the ticket right now, but it was an explicit implementation requirement because of how the call chains wove into each other) - if you supply null, it effectively ignores the field, hence the possibility to do so.

the phone field can be undefined in CreateInput

You probably mistyped / misread, but it can't. The relation is required, so we know on a type level already that if you create a new record that you need to do something with the relation.

You probably mistyped / misread

Yep, sorry, I edited that in my comment.
The main confusion here is that in UpdateInput, the phone field should be just phone?: JobContactPhoneUpdateOneRequiredWithoutJobContactInput. I don't understand why the | null is added here but no in the CreateInput. undefined/? already tells that it's settableoptionally, but when it's set it can't be set to null since the field is not nullable, so in theory no | null should be needed.
I also remember something with ? and null in the past. Maybe @timsuchanek can clarify?

As @steebchen already said the bug why I created this issue is solved. With the @dev version I can now pass the CreateInput to update.
Yesterday I discussed this with @steebchen in private and for both of us it wasn't clear why this | null is added on a required field like phone.
It would be good to know where this is coming from and maybe it should be documented somewhere in the spec (or at least as a comment in the code which generates the UpdateInput).
Anyway thanks for fixing it!

Can you open a new issue for this remaining open question? Then we can close this one here and people need to read less context for that discussion.

Sorry for being unclear, I don't have the problem anymore but I think the solution you implemented is not completely right. So I would like to keep it in this issue.
Trying to make it more clear:

The problem was that optional fields (type modifier ?) were typed without | null on UpdateInput. This was only for relations, simple fields were correct. But from my understanding all fields with a ? in the schema should be nullable, so it must be possible to pass null. This was already correct for CreateInput.
You guys fixed this issue by adding | null to all relation fields, also the required ones. This is probably wrong, as it doesn't have to do with the relation itself, it is related to the type modifier ?.

The prisma docs are defining that

When not annotating a field with the ? type modifier, the field will be required on every record of the model.
Database: Required fields are represented via NOT NULL constraints in the underlying database.

I'll try to explain it further with an example. For simplicity I will give a schema which has nothing to do with relations as I think it should be the same for simple fields and also for relations:
schema.prisma
model Demo {
  requiredField  String
  optionalField  String?
}

From my understanding this should generate the following types:
export type DemoCreateInput = {
  // this field is defined as NOT NULL on database level => must be defined in all cases
  requiredField: string

  // this field is optional => will be set to a database NULL when either not specified (undefined) or specified as null
  optionalField?: string | null
}

export type DemoUpdateInput = {
  // this field is defined as NOT NULL on database level => it can be undefined, then it won't change on update. But it should be NOT NULL
  requiredField?: string // <- no `| null` here!

  // this field is optional and has two options
  // undefined: unchanged on update
  // null: is explicitly set to null on update
  optionalField?: string | null
}

@dpetrick said

This came from the requirement in the JS client (can't dig up the ticket right now, but it was an explicit implementation requirement because of how the call chains wove into each other)

Maybe this is something important for n:n relations for reasons I currently don't see. It would be very interesting for me to know, if there are reasons why you implemented it like this.
Anyway, I think it's a good idea to rethink all of this before implementing a "wrong" fix where the context will be lost in some weeks/months/years.

Addendum:
@dpetrick also wrote

if you supply null, it effectively ignores the field, hence the possibility to do so. I'm not saying that the sense of it is not debatable, but I believe back then I was convinced that the added ergonomics for the client justified this.

In my opinion it doesn't make sense to have different null tyings for CreateInput and UpdateInput for consistency reasons. "added ergonomics" should be secondary in this case. But as you said, this is of course debatable.

Addendum 2:
I wrote

From my understanding this should generate the following types:

and just saw that it DOES generate the typings as I outlined in the TypeScript-Snippet for Scalars, just not for relations.
I think it does make the most sense to keep it as simple as this:
With ? type modifier:

CreateInput: undefined and null
UpdateInput: undefined and null

Without ? type modifier:

CreateInput: always required
UpdateInput: undefined => the field is ignored (unchanged) on update

There's a reason why there's a difference between undefined and null in JavaScript and I think it would be best to use exactly this methodology for Prisma. Everything else could lead to confusion, at least for me.
I also don't see a use-case where it would make it easier to to be able to pass null instead of undefined. Additionally it also wasn't possible before the typing change for this issue was made, so it also won't break something if it is not implemented now. It would only break something if there should be a reason to remove it later when once implemented.
And if someone comes up with a good use-case later it still can be implemented. But removing it would be a breaking change.

Thanks a lot for all the detailed input @RafaelKr. It's indeed a bug, we'll make sure to fix it soon.

This should be addressed by https://github.com/prisma/prisma-engines/pull/924 - it can currently be tested in the latest dev releases.

@tomhoule Thank you! I just checked 2.4.0-dev.7 and it works now. At least my server is starting without the as *UpdateInput "cast" now and the typings are looking fine.
I see you removed null for relations at all. I'm curious what happens if you pass null for example from unchecked user input? Does it get ignored or does it disconnect?

It gets ignored. We decided to disallow nulls there because it's ambiguous for users of the API: you could interpret it as "disconnect" but in fact it does nothing (that did not change).

Ah sorry, I just remembered that it's not ignored anymore, it will return a runtime error instead, after the PR above.

@tomhoule Pity, I was already looking forward to the noop solution!
In my case it's no problem as I'm using GraphQL, but I just thought about what happens when you're using a JSON REST API without checking if something is undefined or null. So if the frontend or API consumer passes null it now will suddenly result in a runtime error. IMO the noop would be much better than a runtime error. Just forbidding it with the typing should be enough.

@tomhoule Okay, just thought about it again. Not nullable should really mean not nullable. It's good to handle it as runtime error :+1:

has this fix been deployed? I'm getting the following error trying to assign a string value to an enum
Types of property '<propertyname>' are incompatible.
Type 'string' is not assignable to type <type_Input>

This is the code and the error happens in data
return await Promise.all([ ... ].map(notification => prisma.table.create({ data: notification })))`

Yes, it was deployed in 2.4.1
Can you please a new issue with a minimal reproduction? If your project is using nexus, you can open an issue here instead: https://github.com/graphql-nexus/nexus


fix: BlockPreview v2 block instance layout config fix

Description
A fix for the v2 branch of BlockPreview.
This fix has minor changes from the v1 variant due to changes present in the v2 branch.
Fix
Iterated over the layout items present in blockValue.BlockValue?.GetLayouts() and checked each entry for a matching ContentUdi before assigning the ColumnSpan and RowSpan values.
Once a matching layout item is found, it is stored in the variable matchingLayout so that it can be passed into the ConfigureBlockInstanceAreas function.

Another great fix, thanks @kevin9092! Merging, will be released soon


Add Japanese 'X minutes ago' localization

The Japanese localization was missing the 'x minutes ago' feature.
I added unit tests for only for the X minutes ago localization for Japanese under localize.test.js.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: Robjam sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Updated format/indentations.
LGTM. After CI pass, will merge it in.

Great work! Thanks for adding tests.

Merged, it is in<EMAIL_ADDRESS>


ElixirLS fails to start with Elixir 1.15 & OTP 26

Environment

Elixir & Erlang versions (elixir --version): Elixir 1.15 OTP 26
Elixir Language Server version: 0.15.1
Operating system: Ubuntu 22.04
Editor or IDE name (e.g. Emacs/VSCode): VSCode
Editor Plugin/LSP Client name and version: jakebecker.elixir-ls-0.15.1

Current behavior
ElixirLS repeatedly crashes on start:
Running /home/sasa/.vscode/extensions/jakebecker.elixir-ls-0.15.1/elixir-ls-release/launch.sh
Looking for ASDF install in /home/sasa/.asdf/asdf.sh
ASDF found, relaunching in bash shell
Looking for ASDF install in /home/sasa/.asdf/asdf.sh
Sourcing ASDF
Installing ElixirLS release v0.15.0
Running in /tmp/test
Install complete
[Info  - 9:11:46 AM] Started ElixirLS v0.15.0
[Info  - 9:11:46 AM] Running in /tmp/test
[Info  - 9:11:46 AM] ElixirLS built with elixir "1.15.0" on OTP "26"
[Info  - 9:11:46 AM] Running on elixir "1.15.0 (compiled with Erlang/OTP 26)" on OTP "26"
[Info  - 9:11:46 AM] Protocols are not consolidated
[Info  - 9:11:46 AM] Elixir sources not found (checking in /home/runner/work/elixir/elixir). Code navigation to Elixir modules disabled.
Runtime terminating during boot ({badarg,[{io,put_chars,[standard_error,[_]],[{_},{_},{_}]},{Elixir.Kernel.CLI,exec_fun,2,[{_},{_}]},{Elixir.Kernel.CLI,run,1,[{_},{_}]},{elixir,start_cli,0,[{_},{_}]},{init,start_em,1,[]},{init,do_boot,3,[]}]})

Duplicate of https://github.com/elixir-lsp/elixir-ls/issues/886. Please wait for OTP 26.0.2 release and next ElixirLS release


install/kubernetes: Helm option for fragment tracking

This pull request adds a Helm option to allow users to disable IPv4 fragment tracking.

Coverage decreased (-0.01%) to 37.037% when pulling 71f866a059c053d37b19a7b4a18be791a74fb433 on pr/pchaigno/helm-option-fragment-tracking into 015ffbde0a66fe20fbf6028d05231e356804b7c1 on master.

test-me-please

test-me-please

test-me-please

retest-4.19


Feat: accept exclude components options

This PR addresses #16.
excludeComponentsFilter is added aside from preset since preset is general while excludeComponentsFilter is project-specific.

This isn't a scalable atm so I won't go with this kind of filtering. I'm thinking of comment pragmas as an alternative, subtle solution.

Yes. That's why I am creating the PR as a draft. It is just a PoC yet.

Yes. That's why I am creating the PR as a draft. It is just a PoC yet.

maybe we can do
/* @forgetti skip */
function MyComponent() {

}

Yes. That's why I am creating the PR as a draft. It is just a PoC yet.

maybe we can do
/* @forgetti skip */
function MyComponent() {

}

Done in 1d5bcdb (#17). I have also rebased the PR to target the next branch, too.

What's the status on this? I can include this in 0.5.0

What's the status on this? I can include this in 0.5.0

I will start rebasing this to the next branch now.


feature request: Export PDF to generate TOC(outline, bookmarks)

Problems encountered
When there are many PDF pages, I want to quickly locate the specified page, because there is no directory and I need to scroll many times to find the page I need
Describe the solution you'd like
Choose to generate a Table of Contents (or bookmark) when exporting PDF from Slidev. can solve the problem of finding too many pages

https://github.com/puppeteer/puppeteer/issues/1778#issuecomment-1198240981 This comment in the issue of puppeteer may help. I try to work on this.


bugfix for LimitAndOffsetSQL

if limit = -1 and offset >= 0, sql with only OFFSET but not LIMIT ahead will cause syntax error (test in mysql 5.6) as OFFSET is based on LIMIT.

limit can't be negative? so I think this should not be handled by GORM. and some databases doesn't require limit when using offset

Thanks


v1_readcurrentmactablefromdevice_body error during validation operation

In MATR application, individual services /v1/read-current-mac-table-from-device, when the callback is called, the validator stop the command, the  error is the following:
"Bad Request: request.body should match exactly one schema in oneOf
at Object.POST-/v1/read-current-mac-table-from-device-application/json ([...]\server\node_modules\express-openapi-validator\dist\middlewares\openapi.request.validator.js"

There are multiple callbacks for that service, it is not clear to which one the error message applies.
Please provide more information.

In this moment i have changed  “oneOf” to “anyOf” in v1_readcurrentmactablefromdevice_body:
   [...]
oneOf:
It seems correct, so I enter into the function, but I'm not sure if it's the desired behavior.


Unable to update from packer

Unable to update nvim-cmp package from packer.nvim using :PackerSync command

nvim-cmp crashes in between while selecting option from dropdown

nvim-cmp lua config:
https://pastebin.com/SAyL89kK

Please re-update

Sorry, what do you mean re-update? I tried :PackerUpdate and same issue persists.

Please try PackerUpdate & PackerCompile.

I'm running into the same issue. Was there a force push to the main branch perhaps? @nachiketkanore I'm not sure if Packer has some builtin command to fix diverging histories, but what you can do is navigate to the installation directory and run a git reset --hard @{u}.

PackerUpdate & PackerCompile worked for me. Atleast the "Failed to update" error is gone. Thanks

Yes. I somtimes use the force push.... hm...


REP-50 - Add mt-link component

What?

Missing a component for the internal link,
https://github.com/shopware/meteor/issues/176

Why?

N/A

How?

Add mt-link component, which has :to props. if :to have value so it will render router-link, otherwise, will render mt-button.

Testing?

Check out branch
Run storybook and check the Components/Form/mt-link

Screenshots (optional)
Anything Else?

@quando1910 Hey 👋 we already have an mt-external-link component. I think it makes more sense to adjust that component instead of creating a new one.

@quando1910 Hey 👋 we already have an mt-external-link component. I think it makes more sense to adjust that component instead of creating a new one.

Hello, this mt-link is used for internal case, it will be the NuxtLink or a button based on the location path value.

@quando1910 I don't think it's a good idea that we render a button when the developer does not provide to property. A link should always look like a link. In cases where we need a link that looks like a button I suggest that we make the button component polymorphic (<component :is="MY_COMPONENT") meaning you can provide a NuxtLink. I suggest the same for the external link component. Let's rename the component and make it polymorphic.


BUG: resolve left/right key names overlap in merge

Here is an attempt at fully resolving name conflict in merges when left_on or right_on keys are passed explicitly.
I am not sure my fix is correct but I include a new non-regression test to highlight the issue and the resolution does not introduce any regression findable by running nosetests.

Rebased & merged

Thanks!


Genesis 9Pin 2.d

Hi,
I'm making the above mentioned board & ordered most of the parts, but I've come across an issue between two documents.
On DOCS_POS_NES_PowerBoard_RGB_V2.1d.csv it states R1 is 680 ohm resistor
But on DOCS_BOM_NES_PowerBoard_RGB_V2.1d.csv it states its a 2.2k ohm resistor
Any advice which one it is please??
Cheers

R1 is just the resistor for the Power On LED so the value really isn't a big deal.  I believe I changed it later to 2.2K so it wasn't so bright.
However, I am about to release a new RGB Module that I feel has significant improvements so you might want to hold off until the new version is released.

Cheers for that, I'll keep an eye on it.  I would hold off but I've already got 10 pcb's lol.
I did struggle wih getting some of the parts though but hopefully should have at least one board working next week when some orders arrive from China & USA.

That was one of the reasons for the new design.  This time all parts will
be available from Digikey/Mouser.
Thanks,
-Merlin Shaw
On Thu, Jan 11, 2024 at 2:15 PM victor7376 @.***> wrote:

Cheers for that, I'll keep an eye on it. I would hold off but I've already
got 10 pcb's lol.
I did struggle wih getting some of the parts though but hopefully should
have at least one board working next week when some orders arrive from
China & USA.
—
Reply to this email directly, view it on GitHub
https://github.com/ShawMerlin/NES-Power-Module-Redesign/issues/8#issuecomment-1887973823,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQZJHHUQD5V6OSPJ57ZKQIDYOBI75AVCNFSM6AAAAABBWTIJ26VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQOBXHE3TGOBSGM
.
You are receiving this because you commented.Message ID:
@.***>

perfect !!
Might put another order in lol

I am testing on these new boards but so far, they are running at 5.04v with
a full 1.5 amp load on them.  Clean and Stable power which is fantastic!!
https://github.com/ShawMerlin/NES-Power-Module-Redesign/blob/main/RGB - Genesis 9 Pin Edition/readme.md
Thanks,
-Merlin Shaw
On Thu, Jan 11, 2024 at 3:10 PM victor7376 @.***> wrote:

perfect !!
Might put another order in lol
—
Reply to this email directly, view it on GitHub
https://github.com/ShawMerlin/NES-Power-Module-Redesign/issues/8#issuecomment-1888049670,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQZJHHRBBCWNZ3VZLLPTWJ3YOBPPDAVCNFSM6AAAAABBWTIJ26VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQOBYGA2DSNRXGA
.
You are receiving this because you commented.Message ID:
@.***>