Request for English Documentation and Conversations.

Request for English Documentation and Conversations
Introduction
Hello Hyperf team,
I hope this message finds you well. Firstly, I would like to express my appreciation for the great work you've done with the Hyperf framework. It has proven to be a valuable tool for many developers.
Request
I am writing to kindly request that the project consider providing English documentation and translations for conversations, discussions, and announcements. As an international developer, while I find the project incredibly useful, the language barrier presents a challenge in fully understanding the documentation and participating in discussions.
Benefits
Having English documentation and conversations would open up the project to a broader international audience, attract more contributors, and make it easier for developers from different parts of the world to collaborate effectively.
Closing
Thank you for considering this request. I believe that making Hyperf more accessible to a global audience will contribute to its continued success.

https://hyperf.wiki/3.1/#/en/contribute


Fixing localization issues.

Fixing localization issues.

Coverage remained the same at 56.865% when pulling 8d8c9faf5d1743bbeff2d4f8591658e5df1f5645 on fernandaagr:master into 47a691ec091e99c913b76d7ac15ca4a5dfabec98 on codecombat:master.


Handle empty clipboard or non-text under Windows

On a newly booted Windows machine clipboard will be empty (or if clipboard explicitly cleared).
Test case:
#!/usr/bin/env python

import os
import sys

import win32clipboard
import win32con

import xerox

win32clipboard.OpenClipboard()
x = win32clipboard.EmptyClipboard()
# next get will raise; TypeError: Specified clipboard format is not available
win32clipboard.CloseClipboard()
print type(x)
print repr(x)
print '-' * 65

x = xerox.paste()
print type(x)
print repr(x)

@kennethreitz have you had chance to review this? This resolves a crash. Thanks!

@adityarathod looks like you are the new maintainer for Xerox? This PR addresses a crash on Windows which I believe is mergable without conflict.
I have another feature branch with HTML (Windows only) support if that's of interest :) My main branch is https://github.com/clach04/xerox which has all my changes.


fancy zone editor crashing

Microsoft PowerToys version
0.37.2
Running as admin

[X] Yes

Area(s) with issue?
FancyZones Editor
Steps to reproduce
click on launch editor
FZEditorCrashLog.txt
✔ Expected Behavior
to edit fancyzones
❌ Actual Behavior
crashes
Other Software
No response

Tracked against #11565


[fixes #3901] fix mis typed variable names in badLocalDependency()

fixes #3901
I fixed the mistyped variable names.
I also used requiredVersion to follow the pattern in incompatibleLocalSails()

@Hiro-Nakamura thank you!


Create DoFnInvoker instances in the package of the invoked DoFn

Be sure to do all of the following to help us incorporate your contribution
quickly and easily:

[ ] Make sure the PR title is formatted like:
[BEAM-<Jira issue #>] Description of pull request
[ ] Make sure tests pass via mvn clean verify. (Even better, enable
Travis-CI on your fork and ensure the whole test matrix passes).
[ ] Replace <Jira issue #> in the title with the actual Jira issue
number, if there is one.
[ ] If this contribution is large, please file an Apache
Individual Contributor License Agreement.

The DoFnInvoker implementation for a DoFn carries a field with the type of the invoked DoFn, and that type needs to be visible.
R: @bjchambers

[WARNING] /home/jenkins/jenkins-slave/workspace/beam_PreCommit_MavenVerify/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/DoFnReflectorTest.java:[415,70] static method should be qualified by type name, org.apache.beam.sdk.transforms.dofnreflector.DoFnReflectorTestHelper, instead of by an expression

LGTM when green (see warning become error mentioned above).


DynamicSelectModule problem display when multiple is at false

Hi i've got a problem with primeng ui and the dropdown.
When i remove the multiple option or i put it to false :
new DynamicSelectModel<string>(
        {
            id: "primeSelect",
            label: "Example Select",
            options: [
                {
                    label: "Option 1",
                    value: "option-1",
                },
                {
                    label: "Option 2",
                    value: "option-2"
                },
                {
                    label: "Option 3",
                    value: "option-3"
                }
            ]
        }
    )

the dropdown style width is fixed to 30px :

Which give me this example :

Is anyone have already had this problem because i don't seem to find it in the existing issues. Thanks !

@dimq Hi! I'm sorry, but I cannot verify this behavior in the Prime NG example.  Everything seems to be working fine there.
Anyone else experiencing this problem?


Document API requests

To be sure it is understandable by everyone we need a description of the API Request somewhere.
Dev on the app will need those details to implement them correctly

Dispo dans ce channel pour l'instant : https://discord.com/channels/1243967153590501437/1245835847069339648


Which Version Support MySql Connector to CREATE SCHEMA?

Which Version Support MySql Connector to CREATE SCHEMA?

It was added in version 328.
https://prestosql.io/docs/current/release/release-328.html#other-connector-changes
By the way, you can ask questions in community Slack.
https://prestosql.io/slack.html


Better semantic highlighting

This change is

Current dependencies on/for this PR:

main

PR #3744

PR #3745

PR #3746

PR #3747

PR #3748

PR #3749   👈

This comment was auto-generated by Graphite.


firestore-import throws TypeError exception

Expected behavior
firestore-import should upload the backup file to Firestore
Actual behavior
firestore-import throws a TypeError exception:
TypeError: Cannot read property 'projectId' of undefined TypeError: Cannot read property 'projectId' of undefined     at /home/bscholtz/.nvm/versions/node/v9.1.0/lib/node_modules/node-firestore-import-export/dist/bin/firestore-import.js:71:33     at <anonymous>
Steps to reproduce the behavior
Running firestore-export works, this indicates the credentials are set up correctly. When running firestore-import, the exception above is thrown.

By hard-coding the projectID as follows it works as expected:
File: firestore-import.js:71:33
// For some reason, Firestore, DocumentReference, and CollectionReference interfaces  // don't show a projectId property even though they do have them. // @todo: Remove any when that is fixed, or find the correct interface var projectID = 'my-project-id';

I know there were some issues with the export from Firebase handling the capitalization differently than the typescript interface. I thought that I had gotten around that by casting that as an "any". I'm hoping when I refactor this with the latest Firebase libraries that this will get resolved.

Thanks for the feedback @jloosli. Let me know if there's anything I can do to help.


fsync only called on segment closing

I was reading the ingestion path of tsdb and was talking to @gouthamve as I think fsync is only called on closing a segment (which happens on shutdown) or when rotating to a new segment (which happens when a segment is "full"). A segment is 128MB by default, so on unclean shutdown, I believe we may loose up to the most recent 128MB of data.
It looks like https://github.com/prometheus/tsdb/pull/332 added the new WAL, which is not being flushed at an interval, being part of the strategy to make:

It is safe for concurrent reads across different processes.

@gouthamve and I were thinking that instead of fsync'ing at an interval, we fsync in flushPage or directly at the end of log.
First of all, let's validate this and make sure we didn't miss something :slightly_smiling_face: . Otherwise let's make sure we fix this. (I'm actually on vacation, just happened to be reading the code for work unrelated reasons, so it's unlikely I will work on it this week, I'll be back next week)
@gouthamve @brian-brazil @codesome @cstyan @fabxc

FWIW:

https://lwn.net/Articles/752063/

“In short, PostgreSQL assumes that a successful call to fsync() indicates that all data written since the last successful call made it safely to persistent storage. But that is not what the kernel actually does. When a buffered I/O write fails due to a hardware-level error, filesystems will respond differently, but that behavior usually includes discarding the data in the affected pages and marking them as being clean. So a read of the blocks that were just written will likely return something other than the data that was written.“

https://danluu.com/file-consistency/

I'm aware of the problems with fsync, but not calling it at all is definitely worse :slightly_smiling_face: .

@gouthamve and I were thinking that instead of fsync'ing at an interval, we fsync in flushPage or directly at the end of log.

fsync is very expensive. Doing it per record or page will likely completely screw performance. Not even SQL databases do this in a normal configuration. For us, sustaining ingestion is more important than persistence (alerts).

Yes, periodic background fdatasync should be sensible. Not sure why it
didn't make it into the new WAL.
On Mon, 11 Feb 2019, 22:52 Frederic Branczyk<EMAIL_ADDRESS>wrote:

I'm aware of the problems with fsync, but not calling it at all is
definitely worse 🙂 .
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/prometheus/tsdb/issues/520#issuecomment-462509561,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEuA8gaq5FQkaxXLe3c2cRYYV_7MCR9Pks5vMeY2gaJpZM4a0xoP
.

That makes sense. Do you think periodic sync fsync/fdatasync could mess with live reading the write ahead log? If not, then I imagine (re-)introducing it in the new write ahead log shouldn't have too much of a performance penalty (of course has to be benchmarked). I agree that we don't haven't provide perfect durability, but 128Mb flushing seems a little large.

If we're doing that, why not rely on the kernel? It'll be doing it every 60s-ish by default.

I wasn't quite aware of the specifics of the linux kernel behavior in this regard, so did some quick research and found that dirty_expire_centisecs defines this, which defaults to every 30 seconds on most distros. I think I'd prefer though if we can say something along the lines of "durability is roughly on scrapes by default", in which case I would choose what we previously had as the default: 10 seconds (plus we could be more sure about this across platforms and kernel settings independent).

A segment is 128MB by default, so on unclean shutdown, I believe we may loose up to the most recent 128MB of data.

is this really true? my understanding (after a google crash course) is that the kernel does periodic fsync()(writebacks) in the background so no big data loss should be expected.

Do you think periodic async fsync/fdatasync could mess with live reading the write ahead log?

My understanding after reading this is that Once the page is flushed to disk it is cleared from the cache so any sequential reads will cause a new cache to be loaded from the disk which will probably slow down the live wal read.
@brancz have there been any reports for big data loss from the WAL file?
to me it sounds that unless we have some real big data loss reports we should leave all this to the kernel.

also this is a nice read on the topic https://medium.com/databasss/on-disk-io-part-1-flavours-of-io-8e1ace1de017

There haven't been reports of large dataloss, I was just reading the code and noticed this, and recalled that we used to do fsync on an interval. Your findings seem to match with the comments before yours. I still think the interval should be configured by Prometheus as just by a quick poll with people working around me there are different kernel settings between each Linux distro even, plus we can't monitor the fsync latency if we don't perform it, this seems like a rather important metric to have :slightly_smiling_face: .

once the page is flushed to disk it is cleared from the cache

This is not how it works at least on Linux. flushing page to disk marks it clean so it can be evicted from memory when system is under memory pressure, but it fsync itself  doesn't force eviction

@redbaron 	thanks for the clarification. This means that regular fsync shouldn't affect the live WAL reading.
btw @codesome 	just posted in the irc channel an article that is quite interesting.
https://medium.com/@valyala/wal-usage-looks-broken-in-modern-time-series-databases-b62a627ab704


Error importing VueExampleHighlight component from VueExample

"dependencies": {
    "vue": "^3.2.25"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^2.2.0",
    "@vuepress/bundler-vite": "^2.0.0-beta.37",
    "@vuepress/plugin-search": "^2.0.0-beta.37",
    "postcss": "^8.4.12",
    "postcss-calc": "^8.2.4",
    "postcss-inline-svg": "^5.0.0",
    "postcss-preset-env": "^7.4.3",
    "postcss-scss": "^4.0.3",
    "postcss-simple-vars": "^6.0.3",
    "rollup-plugin-copy": "^3.4.0",
    "sass": "^1.49.10",
    "style-dictionary": "^3.7.0",
    "typescript": "^4.5.4",
    "vite": "^2.8.0",
    "vue-tsc": "^0.29.8",
    "vuepress": "^2.0.0-beta.37",
    "vuepress-plugin-vue-example": "^2.0.1"
  },

[plugin:vite:import-analysis] Failed to resolve import "./VueExampleHighlight" from "node_modules/vuepress-plugin-vue-example/src/VueExample.vue". Does the file exist?
[/Users/victorneves/_mycode/yello-ui/node_modules/vuepress-plugin-vue-example/src/VueExample.vue:120:34]()
2  |  // SVG icons from // https://tablericons.com/
3  |  import { loadComponent, loadComponentAsString } from '@temp/loadComponent'
4  |  import VueExampleHighlight from './VueExampleHighlight'
   |                                   ^
5  |  import { markRaw } from 'vue'

Hello @victorlmneves I think this is an issue with the latest Vite version, can you post an example in a GitHub repo, Codesandbox or Stackblitz?

@kouts I received a reply but I don't see it here.
I'm going to replicate the issue on Stackblitz and then I'll share the link

Hello @victorlmneves, I've managed to reproduce the issue.
This issue happens because Vuepress 2 changed its default bundler to Vite.
vuepress-plugin-vue-example is designed to work with Webpack so this is why the compilation fails.
In order to use Webpack in Vuepress 2, you have to install vuepress-webpack@next instead of vuepress.
You can read more about it here.


[vim9class] enum_value->string() issues

Steps to reproduce
string(enum_value) no longer includes variable values.
Expected behaviour
@zzzyxwvut @yegappan
A class', and initially an enum's, default string() method provides useful
debug information by including instance variables in the string return.
If wanted it can be overridden to something more useful to the programmer.
In a recent change to enum classes, the default string() method now returns
something of the form "Planet.earth" rather than output something like a class.
I believe this change was made related to
class variables leak into "values".

in comment https://github.com/vim/vim/pull/14224#issuecomment-2023939547,
if values refers to an enum's static values, like list<Planet>,
then the statement doesn't make sense.
string(obj) has always included class variables.
The change to string(enum_value) removes some useful
functionality: the display of instance contents. It also diverges enum from class.
There is also, in https://github.com/vim/vim/pull/14224#issuecomment-2023172587
Suppose I want to store enumeration values as dictionary
keys, and use string() for them. How can I later undo
that conversion, as I get E121 with eval(string(Foo.BAR))?

I didn't fully understand this on first read. Looking again, it seems that
the idea is to be able to use both "Planet.earth" and "Count.ONE" as keys
in a dict and reconstruct the original enum value using eval(key).
The change to enum's string() also handles this, but breaks expected
usage of string() for a class.
Here's a suggestion to facilitate constructing a dict key for an enum.
Add an instance variable class_name to an enum value. Then the developer
can do
    var e = Planet.earth
    some_dict[e.class_name .. '.' .. e.name] = something

A similar possibility would be adding a builtin method/var AsKey()/as_key
to the enum instance; then e.as_key->split('.')[0] is Planet.
Note that any of these changes to string() for specific purposes, like generating
a dict key, seems to interfere/conflict with the idea of being able to override string()a.
If class_name isn't needed/wanted, then consider something specific to enums.
Version of Vim
9.1.225
Environment
ubuntu/gtk
Logs and stack traces
No response

For regular objects, the string() function returns the instance variables and their values.  You cannot use eval() to convert the returned string back to the corresponding object.  This is different from the return value of other composite objects like Lists and Dicts.  I am thinking whether to align the return value of enum to be like Lists and Dicts (current behavior) or to align it with the return value for regular objects.  I agree with your suggestions.  I will create a PR to change the return value of string() for enums to be similar to that of regular objects and introduce a new enum_name instance variable.

I will create a PR to change the return value of string() for enums to be
similar to that of regular objects and introduce a new enum_name instance
variable.

Do we really need enum_name?  Can't we bring back what
string(Foo.BAR) used to produce (i.e. debug information)
so it can be aligned, if desired, to what some string(obj)
would produce?  E.g.:
object of Count {count: 1, name: 'one'}
enum Count.ONE {ordinal: 0, name: 'ONE'}

And when there is need to make it terse for key lookups,
have string() overridden (:help builtin-object-methods)?
I did mention dictionary keys as an example, but there was
no suggestion to change textual representation for :enums.
And when I saw the change, it clicked, okay, its shortness
and uniqueness should fare well for key lookups so there is
no point in overriding string().
But can we keep the current ability of eval(string(Foo.BAR))
intact and provide similar deserialisation for objects with
eval(string(obj))?

@errael, you need several pre-feature-merge Vim builds to
see the ‘leaky’ problem.  If you source the linked example,
these lines are echoed:
(without this.name):
16: enum Count.ONE {ordinal: 0, zero: 0}
16: enum Count.TWO {ordinal: 1, zero: 0}

(with this.name (pay attention to v:numbermax)):
16: enum Count.ONE {name: ONE, ordinal: 0, zero: 0}
16: enum Count.TWO {name: TWO, ordinal: 1, zero: 0}
 0:<PHONE_NUMBER>854775807

(with eval(string(Foo.BAR)) (v9.1.0219)):
16: Count.ONE
16: Count.TWO

I will create a PR to change the return value of string() for enums to be
similar to that of regular objects and introduce a new enum_name instance
variable.

Do we really need enum_name?
...
And when there is need to make it terse for key lookups, have string() overridden (:help builtin-object-methods)?
But can we keep the current ability of eval(string(Foo.BAR)) intact

AFAICT, it's been possible to override string() for a while so as long as eval("Foo.BAR") works there's no problem.
Personally, I don't like overriding string() to create a key. string() has a variety of uses and creating a key for an enum seems a common thing to do, so there would be interference. So I would probably do something like
vim9script

var d: dict<any>

enum Planet
    earth
    const as_key = 'Planet.' .. this.name
endenum

var x = Planet.earth
d[x.as_key] = 17
echo d

which is not much more work than doing
    const as_key = this.enum_name .. '.' .. this.name

The main difference being that if you change the name of the enum, you don't have to remember to change the as_key initialization. I haven't considered enough if there are other uses of the enum name, such that I'd end up creating that manually. It is a convenience that can be generally/manually provided like an interface, not required, for example
vim9script

interface ClassName
    var class_name: string
endinterface

enum Planet implements ClassName
    earth
    const class_name = "Planet"
endenum

echo Planet.earth.class_name

Since it comes from an interface, there's an easy test to see if it's available.
In Java you can do e.getClass().getName(), not sure about other languages.

and provide similar deserialisation for objects with eval(string(obj))?

IIUC, by this you mean recovering the original object from a string. I think this would require additional support from vim builtins, like obj->as_string() where as string returns something like "C#uniq_id" where "C" is the class name and uniq_id is it's address (can't use address if it might move after a grow). And there needs to be a string->as_object() for going the other way.
I'm about to post something about cloning an object that seems loosely related.

