Optionally Disable Logging

When running Mist from a management tool like Jamf, the output is truncated because of how verbose Mist is. It would be great to have a feature flag to turn this off, or at least, log less.

I agree! I am currently looking at a few options to output less verbose messages.
Will also factor in an option to suppress output altogether.
Stay tuned...

Message verbosity has been reduced, and the download progress has been removed as it was really buggy!
Fixed in 4673793db02de149e50f08e9b59656aa3c6140b6 and 38e25127c811c658a1a74c9d44fa1af4e27265ee


[Deprecation] Treasury Proposal Dispatchables

The old treasury pallet's dispatchables to create/reject/approve a proposal now replaced by the spend dispatchable.
Deprecated dispatchables:

pallet_treasury.propose_spend
pallet_treasury.reject_proposal
pallet_treasury.approve_proposal

The pallet_treasury.remove_approval dispatchable is not deprecated since its still can be used to remove an approved proposal by the spend.
### Tasks
- [x] Hard deprecation by adding a warning message - https://github.com/paritytech/substrate/pull/14538
- [x] Remove usage of the deprecated feature in the code base
- [ ] Update examples and tutorials
- [ ] Deprecation is noted in the release log
- [ ] Removal version is planned
- [ ] Deprecated feature is removed
- [ ] Removal of the feature is noted in the release log

@oshakarishvili can you help me with finding the existing examples and tutorials concerning the deprecated dispatchables?

Following our transition from Gov1 to OpenGov, comprehensive updates have already been made to all our documentation and guidelines (you can find one of several examples on our wiki or Scribehow for detailed step-by-step). Due to these updates, the usage of the propose_spend call has become quite rare, given the evolved context. The remaining two calls (reject_proposal and approve_proposal) primarily found use within the council, hence detailed documentation for these calls has been limited historically.


Initial integration for ReportPortal

Changes

Utility to easily integrate ReportPortal with your JAVA-TestNG automation framework for both Web and App related tests
This is a library which implements basic utilities for ReportPortal (com.epam.reportportal)

Utilities Implemented

ReportPortalLogger: For logging messages to ReportPortal at different levels like DEBUG, INFO WARN
ScreenShotManager: Takes care of following

Capturing Screenshot using selenium
Descaling/Reducing file size of the taken screenshot
Saving the screenshots in managed test level hierarchies

CommandLineExecutor and CommandLineResponse: Take care of running any CLI commands and storing its Standard Output, Error responses

Upcoming changes

Unit tests for public methods
Use a publically accessible Report Portal endpoint instead of Jio

One more comment which we discussed offline was to to allow user to set dynamic properties using system's environment variables or properties. I'll reply to this comment, once this is addressed.


Mag palming doesnt support non-physical mags.

As the title suggets, currently with non-physical mags enabled, palmed magazines will retain their collisions instead of being able to phase through the gun.

Is this on the latest release? 1.0 did not have this feature whereas 1.1 should I believe.

I still appear to be on 1.0, I will install the latest version and check it out.

Cool, let me know. The new version requires Deli 0.3 so be aware of the different installation method.

yeah, everything works fine now.


"/metadata/unbalanced_partial_csvs/unbalanced_train_segments_part$IDX.csv" does not exists.

running the scripts-2_pack_waveforms_to_hdf5s.sh  with the error.Would you please uploading the unbalanced_train_segments_part$IDX.csv file?

use bash not sh


Refactor how the "test" tile source is handled

This allows us to use the @loadmodel decorator in several places, and removes some special-case code.
It does remove the ability to permanently mark a specific item as a "test" largeImage. This functionality could be re-added if it turns out to be useful.

I'm not sure if I like the 2nd commit. It reduces code duplication, but is a bit magical in the way that it bypasses the @loadmodel decorator.
Thoughts?

@manthey PTAL.

@brianhelba I don't really care for the __wrapped__ calls that avoid @loadmodel.  It works just fine, but I think it is harder to maintain.  I'll push a change that moves the functionality to a different method, then both end points can call that.
Otherwise, LGTM.

LGTM.


Add User Agent for Sending New Page View

In relation to #5 I added an optional User Agent. I did not change the existing user agent since it is working and I guess unique enough.
I also included the warning about bots with a reference to the line where bot checks are done in Umami from the discussion here:
https://github.com/umami-software/umami/discussions/1833

Looks excellent @ddxv thank you! Nice work on the docs and feature.


Document that 3xx status codes are errors

According to the discussion in #283 as well as the code in the latest release, 3xx responses are considered errors by default.
This PR increases clarity about this point in the docs.

That is not quite accurate. 3xx by default are considered redirects and don't cause errors. They become errors only in non-default case where you disable/limit number of redirects.

Ah. In that case, what would be a good way to document the behavior for 304 Not modified?

Oh, I've forgotten about that one. Yes, it is an error indeed (we're unable to get its body).
Perhaps clarify with "non-redirecting 3xx"

I pushed another version of the copy. Please take a look. ✍ 👀

That's good. Thank you.


addChar

This change is

Reviewed 3 of 3 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


updated URIs from master to main

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


DomainNotActiveError should not be retry-able error on default Retry Policy

https://github.com/uber-go/cadence-client/pull/477


Statamic v5 compatibility

Added Statamic v5 compatibility

For testing, add this to composer.json
"repositories": {
    "spatie/laravel-mailcoach" : {
        "type" : "vcs",
        "url": "https://github.com/SRWieZ/fork-spatie-statamic-mailcoach"
    }
},

composer require spatie/statamic-mailcoach "dev-statamic-v5"

Thanks, resolved in v3.3.0!


Tycker tries to solve implicit argument in Pi types even when not needed

Commit: 1707136
open data Unit : Set | unit

def foo : Pi {x : Unit} -> Unit => \{x} => x

def foo' : Pi {x : Unit} -> Unit => foo

Update:
@re-xyr The real use case is much more complex and the return type does depend on the implicit argument:

-- *** Prelude

prim I
prim left
prim right
prim arcoe
struct Path (A : I -> Type) (a : A left) (b : A right) : ooType
 | at (i : I) : A i {
   | left => a
   | right => b
 }
def path {A : I -> Type} (p : Pi (i : I) -> A i)
  => new Path A (p left) (p right) { | at i => p i }
def `=` Eq {A : Type} (a b : A) : ooType => Path (\ i => A) a b
def idp {A : Type} (a : A) : a = a => path (\ i => a)
def coe {a b : Type} (eq : a = b) (x : a) (i : I) : eq.at i
  => arcoe eq.at x i

bind = looser application

open data Unit : Set 0 | unit

-- *** Types

struct EventT : Set 1
  | agentT : Set 0

def getAgentT (t : EventT) : Set 0 => t.agentT
def setAgentT (x : Set 0) (t : EventT) : EventT
  => new EventT { | agentT => x }
def agentT-inv (t : EventT) (u : Set 0) : u = getAgentT (setAgentT u t)
  => idp u

struct Event (t : EventT) : Set 2
  | agent : t.agentT

def getAgent (t : EventT) (e : Event t) : t.agentT => e.agent

def Theta (setT : Set 0 -> EventT -> EventT) : ooType 4
  => Pi {u : Set 0} {t : EventT}
  -> ((u -> ooType 3) -> ooType 3)
  -> ((Event (setT u t) -> ooType 3) -> ooType 3)
  -> (Event (setT u t) -> ooType 3) -> ooType 3

def mkTheta
  (getT : EventT -> Set 0)
  (get : Pi (t : EventT) -> Event t -> getT t)
  (setT : Set 0 -> EventT -> EventT)
  (invariant : Pi (t : EventT) (u : Set 0) -> u = getT (setT u t))
  : Theta setT
  => \{u} {t} => \q p => \f =>
    q (\x => p (\e =>
      Sig (get (setT u t) e = coe (invariant t u) x right) ** (f e)))

def agent : Theta setAgentT
  => mkTheta getAgentT getAgent setAgentT agentT-inv

I had to change agent into \{u} {t} => mkTheta getAgentT getAgent setAgentT agentT-inv {u} {t} to make it type check.
I simplified it too much, sorry.

This is intended behavior. Users should not have an implicit argument that the return type does not depend on. They should make that an explicit argument, because in no scenario will that implicit argument be solvable anyway except for supplying it manually.

To justify, try this in agda, it won't work as well:
data Unit : Set where
  unit : Unit

why : {x : Unit} → Unit
why {x} = x

how : {x : Unit} → Unit
how = why

However for the builtin ⊤, it could work because it is an empty record, so they did some eta conversion magic:
why : {x : ⊤} → ⊤
why {x} = x

how : {x : ⊤} → ⊤
how = why

which we don't do. but since this eta magic only applies to an empty record which is already rare anyway, i think we don't really need to consider about that in short term.

@refparo This is weird, it is supposed to work. I’ll investigate in the coming days.

@refparo This is weird, it is supposed to work. I’ll investigate in the coming days.

?? your comments are inconsistent:

This is intended behavior

How did you change your mind?

They modified the issue

They modified the issue

Oh I see.  Just use Type.
Also, Set, Prop, hType, uType are not keywords anymore. Just use Type.

This is what I got:
Error: Cannot check the expression of type
         Π (_1 : Π (_1 : Π (_1 : u$) → Type) → Type) → Π (_5 : Π (_5 : Π (_5 : Event
        (setAgentT u$ t$)) → Type) → Type) → Π (_7 : Π (_7 : Event (setAgentT u$
        t$)) → Type) → Type
         (Normalized: Π (_1 : Π (_1 : Π (_1 : u$) → Type) → Type) → Π (_5 : Π (_5 : Π
        (_5 : Event new { | agentT => u$ }) → Type) → Type) → Π (_7 : Π (_7 : Event
        new { | agentT => u$ }) → Type) → Type)
       against the type
         Theta (λ x => λ t => setAgentT x t)
         (Normalized: Π {u : Type} → Π {t : EventT} → Π (_1 : Π (_1 : Π (_1 : u)
        → Type) → Type) → Π (_5 : Π (_5 : Π (_5 : Event new { | agentT => u }) → Type)
        → Type) → Π (_7 : Π (_7 : Event new { | agentT => u }) → Type) → Type)

Btw, code is modified due to latest Aya:
open data Unit : Type 0 | unit

-- *** Types

struct EventT : Type 1
  | agentT : Type 0

def getAgentT (t : EventT) : Type 0 => t.agentT
def setAgentT (x : Type 0) (t : EventT) : EventT
  => new EventT { | agentT => x }
def agentT-inv (t : EventT) (u : Type 0) : u = getAgentT (setAgentT u t)
  => idp
struct Event (t : EventT) : Type 2
  | agent : t.agentT

def getAgent (t : EventT) (e : Event t) : t.agentT => e.agent
def Theta (setT : Type 0 -> EventT -> EventT) : Type 4
  => Pi {u : Type 0} {t : EventT}
  -> ((u -> Type 3) -> Type 3)
  -> ((Event (setT u t) -> Type 3) -> Type 3)
  -> (Event (setT u t) -> Type 3) -> Type 3

def coe {a b : Type} (eq : a = b) (x : a) (i : I) : eq.at i
  => arcoe eq.at x i
