Use PSR-1 for PHPUnit TestCase

Use PSR-1 while extending PHPUnit TestCase class. This will help us when to migrate to PHPUnit 6, that no longer support snake case namespaces.

This needs an update of the phpunit requirement in composer.json. Not all versions that satisfy ^4.8 include the forward compatibility layer. I suggest using ^4.8.36|^5.7|^6.4 instead of ^4.8.

@alcaeus I'll update to ^4.8.36 only. PHPUnit 5 has some deprecated methods, and 6 uses PHP 7, and we will need to work on that later.

Manually merged in https://github.com/mongodb/mongo-php-library/commit/d4583a9baaf9631cdcdc1c5900741b27e11efa33. Thanks!
@alcaeus: I noticed that there were two outstanding issues with allowing ^5.7|^6.4 in composer.json:

We currently have a number of tests that perform no assertions (e.g. they construct an object to ensure that no exceptions are thrown for invalid arguments). PHPUnit now warns against such risky tests unless we disable the warning in our configuration.
We have several tests that expect a PHPUnit_Framework_Error_Warning exception (as part of their assertion for an internal PHP warning). The PHPUnit 6 compatibility layer added in 4.8.36 and 5.7.21 did not include namespaced aliases for the exception classes, so we can't generalize those tests for all three PHPUnit verisons.

For the time being, we'll need to remain on 4.8.36.

PHPUnit now warns against such risky tests unless we disable the warning in our configuration.

For individual tests, there is a doesNotPerformAssertions annotation you can add to the tests in question. As for the warnings, that's indeed an issue that can't be fixed - only thing you could do is adding your own compatibility layer using class_alias.

Sounds good. I've opened PHPLIB-294 to track that.


Camera stream ?

Hello,
Thanks for this great quasar extension :)
I would like to know if it's possible to capture camera stream (the recording can be done with recordRTC but I need something to allow the user to show himself).
regards
John

As far as I know, the HTMLMediaPlayer element does not allow that.


Allow restoring subgraph from checkpoint for weight sharing between different models

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): No
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): MacOS Sierra
TensorFlow installed from (source or binary): binary
TensorFlow version (use command below): v1.7.0-3-g024aecf414 1.7.0
Python version: 3
Bazel version (if compiling from source): NA
GCC/Compiler version (if compiling from source): NA
CUDA/cuDNN version: NA
GPU model and memory: NA
Exact command to reproduce: Read the summary below

Describe the problem
There are many scenarios where we want to do parameter sharing between two different models (let's call A and B). If A is trained and checkpointed, we can either load all of the variables of A or selectively load variables from A's checkpoint by passing a list L containing all shared params. But the second way is not helpful if we don't know L beforehand. Can we have a way by which we can share variables just based on the common subset between two graphs.
PS - I am assuming that parameters of A and B follow same naming convention in scopes.
Source code / logs
Here is what I was trying to do using metagraph but this also doesn't seem to work. Please note that I deliberately do tf.reset_default_graph() as objective is to share parameter with a checkpointed model. Sorry lots of redundant lines in the code.
import tensorflow as tf
mnist = tf.contrib.learn.datasets.load_dataset("mnist")

def model_1(features, labels):
    with tf.variable_scope("input", reuse=tf.AUTO_REUSE):
        out = tf.reshape(features, [-1, 28, 28, 1])
    with tf.variable_scope("conv_1_5x5", reuse=tf.AUTO_REUSE):
        out = tf.layers.conv2d(
           inputs=out,
           filters=32,
           kernel_size=[5, 5],
           padding="same",
           activation=tf.nn.relu)
    with tf.variable_scope("conv_2_3x3", reuse=tf.AUTO_REUSE):
        out = tf.layers.conv2d(
           inputs=out,
           filters=32,
           kernel_size=[3, 3],
           padding="same",
           activation=tf.nn.relu)
    with tf.variable_scope("pool_3_2x2", reuse=tf.AUTO_REUSE):
        out = tf.layers.max_pooling2d(inputs=out, pool_size=[2, 2], strides=2)
    with tf.variable_scope("conv_4_3x3", reuse=tf.AUTO_REUSE):
        out = tf.layers.conv2d(
           inputs=out,
           filters=64,
           kernel_size=[3, 3],
           padding="same",
           activation=tf.nn.relu)
    with tf.variable_scope("dense", reuse=tf.AUTO_REUSE):
        flattened = tf.reshape(out, [-1, 14 * 14 * 64])
        logits = tf.layers.dense(flattened, units=10, activation=tf.nn.relu)
    softmax = tf.nn.softmax(logits, name="softmax")

    loss = tf.losses.sparse_softmax_cross_entropy(labels=labels, logits=logits)
    optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.001)
    train_op = optimizer.minimize(loss=loss, global_step=tf.train.get_or_create_global_step())
    return loss, train_op

def model_2(features, labels, old_graph):
    with old_graph.as_default():
        with tf.variable_scope("input", reuse=tf.AUTO_REUSE):
            out = tf.reshape(features, [-1, 28, 28, 1])
        with tf.variable_scope("conv_1_5x5", reuse=tf.AUTO_REUSE):
            out = tf.layers.conv2d(
               inputs=out,
               filters=32,
               kernel_size=[5, 5],
               padding="same",
               activation=tf.nn.relu)
        with tf.variable_scope("conv_2_3x3", reuse=tf.AUTO_REUSE):
            out = tf.layers.conv2d(
               inputs=out,
               filters=32,
               kernel_size=[3, 3],
               padding="same",
               activation=tf.nn.relu)
        with tf.variable_scope("pool_3_2x2", reuse=tf.AUTO_REUSE):
            out = tf.layers.max_pooling2d(inputs=out, pool_size=[2, 2], strides=2)
        # This is the place where model 1 and 2 are actually different
        with tf.variable_scope("conv_4_5x5", reuse=tf.AUTO_REUSE):
            out = tf.layers.conv2d(
               inputs=out,
               filters=64,
               kernel_size=[5, 5],
               padding="same",
               activation=tf.nn.relu)
        with tf.variable_scope("dense", reuse=tf.AUTO_REUSE):
            flattened = tf.reshape(out, [-1, 14 * 14 * 64])
            logits = tf.layers.dense(flattened, units=10, activation=tf.nn.relu)
        softmax = tf.nn.softmax(logits, name="softmax")

    loss = tf.losses.sparse_softmax_cross_entropy(labels=labels, logits=logits)
    optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.001)
    train_op = optimizer.minimize(loss=loss, global_step=tf.train.get_or_create_global_step())
    return loss, train_op

features = tf.placeholder(shape=[None, 784], dtype=tf.float32, name="features")
labels = tf.placeholder(shape=[None], dtype=tf.int32, name="labels")

steps = 0
loss_op, train_op = model_1(features, labels)

with tf.train.MonitoredTrainingSession(checkpoint_dir="./model_1") as sess:
    while steps <= 20:
        features_, labels_ = mnist.train.next_batch(100)
        loss, _ = sess.run([loss_op, train_op], feed_dict={
            "features:0": features_, "labels:0": labels_})
        if steps % 5 == 0:
            print("loss at step {} = {}".format(steps, loss))
        steps += 1

tf.reset_default_graph()
tf.train.import_meta_graph("./model_1/model.ckpt-"+str(steps)+".meta")
old_graph = tf.get_default_graph()

steps = 0
loss_op, train_op = model_2(features, labels, old_graph)

with tf.train.MonitoredTrainingSession(checkpoint_dir="./model_2") as sess:
    while steps <= 20:
        features_, labels_ = mnist.train.next_batch(100)
        loss, _ = sess.run([loss_op, train_op], feed_dict={
            "features:0": features_, "labels:0": labels_})
        if steps % 5 == 0:
            print("loss at step {} = {}".format(steps, loss))
        steps += 1

If you can organize the "subgraphs" into tf.keras.Model objects, then object-based checkpointing (tf.train.Checkpoint in TF 1.9) is hopefully the most intuitive.
However, this is something that's in the early stages of being exposed and we haven't finished integration with MonitoredSession etc. just yet. @allenlavoie will have updates on that end, so assigning to him.
As an example of how things might look:
import tensorflow as tf

L = tf.keras.layers # Shorthand

def make_shared_model():
    return tf.keras.Sequential([
        L.Conv2D(filters=32, kernel_size=(5, 5), padding='same', activation=tf.nn.relu, input_shape=[28, 28, 1]),
        L.Conv2D(filters=32, kernel_size=(3,3), padding='same', activation=tf.nn.relu),
        L.MaxPool2D(pool_size=(2,2), strides=2)])

def make_model1():
    return tf.keras.Sequential([
        make_shared_model(),
        L.Conv2D(filters=64, kernel_size=(3, 3), padding='same', activation=tf.nn.relu),
        L.Flatten(),
        L.Dense(10)])

model1 = make_model1()
# Create a checkpoint with just the shared portion, which is model1.layers[0]
ckpt1 = tf.train.Checkpoint(m = model1.layers[0])

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    for step in range(20):
        # Get your data and train model1
        # Save a checkpoint of the shared components
        pass
    ckpt1.save("/tmp/checkpoint")

# Could have done all this in a single graph, but demonstrating two graphs
# just to be parallel to the code you had above
tf.reset_default_graph()

def make_model2():
    return tf.keras.Sequential([
        make_shared_model(),
        L.Conv2D(filters=64, kernel_size=(5, 5), padding='same', activation=tf.nn.relu),
        L.Flatten(),
        L.Dense(10)])

model2 = make_model2()
# Since model1.layers[0] and model2.layers[0] are isomorphic objects, they can
# save and load checkpoints compatible with each other
ckpt2 = tf.train.Checkpoint(m = model2.layers[0])
status = ckpt2.restore("/tmp/checkpoint")

with tf.Session() as sess:
  status.initialize_or_restore()
  # At this point, the weights for the common portion have been restored

Hope this is helpful while we make object based checkpointing more pervasive.

Nagging Assignee @allenlavoie: It has been 14 days with no activity and this issue has an assignee. Please update the label and/or status accordingly.

Nagging Assignee @allenlavoie: It has been 29 days with no activity and this issue has an assignee. Please update the label and/or status accordingly.

Nagging Assignee @allenlavoie: It has been 44 days with no activity and this issue has an assignee. Please update the label and/or status accordingly.

Nagging Assignee @allenlavoie: It has been 59 days with no activity and this issue has an assignee. Please update the label and/or status accordingly.

Nagging Assignee @allenlavoie: It has been 74 days with no activity and this issue has an assignee. Please update the label and/or status accordingly.

Nagging Assignee @allenlavoie: It has been 89 days with no activity and this issue has an assignee. Please update the label and/or status accordingly.

Nagging Assignee @allenlavoie: It has been 104 days with no activity and this issue has an assignee. Please update the label and/or status accordingly.

Nagging Assignee @allenlavoie: It has been 119 days with no activity and this issue has an assignee. Please update the label and/or status accordingly.

Nagging Assignee @allenlavoie: It has been 134 days with no activity and this issue has an assignee. Please update the label and/or status accordingly.