you need several pre-feature-merge Vim builds to
see the ‘leaky’ problem.

Thanks, I missed the word "class" in your description "class variables leak".

Do you know what would happen to keys of a dictionary for
which enumeration values, wrapped in a string, are used,
after permitted changes have been made to some of these
values?

This is the same thing that happens if you try to use a regular class object as a dict index.

IIUC, by this you mean recovering the original object from a string.

But nothing beyond what is currently possible for lists,
dictionaries, and enumerations, and within the current Vim
process.
vim9script

const list: list<number> = range(4)
const list_s: string = string(list)
echo (eval(list_s) == list) (eval(list_s) is list)

const dict: dict<blob> = {a: 0z0a, b: 0z0b}
const dict_s: string = string(dict)
echo (eval(dict_s) == dict) (eval(dict_s) is dict)

enum Count
    ONE, TWO
endenum

const enum_one_s: string = string(Count.ONE)
echo (eval(enum_one_s) == Count.ONE) (eval(enum_one_s) is Count.ONE)

class Unity
    const one: number = 1
endclass

const class_one = Unity.new()
const class_one_s: string = string(class_one)
# E121
echo (eval(class_one_s) == class_one) echo (eval(class_one_s) is class_one)

IIUC, by this you mean recovering the original object from a string.

But nothing beyond what is currently possible for lists

I specifically meant recovering the "original" object. As you show, is is false, recovering the original object is beyond what is currently possible. (with enums you always get the original object).
If you don't care about recovering the original object, only something that is ==, that could be done by implementing a clone function on your object. For example,
vim9script

class C
    var x: number
    def Clone(): C
        return C.new(this.x)
    enddef
endclass

var o1 = C.new(17)
echo o1
var o2 = o1.Clone()
echo o2
echo o1 == o2

outputs
object of C {x: 17}
object of C {x: 17}
true

If you really want eval(string(obj)) to work, eval would have to take some arbitrary string and decide if it looks like the output of some random string(obj) output and create an object from that; that seems unreasonable (if not impossible) and beyond what eval() does. Still looks like a new builtin, obj_from_string(string(obj)), makes more sense; and make sure you don't override string().

enums to be similar to that of regular objects and introduce a new enum_name instance variable

If you want to implement a clone technique using eval(), it's tricky since eval doesn't have function context. And if there's some generality, you could want the name of the class that the object is an instance of. So something like like class_name could be handy, not sure why you'd want class_name and enum_name both.

dict key for class/enum should contain <SID>
I wasn't thinking about dict keys in the entirety of the issue.
Note: these issues apply to both class object and enum value used as a dict key.
Want the dict key unique, meaning is not ==.
If there's a file /tmp/planets with
vim9script

export enum Planet
    earth
endenum

And this file is imported in
vim9script

import '/tmp/planets.vim'

enum Planet
    earth
endenum

echo planets.Planet.earth
echo Planet.earth

There return from string() may change, but the above points out the issue.
The following code is to explore how an object/value can be used as a key. This seems like it would work. And using the '' might also facilitate recovering the object/value. Something similar works for an enums value.
vim9script

# Return something uniq per object in a class.
def GetUniqId(obj: any): string
    return '17'
enddef

class MyClass
    const object_id = GetUniqId(this)
    const class_name = expand('<SID>') .. 'MyClass'
    const as_key = this.class_name .. '@' .. this.object_id
endclass

var o = MyClass.new()
echo o.as_key

outputs something like
<SNR>36_MyClass@17

With an enum GetUniqId(obj) could just be the enum name. For an object, not sure what works best. Could be a vim internal index into an array of object of given class.
The question is what class/enum constants used to uniquely identify an object/value should be automatically provided by vim.

Here's a hack for recovering the object from the key. It hides the original object in the dict value.
vim9script

interface HasAsKey
    var as_key: any
endinterface

def MyPut(arg_dict: dict<any>, key: HasAsKey, val: any)
    arg_dict[key.as_key] = [ key, val ]
enddef

def MyGet(arg_dict: dict<any>, key: HasAsKey): any
    return arg_dict[key.as_key][1]