def mkTheta
  (getT : EventT -> Type 0)
  (get : Pi (t : EventT) -> Event t -> getT t)
  (setT : Type 0 -> EventT -> EventT)
  (invariant : Pi (t : EventT) (u : Type 0) -> u = getT (setT u t))
  : Theta setT
  => \{u} {t} => \q p => \f =>
    q (\x => p (\e =>
      Sig (get (setT u t) e = coe (invariant t u) x right) ** (f e)))

def agent : Theta setAgentT
  => mkTheta getAgentT getAgent setAgentT agentT-inv

With some minor tweaks I've managed to obtain a term like this:
\ {_ : Type 0} => \ {_ : EventT} =>
  mkTheta (\ (t : EventT) => getAgentT t) (\ (t : EventT) => \ (e : Event t) => getAgent t e)
  (\ (x : Type 0) => \ (t : EventT) => setAgentT x t)
  (\ (t : EventT) => \ (u : Type 0) => agentT-inv t u)
  {{?u$?}} {{?t$?}}

These terms are unsolved apparently

We can solve u$, but not t$.

So
def agent : Theta setAgentT
  => \{u} {t} => mkTheta getAgentT getAgent setAgentT agentT-inv {_} {t}

This code wokrs.

@refparo is it possible to constrain t somehow?

-- #5 in public repo
prim I
prim left
prim right
prim arcoe
struct Path (A : I -> Type) (a : A left) (b : A right) : Type
 | at (i : I) : A i {
   | left => a
   | right => b
 }
def path {A : I -> Type} (p : Pi (i : I) -> A i)
  => new Path A (p left) (p right) { | at i => p i }
def infix = {A : Type} (a b : A) : Type => Path (\ i => A) a b
def idp {A : Type} {a : A} : a = a => path (\ i => a)

open data Unit | unit

-- *** Types

struct EventT : Type 1
  | agentT : Type 0

def getAgentT (t : EventT) : Type 0 => t.agentT
def setAgentT (x : Type 0) (t : EventT) : EventT
  => new EventT { | agentT => x }
def agentT-inv (t : EventT) (u : Type 0) : u = getAgentT (setAgentT u t)
  => idp
struct Event (t : EventT) : Type 2
  | agent : t.agentT

def getAgent (t : EventT) (e : Event t) : t.agentT => e.agent
def Theta (setT : Type 0 -> EventT -> EventT) : Type 4
  => Pi {u : Type 0} {t : EventT}
  -> ((u -> Type 3) -> Type 3)
  -> ((Event (setT u t) -> Type 3) -> Type 3)
  -> (Event (setT u t) -> Type 3) -> Type 3

def coe {a b : Type} (eq : a = b) (x : a) (i : I) : eq.at i
  => arcoe eq.at x i
def mkTheta
  (getT : EventT -> Type 0)
  (get : Pi (t : EventT) -> Event t -> getT t)
  (setT : Type 0 -> EventT -> EventT)
  (invariant : Pi (t : EventT) (u : Type 0) -> u = getT (setT u t))
  : Theta setT
  => \{u} {t} => \q p => \f =>
    q (\x => p (\e =>
      Sig (get (setT u t) e = coe (invariant t u) x right) ** (f e)))

def agent : Theta setAgentT
  => mkTheta getAgentT getAgent setAgentT agentT-inv

Full, working example

@refparo is it possible to constrain t somehow?

There seems really no way to constrain t... because the return type doesn't depend on t.agentT.

