Consider adding more docs on RethinkDB Proxy

I feel like I've been asked about it a lot in the last month, and as far as I can tell we only talk about it as an aside in the changefeed docs.  It might be worth adding a page that talks more about the subject (I'm not quite sure where it would go in our existing scheme).
We should probably mention:

What a proxy node is.
Why they exist.
What the performance characteristics are, especially for changefeeds.
How to start one and what the network config needs to look like (specifically the fact that it behaves like a normal RethinkDB node and thus other nodes in the cluster will try to connect to it).

Once https://github.com/rethinkdb/rethinkdb/issues/5138 is resolved we should add docs on how to start a proxy node on system startup too.

@chipotle, any thoughts on whether this is worthwhile and where it should go?

The main documentation is the (short) section called Running a proxy node in the "Scaling, sharding and replication" document; that's also linked under the Proxy nodes heading in "Optimizing query performance," from the end of the "Command line options" document, and from Scaling considerations in the main Changefeed documentation.
That section is relatively short, and if there's stuff that you think it's missing we can add it. (For instance, it doesn't address "what the network config needs to look like.") And if there are other places we need to link it, we can. Unless there's a lot missing I'm not sure whether this really needs to be in its own document, but if you don't think it belongs under "Scaling" maybe there's a case for a better location.

OK, cool!  I actually missed that while look for docs somehow.  I think once rethinkdb/rethinkdb#5138 is in we should update that section with information on how to automatically start a proxy node (and probably also add some information about the network configuration while we're in there).  Assigning to myself in the meantime.

@mlucy This is currently assigned to you. Are you still planning to write something up for this or should we reassign?

I'm going to go ahead and reassign this to myself in order to get some details together. @mlucy Please complain if you have started writing anything up for this.

@danielmewes -- I never did anything on this.  We should probably fix https://github.com/rethinkdb/rethinkdb/issues/5138 while we're at this though.

@chipotle Here's a write up of some of the things that we should probably cover:
What is a RethinkDB proxy?
A RethinkDB proxy is a RethinkDB server that doesn't store any persistent state, but
performs certain aspects of query processing locally.
A typical use case is running a RethinkDB proxy instance locally on each application
server (see figure TODO). We'll take a closer look at typical proxy setups below.
TODO: Maybe insert a figure like the following one that compares a setup without and with proxies.
Specifically it should illustrate the idea of having the proxies run on the application
servers, with the application connecting directly to the proxy instead of to the
individual database servers.
 | 1. Basic setup without proxies |
 ----------------------------------
   ____________________                    ________________
  |     App server 1   |                  |   DB server 1  |
  |  _______________   |            ----->|                |==
  | |  Application  |--|----------->|      ----------------  ||
  |  ---------------   |            |                        ||
  |                    |            |                        ||
   --------------------             |      ________________  ||
                        Client conn.|     |   DB server 2  | || Cluster connections
   ____________________             |---->|                |=||
  |     App server 2   |            |      ----------------  ||
  |  _______________   |            |                        ||
  | |  Application  |--|----------->|      ________________  ||
  |  ---------------   |            |     |   DB server 3  | ||
  |                    |            ----->|                |==
   --------------------                    ----------------

  | 2. Setup with proxies        |
  --------------------------------
   ____________________                    ________________
  |     App server 1   |                  |   DB server 1  |
  |  _______________   |                  |                |==
  | |  Application  |  |                   ----------------  ||
  |  ---------------   |                                     ||
  |  _______|_______   |                                     ||
  | |     Proxy     |==|=====================================||
   --------------------                    ________________  ||
                                          |   DB server 2  | || Cluster connections
   ____________________                   |                |=||
  |     App server 2   |                   ----------------  ||
  |  _______________   |                                     ||
  | |  Application  |  |                   ________________  ||
  |  ---------------   |                  |   DB server 3  | ||
  |  _______|_______   |                  |                |=||
  | |     Proxy     |==|=============      ----------------  ||
   --------------------             \=========================

More precisely, a proxy:

Cannot become a replica for any tables
Does not participate in write or failover majorities (i.e. it cannot be used as an
to enable auto-failover in smaller clusters)
Does not have a server name or any server tags
Does not show up in certain system tables, including the server_config table

However, a RethinkDB proxy still provides the following features:

It listens for client connections.
It can join a cluster and connects directly to all servers in the cluster, so it can
efficiently route read and write operations directly to the responsible replicas.
It parses, interprets and processes queries. While most work will typically be
passed on to the nodes that host the table data, certain operations will be performed
on the proxy itself (for examle non-indexed orderBy, operations on arrays etc.).
It manages changefeeds locally, allowing deduplication of change notifications within
the cluster.

To start a RethinkDB proxy, you can run rethinkdb proxy -j <other server>. See TODO for
more details on this command.
When should I use a RethinkDB proxy?
Primary use cases include:

Scaling changefeeds.
Reducing latencies within the cluster.
Improving throughput of queries where the bottleneck lies in certain aspects of the
query processing, such as query parsing or expensive array-based operations.

We will see in the next section how proxy servers can achieve these objectives.
How can a proxy improve performance?
With a proxy running locally on each application
server, you can avoid an additional network hop by facilitating a proxy's intelligent
routing logic. The proxy always knows which database server holds the data for a
particular request, and can route the request directly to the responsible server.
Compare that to a client connecting directly to a database server.
Since the application usually doesn't know which database server has the data needed
for a particular query, the server handling the query will need to forward the request
further to obtain the data. Two network hops will be required in this scenario, instead
of just one with the local proxy.
Since proxies also perform certain query processing steps themselves, they can also help
scaling those queries more easily. Adding a proxy to a cluster is often easier than
adding a full database server. The proxy will not only handle decoding the client
requests and encoding the query responses, but will also perform a number of calculations
locally. These specifically include many ReQL commands that operate on in-memory arrays,
as well as commands that work on aggregated data (e.g. orderBy without an index,
commands following an ungroup operation etc.).
Changefeeds
In addition to regular queries, a proxy can also be a very powerful tool for scaling
changefeed-heavy applications.
A proxy will manage changefeeds locally, and reduce the overhead (RAM, CPU and network)
on the database servers. For any write operation to a table with active changefeeds,
a database server only sends a single network message to a given proxy. If for example
10,000 clients are listening through a proxy to changes on a particular table, the
database server(s) hosting the table will send a single network message to the proxy when
the table is changed. The proxy then takes care of forwarding the change message to all
10,000 clients locally.
This even works if the clients are listening to different selections on the table, such
as when using the query r.table('test').getAll(val, {index: "idx"}).changes() with
different values val for each changefeed. The proxy will receive one message from the
database servers for every write to the table 'test', and will check locally which
changefeeds are affected by this change.
How do I run it?
A proxy has fewer requirements to the system's hardware compared to a regular database
server. In particular, it doesn't require fast storage and it uses less RAM because it
doesn't need to maintain a local data cache.
That being said, proxies still benefit from fast CPUs, and require enough RAM to process
your application's queries. 256 MB of available RAM is often enough for simple queries
and moderate query throughput. However complex queries and/or a high number of concurrent
operations (including a high number of open changefeeds) might require additional
resources for the proxy server.
Note that in contrast to a regular client that can connect to a single server, a proxy
server must be able to connect directly to all database servers on their intra-cluster
ports (port 29015 by default). If a proxy is unable to connect to all database servers,
some tables might become inaccessible for the proxy and queries using those will fail.
If all requirements are met, you can run a proxy through the rethinkdb proxy command.
See TODO for details.
TODO: Mention/Describe rethinkdb/rethinkdb#5138 once available
TODO: Maybe describe a few "best practice" scenarios in more detail. E.g.
"proxy running on each app server" vs. "adding a central pool of proxies to a cluster".

This is fantastic!!   Things to maybe expand on:

Emphasize that you can add/remove proxies at any time without any impact on cluster stability (unlike normal nodes).
Say something about relationship with connection pools; for example, with SageMathCloud I have a (complicated?) connection pool system, where applications make lots of connections to the database, round robin queries using each, destroy connections that are slow, etc.  I used this before using proxy nodes.   I switched to proxy nodes and I'm still using this connection pool, but maybe it is completely not necessary?
Maybe say something about how potentially more data gets transferred over the network in some cases.  Where it says "For any write operation to a table with active changefeeds,..." you give the optimal best case situation.  But isn't there a worst case -- maybe the client is listening for a very specific change, and 99.99% of updates to the table don't trigger that; however, with a proxy node, all of those changes get sent to the proxy node. For my personal use case (everything on a local super fast free network inside Google Compute Engine), even this worst case is fine, since the network is so good.  But it could matter for some multi-data center deployments.

What about multiple client connections enables better cpu usage in a proxy?

@hamiltop Yeah that's what I meant. :-)

@danielmewes Sorry, I was asking a question. Why does that enable better cpu usage? What aspect of multiple client connections leads to more cpu usage?

Ah, sorry. Each incoming client connection is assigned to one CPU core randomly (or actually round robin I think). A lot of work for any query run through that connection is going to happen on that core.
So by using multiple connections and spreading queries across them, you can better utilize multiple CPU cores on the proxy.

Interesting. Is that true for normal cluster connections? (not just proxies)

This is true for normal servers as well.
However on a normal server, there are more tasks that are not depending on
the core handling the connection, and will use their own model for
multi-thread distribution. So it's a little bit less relevant there,
depending on the workload.
On Mon, Mar 14, 2016 at 2:26 PM, Peter Hamilton<EMAIL_ADDRESS>wrote:

Interesting. Is that true for normal cluster connections? (not just
proxies)
—
Reply to this email directly or view it on GitHub
https://github.com/rethinkdb/docs/issues/962#issuecomment-196527713.

I think most of the information is here. Handing over to @chipotle .

It would also be great to see some recommendations on starting the proxy and restarting it if the process dies or if the server is rebooted. Looking at https://github.com/rethinkdb/rethinkdb/issues/5138 there's a suggestion that this can be done by editing the init script. Not being an expert on this I wasn't that confident to jump into /etc/init.d/rethinkdb and start messing around. I ended up using Upstart instead of altering the init script. I wrote up some notes as I couldn't find an explanation anywhere of how to do this. I'd welcome feedback on the approach I'm certainly not experienced with this.

Thanks for sharing your notes on this @brucepom ( https://medium.com/@brucepomeroy/running-a-rethinkdb-proxy-on-ubuntu-68f8cd308b7b ).
While we should fix this more generally in the mid-term (rethinkdb/rethinkdb#5138), it might be nice to mention how to add the upstart script for the meantime in our docs. @chipotle do you think that's something we could incorporate?

I setup a Rethinkdb proxy on a separate node rather than running proxy in app server itself. So my app will contact proxy node which in turn fetch the data from RethinkDB cluster.
Is there anyway to figure if the query processing is actually happening on proxy machine?
From netstat command i see that my proxy node is connected to some unknow IP (This IP i didn't used/configured anywhere in the network) on port 28015 apart from the cluster nodes.

Hi,
I wrote a little post about Running a RethinkDB Proxy as Daemon that could be helpful to someone ...

@bbar Could you have a pull request for this?

@atris Sure. Should I just add a new section under "Running a proxy node" on this page?

@atris sure. In this file, right?

Yes and yes
Regards,
Atri
l'apprenant


Update README.md

Apptainer remote login step provides warning and also fails in some scenario as it is deprecated  WARNING: 'remote login' is deprecated for registries or keyservers and will be removed in a future release; running 'registry login'
Updated it with registry login

Thank you!


#34 Support regex validation of property values

Extend the syntax to verify property values against a regular expression.
BTW, I may ask one of my colleagues to perform reviews on this project, if no one else feels comfortable on the library and its usage. In which case we should discuss how this person could join the group.

Hm, it seems I can only force thenmerge but the bats-detik team must approve. I am currently on my phone so I cannot dig deeper. I will investigate this later.

In fact, my last commit was not signed.
I am trying to fix it.

Ready to be merged. @martin-schulze-vireso
Thanks!


TypeResolution: Abolish TypeResolutionStage::Contextual

The correctness issue that lead to this refactoring is an inconsistency in how generic metatypes are resolved in properties that are referenced and declared under a certain kind of same-type constraint:
protocol P {}
struct Foo<T> {
  static var property1: T.Type { T.self }
}
extension Foo where T == P {
  // error: cannot convert return expression of type 'P.Protocol' to return type 'P.Type'
  static var property2: T.Type { property1 }
}

This is a source-breaking change, since these generic metatypes would no longer resolve to existential metatypes when a same-type constraint binds the 'instance type' type parameter to an existential type, be it a protocol requirement or other member.

Extracted from #39492

@swift-ci please smoke test macOS

@swift-ci please test source compatibility release

@swift-ci please smoke test macOS

@swift-ci please smoke test macOS

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please test source compatibility

@swift-ci please smoke test macOS

@swift-ci please smoke test


Creat a settings page

There should be a settings option in the dropdown menu that is displayed when clicking on username on navbar
The settings page should have a sidebar for different sections, keep 2 sections for  now profipe and account
On the right of the sidebar current section should be displayed, for now only complete these two sections profile and account
Profile section should display user's details in editable text fields and there should be save option at the  bottom for saving changes made in the details, on clicking you should display a confirmation dialog asking if you want to save the changes (like logout dialog)
You need not implement the saving functionality, just complete the frontend
For account section there should be option to change email address and change password, complete the frontend part only

hello sir ; kindly assign me this issue

Sure

hello sir ; sir should i make separate pages for edit account and edit profiles ? if not , kindly guide me into this ; thanks
and sorry for being late 😢 😞

Not exactly separate pages, the settings page should look something like this

A sidebar on the left and depending on the option selected corresponding page will be displayed on the right
Lemme know if u need more info

ohk sir

hello sir ; sir in profile section , i could only find firstname , lastname and username in profile component , so is that all i need to add ?

this is the current , i have done

Yeah those fields are enough, just add a circular image on the right as a placeholder for profile pic for now
Also increase the width of each element of the sidebar, or reduce the width of the sidebar, too much space not good

ohk sir ; and sir do get details of user, can i simply use the details as argument (like in comments) or have to do a get req

Get req, although displaying actual data not that imp for now, only the ui part imp

sir these are the current pages

Seems good, use a different font and fix too much space in sidebar

and sir wo dummy data :SmileInPain:

Dummy rehne do abhi no prob


Created a preset

Hi @zacksmash
I don't know if you're planning on maintaining a list of presets created by the community but I've created a preset based on the Tabler framework. It would be really nice if you could include a link to my work.
The preset is can be found here.
By the way, thanks for your work! It really makes starting Laravel Fortify applications way quicker and easier.

@RoelReijn
Dude, that's awesome! I'd definitely be glad to start a list on the README for presets, like yours. Thanks for reaching out!

@RoelReijn Great idea!
@zacksmash Bulma preset here.

Added in the latest release. Thank you for your hard work on those presets, it's awesome to see!


TEP-140: Produce Results in Matrix

This PR enables producing Results from Matrixed PipelineTasks so that they can be used in subsequent PipelineTasks [See TEP-140: Produce Results in Matrix]. A Pipeline author can now declare a matrixed taskRun that emits results of type string that are fanned out over multiple taskRuns and aggregated into an array of results that can then be consumed by another pipelineTask using the syntax $(tasks.<pipelineTaskName>.results.<resultName>[*]).
This commit also introduces 2 context variables to 1) Access Matrix Combinations Length using tasks.<pipelineTaskName>.matrix.length and 2) Access Aggregated Results Length using tasks.<pipelineTaskName>.matrix.<resultName>.length
Note: Currently, we don't support consuming a single instance/combinations of results. Authors must consume the entire aggregated results array. t message for your changes.
/kind feature
Closes #5265

Changes

Submitter Checklist
As the author of this PR, please check off the items in this checklist:

[x] Has Docs if any changes are user facing, including updates to minimum requirements e.g. Kubernetes version bumps
[x] Has Tests included if any functionality added or changed
[x] Follows the commit message standard
[x] Meets the Tekton contributor standards (including functionality, content, code)
[x] Has a kind label. You can add one by adding a comment on this PR that contains /kind <type>. Valid types are bug, cleanup, design, documentation, feature, flake, misc, question, tep
[x] Release notes block below has been updated with any user facing changes (API changes, bug fixes, changes requiring upgrade notices or deprecation warnings). See some examples of good release notes.
[x] Release notes contains the string "action required" if the change requires additional action from users switching to the new release

Release Notes
Pipeline authors can now produce results from a Matrixed PipelineTask as an aggregated array and consume them in an array params. Two context variables are introduced as part of this feature, $(tasks.<pipelineTaskName>.matrix.length) to get the length of a matrix combinations and $(tasks.<pipelineTaskName>.matrix.<resultName>.length) to get a length of aggregated result.

/assign

/assign @pritidesai

Thanks! This is a really big PR, just finish reading the pipeline_validation file.

Thanks @Yongxuanzhang! I've addressed the comments so far and will continue iterating. Appreciate the reviews 🙂

/retest

Thanks a bunch @EmmaMunley for all the efforts, I am almost done reviewing this PR and looks good to me. Please address one last outstanding minor comment https://github.com/tektoncd/pipeline/pull/7167#discussion_r1355824648
/approve

/assign @JeromeJu

thanks a bunch @Yongxuanzhang for a very detailed and careful review 🙏

/retest

Thanks! I will take another round later

/retest

/retest

/retest
https://github.com/tektoncd/pipeline/issues/4169

/lgtm


A line at bottom

why there is  a line below the list, and how to remove it

I have seen that the last item is an empty item.Could you remove that item?

There should be only 2 items data in the list, and I did not add any items to the bottom.

the xml is like this

    <com.marshalchen.ultimaterecyclerview.UltimateRecyclerView
        android:id="@+id/ultimate_recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</FrameLayout>

It's the customLoadMoreView, disableLoadmore() if there is no more data works for me.
THX

I tried in demo that if I use customLoadMoreView and use disableLoadmore at the same time and there is no redundant item. Could you change some code in demo to make the demo like your program and find out  the reason of the problem?

the reason is I missed disableLoadMore() if there is no more data.
add disableLoadMore should fix.
my final code look like this


prefix string will be disappear after press Ctrl+L inside tmux session.

Bug reports
Current Behavior and Steps to Reproduce

Run tmux session
Run echo example
Press Control + L

prefix string will be disappear. this bug doesn't reproduce without tmux.
Context
Please provide any relevant information about your setup. This is important in case the issue is not reproducible except for under certain conditions.

Operating System: macOS
Terminal Emulator: (i.e. iTerm2) iTerm2
tag of go-prompt or commit revision: 5e184cd

this issue doesn't reproduce when upgrade latest version of tmux.


Update database

Here is the updated data, including the corrected alignments, in order to make a new release.
̨@Lingulist could you give the data a final check, as we discussed in Tuesday's meeting?

No cognate table is added even though the code remains unchanged. Could you briefly hint me towards the erroneous part of the workflow?

ah, this is the workflow, will review in two hours after my seminar!

Could I ask you to paste the error code?

And the command you used to compile the CLDF?

There's no error code, which is part of my confusion.
As always, I have used the following command:
cldfbench lexibank.makecldf lexibank_crossandean.py --concepticon-version=v2.5.0 --glottolog-version=v4.3 --clts-version=v2.0.0
The results are the same if I do not specify the versions to use.

Ah, there's the first problem:
cldfbench lexibank.makecldf lexibank_crossandean.py --concepticon-version=v2.6.0 --glottolog-version=v4.5 --clts-version=v2.1.0

This line in lexibank_crossandean.py:
        for typ, error in sorted(errors):
            print(typ + ": " + error)

What is the problem? You somehow (or somebody else, I don't know) have deleted the file etc/concepts.tsv in the etc repository.

As a result, this part
        concepts = {}
        for concept in self.concepts: #conceptlists[0].concepts.values():
            idx = concept.id.split("-")[-1] + "_" + slug(concept.english)
            args.writer.add_concept(
                ID=idx,
                Name=concept.english,
                Concepticon_ID=concept.concepticon_id,
                Concepticon_Gloss=concept.concepticon_gloss,
            )

            concepts[concept.english] = idx

Does not fill the concepts dictionary with concepts, as there is no concept list.

Ah, sorry, here's the solution:
        concepts = {}
        for concept in self.conceptlists[0].concepts.values():
            idx = concept.id.split("-")[-1] + "_" + slug(concept.english)
            args.writer.add_concept(
                ID=idx,
                Name=concept.english,
                Concepticon_ID=concept.concepticon_id,
                Concepticon_Gloss=concept.concepticon_gloss,
            )

            concepts[concept.english] = idx

You see, you do not need etc/concepts.tsv if you have specified the concepticon concept list in the metadata.json, but if this is the case, you need to use it as shown above. This part is chaned in your current version. So using the part I suggest here, will make this work. Should I push it?

I just pushed it and rerun cldf now.

You can now see that all is there.

Yes, that is done now!

the error code here, says:
FAILED test.py::test_forms - AssertionError: assert 7523 == 7556
FAILED test.py::test_cognates - AssertionError: assert 8081 == 7614

So you need to go to test.py and adjust the number of forms and cogantes, as this has changed now, with this new release.

I would consider this part of the PR, so I added a short commit updating the test-file.
Did you want to check the data itself at some point, or can we go ahead both with a new release and a new (BEAST) analysis?

No new release by now, I'd say.

But I'd check the export script now.


how to inference

hello. thanks for the nice code
How do I just infer an image?

U can refer to the test function in efficientad.py

    map_combined, map_st, map_ae = predict(input_img, teacher_model, student_model,
                                           ae_model, teacher_mean, teacher_std,
                                           q_st_start=q_st_start, q_st_end=q_st_end,
                                           q_ae_start=q_ae_start, q_ae_end=q_ae_end)

    map_combined = torch.nn.functional.pad(map_combined, (4, 4, 4, 4))
    map_combined = torch.nn.functional.interpolate(
    map_combined, (orig_height, orig_width), mode='bilinear')
    map_combined = map_combined[0, 0].cpu().detach().numpy()
    ad_score = np.max(map_combined)

the ad_score is your need.


Stuff initiated by the main process is not localized.

This includes the system tray and internet connection error messages.

Fixed in 9.0

Fixed in 9.0


No path while fuzzing ChakraCore

Nautilus cannot find any path while fuzzing ChakraCore with grammars/javascript_new.py.
I set up nautilus with the instructions in README.md
Then I enlarged the size of bitmap to 1 << 20 and instrument ChakraCore with afl-clang-fast.
modified the config.ron at
bitmap_size:                            1048576, //1<<20

pathed file forksrv/src/lib.rs at
return (shm_id, trace_bits as *mut [u8; 1 << 20]);

Fuzzer status
It cannot find any path during fuzzing. See following output.
------------------------------------------------------
Run Time: 0 days, 0 hours, 0 minutes, 45 seconds
Execution Count:          2643
Executions per Sec:       71
Left in queue:            0
Trees in Chunkstore:      1
------------------------------------------------------
Last ASAN crash:          Not found yet.
Last SIG crash:           Not found yet.
Last Timeout:             No Timeout yet.
Total ASAN crashes:       0
Total SIG crashes:        0
------------------------------------------------------
New paths found by Gen:          1
New paths found by Min:          0
New paths found by Min Rec:      0
New paths found by Det:          0
New paths found by Splice:       0
New paths found by Havoc:        0
New paths found by Havoc Rec:    0
------------------------------------------------------

My System Infomation
git:(master) ✗ uname -a
Linux alucard 4.15.0-76-generic #86-Ubuntu SMP Fri Jan 17 17:24:28 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

git:(master) ✗ rustc --version
rustc 1.45.0-nightly (75e1463c5 2020-05-13)

git:(master) ✗ rustup toolchain list
stable-x86_64-unknown-linux-gnu (default)
nightly-2020-05-14-x86_64-unknown-linux-gnu

Can you confirm that AFL++ finds paths on the same target binary?

Can you confirm that AFL++ finds paths on the same target binary?

Yes, AFL++ works will with it except I need to enlarge memory setting by using -m none.
               american fuzzy lop ++2.64d (ch) [explore] {0}
┌─ process timing ────────────────────────────────────┬─ overall results ────┐
│        run time : 0 days, 0 hrs, 0 min, 8 sec       │  cycles done : 0     │
│   last new path : 0 days, 0 hrs, 0 min, 0 sec       │  total paths : 31    │
│ last uniq crash : none seen yet                     │ uniq crashes : 0     │
│  last uniq hang : none seen yet                     │   uniq hangs : 0     │
├─ cycle progress ───────────────────┬─ map coverage ─┴──────────────────────┤
│  now processing : 0.0 (0.0%)       │    map density : 3.26% / 7.39%        │
│ paths timed out : 0 (0.00%)        │ count coverage : 1.69 bits/tuple      │
├─ stage progress ───────────────────┼─ findings in depth ───────────────────┤
│  now trying : calibration          │ favored paths : 20 (64.52%)           │
│ stage execs : 17/40 (42.50%)       │  new edges on : 30 (96.77%)           │
│ total execs : 1097                 │ total crashes : 0 (0 unique)          │
│  exec speed : 55.31/sec (slow!)    │  total tmouts : 0 (0 unique)          │
├─ fuzzing strategy yields ──────────┴───────────────┬─ path geometry ───────┤
│   bit flips : 0/0, 0/0, 0/0                        │    levels : 2         │
│  byte flips : 0/0, 0/0, 0/0                        │   pending : 31        │
│ arithmetics : 0/0, 0/0, 0/0                        │  pend fav : 20        │
│  known ints : 0/0, 0/0, 0/0                        │ own finds : 10        │
│  dictionary : 0/0, 0/0, 0/0                        │  imported : n/a       │
│   havoc/rad : 0/0, 0/0, 0/0                        │ stability : 99.63%    │
│   py/custom : 0/0, 0/0                             ├───────────────────────┘
│        trim : 28.69%/88, n/a                       │          [cpu000:  6%]
└────────────────────────────────────────────────────┘

I'll look into this later. Can you check if it works without the bitmap size changes?

I'll look into this later. Can you check if it works without the bitmap size changes?

Still no path without bitmap size changes.

I tried to compile chakracore with afl-clang-fast, but ran into some problems regarding the fact that it is split into the "ch" binary, and libChakraCore.so. Could you post your build steps in a reproducible way?

I tried to compile chakracore with afl-clang-fast, but ran into some problems regarding the fact that it is split into the "ch" binary, and libChakraCore.so. Could you post your build steps in a reproducible way?

I build ChakraCore with ./build.sh --cc=/path/to/afl-clang-fast --cxx=/path/to/afl-clang-fast++ --static -j=30.
Then fuzz "ch" with nautilus.

Cool, looking into it. Didn't see the --static flag.

Ok I can reproduce this. Looking into it.

Should be fixed by a132369adf694620a8f8527359ce4a1b955cb393, when porting the Forkserver we forgot to add the program path to the argument list, resulting in ch not receiving the input file path. Please verify and close this issue.

Thanks for fixing! It works well now.

Just a notification lol.
https://github.com/nautilus-fuzz/nautilus/blob/master/fuzzer/src/fuzzer.rs#L339

Yeah, that's the "stability score" of AFL expressed... well... less optimally^^ If you see lots of these (with ch you will), that means the bitmap target is pretty nondeterministic.


Streaming in higher resolution with 24bit and 96kHz

At the moment this tool is just able to play files with PCM with maxium of 48 kHZ, at least that's what my amp says one the display. Would it be possible to stream in higher resolution for more audiophil needs?

Hi,
I like also to know if 44.1KHz (or even less) is supported.
Please, can you add a description in the Home about the formats (resolution) accepted?

It's definitely possible, I just need to make it configurable.

Like a lot of people out there I too am looking for a way to stream lossless audio to CC and CCA. I've tries Plex and BubbleUPnP but no matter what I do the audio gets transcoded into MP3. I love this idea of just casting the computer audio. Very clean solution but from what I have read about CCA your only choices are MP3 or WAV. So is there any way to tell FFmpeg to output a WAV? (Can I edit a config file?) That would be a good start. Then once that is working being able to cast some of my high resolution audio would be nice but right now I'm sick of the sound of MP3s even for background music. (sigh)


Fix post in channel batching order (release-1.30)

Summary
With the batching of actions we adding to the receivedPostsInChannel before receivedPosts and this caused the reducers to fail as receivedPostsInChannel actually depends on the receivedPosts reducer to be executed first.
Batching actions are performed in sequence following the order they were added to the batch
Ticket Link
https://mattermost.atlassian.net/browse/MM-23669
Note: This is the PR for the release-1.30 branch

Building app in separate branch.

Successfully building:
https://circleci.com/gh/mattermost/mattermost-mobile/4671
https://circleci.com/gh/mattermost/mattermost-mobile/4670

Artifact links:
https://4671-70265724-gh.circle-artifacts.com/0/~/mattermost-mobile/Mattermost_Beta.apk
https://4670-70265724-gh.circle-artifacts.com/0/~/mattermost-mobile/Mattermost_Beta.ipa


Notify users if a change will take some time

There are now a few changes that can be made on the platform which do not impact immediately. I have seen these:

redirects
strings translation

We should inform users at the top of the page that eg "Changes may take up to 5 minutes to reflect on your public IoGT site."

@cbunicef  Can you please confirm the message on the listing page of redirects and translatable strings?
Translations
I will add it to the header of the listing page.

Redirects
We can add it on the listing page or the "Add Redirect" page.

Which one should we prefer?

It's good to be consistent, so I would say where there is a listing page please put the notice on the listing page. If there is no listing page please put the notice in the creation dialogue.
I'd like to better understand this delay and make sure that this notice is correct.


dark mode toggle button added

Hi
I've added a dark mode toggle button in this project also I've added a video of using the btn
Hopefully, you like it and this PR gets merged

@Dev-Code24 Thank you for the PR!
Do you mind fix the conflict?

@Dev-Code24 Hey!
I can't merge this because there is a conflict between the PR and the current master branch.
You can fix it by pulling from master.

@Dev-Code24 I can see.
Before merge can you please change couple things?

Use single quote instead of double.
Make a seperated file for the css (similar to js you did)

@ origranot yeah sure!

@origranot  yeah sure!


chore: address some integration test bloat of disk usage for development

Description
This change attempts to further reduce our build/link time by changing RUSTFLAGS for CI and consolidating some integration tests into singular files, while moving more unit-style tests (those which just rely on tests/data/) into unit tests.
The previous use of "debuginfo=1" would still result in significant file sizes. When building integration tests locally a setting of "1" leads to a total target/ directory size of 3.1GB, whereas "line-tables-only" results in a total clean build target/ directory size of 2.1GB.
The "line-tables-only" feature provides:
Generates the minimal amount of debug info for backtraces with filename/line
number info, but not anything else, i.e. no variable or function parameter info.

Setting this to "0" does reduce the size further, but for panics and stacktraces in CI, we need some level of information to be present in order for the backtraces to be useful.
Related Issue(s)
Closes #1550
Documentation
The line-tables-only value for debuginfo was introduced in Rust 1.70

Thanks for this PR @rtyler. As it has optimized not just on disk usage, but also significantly reduced RAM consumption and total test runtime. Peace for local development especially for newcomers to this project (like myself).
My test run comparisons as below for reference:
Test Run Instance: Ubuntu 22.04, 8GB RAM, 4 vCPUs, SSD

Current main (HEAD 1bb6c3da) with clean target, updated flags in this PR:
~8GB RAM consumption (lots of swapping), ~15 mins runtime, ~19GB size of target after completion.
This PR (HEAD 20da846f) with clean target, old flags:
~6.5 RAM consumption (reduced swapping), ~8 mins runtime, ~6GB size of target after completion.

Below is the new test command that I've constructed from this PR's CI yaml, for reference:
RUSTFLAGS="-C debuginfo=line-tables-only" CARGO_INCREMENTAL=0 RUST_BACKTRACE=1 CARGO_NET_GIT_FETCH_WITH_CLI="true" cargo test -p deltalake --no-default-features --features integration_test,s3-native-tls,datafusion


MSID: 87081 Version: 2 DOI: 2<IP_ADDRESS>5832

[PLACE MANUSCRIPT AND EDITOR DETAILS HERE WHEN AVAILABLE] See step 3
[PLACE PDF URL HERE WHEN AVAILABLE] See step 7
Step 1. Inform bioRxiv
Who can help: @QueenKraken, @nlisgo, @scottaubrey

[x] Manuscript is in data hub index (https://data-hub-api.elifesciences.org/enhanced-preprints/docmaps/v1/by-publisher/elife/get-by-manuscript-id?manuscript_id=87081)

Step 2. Create preview of manuscript
Who can help: @fred-atherden, @nlisgo, @scottaubrey

[ ] Manuscript is available for preview (https://prod--epp.elifesciences.org/preview/87081/v2)

[ ] Trigger import for staging: https://prod--epp.elifesciences.org/import
[ ] Sync data folder with s3://prod-elife-epp-data/data
[ ] Trigger import for staging: https://staging--epp.elifesciences.org/import
[ ] Sync data folder with s3://staging-elife-epp-data/data
[ ] Pull request created to enhanced-preprint-data
[ ] Post link to pull request below

Pull request: [PLACE LINK TO PULL REQUEST HERE]
Detailed instructions: https://github.com/elifesciences/enhanced-preprints-data#add-a-manuscript
Step 3: Awaiting public reviews and QC
Who can help: Production team

[ ] QC passed or QC not needed

Who can help: Editorial team

[ ] Public reviews available on sciety (https://sciety.org/articles/activity/10.1101/2<IP_ADDRESS>5832)
[ ] Manuscript and editor details at the top of this issue (Supplied by Editorial team)
[ ] Reviews returned by EPP - https://prod--epp.elifesciences.org/api/reviewed-preprints/87081/v2/reviews

Example
"msas": "Genetics and Genomics", "Neuroscience"
"msid": "84628"
"version": "1"
"preprintDoi": "10.1101/2<IP_ADDRESS>4241"
"articleType": "Reviewed Preprint"
"status": "Published from the original preprint after peer review and assessment by eLife."

"Reviewed Preprint posted": "2023-01-02"
"Sent for peer review": "2022-10-28"
"Posted to bioRxiv": "2022-11-21" (link: "Go to bioRxiv": "https://www.biorxiv.org/content/10.1101/2<IP_ADDRESS>4241v1")

Editors:
Reviewing Editor
Michael B Eisen
University of California, Berkeley, United States
Senior Editor
Michael B Eisen
University of California, Berkeley, United States

Step 4: Modify manuscripts.json (no PDF)

[ ] Reviewed preprint is published to EPP (https://elifesciences.org/reviewed-preprints/87081)

[ ] Pull request created to enhanced-preprint-client
[ ] Pull request switched to "Ready for review"
[ ] Post link to pull request below

[ ] Request that a doi be registered

[ ] Post link to #enhanced-preprint comment below

Pull request: [PLACE LINK TO PULL REQUEST HERE]
#enhanced-preprint comment thread: [PLACE LINK TO COMMENT HERE]

Instructions to modify manuscripts.json

Visit: https://github.com/elifesciences/enhanced-preprints-client/actions/workflows/publish-manuscript.yaml
Click: Run workflow
Complete the form and click "Run workflow"
A successful run should result in a new pull request at https://github.com/elifesciences/enhanced-preprints-client/pulls
Open the pull request and click the "Ready for review" button to trigger tests
Once the tests pass and you are happy with the changes the PR can be merged

Example pull request: https://github.com/elifesciences/enhanced-preprints-client/pull/334/files
Once the pull request is merged in it should be available a few minutes later.

Request that a doi
Post the following in #enhanced-preprint:
@Fred can you register a doi for https://elifesciences.org/reviewed-preprints/87081

Step 5: Awaiting search reindex

[ ] Reviewed preprint is avaliable on journal homepage (https://elifesciences.org)

The search reindex is triggered once an hour. We need the reviewed preprint to be indexed as the search application serves the journal homepage.

Additional info
If needed, the jenkins pipeline to reindex search can be triggered sooner.
https://alfred.elifesciences.org/job/process/job/process-reindex-reviewed-preprints/

Step 6: Published! Request PDF generation

[ ] Post the link to the PDF url at the top of the issue

[ ] Post link to #enhanced-preprint comment below

#enhanced-preprint comment thread: [PLACE LINK TO COMMENT HERE]
Post the following to the #enhanced-preprint on slack:
@Ryan Dix-Peek please can you generate a PDF for https://elifesciences.org/reviewed-preprints/87081

Step 7: Introduce PDF to data folder and git repo

[ ] PDF is avaliable at https://github.com/elifesciences/enhanced-preprints-data/raw/master/data/87081/v2/87081-v2.pdf

Detailed instructions: https://github.com/elifesciences/enhanced-preprints-data#add-a-pdf
Step 8: Add PDF url to manuscripts.json

[ ] Reviewed preprint PDF is available for download (https://prod--epp.elifesciences.org/reviewed-preprints/87081)

[ ] Pull request created to enhanced-preprint-client
[ ] Pull request switched to "Ready for review"
[ ] Post link to pull request below

[PLACE LINK TO PULL REQUEST HERE]

Instructions to add PDF url to manuscripts.json

Visit: https://github.com/elifesciences/enhanced-preprints-client/actions/workflows/add-pdf-url-to-manuscript.yaml
Click: Run workflow
Complete the form and click "Run workflow"
A successful run should result in a new pull request at https://github.com/elifesciences/enhanced-preprints-client/pulls
Open the pull request and click the "Ready for review" button to trigger tests
Once the tests pass and you are happy with the changes the PR can be merged

Example pull request: https://github.com/elifesciences/enhanced-preprints-client/pull/397/files
Once the pull request is merged in it should be available a few minutes later.

Step 9: Done!

[ ] Kettle is on!

v5 MECA available at s3://transfers-elife/biorxiv_Current_Content/July_2023/31_Jul_23_Batch_1689/f07f60d1-6d0f-1014-bb97-b4be45cc730f.meca


FAQ Type size

Do you think the type size for the answers could be smaller? Up to you.

I reduced the type size for the FAQ


74619 - ess api additional params calculation when aio feature on

Added code changes
Added unit test cases
Added functional tests

This PBI calculate the additional AIO params as below,

requestedAioProductCount
aioExchangeSetCellCount
requestedAioProductsAlreadyUpToDateCount

Note :- Excluded config, response and helpers files from code coverage to improve Stryker check report.

Stryker report ->  44.97 %


[Fix]: Raise NoResultFound Exception for Missing Base

Description
This PR addresses an issue in the backend where attempting to fetch a configuration with a non-existent base_id resulted in a non-descriptive error. The agenta.get_config function has been updated to raise a NoResultFound exception when the specified base does not exist, ensuring that error handling is more explicit and informative.
Related Issue
Closes AGE-702
Changes Included

Updated db_manager fetch_base_by_id function to raise a NoResultFound exception if the provided base_id does not match any existing base.

What to QA

Test fetching a configuration with a valid base_id to ensure it works as expected.
Test fetching a configuration with an invalid or non-existent base_id and verify that the NoResultFound exception is raised and logged correctly.

Acceptance Criteria

[ ] The NoResultFound exception is raised when a non-existent base_id is provided.
[ ] The correct exception message is logged, providing clear feedback for troubleshooting.

The function fetch_base_by_id is called in a number of functions outside of try-except. This change might introduce unexpected bugs. Please make sure to add exception handling to wherever this function is used and make sure that the logic is not changed (for instance, please make sure that none of the places calling this function consider a None result as if there is no results).

Actually, no. The only function where fetch_base_by_id is called without a try-except block is the construct_app_container router, which has been updated. Every other function that calls fetch_base_by_id, in one way or another, is inside a try-except block.
Functions/routers that make use of the fetch_base_by_id function and have a try-except block include:

save_config router
get_config router
construct_app_container_url router (this is the only place that did not have the function in a try-except block)
add_variant_from_base_and_config router
update_variant_image and terminate_app_and_remove_app_variant functions, which are used in routers that have try-except blocks

re: @mmabrouk


Unit 2

Unit 2

[ ] asr_pipeline.mdx fix link to https://huggingface.co/learn/audio-course/chapter2/audio_classification_pipeline

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


Remove vendor prefix for border-radius

The -webkit- prefix for border-radius should not be needed anymore (http://caniuse.com/#search=border-radius).
This could probably close #305

LGTM - Thanks @netlemur!


How to differentiate a data model on basis of database

Can anyone give me a solution for how to differentiate a data models on the basis of database. I am trying to access these database on the basis custom  parameters add in the meta class but it is not working?

@Itachi3uchiha this is not an issue. Unfortunately what you want it is not clear to us.
Mongoz Meta class only accepts what it is mentioned there. Adding custom parameters like
class Meta:
    my_param = "whatever"

It is not possible. Unless you provide some more details of what you are trying to do, it will be hard to help you finding a solution for this.

So if you say, "I have tow databases with the same definition of a Document, like a User", then you can simply use this https://mongoz.tarsild.io/queries/#using

Ok

@Itachi3uchiha is this what you were looking for? https://mongoz.tarsild.io/queries/#using

No I'm not looking for this I want a model/documents differentiate on the basis of database?

@Itachi3uchiha please, provide an example, a concrete one preferentially. My understanding is that you want, for example:

Document User to be on a database one.
Document Profile to be on a database two.

Is this correct? If yes, then you can do like this:
class User(mongoz.Document):
    ...
    class Meta:
        database = 'one'

class Profile(mongoz.Document):
    ...
    class Meta:
        database = 'two'

All of this is in the documentation but if this is still not what you are looking for, then provide exactly an example as it is not clear.

Yes this exactly I'm looking for thank you

@Itachi3uchiha no problem, this is also in the documentation of Mongoz. I'm closing this then 👍🏼

Yess

@Itachi3uchiha we hope you enjoy Mongoz

Ya ofcourse


 Logical Game Rule Order

The Create/Edit World screen is difficult to use because the game rules are ordered alphabetically. Here is a proposed re-ordering to make it easier to use and closer to Legacy.
Here is the general organization idea: World Options covers block movement, Experiments, and Data Packs. Game Options should be sorted as:
General layout principle:
Host Privileges
Time Options (like Daylight Cycle)
Player Options (like Keep Inventory)
Mob Options (like Mob Griefing)
Block Options (like Tile Drops)
Global Options (like Announce Advancements)
Technical Options (like Random Tick Speed and Spawn Radius)
Command Options (like Log Admin Commands)
With this in mind, here is my re-ordering for ease of use:
World Options (After Customize Button):
Experiments
Data Packs
Trust Players
Fire Spreads
Vines Spread
Water Source Conversion
Lava Source Conversion
Game Options
Host Privileges
Daylight Cycle
Weather Cycle
Keep Inventory
Limited Crafting
Immediate Respawn
Natural Regeneration
Drowning Damage
Fall Damage
Fire Damage
Freezing Damage
Mob Spawning
Phantom Spawning
Pillager Patrols
Disable Raids
Wandering Trader Spawning
Warden Spawning
Mob Griefing
Universal Anger
Forgive Dead Players
Mob Loot
Entity Cramming Limit
Entity Loot
Tile Drops
Block Explosion Drop Decay
TNT Explosion Drop Decay
Mob Explosion Drop Decay
Projectiles Break Blocks
Snow Accumulation Height
Death Messages
Sleep Percentage
Respawn Radius
Random Tick Speed
Announce Advancements
Global Sound Events
Global Map Player Icon
Survival Nether Portal Delay
Creative Nether Portal Delay
Disable Elytra Movement Check
Spectators Generate Chunks
Reduced Debug Information
Log Admin Commands
Command Feedback
Command Block Output
Command Modification Block Limit
Command Chain Limit
Command Context Limit (please capitalize "Limit" in this gamerule in en_us)

Partially added in version 1.3.3

Added in version 1.4.1, not quite in the order and categories you wanted, unfortunately, as compatibility with other mods game rules should be in mind.


Upgrade Ubuntu to 23.04

Desired Outcome
This pull request upgrades Ubuntu from 20.04 to 23.04
Changelog

[X] The CHANGELOG has been updated, or
[ ] This PR does not include user-facing changes and doesn't require a
CHANGELOG update

Test coverage

[ ] This PR includes new unit and integration tests to go with the code
changes, or
[X] The changes in this PR do not require tests

Documentation

[ ] Docs (e.g. READMEs) were updated in this PR
[ ] A follow-up issue to update official docs has been filed here: [insert issue ID]
[X] This PR does not require updating any documentation

Behavior

[ ] This PR changes product behavior and has been reviewed by a PO, or
[X] These changes are part of a larger initiative that will be reviewed later, or
[ ] No behavior was changed with this PR

Security

[ ] Security architect has reviewed the changes in this PR,
[X] These changes are part of a larger initiative with a separate security review, or
[ ] There are no security aspects to these changes

I've squashed the commits so it looks like @gl-johnson's changes were combined into this PR


Fix region and country encoding (RFC3986)

Just like what @marcojakob observed on city names in #788, we should also encode region and country names for the location of the requester's public IP address.
So that problems like what I met:
✘ [ERROR] Problematic header name or value: "Västra Götaland County" (raw bytes: "\x56\xe4\x73\x74\x72\x61\x20\x47\xf6\x74\x61\x6c\x61\x6e\x64\x20\x43\x6f\x75\x6e\x74\x79"). This string contains 8-bit characters in the range 0x80 - 0xFF. As a quirk to support Unicode, we encode header strings in UTF-8, meaning the actual header name/value on the wire will be "\x56\xc3\xa4\x73\x74\x72\x61\x20\x47\xc3\xb6\x74\x61\x6c\x61\x6e\x64\x20\x43\x6f\x75\x6e\x74\x79". Consider encoding this string in ASCII for compatibility with browser implementations of the Fetch specifications.

won't occur anymore.

PS: not a huge deal... but I wonder why the vercel docs don't specify that these headers should be encoded (as they do for x-vercel-ip-city) 🤔

Good catch, according to that doc, x-vercel-ip-country should be an ISO 3166-1 country code, and x-vercel-ip-country-region should be an ISO 3166-2 code.
However all information we can get from request.cf is the full name of the country/region, and unfortunately I don't know how to map these names to ISO codes (eg, in most libraries like iso-3166 it is Västra Götalands län instead of Västra Götaland County).
(May I know where these values in request.cf come from?)
For now I think it's up to you to merge this pr or not (as long as it suppress the error message about non-ascii header), but I may open an issue about the real problem since I don't know how to fix it for now.

Update: I found regionCode in cf and cf-ipcountry in request headers, these seems to be what we need here, so I may fix the root problem now.


Metrics: make CRPS handle obs outside the fx support

[x] Closes #779 .

[X] I am familiar with the contributing guidelines.
[x] Tests added.
[x] Updates entries to docs/source/api.rst for API changes.
[x] Adds descriptions to appropriate "what's new" file in docs/source/whatsnew for all changes. Includes link to the GitHub Issue with :issue:`num` or this Pull Request with :pull:`num`. Includes contributor name and/or GitHub username (link with :ghuser:`user`).
[x] New code is fully documented. Includes numpydoc compliant docstrings, examples, and comments where necessary.
[ ] Maintainer: Appropriate GitHub Labels and Milestone are assigned to the Pull Request and linked Issue.

This PR addresses the issue identified in #779 regarding how the current implementation of the CRPS metric handles cases where the observation is outside the forecast support. For example, if the probabilistic forecasts predicts power values from 1 to 8 MW but the actual power is 10 MW. The core idea is to extend the forecast CDF so covers the observation, whether the observation is less than the minimum forecast (obs < min fx) or greater than the maximum forecast (obs > max fx).
This PR also updates the CRPS function docstring with improved equation rendering and notes on practical considerations related to calculating CRPS from discrete forecast CDFs.
Lastly, the CRPS calculation has been updated to use trapezoidal numerical integration (instead of rectangular integration). This change does not increase the computational cost of the CRPS calculation, but has lower error (O(\delta x) for rectangular vs O(\delta x^2) for trapezoidal, where \delta x is the spacing between points). In practice, this means the CRPS calculation is now more accurate in cases with lower resolution forecast CDFs (e.g., 0%, 10%, ..., 100%).

CI failed because I forgot about the metrics.calculator tests... Working to fix those.

@lboeman let's give @dplarson a chance to address the comments and unless David says otherwise then go ahead and merge - I don't feel a need to look again.

Sounds good. Everything looks good to me. From what I can follow tests align well with the discussion of expected behavior. Thanks for taking care of this so quickly @dplarson.

Thanks @wholmgren for your fast review. I've revised per your comments.

@lboeman FYI I'm available the rest of the day if any other changes are needed before merging this PR.

@lboeman FYI I'm available the rest of the day if any other changes are needed before merging this PR.

I'll go ahead and merge and poke it in dev a bit! Thanks David.


Added endpoint_name

I used endpoint_name to match https://sagemaker.readthedocs.io/en/stable/api/inference/predictors.html and to avoid the confusion between an endpoint_name and an endpoint_invoke_url

What is the need for this new field? I'm guess its for setting some environment variable in downstream connected apps?

What is the need for this new field? I'm guess its for setting some environment variable in downstream connected apps?

Exactly. https://github.com/massdriver-cloud/webinar-aws-sagemaker-inferencing/blob/main/app/main.py#L74
I attempted to do <jq_goes_here> | split(':')[-1] | split('/')[1] and it failed to interpret that correctly as an environment variable. So instead of asking for repetitive string manipulation, we decided the best approach is to pass the endpoint_name in addition to the arn

Endpoint name can be extracted from the ARN. Closing this for now.


API

Branch: feature/api
Here's an umbrella issue tracking work on providing an (optional) HTTP-based API for phantom. The goal is to provide an API that's sufficient for powering a UI or web app.
Goals

Manage multiple servers on a single instance of phantom
Start/stop/restart phantom proxies at any time
Reconfigure phantom on the fly without restarting it
Expose as much information about the proxies/servers as possible
Expose as much configuration as possible for powerful UIs

Features

Enable via -api flag on the command line
HTTP server and JSON REST API for CRUD operations on phantom servers + start/stop API to control the proxy for each server
JSON-based settings file phantom.json for easy manual configuration
Server info stored on disk and reloaded upon starting phantom so you don't have to reconfigure it every time

Let me know if you have ideas for features!
A fair warning: a lot of the code and APIs could change from commit to commit, so if you build anything against this right now, expect it to break.

An example
POST /api/servers/myServer
 {
  "name": "Test Server",
    "prefs": {
    "bindAddress": "<IP_ADDRESS>",
    "bindPort": 0,
    "remoteServer": "lax.mcbr.cubed.host:19132",
    "idleTimeout": 0,
    "ipv6": false
  }
}

^ would create a new server and store it in phantom.json automatically. That file also contains settings, etc., and you could edit it manually.
POST /api/servers/myServer/start would start a proxy for that server, just like running phantom from the CLI normally.
POST api/servers/myServer/stop would stop the proxy for that server.
Not all the endpoints are implemented yet but they should be soon.

@jhead awesome! I'll look into that, since I never worked with that kind of API. Do i just send a POST request to "/api/..." with a JSON instead of an URL? Does this work on window aswell (since the file system is different than an UNIX like Systems)

@jhead Is there something in the API to remove a server from the JSON without having to fiddle with the JSON directly and overwriting it?

Is there something in the API to remove a server from the JSON without having to fiddle with the JSON directly and overwriting it?

You can use an HTTP DELETE request, for example: DELETE http://localhost:7377/api/servers/MyServer would stop and delete the MyServer server.

Does this work on window aswell (since the file system is different than an UNIX like Systems)?

It should, but let me know if you run into any issues 🙂

@jhead it indeed deletes the server, but it does not alter the JSON file and thus, when restarting the application, the server is back in the list

@WhatWheatleySaid thanks, fixed in 12e0418

@jhead another Bug I encountered is, that only the most recent started server seems to show up in minecraft in your newest version

I don't know how closely related this could be connection-wise, but with the way this is connecting people over LAN would it be possible to make something like BungeeCord for bedrock (connecting multiple servers through portals)

I don't know how closely related this could be connection-wise, but with the way this is connecting people over LAN would it be possible to make something like BungeeCord for bedrock (connecting multiple servers through portals)

Hey @BRadHoc! Cool idea. I’m not sure if I want to build it into phantom though, since you could just setup phantom with one of the existing Bedrock proxies like DragonProxy, etc. Don’t reinvent the wheel, right?

existing Bedrock proxies like DragonProxy

DragonProxy is an abandoned project for joining Java Edition servers that was replaced by Geyser, you're probably thinking of things like WaterDog


self('begin_epoch') was running two times now solved

self('begin_epoch') was running two times now solved
@jph00

It looks like this is failing to run 'begin_fit', unless I'm missing something...

Changed in another PR - thanks!


enhancement excluded delta rows num for rollup&mv tablets

Currently, row statistics counts tablets from rollup&mv in, along side the base index table, which could make a higher report to the analysis manager than the true row number the loads involves.
co-authored-by: Siyang Tang<EMAIL_ADDRESS>Proposed changes
Issue Number: close #xxx

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run buildall

run buildall


chore(Button): use createRef() API internally

This PR continues adoption of createRef(), no user-facing changes.

Codecov Report

Merging #3460 into master will decrease coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #3460      +/-   ##
==========================================
- Coverage   99.89%   99.89%   -0.01%
==========================================
  Files         172      172
  Lines        2815     2814       -1
==========================================
- Hits         2812     2811       -1
  Misses          3        3

Impacted Files
Coverage Δ

src/elements/Button/Button.js
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

Released in<EMAIL_ADDRESS>


ConsumerHolder Continuation missuse and missing await

The consumer holder uses
https://github.com/pablocastilla/NServiceBus.Kafka/blob/master/src/NServiceBus.Kafka/Connection/ConsumerHolder.cs#L186
and specifies ExecuteSynchronously
https://github.com/pablocastilla/NServiceBus.Kafka/blob/master/src/NServiceBus.Kafka/Connection/ConsumerHolder.cs#L229
although it actually executes IO-bound work
https://github.com/pablocastilla/NServiceBus.Kafka/blob/master/src/NServiceBus.Kafka/Connection/ConsumerHolder.cs#L225
There are multiple problems due to that:
If you stick to that pattern you have to remove the ExecuteSynchronously since you are violating the TPL constraints that a continuation with that flag should only execute synchronous and really short lived operations as well as mark the lambda as async and properly await the commit. If you don't do that you'll never find out when the commit fails
but overall I think this code is unnecessarily complex since you could write the same code inside the Process method with normal async await pattern
https://github.com/pablocastilla/NServiceBus.Kafka/blob/master/src/NServiceBus.Kafka/Connection/ConsumerHolder.cs#L262

I see your point. You have a good eye for asynchrony in c#.
As this is related to:
https://github.com/pablocastilla/NServiceBus.Kafka/issues/9
How do you see just isnerting the processed offset in the collection in the continuewith and do the batch processing each X milliseconds in another task? (let's continue this conversation in 9)

@pablocastilla maybe it is best we have a quick call and discuss the ideas. my skype is the same as my github username


TTMetal Software Queues and Events

Top-level tracker for TTMetal events
Current issues:

[x] #2945
[x] #2946
[ ] #1039

This is duplicate for full async , closing


Performance improvement: consider using FileManager.default.url(for:,in:,appropriateFor:, create:) instead of NSTemporaryDirectory()

Suggestion:
Performance of removing an entry could be improved a bit for archives that reside on volumes, other than the main volume (i.e. the volume of the user's home directory) by using a temporary directory on the same external volume and thus avoiding copying the temporary archive across volumes.
Details:
NSTemporaryDirectory() always returns the path of the temporary directory for the current user. If a zip archive is on a different volume, the performance of removing an entry could be improved by using FileManager.url(for:in:appropriateFor:create:) instead. The FileManager method returns a temporary directory on the same volume as the target file so that replacing the original with the temporary new version of the archive can be achieved in one step.
This is also the recommended way by Apple: https://developer.apple.com/documentation/foundation/1409211-nstemporarydirectory
Code:
In Archive+Writing.swift, around line 150 in Archive.remove(), replace:
let tempArchiveURL =  URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(uniqueString)

with:
let tempArchiveURL = try FileManager().url(for: .itemReplacementDirectory, in: .userDomainMask, appropriateFor: self.url, create: true).appendingPathComponent(uniqueString)

https://github.com/weichsel/ZIPFoundation/blob/92d56accedbd385ae39d3521a46524ea07cab008/Sources/ZIPFoundation/Archive%2BWriting.swift#L150

Good point - I will tag this with the "Help Wanted" label. Maybe someone finds time to test this through.
If no-one picks up this issue, I can see if I can implement it for the next release.


Option to not prefix config key names to class names

Grid setting keys are prepended to class names.
This is OK if the CSS class names in use can correspond to key names e.g. background-white where background is the key and white is the value, but that's not always the case.
e.g. frameworks like Tailwind and Bootstrap use classes like text-white and text-right.
Because we need have unique keys for JS we end up with things like text-align-text-right or text-color-text-white which requires additional/different classes in the backoffice. This is not always straightforward to produce - especially when using frameworks like Bootstrap and Tailwind that auto-generate a lot of classes.
It would be really helpful to have an option to to not include the key in the CSS class name.
Alternatively, it might make sense to not include the key at all, and rely solely on the modifier value to prepend the classes when necessary.

Thanks,
I'd say settings with an extra key (not in the Umbraco schema) would override the default behavior.
That will aid in not breaking backwards-compatibility.
So for example :
[
    {
        "label": "Untouched",
        "key": "untouched",
        "view": "textstring"
    },
    {
        "label": "Text Color",
        "key": "text-color",
        "sg-prefix": "text",
        "view": "radiobuttonlist",
        "config": {
            "prevalues": [
                {
                    "label": "White",
                    "value": "white"
                },
                {
                    "label": "Black",
                    "value": "black"
                }
            ]
        }
    },
    {
        "label": "Text Alignment",
        "key": "text-alignment",
        "sg-prefix": "text",
        "view": "radiobuttonlist",
        "config": {
            "prevalues": [
                {
                    "label": "Left",
                    "value": "left"
                },
                {
                    "label": "Right",
                    "value": "right"
                }
            ]
        }
    }
]

Untouched will get untouched-value while the two others get text-value.
Make sense?

Yes, although the point is the prefix needs to be exactly the same in the backoffice and frontend.
If we've already got to configure it for the frontend, and Umbraco gives us a way to do that (that already works in the backoffice) then it makes sense to use that.
This would mean that with the override in place the most common use case will end up looking like this:
{
    "label": "Text Alignment",
    "key": "text-alignment",
    "sg-prefix": "",
    "modifier": "text-{0}",
    "view": "radiobuttonlist",
    "config": {
        "prevalues": [
            {
                "label": "Left",
                "value": "left"
            },
            {
                "label": "Right",
                "value": "right"
            }
        ]
    }
}


Master

GitHub Issue
testing pr
Changes
A summary of the changes in the code in this PR. If making any UI changes consider adding screenshots or gifs.
Packages Added
Brief list of any packages added, and if folks need to rerun yarn install to run locally
Checks
Before making your PR, please check the following:

[ ] Critical lint errors are resolved
[ ] App runs locally
[ ] App builds locally (run the build command for any impacted package and check for any errors before the PR)

closing - was only a reference


[FEATURE] Support stage recompute for Spark clients

Code of Conduct

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

Search before asking

[X] I have searched in the issues and found no similar issues.

Describe the feature
Once Uniffle's shuffle data read fails, the spark client has its chance to recompute the whole stage.
Motivation
In a distributed cluster with large number of shuffler servers, it's common for some node to go down, such as:

node crash/maintenance due to hardware failures or security patches
Pod eviction if deployed in a k8s environment
vm/spot instance eviction if deployed in a cloud environment

Uniffle already has provide a mechanism to overcome this issue: the quorum protocol. But it requires multiple replica of the same shuffle data, which increases the network traffic and memory pressure on shuffle server.  And the E2E performance may be degraded due to the replication.
I'd like to provide a new way to alleviate the potential node failure(in rare chance). Once the whole stage could be recompute, the Spark App could be resilient to shuffle server node failure.
Describe the solution
TBD.
A design doc would be added later
Additional context
No response
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

@advancedxy I have some comments in the design doc. Please grant me 'comment' permission.

What is remaining on this particular issue Spark side and are there any docs on how this is enabled?

Wait for the pr https://github.com/apache/incubator-uniffle/pull/1129


Ubuntu22.04+go1.22.3 install sepectre error

go install . ./cmd/...
github.com/spectre-project/go-muhash
../go/pkg/mod/github.com/spectre-project/go-muhash@v0.0.1/muhash.go:76:14: undefined: num3072
../go/pkg/mod/github.com/spectre-project/go-muhash@v0.0.1/muhash.go:77:14: undefined: num3072
../go/pkg/mod/github.com/spectre-project/go-muhash@v0.0.1/muhash.go:97:16: undefined: oneNum3072
../go/pkg/mod/github.com/spectre-project/go-muhash@v0.0.1/muhash.go:98:16: undefined: oneNum3072
../go/pkg/mod/github.com/spectre-project/go-muhash@v0.0.1/muhash.go:121:39: undefined: num3072
../go/pkg/mod/github.com/spectre-project/go-muhash@v0.0.1/muhash.go:133:42: undefined: num3072
../go/pkg/mod/github.com/spectre-project/go-muhash@v0.0.1/muhash.go:205:38: undefined: num3072
../go/pkg/mod/github.com/spectre-project/go-muhash@v0.0.1/muhash.go:223:75: undefined array length elementWordSize or missing type constraint
../go/pkg/mod/github.com/spectre-project/go-muhash@v0.0.1/muhash.go:223:91: undefined: word
../go/pkg/mod/github.com/spectre-project/go-muhash@v0.0.1/uint3072.go:9:12: undefined: elementWordSize
../go/pkg/mod/github.com/spectre-project/go-muhash@v0.0.1/muhash.go:98:16: too many errors
github.com/spectre-project/spectred/cmd/spectrewallet/libspectrewallet/bip32
cmd/spectrewallet/libspectrewallet/bip32/extended_key.go:11:31: undefined: secp256k1.ECDSAPrivateKey
cmd/spectrewallet/libspectrewallet/bip32/extended_key.go:12:31: undefined: secp256k1.ECDSAPublicKey
cmd/spectrewallet/libspectrewallet/bip32/extended_key.go:21:52: undefined: secp256k1.ECDSAPrivateKey
cmd/spectrewallet/libspectrewallet/bip32/extended_key.go:26:52: undefined: secp256k1.ECDSAPublicKey
cmd/spectrewallet/libspectrewallet/bip32/child_key_derivation.go:22:31: undefined: secp256k1.DeserializeECDSAPrivateKeyFromSlice
cmd/spectrewallet/libspectrewallet/bip32/child_key_derivation.go:102:33: undefined: secp256k1.ECDSAPrivateKey
cmd/spectrewallet/libspectrewallet/bip32/child_key_derivation.go:145:32: undefined: secp256k1.ECDSAPublicKey
cmd/spectrewallet/libspectrewallet/bip32/serialization.go:69:38: undefined: secp256k1.DeserializeECDSAPrivateKeyFromSlice
cmd/spectrewallet/libspectrewallet/bip32/serialization.go:83:37: undefined: secp256k1.DeserializeECDSAPubKey

C compiler is missing, muhash and secp256k1 are no native Golang libraries, they relies on underlying C code. Compile spectred with CGO_ENABLED=1. Please install C compiler like gcc and compile with CGO_ENABLED=1 go install . ./cmd/...


Use Go orb install on macOS.

The CircleCI Go orb has been updated. The new release (v1.3.0) includes:

binary caching
macOS support

Both we can use. This PR implements it.

@felicianotech is the caching happening via the orb?

Yes - https://circleci.com/orbs/registry/orb/circleci/go


Error in the installation phase - BookStack haven't access to the database

Attempted Debugging

[X] I have read the debugging page

Searched GitHub Issues

[X] I have searched GitHub for the issue.

Describe the Scenario
I followed the instructions to install (manually) Bookstack here https://www.bookstackapp.com/docs/admin/installation/#manual.
After running php artisan migrate, I receive the error as the following image.

I underline that I already have a BookStack instance working fine that I have to migrate to another server.
Exact BookStack Version
latest
Log Content
Next Illuminate\\View\\ViewException: SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from `users` where `system_name` = public limit 1) (View: /var/www/bookstack/resources/views/layouts/base.blade.php) (View: /var/www/bookstack/resources/views/layouts/base.blade.php) in /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Database/Connection.php:760
Stack trace:
#0 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php(60): Illuminate\\View\\Engines\\CompilerEngine->handleViewException()
#1 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(70): Illuminate\\View\\Engines\\PhpEngine->evaluatePath()
#2 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/View/View.php(195): Illuminate\\View\\Engines\\CompilerEngine->get()
#3 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/View/View.php(178): Illuminate\\View\\View->getContents()
#4 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/View/View.php(147): Illuminate\\View\\View->renderContents()
#5 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Http/Response.php(69): Illuminate\\View\\View->render()
#6 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Http/Response.php(35): Illuminate\\Http\\Response->setContent()
#7 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/ResponseFactory.php(57): Illuminate\\Http\\Response->__construct()
#8 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/ResponseFactory.php(87): Illuminate\\Routing\\ResponseFactory->make()
#9 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(626): Illuminate\\Routing\\ResponseFactory->view()
#10 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(554): Illuminate\\Foundation\\Exceptions\\Handler->renderHttpException()
#11 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(460): Illuminate\\Foundation\\Exceptions\\Handler->prepareResponse()
#12 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(377): Illuminate\\Foundation\\Exceptions\\Handler->renderExceptionResponse()
#13 /var/www/bookstack/app/Exceptions/Handler.php(89): Illuminate\\Foundation\\Exceptions\\Handler->render()
#14 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(233): BookStack\\Exceptions\\Handler->render()
#15 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(210): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->renderHttpResponse()
#16 /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(270): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleException()
#17 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->Illuminate\\Foundation\\Bootstrap\\{closure}()
#18 {main}
  thrown at /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Database/Connection.php:760)
[stacktrace]
#0 {main}
"}

Hosting Environment
PHP 8.1 - Ubuntu 22.04.4 LTS

Hi @nicfab,
Can you share the commands you ran to create the database and user for BookStack in MySQL?

Hi @nicfab, Can you share the commands you ran to create the database and user for BookStack in MySQL?

I solved.
I made an error during the installation process.
Thank you very much for your support.


Home assistant settings for led strips rgbic

Hello everyone,
I've bought some led strips rgbic goove, but I'm not able to configure modes on goove-lan-hass as I see them in the app and segmented lights. How can I get it working on Home Assistant? I attach a screenshot of the app
Thanks ,

The Govee LAN API doesn't provide a documented way to control modes or individual lights, so there is no support for that in this integration.

Do you know if it is possible to implement this function using the Cloud APIs and not the LAN ones?

I have the same limitation. I really wish I could change modes directly from HA.

I have no plans to fix that here in this integration, but mode control already works in my new Govee2MQTT AddOn, so you may wish to consider moving to that.
I have plans to also support segmented light control there as well.


Object security

Adds the possibility to secure specific objects, currently also implemented for pages.
Has to be merged with https://github.com/sulu-io/sulu-standard/pull/433
tasks:

[ ] test coverage
[ ] gather feedback for my changes
[ ] submit changes to the documentation

informations:

q
a

Fixed tickets
fixes #462

BC breaks
none

Documentation PR
TODO

Generally good. You need to remove the ProphecyTestCase and replace them with PHPUnit_Frameowkr_Testcase for the tests to pass.
Would be good for @wachterjohannes to review also as my knowledge of security isn't so great.

@dantleech Fixed all the stuff. @wachterjohannes is also not soo familiar with the symfony security stuff I think, but maybe he wants to have a look as well.
Did you also test this stuff on a real installation?

As discussed this could also be implemented at the Storage layer using event subscribers, this has the added benefit that objects are secured globally and security is then not coupled to the controllers. We said that perhaps both systems could co-exist and that creation or migration to a storage layer solution should not cause a great BC break.

Need to initialize the ACL in the build

No need to initialize the ACL in the build, since it is coupled to the configuration and then the tables are created by the doctrine:schema:update command.


[WIP]feat: support customization for logger dev mode

When the log from btp operator is sent to a log system, e.g. OpenSearch, it make sense to turn off the dev mode, so the format will be json - which is simpler to process as structured fields
Pull Request Template
Prerequisites

If there is no issue related to your pull request - open one and assign yourself to it. If you're proposing a solution to an already opened issue - simply assign yourself to it.

Motivation
Describe the problem you're trying to solve or the feature you're proposing in addition to a link to the related issue.
Approach
How does this change address the problem?
Pull Request status

[x] Initial implementation
[ ] Refactoring
[ ] Unit tests
[ ] Integration tests

Feel free to construct the checklist with whatever items seem most reasonable for your change. You could disassemble the Implementation part to even smaller separate checklist items if you're working on something big for example. But do make the effort to provide a checklist of some sort so that the core team as well as the community can have an idea about the progress of your Pull Request.
Third-party code
If you use third party code with your contribution such as, components, libraries, or snippets make sure to mention that.
Work in Progress label
For as long as development of your Pull Request is still ongoing you MUST label it with a wip label as well as prefix the name of the PR with [WIP].
For example: [WIP] Service brokers API

/wip

@kerenlahav can this PR be merged? I don't have permissions. Thanks


websockproxy

So the websockproxy is not the fastest in the world, we know this.
However I have just finished building a new one using Node.js.
This allows me to permessage-deflate compress the raw ethernet frames using zlibDeflate.
The current settings are close to default, as I haven't tested all variables for maximum throughput.
const wss = new WebSocket.Server({
	port: 80,
	perMessageDeflate: {
		zlibDeflateOptions: {
			chunkSize: 1024,
			memLevel: 7,
			level: 3,
		},
		zlibInflateOptions: {
			chunkSize: 10 * 1024
		},
		clientNoContextTakeover: true, // Defaults to negotiated value.
		serverNoContextTakeover: true, // Defaults to negotiated value.
		serverMaxWindowBits: 10, // Defaults to negotiated value.
		// Below options specified as default values.
		concurrencyLimit: 10, // Limits zlib concurrency for perf.
		threshold: 1024, // Size (in bytes) below which messages should not be compressed.
	}
});

However if someone could test the speed compared against websockproxy and post here, it would be appreciated.
Use Docker, or build yourself for aarch64 architecture or any other using run.sh
node-relay
An example:
I am running a Full Node Blockchain daemon using v86 as underlying technology, and I needed more throughput to download the blocks in a reasonable time frame. ( Code: https://github.com/bloqifi/v86/tree/bloqcoin )
Bloqcoin full node running in browser
https://www.bloqifi.com/node_experimental

Thanks, this is quite useful. I'm getting around 300 KiB/s with a local proxy in Arch Linux.  I've added a link in networking.md.


fix: Switched Google Sheets JSON to local directory

Description
Since the UQI PR is now merged, we need to move out of using the Github repo for configurations as well.
Fixes #14595
Type of change

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

How Has This Been Tested?

Manual testing

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

/ok-to-test sha=0bc1cfd

/ok-to-test sha=f0f52f7

/ok-to-test sha=ced0e23


No version option/command

It looks like a new version was released 4 days ago [1], but there's no way to check if a currently-installed version is up-to-date without figuring out where it's installed and checking its package.json:
$ yalc --version
Use `yalc help` to see available commands.

$ yalc version
Unknown commmand `version`. Use `yalc help` to see available commands.

$ yalc help | grep -i version || echo "no version"
no version

[1] To NPM, but not (yet?) in Git. Please consider adding and pushing tags for these so they show up here.

This feature was added 12 days ago. See here: 18bfaae8d6f47a3cda8da59b5b70a68f56707568
@whitecolor Need help closing issues?
While on the topic of versions, Yalc should start using normal versioning instead of the -pre. suffix. And it would be great to get semantic-release setup. LMK if you want help with that, @whitecolor!


Cannot create a CloudKitProcedure with let operation CKQueryOperation, get Generic Parameter error

I want to configure a CloudKitProcedure which calls a CKQueryOperation, but I can't succeed I have a Swift compilation error, below is the code I use :
let operation = CloudKitProcedure { CKQueryOperation(query: CKQuery(recordType: "Products", predicate: NSPredicate(value: true))) }
I get an error "Generic Parameter 'T' couldn't be inferred"
Did I write something wrong, I have used CloudKitProcedure with a CKModifyRecordZone it worked good, but with this one it doesn't.

Hi @imrabti, your code looks fine at first glance.
Can you confirm what version/hash of ProcedureKit you are using & platform version too. Thanks.

Hi @danthorpe, thank you for the fast answer, and for the outstanding framework you offer us.
Here is the hash of ProcedureKit I'm using : 57b3de53e06694fb44a3211c35b9df89dfe226b2
I'm on the development branch, and for the platform it is on iOS 11.4.
I hope the details I provided are enough.

Thanks @imrabti - but, that hash is not recognised/valid - see: https://github.com/ProcedureKit/ProcedureKit/commit/57b3de53e06694fb44a3211c35b9df89dfe226b2 ??
Can you try your project again using the 5.0.0-beta.1 tag? See: https://github.com/ProcedureKit/ProcedureKit/releases/tag/5.0.0-beta.1
Also, if you're using the Xcode 10 Beta - I still have some changes from https://github.com/ProcedureKit/ProcedureKit/pull/855 to resolve into development and v5 before it is final. There are changes here related to CloudKit stuff. Now that the Xcode 10 GM seed is here, this should hopefully all get resolved this coming weekend.

Just refreshing my memory on the CKQueryOperation support - I think in the changes in Swift 4.1 and development branches of Swift, that support for CKQuery in CloudKitProcedure was not immediately possible. This is why the file has #if !swift(>=4.1) at the top of it.
And that is why you're seeing the compile time error, because CKQueryOperation does not conform to the required protocols that CloudKitProcedure needs.
Now that the GM is here, I can re-visit this. I think (looking at the test suite) that CKQueryOperation was the only cloud kit operation which I could not get working when I last looked at this when Xcode 9.4 came out.

I’m currently using XCode 9, I’ll switch to that Tag and give it a try. Hopefully everything will work smoothly.
In my cocoaPod I have import ProcedureKit as described below :
pod 'ProcedureKit/All', :git => 'https://github.com/ProcedureKit/ProcedureKit.git', :branch => 'development'
Is it the good way to integrate it ?

If the issue fixed with XCode 10 and Swift 4.2, I can also move to that.

Yeah, that is mostly fine. Once 5.0 is done (which should not be long now - just need to finish of Xcode 10 stuff) then you can switch to semantic versioning with:
pod 'ProcedureKit/All', '~ 5.0'

Ok great, I’ll try with Xcode 10, I need to migrate my application anyway to that.

Wise move - its out of Beta now. If you have any other migration issues with PK - it would be super great if you could create a new issue in this project 😊

Thank you, I need your opinion on a use case I use PK in to handle CloudKit record zone operation.

After updating to Swift to 4.2 and XCode 10 this works smoothly.


Address deprecation of arguments in component lifecycle hooks.

Ember will stop passing arguments to component lifecycle hooks.
See https://goo.gl/pfxVsS for more details.

Nick let me know what you think about this approach

Hi Luis, thanks for the PR!
The tests are passing, and the code looks okay. I'm curious though: why build the change detection yourself rather than rely on a community solution like ember-diff-attrs?

Had a few problems with ember-diff-attrs, I think the root cause of the problems came down to this:
Since this addon is implemented as a macro, it cannot easily utilize a component's init call to setup. Because of this, we are unable to determine what has changed the first time didUpdateAttrs is called.

I had some spare time tonight, so I went ahead and tackled this. Hope you don't mind.


PR #65 broke the MagTag constructor in some circumstances

As far as I can tell, PR #65 broke the MagTag() constructor.
From the "Simple test" example in the docs, you are instructed to use the MagTag constructor to get an instance to the MagTag class, which you need to access MagTag-specific APIs:
from adafruit_magtag.magtag import MagTag

magtag = MagTag()
magtag.add_text(
    text_position=(
        50,
        (magtag.graphics.display.height // 2) - 1,
    ),
    text_scale=3,
)

that constructor ends up calling the Network class, which then ends up calling the constructor from PortalBase' Network:
https://github.com/adafruit/Adafruit_CircuitPython_MagTag/blob/32ec2d95131c5dea8ba33093cb3c5ad92133c9d5/adafruit_magtag/network.py#L70-L74
This is called without any secrets, and that's fine because PortalBase defaults to None. However, if you don't pass None, this piece of code will still be executed:
https://github.com/adafruit/Adafruit_CircuitPython_PortalBase/blob/fc73ddcca38225875478f1347e6576a4d5a72044/adafruit_portalbase/network.py#L114-L119
secrets here is the global secrets import. This code assumes that ssid and password will always be defined at the root level of the secrets. However, this assumption isn't really documented anywhere, and I've been previously fine with having a secrets structure of, for example,
secrets = {
  "api_root": "https://example.com",
  "wifi": {
    "ssid": "example",
    "password": "example"
  }
}

If you have a structure like mine, the aforementioned access of self._secrets["ssid"] and self._secrets["password"] will fail with a KeyError.
In my very humble opinion, this whole code should make sure that the secrets are actually there, and if not, it probably should just not attempt to connect to a network. Users can connect manually via wifi.radio.connect anyway, and provide the credentials there. Moreover, even if "you need to provide the SSID and password in the secrets root if you want to use networking" would be a acceptable compromise, this would still break the library for users who want to use MagTag-specific things, but aren't actually interested in networking. So either way, a bit of extra protection probably doesn't hurt. :)
I would submit a PR, but unfortunately I'm not set up to build CircuitPython myself, and it looks like it's quite a task to get that done... :(
/cc @tekktrik

The secrets dictionary always needed the ssid and password defined at the base level even [before](https://github.com/adafruit/Adafruit_CircuitPython_PortalBase/blob/17a8f453642c3b6ef67999329f9ebe6dddc98162/adafruit_portalbase/network.py#L346) #65, if you're using the secretsdictionary from the user-madesecrets` import.
I'm a little unclear as to what you are saying, so please correct me if I'm wrong - you're saying that the issue is that users are required to provide networking information even if they don't want to use that functionality due to the parsing of the secrets information during initialization, correct?  If so, I can generate a PR to fix that.

The secrets dictionary always needed the ssid and password defined at the base level even before #65, if you're using the secrets dictionary from the user-made secrets import.

Not really, no. If you're using magtag.network.connect() then yes - you're right. But there's also:
import wifi
wifi.radio.connect("ssid", "password")

That API is documented, and it's even used on learn.adafruit.com in the "CircuitPython Internet Test", so I assume that's a valid way to connect to the network as well? I have been using wifi.radio.connect for a while now without issue, and I've never had ssid/password at the root level.
The main reason I hope to continue using that API instead of calling out to magtag.network.connect() is the recent addition of wifi.radio.set_ipv4_address, allowing you to skip DHCP, which would - in theory - be handy!

you're saying that the issue is that users are required to provide networking information even if they don't want to use that functionality due to the parsing of the secrets information during initialization, correct? If so, I can generate a PR to fix that.

Yeah. Sorry if that was not clear. :) With how it is right now, you can't even get the "SImple test" I linked above running - it will error out with a KeyError, even though that example is not using networking at all. I think that's rather confusing.

Okay, got it, I think I understand the issue.  I'll patch that.


Fix loading of Services module in production

By default, code in /lib isn't loaded by Sidekiq in production, because Sidekiq has disabled autoloading for reasons of thread-safety. This means we have to explicitly tell Rails to eager load things in the /lib directory when booting up.
https://github.com/mperham/sidekiq/wiki/FAQ#why-doesnt-sidekiq-autoload-my-rails-application-code
This fix was also made in https://github.com/alphagov/whitehall/pull/2303. It was reverted in https://github.com/alphagov/whitehall/pull/2318 because there were files in /lib that couldn't be eager loaded because it depended on ActiveRecord::Migration code, which Rails won't load when booting up normally.
We don't have that problem so eager loading everything in /lib is safe here.
This PR supersedes https://github.com/alphagov/collections-publisher/pull/148, which had almost the same solution but not the correct diagnosis.
Trello: https://trello.com/c/aBe4IMSt

:+1: I'll leave it for someone else to merge

Good work.  Thanks for the information about this, @jamiecobbett


Let documark compile return file

Hey!
Do you think it would be possible to let the command $ documark compile return the file's name that was generated. This way I can automate my process of compiling the document and have the possibility to do additional stuff with the file, because I have the name returned.
Malcolm

I have recently removed the documark config command, which outputted the document's configuration. But this is a good use case to add it again. Then you could do something like documark compile && documark config | jq '.file' (http://stedolan.github.io/jq/).

I have added documark config to v0.5.1. So you can now do: documark compile && documark.config | jq '.file' -r.

I think you mean documark compile && documark config | jq '.file' -r ?

Oops, typo. Yes!


No text label displayed on Google Colab (Pytorch 1.8.1)

I run following sample code on both local anaconda and google colab.
And on google colab no text label dispkayed on a result node.
Sample Code:
import torch
from torchviz import make_dot
print(torch.__version__)
x_np = np.arange(-2, 2.1, 0.25)
x = torch.tensor(x_np, requires_grad=True)
y = 2 * x**2 + 2
z = y.sum()
params = dict(x = x)
make_dot(z, params=params)

Result 1 (local anaconda pytorch 1.7.1)

Result 2 (Google Colab pytorch 1.8.1)

Hi,
As mentioned in the doc here: https://github.com/szagoruyko/pytorchviz/blob/5c91c3d52451f22af1a388993b798eaac1e0a74c/torchviz/dot.py#L50
The green node is the Tensor passed as output. The () is its size.
You can pass z=z to the params dict and that name will be displayed there.


SQL: add map to iterators

This PR introduces the map operation to the iterators mirror and adds its lowering from a rel_impl.project.
This PR and its conversion works with #539.

We decided to move to an approach where the different semantics of yield (i.e. either return a value or a tuple) are modeled more explicitely in rel_alg and rel_impl. I will merge this PR and open a new one for this rewrite.


Adding support for multiple repos to be submitted

This is addressing one of the gaps I found between this repo and the drone-downstream plugin. My use case requires triggering different repositories (in parallel, ideally), and this adds support for that. Admittedly, it's a flag change and a loop, and the first PR I've submitted to a Golang open source project, so feedback is appreciated.
I tested it with a single repo or multiple, and it worked a treat. It should be backwards compatible just fine - a single --repo flag operates as before, but now you can pass multiple.

Not sure why it failed the build (I am not familiar with Travis, I use Drone and Jenkins mostly), but it looks like it failed on the push step, which I wouldn't expect I could trigger. Feedback here is welcomed as well. Thank you!


Accidental acces to DiscoverySearchMailbox

In the documentation is stated that the PolicyScopeGroupID parameter only accepts recipients that are security principals, so I cannot put a shared mailbox account here directly.
For me this does not matter, because I always use Application Access policies with mail enabled security groups and I only use the AccessRight "RestrictAccess" to allow the application only access to mailboxes that are members of the security groups.
If I use Test-ApplicationAccessPolicy to check whether the policy works as expected, everything seems to be fine, the app has only access to the mailbox which is member of the security group, except one mailbox: The DiscoverySearchMailbox.
I understand that I cannot put the DiscoverySearchMailbox directly as recipient in the PolicyScopeGroupID, but If I'm restricting the application to only one dedicated mailbox, why has the application access to the DiscoverySearchMailbox as well?
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: a47ca7d5-2598-0c06-03fd-854f94cf6bbe
Version Independent ID: a57408f6-16ca-3fcb-0c04-48a7a5f9942d
Content: New-ApplicationAccessPolicy (ExchangePowerShell)
Content Source: exchange/exchange-ps/exchange/New-ApplicationAccessPolicy.md
Service: exchange-powershell
GitHub Login: @chrisda
Microsoft Alias: chrisda

@falk-22, you should open a support ticket and ask. Report back here with any information that can help in the documentation.