enddef

def KeyToObj(arg_dict: dict<any>, key: HasAsKey): any
    return arg_dict[key.as_key][0]
enddef

class C implements HasAsKey
    static var _obj_id_count = 1
    final as_key: number
    def new()
        this.as_key = _obj_id_count
        _obj_id_count += 1
    enddef
endclass

var d: dict<any>

var o1 = C.new()
var o2 = C.new()

MyPut(d, o1, 'one')
MyPut(d, o2, 'two')

echo MyGet(d, o1)
echo MyGet(d, o2)

echo KeyToObj(d, o1)
echo KeyToObj(d, o2)

echo d->keys()
echo d

outputs
one
two
object of C {as_key: 1}
object of C {as_key: 2}
['1', '2']
{'1': [object of C {as_key: 1}, 'one'], '2': [object of C {as_key: 2}, 'two']}

Note, in https://github.com/vim/vim/issues/14330#issuecomment-2028345962, there an example that suggests a dict key that looks something like <SNR>36_MyClass@17 and a way to turn that back into an object; this needs some system support for generating the @17 unique_id and getting the object back.
There an additional issue that was missed. Since the key is simply a string, the key is not sufficient to prevent the original object from being garbage collected. So a scheme like the hack in https://github.com/vim/vim/issues/14330#issuecomment-2028442761 is required to prevent the object from being garbage collected.

As long as you take care of the keys, there are no problems.
The toy Set example below works in v9.1.0226 and v9.1.0233.
vim9script

############################################################

class Set
    final _elements: dict<number>
    const Mapper: func(number, string): any

    static def _Mapper(F: func(string): any): func(number, string): any
	return ((G: func(string): any) => (i: number, v: string): any =>
		G(v))(F)
    enddef

    def new()
	this._elements = {}
	this.Mapper = _Mapper((s: string): any => eval(s))
    enddef

    def newFromList(elements: list<any>,
				ToStringer: func(any): string,
				FromStringer: func(string): any)
	for element in elements
	    this._elements[ToStringer(element)] = 1
	endfor

	this.Mapper = _Mapper(FromStringer)
    enddef

    def Contains(element: string): bool
	return has_key(this._elements, element)
    enddef

    def Elements(): list<any>
	return keys(this._elements)->mapnew(this.Mapper)
    enddef

    def empty(): bool
	return empty(this._elements)
    enddef

    def len(): number
	return len(this._elements)
    enddef

    def string(): string
	return string(keys(this._elements))
    enddef
endclass

############################################################

interface Keyable
    def AsKey(): string
endinterface

enum Count implements Keyable
    ONE(10), TWO(11)

    var offset: number

    def new(offset: number)
	# Safe, enumerations are not extendable.
	this.SetOffset(offset)
    enddef

    def SetOffset(offset: number)
	this.offset = offset
    enddef

    def AsKey(): string
	return 'Count.' .. this.name
    enddef
endenum

############################################################

const counts: Set = Set.newFromList(
    Count.values,
    (c: Count): string => c.AsKey(),
    (s: string): Count => eval(s))
echo counts.len()
echo counts.empty()
echo counts.Contains(Count.ONE.AsKey())
echo counts.Contains(Count.TWO.AsKey())
echo counts.string()
echo string(counts.Elements())

const originals: list<Count> = deepcopy(Count.values, 1)

echo "Mutating Count.ONE ..."
Count.ONE.SetOffset(100)

for element in counts.Elements()
    if index(originals, element) < 0
	throw 'Illegal state'
    endif
endfor

echo counts.len()
echo counts.empty()
echo counts.Contains(Count.ONE.AsKey())
echo counts.Contains(Count.TWO.AsKey())
echo counts.string()
echo string(counts.Elements())

############################################################

const none: Set = Set.new()
echo none.len()
echo none.empty()
echo none.Contains(Count.ONE.AsKey())
echo none.Contains(Count.TWO.AsKey())
echo none.string()
echo string(none.Elements())

const sets: Set = Set.newFromList(
    [Set.new(), Set.new(), Set.new(), Set.new()],
    (c: any): string => string(c),
    (s: string): any => eval(s))
echo sets.len()
echo sets.empty()
echo sets.Contains(Count.ONE.AsKey())
echo sets.Contains(Count.TWO.AsKey())
echo sets.string()
echo string(sets.Elements())

const lists: Set = Set.newFromList(
    [[[[[]]]]],
    (c: any): string => string(c),
    (s: string): any => eval(s))
echo lists.len()
echo lists.empty()
echo lists.Contains(Count.ONE.AsKey())
echo lists.Contains(Count.TWO.AsKey())
echo lists.string()
echo string(lists.Elements())

Basic issue taken care of by https://github.com/vim/vim/commit/3cf121ed31f7a022e2ae6585391434d9c88e9792

As long as you take care of the keys, there are no problems.

I'd like vim to provide a general solution. It gets pretty messy when things are imported from other files. And much more complex if you want to index by a class.

Oops, made the comment to close (Basic issue taken...), but didn't close.

If you really want eval(string(obj)) to work, eval would have to take
some arbitrary string and decide if it looks like the output of some random
string(obj) output and create an object from that; that seems unreasonable
(if not impossible) and beyond what eval() does. Still looks like a new
builtin, obj_from_string(string(obj)), makes more sense; and make sure you
don't override string().

Let me, for the sake of argument, bounce around a trivial
alternative.  Can't we help eval() beforehand by passing
it a string whose content it can parse?  So, let's consider
a cooperation between string() (or any method whose return
type is string) and a defined for this task static factory
method whose return type is the type of obj (or its any
supertype) and whose sole parameter is any of eval()-
supported types, e.g. dictionary.  In string(), we can store
necessary for future instantiation variables as elements of
a said dictionary and convert it to a string; in our factory
method, we can take that dictionary as the passed argument
and construct a new object from its values.  In other words,
we resort to Foo.FromDict(eval(string({...}))) instead of
eval(string(obj)).
vim9script

class Pair
    var a: any
    var b: any

    def new(this.a, this.b)
    enddef

    def string(): string
	return string({a: this.a, b: this.b})
    enddef

    static def FromDict(dict: dict<any>): Pair	# Or any superclass.
	return Pair.new(get(dict, 'a', 0), get(dict, 'b', 0))
    enddef
endclass

const pair: Pair = Pair.new("alpha", "beta")
echo pair == Pair.FromDict(eval(string(pair)))

And we can have some luck with recursive types too:
vim9script

class Zero
    static const ZERO: Zero = Zero.new()

    def string(): string
	return string({})
    enddef
endclass

class Number extends Zero
    const next: Zero
    const value: number

    def new(this.next, this.value)
    enddef

    def string(): string
	return string({next: this.next, value: this.value})
    enddef

    static def FromDict(dict: dict<any>): Zero
	if empty(dict)
	    return Zero.ZERO
	endif

	var numbers: list<number> = []
	insert(numbers, get(dict, 'value', 0))
	var next: any = get(dict, 'next', 0)

	while type(next) == type({}) && !empty(next)
	    insert(numbers, get(next, 'value', 0))
	    next = get(next, 'next', 0)
	endwhile

	var number: Number = Number.new(Zero.ZERO, 1)

	for value in slice(numbers, 1)
	    number = Number.new(number, value)
	endfor

	return number
    enddef
endclass

var _0: Zero = Zero.ZERO
echo _0 == Number.FromDict(eval(string(_0)))

var _49: Number = Number.new(Zero.ZERO, 1)

for value in range(2, 49)	# E724 for 50 and greater (blob?).
    _49 = Number.new(_49, value)
endfor

echo _49 == Number.FromDict(eval(string(_49)))

This example seems to be about serialization; and AFAICT, it requires knowing the type of the object in order to de-serialize. It's also a support problem, needing to maintain the to/from code when the class is changed. Seems like this manual technique requires retrofitting into any class that is part of the hierarchy; and superclass source may be owned by someone else. It doesn't seem trivial. It does seem that the output of default string() could be parsed to get a dict as string; there might be some kind of semi-automatic mechanism to  be found.
Do you think there's a problem having/handling vim builtin to_obj/from_obj?
Seems there are several things to consider

== versus is
serializization (looking for ==)
recover object from dict index (looking for is)
using eval
fully automatic
interoperate with classes/objects from a library