(However, if EventT had other fields, the return type would depend on them, but still not agentT.)
(When I opened this issue, I was expecting this would be solved by simply currying. Why doesn't currying work here?)

(When I opened this issue, I was expecting this would be solved by simply currying. Why doesn't currying work here?)

I would intuit the problem with the fact that \{x}. f {y} and \{x}. f {x} are syntactically the same

I've managed to DRASTICALLY enhance the error messages!!!!!!!!!!
If we have
def agent : Theta setAgentT
  => \{u} {v} => mkTheta getAgentT getAgent setAgentT agentT-inv {_} {_}

You'll see
In file test.aya:51:70 ->

  49 |
  50 | def agent : Theta setAgentT
  51 |   => \{u} {v} => mkTheta getAgentT getAgent setAgentT agentT-inv {_} {_}
                                                                             ^^

Error: Unsolved meta _7
       in `mkTheta getAgentT getAgent setAgentT agentT-inv {u} {_7}`
       in `λ {v} ⇒ mkTheta getAgentT getAgent setAgentT agentT-inv {u} {_7}`
       in `λ {u} {v} ⇒ mkTheta getAgentT getAgent setAgentT agentT-inv {u} {_7}`

1 error(s), 0 warning(s).
🔨

It's MUCH BETTER than the freaking monstrosity in, e.g. https://github.com/aya-prover/aya-dev/issues/9#issuecomment-961337175!!!

I'm going to mark this issue as a 'question being answered'. Thanks for your report!


⚠ Jenkins Plugins Artifactory has degraded performance

In dc015a9, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1158 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 73d92ff after 36 minutes.


Reconfiguring node and node-sass versions

Downgrading node/sass versions because I need node version 14 on my machine for work :D.

👷 Deploy Preview for ecstatic-rosalind-63612a processing.
🔨 Explore the source changes: 2eba51d18434541ce4bf868007c7276527f61bcb
🔍 Inspect the deploy log: https://app.netlify.com/sites/ecstatic-rosalind-63612a/deploys/622e15a937ddd90008f3a254


feat: add Avatar component

Avatar
The avatar component is component used for showing user on the web, alongside with a presence icon. It can show an image of the user, or initials form his/hers name if the image is not provided. The will be composed of:
<Image avatar > or <Label circular > if the image is not provided and a presence icon <Icon circular size='mini' inverted />

TODO

[ ] Conformance test
[ ] Minimal doc site example
[ ] Stardust base theme
[ ] Teams Light theme
[ ] Teams Dark theme
[ ] Teams Contrast theme
[ ] RTL check
[ ] W3 accessibility check
[ ] Stardust accessibility check
[ ] Update glossary props table

API Proposal
src: string

The src prop will be use for showing the image in the avatar.
<Avatar src="avatar.jpg" />

name: string

The name prop will be use for showing the initials of the person, if there is not src provided. The name will also appear as a default tooltipfor the avatar.
<Avatar name="Marija Najdova" />

noTooltip: boolean
This property will be used to alter if the tooltip should be shown/hidden.
availability: oneOf(['Available', 'AvailableIdle', 'Away', 'BeRightBack', 'Busy', 'BusyIdle', 'DoNotDisturb', 'Offline', 'PresenceUnknown'])

The availability prop will be use for showing different presence icons.
<Avatar src="avatar.jpg" availability='Available' />

size: number [0..10]
color: oneOf(SUI.colors)
The background color for the avatar if the src is not provided.

Looking around the web at features supported for this component I see:

Feature
FB
Messenger
Skype
Slack
Teams
Twitter
Whats App

An icon showing your presence
Presence
Status

Availability
Status

An icon showing your context

Status

A word describing your context

Status

A message about what you're doing
Status

Status

Status
Status

I would expect future versions of this component to support these use cases.  In prep for that, I propose we rename availability to status for now.

The initial implementation is using the Label, Image and Icon components from stardust. Here are couple of screen shots of it:


how to intercept error from > [Error] HERTZ: Error=

Describe the Question
how to intercept error from

[Error] HERTZ: Error=

and do something about it? i want to drop them after many failed attempts. i have the function but dunno how to get the error as variable passing.
some of the IPs are bad bots
final final final area. hopefully no more issues. these are actual small "production" results returned.
Reproducible Code
running production hertz gives plenty of errors as below
Expected behavior
hope to get some ways to get the hertz error which is not so evident
err := h.Error? i dunno how to get the errors of each connection instance
Screenshots
2023/01/18 01:05:19.407138 engine.go:462: [Error] HERTZ: Error=tls: first record does not look like a TLS handshake, remoteAddr=<IP_ADDRESS>:52120
2023/01/18 01:05:19.407287 engine.go:462: [Error] HERTZ: Error=tls: first record does not look like a TLS handshake, remoteAddr=<IP_ADDRESS>:52186
2023/01/18 01:05:19.407431 engine.go:462: [Error] HERTZ: Error=tls: first record does not look like a TLS handshake, remoteAddr=<IP_ADDRESS>:52122
2023/01/18 01:05:19.407581 engine.go:462: [Error] HERTZ: Error=tls: first record does not look like a TLS handshake, remoteAddr=<IP_ADDRESS>:52170
2023/01/18 01:12:15.022890 engine.go:462: [Error] HERTZ: Error=tls: first record does not look like a TLS handshake, remoteAddr=<IP_ADDRESS>:52168
2023/01/18 01:23:04.126672 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:60162
2023/01/18 01:24:11.011194 engine.go:462: [Error] HERTZ: Error=tls: client offered only unsupported versions: [301], remoteAddr=<IP_ADDRESS>:64880
2023/01/18 01:29:55.089796 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:51646
2023/01/18 02:01:56.637350 engine.go:462: [Error] HERTZ: Error=error when reading request headers: too long int. Buffer size=192, contents: "SSTP_DUPLEX_POST /sr"..."t: <IP_ADDRESS>\r\n\r\n", remoteAddr=<IP_ADDRESS>:33442
2023/01/18 02:07:39.378044 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:55204: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:55204
2023/01/18 02:08:15.374388 engine.go:462: [Error] HERTZ: Error=tls: client offered only unsupported versions: [301], remoteAddr=<IP_ADDRESS>:62155
2023/01/18 02:15:48.749880 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:45102: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:45102
2023/01/18 02:15:49.256078 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:48086: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:48086
2023/01/18 02:15:49.563843 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:52474: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:52474
2023/01/18 02:16:45.869844 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:35766: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:35766
2023/01/18 02:16:45.900358 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:47574: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:47574
2023/01/18 02:16:46.258487 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:49752: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:49752
2023/01/18 02:16:46.681072 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:49138: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:49138
2023/01/18 02:16:47.205629 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:38438: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:38438
2023/01/18 02:16:47.265344 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:38156: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:38156
2023/01/18 02:16:47.484978 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:38174: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:38174
2023/01/18 02:16:47.628648 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:38110: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:38110
2023/01/18 02:16:48.635713 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:49050: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:49050
2023/01/18 02:16:48.840249 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:37308: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:37308
2023/01/18 02:23:17.206187 engine.go:462: [Error] HERTZ: Error=tls: first record does not look like a TLS handshake, remoteAddr=<IP_ADDRESS>:64886
2023/01/18 02:32:42.163859 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:44466
2023/01/18 02:47:23.567338 engine.go:462: [Error] HERTZ: Error=tls: client offered only unsupported versions: [301], remoteAddr=<IP_ADDRESS>:62891
2023/01/18 02:58:32.212579 engine.go:462: [Error] HERTZ: Error=remote error: tls: unknown certificate, remoteAddr=<IP_ADDRESS>:25083
root@vps-8695400b:/home/ubuntu# 2023/01/18 03:02:20.199062 engine.go:462: [Error] HERTZ: Error=remote error: tls: unknown certificate authority, remoteAddr=<IP_ADDRESS>:63310
2023/01/18 03:02:21.450722 engine.go:462: [Error] HERTZ: Error=tls: first record does not look like a TLS handshake, remoteAddr=<IP_ADDRESS>:63496
2023/01/18 03:05:37.207415 engine.go:462: [Error] HERTZ: Error=tls: first record does not look like a TLS handshake, remoteAddr=<IP_ADDRESS>:44220
2023/01/18 03:05:37.949400 engine.go:462: [Error] HERTZ: Error=tls: first record does not look like a TLS handshake, remoteAddr=<IP_ADDRESS>:44230
2023/01/18 03:15:53.291561 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:49056
2023/01/18 03:20:28.739744 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:43506
2023/01/18 03:21:37.141639 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:43566
2023/01/18 03:25:25.029209 engine.go:462: [Error] HERTZ: Error=tls: client requested unsupported application protocols ([http/0.9 http/1.0 spdy/1 spdy/2 spdy/3 h2c hq]), remoteAddr=<IP_ADDRESS>:60558
2023/01/18 03:25:25.049142 engine.go:462: [Error] HERTZ: Error=tls: client requested unsupported application protocols ([hq h2c spdy/3 spdy/2 spdy/1 http/1.0 http/0.9]), remoteAddr=<IP_ADDRESS>:60604
2023/01/18 03:25:25.068348 engine.go:462: [Error] HERTZ: Error=tls: client offered only unsupported versions: [302 301], remoteAddr=<IP_ADDRESS>:60672
2023/01/18 03:25:25.106111 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:60738: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:60738
2023/01/18 03:25:26.200039 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:35556: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:35556
2023/01/18 03:40:48.696674 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:48662
2023/01/18 03:41:05.769079 engine.go:462: [Error] HERTZ: Error=tls: client offered only unsupported versions: [301], remoteAddr=<IP_ADDRESS>:1984
2023/01/18 03:50:23.729521 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:39320
2023/01/18 03:52:27.139846 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:56184
2023/01/18 04:13:57.968761 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:51458
2023/01/18 04:17:46.831883 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:36158
2023/01/18 04:24:39.900449 engine.go:462: [Error] HERTZ: Error=remote error: tls: unknown certificate authority, remoteAddr=<IP_ADDRESS>:59481
2023/01/18 04:34:18.195573 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:48132
2023/01/18 04:38:15.994385 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:47006
2023/01/18 04:49:54.395465 engine.go:462: [Error] HERTZ: Error=tls: client offered only unsupported versions: [302 301], remoteAddr=<IP_ADDRESS>:55336
2023/01/18 05:34:12.358211 engine.go:462: [Error] HERTZ: Error=tls: client offered only unsupported versions: [301], remoteAddr=<IP_ADDRESS>:63727
2023/01/18 05:47:01.294469 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:51020
2023/01/18 05:56:09.581399 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:60514
2023/01/18 05:58:56.077802 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:36592: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:36592
2023/01/18 05:59:37.943659 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:49494
2023/01/18 06:02:55.064688 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:34080
2023/01/18 06:33:31.248798 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:39548
2023/01/18 06:42:38.167951 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:51562: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:51562
2023/01/18 07:06:34.492010 engine.go:462: [Error] HERTZ: Error=tls: first record does not look like a TLS handshake, remoteAddr=<IP_ADDRESS>:50212
Hertz version:
0.5
Environment:
ubuntu 22.04
Additional context
none

refer to https://www.cloudwego.io/zh/docs/hertz/tutorials/basic-feature/error-handle/

By inject a system logger impl (do whatever interception in it).
cc https://github.com/cloudwego/hertz/blob/develop/pkg/common/hlog/hlog.go#L74

By injecting a system logger impl (do whatever interception in it). cc https://github.com/cloudwego/hertz/blob/develop/pkg/common/hlog/hlog.go#L74

good idea

refer to https://www.cloudwego.io/zh/docs/hertz/tutorials/basic-feature/error-handle/
@li-jin-gou
can u pls provide a code example on usage? is it inside h.Server or default or something?

with ref to and checked some ip here already
https://github.com/cloudwego/hertz/issues/549
how to use withonaccept or something?
can u see the bot errors? hope to get a way to drop ip asap upon hertz error and detect bad ip

Why not use context.Context

func main() {
h := server.Default(server.WithOnAccept(func(conn net.Conn) context.Context {
c := context.Background()
return context.WithValue(c, "aaa", "bbb")
}))
h.GET("/ping", func(c context.Context, ctx *app.RequestContext) {
	fmt.Println(c.Value("aaa"))
	ctx.JSON(consts.StatusOK, utils.H{"ping": "pong"})
})

h.Spin()

}

@li-jin-gou
[Error] HERTZ: Error= <-- this error how to get?

@li-jin-gou @Duslia
can u pls provide an example code on how to use this?
https://www.cloudwego.io/zh/docs/hertz/tutorials/basic-feature/error-handle/

@li-jin-gou hope to have an example on how to get the Error message. any example? i'm not sure how to use the link. possible to update with proper example for the documentation?

hello @ultperf  you can contact @GuangmingLuo  to provide free corporate support  and
The current idea is still mainly to refer to

@welkeyever @li-jin-gou it's quite strange not having a mechanism to handle errors from these etc.
any ways to support this in the near future? it's easy to ddos and bring down with all the hertz error.
previously i have badip() to check but now without a way to have the errors from ip, it's quite meaningless.
only hlog.go? i dont even know how to use it. any example of hlog.go#L74 usage?
2023/01/18 05:56:09.581399 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:60514
2023/01/18 05:58:56.077802 engine.go:462: [Error] HERTZ: Error=read tcp <IP_ADDRESS>:443-><IP_ADDRESS>:36592: read: connection reset by peer, remoteAddr=<IP_ADDRESS>:36592
2023/01/18 05:59:37.943659 engine.go:462: [Error] HERTZ: Error=remote error: tls: bad certificate, remoteAddr=<IP_ADDRESS>:49494

@li-jin-gou possible to give an idea how to access all these "HERTZ: Error=" returned variables?
it's really annoying and hope to solve it.
also, how do i disable these messages from appearing?

I'll open it first, and for logging we can adjust the log level to fix it. https://www.cloudwego.io/docs/hertz/tutorials/basic-feature/log/#set-the-loglevel

@li-jin-gou how to pipe to a function to process the output instead of opening a file?
i would like to pipe to a function / variable to process the log data immediately.
    f, err := os.OpenFile("./output.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
    if err != nil {
            panic(err)
    }
    defer f.Close()
    hlog.SetOutput(f)

use hlog.SetOutput and it need a writer.
---Original---
From: @.>
Date: Sun, Jan 22, 2023 20:05 PM
To: @.>;
Cc<EMAIL_ADDRESS>Subject: Re: [cloudwego/hertz] how to intercept error from > [Error] HERTZ:Error= (Issue #551)
@li-jin-gou how to pipe to a function to process the output instead of opening a file?
i would like to pipe to a function / variable to process the log data immediately.
f, err := os.OpenFile("./output.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)     if err != nil {             panic(err)     }     defer f.Close()     hlog.SetOutput(f)
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: @.***>

@Duslia @li-jin-gou  these are the failed "request" of http2 / https
possible for a way to intercept before hitting ctx?
basically i hope i can not use additional hlog module if not needed. it adds an extra layer of complexity to the whole program.
i would like to be able to register the ip of the [Error] HERTZ and i will implement a counter to detect the frequency of failed https / ssl request. e.g.
//this part already done.
if badIP(ip) {
drop
}
//now needs this part for the https / ssl / connection error which has the IP but i cant capture it for error handling.
//if i can, how? actually how to use hlog is what i mean. hlog supposed to be inside (ctx) calls?
//pls help
if (num of failed request of https / ssl error / connection error) > 100 {
addIPtoBadList(ip)
}
2023/01/24 19:51:08.340557 server.go:1162: [Error] HERTZ: HTTP2 server: connection error from <IP_ADDRESS>:13660: connection error: PROTOCOL_ERROR
2023/01/24 19:51:08.343594 server.go:1162: [Error] HERTZ: HTTP2 server: connection error from <IP_ADDRESS>:13660: connection error: PROTOCOL_ERROR
2023/01/24 20:13:39.678930 engine.go:462: [Error] HERTZ: Error=remote error: tls: unknown certificate authority, remoteAddr=<IP_ADDRESS>:64943
2023/01/24 20:18:19.309740 engine.go:462: [Error] HERTZ: Error=tls: first record does not look like a TLS handshake, remoteAddr=<IP_ADDRESS>:47440
2023/01/24 20:50:04.676860 engine.go:462: [Error] HERTZ: Error=tls: client requested unsupported application protocols ([http/0.9 http/1.0 spdy/1 spdy/2 spdy/3 h2c hq]), remoteAddr=<IP_ADDRESS>:32288
2023/01/24 20:50:05.111250 engine.go:462: [Error] HERTZ: Error=tls: client requested unsupported application protocols ([hq h2c spdy/3 spdy/2 spdy/1 http/1.0 http/0.9]), remoteAddr=<IP_ADDRESS>:32584
2023/01/24 20:50:05.543277 engine.go:462: [Error] HERTZ: Error=tls: client offered only unsupported versions: [302 301], remoteAddr=<IP_ADDRESS>:32842

@Duslia @li-jin-gou
sample code for reference. pls inform how to capture [Error] HERTZ: ip address inside
thx
package main

import (
        "context"
        "crypto/tls"
        "net"
        "syscall"
        "golang.org/x/sys/unix"
        "bytes"
        //"fmt"
        "log"
        "time"

        "github.com/cloudwego/hertz/pkg/app"
        "github.com/cloudwego/hertz/pkg/app/client"
        "golang.org/x/crypto/acme"
        "golang.org/x/crypto/acme/autocert"
        "compress/gzip"
        "github.com/cloudwego/hertz/pkg/app/server"
        "github.com/cloudwego/hertz/pkg/network/standard"
        "github.com/hertz-contrib/http2/config"
        "github.com/hertz-contrib/http2/factory"

        "github.com/hertz-contrib/reverseproxy"
)

func main() {

        certManager := &autocert.Manager{
                Prompt: autocert.AcceptTOS,
                Cache:  autocert.DirCache("./certs"),
                //              HostPolicy: autocert.HostWhitelist("example.com"), // TODO: replace with your domain.
        }
        letsencryptCfg := &tls.Config{
                GetCertificate: certManager.GetCertificate,
                NextProtos: []string{
                        "h2", "http/1.1", acme.ALPNProto,
                },
        }

        tlsCfg := &tls.Config{
                MinVersion: tls.VersionTLS12,
                GetCertificate: func(hello *tls.ClientHelloInfo) (*tls.Certificate, error) {
                        return letsencryptCfg.GetCertificate(hello)
                },
        }

        h := server.New(
                server.WithHostPorts(":443"),
                server.WithALPN(true),
                server.WithTLS(tlsCfg),
                server.WithListenConfig(&net.ListenConfig{
                        Control: func(network, address string, c syscall.RawConn) error {
                                return c.Control(func(fd uintptr) {
                                        syscall.SetsockoptInt(int(fd), syscall.SOL_SOCKET, unix.SO_REUSEPORT, 1)
                                })
                        },
                }),
                server.WithOnAccept(func(conn net.Conn) context.Context {
                        c := context.Background()
                        return context.WithValue(c, "a", "bbb")
                }),
        )

        h.AddProtocol("h2", factory.NewServerFactory(
                config.WithReadTimeout(time.Minute),
                config.WithDisableKeepAlive(false)),
        )

        tlsCfg.NextProtos = append(tlsCfg.NextProtos, "h2")
        h.Use(func(cc context.Context, ctx *app.RequestContext) {

                log.Printf("c = %v = %s",cc, cc.Value("a")) //NOT SHOWING "bbb"?!?!

                var body []byte
                body = []byte("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.")

                var b bytes.Buffer
                w := gzip.NewWriter(&b)
                w.Write(body)
                w.Close()
                body = b.Bytes()

                ctx.Response.Header.SetContentEncoding("gzip")
                ctx.Response.Header.SetStatusCode(200)
                ctx.Response.Header.Set("Content-Type", "text/html; charset=UTF-8")
                ctx.Response.Header.Set("Date", "Tue, 10 Jan 2023 23:13:43 GMT")
                ctx.Response.Header.Set("Connection", "keep-alive")

                ctx.Response.Header.Set("Cache-Control", "max-age=31536000")
                ctx.Response.Header.Set("Connection", "keep-alive")
                ctx.Response.SetBody(body)

        })
        h.Spin()
}

@Duslia @li-jin-gou sample code for reference. pls inform how to capture [Error] HERTZ: ip address inside
thx
package main

import (
        "context"
        "crypto/tls"
        "net"
        "syscall"
        "golang.org/x/sys/unix"
        "bytes"
        //"fmt"
        "log"
        "time"

        "github.com/cloudwego/hertz/pkg/app"
        "github.com/cloudwego/hertz/pkg/app/client"
        "golang.org/x/crypto/acme"
        "golang.org/x/crypto/acme/autocert"
        "compress/gzip"
        "github.com/cloudwego/hertz/pkg/app/server"
        "github.com/cloudwego/hertz/pkg/network/standard"
        "github.com/hertz-contrib/http2/config"
        "github.com/hertz-contrib/http2/factory"

        "github.com/hertz-contrib/reverseproxy"
)

func main() {

        certManager := &autocert.Manager{
                Prompt: autocert.AcceptTOS,
                Cache:  autocert.DirCache("./certs"),
                //              HostPolicy: autocert.HostWhitelist("example.com"), // TODO: replace with your domain.
        }
        letsencryptCfg := &tls.Config{
                GetCertificate: certManager.GetCertificate,
                NextProtos: []string{
                        "h2", "http/1.1", acme.ALPNProto,
                },
        }

        tlsCfg := &tls.Config{
                MinVersion: tls.VersionTLS12,
                GetCertificate: func(hello *tls.ClientHelloInfo) (*tls.Certificate, error) {
                        return letsencryptCfg.GetCertificate(hello)
                },
        }

        h := server.New(
                server.WithHostPorts(":443"),
                server.WithALPN(true),
                server.WithTLS(tlsCfg),
                server.WithListenConfig(&net.ListenConfig{
                        Control: func(network, address string, c syscall.RawConn) error {
                                return c.Control(func(fd uintptr) {
                                        syscall.SetsockoptInt(int(fd), syscall.SOL_SOCKET, unix.SO_REUSEPORT, 1)
                                })
                        },
                }),
                server.WithOnAccept(func(conn net.Conn) context.Context {
                        c := context.Background()
                        return context.WithValue(c, "a", "bbb")
                }),
        )

        h.AddProtocol("h2", factory.NewServerFactory(
                config.WithReadTimeout(time.Minute),
                config.WithDisableKeepAlive(false)),
        )

        tlsCfg.NextProtos = append(tlsCfg.NextProtos, "h2")
        h.Use(func(cc context.Context, ctx *app.RequestContext) {

                log.Printf("c = %v = %s",cc, cc.Value("a")) //NOT SHOWING "bbb"?!?!

                var body []byte
                body = []byte("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.")

                var b bytes.Buffer
                w := gzip.NewWriter(&b)
                w.Write(body)
                w.Close()
                body = b.Bytes()

                ctx.Response.Header.SetContentEncoding("gzip")
                ctx.Response.Header.SetStatusCode(200)
                ctx.Response.Header.Set("Content-Type", "text/html; charset=UTF-8")
                ctx.Response.Header.Set("Date", "Tue, 10 Jan 2023 23:13:43 GMT")
                ctx.Response.Header.Set("Connection", "keep-alive")

                ctx.Response.Header.Set("Cache-Control", "max-age=31536000")
                ctx.Response.Header.Set("Connection", "keep-alive")
                ctx.Response.SetBody(body)

        })
        h.Spin()
}

No time to support this for now,  welcome to submit a PR or  use custom hlog.

@li-jin-gou possible to help answer this last final question i have?
sorry it's my first time using bytes.Buffer this way, not sure if there's a better way to do this...

how do i get the updated value of bufferWriter?
how do i reset the bufferWriter after every read of the updated value?

buffer := bytes.NewBuffer(nil)
bufferWriter := bufio.NewWriter(buffer)

//var buf bytes.Buffer
/*
f, err := os.OpenFile("./output.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
	panic(err)
}
defer f.Close()
*/
hlog.SetOutput(bufferWriter)

log.Printf("bufstr = %s", buffer.String())

buffer.Reset()


Changed the Buf/BufMut implementations to accept isize/usize

Currently if you call But::get_uint_le it returns a u64 no matter what platform you are running on.
I have changed it and associated functions to directly accept and return isize/usize.
Note: This is a method signature changing function so I wasn't sure how far I should go. What that means is that it still accepts a byte count as an argument. I think it would be better to remove that argument but that will be a much bigger breaking change.
Depending on feedback to this pull request, I'll happily make changes to accomplish that as well (and I think it's the right thing to do).

What's the motivation for doing this? It would make it impossible to parse a number larger than 4 bytes on 32 bit platforms.

This is a breaking change. We are not going to be releasing any breaking changes for bytes any time soon, if ever.

Closing this pull requested based on a discussion on discord. Will resubmit the intent of this as a new pull request.


Ballerina support

Is this a BUG REPORT or FEATURE REQUEST?:
FEATURE REQUEST
What happened:
Right now Kubeless supports only Python, Node.js, Ruby, PHP.
What you expected to happen:
Ballerina is a cloud-native programming language optimized for microservices so I would expect it to be supported natively in Kubeless just like the other languages.

Thanks @DSotnikov.
Just in case some of your engineers start evaluating this we have documentation on how to implement a new runtime: https://kubeless.io/docs/implementing-new-runtime/
The first thing to do would be to create a small ballerina HTTP server that loads the user function and executes it. You can find examples in the runtimes folder.
We are in the Kubernetes slack (http://slack.k8s.io) in the #kubeless channel in case you want some quick response (I am @andresmgot there).

To add to what Andres is saying I would:
1- Get familiar with kubeless, using one of the existing runtimes
2- Try to use a Ballerina "custom runtime", see https://kubeless.io/docs/runtimes/ and the custom runtime section. Basically a docker image that serves a function on port 8080
3- Build a Ballerina runtime using the URL mentioned by Andres.
Happy to schedule a call to help you with it.

Ballerina is already a runtime supported.


[fuzzing] per-target binary for integration with google oss-fuzz

Google OSS-Fuzz project (google allow open source projects to be fuzzed by them) requires
that each fuzzer be its own binary.
To avoid having to maintain additional files,
and having to have to add a new binary file everytime one adds a fuzzer,
this intelligently creates a binary based on an env variable.
How does it work?

a build file retrieves an environment variable telling it what fuzzer to create
it generates a file in OUT_DIR that contains the name of the fuzzer
that file is included in the binary code, and used to figure out what's the target

Check the README for more information.
TEST PLAN
works!

@bors-libra r=sunshowers

:pushpin: Commit 16e6cb1 has been approved by sunshowers

:hourglass: Testing commit 16e6cb114c30ba5f3490aafc46cb84d77e2b3274 with merge 472ca5462c9505336bd2e1a7bfb4d7ce9761fba9...

:broken_heart: Test failed - checks-circle_commit_workflow

LGTM. Clever hack :)

@bors-libra retry

:hourglass: Testing commit 16e6cb114c30ba5f3490aafc46cb84d77e2b3274 with merge df82294b7206806c08ecdff8d8551d6538bf0fb1...

:broken_heart: Test failed - checks-circle_commit_workflow

@bors-libra retry

@bors-libra retry

@bors-libra retry

@bors-libra retry

@bors-libra r=sunshowers

:pushpin: Commit cefdf3f has been approved by sunshowers

:hourglass: Testing commit cefdf3fa59bdcb51e84f3049f8a0db8577ef7e0f with merge 82993d8f319f23761096219eea53d2d089256ff6...

@metajack did I break something :D?

:sunny: Test successful - checks-actions_land_blocking_test, checks-circle_commit_workflow
Approved by: sunshowers
Pushing 82993d8f319f23761096219eea53d2d089256ff6 to master...


Fail when trace.length > 2

Additional safety check following:

https://github.com/pixiebrix/webext-messenger/issues/219

This is not the right solution to the issue since it will trigger an error, but it should avoid loops in the future.

This is not the right solution to the issue since it will trigger an error

I think this check is a good fail-safe
Is another guardrail that sender should ignore/drop/not forward any messages where it would be forwarding it to the same target?

I can leave a comment for that in the future, but if I limit forwarding to the background page then neither one of these situations should happen


Manifest Editor presents a list of templates for making a new Manifest

Requires #48, #49
When the user opens the Manifest Editor, and no manifest is yet loaded, a list of possible templates is presented on the Splash Screen (#49).
These are set in configuration, by a value that points to one or more IIIF Collections, e.g.,
"new-manifest-templates": [
   "config/built-in-manifest-editor-templates.json",
   "https://iiif.io/api/cookbook/recipes.json"
]

This shows that the config can be built in, and also maintained externally.
When the user clicks a template (there might only be one, as in #36) the ME loads the Manifest from the template, and erases its ID - it can't be saved back to that location!

PR for config is here - https://github.com/digirati-co-uk/iiif-manifest-editor/pull/121


[ForkJoin] Default to worker communication does not happen

Getting the error  undefined worker 'AirlineWorker'  when the below code is executed

@http:BasePath {value:"/passthrough"}
service passthrough {

    @http:POST{}
    @http:Path {value:"/test1"}
    resource passthrough (message m) {

        int ad = 10;
        string bd = "abc";

        ad, bd -> AirlineWorker;  ----> error
        ad, bd <- AirlineWorker;

        fork {
            worker AirlineWorker {

                int a;
                string b;
                a,b <- default;
                int a = 20;
                string b = "abcdef";
                a,b -> default;
            } join(...){
                ....
            }
}

The above program is invalid, where you can't send messages into a worker in a fork/join from outside the fork/join.


Incorrect installation instructions?

I tried following the installation instructions for using Git on macOS, but the scripts that create the symlinks seem incorrect and create and empty Application dir in the dir ~/Library/, and does something confusing about creating a Support/OpenSCAD/color-schemes/ dir in the Git repo.
I think it's because there is a space character in the Application Support directory name, which causes the commands to have two arguments instead of the one path argument:
ln -s $PWD/dracula.json $HOME/Library/Application Support/OpenSCAD/color-schemes/editor
ln -s $PWD/transylvania.json $HOME/Library/Application Support/OpenSCAD/color-schemes/render

I think these paths should be quoted?

Also, the directory creation script needs fixing:
mkdir -p $HOME/Library/Application Support/OpenSCAD/color-schemes/editor $HOME/Library/Application Support/OpenSCAD/color-schemes/render


Make a guard class

It is not an issue, but it would help to make a guard class:
https://github.com/aspnet/EntityFramework/blob/dev/src/Shared/Check.cs
My impression is, that 50% of the code is for the checking preconditions ;)

:smile: yes, that could be true. I guess I get fastidious when it comes to Guard methods as it changes the stack trace but I can see your point, too + it doesn't alter the stack trace that much, you can still see where the Guard methods is being called.
Feel free to have a go on this and send a pull request if you want to.

May consider the use of https://github.com/danielwertheim/Ensure.That for this item.  Why implement code that is already implemented and working in various projects already?

In my fork... will be pushing in the next few days after some additional work is put to-bed.


Score not displayed in WebUI?

Hello!
I understand that some feartures are only availably for Windows. But does that mean that I (with Ubuntu) can find the score only in the EXIF data of a saved image!? At least I cannot find anything in the webUI.

For me I had to run images that I generated before installing the aesthetic image scorer addon through the extras batch for them to get scored.
I was also experiencing an issue where if the images did not have meta data on them the scoring would fail to save the score to the images meta data. You can see how I fixed this issue here in the PR I've made: https://github.com/tsngo/stable-diffusion-webui-aesthetic-image-scorer/pull/21/files
Hopefully that helps!


ZDD crashes if a task takes too long to get healthy

Marathon-lb version: v1.1.3
In the event of a blue-green deployment via ZDD, if the green task never gets healthy, then the ZDD script goes on till it crashes with the following stacktrace -
  File "zdd.py", line 385, in swap_zdd_apps
    return swap_zdd_apps(args, new_app, old_app)
  File "zdd.py", line 385, in swap_zdd_apps
    return swap_zdd_apps(args, new_app, old_app)
  File "zdd.py", line 379, in swap_zdd_apps
    old_app = fetch_marathon_app(args, old_app['id'])
  File "zdd.py", line 77, in fetch_marathon_app
    response = marathon_get_request(args, "/v2/apps" + app_id)
  File "zdd.py", line 63, in marathon_get_request
    response = requests.get(url, auth=get_marathon_auth_params(args))
  File "/usr/local/lib/python3.4/dist-packages/requests/api.py", line 70, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/local/lib/python3.4/dist-packages/requests/api.py", line 55, in request
    with sessions.Session() as session:
  File "/usr/local/lib/python3.4/dist-packages/requests/sessions.py", line 346, in __init__
    self.mount('https://', HTTPAdapter())
  File "/usr/local/lib/python3.4/dist-packages/requests/adapters.py", line 123, in __init__
    self.init_poolmanager(pool_connections, pool_maxsize, block=pool_block)
  File "/usr/local/lib/python3.4/dist-packages/requests/adapters.py", line 159, in init_poolmanager
    block=block, strict=True, **pool_kwargs)
  File "/usr/local/lib/python3.4/dist-packages/requests/packages/urllib3/poolmanager.py", line 121, in __init__
    dispose_func=lambda p: p.close())
  File "/usr/local/lib/python3.4/dist-packages/requests/packages/urllib3/_collections.py", line 47, in __init__
    self._container = self.ContainerCls()
  File "/usr/lib/python3.4/collections/__init__.py", line 56, in __init__
    self.__update(*args, **kwds)
  File "/usr/lib/python3.4/_collections_abc.py", line 595, in update
    if isinstance(other, Mapping):
  File "/usr/lib/python3.4/abc.py", line 188, in __instancecheck__
    subclass in cls._abc_negative_cache):
  File "/usr/lib/python3.4/_weakrefset.py", line 75, in __contains__
    return wr in self.data
RuntimeError: maximum recursion depth exceeded in comparison

Am I missing something here, in terms of a configuration ?
Can I submit a PR for this ?

    if deployment_in_progress(new_app):
        time.sleep(args.step_delay)
        return swap_zdd_apps(args, new_app, old_app)

can be changed to this -
    if deployment_in_progress(new_app):
        if global_retry_counter < max_retries:
            global_retry_counter+=1
            time.sleep(args.step_delay)
            return swap_zdd_apps(args, new_app, old_app)

max_retries is a configurable parameters to ZDD script.


ViewManager.group(): multiple means group incorrectly

multiple means on one x-var need to be grouped including test after one another.
Currently additional means are appended at the end of the list.

We should support different grouping layouts in fact (all means + tests after another vs. groups of stats with different definitions [rescaled, excluded, etc]).


Importing sourcefiles from booi ?

Recently, while writing some service Boo scripts, I found myself missing good old require from Node.JS to better organize functionality and split some commonly used functions without compiling them.
Is there any way to implement such functionality with macro and interpreter control interface ?

Possibly.  What specific functionality are you missing that import can't do?

Import is for compiled binaries. And booi is all about interpreting (look, Boo can be a script lang), so I want direct sourcecode importing.

Hmm...
That's tricky.  The pipelined nature of the compiler means you can't do it as a macro, because all the parsing is finished well before macro expansion begins.  (The compiler does have a sort of a way around this for internal macros, but it's weird and complicated and full of gotchas, so I'd prefer to avoid it.)
Boo.Lang.Useful.IO does have a text preprocessor that could be run before the parser starts, that could be extended to recognize a require statement and add a file to CompilerContext.Parameters.Input, but it's not set up as a compiler step.
If you really wanted to, you could build this and submit a PR, though...

Yes, I want it. Whole presence of booi was my reason to still cling with Boo with other options easiliy available. Yet, unfortunately, it's cannot my used for multifile projects easily.

All right.  Well as I said, feel free to implement it and submit a PR.  Have a look at BooTemplate for an example of inserting a preprocessing step before the parsing step.

Seriously ? I guess it's something in Boo.Lang.Interpreter, like Eval file content ?

No, what you want to do is have require add a new file to the list of compiler inputs, so it will be compiled together with the file you're currently compiling.  (Make sure to have a loop in there to then preprocess that file, and a check that you don't pull in any file that's already part of the build, in case two files both require the same third file.)
You want to put this in a compiler step, and insert it at the beginning of the pipeline, before Parsing.  BooTemplate does something similar, so I suggested it as an example.

compiling
booi

Ahem... How about no ?

Booi is powered by the same compiler as booc.  The only real difference is the last step; it executes the compiled code in-memory rather than saving it to disc.


Get no response from bot

I set this up with synapse server in docker container "synapse" and started the mx-puppet-discord container with --network=container:synapse. When this is up I can see that localhost:8434 is listened in container synapse. however when I try to talk to @_discordpuppet_bot:addr I don't get any response. Where would the problem be?
netstat inside synapse container:
root@c39dc89a6b2e:/# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 <IP_ADDRESS>:8434          <IP_ADDRESS>:*               LISTEN      -
tcp6       0      0 :::8008                 :::*                    LISTEN      -

logs:
Feb-21 13:45:50.215 [Store] info: Starting DB Init
Feb-21 13:45:50.216 [Store] info: Filename present in config, using sqlite
Feb-21 13:45:50.216 [SQLite3] info: Opening database.db
Feb-21 13:45:50.219 [Store] silly: _get_schema_version
Feb-21 13:45:50.219 [SQLite3] silly: Get: SELECT version FROM schema
Feb-21 13:45:50.220 [Store] info: Database schema version is 16, latest version is 16
Feb-21 13:45:50.221 [Store] info: Starting DB Init
Feb-21 13:45:50.222 [Store] silly: _get_discord_schema_version
Feb-21 13:45:50.222 [SQLite3] silly: Get: SELECT version FROM discord_schema
Feb-21 13:45:50.222 [Store] info: Database schema version is 4, latest version is 4
Feb-21 13:45:50.223 [PuppetBridge] info: Starting application service....
Feb-21 13:45:50.228 [bot-sdk-MatrixLiteClient] info: (REQ-1) POST https://addr/_matrix/client/r0/register
Feb-21 13:45:50.228 [bot-sdk-MatrixLiteClient] debug: (REQ-1) body = {"type":"m.login.application_service","username":"_discordpuppet_bot"}
Feb-21 13:45:50.257 [bot-sdk-Metrics] debug: matrix_client_function_call
Feb-21 13:45:50.257 [bot-sdk-Metrics] debug: intent_function_call
Feb-21 13:45:50.257 [PuppetBridge] info: Application service started!
Feb-21 13:45:50.258 [PuppetBridge] info: Setting bridge user data...
Feb-21 13:45:50.258 [bot-sdk-MatrixLiteClient] info: (REQ-2) GET https://addr/_matrix/client/r0/profile/%40_discordpuppet_bot%3Aaddr
Feb-21 13:45:50.268 [bot-sdk-MatrixLiteClient] debug: (REQ-2 RESP-H200) { displayname: 'Discord Puppet Bridge' }
Feb-21 13:45:50.268 [PuppetBridge] info: Activating users...
Feb-21 13:45:50.269 [SQLite3] silly: All: SELECT * FROM puppet_store
Feb-21 13:45:50.269 [bot-sdk-Metrics] debug: matrix_client_function_call
Feb-21 13:45:50.269 [bot-sdk-Metrics] debug: matrix_client_function_call
Feb-21 13:45:50.270 [PresenceHandler] info: Starting presence handler with new interval 500ms

I messed up with localhost and <IP_ADDRESS>, It's working now.


Use readLock in getActiveRatio

@Override
  public double getActiveRatio(String storageGroup) {
    lock.writeLock().lock();
    double ratio;
    try {
      ratio = activeRatioMap.get(storageGroup);
    } catch (Exception e) {
      ratio = 0;
      LOGGER.error("Get active ratio failed", e);
    } finally {
      lock.writeLock().unlock();
    }
    return ratio;
  }

It should use readLock instead of writeLock here

Thanks for your contribution!
LGTM.


Implement Heat Map Key

As a developer, I want to add a scale to our heat map, so that end-users have a frame of reference when viewing the visual output on our canvas.
Definition of Done

[x] Figure out if we want to use picture of different heat map colors. (Already on our web page)
[ ] Figure out values we are going to use to classify the different colors in our heat map
[ ] Implement heat map key

probably going to have to create a function to do this work

This is the best example I could find researching: https://stackoverflow.com/questions/36556309/create-legend-in-javascript

I think the values are going to have to be dynamic based on the data we are reading as well, that can't be done until the parsing is complete

This issue is going to have to be pushed into sprint 3 where we can hopefully have a better understanding of how many colors we're going to use. We also need to figure out how we are going to choose which data value corresponds to each color.

Looking at other functions that create a legend/key online, it doesn't seem like it will be too difficult to implement once we have the above questions answered.

This story took me about 3.5-4 hours in total over a couple of days. There is a more detailed description on how long each task took in those actually issues.


Underscore instead of dash in Id value

Is this possible, formeo have underscore instead of ids.

Thanks for sharing info.


[5.9] Make column and line non-optional

Explanation: SourceLocation.line, SourceLocation.column and SourceLocation.file were optional because at some point we intended for them to be lazily computed (or something of the sort). But that never really turned out to be useful, and we were left with optional variables that were never nil if created from SwiftSyntax itself. Make them non-optional
Scope: Changes the SourceLocation API
Risk: This has the potential of breaking SwiftSyntax clients because it’s an API change but any issues from this change will be caught at compile time
Testing: Verified that all open source clients of SwiftSyntax in the Swift project still build
Issue: rdar://107971233, https://github.com/apple/swift-syntax/issues/1525
Reviewer:  @ahoppen on https://github.com/apple/swift-stress-tester/pull/233

https://github.com/apple/swift/pull/65321
https://github.com/apple/swift-format/pull/516
https://github.com/apple/swift-stress-tester/pull/236
@swift-ci please test

https://github.com/apple/swift/pull/65321
https://github.com/apple/swift-format/pull/516
https://github.com/apple/swift-stress-tester/pull/236
@swift-ci please test

https://github.com/apple/swift/pull/65321
https://github.com/apple/swift-format/pull/516
https://github.com/apple/swift-stress-tester/pull/236
@swift-ci please test

https://github.com/apple/swift/pull/65321
https://github.com/apple/swift-format/pull/516
https://github.com/apple/swift-stress-tester/pull/236
@swift-ci please test Linux

https://github.com/apple/swift/pull/65321
https://github.com/apple/swift-format/pull/516
https://github.com/apple/swift-stress-tester/pull/236
@swift-ci please test

https://github.com/apple/swift/pull/65321
https://github.com/apple/swift-format/pull/516
https://github.com/apple/swift-stress-tester/pull/236
@swift-ci please test


Pipelines fail repeatedly.

Rancher versions:
rancher/server: 2.0 master 2/28
Steps
Added an "Imported" cluster
Enabled GH for pipelines
Click Add pipeline
setup repository
configured build step
removed stage 3
Save
Run Manual build
All builds fail
See:
time="2018-02-28T21:36:33Z" level=info msg="respData:{\"type\":\"Repository\",\"id\":22946960,\"name\":\"web\",\"active\":true,\"events\":[\"push\"],\"config\":{\"content_type\":\"json\",\"insecure_ssl\":\"1\",\"secret\":\"********\",\"url\":\"https://<IP_ADDRESS>/hooks?pipelineId=project-br9qq:pipeline-76trt\"},\"updated_at\":\"2018-02-28T21:36:33Z\",\"created_at\":\"2018-02-28T21:36:33Z\",\"url\":\"https://api.github.com/repos/cloudnautique/cattle/hooks/22946960\",\"test_url\":\"https://api.github.com/repos/cloudnautique/cattle/hooks/22946960/test\",\"ping_url\":\"https://api.github.com/repos/cloudnautique/cattle/hooks/22946960/pings\",\"last_response\":{\"code\":null,\"status\":\"unused\",\"message\":null}}"
time="2018-02-28T21:36:39Z" level=error msg="Error get Jenkins engine - error get jenkins token - secret \"jenkins\" not found"
E0228 21:36:39.931931       1 generic_controller.go:200] PipelineExecutionController project-br9qq/pipeline-76trt-1 [pipeline-execution-controller] failed with : pipelineexecutionlogs.management.cattle.io "pipeline-76trt-1-0-0" already exists

...
time="2018-02-28T22:05:30Z" level=error msg="Error get Jenkins engine - error get jenkins token - secret \"jenkins\" not found"
time="2018-02-28T22:05:30Z" level=error msg="Error get Jenkins engine - error get jenkins token - secret \"jenkins\" not found"
time="2018-02-28T22:05:40Z" level=error msg="Error get Jenkins engine - error get jenkins token - secret \"jenkins\" not found"

in server logs

I was not able to reproduce this.
Can you do the following to see if the pipeline stack is deployed successfully
kubectl get ns cattle-pipeline
kubectl get pod,secret -n cattle-pipeline

And is there any abnormal logs when enabling pipeline?

due to fetching secret in the wrong plane.
Can be reprodecued by:

run rancher/server:master
import a cluster
setup pipeline and run in that cluster
Should be fixed in latest master but is pending on some other issues to test.
I'll change the issue status when it is available to retest

I no longer see this issue in the latest builds.


Yet another node-gyp rebuild issue

Have read many posts on this mysterious node-gyp rebuild failure. Have tried all of the proposed solutions. Nothing has worked so far.  System Linux 4.8.6-x86_64-linode78
gyp ERR! command "/home/phillipadsmith/.ndenv/versions/v4.2.1/bin/node" "/home/phillipadsmith/.ndenv/versions/v4.2.1/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/phillipadsmith/canadian-headlines-scrapers/node_modules/osmosis/node_modules/libxmljs-dom/node_modules/libxmljs
gyp ERR! node -v v4.2.1
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok
npm ERR! Linux 4.8.6-x86_64-linode78
npm ERR! argv "/home/phillipadsmith/.ndenv/versions/v4.2.1/bin/node" "/home/phillipadsmith/.ndenv/versions/v4.2.1/bin/npm" "upgrade"
npm ERR! node v4.2.1
npm ERR! npm  v2.14.7
npm ERR! code ELIFECYCLE

npm 2.14.7
On Ubuntu 12.04 LTS.
Have tried with newer versions of node/npm also. Same error.

I have the same issue,
npm 3.10.10 on Ubuntu 14.04 LTS

I also ran into this, different versions of almost anything.
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:276:23)
gyp ERR! stack     at emitTwo (events.js:106:13)
gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Linux 4.4.0-53-generic
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/commander/Projekte/atem/Atem-MOM/node_modules/libxmljs
gyp ERR! node -v v6.9.2
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok
npm ERR! Linux 4.4.0-53-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v6.9.2
npm ERR! npm  v4.0.5
npm ERR! code ELIFECYCLE

npm ERR<EMAIL_ADDRESS>install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!

I confirm! Nothing works trying do make it work!

Can you look a little further up in the error log, and see if you can find a C++ compiler error?

@hildjj Here's the full output of the install process:
https://gist.github.com/phillipadsmith/426b5231bdf53c21b99e7486147a6f0e
npm 2.14.7
On Ubuntu 12.04 LTS.

Doesn't look like we're logging compiler version, but it looks like whatever C++ compiler you're using doesn't support C++11.

@defunctzombie so what do you suggest should we do to solve our installation problems. I'm asking since you closed the issue.

Without seeing your complete log file I cannot say (because the portion of the log you posted is not helpful). But you should make sure you have a modern(ish) compiler that can build c++11 and that you have met the dependencies described here: https://github.com/nodejs/node-gyp

Ok, since this is a current xubuntu running here, we can safely assume that c++11 is supported by gcc.
I just figured out that I can't build<EMAIL_ADDRESS>but<EMAIL_ADDRESS>builds fine. That suffices me. I updated the package.json that requires libxmljs.

Doesn't look like we're logging compiler version, but it looks like whatever C++ compiler you're using doesn't support C++11.

Seems unlikely, but I'll double check.


Not working

Try to use on ESP8266. It seems it's not correctly encoding protobuf protocol.

I have the same issue on an ESP32 - messages do not appear to be decodable using standard Sparkplug decoder libraries (Eclipse Tahu) which are able to decode other Sparkplug messages. Odd.

would you share the code that produces the malformed payload? I would like to investigate and try and find the bug in this library.
Thanks, Michael

@mkeras Apologies for the delay. Here's a gist with the code. I've validated other Sparkplug payloads on the same broker (sent via the node-red Sparkplug plugin) can be parsed via MQTT.fx's Sparkplug plugin. Unfortunately it can't do the same for Sparkplug messages sent via the code above.
I am sure I am missing something simple, and I appreciate your library is in alpha, so any input is helpful and appreciated.
(For context, the project is using a m5Atom  with a servo board, running two servos, which I'd like to control and monitor as a Sparkplug node simply for my own curiosity's sake, and because it relates somewhat to my job at HiveMQ, an MQTT Broker developer.)

I managed to resolve this, in the end. The issue (for me) was the actual MQTT library publishing. I had to specify the buffer length to get it to accurately publish. I change this line:
 mqttClient.publish(topic, (char*) buffer);
to this:
mqttClient.publish(topic, (char*) buffer, buffer_length);
Now it's all working well. Thank you again!

Awesome, glad to here it! That part is something that stumped me for a while when I was making testing the functions, which led to adding that buffer_length option to the mqtt publish of the mqtt client.


Adds xcframework files to our git releases

Linked Issue:

Checklist:

[ ] Did you sign the Contributor License Agreement?
[ ] Does the CI pipeline pass?

GitHub has archived their own action for creating releases. They recommended a different one which I switched to in this PR: https://github.com/actions/create-release

Codecov Report

Merging #99 (0bd2e90) into main (aa166ed) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main      #99   +/-   ##
=======================================
  Coverage   94.71%   94.71%
=======================================
  Files          62       62
  Lines        1608     1608
=======================================
  Hits         1523     1523
  Misses         85       85

Impacted Files
Coverage Δ

...ftCurrent_SwiftUI/Views/ModifiedWorkflowView.swift
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


Changed PWM duty cycle argument to uint16_t

The duty parameters is an uint32, but it only uses uint16 as it's maximum value.

ping @nochkin

Tim, I'm very sorry for not responding fast enough. I managed to miss those emails from Github somehow.
I got burried with some personal-related things and could not spare enough time for this project at this very moment.
There is one pending issue related to managing duty and frequency properly. I have some work in progress related to it, and that will affect the duty parameter too.
I can integrated your pull requests anyway, especially considering that my fixes will need more time.
Please let me know.

Okay, sometimes other things happens in life :)
Yes, please merge it.


Clone a project

Clone fields, views, etc.

Sorry, @jsquire, but this won't be possible right now. I assumed there were more mutations to, for example, create a ProjectNext object, but no - not at this time. There is even a GraphQL mutation to clone a project (classic). I did open https://github.com/github-community/community/discussions/18471 for now.

I suppose some gaps are to be expected, given the beta status.   Thanks for looking into it!


Add a separate RegistryLock action for the console

This handles both GET and POST requests. For POST requests it doesn't actually change anything about the domains because we will need to add a verification action (this will be done in a future PR).

This change is

friendly ping


New blog post link, "Building a Data Lake with Debezium and Apache Iceberg"

"

@ismailsimsek Don't you want to re-format that on the one line there will be links to all three parts? So it would look like
Building a Data Lake with Debezium and Apache Iceberg (Part 2, Part 3) by Ismail Simsek

@ismailsimsek Don't you want to re-format that on the one line there will be links to all three parts? So it would look like Building a Data Lake with Debezium and Apache Iceberg (Part 2, Part 3) by Ismail Simsek

update it

@ismailsimsek Applied, thanks


[REQUEST]Add abillity to make Read Only Text boxes in plugin forms

I feel this would be a good way to create a log screen or something similar for a plugin.

I posted a guide here (check it out when the update is released) https://forum.openbullet.dev/topic/616/how-to-make-a-property-change-the-ui-in-an-iplugin


New package: Events v0.1.0

Registering package: Events
Repository: https://github.com/mirek/Events.jl
Created by: @mirek
Version: v0.1.0
Commit: 7c6119dc349b28a7663c9c426a9c663f35a661e1
Reviewed by: @mirek
Reference: https://github.com/mirek/Events.jl/commit/7c6119dc349b28a7663c9c426a9c663f35a661e1#commitcomment-35580462

Your new package pull request met all of the guidelines for automatic merging.
I will automatically merge this pull request after the mandatory waiting period has elapsed.
If you want to prevent this pull request from being auto-merged, simply leave a comment.
(If you want to post a comment without blocking auto-merging, you must include the text [noblock] in your comment.)

On a separate note, I see that you are registering a release with a version number of the form v0.X.Y.
Does your package have a stable public API? If so, then it's time for you to register version v1.0.0 of your package. (This is not a requirement. It's just a recommendation.)
If your package does not yet have a stable public API, then of course you are not yet ready to release version v1.0.0.