@tremblerz,
This can be easily achieved in Tensorflow 2.x using tf.keras.model.save_weights and then reuse those Weights by Loading the Weights using tf.keras.model.load_weights. Thanks!


Tutorial: Master/Detail - The Hero Editor - closing input tag?

Following the tutorial on https://angular.io/docs/ts/latest/tutorial/toh-pt1.html I wonder why they use a seperate closing tag for an input field in the following template:
template:`
{{title}}
{{hero.name}} details!
id: {{hero.id}}

name:

  `

It's gone now.


note field has no effect

Repro:
kazda-moore:
  type: manuscript
  title: The Minion Homomorphism Lattice
  author:
    - "Kazda, Alexandr"
    - "Moore, Matthew"
  date: 2019
  note: "unpublished draft"

#set page(width: auto, height: auto, margin: 1em)
See @kazda-moore.

#cite(<kazda-moore>, form: "full")

#bibliography("bib.yml")

Renders:

expected
To have the note show up
Remarks
This is related to #91, but seems orthogonal, because in that issue the problem was that the bibtex note field did not even make it to the hayagriva representation. Here, i'm giving it directly via yml, and it still does not show up.

See #220. If the note is still not present, the underlying CSL style is missing the field.


add more accessibility.verbosity settings / hints

          With the initial small set that we allow configuring in #180365, we should find other components that would benefit from:

a setting like this
an aria-label with helpful information and then a setting like this

Originally posted by @meganrogge in https://github.com/microsoft/vscode/issues/172465#issuecomment-1515470745

I noticed that the notebook editor has an aria alert when certain parts of a cell are focused with some navigation hints. I haven't actually seen it triggered much when playing around with it, but it seems potentially noisy and could benefit from this setting - https://github.com/microsoft/vscode/blob/main/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts#L2239

Should also potentially be added to the public api on the AccessibilityInformation type

This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

I'll continue to think about this, but considering this finished for now

Verify that the accessibility verbosity setting description makes sense and that it works when you have a screen reader on for accessibility.verbosity.notebook and accessibility.verbosity.keybindingsEditor
for notebooks, you should see press escape to focus the cell container... or press enter to focus the inner... depending on where you click.
for the keybindings editor, when you focus a row, you should see use space or enter to change the keybinding

@rebornix can you pls provide more specific steps for the notebook case as I found it hard to trigger as did @amunger ?

If I have a markdown cell in preview mode and hit enter, I hear 'press escape to focus the cell container'. If I then press escape to put the cell back into preview mode, I then hear 'press enter to focus the inner markdown editor. These instructions are not announced if I have accessibility.verbosity.notebook` disabled ✅.
When I click into a notebook cell editor I hear 'the editor is not accessible at this time', which I don't really understand, is that expected?

When I click into a notebook cell editor I hear 'the editor is not accessible at this time', which I don't really understand, is that expected?

That sounds like a bug, but unrelated to these changes. @rebornix might have more info

I'll file an issue


revise description of staff element

We should rethink the description of what a staff may be, e.g. a staff could be a single line instead of a group, the lines don't have to be equidistant, the lines don't have to be horizontal etc.
The current situation is not satisfactory.

A group of equidistant horizontal lines on which notes are placed in order to represent pitch or a grouping element for individual 'strands' of notes, rests, etc. that may or may not actually be rendered on staff lines; that is, both diastematic and non-diastematic signs.

What sort of repertories would you plan on expanding to?   "equidistant horizontal" lines could be simplified to "parallel lines" or looser wording such as "parallel-like lines" for some of the examples below.  The main intention is horizontal staff lines as found in both chant, mensural, and cmn.  Would you want to encompass corruptions of the standard notation of these, or expand to non-western music?  Then you also start having to deal with different concepts of pitch, rhythm, etc.
In terms of not horizontal, are you thinking in terms of this:

https://en.wikipedia.org/wiki/Ars_subtilior
There is a lot of modern notation that pushes notation to various limits.  Somewhat conservative would be George Crumb's music (Spiral Galaxy):

Both of these are traditional notation of staff music, but warped.  There are also graphical staff-like representations of music, and non-semantic artistic scores which do not a have a fixed meaning.
How does this relate to tablatures?   For a regular staff the pitch is defined by positions of marks (noteheads) relative to these lines.  For tablatures, the pitch is often the symbol itself rather than its relation to the typical staff lines. And I think tablatures encoded in MEI are using currently as a generic container, not necessarily expecting a direct mapping onto a staff for display of the notation.
There are also things like alternate representations of classical notation, such as klavarskribo, which is a hybrid between tablature and regular notation:
https://en.wikipedia.org/wiki/Klavarskribo

There are also staff lines for percussion instruments.  These lines do not indicate pitch but rather instruments.  And these "staff" lines often contain gaps in the equidistant spacing in order to group the instruments.

What sort of repertories would you plan on expanding to?

Whatever we decide. I was thinking about those "warped" examples, too. But my main point is that the current version somewhat tries to describe a standard 5-lines staff without saying so explicitly. Percussion staffs are not covered at all. So "one ore more parallel-like lines" would be a start.

Percussion staffs are not covered at all.

Here is an example of a percussion staff where there are two lines, but the two lines are spaced as if there were a missing middle line between the two:

This sort of staff would be useful to be able to encode in MEI.  There is also a question about how to encode the positions on the lines: should the top staffline be @loc="2" or @loc="4"?  Probably @loc="4" is better since intermediate positions 1 through 3 might need to remain addressable in some repertories, ie:

that may or may not actually be rendered on staff lines

I think the description obscures this bit too much, but the point is still that the "lines" may or may not actually be visible. Staff lines are a method of relating pitch, higher or lower, from another and in this sense they are equidistant parallel lines. The 'horizontal' is also strange, given the real-world examples shown, but it is also tightly bound to the metaphor of using space to show progress through time on the horizontal plane. Even the complex notations above are read 'left to right' (horizontal) although visually they may be altered to not appear as such.

We think that this is sufficiently clear for now. That doesn't mean it can't or shouldn't be changed, but we don't see value in this ticket for now. Closing for now.


feat(Message): add thread property

Summary

closes #290
Implements disnake.Message.thread which is the thread created on the message.
Checklist

[x] If code changes were made, then they have been tested

[x] I have updated the documentation to reflect the changes
[x] I have formatted the code properly by running task lint or pre-commit run --all-files

[x] This PR fixes an issue
[x] This PR adds something new (e.g. new method or parameters)
[ ] This PR is a breaking change (e.g. methods or parameters removed/renamed)
[ ] This PR is not a code change (e.g. documentation, README, ...)

Also, why was the thread type in types.Message deleted?

It wasn't?

Also, why was the thread type in types.Message deleted?

It wasn't?

Oh, my bad then, it should be added as well.


Are semi-permanant urls working?