Most importantly, at least to me, is using an object as a dict key. And I want to recover the original object, is not ==. So serialization isn't an option.
(I didn't look at the second example)

Any well-implemented support that would automate translation
to/from is more than welcome.  I have shared an approach fit
for our current state of support.
Let me clarify what I meant by ‘triviality’.  Implementing
it would not be trivial for string() when not only this is
an object but its instance variables are also objects whose
variables may also be objects, etc.  But it is ‘trivial’ in
the sense that you are spared from having to roll out your
own string parser -- piggyback on dictionaries and rely on
their checks for well-formedness for free.
Furthermore, judging by the output, values produced with
default string() implementations for dictionaries, objects,
and now enumerations look similar.  They seem to contain all
data necessary to create a copy with eval().  There can be
a problem for hypothetical eval() support for class objects
about what non-default constructor to invoke (invariants may
be imposed to reject invalid arguments).  Some cooperation
from class authors can be of help, e.g. if there is, say,
a conventionally named newDeserial() defined, use it; if
not, try a constructor having the most parameters.
As to is or ==, the support for is is out there, with
indirection.  Consider using for the object keys the name(s)
of variables (possibly keyed or indexed) that hold these
objects.  In the example below, I conveniently store objects
in another dictionary.
Copy adt.vim with a toy Set implementation (augmented).
File test.vim:
vim9script

# Generate A-Z Letter implementations and declare "g:abc_src".
source abc_gen.vim

execute 'import "' .. g:abc_src .. '" as abc'
import './adt.vim'

# Create a regular dictionary populated with object values to be used for keys
# elsewhere.  Give it a short-variable name for better key lookup.
const s: dict<abc.Letter> = abc.LETTERS
    ->reduce((d: dict<abc.Letter>, v: abc.Letter): dict<abc.Letter> =>
	extend({[v.AsString()]: v}, d),
	{})

# Create another dictionary, e.g. Set, and establish indirection by referring
# with each key to the object values of the first dictionary.
const set: adt.Set = adt.Set.newFromList(abc.LETTERS,
    (o: abc.Letter): string => 's.' .. o.AsString(),
    (t: string): abc.Letter => eval(t))

# Recover original objects from the dictionary keys.
for object in set.Elements()
    const name: string = object.AsString()
    echo s[name] (s[name] is object && object is abc.ABC.Get(name))
endfor

File abc_gen.vim:
vim9script

const head =<< END
vim9script

export interface Letter
    def AsString(): string
endinterface

enum None implements Letter
    NONE
    def AsString(): string
	return ""
    enddef
endenum

var abc: dict<Letter> = {}

enum Letters
    ABC
    def Get(letter: string): Letter
	return get(abc, letter, None.NONE)
    enddef
endenum

END

const src: string = tempname() .. '.vim'
writefile(head, src)

for A in map(range(65, 65 + 25), (_, v) => nr2char(v, 1))
    const a: string = tolower(A)
    const body =<< trim eval END
    class {A} implements Letter
	const {a}: string = '{a}'
	def new()
	    abc.{a} = this
	enddef
	def AsString(): string
	    return this.{a}
	enddef
    endclass

    abc.{a} = {A}.new()

    END

    writefile(body, src, 'a')
endfor

const tail =<< END
export const ABC: Letters = Letters.ABC
export const LETTERS: list<Letter> = sort(values(abc))
export const NONE: Letter = None.NONE
END

writefile(tail, src, 'a')
g:abc_src = src

Any well-implemented support that would automate translation
to/from is more than welcome.

I'm wondering if, as you've studied this issue, you've seen any issues that would create problems from doing to/from string with some vim support?
I've never done much with Java's serialization; I've seen that classes can intervene for some fixup and there's mechanisms for different versions of a class. I guess these issues are general and go beyond whether there's vim support.
It's not clear to me what use cases you have in mind.

Storage between program execution
send an object to another vim instance
other

Do you think there's a problem having/handling vim builtin to_obj/from_obj?

Any well-implemented support that would automate translation
to/from is more than welcome.

That is an encouragement to go for it when you really need
it.  As I mentioned above, my Vim needs are usually within
its process.  So if we had additional support from eval()
and {to,from}_obj, all the better.
When I want to save/restore, say, a Vim dictionary between
program instances, I would write it to a bespoke file in Vim
syntax and source the file on demand.  Nothing fancy.


uwp client cannot work again after restarting aar_xxxx service.

Please provide us with the following information:

This issue is for a: (mark with an x)
- [ x] bug report -> please search issues before submitting
- [ ] feature request
- [ ] documentation issue or request
- [ ] regression (a behavior that used to work and stopped in a new release)

Minimal steps to reproduce

step 1: launch the uwp client(csharp-uwp), speak "Contoso". It works well.
step 2: restart the aarsvc_xxxx in task manager.
step 3: speak "Contoso" again.
-> result: The uwp client will crash.

Any log messages given by the failure

'Contoso' signal detected in session event handler
61507468 Initializing audio from session
Changing agent state: [Inactive] -> [Detecting]
Connector recognizing: Contohso
DialogManager: Session start: F1D01079-1724-22D4-8A76-99567CE73393
DialogManager: error received: Error: WebSocket Upgrade failed with an authentication error (401). Please check for correct subscription key (or authorization token) and region name. SessionId: 90858e4f609d8364a809a6d6c1995771
Changing agent state: [Detecting] -> [Inactive]
DialogManager: Session stop: 90858e4f609d8364a809a6d6c1995771

cancel
Failsafe timer expired; rejecting
Changing agent state: [Inactive] -> [Inactive]
61528593 Initializing audio from session
Unable to acquire MVA 1st-pass audio. Rejecting signal.
-2147467259: Error HRESULT E_FAIL has been returned from a call to a COM component.
Changing agent state: [Inactive] -> [Inactive]
Expected/desired behavior

It should be work well even user restart aar service.

OS and Version?

Windows 7, 8 or 10. Linux (which distribution). macOS (Yosemite? El Capitan? Sierra?)
windows 10 19592.1001

Versions

19592.1001

Mention any other details that might be useful
There is an exception in StartConversationAsync method. The exception is System.Exception:“The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)”
Please help find out which reason causes this and how to fix it. Thanks!

Thanks! We'll be in touch soon.

Thanks @34985086 for reporting this! I'm following up with the relevant engineers and we will get back to soon.

Thanks for the filing this issue! As we discussed over email, adding resiliency against OS service restart is something we want the application to not have to worry about; that's why there isn't the extra code I shared present in the sample.
But there's clearly a good need to document this and I'll use this ticket to track that.


Add custom OOB timer per level scope

This PR on its own will not do anything, this is a feature support for mods or custom gamemodes that allows them to override the amount of time players can stay in the Out of Bounds areas.

Code looks good, could use some supporting documentation though? (Different PR)

Sure thing, telling about the utility of this won't be a hard task.


TypeError on Safari from /releases/yXSLJBpiFoTYkexaPhFknpU7/recaptcha__en.js

Issue description
I started seeing this error yesterday (from splunk logs), from a new (to my logs) version of recaptcha__en.js:TypeError: undefined is not an object (evaluating 'w.window[D[1]].Im[g]=n')
From this filename: https://www.gstatic.com/recaptcha/releases/yXSLJBpiFoTYkexaPhFknpU7/recaptcha__en.js
It began at 8am PST in small numbers and spiked at 5pm PST 2020-08-22.
edit it actually cropped up on 2020-08-21 as well, but only a few.  Maybe this was a test release?
First occurrence from: https://www.gstatic.com/recaptcha/releases/Nfb-D_IcV51Q9hgfCVkR2_FB/recaptcha__en.js
And in this version it was X.window[O[0]].Im[J]=g
Environment

google/recaptcha version: yXSLJBpiFoTYkexaPhFknpU7
These are the top userAgents logging the issue.  Mainly recent versions of Safari, but a bit of Chrome85.

25% - Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.2 Mobile/15E148 Safari/604.1
15% - Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1
6% - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15
5% - Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36
5% - Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.2 Mobile/15E148 Safari/604.1
2% - Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36
2% - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.2 Safari/605.1.15
Reproducing the issue
I unfortunately can't get the same version to show up in safari when I try it.  And in chrome if I force a redirect to that specific version, I can't get to a breakpoint on the line with the issue.  I'm hoping that your access to the non-minified code makes it possible to look at this error and immediately spot what's undefined, or that you can give me a hint otherwise.

Having similar errors

I having similar errors too, for me it it's happen for some user and for all browser
For chromium, error is
Uncaught TypeError: Cannot read property 'get' of undefined
    at Array.<anonymous> (recaptcha__en.js:formatted:2149)
    at recaptcha__en.js:formatted:5794

For firefox, the error message is difference
Uncaught TypeError: K is undefined
    B https://www.gstatic.com/recaptcha/releases/npGaewopg1UaB8CNtYfx-y1j/recaptcha__en.js:96
    l https://www.gstatic.com/recaptcha/releases/npGaewopg1UaB8CNtYfx-y1j/recaptcha__en.js:251
    start {my_website}/js/gg-recaptcha.js?v=ocbDaVYLtLn5U4sEPX_QlVIi9Bv4Bu-5GSHxwjSMDMY:84

For IE11
SCRIPT5007: Unable to get property 'get' of undefined or null reference
recaptcha__en.js (168,31)

I try CTRL + F5 for few times and this error is gone.


Add a bulk scorer for disjunctions that does dynamic pruning [LUCENE-9335]

Lucene often gets benchmarked against other engines, e.g. against Tantivy and PISA at https://tantivy-search.github.io/bench/ or against research prototypes in Table 1 of https://cs.uwaterloo.ca/\~jimmylin/publications/Grand_etal_ECIR2020_preprint.pdf. Given that top-level disjunctions of term queries are commonly used for benchmarking, it would be nice to optimize this case a bit more, I suspect that we could make fewer per-document decisions by implementing a BulkScorer instead of a Scorer.

Migrated from LUCENE-9335 by Adrien Grand (@jpountz), updated May 23 2021
Attachments: JFR result for BMM scorer with optimizations May 22.png, MSMarcoPassages.java, wikimedium.10M.nostopwords.tasks, wikimedium.10M.nostopwords.tasks.5OrMeds
Pull requests: https://github.com/apache/lucene/pull/81, https://github.com/apache/lucene/pull/101, https://github.com/apache/lucene/pull/113

Implemented.


Question about training

Thanks for the previous response,I have found the process.sh and run it .
But it also have the error about :
KeyError: 'bg_object_segmentation' & AttributeError: 'Instances' object has no attribute 'pred_boxes'.
And when I use original pascal voc 2012 to training. It have the same error about :
AttributeError: 'Instances' object has no attribute 'pred_boxes' && AttributeError: 'Instances' object has no attribute 'gt_boxes'.
I have been resolved it

how？I have the same question


Using predictable/constant cryptographic key when creating and verifing Json Web Token.

Hi, we are a research group to help developers build secure applications. We designed a cryptographic misuse detector on Java language. We found your great public repository (i.e., lamp-cloud) from Github, and several security issues detected by our detector are shown in the following. The specific security issues we found are as follows:
(1) Location: lamp-core-3.7.0 Package: top.tangyh.basic.context Class: ContextConstant.class
Security issue: Using predictable/constant cryptographic key when creating and verifing Json Web Token.
(2) Location: lamp-util-3.7.0 Package: top.tangyh.basic.jwt.utils
Class: JwtUtil.class
Security issue: Using predictable/constant cryptographic key when creating and verifing Json Web Token.

https://github.com/zuihou/lamp-util/commit/7f9416593e257234048b110036d8e6c40da0375c


:robot: Run zfs test in self-hosted

Github runners are running out of space

What this PR does / why we need it:
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #

zfs test passed, merging


Very low performance without worker mode in docker

What happened?
I did a few performance comparisons in requests per second with a basic Laravel skeleton. I tested Nginx + PHP-FPM, FrankenPHP worker(octane), Swoole(octane), and FrankenPHP(not worker mode).
FrankenPHP worker mode is 4,59 %  faster than Nginx + PHP-FPM, so very similar, while the performance for static files is 69,57% lower.
FrankenPHP without worker mode is very slow at just ~1 % of the RPS I get with Nginx + PHP-FPM. Despite the low performance, it is still using many cores, so it is spending time doing something.
I would expect Laravel Octane with FrankenPHP to be closer to Swoole, and I would expect the non worker docker run to be much faster.
Additionally I tried embedding the Laravel app following the steps in the docs. Performance was slightly better but still terrible, and when the benchmark was done it crashed with a segfault.
Results

Stack
RPS
Percentage Difference

Nginx + PHP-FPM
14 639,20
-39,93 %

FrankenPHP Worker
15 425,75
-36,71 %

Swoole
24 372,82
0,00 % (Baseline)

FrankenPHP, non-worker
281,77
-98,84 %

Stack
Static RPS
Percentage Difference

Nginx + PHP-FPM
403 230
0.00 % (Baseline)

FrankenPHP Worker
122 699
-39,57 %

Swoole
173 383
-57,00 %

FrankenPHP, non-worker
34 173
-91,52 %

Method
The non-worker mode test of FrankenPHP used docker with host networking to reduce overhead, using the same project as Nginx + PHP-FPM:
docker run --net=host -v $PWD:/app dunglas/frankenphp
FrankenPHP does redirect to HTTPS, but the tests are done with Keep-Alive, so it should perform much better despite it being HTTPS.