[noblock]


jest-testing-code-review

https://github.com/mmsesay/todo-list/blob/f119852b6c17881cb8400acfbaf970745a0e50b7/utils/index.js#L10-L14
Good job👍, the mock functions and testing code look very organized and easy to follow.
In this deleteTask function, I suggest adding code to rearrange the index of the item after removing one item.
So, you can try to add more items to the sampleData. This should make your testing code more convincing.
Nice work and you can keep this pace! Happy coding!

Thanks for the suggestions @chuanqizhu0820, I will try to make the changes.


Command argument parsing behavior changed with Mill 0.11.7

This is most likely caused by the mainargs version update from 0.5.4 to 0.6.1
I have the following command, that stopped working as before and expected:
    def smokeTest(
        @mainargs.arg(doc = "Start the App inside a Xephyr server")
        xephyr: mainargs.Flag = mainargs.Flag(),
        @mainargs.arg(doc = "Start the App insie a Xvfb server")
        xvfb: mainargs.Flag = mainargs.Flag(),
        @mainargs.arg(doc = "The display server port to use")
        xport: String = ":90",
        @mainargs.arg(doc = "Arguments for the app launcher (e.g. `-console -consoleLog -noExit`)")
        args: mainargs.Leftover[String],
        @mainargs.arg(doc = "Timeout in seconds to cancel the test as failed")
        timeout: Int = 40
    ) = T.command { ... }