-[ ] Generate quasi-permanent URLS for transcriptions
-[  ]create links for citation generator in the form that FreeBMD2 urls will take after the swap i.e.  www.freebmd.org.uk/pURL (i.e if someone follows the url they will be taken, at the moment, to FreeBMD1`
Thought this was done - Is this working? - for example a search for Ralph Alcock, died North Yorkshire before 1850 finds one, born
URL is: https://test3.freebmd.org.uk/best_guess/5f575390e937905a387b8688/4086908/ralph-alcock-death?locale=en - generates an error (sent to webmaster).  The url is not in the format I'd expect:
https://www.freereg.org.uk/search_records/5818b113e93790ec7582d971
so
https://test3.freebmd.org.uk/search_records/5f575390e937905a387b8688/4086908
bassed on https://test3.freereg.org.uk/search_records/5818b113e93790ec7582d971

@PatReynolds to check if a FreeBMD1 url will work on FreeBMD2

Example,:  death March 1840 OLDRED	Elizabeth		Rotherham	   XXII	354
https://www.freebmd.org.uk/cgi/information.pl?r=2943200:0854&d=bmd_1598251674
https://test3.freebmd.org.uk/cgi/information.pl?r=2943200:0854&d=bmd_1598251674 gives "missing page" error.
format of the entry information page on FreeBMD2 is:
https://test3.freebmd.org.uk/best_guess/5f6a1862e93790387daff6a9/2957203/elizabeth-oldred-death?locale=en
https://wwwtest3.freebmd.org.uk/cgi/information.pl?r=2943200:0854&d=bmd_1598251674 fails
https://test3.freebmd.org.uk/best_guess/information.pl?r=2943200:0854&d=bmd_1598251674 fails
https://test3.freebmd.org.uk/information.pl?r=2943200:0854&d=bmd_1598251674 fails
@Vino, can we generate the FreeBMD1 ID (e.g. 5f6a1862e93790387daff6a9/2957203/ from the database, and make FreeBMD2 serve the entry information based on that?)

@Vino-S could you give me an update?

Apologies @PatReynolds, I could not understand the requirement here:
In the below test3 URL:
https://test3.freebmd.org.uk/best_guess/5f6c7c0ce93790538dc66dc9/79590681/william-walker-callum-birth?locale=en
here: 79590681: Is FreeBMD1 Entry ID for which we are giving information
5f6c7c0ce93790538dc66dc9: It is the id of search-query from FreeBMD2 mongodb
best_guess: It is the MySQL table from which we serve the entry
william-walker-callum-birth: Its a friendly-url for each record. Its not complete in test3. test2 implementation is complete
For ease of understanding I have modified the url in test2
The same record will have the following url:
https://test2.freebmd.org.uk/5f6de44ae9379070b9e73937/entry-information/79590681/william-walker-callum-birth-durham-sunderland-v10a-p581?locale=en
If you want to have search_record like FreeREG/FreeCEN instead of entry-information in the above url, I can do that. I just kept entry-information because that is what we decided to call the search-detail page in BMD2
https://test3.freebmd.org.uk/cgi/information.pl?r=2943200:0854&d=bmd_1598251674 gives "missing page" error.
cgi/information.pl : will not work in FreeBMD2 becacuse we do not use cgi/information.pl page to serve entry-information. So it will fail in every scenario
Please do let me know your queries

Hi @PatReynolds , I now understand the requirement:
I have made an initial implementation and updated it in test2.
Below is an explanation: BMD uses
Example: https://test2.freebmd.org.uk/entry-information/cite=UZ91PIHaOD6cenhgEgfqZA&scan=1
https://test.freebmd.org.uk/cgi/information.pl?**cite=UZ91PIHaOD6cenhgEgfqZA&scan=1**
will give the same result.
Please have a look. The code is still in the initial stage may require performance tuning and refactoring

Not working at the moment.

Not working at the moment.

Hi @PatReynolds,
I tried to replicate the issue here but could not. The URLs mentioned above seems to be working. Could you give a screenshot, so that I could take a look further, please?

Hi @Vino-S

Birth of Ann Marie Austin:

But freebmd.org.uk/601a7283e93790586adefb5 is not the quasi-permanent url
(gets 'requested url is not found on this server error on FreeBMD1.
test 3 gives https://test3.freebmd.org.uk/601a744fe937905f37bda9f5 asnd that is not working on FreeBMD1 either.

FreeBMD2 URLS need to be exactly like the FreeBMD1 citations.

So, for example, the url shown on Freebmd2 needs to be replicated on freeBMD2
Marriage of Mary SMITH,  Sept 1865  Dewsbury	 9b	835 is (on FreeBMD1) https://www.freebmd.org.uk/cgi/information.pl?cite=MDLSyeQhqIQQVpPJz7ZNlw&scan=1 - and that is what it needs to be on FreeBMD2 (but  https://test2.freebmd.org.uk/cgi/information.pl?cite=MDLSyeQhqIQQVpPJz7ZNlw&scan=1 gets a routing error.

Hi @PatReynolds ,
We need to replace cgi/information.pl with 'entry-information/' for FreeBMD2.
So the BMD1 url:
https://www.freebmd.org.uk/**cgi/information.pl?**cite=MDLSyeQhqIQQVpPJz7ZNlw&scan=1
in BMD2(url):
https://test2.freebmd.org.uk/**entry-information**/cite=MDLSyeQhqIQQVpPJz7ZNlw&scan=1

@richardofsussex re our discussion this afternoon.

Both FreeREG and FreeCEN have URLs of the form:
https://www.freereg.org.uk/search_records/58d07868f493fd79c5c786ad/ronald-cartwright-baptism-staffordshire-willenhall-1913-05-27?locale=en
which can be cut down to:
https://www.freereg.org.uk/search_records/58d07868f493fd79c5c786ad/
and still resolve to the correct page.
It looks as though all three projects use UUIDs to provide a unique, persistent identifier for each primary record. (Is that correct, @Vino-S?)
I would therefore suggest that we should adopt the same convention for FreeBMD.  This would mean that the canonical URL for the BMD example discussed above would actually be:
https://test2.freebmd.org.uk/search_records/MDLSyeQhqIQQVpPJz7ZNlw/
As with the other two projects, we could have a user-friendly variant which adds human-readable details onto the end of the URL, so long as both formats resolve to the same page.
My only concern is that the path '/search_records/' doesn't indicate the type of record. Specifically, individuals and households in FreeCEN will have URLs which look the same as each other. Does this matter?


Create CODE_OF_CONDUCT.md

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


Fix typo in README.md: GLFW3 -> pygame

Coverage remained the same at 42.488% when pulling e7424fbdf22a2824ca9e8588d25a52da4aae12ad on ilius:master into 427ead566eea2ee20db685ab435b547a8417fa54 on swistakm:master.


Will be render to ... when the children a series of number.

<Dotdotdot>

4654654351321314313131321231231321313131213211313134654654351

</Dotdotdot>

will be render to (shown at broswer page)
...

Hmm I can't reproduce this, I assume it's some custom CSS issue

Hi, I'm also having this issue but I believe it is caused by a single word/string longer than what would fit on the lines you specify in clamp.


Added period in hostname

Description
Some of our routers have a . (period) in the hostname which was causing the regex prompt match to fail.
My issue is specifically in the classic variant of the nokia-sros device type but I added this to the default variant matches as well.
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?
My sample hostname is 'A:ear1.sr7s-1# '.  I modified my locally installed file after working on the regex to allow a "." inside the character list.  The specific portion of the regex was [\w\s_-]+ and I changed it to [\w\s_.-]+.
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also
list any relevant details for your test configuration
Checklist:

[ ] My code follows the style guidelines of this project (no GitHub actions complaints! run make lint before
committing!)
[ ] I have commented my code, pydocstyle and darglint are happy, docstrings are in google docstring format, and all
docstrings include a summary, args, returns and raises fields (even if N/A)
[ ] I have added tests that prove my fix is effective or that my feature works, if adding "functional" tests please
note if there are any considerations for the vrnetlab setup
[ ] New and existing unit tests pass locally with my changes

sounds good -- could you add a quick test case in here so we dont regress in the future? thanks a bunch!

Thanks for the hint on test cases.  Did the best I could here as this (test cases) are fairly new to me.
I did take a moment to log into the router and enter config mode but I only have the classic variant to get.  Here is the sample CLI output if you want to double check me.
<EMAIL_ADDRESS>password:
*A:ear1.sr7s-1# /configure port 1/1/c1
*A:ear1.sr7s-1>config>port# exit
*A:ear1.sr7s-1# logout
Shared connection to x.x.x.x closed.

np, thanks @MrPaulAR just fixed the missing ids and will merge once its happy. thanks again!


Linux build fails

Here is my example app.
Building and releasing the Electron app…
  • electron-builder  version=22.11.7 os=5.8.0-1039-azure
  • loaded configuration  file=package.json ("build" field)
  • rebuilding native dependencies  dependencies=<EMAIL_ADDRESS>platform=linux arch=x64
  • install prebuilt binary  name=@serialport/bindings version=9.2.0 platform=linux arch=x64 napi=
  • packaging       platform=linux arch=x64 electron=13.1.7 appOutDir=dist/linux-unpacked
  • building        target=snap arch=x64 file=dist/mindgraph_0.0.10_amd64.snap
  • building        target=AppImage arch=x64 file=dist/mindgraph-0.0.10.AppImage
  • application Linux category is set to default "Utility"  reason=linux.category is not set and cannot map from macOS docs=https://www.electron.build/configuration/linux
  • default Electron icon is used  reason=application icon is not set
  • application Linux category is set to default "Utility"  reason=linux.category is not set and cannot map from macOS docs=https://www.electron.build/configuration/linux
  • publishing      publisher=Github (owner: brainbang, project: mindgraph, version: 0.0.10)
  • uploading       file=mindgraph-0.0.10.AppImage provider=GitHub
  • publishing      publisher=Snap Store
  • uploading       file=mindgraph_0.0.10_amd64.snap provider=snapStore
  ⨯ snapcraft is not installed, please: sudo snap install snapcraft --classic
  ⨯ Cannot cleanup:

Error #1 --------------------------------------------------------------------------------
Error: /home/runner/work/mindgraph/mindgraph/node_modules/app-builder-bin/linux/x64/app-builder exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
    at ChildProcess.<anonymous> (/home/runner/work/mindgraph/mindgraph/node_modules/builder-util/src/util.ts:249:14)
    at Object.onceWrapper (node:events:514:26)
    at ChildProcess.emit (node:events:394:28)
    at maybeClose (node:internal/child_process:1067:16)
    at Process.ChildProcess._handle.onexit (node:internal/child_process:301:5)

Error #2 --------------------------------------------------------------------------------
Error: socket hang up
    at connResetException (node:internal/errors:691:14)
    at TLSSocket.socketOnEnd (node:_http_client:471:23)
    at TLSSocket.emit (node:events:406:35)
    at endReadableNT (node:internal/streams/readable:1331:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21)  failedTask=build stackTrace=Error: Cannot cleanup:
                                                                                Error #1 --------------------------------------------------------------------------------
Error: /home/runner/work/mindgraph/mindgraph/node_modules/app-builder-bin/linux/x64/app-builder exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
    at ChildProcess.<anonymous> (/home/runner/work/mindgraph/mindgraph/node_modules/builder-util/src/util.ts:249:14)
    at Object.onceWrapper (node:events:514:26)
    at ChildProcess.emit (node:events:394:28)
    at maybeClose (node:internal/child_process:1067:16)
    at Process.ChildProcess._handle.onexit (node:internal/child_process:301:5)
                                                                                Error #2 --------------------------------------------------------------------------------
Error: socket hang up
    at connResetException (node:internal/errors:691:14)
    at TLSSocket.socketOnEnd (node:_http_client:471:23)
    at TLSSocket.emit (node:events:406:35)
    at endReadableNT (node:internal/streams/readable:1331:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21)
    at throwError (/home/runner/work/mindgraph/mindgraph/node_modules/builder-util/src/asyncTaskManager.ts:88:11)
    at checkErrors (/home/runner/work/mindgraph/mindgraph/node_modules/builder-util/src/asyncTaskManager.ts:53:9)
    at AsyncTaskManager.awaitTasks (/home/runner/work/mindgraph/mindgraph/node_modules/builder-util/src/asyncTaskManager.ts:67:7)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at PublishManager.awaitTasks (/home/runner/work/mindgraph/mindgraph/node_modules/app-builder-lib/src/publish/PublishManager.ts:228:5)
    at Object.executeFinally (/home/runner/work/mindgraph/mindgraph/node_modules/builder-util/src/promise.ts:23:3)
/home/runner/work/_actions/samuelmeuli/action-electron-builder/v1/index.js:144
				throw err;
				^

Error: Command failed: npx --no-install electron-builder --linux --publish always
    at checkExecSyncError (child_process.js:621:11)
    at execSync (child_process.js:657:15)
    at run (/home/runner/work/_actions/samuelmeuli/action-electron-builder/v1/index.js:21:27)
    at runAction (/home/runner/work/_actions/samuelmeuli/action-electron-builder/v1/index.js:132:4)
    at Object.<anonymous> (/home/runner/work/_actions/samuelmeuli/action-electron-builder/v1/index.js:150:1)
    at Module._compile (internal/modules/cjs/loader.js:959:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10)
    at Module.load (internal/modules/cjs/loader.js:815:32)
    at Function.Module._load (internal/modules/cjs/loader.js:727:14)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1047:10) {
  status: 1,
  signal: null,
  output: [ null, null, null ],
  pid: 1785,
  stdout: null,
  stderr: null
}```

Of you look at the error at the top you need to install snapcraft and login. Or you need to define build parametters for Linux that does not produce a build for snapcraft.

Thanks! I ended up using electron-packager and my own options, as I don't want to build/publish for snapcraft, I just want regular builds for each target.
This is working pretty well for me, which creates a release, builds with electron-packager for each platform, zips them, and attaches to the release.

I might circle-back and use your suggestion when I have a bit to mess with it, as I like the more complete builds (DMG for mac, etc.)

@scope2229 any insight on how you add snapcraft to the process?

@lostdesign  you'll want to add snapcraft-action https://github.com/marketplace/actions/snapcraft-action, Provide your login details as github secrets and add them to ENV for easier access. once that is done it should run successfully.


Attempt to workaround the shallow fetch problem

Attempt to help #660.
Workaround steals from git fetch --unshallow no longer working - travis-ci/travis-ci #4942.

interesting, was $? removed from Ruby? src
Danger::DSLError:
[!] Invalid `Dangerfile` file: undefined method `success?' for nil:NilClass
 #  from Dangerfile:41
 #  -------------------------------------------
 #  # If it failed, fail the build, and include markdown with the output error.
 >  unless $CHILD_STATUS.success?
 #    # We want to strip ANSI colors for our markdown, and make paths relative
 #  -------------------------------------------

          1 Warning

:warning:
.gemspec modified

  Generated by :no_entry_sign: Danger

interesting, was $? removed from Ruby? src

Sorry, rubocop auto corrected, the $CHILD_STATUS is only available when we required english module.

Interesting :D


Update slf4j-api, slf4j-simple to 2.0.5

Updates

org.slf4j:slf4j-api
org.slf4j:slf4j-simple

from 1.7.36 to 2.0.5.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.slf4j" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "@monthly" },
  dependency = { groupId = "org.slf4j" }
}]

labels: library-update, early-semver-major, semver-spec-major, commit-count:1

Superseded by #348.


[DOC] enhance integration docs

Add the following to integrator section
What contracts should we be aware of right now?

"Lockup / vesting" contract & "staking / delegation" contract
https://github.com/near/initial-contracts

Can we have a look at the Ledger App implementation?

https://github.com/near/near-ledger-app

Does a validator control funds that have been delegated to them?

Delegation is custodial (you are transferring funds to a different account, the smart contract that implements staking pool)
We provide a reference impl.  being sec reviewed now.  being tested by 100 validators now
We allow validators to write and deploy new contracts.  up to users to decide if they want to delegate
Validators can impl diff logic and conditions around tax optimization, etc.
Currently no slashing but will be added as we add shards into the system. at that point validators can add an option to shield delegators from slashing (similar to tezos model)

How do we get the balance of an account after it has delegated funds?

Need to query staking pool to get balance

How old can the referenced block hash be before it's invalid?

About 1 epoch
There is a genesis param. to discover genesis params use:

http post https://rpc.testnet.near.org jsonrpc=2.0 id=dontcare method=EXPERIMENTAL_genesis_config

In the response we find "epoch_length":43200 (seconds, ~ 12 hrs)
Where can I learn more about transactions and epochs?

Life of a transaction
https://docs.near.org/docs/concepts/transaction
What is an epoch?
https://docs.near.org/docs/validator/validator-faq#what-is-an-epoch

What are the hardware requirements for running node?

https://docs.near.org/docs/roles/validator/hardware

How do we serialize transactions?

Simple binary serialization format that's deterministic
https://borsh.io

We have a simplified version implemented in C# here:
https://github.com/nearprotocol/near-client-unity/blob/master/Src/NearClientUnity/Transaction.cs#L34

How do we follow Tx status?

https://docs.near.org/docs/interaction/rpc#transaction-status

How do we know how much gas to put?

Reference documentation
https://nomicon.io/Economics/README.html

API documentation
https://docs.near.org/docs/interaction/rpc#gas-price

Issuer of a transaction should attach some amount of gas by taking a guess at budget which will get the transaction processed

Contract knows how much to fund different cross contract calls

Gas price is per block, it's fixed, changes from block to block depending on how full the block is. if blocks become more than half full then it increases.

We're considering adding a max gas price limit

Is phase 1 expecting any breaking changes to serialization or transaction handling?

Everything we're currently planning is backwards compatible

cc @ilblackdragon @eriktrautman in case we want to share updates to the docs or if i missed something here from my notes

add notes from email thread with @bowenwang1996 's reply
Which hash function/algorithm is used in the signing process?
We support both secp256k1 and ed25519 for account keys.
How are addresses generated
Please check out the spec here on accounts https://nomicon.io/DataStructures/Account.html.
What is signed? How is the hash preimage generated? Which fields does the raw transaction consist of?
For a transaction, we sign the hash of the transaction. More specifically, what is signed is the sha256 of the transaction object serialized in borsh (https://github.com/near/borsh). For more details on the transaction object, please check out https://docs.near.org/docs/concepts/transaction.
Can we see code examples? – preferably in C#, C++, JS, PHYTON or… (in preferred order)
We don't have an implementation in C# or C++. For JS implementation, checkout https://github.com/near/near-api-js/blob/d7f0cb87ec320b723734045a4ee9d17d94574a19/src/transaction.ts#L212. For python implementation, checkout https://github.com/nearprotocol/nearcore/blob/bbd3b9458f46f4b4b0c00f2577b4d8b7b3652920/pytest/lib/transaction.py#L130. Please note that the python implementation is used purely for testing purposes so might not be as polished.
How many keys are used?
An account can have arbitrarily many keys, as long as it has enough tokens for their storage.
Which balance look-ups exists? What is required?
We have a RPC for viewing account state https://docs.near.org/docs/interaction/rpc#view_account. JS implementation https://github.com/near/near-api-js/blob/d7f0cb87ec320b723734045a4ee9d17d94574a19/src/providers/json-rpc-provider.ts#L73. Note that in this rpc you can specify the finality requirement (whether to query the latest state or finalized state). For custody purposes, it is recommended not to rely on latest state but only what is finalized.
How are the transactions published to the Blockchain?
This is a very broad question and can take an hour or more to answer in full detail. In short transactions are included in chunks. You can think of a chunk as a shard block. Chunk headers are included in blocks. If you want to learn more, https://docs.near.org/docs/roles/integrator/errors/introduction#the-life-of-a-transaction provides a good start.
Any development plans for the crypto? – planned changes in handling/signing etc.
For account keys I don't think we plan to change anything. We may support additional curves in the future (I am not aware of any that we are actively considering). For validator keys we are considering switching to bls, but I think that is not important for custody purposes.
Is it possible to get access to developers, who know the crypto?
We mostly use standard libraries and for signing transactions, there is no crypto that we write on our own.

The question about How old can the referenced block hash be before it's invalid? is confusing. It should specify that this is the reference block hash for transactions. Also we currently set it to 86400.
Also note that in the following answer I was talking about crypto related to transactions specifically.

We mostly use standard libraries and for signing transactions, there is no crypto that we write on our own.

We do have crypto that we developed on our own but not for anything related to transactions.

nice, thanks @bowenwang1996
adding @ilblackdragon's clarification from the email thread as well:

To clarify for question of transaction validity, it's 86400 blocks or ~24 hours: https://github.com/nearprotocol/nearcore/blob/master/neard/res/mainnet_genesis.json#L212


Where to place nginx customisations

Important notices
Our forum is located at https://forum.opnsense.org , please consider joining discussions there in stead of using GitHub for these matters.
Before you ask a new question, we ask you kindly to acknowledge the following:

[ X] I have read the contributing guide lines at https://github.com/opnsense/plugins/blob/master/CONTRIBUTING.md
[ X] I have searched the existing issues, open and closed, and I'm convinced that mine is new.
Hi.
I'm trying to replicate a working setup from a standalone nginx installation into the OPN nginx plugin. I am not using nginx as a reverse proxy, only as webserver behind HAProxy as reverse proxy.
So far I can see traffic hitting nginx but I can't get the service to work. It's most likely that I need to add customisation to the configuration at least whilst diagnosing. My question is not how nginx works or the integration between nginx and haproxy but about the customisation of the nginx plugin plumbing.
Setup is:
OPNsense 22.1.10-amd64
FreeBSD 13.0-STABLE
OpenSSL 1.1.1q 5 Jul 2022
os-nginx (installed)   1.28_1

The question: I want to include for instance a njs module in my upstream "upstream15ad4a8a20f14c19a47af261eaa5249e" for example.
Similar a logging customisation for my stream block.
Where do I need to place them please?
p.s. the README in the opnsense_stream_vhost_plugins directory has this
"Place server {} in this directory - they are not affected by the enable / disable flag"
but I fail to understand if that's my hint.
My config:
cat /usr/local/etc/nginx/nginx.conf
load_module /usr/local/libexec/nginx/ngx_stream_module.so;
load_module /usr/local/libexec/nginx/ngx_http_naxsi_module.so;
load_module /usr/local/libexec/nginx/ngx_mail_module.so;
load_module /usr/local/libexec/nginx/ngx_http_brotli_filter_module.so;
load_module /usr/local/libexec/nginx/ngx_http_brotli_static_module.so;
load_module /usr/local/libexec/nginx/ngx_http_js_module.so;

user www staff;
worker_processes 1;

error_log  /var/log/nginx/error.log;

events {
    worker_connections  1024;
}

http {
include       mime.types;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';
log_format  main_ext  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" '
                      '"$host" sn="$server_name" '
                      'rt=$request_time '
                      'ua="$upstream_addr" us="$upstream_status" '
                      'ut="$upstream_response_time" ul="$upstream_response_length" '
                      'cs=$upstream_cache_status';
log_format  handshake   '"$http_user_agent" "$ssl_ciphers" "$ssl_curves"';
log_format  anonymized  ':: - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

#tcp_nopush     on;
# https intercept detection
js_import /usr/local/opnsense/scripts/nginx/ngx_functions.js;
js_set $tls_intercepted ngx_functions.check_intercept;

# 200M should be big enough for file servers etc.
client_max_body_size 200M;
brotli_static on;
brotli on;
gzip_static on;
gzip on;
server_tokens off;
sendfile Off;
default_type  application/octet-stream;
keepalive_timeout 60;

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

# TODO add when core is ready for allowing nginx to serve the web interface
# include nginx_web.conf;

# UPSTREAM SERVERS

include opnsense_http_vhost_plugins/*.conf;

}
stream {
    # LOG FORMATS
    log_format main '$remote_addr [$time_local] '
                     '$protocol $status $bytes_sent $bytes_received '
                     '$session_time';
    log_format anonymized ':: [$time_local] '
                     '$protocol $status $bytes_sent $bytes_received '
                     '$session_time';

    # UPSTREAM SERVERS
    upstream upstream15ad4a8a20f14c19a47af261eaa5249e {
        server <IP_ADDRESS>:53 weight=5;
    }
    upstream upstream7f19e5deb72b4c318458205c45343b52 {
        server <IP_ADDRESS>:8053 weight=5;
    }

    # upstream maps

    include opnsense_stream_vhost_plugins/*.conf;

    # servers
    server {

        listen <IP_ADDRESS>:8054 proxy_protocol;

        access_log  /var/log/nginx/stream_7e5528ea-bfe6-46f5-be19-3e967da85398.access.log main;
        error_log  /var/log/nginx/stream_7e5528ea-bfe6-46f5-be19-3e967da85398.error.log info;

        include 7e5528ea-bfe6-46f5-be19-3e967da85398_pre/*.conf;

        proxy_ssl off;
        proxy_pass upstream15ad4a8a20f14c19a47af261eaa5249e;
        proxy_protocol on;

        include 7e5528ea-bfe6-46f5-be19-3e967da85398_post/*.conf;

    }
}
# mail {
# }

CC @kulikov-a @fabianfrz

Hi!
I think at the moment ngx_stream_js_module.so is not loaded in current version of plugin. So you can try to add load_module /usr/local/libexec/nginx/ngx_stream_js_module.so; after the line 7 in nginx.conf template:
https://github.com/opnsense/plugins/blob/c2184c76a4dda10bd3699eb4054da5454f0e0edd/www/nginx/src/opnsense/service/templates/OPNsense/Nginx/nginx.conf#L7
after that i would try to use opnsense_stream_vhost_plugins/*.conf hook for custom log format and server block directives like (create mycustomserver.conf):
    log_format myformat '$remote_addr [$time_local] '
                     '$protocol $status $bytes_sent $bytes_received '
                     '$session_time';

    js_import stream.js;

    js_set $bar stream.bar;
    js_set $req_line stream.req_line;

    server {
        # mycustomserver1
        listen 12345;

        js_preread stream.preread;
        return     $req_line;
    }

    server {
        # mycustomserver2
        listen 12346;

        access_log  /var/log/nginx/stream_mycustomserver2.access.log myformat;
        error_log  /var/log/nginx/stream_mycustomserver2.error.log info;

        js_access  stream.access;
        proxy_pass  upstream7f19e5deb72b4c318458205c45343b52;
        js_filter  stream.header_inject;
    }

so it will use gui-created upstreams with completely custom stream servers
(dont forget to hit Apply in GUI to re-apply templates ;) )
did not tested, sorry

Ok thanks. I'll try this.

I've not solved my service problem but this has done the job, thank you.


Q: What I should set to idColumn if the table doesn't have id collumn

I have a table like that:

product_id
category_id

2
5

2
4

3
4

... which doesn't contain id column. When I querying that table using Objection.Model I get an error: "insert into "product_category" ("category_id", "product_id") values ($1, $2) returning "id" - column "id" does not exist"
Then I added this code to my model.
static get idColumn() {
    return ['product_id', 'category_id'];
}

Now I get an error like that: You should only pass objects to $setJson method. $setJson method was given an invalid value 6
I don't know how to fix that :/ Help me plz. Thanks 😊

That's a many-to-many pivot table right? And that error is coming from a $relatedQuery or an insertGraph or upsertGraph call when a relation is being inserted? You need to register that model class for the many-to-many relation using modelClass like this
static get relationMappings() {
  return {
    theFailingRelation: {
      ...,
      join: {
        ...
        through: {
          ...
          modelClass: TheJoinTableModelClass
        }
      }
    }
}
    }
  }
}

In the future, please provide more information so that I don't have to spend time quessing what you may be doing.

Yes, thanks. I'm sorry to waste your time. Do you have a BMC link? I want to support the project.

Thanks for asking but I don't have a BMC. I'm happy to help. You just get the help faster if the issue has more information :slightly_smiling_face:

@koskimas
I'm facing similar issue even though I have defined modelClass ..
      ...
      post_likes: {
        relation: Model.ManyToManyRelation,
        modelClass: __dirname + '/user.model',
        join: {
          from: 'posts.id',
          through: {
            modelClass: __dirname + '/post_likes.model',
            from: 'post_likes.post_id',
            to: 'post_likes.user_id',
          },
          to: 'users.id',
        },
      },
     ...

This is my PostLike Model,
export class PostLike extends Model {
  static get tableName() {
    return 'post_likes'
  }

  static get relationMappings() {
    return {
      post: {
        relation: Model.BelongsToOneRelation,
        modelClass: __dirname + './post.model',
        join: {
          from: 'post_likes.post_id',
          to: 'posts.id',
        },
      },
      user: {
        relation: Model.BelongsToOneRelation,
        modelClass: __dirname + './user.model',

        join: {
          from: 'post_likes.user_id',
          to: 'users.id',
        },
      },
    }
  }
}

I'm getting error id" - column "id" does not exist, when
    await PostLike.query().insert({
      post_id: pid,
      user_id: userId,
    })


docs bios-boot-sequence has issues in nodeos command line

https://developers.eos.io/welcome/latest/tutorials/bios-boot-sequence#15-start-the-genesis-node
parameters with a value should have an = between the key and the value, as in
--http-server-address=<IP_ADDRESS>:8888

Todd Fleming, [25.11.21 11:13]
[In reply to Matthew Darwin - EOS Nation]
nodeos doesn't require that. Unfortunately people new to scripting can make the mistake of accidentally passing --http-server-address <IP_ADDRESS>:8888 as a single arg instead of 2.
Todd Fleming, [25.11.21 11:16]
Or use 2, but accidentally include a space in one of them


Link class refactored to remove world context.

@varunagrawal we merged to a branch not master. Can you approve so we can merge Dan's PR into master? @danbarla and I created Issue #260 to bring back wTl as bMlink.

In general it would be a good idea to link PRs to issues so we can track progress given we have a good amount of activity going on. :slightly_smiling_face:

LGTM but we should keep an eye on resolving #80

Yeah, this PR goes towards #80


Fix equals and hashCode methods in PlaylistData

The equals and hashCode methods for PlaylistData are broken since they use super.hashCode and super.equals, i.e. java.lang.Object. This makes it hard to check equality between Playlists. Here's a fix for that!

@carlanton Thank you for noticing this bug. It used to have a super class, but no more (thankfully).
@sunglee413 LGTM


Support setting the cookie's domain

Hi,
as it seems, it's not possible to set the domain for the session cookie, only the value. This means that both the frontend and backend will need to run on the same domain, without subdomain or else the browser won't set the cookie.
Related link to explain what's happening: https://stackoverflow.com/a/23086139

You should be able to set the domain in Oak's CookiesSetDeleteOptions, which we reveal through cookieSetOptions when creating the session instance.
const store = new MemoryStore()

const session = new Session(store, {
  cookieSetOptions: {
    domain: 'api.example.com'
  }
});


Add external Pony Connector sink

This is an external sink that uses the Connector protocol. It is based
on the Python ALOC Sync in testing/correctness/tests/aloc_sink.
This implementation is partially tested and should only be considered
partially working. It does not persist any data. It was created as an
exercise to see what would be needed to implement an sink in Pony.
There are design notes as well as notes about future work in the
README file.
Closes #3131

@aturley Documentation looks good. I've been following code updates over time and I looked over this again, and basically it looks ready to me, but I'd like to go through it again tomorrow in case I have more comments to add.

I think this is good for now. I'd say go and ahead and merge.


Fixes #1792 - Move externalId from User to ProjectMembership

Coverage: 93.943% (-0.02%) from 93.958% when pulling 3daaa0b0656f6652f801cef1680bb98a871c5c35 on cody-move-externalId-to-project-membership into 589d5cca5692bdffe56e7f4701abd405187f9b21 on main.


Docker extension error: Port is already allocated

Describe the bug
After installing Microcks docker extension, it can be launched b/c of the port issue no matter what offset you set in the config.
Port is already allocated. Please use a different port by changing the port offset in the settings dialog.
Microcks version or git rev
0.2.0
Install method (docker-compose, helm chart, operator, docker-desktop extension,...)
From the docker extension marketplace

Hello @hguerrero, here you go https://gist.github.com/amseager/9195e106a9ae7a9270a688febad655ff
Found in logs that network microcks-extension-network not found, created it manually from console, and looks like it solved the problem.
So, 2 small issues - the network is not created automatically, and the error message is misleading in this case

Thank you @amseager
As I expected, it is another exception caught by the same code that throws a misleading message.
Let me check and work on this. I just wanted to let you know that I update the title of this issue for reference.


Some parts like the router class is not swifty

A lot of this architecture seems very unswifty and seems designed for older languages. For example no good swift developer would use the clunky Router class instead of a simple extension of the view controller.

More Swifty router implemented in PR #25. Instead of segues, use the extended show API with completion handler for configuring target view controller:
class ListOrdersRouter: NSObject, RouterProtocol,...
{
  func routeToShowOrder(for id: String)
  {
    show(storyboard: .showOrder) { (destinationVC: ShowOrderViewController) in
      let selectedOrder = self.dataStore?.orders?.first { $0.id == id }
      var destinationDS = destinationVC.router!.dataStore!
      self.passDataToShowOrder(for: selectedOrder, destination: &destinationDS)
    }
  }

  func routeToCreateOrder()
  {
    show(storyboard: .createOrder) { (destinationVC: CreateOrderViewController) in
      var destinationDS = destinationVC.router!.dataStore!
      self.passDataToCreateOrder(source: self.dataStore!, destination: &destinationDS)
    }
  }

Also, each scene has its own storyboard instead of placed all in one main storyboard:

Let me know what you think.

Hey, the changes are very nice. Separate storyboards for each unique scene is the way to go. However the router class itself is still not swifty. Swift is a protocol and extension orientated language, so having a class with 2 methods and a weak property to the VC is clunky. It’s also a memory leaker if weak is forgot as the VC is also referencing the rooter class. That whole class for example could easily just be a extension of the view controller. I am just pointing this out as I feel clean architecture is outdated for Swift, especially they way most tutorials and the cleanSwift website do it. Thanks for your detailed reply and your awesome repo.

Cool thx for taking a look and the feedback. I definitely agree with all your points.
I have another repo called stateless_arch where all parts are value-type structs instead of classes. My thought is the architectural flow should be stateless and immutable, with the exception of the view controller of course. That should be safer, simpler to think about, and in the spirit of Swift philosophy. It’s a bit of work so still chipping away at it.


Installing and working with JuliaLang NOT from conda

This is an issue stemmed from #1180 and details how to install and work with Julia and not use the conda-forge installation since that one is dead now (installing it from conda results in a ton of issues, try it yourself!). So, non-conda julia install:
wget https://julialang-s3.julialang.org/bin/linux/x64/1.0/julia-1.0.3-linux-x86_64.tar.gz
tar xfz julia-*-linux-x86_64.tar.gz
ln -s $PWD/julia-*/bin/julia $HOME/$ANACONDA/envs/esmvaltool/bin
which julia
julia --help
julia esmvaltool/install/Julia/setup.jl

softlinking Julia to the $ANACONDA bin is important so that the diagnostic picks up the executable; $ANACONDA is just your anaconda3 repo
If you are behind a firewall (like on Jasmin) you will see something like:
(esmvaltool) [valeriu@jasmin-sci2 esmvaltool]$ julia esmvaltool/install/Julia/setup.jl
┌ Info: Installing the packages from
└   scriptDir * "/julia_requirements.txt" = "/home/users/valeriu/esmvaltool/esmvaltool/install/Julia/julia_requirements.txt"
┌ Info: Installing
└   pkgName = "ArgParse"
   Cloning default registries into /home/users/valeriu/.julia/registries
   Cloning registry General from "https://github.com/JuliaRegistries/General.git"
ERROR: LoadError: failed to clone from https://github.com/JuliaRegistries/General.git, error: GitError(Code:ERROR, Class:OS, failed to truncate pack file '/home/users/valeriu/.julia/registries/General/.git/objects/pack/pack_git2_COqrfy': Permission denied)
Stacktrace:
 [1] pkgerror(::String) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/Pkg/src/Types.jl:120
 [2] #clone#2(::String, ::Base.Iterators.Pairs{Symbol,LibGit2.CachedCredentials,Tuple{Symbol},NamedTuple{(:credentials,),Tuple{LibGit2.CachedCredentials}}}, ::Function, ::String, ::String) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/Pkg/src/GitTools.jl:107
 [3] #clone at ./none:0 [inlined]
...blah blah...

that is easily fixable by shoving in the General index via a simple git clone:
git clone https://github.com/JuliaRegistries/General.git ~/.julia/registries/General

and then repeating the installation of the required packages.
We need this info in the documentation...

edited the documentation in #1259

closed by merging #1259


Scope Selectors

Add a core feature that allows to resolve all dependencies in a certain Scope.
This can be done in user space resolving all Resources and compiling the "per scope" map as well as binding some means of access to it. Another approach could be to allow resolving a sub Injector context that only contains that scope. This most likely requires some form of injector implementation support.
In this context it also seems useful if one could annotate instance, like a scope, with some markers and resolve instances by the markers. Again the resolution could be build in user space based on Resources. Its unclear where or in what form the annotations would be stored and how the are declared. Logical would be a system similar to the plug-in mechanism where these are just binds of a special type that somehow link to another resource.

Maybe this should instead be a different feature that allows to filter resources before the final injector is build.


Consider dropping IE 11 support

This came up in https://github.com/go-gitea/gitea/pull/6139.
In my opinion it's time we drop IE11 support. It's cumbersome to test on for non-Windows users and has a ton of weird bugs that are never going to be fixed. I think we should put a statement to only support modern (evergreen) browsers.
Do we have any statistics how many users use IE on the gitea website?

This gets a big thumbs up from me as well, Microsoft is all in on the new version of Edge running Blink and IE11 will only get fixes for very serious issues, it's about as dead in the water as it gets. Furthermore, I would be very surprised if the kind of people who use Gitea are also the same kind of people who use IE11.

@sondr3 sadly I am one of those people who are required to use IE11 some of the time.
Also there are no analytics being collected on the main site.

Windows 7 will EOL in around 11 months and from that point on, the only "supported" remaining version will be on Windows 10 LTSB. A shame really that MS does not seem to intend to kill it off entirely.

Seems to me like breaking compatibility to make a statement should be avoided. However, if maintaining said compatibility actively hinders the development of gitea, then it it should be considered.

Also notable: GitHub also no longer supports IE11.

I think it's time we do this in the next major version (1.13).

I think we can put it to milestone 1.13?

Indeed, 1.13 was my plan too.


Launches not updating (Upcoming is still Starlink 20)

Hey folks,
It appears the DB isn't updating after yesterday's launch. I think this is the second time the upcoming launches haven't updated immediately after a launch. Did something change in the update schedule, or does this have to do with the new version?
Let me know if there's anything we need to do on our ends to get the latest that we're not aware of.
Thanks!
Tim

Seems fixed now

Nothing on your end, just missed the upcoming field as I updated data for the launch last night. 🙃


Add missing citations to notebooks

Let's see if this renders correctly:

https://clifford--352.org.readthedocs.build/en/352/tutorials/apollonius-cga-augmented.html
https://clifford--352.org.readthedocs.build/en/352/tutorials/euler-angles.html
https://clifford--352.org.readthedocs.build/en/352/tutorials/linear-transformations.html

Citations seem to work


Add Slim's psr-17 factories

closes #190

Q
A

Bug fix?
no

New feature?
yes

BC breaks?
no

Deprecations?
no

Related tickets
fixes #190

Documentation
https://github.com/php-http/documentation/pull/280

License
MIT

What's in this PR?
Slim's PSR17 implementation can now be automatically discovered.
Checklist

[x] Updated CHANGELOG.md to describe BC breaks / deprecations | new feature | bugfix
[x] Documentation pull request created (if not simply a bugfix)

thank you!

When can we expect a new release?

oh, a release would have made sense :-/
here you go: https://github.com/php-http/discovery/releases/tag/1.13.0


Requirements txt error

Hi,
When I try to install the package, this is the error message I receive.
Collecting feed_seeker   Using cached https://files.pythonhosted.org/packages/fa/5e/ec1666a581b15829bbf2d4f83013e47f8ad89d99de82f905c73f13befe15/feed_seeker-1.0.0.tar.gz     Complete output from command python setup.py egg_info:     Traceback (most recent call last):       File "<string>", line 1, in <module>       File "/private/var/folders/5w/s8hbw79j3vqc5cj4bg_gw7bh0000gn/T/pip-install-282Sdn/feed-seeker/setup.py", line 13, in <module>         with open(requirements_file) as f:       File "/Users/furkan/latestPY/lib/python2.7/codecs.py", line 896, in open         file = __builtin__.open(filename, mode, buffering)     IOError: [Errno 2] No such file or directory: '/private/var/folders/5w/s8hbw79j3vqc5cj4bg_gw7bh0000gn/T/pip-install-282Sdn/feed-seeker/requirements.txt'
----------------------------------------

Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/5w/s8hbw79j3vqc5cj4bg_gw7bh0000gn/T/pip-install-282Sdn/feed-seeker/

Hi, could you please try installing this with Python 3.5+?

Working now. Thanks! I didn't realize it was Python 3+

Thanks for the report, it's our bad. Stated the required Python version explicitly in
f745ea3, will release at some point in the future.


Qt platform issue in benchmark

When I run notebook_benchmark in jupyter it works fine, plots of benchmark appear, while executing it on pycharm, the below error appears due to a Qt platform issue even though I've reinstalled it several times and the agents are trained and all codes are implemented successfully except only ploting part.
##################### Error#############################
QObject::moveToThread: Current thread (0x20247e0) is not the object's thread (0x5c0a590).
Cannot move to target thread (0x20247e0)
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/ahmed/PhD/CyberBattleSim/CyberBattleSim/cybervenv/lib/python3.8/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: xcb, eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl.
###########################################################
Has anyone encountered such a problem?

The issue is related to qt in Linux, so if you use pycharm,, delete/remove plugins from cv2 folder
/venv/lib/python3.7/site-packages/cv2/qt/plugins


Dynamic ECMA2020 import not working client-side, only server-side

In Meteor, I've been dynamically importing and using zxcvbn and it works great.
import('/node_modules/zxcvbn/dist/zxcvbn.js').then( ({default:zxcvbn}) => {
Meteor offers ECMA2020 style dynamic imports.
https://docs.meteor.com/packages/dynamic-import.html
However when I try to dynamically import zxcvbn-ts, the import comes through on the server-side during the React SSR (server-side render). But the result of the import() promise is empty on the clientside :(
import('/node_modules/@zxcvbn-ts/core/dist/zxcvbn-ts.js').then( foo => { console.log("foo", foo)
Foo shows an empty import: { default: {}, Symbol("__esModule"): true, Symbol(Symbol.toStringTag): "Module" }
And simultaneously the same dynamic import code works fine on the server-side during SSR
foo [Object: null prototype] [Module] {
  default: { zxcvbnts: { core: [Object] } },
  zxcvbnts: { core: { ZxcvbnOptions: [Options], zxcvbn: [Function: zxcvbn] } },
  [Symbol(__esModule)]: true
}

So, on the server side, I can do this without issues:
import('/node_modules/@zxcvbn-ts/core/dist/zxcvbn-ts.js').then( ({zxcvbnts:{core:{zxcvbn, ZxcvbnOptions}}}) => {
I had a similar problem to this in another package, not sure if seeing the issue and solution there would be helpful
https://github.com/center-key/pretty-print-json/issues/41
I wondered if perhaps your @ sign in the module name is causing a problem. But if I put in \\@ in the path then I get an error saying module not found. So the import code above definitely "finds" the module, whatever that means. But the import comes through empty on the clientside.
I'm importing the stuff separately like this.
import('/node_modules/@zxcvbn-ts/core/dist/zxcvbn-ts.js').then( ({zxcvbnts:{core:{zxcvbn, ZxcvbnOptions}}}) => { ...

import('/node_modules/@zxcvbn-ts/language-common/dist/zxcvbn-ts.js').then( ({default:zxcvbnCommonPackage}) => { ...

import('/node_modules/@zxcvbn-ts/language-en/dist/zxcvbn-ts.js').then( ({default:zxcvbnEnPackage}) => { ...

Then updating state when all the imports have come through, etc.

Is it intended that you import the browser zxcvbn-ts file instead of the esm file?
If i understand this correct you should do something like that
import('/node_modules/@zxcvbn-ts/core/dist/index.esm.js').then( ({zxcvbn, ZxcvbnOptions}) => { ...

import('/node_modules/@zxcvbn-ts/language-common/dist/index.esm.js').then( ({default: zxcvbnCommonPackage}) => { ...

import('/node_modules/@zxcvbn-ts/language-en/dist/index.esm.js').then( ({default: zxcvbnEnPackage}) => { ...

@MrWook thank you, I implemented your suggestion. It works :)


Add option for unordered list style of TOC

Issue
The created TOC uses dash (-) as symbol for the generated unordered list items. If the document contains another symbol for the list items, like asterix (*), markdownlint mentions MD004 - Unordered list style telling the unordered list style should be consistent within the document.
Example:
# Test1

<!-- TOC -->

- [heading 1](#heading-1)
- [Next heading](#next-heading)

<!-- /TOC -->

## heading 1

This is an unordered list, using asterix symbol:

* one
* two

## Next heading

Suggestion
Add an option for unorderd list symbol style, allowing the user to select the preferred symbol, means dash, asterix or plus.
Code
Extension.js
...
this.options = {
  DEPTH_FROM: 1,
  DEPTH_TO: 6,
  INSERT_ANCHOR: false,
  WITH_LINKS: true,
  ORDERED_LIST: false,
  UNORDERED_LIST_SYMBOL: '-',
  UPDATE_ON_SAVE: true,
  ANCHOR_MODE: ANCHOR_MODE_LIST[0]
};
...
// about line 282:
_this.options.ORDERED_LIST ? (++indicesOfDepth[length] + '. ') : '' + _this.options.UNORDERED_LIST_SYMBOL + '' + ' ',

Thanks for this issue, this is a great idea as it allows combining markdown TOC and markdown-lint.

Hi @PhilippeCuvillier , is there any target milestone for this feature to be implemented? My .md document contains * for unordered lists and after TOC is created, markdownlint gives ~100+ warning. :blush: I 'll replace them to - as I don't want to give up from TOC.

Where are we on this 1 year later?


Run "pre-commit" autoupdate and hooks on all

Fix trailing whitespaces
Add new lines

Static tests failing:

Min Platform Version


Use pseudoterminals (PTY) instead of pipes for terminal emulation

Consider using pseudoterminals instead of subprocess.PIPE for implementing the terminal emulation functionality. Unlike pipes, pseudoterminals allow to truly emulate the behavior of a terminal, such as letting programs see the dimensions of the terminal, among other features.
I have stumbled upon the yawinpty (for Windows) and ptyprocess (for POSIX-like platforms, i.e., Linux, macOS, and the like) libraries for achieving this. They also don't require you to set up a separate thread―they simply have read/write methods.
Unfortunately, yawinpty and ptyprocess are very different by design from each other. However, I believe that it shouldn't be too difficult to implement an abstraction layer for them.

Great suggestion! there are many limitations to the current way biscuit's integrated terminals are set up, so I just left it at a works-dont-touch state xd but yea this is the right way to do it, huge thanks for also sharing the packages :)

since yawinpty is deprecated, using pywinpty


All Hosts Minor update for consistent terminology

Minor update to ensure consistent usage of WKWebView throughout article.

Docs Build status updates of commit 57d872e:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/develop/itp-and-third-party-cookies.md
:white_check_mark:Succeeded
View

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


Improvement on button UI/UX

I've contributed on improvement of UI/UX of button
Hope you like it

better and cleaner


Fix implies operator in SAT_plan

temporary fix for eliminate_implications to make the build pass

Thanks for noticing that, @Chipe1. I should have communicated the change better, but I think this is the best way. Actually, now that we have objects for implies, etc., it might be better to use implies.op instead of ==>; what do you think?

@norvig Yes, but I was thinking that we bind '==>' to implies.op and add a new rule to 'or' Expr with str. This would enable us to do A | '==>' | B which looks better but makes the code harder to modify if there are any changes in the future. Should I make the mentioned change or go with replacing ==> with implies.op.

Very Interesting. So you're saying you want to have
 P |'==>'| Q

We could make that work, for sure. That's a very clever variation on
Jamitzky's trick. So we now have five proposed notations:
 P |implies| Q
 P |'==>'| Q
 implies(P, Q)
 expr('P ==> Q')
 Expr('==>', P, Q)

What I like about your idea is that it gives the user only one thing to
remember -- that implication is spelled as '==>'; the user does not also
have to remember the name 'implies'.
Another good thing about your idea is that users could do things like
 (x |'>'| y)

without having to declare "gt = InfixOp('>')" ahead of time.
To implement your idea, we would have a or method on Expr that would
return a normal Expr if the rhs is an Expression, but if the rhs is a
string, it would return, let's call it PartialExpr('==>', self).  And then
PartialExpr would have a or method that returns a full Expr. No ror
methods necessary.
Overall, I think I like your idea better, but I'm not sure what the average
user would like, so I'd like to hear if other people have opinions.
-Peter
On Sun, Apr 10, 2016 at 12:28 AM C.G.Vedant<EMAIL_ADDRESS>wrote:

@norvig https://github.com/norvig Yes, but I was thinking that we bind
'==>' to implies.op and add a new rule to 'or' Expr with str. This would
enable us to do A | '==>' | B which looks better but makes the code
harder to modify if there are any changes in the future. Should I make the
mentioned change or go with replacing ==> with implies.op.
—

The implementation would only take one line as we already have InfixOp class. Instead of using pre-created instances of it(eg. implies, rimplies, equiv) we would create the objects directly from their strings.

Correct -- in fact, the implementation should take a negative number of lines, since we can simplify the InfixOp class. Currently, it has to serve two purposes -- first the individual infix operators, like implies, and second, a partially filled node in the parse tree, with an op and a lhs.  If infix operators become strings, then we only need the second part.


Custom key Distribution mode to choose the backend server.

Hi,
I would like to know whether we can use other forms of distribution mode apart from the 3 modes listed in the doc. The requirement is, we need to redirect the Redis reads to the slave, only in case if we infer/anticipate load/issue in the master. The read requests have to be redirected to the slave well in advance the master gets overloaded. This redirection is required to save the Redis instance that can be loaded due to various reasons.
This mode will be useful not only to redirect the reads from master to slave, but it can also be from one slave to other slaves due to the higher load in the former.
-Sairam.

Currently, no.
Redis sentinel support is planned for the 0.6.0 release (but not merged yet), but that is currently only designed to identify the redis master to connect to it. I'd assume connecting to the replicas is feasible, but haven't looked into how to implement it. It's something I'd planned to look into after 0.6.0 is out
Pointing twemproxy at haproxy can be used as a workaround, assuming that haproxy is listening on port 16389, the redis master is typically on port 6389, and the redis replica is typically on port 6390, an example haproxy config would be:
(by marking 6389 as the backup, haproxy will prefer 6390)
Note that this will make haproxy connect to redis and send requests every 5 seconds to determine the availability of the instances
listen redis-16389-exampleredis
  bind <IP_ADDRESS>:16389
  mode tcp
  balance roundrobin
  option tcp-check
  tcp-check send role\r\n
  tcp-check expect rstring connected|master
  tcp-check send quit\r\n
  tcp-check expect string +OK
  timeout check 1s
  timeout connect 1s
  server <IP_ADDRESS> <IP_ADDRESS>:6389 check backup
  server <IP_ADDRESS> <IP_ADDRESS>:6390 check


MongoDB API vs Session consistency

This page is very unclear as to how the default consistency level of "Session" applies to the MongoDB API. Could this be made explicit somewhere?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: ac149cc8-9751-81aa-98b1-17d6b383ce50
Version Independent ID: f09f1038-5787-8663-54e6-afe600bdccc8
Content: Consistency levels and Azure Cosmos DB APIs
Content Source: articles/cosmos-db/consistency-levels-across-apis.md
Service: cosmos-db
GitHub Login: @markjbrown
Microsoft Alias: mjbrown

@richardszalay Thank you for the feedback. We will work on it and will keep you updated on the thread

I don't understand what is confusing here. This table shows what the equivalent Cosmos consistency model is for each of Mongo's read or write concerns. If you need more information on consistency model guarantees in Cosmos see Consistency levels in Cosmos DB

@markjbrown Was there meant to be an accompanying table? Otherwise I'm not sure what you meant by "this table".

Yes, referring to the table in the article you initially referenced here
The reason it isn't included is because there is no equivalent in MongoDB. Session consistency is a client-centric consistency model. MongoDB's clients do not support this so we do not include Session consistency in this mapping. This wikipedia article does a good job explaining this type of consistency model.
Hope that helps clarify.

@markjbrown Great, thanks. Any chance that can be made explicit in the docs, given that Session is the default?
Two questions:
a) What intra/single-region guarantees does Session consistency provide when not within a session?
b) Doesn't that make "Session" a not-very-desirable default for CosmosDB using MongoDB API? I'm assuming Bounded Staleness  is the better starting point for most MongoDB-based applications.

And one additional question: MongoDB does support sessions, but Cosmos does not provide support for them. Are there are plans for this to change and potentially align with the Session consistency model?

Outside of a session readers see consistent prefix.
Session consistency is desirable as a consistency model because most applications expect to be able to read their own writes which is what session consistency provides. The only equivalent to this with Mongo clients is bounded staleness. However because bounded staleness requires a two replica read, it costs twice as much.
I'm not sure about how Mongo supports sessions. I will look into it and reply back.

Perfect, thanks @markjbrown!

So after taking a look at MongoDB's client object, ultimately if MongoDB was to support Session consistency they would need to implement this in their client. This is highly unlikely so is not something I expect to see at any point in the future. For now you'll have to rely on the other consistency models that have MongoDB equivalents.
Thanks

@markjbrown That's a shame, do the IClientSessionHandle overloads of the various IMongoCollection methods not provide a session handle that could be mapped to a Cosmos session?

It's not that simple. Our session token requires a bunch of client-side code in the driver that Mongo will never implement.

Fair enough. Thanks for taking the time to clarify everything @markjbrown

My pleasure.
#please-close

I'm fine with closing the issue, but for the benefit of others could the linked page be updated with a note around the lack of support for Session, what happens whens you use it, and what the best fallback "default" is?

Sure. Done. Will publish sometime tomorrow.
Thanks.


Rule 183: Adding email to the range of values of the X-Frontend-Type header

https://github.com/zalando/restful-api-guidelines/issues/634

:+1:

👍


I can't up load static file to azure

<Please be sure to remove any private information before submitting.>
Repro steps:
<Enter steps to reproduce issue>
Action: azureStorage.deployStaticWebsite
Error type: Error
Error Message: Error uploading "/Users/macintoshhd/Downloads/realestate/img/i7.jpg": connect ETIMEDOUT <IP_ADDRESS>:443
Version: 0.7.0
OS: darwin

@Hoangpnse62077 Do you get this error every time?  Is it always with the same file?  And how big is that file?  Thx.


Have you saved the example PPO trained model?

Have you saved the example PPO trained model?
Could you please tell me the method you used to test the trained model?
thanks！

And，how to replay the test of the academy scene, or how to convert it into a video like a trace dump

We don't provide saved models right now. For creating videos have a look at the documentation:
https://github.com/google-research/football#trace-dumps


Enhancement:  handle routing from 'leaf devices'

This is not a 'bug', but an enhancement request...  :-)
First of all, outstanding work!  this is very cool.   One nice feature to have would be handling the case of routing messages from downstream or 'leaf' devices..   An example is below..
The "routetoformatterFromLeaf" route takes any data that comes from a downstream or leaf device and routes it to the formatter module.  This part doesn't get visualized and it appears that all data originates in the formatter module, which isn't right.   Would be a nice feature to have.
{
"routes": {
"routeFormattterToASA": "FROM /messages/modules/formattermodule/outputs/* INTO BrokeredEndpoint("/modules/aggrASAJob/inputs/inputFromHub")",
"routetolog": "FROM /messages/* INTO BrokeredEndpoint("/modules/logmodule/inputs/input1")",
"routetoformatterFromLeaf": "FROM /messages/* WHERE NOT IS_DEFINED($connectionModuleId) INTO BrokeredEndpoint("/modules/formattermodule/inputs/input1")",
"routeASAToIoTHub": "FROM /messages/modules/aggrASAJob/outputs/outputToHub  INTO $upstream"
}
}

I updated the regex to handle:

{
"routes": {
"routeFormattterToASA": "FROM /messages/modules/formattermodule/outputs/* INTO BrokeredEndpoint("/modules/aggrASAJob/inputs/inputFromHub")",
"routetolog": "FROM /messages/* INTO BrokeredEndpoint("/modules/logmodule/inputs/input1")",
"routetoformatterFromLeaf": "FROM /messages/* WHERE NOT IS_DEFINED($connectionModuleId) INTO BrokeredEndpoint("/modules/formattermodule/inputs/input1")",
"routeASAToIoTHub": "FROM /messages/modules/aggrASAJob/outputs/outputToHub INTO $upstream"
}
}

Please note the escaped double-quotes.
Is this what you need?

not exactly..  I see that it adds an "all modules" block on the diagram.  But the route in question, this one...
"routetoformatterFromLeaf": "FROM /messages/* WHERE NOT IS_DEFINED($connectionModuleId) INTO BrokeredEndpoint("/modules/formattermodule/inputs/input1")",
is for data that is coming in from external to Edge from 'leaf' or 'downstream' devices, not any modules at all.   does that make sense?

I see. If I call the 'module' "message" and the output "*" would that make sense?

Please reopen when needed

Doesn't look like I have permissions to re-open (weird)...  my apologies for the slow response, busy week...  I'm not sure that 'module', 'messages', 'output:' makes sense either, as it's not really a module...  are you familiar with what leaf/downstream devices are?      does the top level UI element have to be a 'module'?   something like "downstream devices" for the name, "messages" for the data, and "output:" would probably work if that's possible.  Just to indicate that the data is coming from outside if Edge.   It's a pretty common scenario.


add support for api server access profile

this is still in review and the below needs to be executed
az feature register --namespace "Microsoft.ContainerService" --name "EnableAPIServerVnetIntegrationPreview"

the functionality from the rest api is not working as expected.. therefore closing this PR for the moment


Replace relative link with an absolute url so it works across docs ve…

…rsions
Changelog: None
Signed-off-by: Michael Clelland<EMAIL_ADDRESS>External Contributor Checklist

🚨 Please review the guidelines for contributing to this repository.

[ ] Make sure that all commits are signed with git --signoff. Also note that the signoff author must match the author of the commit.

Description
Please describe your pull request.
Thank you!

Should be cherry-picked to 3.2.x also

@mender-test-bot cherry-pick to:

3.2.x

@mender-test-bot
cherry-pick to:

3.2.x


Couldn't complete the update: Error: Cannot download "https://github.com/microsoft/BotFramework-Composer-Nightlies/releases/download/v2.1.3-nightly.364675.1a93f21/electron.exe", status 404:

Couldn't complete the update: Error: Cannot download "https://github.com/microsoft/BotFramework-Composer-Nightlies/releases/download/v2.1.3-nightly.364675.1a93f21/electron.exe", status 404:

Updates to nightly may not function properly. Please follow guidance in #9745


Update the descriptions of property release-number from "update" to "find or update

In OAS, we have property release-number in services, which has descriptions like "update".
In very rare scenario, say if two instances of same application is available in config file and if an application is trying to subscribe for a service, it updates the first occurring instance of the client application instead of updating the already existing instance that matches for application-name and release-number.
This result in two instances (duplicate entries) of same application-name/release-number combination.
Proposal:
In order to avoid such cases, we can change the description of release-number property to "find or update" instead of "update" for following services.

/v1/inquire-application-type-approvals

Related issue : https://github.com/openBackhaul/ApplicationPattern/issues/714

Similar issue , we discussed and decided in https://github.com/openBackhaul/ApplicationPattern/issues/714. The same solution shall be applied for this issue aswell for the services /v1/inquire-application-type-approvals.

Changed as proposed from 'update' to 'find or update' in
/v1/inquire-application-type-approvals :: approval-application-release-number


[DO NOT MERGE] Require 'signin' permission from signon to access app

The expected behaviour of apps using signon is that they authenticate the
user and check that they have the 'signin' permission before allowing the
user to use the app.  This app only did the first part, not the second
bit.  The upside is that all signon users could access the support app;
the downside is that we have no way to limit a user so they can't use
this app, but still use other apps.  In practice this may not really be a
problem because of the purpose of the support app - it's unlikely we'd
want to allow someone to access other apps, but not support.  However it
does mean that the support app acts differently with respect to the
'signin' permission that is managed in signon and so this could be
confusing to future developers.
We will do some data work in signon to make sure that all existing users
retain signin permission, and that all new users are granted signin
permission for support by default.

Flagged as DNM because we need to do the data work in signon before we deploy this change.

Closing this for now, in preference to implementing the recommendations in RFC 78, which we're tracking in this trello card


Feat(#1165) : Collector whale stats

Thank you for your contribution to the KodaDot NFT gallery.
👇 _ Let's make a quick check before the contribution.
PR type

[ ] Bugfix
[X] Feature
[ ] Refactoring

What's new?

[X] PR closes #1165
[X] Collector whale view with column:
all bought items
hold items
average
volume
scoring holding
30 buy history

Before submitting Pull Request, please make sure:

[X] My contribution builds clean without any errors or warnings
[X] I've merged recent default branch -- main and I've no conflicts
[X] I've tried to respect high code quality standards
[X] I've didn't break any original functionality
[X] I've posted a screenshot of demonstrated change in this PR

Optional

[X] I've tested it at </rmrk/collection/26902bc2f7c20c546a-1FVG7>
[X] I've tested PR on mobile and everything seems works
[X] I found edge cases
[ ] I've written some unit tests 🧪

Had issue bounty label?

[X] Fill up your KSM address: [Payout](https://beta.kodadot.xyz/transfer/?target=EFuhGSJpetTgoZ2dfWxwirxADBWgAzWmVfJmTCauZuPxz6z

Community participation

[X] Are you at KodaDot Discord?

Screenshot

[X] My fix has changed something on UI; a screenshot is best to understand changes for others.

deployment preview somehow gets stuck on graphql request for me 🤔

Hi @vikiival, this PR is tested.
Could you merge the collector_whale on the rubick server, and deployed it please, for this PR please ?

Hi @vikiival, this PR is tested.

Lovely to hear waiting for the rubick testing

Pls resolve conflicts, fix the suggestions
and we can merge

why the code has like 400 LOC?

CollectorTable.vue takes up a chunk of it, which seems valid though

Marked as unread ✅

@MSghais any updates on this?

@MSghais mate, I'm sorry but we'll have to close this one. We're happy that you're contributing but this particular PR is here for a very long time, without improvement. Some feedback so we can avoid wasting your time in the future:

if you're not sure about the codebase, I'd suggest picking up smaller issues. There are many issues connected to basilisk which are fairly easy to implement, I expect that after the indexer for moonsama is done, there will be many more.
if you open up a PR, you should see the end of the task you're solving around the corner
if you're not sure about the finishing of the task, you can open up a PR with unfinished code and expect help, but in that case, your communication is required
try to keep the communication in the open (comments/reviews). I see that you're sending me DMs about the PRs you're solving, I'm, generally speaking, avoiding replying to those as we're working here as a team and there are multiple people participating :)

At time of closing, deploy has failed some time ago, all the checks are not passing and you're not responding to review comments for ~4 days. Feel free to reopen with new code, or ask the questions you have in the issue you're trying to solve.


Add the StartTLS setting in the configuration summary of OpenLDAP

What kind of request is this:
Bug
Steps to reproduce:

Enable OpenLDAP auth and check the StartTLS checkbox.
After enabling OpenLDAP look at the authentication settings summary page

Result:

Other details that may be helpful:
I think we should add it in the General column on the left.
Environment information

Rancher version: master-head (12/04/2020) e129f92
Installation option: HA RKE

rancher/rancher#29153

Rancher version: v2.5-head (12/07/2020) 6ad4dce
Rancher version: master-head (12/07/2020) a5e40aa
The field is displaying the starttls boolean value as Yes or No as expected when the setting is configured and when it's not respectively.


On the problem of stagnation of training ESRGAN generator

HI xintao ，when I used my own dataset to train the ESRGAN generator, I found that there had been no response for a long time. What is the cause of this? The second picture shows that the code is running, taking up the memory of GPU.

@xinntao

@zkh123456789 hi, you can add some print log in code to check whether the code is running as you expected.
If you use "disk" type for the io_backend in .yml file, the code will traversal the whole dataset, this will take a long time. Of course, you can use a very small dataset to debug the training stage, after that you can train on a large dataset.


Missing space in source column for NPM

Is there an existing issue for this?

[x] I have searched the existing issues

Describe the bug
In dashboard in source column there is missing space for NPM resource:

Expected Behavior
There should be spaces between npm and dev
Steps To Reproduce
No response
Exceptions (if any)
No response
.NET Version info
No response
Anything else?
No response

This was fixed https://github.com/dotnet/aspire/issues/6585.


cli.Context.Command not available to cli.Command.OnUsageError

If OnUsageError is triggered for a command, cli.Command is not yet available to the function via cli.Context.Command. To reproduce:
func main() {
	app := cli.NewApp()
	app.Name = "myapp"

	app.Commands = []cli.Command{
		cli.Command{
			Name: "mycmnd",
			OnUsageError: func(c *cli.Context, err error, isSubcommand bool) error {
				fmt.Printf("command name: %#v\n", c.Command.FullName())
				return nil
			},
		},
	}

	app.Run(os.Args)
}

Running go run main.go mycmnd -a will now produce:
command name: ""

I might be going this the wrong way or missing something but what I want to achieve is being able to print an error message that is aware of its calling command similar to CLIs like docker & vault e.g.
myapp mycmnd: flag provided but not defined: -a
Try 'myapp mycmnd -help' for more information

Looking at the current cli/command.go I can see why this is show in func (c Command) Run(ctx *Context) (err error) where context.Command = c is set after c.OnUsageError, c.Before, c.After are handled. What I am referring to here would have been solved if context.Command = c was set much earlier but there might be something guiding this decision that I am missing here as well. Any feedback would be gladly be welcomed.

Thanks for the report! Took a stab at this in #627

Thanks!!


mbed-cli is blocked when adding new library

I'm using mbed-cli and meet an issue that when I import or deploy a project, the mbed-cli is always stopped at:
[mbed] Adding library "mbed-os" from "https://github.com/ARMmbed/mbed-os" at rev #a551faa88151
The whole process is stucked here and nothing is downloaded from server.

This is caused by bad network. the download speed is low.


Web3Auth & Gelato Transactions

Web3Auth & Gelato Transactions working throughout the game, to be used at GDC.

w3a working


GIF is zoomed in even if stretch to screen option is disabled

This is actually no real issue. The view options worked as I intended them to work. ;-)
I wanted two view options, one to stretch image maximal to screen and one option to stretch image but keep the image ratio as it is. In second case you will most likely see an border and therefore I added also the background color option that the borders can a bit customized. But you are right with one thin, the text of this option was more or less wrong.
Since you like an third option to keep image original size I replaced the old checkbox with an popup box with three options.
The view options are:

strech with keep image ratio
strech maximal to screen
keep image original size

excellent


Dockerize audio webui

Hi,
Thanks for this app.
I would like to integrate this dockerfile and compose in the main project.
This will allows us to use it like stable diffusion webui or oobabooga/text-generation-webui
I fixed some issues I had while making it.

https://github.com/gitmylo/audio-webui/issues/94#issuecomment-1675095287


python: index and dataset + tests

Codecov Report

Merging #16 (1d6c545) into main (a5946cd) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head 1d6c545 differs from pull request most recent head c97d2e7. Consider uploading reports for the commit c97d2e7 to get more accurate results

@@           Coverage Diff           @@
##             main      #16   +/-   ##
=======================================
  Coverage   63.91%   63.91%
=======================================
  Files          20       20
  Lines         945      945
=======================================
  Hits          604      604
  Misses        341      341

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


intermittent 503 errors when paying expenses

Describe the bug
 {"response":"<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n\n<title>503 Service Temporarily Unavailable</title>\n\n
Service Temporarily Unavailable
\n
The server is temporarily unable to service your\nrequest due to maintenance downtime or capacity\nproblems. Please try again later.
\n\n","httpStatusCode":503}
To Reproduce
Hard to reproduce because it's intermittent. When I try to pay the same expense again, it went through, but then the same error happened on another one, repeat.

@alanna next time it occurs, would be great if you could note the exact time (to the second precision)


Tab multi select dosen't work.

Hello,
When "Select active tab" is enabled, ctrl + mouse 1 and shift + mouse 1, for selecting multiple tabs dosen't work.

Does work for me :(

Apparently it only happens when "Navigation to linked TAB by" is set to "selection".

You're right, although  you can still select, then the tabs are opened one by one and it makes troubles. I'll take a look on it.

Should work after this update