Multibyte (japanese) regex support	enabled
Multibyte regex (oniguruma) version	6.9.8
Directive	Local Value	Master Value
mbstring.detect_order	no value	no value
mbstring.encoding_translation	Off	Off
mbstring.http_input	no value	no value
mbstring.http_output	no value	no value
mbstring.http_output_conv_mimetypes	^(text/|application/xhtml\+xml)	^(text/|application/xhtml\+xml)
mbstring.internal_encoding	no value	no value
mbstring.language	neutral	neutral
mbstring.regex_retry_limit	1000000	1000000
mbstring.regex_stack_limit	100000	100000
mbstring.strict_detection	Off	Off
mbstring.substitute_character	no value	no value
mysqlnd
mysqlnd	enabled
Version	mysqlnd 8.3.6
Compression	supported
core SSL	supported
extended SSL	supported
Command buffer size	4096
Read buffer size	32768
Read timeout	86400
Collecting statistics	Yes
Collecting memory statistics	No
Tracing	n/a
Loaded plugins	mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_caching_sha2_password,auth_plugin_sha256_password
API Extensions	no value
openssl
OpenSSL support	enabled
OpenSSL Library Version	OpenSSL 3.0.11 19 Sep 2023
OpenSSL Header Version	OpenSSL 3.0.11 19 Sep 2023
Openssl default config	/usr/lib/ssl/openssl.cnf
Directive	Local Value	Master Value
openssl.cafile	no value	no value
openssl.capath	no value	no value
pcre
PCRE (Perl Compatible Regular Expressions) Support	enabled
PCRE Library Version	10.42 2022-12-12
PCRE Unicode Version	14.0.0
PCRE JIT Support	enabled
PCRE JIT Target	x86 64bit (little endian + unaligned)
Directive	Local Value	Master Value
pcre.backtrack_limit	1000000	1000000
pcre.jit	On	On
pcre.recursion_limit	100000	100000
PDO
PDO support	enabled
PDO drivers	sqlite
pdo_sqlite
PDO Driver for SQLite 3.x	enabled
SQLite Library	3.40.1
Phar
Phar: PHP Archive support	enabled
Phar API version	1.1.1
Phar-based phar archives	enabled
Tar-based phar archives	enabled
ZIP-based phar archives	enabled
gzip compression	enabled
bzip2 compression	disabled (install ext/bz2)
Native OpenSSL support	enabled
Phar based on pear/PHP_Archive, original concept by Davey Shafik.
Phar fully realized by Gregory Beaver and Marcus Boerger.
Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle.

PHP Quality Assurance Team
Ilia Alshanetsky, Joerg Behrens, Antony Dovgal, Stefan Esser, Moriyoshi Koizumi, Magnus Maatta, Sebastian Nohn, Derick Rethans, Melvyn Sopacua, Pierre-Alain Joye, Dmitry Stogov, Felipe Pena, David Soria Parra, Stanislav Malyshev, Julien Pauli, Stephen Zarkos, Anatol Belski, Remi Collet, Ferenc Kovacs
Websites and Infrastructure team
PHP Websites Team	Rasmus Lerdorf, Hannes Magnusson, Philip Olson, Lukas Kahwe Smith, Pierre-Alain Joye, Kalle Sommer Nielsen, Peter Cowburn, Adam Harvey, Ferenc Kovacs, Levi Morrison
Event Maintainers	Damien Seguy, Daniel P. Brown
Network Infrastructure	Daniel P. Brown
Windows Infrastructure	Alex Schoenmaker
PHP License
This program is free software; you can redistribute it and/or modify it under the terms of the PHP License as published by the PHP Group and included in the distribution in the file: LICENSE

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

If you did not receive a copy of the PHP license, or have any questions about PHP licensing, please contact<EMAIL_ADDRESS>
Relevant log output
No response