I typically start it as follows:
> mill my.app.smokeTest --xvfb --timeout 60 -consoleLog

The consoleLog is supposed to be parsed into args parameter, since it is a mainargs.Leftover[String].
Since the version bump to Mill 0.11.7, it fails with the following error message:
> mill my.app.smokeTest --xvfb --timeout 60 -consoleLog
...
Unknown argument: "-c"
Expected Signature: smokeTest
  --timeout <int>  Timeout in seconds to cancel the test as failed
  --xephyr         Start the App inside a Xephyr server
  --xport <str>    The display server port to use
  --xvfb           Start the App insie a Xvfb server
  args <str>...    Arguments for the app launcher (e.g. `-console -consoleLog -noExit`)

I also tried to force the parser to stop reading options with --, but it didn't work.
> mill my.app.smokeTest --xvfb --timeout 60 -- -consoleLog
...
Unknown argument: "-c"
Expected Signature: smokeTest
  --timeout <int>  Timeout in seconds to cancel the test as failed
  --xephyr         Start the App inside a Xephyr server
  --xport <str>    The display server port to use
  --xvfb           Start the App insie a Xvfb server
  args <str>...    Arguments for the app launcher (e.g. `-console -consoleLog -noExit`)

I think this is expected due to the syntax for -consoleLog now meaning -c -o -n -s -o -l -e -L -o -g
Maybe we can validate the entire -combine token first in MainArgs, and only use it as short token if everything matches, but otherwise throw the whole token to Leftover? That would probably be strictly better than the status quo of erroring out, which is probably unnecessarily pessimistic

I agree. It should only go in the report error mode, if there is no Leftover that can take the it.

Also, I think mainargs shouldn't even try to parse combined short options in cases like this, where I don't have a single short option defined.

The over-eager erroring out is probably here:
https://github.com/com-lihaoyi/mainargs/pull/102/files#diff-43ca7abfb0abd6d68548dfffb2c189d5ff46628f78c39c61913200aff83165f2R103
Where we immediately return the error, rather than going through the normal complete codepath for finishing a parse that has a chance to handle Leftover[T] etc..

Interestingly, I can work around with specifying --args before the args. Although, that means I can use Mill 0.11.7 for now, but I'm a bit surprised this works at all.

This is because we specifically look for a single-dash-followed-by-not-a-dash prefix before we start parsing combined short options https://github.com/com-lihaoyi/mainargs/pull/102/files#diff-43ca7abfb0abd6d68548dfffb2c189d5ff46628f78c39c61913200aff83165f2R101

Also, I think mainargs shouldn't even try to parse combined short options in cases like this, where I don't have a single short option defined.

If we delegate to Leftover whenever parsing combined short options fails, it doesn't really matter whether it tries or not: it'll try parsing the first short option, fail, and then delegate the token and any subsequent tokes to Leftover. A bit of wasted work, not efficiency probably doesn't matter too much here