Your config doesn't seem to be optimal at all for benchmarking (Docker Volume, dev mode of Laravel, all features enabled while it's not the case for other tools).
That being said, we cannot review all benchmarks. We maintain one in this repository (https://github.com/dunglas/frankenphp/blob/main/testdata/load-test.js / https://github.com/dunglas/frankenphp/blob/main/testdata/benchmark.Caddyfile) and one for Symfony (https://github.com/dunglas/frankenphp-demo/tree/main/benchmark).
There is also the TechEmpower benchmark (https://github.com/TechEmpower/FrameworkBenchmarks/tree/d9bc7017125517e6ad95de2f5518e9e1361b8bb4/frameworks/PHP/laravel) that uses Laravel. Note that we didn't carefully review it and that it can probably be optimized (for instance, by disabling logs, which are known and expected to slow down benchmarks).
You may also be interested in these issues: https://github.com/dunglas/frankenphp/discussions/72
Feel free to reopen if you can provide a reproducer after having applied these optimizations.

Just to maybe point you in the right direction @alexskra, nginx spawns some 40 threads on a production machine just idling, while spawning much much more when under load. Further, most people set FPM to "ondemand" which will just keep spawning workers until whatever the max workers is.
I don't know your physical characteristics, but maybe try setting the number of threads to a comparable amount to nginx/fpm for FrankenPHP. By default, FrankenPHP only spawns 2 x number cores PHP workers. This is possibly much much lower than the FPM/nginx configuration.

@withinboredom it would be awesome if you could write a "performance tuning" doc at some point, you have accumulated an extraordinary amount of knowledge about this topic!

Maybe should we try to improve the TechEmpower benchmark results too.

@dunglas All tests are done with Laravel APP_ENV set to production, and APP_DEBUG set to false. I'm on Linux, so bind mounts should have no impact as far as I know. As for optimizations, all are out of the box setups, with the exception of PHP-FPM where the only change is the number of processes to utilize (~all cores). As for the enabled features, I do not know what you mean by that. Does FrankenPHP have some features enabled that should be disabled in prod? Then it should probably be added to the "deploy in production" part of the docs.
I also tried using the Dockerfile from the Deploy in production part of the docs, and it's still very slow.
FROM dunglas/frankenphp

# Be sure to replace "your-domain-name.example.com" by your domain name
#ENV SERVER_NAME=your-domain-name.example.com
# If you want to disable HTTPS, use this value instead:
ENV SERVER_NAME=:80

# Enable PHP production settings
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"

# Copy the PHP files of your project in the public directory
#COPY . /app/public
# If you use Symfony or Laravel, you need to copy the whole project instead:
COPY . /app

95% of people won't need to tune this to handle this level of RPS, unless you are at Google level, in which case there are probably other concerns. The bottlenecks of most RPS-driven workloads are in the database, and not the webserver.

@withinboredom It is common for the DB to be the bottleneck, yes, but that is not true in this case where it's less than 300 RPS while eating up nearly all cores. There must be some extreme inefficiencies involved as PHP-FPM manages ~52x the number of requests with a similar amount of CPU usage.
The docker image doesn't crash or stop answering like the binary, but considering the extreme performance difference there might something very wrong when using the docker image too.
If someone could provide a basic non-worker setup for production(docker or using the binary) then I'm happy to try it and report back if it changes anything. I love the idea of FrankenPHP, but it seems like the non worker mode is very far from production ready.

Does FrankenPHP have some features enabled that should be disabled in prod?

It is exposed publicly on the internet, no. If it is behind a reverse proxy or an ingress, you likely want to disable HTTPS, compression, etc.

There must be some extreme inefficiencies involved as PHP-FPM manages ~52x the number of requests with a similar amount of CPU usage.

The thing is that this can be caused by many many things (bad configuration, hardware, software, specific code path...). It will be very hard to diagnose without a reproducer or an environment that we can manipulate.
Our own (publicly available) benchmarks and most third-party benchmarks give totally different numbers, and it's almost impossible to tell why it behaves differently for you without more information.

Good idea!
The TechEmpower benchmarks might be a good place to start so we'd have a documentation of each effect.

@alexskra

There must be some extreme inefficiencies involved as PHP-FPM manages ~52x the number of requests with a similar amount of CPU usage.

There's no inefficiencies, Caddy is "queueing" the requests until a php thread can process the request. If you don't have enough PHP threads then it will just sit there, mostly enqueueing requests.

Our own (publicly available) benchmarks and most third-party benchmarks give totally different numbers, and it's almost impossible to tell why it behaves differently for you without more information.

I'm sorry, but where are the public benchmarks that shows better performance for non-worker mode FrankenPHP?
You were referring to TechEmpower benchmarks earlier, and they show the opposite of what you're saying. Take a look here.
Here is a summary for the linked TechEmpower results.
Symfony
Swoole:  149 004 RPS
Nginx + PHP-FPM: 32 960 RPS
FrankenPHP: 3 814 RPS
Results
Swoole is 39 times faster.
Nginx + PHP-FPM is 9 times faster.
Huge differende.
Plain PHP
Swoole: 836 680 RPS
Nginx + PHP-FPM:  177 872 RPS
FrankenPHP: 365 RPS
Results
Swoole is 2 292 times faster.
Nginx + PHP-FPM is 487 times faster.
So, no, it's not just for me.

So, fun story (running the benchmarks right now), they're so low on TechEmpower because the benchmarks are actually silently failing due to port exhaustion.

There must be some extreme inefficiencies involved as PHP-FPM manages ~52x the number of requests with a similar amount of CPU usage.

There's no inefficiencies, Caddy is "queueing" the requests until a php thread can process the request. If you don't have enough PHP threads then it will just sit there, mostly enqueueing requests. You can see this in the exceptionally large latency.

That does not make sense to me. If it is just sitting there waiting for PHP threads then it should not consume all of the CPU, right? What is it doing with all that CPU time if it's just waiting? Queuing up to 100 requests isn't exactly a heavy workload at such low RPS. It has to queue less than 300 requests per seconds.
If I use Nginx + a single PHP-FPM process, then the CPU load will stay low as it's not really doing anything. It's just waiting for PHP-FPM to finish the request, and that process takes one CPU thread. Latency will be high, but CPU usage will be very low. Even with a single PHP-FPM process it's ~3 times faster than what I manage with FrankenPHP.

@alexskra this page is too old, it was slow because logs were enabled and verbose, fixed in this PR: https://github.com/TechEmpower/FrameworkBenchmarks/pull/9047
Here is a newer result (but again, the benchmark hasn't been audited by us): https://www.techempower.com/benchmarks/#section=test&runid=d3364379-1bf7-465f-bcb1-e9c65b4840f9&hw=ph&test=fortune&f=zik0zj-zik0zj-zik0zj-zik0zj-zik0zj-zik0zj-zik073-zik0zj-zik0zj-zik0zj-zik0zj-zik0zj-zik0zj-zik0zj-b8jj

That does not make sense to me. If it is just sitting there waiting for PHP threads then it should not consume all of the CPU, right?

You can enable profiling and I, for one, would be interested to see what comes out of it.

So, there does seem to be something up with non-worker mode. With worker mode, using this worker on the TechEmpower benchmarks:
<?php

$fn = static function(): void {
    //error_log(__DIR__ . $_SERVER['REQUEST_URI'] ?? "no file");

    $globals = $GLOBALS;

    if(file_exists(__DIR__ . $_SERVER['REQUEST_URI'])) {
        include __DIR__ . $_SERVER['REQUEST_URI'];

        foreach($globals as $name => $value) {
            $GLOBALS[$name] = $value;
        }

        $diff = array_diff(array_keys($globals), array_keys($GLOBALS));
        foreach($diff as $name) {
            unset($GLOBALS[$name]);
        }
        return;
    }

    http_response_code(404);
};

error_log("Starting worker!");

while (frankenphp_handle_request($fn)) {}

exit(0);

I see ~16k RPS, which is in line with caddy + fpm (almost exactly, in fact). With worker mode disabled, I see ~2k RPS. Compared to nginx + fpm (40k RPS), it is still far behind. The fact that it is in line with caddy + fpm, this leads me to believe the bottleneck is caddy there, not Frankenphp.
That being said, there's probably some improvements to be made with non-worker mode.

Oh man.  They reuse connections instead of not reusing connections so really this is benchmarking how fast a server can turn-around a socket. Naturally, nginx is going to be really good at this, however, these are useless benchmarks.

So ... if we don't reuse connections ... the numbers look quite a bit different:
worker mode (tuned to machine): 13,308/s (79% CPU usage)
worker mode (512 workers like fpm): 13,008/s (80% CPU usage)
CGI mode (64 threads): 1881/s (40% CPU usage)
caddy + fpm: 11,548/s (84% CPU usage)
nginx + fpm: 14,541/s (82% CPU usage)
As you can see, in more "real-world" scenarios, there is almost no difference between any of them; or rather the difference is likely to felt in any serious application.
Errata:
"tuned to machine": num_workers=4x CPU cores, GOGC=200, GOMAXPROCS=512

The first problem that I see, is that the @alexskra bench don't use OPCache.
This is a small problem in worker mode (swoole, Frankephp in worker mode, ...) but it have a very big penalty in all not workers mode (Frankenphp CGI, fpm, ...).

@withinboredom when you say "reuse connections" I think that you are talking about TCP connections.
In the "real-world" we use HTTP 1.1, 2 or 3.  And by default all use HTTP persistent connections.
Only HTTP 1.0 connections should always be closed, but in late 1995 (29 years ago) was added "keep-alive" to not close the connection.
If you want to test with HTTP 1.0 without keep-alive, you can use the old ab from Apache to benchmark.
But you will be testing the TCP performance not the frameworks.
The Techempower benchmark also use persistent connection to the databases in the normal php-fpm.
When I change it, we had also some reactions against it, but it's completely correct and the numbers reflect it. And the community understand it.
We can't have good database performance, if we initiate a new connection to the database for each request.
Please remember:

a benchmark is not a competition, it is a very good tool that help to fix our code for better performance.

@joanhey I'm not talking about database connections, but TCP/HTTP connections from the client. If you have 100 users, those 100 users do not share a TCP anything. Your server needs to handle 100 separate connections and scale to the physical demands of the connection, network card, and kernel, such that if you have 10,000 users, your server can handle at least 10,000 connections.
If you are behind a load balancer, it can reuse connections (in a pool) such that 1,000 users results in less than 1,000 connections.
When benchmark testing, I typically consider how it is designed to be used. If it will be behind a load balancer, I will reuse connections because that is more representative of its real life access patterns. If it will be on the edge, I am more curious of how it performs not reusing connections. Especially if I am the one paying for the infra.
In any case, it doesn't matter here. There is a performance issue and both the benchmarks illustrate that fact.

@alexskra thanks for the report! The latest version should improve the situation.


Hive - tables not appears in Database Navigator

System information:

Windows 10
DBeaver version : <IP_ADDRESS>003021717
Java version 1.8.0_202
Additional extensions: none

Connection specification:

Database name and version : HIVE version 3.1.0 from HDP 3.1

Driver name version : tested with two versions

https://github.com/timveil/hive-jdbc-uber-jar/releases/download/v1.9-2.6.5/hive-jdbc-uber-<IP_ADDRESS>-292.jar
hive-jdbc-standalone.jar from HDP 3.1

Do you use tunnels or proxies (SSH, SOCKS, etc)?
Yes, but connection is working fine

Describe the problem you're observing:
On one database user can't see any tables while issuing statement show tables in database_name gives full list of tables. User also can qurey that tables.
In other databases tables are present in Database Navigator list
Steps to reproduce, if exist:
Include any warning/errors/backtraces from the logs
error log is empty
Query Manager shows :
-- Load tables [null, earnix, %, null] # this one is ok, 4 tables appears
-- Load tables [null, sandbox_shared, %, null]  # no tables appears

in version <IP_ADDRESS>004051509 same problem, tables not show, driver ClouderaHiveJDBC-<IP_ADDRESS>2

is it still actual?

No, we do not have problem with this issue any more.
pon., 30 sie 2021, 20:45 użytkownik Dziyana @.***>
napisał:

is it still actual?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dbeaver/dbeaver/issues/8234#issuecomment-908593828,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AC5KXHJ6GO2SAKLUXPUZSCTT7PGUJANCNFSM4LQLTG4Q
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.


6-digit code verification fails if phone number has country code other than +1

Android device: Nexus 5 (emulator)
Android OS version: API 23
Google Play Services version: 4.3.8
Firebase/Play Services SDK version: com.google.firebase:firebase-auth:21.0.1
FirebaseUI version: 8.0.0

Step 3: Describe the problem:
In the Firebase UI on Android, the country code specified with the phone number is not honored when the OTP is being entered. As a result, OTP validation always fails. This was not happening on FirebaseUI version: 7.2.0
Steps to reproduce:

Specify phone numbers +91-8637224557. Note, country code dropdown is shown expanded for some reason (why?) - see attached image "Opens with dropdown expanded"
Press the validate button, solve reCAPTCHA if presented

Observed Results:
See image titled "Note country code"
In the page where the 6-digit code needs to be entered, the phone number shown is +1-8637224557 instead of +91-8637224557 - the country code is wrong. As a result, code verification fails
Expected Results:
The correct phone number is shown and code verification succeeds. Also, country code dropdown is not shown expanded when the UI starts.
Relevant Code:
Code is essentially same as that shown in the sample below. Also, my code has not changed in a while (note also that this scenario works as expected in FirebaseUI version: 7.2.0 - this is a regression in version 8.0.0
https://firebase.google.com/docs/auth/android/firebaseui

yes even in my case i have to manually type the code in the box

It seems that whatever the user select in the country code the phone is sent to PhoneNumberVerificationHandler.verifyPhoneNumber is the the initial country code the screen opened with


bump gcc 11 to 11.3.0

Thnx. There's also these patches for gcc 9.5.0 & gcc 10.4.0
0001-gcc-9.5.0.patch.log
0002-remove-patches-for-gcc-9.2.0.patch.log
0003-gcc-10.4.0.patch.log


Create LDP1 version of new finance_funds derived table

Create LDP1 version of finance_funds

Need to test in LDP instance with real data, as there is no data for testing in FOLIO snapshot instance


ts: Convert deprecated_feature_notice module to TypeScript.

This PR does two things:

Refactors maybe_show_deprecation_notice function to use zod to parse shown_deprecation_notices array stored in localstorage for better type safety.
Migrates the module to TypeScript by adding some primitive types to the functions.

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[x] Explains differences from previous plans (e.g., issue description).
[x] Highlights technical choices and bugs encountered.
[x] Calls out remaining decisions and concerns.
[x] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[x] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[x] Visual appearance of the changes.
[x] Responsiveness and internationalization.
[x] Strings and tooltips.
[x] End-to-end functionality of buttons, interactions and flows.
[x] Corner cases, error conditions, and easily imagined bugs.

Merged, thanks @Lalit3716!


Project P99

Goals
Acceptance criteria :

[ ] User being able to preform ptychography experiments on p99 using Athena/Bluesky setup

Tasks
base on the goals, deduce the tasks required. check them off once they're done

[x] #3
[ ] #4
[ ] #23
[ ] Create plan to drive the devices and collect data

@Relm-Arrowny a project here might be a good place to track this


Memory leak

Hi, first of all, thank you for your work on this lib!
I found some bug in the code. Basically, when I create a long script that goes to many pages, I'm running out of memory.
You can reproduce it simply with code like this:
$browserFactory = new BrowserFactory('google-chrome');
$browser = $browserFactory->createBrowser();
$page = $browser->createPage();
for($i = 0; $i < 100; ++$i){
    page->navigate('https://www.google.pl')->waitForNavigation();
    var_dump(memory_get_usage());
}

You will see that it uses more and more memory.
I found that the problem is with the wrench library and this solves the problem:
https://github.com/varspool/Wrench/pull/121/commits/6257a25ca5e23233533e2462250478d8d7841634
But this includes changing the library code. Is there any other way to fix this without changing the libraries code?

Same problem here

@jaskolek Good find with the wrench library! We should get that fix into here. Here is my workaround for now.

Uninstall chrome-php/chrome from your project
composer remove chrome-php/chrome

Download the chrome-php/chrome source and bring it into your project.

Modify the composer.json in the chrome-php/chrome source to include wrench ~3.0.

"require": {
    "php": ">=7.0",
    "symfony/process": "^3|^4",
    "wrench/wrench": "~3.0",
    "symfony/filesystem": "^3|^4",
    "psr/log": "^1.0",
    "apix/log": "^1.2",
    "evenement/evenement": "^3.0.1"
  },

Link chrome-php/chrome in your project's composer.json.

"repositories": [
        {
            "type": "path",
            "url": "./path/to/chrome-php"
        }
    ]

Install chrome-php/chrome using composer.
composer require chrome-php/chrome @dev

Watch your memory usage stay nice and low.

Hope this helps! I was going crazy trying to optimize my code.

@johnanthonyeletto
A simpler solution is to use the composer as feature. Add the following line in your composer.json :
{
  "require": {
    "wrench/wrench": "dev-master as 2.0.0"
  }
}

Then run composer update wrench/wrench, this will install the latest version of Wrench and still satisfy dependencies requirements.

@johnanthonyeletto  A simpler solution is to use the composer as feature. Add the following line in your composer.json :
{
  "require": {
    "wrench/wrench": "dev-master as 2.0.0"
  }
}

Then run composer update wrench/wrench, this will install the latest version of Wrench and still satisfy dependencies requirements.
Same issue here btw.

Thanks for your investigation. 👍
I'll be looking into that issue

Is anyone aware of another possible memory leak issue ?
After updating wrench/wrench, the memory usage of my application is still increasing.
I'm not sure where the problem comes from, just asking.

After update wrench/wrench to dev memory usage keep to increase slower. About 2Mb per 2 pages. Single browser and single page in it are used.

Same issue here.
But not sure if it's related to the lib or my own code.

@t-geindre Thanks for the composer.json code, it's a vast improvement even if it doesn't solve it completely!
For me, the memory increases at about .02MB for single browser single page. Which is significantly better than before I applied the change.

I don't know what is exactly happened, but today after updating Windows 10 (developing under Ubuntu WSL), chrome-php begins to work very slowly, freezing on each CDP request. I figured out that it works fast when I install wrench 2.0.0 back, but freezes again on dev-master. Keeping version 2.0 means return back to memory leaks, but it doesn't work with dev-master normally from today. Any ideas?

@t-geindre Thanks for the composer.json code, it's a vast improvement even if it doesn't solve it completely!
For me, the memory increases at about .02MB for single browser single page. Which is significantly better than before I applied the change.

Same. Please fix it. I almost broke my head when I caught exceptions from symfony process component (used by chrome-php/headless-chromium-php) with "Unable to launch a new process". Only after hours of debugging i get "proc_open(): fork failed - Cannot allocate memory" and i able to find this issue. This is terrible

This should not be staled and it is still an issue. Even after updating the wrench/wrench when used on the php artisan queue:work in daemon mode.

Since the problem is with the upstream library, I am closing this.


Normals on 2D line cause unwanted rotation

This is the 3D scene view of the moving object, it's rotation is set to 0 on every axis by default. The normals of the line cause it to rotate on the X and Y axis, making it somewhat useless for 2D projects. Is there any way to make the normals face in the direction the line is going in 2D?
Hopefully I'm just doing something wrong.

I've been having issues with normals on 3D splines too.  Let's say I want the first and last nodes' normals to both point up.  'Up' on the first node might be 90 degrees, but on the last node, 90 degrees is not up; I have to eyeball it to 326.3 degrees by trial and error.  Why is this?  It makes it impossible to ensure a follower starts and ends in the same orientation.

got the same issue on my XY 2D game. looks like sprites are rotated 90° on the Y axis, making the GetRotationAtDistance unusable for 2D projects. I'll try to figure out what is wrong the computation.

I have figured out what is happening. In the VectexPath, there is the method that handles the rotation:
        /// Gets a rotation that will orient an object in the direction of the path at this point, with local up point along the path's normal
        public Quaternion GetRotation (float t, EndOfPathInstruction endOfPathInstruction = EndOfPathInstruction.Loop) {
            var data = CalculatePercentOnPathData (t, endOfPathInstruction);
            Vector3 direction = Vector3.Lerp (localTangents[data.previousIndex], localTangents[data.nextIndex], data.percentBetweenIndices);
            Vector3 normal = Vector3.Lerp (localNormals[data.previousIndex], localNormals[data.nextIndex], data.percentBetweenIndices);
            return Quaternion.LookRotation (MathUtility.TransformDirection (direction, transform, space), MathUtility.TransformDirection (normal, transform, space));
        }

The problem when working in 2D is that the LookRotation method (as per The Doc) rotates the object so that the Z-axis is looking into the given direction.
While it is maybe what the author want for 3D object, for 2D, it doesn't work.
As a workaround you can always rotate the object back into its right orientation by adding an extra
 * Quaternion.Euler(0, -90, 0); after the GetRotationAtDistance method:
transform.rotation = curve.path.GetRotationAtDistance(distanceTravelled, end) * Quaternion.Euler(0, -90, 0);

I'm a bit late to this discussion but I've still got some problems with the rotation on 2d. Without the * Quaternion.Euler(0, -90, 0); my player character seems to 'teleport' to a random location instead of following the path. After adding the * Quaternion.Euler(0, -90, 0); the character does follow the path, however, the entire background image starts turning instead of the character itself. Any suggestions?


Deleting 3 Files Takes Up to 12 Seconds

Steps to reproduce:

Create a new resource
Upload a tiny text file, maybe 113 bytes
Create external content with "add content from the web"
Create a folder named "Test"
Enter the folder
Create external content with "add content from the web"
Return to root folder with the up arrow browser
Delete the folder and two files
Observe wait time

Beta took about 14 seconds for the operation to take place then the page reloads and the spinner continues for another few seconds. Prod takes around 12 seconds, plus or minus. If you create multiple folders and content within them you generally cause an infinitely spinning progress wheel. Operation may or may not complete.

Sometimes creating and deleting just 1-2 files can result in an infinitely spinning pinwheel on macOS / Chrome

Sometimes creating and deleting just 1-2 files can result in an infinitely spinning pinwheel on macOS / Chrome

@ndebuhr can you check this with the 1.42 release and comment

@martinseul Is this still an issue or has it been resolved?

@martinseul @Castronova I just reproduced this on production v1.54


lua pipe child execvp() failed while executing java

2022/01/17 02:16:36 [warn] 44#44: *1689 [lua] init.lua:592: flush conf token lrucache, context: ngx.timer
2022/01/17 02:16:36 [warn] 45#45: *1690 [lua] init.lua:592: flush conf token lrucache, context: ngx.timer
2022/01/17 02:16:39 [warn] 48#48: *44 [lua] init.lua:699: respawning new runner..., context: ngx.timer
2022/01/17 02:16:39 [error] 48#78: lua pipe child execvp() failed while executing java (2: No such file or directory)
2022/01/17 02:16:39 [warn] 48#48: *44 [lua] init.lua:687: runner exited with reason: exit, status: 1, context: ngx.timer
2022/01/17 02:16:39 [warn] 48#48: *44 [lua] init.lua:592: flush conf token lrucache, context: ngx.timer
2022/01/17 02:16:39 [warn] 48#48: *44 [lua] init.lua:697: respawn runner 3 seconds later with cmd: ["java","-jar","-DAPISIX_LISTEN_ADDRESS=unix:/tmp/runner.sock","-DAPISIX_CONF_EXPIRE_TIME=3600","/plugin/apisix-java-plugin-runner.jar"], context: ngx.timer
2022/01/17 02:16:39 [warn] 44#44: *1803 [lua] init.lua:592: flush conf token lrucache, context: ngx.timer
2022/01/17 02:16:39 [warn] 45#45: *1804 [lua] init.lua:592: flush conf token lrucache, context: ngx.timer
apisix 2.10.0

your apisix-java-plugin-runner 0.1

部署官方案列到docker容器里出现的问题，

同问
进入容器内部查看，是有apisix-java-plugin-runner.jar这个文件的，但是日志里显示 lua pipe child execvp() failed while executing java -jar -Xmx4g -Xms4g /usr/local/apisix/apisix-runner-bin/apisix-java-plugin-runner.jar (2: No such file or directory)，另外，官方能不能回复及时一点呢

lua pipe child execvp() failed while executing java (2: No such file or directory)

The mistake is in this.
Check the permissions of this file.

部署官方案列到docker容器里出现的问题，

Official cases are posted by contributors and are for reference only.
In my experience, there are always similar permission issues with docker.

Error reason: jdk version problem

lua pipe child execvp() failed while executing java (2: No such file or directory)

The mistake is in this.
Check the permissions of this file.

部署官方案列到docker容器里出现的问题，

Official cases are posted by contributors and are for reference only.
In my experience, there are always similar permission issues with docker.

It still did not work


Add Institute of Meteorology of Cuba, sort alphabetical by Name

Adds Institute of Meteorology of Cuba (insmet) and sorts the CSV alphabetically.
Also removes the my-centre sample row.
cc @AlHelguera
cc @golfvert

FYI rebased given the updates in #58.

Thanks @antje-s; we will do the same in Canada (i.e. -dcpc, -global-discovery-catalogue) in a future update/PR.


Adds HACKING file, to demystify change to Feign

Over the years, there's been a number of times where I've repeated rationale around change on a case-by-case basis. This is a summary of thoughts that I think those who want to change Feign dramatically should bear in mind.

NetflixOSS » feign » feign-pull-requests #224 SUCCESS
This pull request looks good

NetflixOSS » feign » feign-pull-requests #225 SUCCESS
This pull request looks good

:+1:

NetflixOSS » feign » feign-pull-requests #226 SUCCESS
This pull request looks good


Add good compute-to-data example README

Pre-requisite: #101
Motivation:

Help stabilize compute-to-data
Nice onboarding for python users to (a) use compute-to-data, in (b) a data science context

Basic flow of README

Alice mints datatokens and publishes data asset
transfers some to Bob
Bob consumes in a CtD setting. The algorithm can be simple, eg average()

What it does not need, and should not have

Marketplace stuff
Conversion between fiat value and OCEAN
AI/ML tool (eg logistic regression from scikit-learn), since Raven is already working on that.

Potential sources of useful info:

https://github.com/oceanprotocol/ocean.js-cli/blob/main/src/commands.ts
https://github.com/oceanprotocol/ocean.py/blob/main/ocean_lib/ocean/test/test_ocean_compute.py
#101 has a flow shared by Alex C
simple README, marketplace README
20210429 Matthias list of CtD resources: https://oceanprotocol.slack.com/archives/C0D6JB45D/p1619638827175700
Ocean docs "Writing Algorithms for Compute to Data" link
ocean_lib/data_service_provider::start_compute_job()
test_start_compute_job_fails_empty(), more
https://docs.oceanprotocol.com/tutorials/compute-to-data-algorithms/

@mariacarmina @calina-c I will take over this issue

Waiting on the computeResult endpoint, where I encountered some trouble.

Waiting on the computeResult endpoint, where I encountered some trouble.

Where's the being worked on / who's working on it? (More context please:)

I'm working on it. Alex helped and it's just a missing env var to be defined in that task. So I'll unblock this in ~30mins


x86 avx: use INT64_C when the destination is i64

I think using INT64_C may be better or please let me know if I missed something ?:)

Thank you @jinboson !


chore: v1.0.1

:robot: I have created a release beep boop
1.0.1 (2023-10-04)
Bug Fixes

Disable no-plusplus rule (bafa2fb)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/Wondermarin/eslint-config/releases/tag/v1.0.1 :sunflower:


Missing support for profiles

Docker Compose supports "profile" tags, so you can design docker-compose files where only a subset of services are started, depending on the profile tags.
See https://docs.docker.com/compose/profiles/ for more detail.
I was hoping to have a way to select profiles in the docker-compose buildkite plugin, but I can't see anything at the moment, in either the README or the examples.
It would be great to put this on your roadmap, if it is indeed missing.

@TJC this is indeed an interesting feature, but with a high potential of shooting yourself in the foot due to dependencies not being started up.
If you want to use profiles and this plugin, you can still do so by defining a step or pipeline-level environment variable called COMPOSE_PROFILES with the correct values. Meaning that you can do something like:
steps:
  - key: test
     command: echo 'from inside the container'
     env:
       COMPOSE_PROFILES: "frontend,debug"
     plugins:
       - docker-compose#v5.3.0:
           run: app

I have created a new section in the examples with such thing and the corresponding clarifications.


lost usdc coin please help

i basically sent my usdc from my sollet wallet to my coinbase pro usd(c) wallet all of it went through but nothing came on coinbase pro when i made the transaction metamsk opened up and i confirmed. not too sure what went wrong can you help @armaniferrante
Originally posted by @ibrahim1998104 in https://github.com/project-serum/spl-token-wallet/issues/205#issuecomment-844395325

Please join discord for support requests. There are lots of people there to help https://discord.gg/nchpPEWq.
Github is for developer issues only.

Please see the #faq in the Discord, as well.


Integration Tests for average-carbon-intensity

Issue Number: (404)
Summary
Add integration tests for average-carbon-intensity (actual and batch)
Changes

Integration tests

Checklist

[ ] Local Tests Passing?
[ ] CICD and Pipeline Tests Passing?
[ ] Added any new Tests?
[ ] Documentation Updates Made?
[ ] Are there any API Changes? If yes, please describe below.
[ ] This is not a breaking change. If it is, please describe it below.

Are there API Changes?
N/A
Is this a breaking change?
N/A
Anything else?
N/A

Codecov Report

Merging #121 (5c416bf) into dev (8db0a5c) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##              dev     #121   +/-   ##
=======================================
  Coverage   85.48%   85.48%
=======================================
  Files          52       52
  Lines        1688     1688
  Branches      177      177
=======================================
  Hits         1443     1443
  Misses        187      187
  Partials       58       58


Documentation bug: mxnet.symbol.linspace doesn't accept ctx as parameter

Description
This is a documentation bug. In the document of mxnet.symbol.linspace, the Parameter section specified an input parameter ctx, which is not in the function signature, and not accepted by the function.
Link to the document: https://mxnet.apache.org/versions/1.6/api/python/docs/api/symbol/symbol.html#mxnet.symbol.linspace

Error Message
(Paste the complete error message. Please also include stack trace by setting environment variable DMLC_LOG_STACK_TRACE_DEPTH=10 before running your script.)
TypeError: linspace() got an unexpected keyword argument 'ctx'

To Reproduce
(If you developed your own code, please provide a short script that reproduces the error. For existing examples, please provide link.)
import mxnet
mxnet.symbol.linspace(1,10,2, ctx=mx.cpu())

Environment
We recommend using our script for collecting the diagnositc information. Run the following command and paste the outputs below:
curl --retry 10 -s https://raw.githubusercontent.com/dmlc/gluon-nlp/master/tools/diagnose.py | python

# paste outputs here

OS: ubuntu 18.04
Python: 3.7.6
pip: 20.0.2
numpy: 1.18.5
mxnet: 1.6.0

Looks like a copy-paste error in the doc here that needs removal:
https://github.com/apache/incubator-mxnet/blob/3c4ac19daa3e645d918692b864ea19640f7e0314/python/mxnet/symbol/symbol.py#L3203-L3204

Hello,
I see a PR merged for this issue.
Is this still open?


[fix][gui] Rename source component

Closes #2846

When editing a source component the initial source component will not be
renamed but a new source component will be saved. To solve this problem
we remove the original component and create a new component.

This doesn't work for me. It still adds a new component.

@bruntib Did you rebuild the package correctly? Are you sure that you are building and using the correct CodeChecker?

Now it seems to be working. Maybe the browser cache was too eager. It is strange though, because I tried another browser too where I hadn't opened CodeChecker before.


[7.x] Http client - Add support for binary body request

This is a PR for the issue/enhancement reported earlier here: #33301
With this pull request it will be possible to send binaries in the body of a request.
Example:
$photo = Storage::put('avatars', $request->file('photo'));

Http::binary(Storage::get($photo), Storage::mimeType($photo))
    ->post('api/settings/profile/photo');

PR had a lot of errors but I think I got it cleaned up.


Wrong column accessed as YEAR function argument

The default gitbase-playground query does not work with v0.14.0-rc1.
SELECT COUNT(*) as num_commits, month, repo_id, committer_name
FROM ( SELECT MONTH(committer_when) as month,
              r.repository_id as repo_id,
              committer_name
    FROM ref_commits r
    INNER JOIN commits c
        ON YEAR(c.committer_when) = 2018 AND r.commit_hash = c.commit_hash
    WHERE r.ref_name = 'HEAD'
) as t GROUP BY committer_name, month, repo_id

ERROR 1105 (HY000): unknown error: value<EMAIL_ADDRESS>can't be converted to time.Time: parsing time<EMAIL_ADDRESS>as "2006-01-02": cannot parse<EMAIL_ADDRESS>as "2006"

It looks like an off by 1 access to the row in YEAR. If you replace YEAR(c.committer_when) with the next column, commit_message, it works:
SELECT COUNT(*) as num_commits, month, repo_id, committer_name
FROM ( SELECT MONTH(committer_when) as month,
              r.repository_id as repo_id,
              committer_name
    FROM ref_commits r
    INNER JOIN commits c
        ON YEAR(c.commit_message) = 2018 AND r.commit_hash = c.commit_hash
    WHERE r.ref_name = 'HEAD'
) as t GROUP BY committer_name, month, repo_id

No idexes at all.

Found the issue. It has to do with a weird interaction between the squash joins rule and the new rule to move join conditions to filters.


Set and change SnackPlayer theme according to the Docusaurus theme

Description
Set and change SnackPlayer theme according to the Docusaurus theme.
Refs: #33

https://v2.docusaurus.io/docs/theme-classic/#hooks
The useThemeContext() hook can possibly be utilized for this

I did some digging and found this also seems to work:

Changing parameter theme="dark"
ExpoSnack.remove(document.querySelector('.snack-player'))
ExpoSnack.initialize()

@slorber Any idea on how can this be integrated with useThemeContext

I've added a solution for this problem, not sure it's the best but should be good enough for now


Customise width and height

Is there any way to change the width and height of the ace editor widget?

Hello @iamashwin99, you can only customize the height like so: st_ace(height=380)
Why would you customize the width?
If you want to display Ace side-by-side with some other content, you can rely on streamlit's columns.
Here's an app showcasing this layout: https://share.streamlit.io/akrolsmir/streamlit-snippet/main

@okld thank you for your tip on using streamlit's columns.
It solved my problem!

I want to customize the width of the editor, the column thing doesn't seem to work.


New-DbaDbTable - Add support for adding identity column

Type of Change

[ ] Bug fix (non-breaking change, fixes # )
[X] New feature (non-breaking change, adds functionality, fixes # )
[ ] Breaking change (effects multiple commands or functionality, fixes # )
[X] Ran manual Pester test and has passed (`.\tests\manual.pester.ps1)
[ ] Adding code coverage to existing functionality
[X] Pester test is included
[ ] If new file reference added for test, has is been added to github.com/sqlcollaborative/appveyor-lab ?
[ ] Nunit test is included
[X] Documentation
[ ] Build system

Purpose

add ability to specify identity, identityseed and identityincrememt for the ColumnMap

Approach

if ColumnMap contains a column with these properties add them to the SqlColumn object

Commands to test
$cols = @()
$cols += @{
    Name              = 'testId'
    Type              = 'int'
    Identity          = $true
    IdentitySeed      = 10
    IdentityIncrement = 2
}
New-DbaDbTable -SqlInstance mssql1 -Database tempdb -Name TestTable -ColumnMap $cols

Screenshots

Thanks @wsmelton !

Thanks @wsmelton !


termbox can't detect resize events when in select()

In my application I'm using tb_poll_event() in a select() loop. I'm calling tb_poll_event() only when stdin is ready. The problem is termbox can't detect resize events when I do that. As a test, if I remove my select() loop and use tb_peek_event(), it works fine. Note that I don't have any signal handlers for SIGWINCH or anything.
I thought of implementing my own SIGWINCH handler and calling termbox's update_size() but unfortunately that's a static functions so I can't do that.
Any ideas what may be causing this problem? Would it make sense to add a tb_update_size() function to manually trigger a resize in termbox?
Thanks.

Hm, it probably happens if both stdin and sigwinch were signalled.
https://github.com/nsf/termbox/blob/master/src/termbox.c#L666-L685
Here I just return if one of them is ready, but I don't handle a case when both are ready. I'll think about a way to fix it. But if you can fix it yourself that'd be much nicer.

The code you pointed gave me ideas and I fixed this. Basically when select() fails, I'm calling tb_peek_event() with timeout 0. When select() fails because of a resize signal, termbox is returning a resize event. Awesome!
Thanks for the help.

It's still a bit sad that some events can get lost if termbox's event handlers are not called immediately...

Yes, ideally we need some sort of raw integration into event APIs like select.
My recomendation is to use Go version of the termbox instead and Go itself as well. If that's possible. It has a proper model for dealing with events and writing event-driven stuff there is super easy.


[Doc][Connector/Transform] Connector/Transform document have some empty description

Search before asking

[X] I had searched in the feature and found no similar feature requirement.

Description

Through the pictures you can find a lot of empty placeholder descriptions, which hopefully can be turned into specific descriptions for each component
Usage Scenario
No response
Related issues
No response
Are you willing to submit a PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

pr #2375 , @Hisoka-X  please review, thx.


Fix localization & more

fix Russian localisation for start staking info screen #85ztrv68c
fix staking amount input glitch due to logger
fix start staking info skeleton out of bounds on small screens

Task linked: CU-85ztrv68c iOS. Add singular case for hours in Start staking


Updates for week of Oct 7

minor wording tweak w.r.t. epoch value
'location' is only allowed to appear in the model for Resource attributes
define a 'compatibility' attribute for Resources. Define just some abstract
values that people MAY use. Domain specific specs will narrow/expand the list
and define what each value means for their domain/docs.
define what "compatibility" means for schemas and make "compatibility"
default to "backward". Remove the requirement that all versions are backwards
compatible.
new code gen files
show line numbers of offending lines in some of the spec checking tools

Fixes: https://github.com/xregistry/spec/issues/145

Approved on the 10/17 call with the text changes proposed.


build_web_compilers:ddc on lib/app_component.template.ddc.module: Error compiling dartdevc module:project_bug|lib/app_component.template.ddc.js

Installed Dart on Debian.
Set up a fresh web-angular project and run webdev serve.
Changed lib/app_component.dart by adding a String field to the component:
class AppComponent {
  // Nothing here yet. All logic is in TodoListComponent.
    String name = "Hello World!";
}

Saved and then it threw an error and crashed:
creation.log
When I remove that line again, it just throws the error. A few times taking the line back in and out it even errors and crashes without the line.
dart --version
Dart VM version: 2.4.0 (Unknown timestamp) on "linux_x64"
chromium --version
Chromium 76.0.3809.62 built on Debian bullseye/sid, running on Debian bullseye/sid

@jakemac53 - from the log, this is the first error.  Any ideas?  Is this a build issue?
[INFO] Updating asset graph completed, took 16ms
[SEVERE]build_web_compilers:ddc on web/main.ddc.module: Unable to find modules for some sources, this is usually the result of either a
bad import, a missing dependency in a package (or possibly a dev_dependency
needs to move to a real dependency), or a build failure (if importing a
generated file).

Please check the following imports:

`import 'package:project_bug/app_component.template.dart' as ng;` from project_bug|web/main.dart at 2:1

[SEVERE]build_web_compilers:entrypoint on web/main.dart: Unable to find modules for some sources, this is usually the result of either a
bad import, a missing dependency in a package (or possibly a dev_dependency
needs to move to a real dependency), or a build failure (if importing a
generated file).

Please check the following imports:

`import 'package:project_bug/app_component.template.dart' as ng;` from project_bug|web/main.dart at 2:1

I haven't been able to reproduce this, I tried with 2.4.0 specifically as well.

It looks though like angular did not generate the component template file properly, so there could be something relating to the analyzer here?

Friend and I saw it after saving in vim.
It seems to not have happened when saving in VSCode.

Ah, likely a bad race condition of some sort then that we aren't recovering from (caused by the swap files).

Confirmed I can repro this :cry:

Hmm, I may have seen similar in emacs from editor-generated backup files -
e.g., #foo.dart.
On Thu, Aug 8, 2019 at 12:51 PM Jacob MacDonald<EMAIL_ADDRESS>wrote:

Ah, likely a bad race condition of some sort then that we aren't
recovering from (caused by the swap files).
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/dart-lang/sdk/issues/37588?email_source=notifications&email_token=AAQFPAPZEVLP5OIAG2FBKXLQDR2NPA5CNFSM4IFN3GA2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD34W5QA#issuecomment-519663296,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAQFPAL45M4FJX6EXCQ7SYDQDR2NPANCNFSM4IFN3GAQ
.

In my case actually it was followed up by a successful build which is the intended recovery case for this type of error, @Urfoex did you see a successful build immediately after the failed one?

Also it looks like this only happens in daemon mode, so regular pub run build_runner serve should work.

Closing as a duplicate of https://github.com/dart-lang/build/issues/2403 which I just opened