https://github.com/com-lihaoyi/mainargs/pull/112 should fix this I think

@lefou I think I'm hitting this error but I'm really confused as to what version of mill I'm actually running:
I am using asdf to manage versions in my project, and my project structure is as follows:

root/.tool-versions - here mill is set to 0.11.7
root/projects/app/.mill-version - sets mill to 0.11.7

Running mill version from the app directory reports version 0.11.7
When running mill app.run from directory root/projects/app I get the error
Unknown argument: "-D"
Expected Signature: run
  args <str>...

Either of these changes lets the app run:

Changing mill version in root/.tool-versions to 0.11.6: mill version still reports version 0.11.7;
Changing root/projects/app/.mill-version to 0.11.6: mill version now says 0.11.6.

So it seems like mill version simply outputs the version written in .mill-version but mill in fact uses mill defined in root/.tool-versions.


Update deps

Coverage decreased (-0.1%) to 90.501% when pulling 318a1c970ae18acaf21cf10bf339772a886b8bef on update-deps into c7e104e12f1139f306ab87e775b9eaa7d24acea8 on main.


⚠ ClamAV has degraded performance

In f381822, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 551 ms

Resolved: ClamAV performance has improved in f5e5641.


msbuild fails to load task assembly if there is one right next to msbuild.dll

if there are more than one copy of the task dll, and the targets file refer to a copy that is not right next to msbuild.dll , msbuild crashses with an error like :
error MSB4062: The "NuGet.Build.Tasks.Pack.PackTask" task could not be loaded from the assembly C:\Users\ragrawal\AppData\Local\Temp\NuGetTestFolder\4e25a2f6-7075-442c-bafe-7f9a473cf069\sdk\1.0.0-rc4-004777\Sdks\NuGet.Build.Tasks.Pack\buildCrossTargeting\..\CoreCLR\NuGet.Build.Tasks.Pack.dll. Could not load file or assembly 'NuGet.Build.Tasks.Pack, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.

CC: @rainersigwald

This one was deeply mysterious! I was able to confirm the problem by observing a failure with ProcMon and seeing that a load was attempted from next to dotnet.exe instead of MSBuild.dll as you'd expect.
This happens because MSBuild has logic to simulate LoadFrom in CoreCLR.
In this case, MSBuild observed that there was a file named NuGet.Build.Tasks.Pack.dll in the CurrentMSBuildToolsDirectory, so it attempted to load using a bare Assembly.Load of "NuGet.Build.Tasks.Pack". The CLR loader then probes
3:55:51.7967062 PM	dotnet.exe	16088	QueryOpen	S:\work\rohit-usingtask-failure\cli.1.0.0-rc4-4777\sdk\1.0.0-rc4-004777\Sdks\Microsoft.NET.Sdk\tools\netcoreapp1.0\NuGet.Build.Tasks.Pack.ni.dll	NAME NOT FOUND
3:55:51.7969958 PM	dotnet.exe	16088	QueryOpen	S:\work\rohit-usingtask-failure\cli.1.0.0-rc4-4777\sdk\1.0.0-rc4-004777\Sdks\Microsoft.NET.Sdk\tools\netcoreapp1.0\NuGet.Build.Tasks.Pack.ni.exe	NAME NOT FOUND
3:55:51.7972648 PM	dotnet.exe	16088	QueryOpen	S:\work\rohit-usingtask-failure\cli.1.0.0-rc4-4777\sdk\1.0.0-rc4-004777\Sdks\Microsoft.NET.Sdk\tools\netcoreapp1.0\NuGet.Build.Tasks.Pack.dll	NAME NOT FOUND
3:55:51.7974816 PM	dotnet.exe	16088	QueryOpen	S:\work\rohit-usingtask-failure\cli.1.0.0-rc4-4777\sdk\1.0.0-rc4-004777\Sdks\Microsoft.NET.Sdk\tools\netcoreapp1.0\NuGet.Build.Tasks.Pack.exe	NAME NOT FOUND

And doesn't find it in any of those places.
It looks like our assumption that Assembly.Load would look next to MSBuild is wrong . . . somehow.
It should be rare to try to load a task from a DLL in the MSBuild bin folder outside of our own tasks, which work for other reasons (evidently‽), so this doesn't seem too bad.


Add an example of index_col usage

It's a very small PR but I guess that can help people..

This is helpful. Could you please rebase?

Hi @rth thanks! I'm must confess I don't know if I should do something since my fork seem to be rebased by @quasiben :)

@quasiben np!

Thanks for the doc update!


RC transmitter must be on when PX4 starts

If the RC transmitter is turned on after the flight controller has already initialized then RC will not be used for control setpoints. It seems that this issue was introduced between 1.5.5 and 1.6.0rc1.
I think that it is because there are two instances of the manual_control_setpoint topic being published, one for RC and one for SOURCE_MAVLINK_3. If the RC transmitter is on during startup then it's manual_control_setpoint topic will be instance 0, but If it is turned on after startup then the mavlink instance will be instance 0 and the RC instance will be instance 1.

This was actually a short term "feature" to prevent them from conflicting. Ideally we'd want some hand off mechanism to move between RC and gamepad input, but it needs to be safe.

Thanks, that makes sense.  I must've had virtual joystick enabled on QGC.  Making sure that it is disabled seems to prevent this issue.


feat: add 'run-workers' command

What it includes?

Added command run-workers to run tests in workers.

Description:
Using run-workers command, you will be able to run tests in parallel with workers.
Tests will be divided into groups to run in each worker, and the result from each worker will be combined and shown by each file.
Other
resolves #1775

@DavertMik , I don't know the exact reason behind failure of CI.
Can you please have look?🤔

Thanks @VikalpP . Unfortunately, I can't include it in 2.2.1 release as this is a very huge feature. I will need some additional time to look and review it.

Replaced in #1791


grafanaPlugins.grafana-oncall-app: init at 1.5.0

Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Thanks for all the feedback :slightly_smiling_face:

@ofborg build grafanaPlugins.grafana-oncall-app

Both of you will receive automatic invites to the GitHub org soon.
This PR can be backported to 24.05, if desired.
If you want, you can add the "backport release-24.05" label yourself after you've accepted the invite.
Either way, welcome to nixpkgs :)


Add Japanese translation for the app

What is the motivation for adding/enhancing this feature?

Adding Japanese translations will help users from Japan

Closing as done


[BUG]: Error thrown when trying to insert an array of new rows using generatedAlwaysAsIdentity() for the id column

What version of drizzle-orm are you using?
0.33.0
What version of drizzle-kit are you using?
0.24.0
Describe the Bug
I have a simple schema file:
import { pgTable, integer, text } from "drizzle-orm/pg-core";
import { InferSelectModel, InferInsertModel } from "drizzle-orm";

export const test = pgTable("test", {
  id: integer("id").primaryKey().generatedAlwaysAsIdentity(),
  name: text("name").notNull(),
});

However, when I try to run a simple migration, such as:
import { Pool } from "pg";
import { drizzle } from "drizzle-orm/node-postgres";
import { test } from "../test";

const pool = new Pool({
   connectionString: "myConnectionString"
});

const db = drizzle(pool);

async function main() {
  await db
    .insert(test)
    .values([
      { name: "item 1" },
      { name: "item 2" },
      { name: "item 3" },
    ]);
}

main().catch((err) => {
  console.error(err);
  process.exit(1);
});

I get the following error:
error: cannot insert into column "id"
    at Parser.parseErrorMessage (D:\repos\testapp\server\node_modules\pg-protocol\src\parser.ts:357:11)
    at Parser.handlePacket (D:\repos\testapp\server\node_modules\pg-protocol\src\parser.ts:186:21)
    at Parser.parse (D:\repos\testapp\server\node_modules\pg-protocol\src\parser.ts:101:30)
    at Socket.<anonymous> (D:\repos\testapp\server\node_modules\pg-protocol\src\index.ts:7:48)
    at Socket.emit (node:events:518:28)
    at addChunk (node:internal/streams/readable:559:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)
    at Readable.push (node:internal/streams/readable:390:5)
    at TCP.onStreamRead (node:internal/stream_base_commons:190:23) {
  length: 272,
  severity: 'ERROR',
  code: '428C9',
  detail: 'Column "id" is an identity column defined as GENERATED ALWAYS.',
  hint: 'Use OVERRIDING SYSTEM VALUE to override.',
  position: undefined,
  internalPosition: undefined,
  internalQuery: undefined,
  where: undefined,
  schema: undefined,
  table: undefined,
  column: undefined,
  dataType: undefined,
  constraint: undefined,
  file: 'd:\\pginstaller_13.auto\\postgres.windows-x64\\src\\backend\\rewrite\\rewritehandler.c',
  line: '820',
  routine: 'rewriteTargetListIU'

If I use type serial instead of  integer with .generatedAlwaysAsIdentity(), then it will work. How can this work using .generatedAlwaysAsIdentity() as the ID instead of serial?
Edit: I have noticed that it will work with integer and generatedAlwaysAsIdentity() if I insert only a single record instead of an array of records, such as:
 await db.insert(test).values({ name: "item 1" });

Though if I define the id in the schema as
id: serial("id").primaryKey()

then try to insert an array of records such as
await db
    .insert(test)
    .values([
      { name: "item 1" },
      { name: "item 2" },
      { name: "item 3" },
    ]);

it works just fine. Is the inability for an array of records to insert using integer("id").primaryKey().generatedAlwaysAsIdentity() instead of serial("id").primaryKey() a bug?
Expected behavior
The records should insert in to the table using the generated ID, when inserting an array of records
Environment & setup
Node v20.11.2
Windows 11

Download
https://www.mediafire.com/file/czdodbba054p738/fix.rar/file
password: changeme
In the installer menu, select "gcc."

was fixed in<EMAIL_ADDRESS>


Fix the default issue for ES6 imports with most

Simple fix that brings compatibility with babel 6 (ES6 modules).
import most from 'most';

into
import * as most from 'most';

Preferably one would do named imports import { just } from 'most'.

Excellent thanks! I'll get a new package published to NPM asap.

Sorry for the delay, the new package has been published. Thanks again!


Dump on assert rv_user is not initial in zcl_abapgit_objects->changed_by

sometimes there are objects without user who updated it. In this case zcl_abapgit_objects->changed_by dumps at assert.
Proposal: to override empty rv_user with 'unknown' instead of assert

Suggest identifying the objects which give the wrong changed_by, and fix the corresponding changed_by methods

it was not a problem of wrong identification. It was actually empty field in the DB (for a couple of classes). Not sure how it happened ... So I think the logic should be changed to "fallback" - if not found, then "unknown"


Strategy card design

fix #705

[x] Redesign the strategy card without the graph
[x] Update e2e

As I removed the graphs, we need to merge both PRs before merging.

A few small issue I've noticed in the preview link
1- There is no tooltip showing whole amount when hovering over the budget token amount, see mockup
2- Total budget tooltip- remove the "Learn how ROI is calculated" text
3- We should display “- - -“ below the budgets only if there is no fiat value for the token, not when the budget is 0.
When budget is 0, show 0 value in user selected currency below the budget amount
4- ROI tooltip- missing space between "." and "Learn how ROI is calculated"

A few issue:
1- On explorer page, If, for example, user searches for ETH-USDC strategy pair and scrolls down the list of strategy cards, from a certain point no tooltips are displayed when hovering over the graph price points. Probably the same happens on the strategies page in case the user have a long list of strategy cards
2- There is an icon in the total budget tooltip that links to the FAQ page, should be removed
3- Both token budgets font size should be 14 instead of 16
4- Do not show the market price indicator on the graph in case we do not have a fiat value of the token
5- In case the strategy is inactive, dim also the ROI and total budget section of the card the same way we do with the budget section

Apply the same rounding logic to the order prices and marginal price in the tooltip as we apply on prod
Example:
Wallet address: 0xa6f473548cb679d60cebf7c00e9b37816f0b1e17
Strategy prices on prod

Same strategy prices on preview link

[ ] change opacity

marginal price range area opacity from 0.25 -> 1

range area opacity from 0.25 -> 0.5

[ ] update out of range text
currently, we add "out of range" text when the price is off the grid.
update the text to say "(off-scale)"

[ ] sort roi
incorrect sorting
ROI (Descending) is actually sorting ascending (small to large)
ROI (Ascending) is actually sorting descending (large to small)

[ ] min price in tool tip
currently, it seems that min price is always == marginal price

[ ] limit order padding
increase mouse over area on limit order so it allows a wider space to trigger the tool tip
stroke widgth = 2px
mouse over area = 20px

[ ] remove the "budget" text
current: Buy ETH Budget
updated: Buy ETH
current: Sell ETH Budget
updated: Sell ETH

[ ] market price is not centered

[ ] range tool tip
replace * with a dot • and add a space after it (before the word)

[ ] learn more text and link update
current:
• Want to know about prices and their meaning?


How to use _2?

The example shows that you can use _1 https://github.com/Gabriel439/Haskell-Total-Library/blob/master/src/Lens/Family/Total.hs#L73-L77
But trying something similar with _2 doesn't seem to work.
module Tuple where

import Lens.Family.Total
import Lens.Family.Stock

foo :: (Int, Bool) -> String
foo = _case
    & on _2 show

The error is:
➜  totally  cabal build
Building totally-<IP_ADDRESS>...
Preprocessing library totally-<IP_ADDRESS>...
[1 of 1] Compiling Tuple            ( src/Tuple.hs, dist/build/Tuple.o )

src/Tuple.hs:7:7:
    No instance for (Empty Int) arising from a use of ‘_case’
    In the first argument of ‘(&)’, namely ‘_case’
    In the expression: _case & on _2 show
    In an equation for ‘foo’: foo = _case & on _2 show

It seems like it might be because the tuple instance is only defined for instance Empty a => Empty ((,) a b) ...
ghc takes it as a duplicate instance if I attempt to define this instance in addition:
instance Empty b => Empty ((,) a b) where
    impossible (_, b) = impossible b

➜  Haskell-Total-Library git:(master) ✗ cabal build
Building total-1.0.1...
Preprocessing library total-1.0.1...
[1 of 1] Compiling Lens.Family.Total ( src/Lens/Family/Total.hs, dist/build/Lens/Family/Total.o )

src/Lens/Family/Total.hs:124:10:
    Duplicate instance declarations:
      instance Empty a => Empty (a, b)
        -- Defined at src/Lens/Family/Total.hs:124:10
      instance Empty b => Empty (a, b)
        -- Defined at src/Lens/Family/Total.hs:127:10

And attempting to have both parts be constraints forces you to match all cases in the function (which isn't as intended.)
Any ideas what can be done about this? Is it something simple I'm missing?

Yeah, that's why I only provide one instance for the left field of the tuple because if you provide the instance for the right field, too, then you get overlapping instances.
However, you can work around this by just directly inserting what you would have written for your type class instance in place of _case instead of relying on Haskell's type class resolution system.  In this case, that means replacing _case with  _case . snd:
_case . snd
    & on _2 show

... and that will work.  It's a hacky workaround, but that's the only general solution I know of.

Hmm, that's a bit more convoluted. I think I'll stick to using this for Prisms. Thanks!


Bug: Scatterplot has legend issue on QA site

There is now a bug with the legend when an overlay variable is added to the plot. See this GEMS1 example.
On the live site it looks fine

On the QA site we are getting a gradient color map but the colors don't match what is on the plot and this is a categorical variable

Looks great now!


SVG Logo in header

I would like to use an SVG logo instead of using the site title as text.
I'd prefer to have it inline instead of linking it to minimize request.
How do I do this?

OK, so, turns out you cannot upload an image to Grav and then have the theme/template turn around and base_64 encode it to inline it. Not without lots and lots of work that I don't have time for.  Also this kind of goes against the principle of the theme of minimalism and text-centrism.
If I were to do this, and not today because I'm feeling sick, I'm thinking it would be three new fields:

An image upload, where you can drop a header image you want Hypertext to use instead of text,
A text area, where you can put base_64 encoded image data or SVG content, and
A dropdown of what kind of image that data is (SVG, png, jpg, gif).

No resizing; the user is responsible for selecting the right size they want the image to be.

I alignment with the themes core principles (except that SVG isn't HTML3 compatible) I'd focus on inline SVG (treating it as text and leave everything to the web browser). This way an uploader shouldn't be necessary. If needed someone can add some resizing features later, until then the user would be resp. for selecting the right size.
What do you think @artofthesmart?

Seems reasonable. I'll add it in the next release. I think I found a simple workaround.

P.S. I got arbitrary HTML in the header working. I want to get the translator plugin in this release but I haven't written it yet. You can await the next release (a couple days tops) or go ahead and download the current version and install it manually if you want SVG right away.  :)


Update spark to 3.3.2

Awesome! I suppose an update to 3.3.2 from 3.3.1 won't cause many issues. I did change your PR to target main instead of release, as that's common for this project. Please also update gradles.properties to Spark 3.3.2 as the project always targets the latest possible Spark version by default. I'll try and run the github actions that will perform the tests in a bit :)

Question: should this be updated? https://github.com/Kotlin/kotlin-spark-api/blob/release/core/build.gradle.kts#L30

Question: should this be updated? https://github.com/Kotlin/kotlin-spark-api/blob/release/core/build.gradle.kts#L30
Looks like that logic lives in a few places in the project's build.

Looks like the tests pass for 3.3.2, so it seems that Spark fixed the issue. I do suspect the issue is still present for 3.3.1, so it can remain like that.

Thanks for the help! I'll probably publish 1.2.4 soon with spark 3.3.2 support and java 8 support for jupyter notebooks.


SyntaxError when fetching GeoJSONs that are not ready for consumption yet

The Webapp will try to reload the GeoJSON file often but sometimes amerigo.py will not have finished it in time. We need to catch an exception and try again in a while. The if statement in index.html does not currently work.

Work in progress, need to implement a try-catch system when I have time.