Performance Of MergeSort vs Numpy

Also posted here: http://stackoverflow.com/questions/32133597/how-to-improve-this-merge-sort
I have written a mergesort in Python/Numba:
import numba as nb
import numpy as np

@nb.jit( nopython=True )
def merge( x ):

    n = x.shape[0]
    width=1

    r   = x.copy()
    tgt = np.empty_like( r )
    while width<n:
        i=0
        while i<n:
            istart = i
            imid = i+width
            iend = imid+width
            # i has become i+2*width
            i = iend

            if imid>n:
                imid = n

            if iend>n:
                iend=n
            _merge( r, tgt, istart, imid, iend)

        # Swap them round, so that the partially sorted tgt becomes the result,
        # and the result becomes a new target buffer
        r, tgt = tgt, r
        width*=2

    return r

@nb.jit( nopython=True )
def _merge( src_arr, tgt_arr, istart, imid, iend ):
    """ The merge part of the merge sort """
    i0   = istart
    i1   = imid
    for ipos in range( istart, iend ):
        if ( i0<imid ) and ( ( i1==iend ) or ( src_arr[ i0 ] < src_arr[ i1 ] ) ):
            tgt_arr[ ipos ] = src_arr[ i0 ]
            i0+=1
        else:
            tgt_arr[ ipos ] = src_arr[ i1 ]
            i1+=1

I have written a test for it:
def test_merge_multi(self):

    n0 = 21
    n1 = 100

    for n in range( n0, n1 ):
        x = np.random.random_integers( 0, n, size=n )

        with Timer( 'nb' ) as t0:
            r = sas.merge( x )
        with Timer( 'np' ) as t1:
            e = np.sort( x, kind='merge' )
        #print( 'r:%s'%str(r))
        #print( 'e:%s'%str(e))
        print( 'nb/np performance %s'%(t0.interval/t1.interval ))
        np.testing.assert_equal( e, r )

I used this Timer class:
import time

class Timer:

    def __init__(self,title=None):
        self.title=title

    def __enter__(self):
        if self.title:
            print( 'Beginning {0}'.format( self.title ) )
        self.start = time.clock()
        return self

    def __exit__(self, *args):
        self.end = time.clock()
        self.interval = self.end - self.start
        if self.title:
            print( '{1} took {0:0.4f} seconds'.format( self.interval, self.title ) )
        else:
            pass#
            #print( 'Timer took {0:0.4f} seconds'.format( self.interval ) )

The test results are:
nb/np performance 9307.846153856719
nb/np performance 1.1428571428616743
nb/np performance 0.7142857142925115
nb/np performance 0.8333333333302494
nb/np performance 0.9999999999814962
nb/np performance 0.9999999999777955
nb/np performance 0.8333333333456692
nb/np performance 0.8333333333302494
nb/np performance 1.0
nb/np performance 0.8333333333456692
nb/np performance 1.0
nb/np performance 1.0
nb/np performance 1.0
nb/np performance 0.8333333333456692
nb/np performance 0.9999999999814962
nb/np performance 1.0
nb/np performance 0.9999999999814962
nb/np performance 1.0
nb/np performance 1.0
nb/np performance 1.0000000000185036
nb/np performance 1.2000000000044408
nb/np performance 1.0
nb/np performance 1.0
nb/np performance 1.0
nb/np performance 1.0000000000185036
nb/np performance 1.2000000000088817
nb/np performance 1.0
nb/np performance 1.1666666666512469
nb/np performance 1.0
nb/np performance 1.0
nb/np performance 0.9999999999814962
nb/np performance 1.1666666666728345
nb/np performance 1.1666666666512469
nb/np performance 1.0
nb/np performance 1.0
nb/np performance 1.1666666666512469
nb/np performance 1.1666666666512469
nb/np performance 1.1666666666728345
nb/np performance 1.1666666666728345
nb/np performance 1.1666666666728345
nb/np performance 1.1666666666728345
nb/np performance 1.1666666666512469
nb/np performance 1.1666666666512469
nb/np performance 1.0
nb/np performance 1.1666666666728345
nb/np performance 1.3333333333456692
nb/np performance 1.3333333333024937
nb/np performance 1.3333333333456692
nb/np performance 1.1428571428435483
nb/np performance 1.3333333333209976
nb/np performance 1.1666666666728345
nb/np performance 1.3333333333456692
nb/np performance 1.3333333333209976
nb/np performance 1.000000000012336
nb/np performance 1.1428571428616743
nb/np performance 1.3333333333456692
nb/np performance 1.3333333333209976
nb/np performance 1.1428571428616743
nb/np performance 1.1428571428616743
nb/np performance 1.3333333333456692
nb/np performance 1.499999999990748
nb/np performance 1.2857142857074884
nb/np performance 1.2857142857233488
nb/np performance 1.2857142857029569
nb/np performance 1.1428571428616743
nb/np performance 1.1428571428435483
nb/np performance 1.2857142857233488
nb/np performance 1.2857142857233488
nb/np performance 1.2857142857233488
nb/np performance 1.2857142857233488
nb/np performance 1.2857142857233488
nb/np performance 1.2857142857029569
nb/np performance 1.1249999999895917
nb/np performance 1.2857142857029569
nb/np performance 1.2857142857233488
nb/np performance 1.4285714285623656
nb/np performance 1.249999999993061
nb/np performance 1.1250000000034694
nb/np performance 1.2857142857029569

graphed results (from a different run):

Graphed results from a longer run:

Please note that for n<=20, numpy uses an insertion sort when the mergesort is called: https://github.com/numpy/numpy/blob/master/numpy/core/src/npysort/mergesort.c.src
So you can see that for small values of n, the numba version of the mergesort beats the numpy version.
However, as n gets larger, numpy then consistently outperforms numba by a factor of 2.
Why is this? And how could I optimise the numba version to beat the numpy version for all n?

Numpy also uses a top-down mergesort (recursive), while yours is a bottom-up mergesort. That may explain some of the difference.
Do you get different results with an array of int8 values? Your algorithm may not be very cache-friendly.

But you should also try starting with an insertion sort for small sub-arrays (i.e. first insertion-sort runs of 20 items).

You might also rewrite the _merge subroutine to avoid the multiple index checks inside the loop. There should be a first loop that runs until one of the two sub-arrays is exhausted, and then an epilogue which copies the non-exhausted sub-array.

It is also worth noting that @pitrou is experimenting with implementing Timsort (https://en.wikipedia.org/wiki/Timsort) for Numba.  :)

Pitrou - it appears to be worse for np.int8 values.
Rewriting the merge function to avoid the multiple index checks results in a 10% improvement.
@nb.jit( nopython=True )
def merge2( x ):

    n = x.shape[0]
    width=1

    r   = x.copy()
    tgt = np.zeros_like( r )
    while width<n:
        i=0
        while i<n:
            istart = i
            imid = i+width
            iend = imid+width
            # i has become i+2*width
            i = iend

            if imid>n:
                imid = n

            if iend>n:
                iend=n
            _merge2( r, tgt, istart, imid, iend)

        # Swap them round, so that the partially sorted tgt becomes the result,
        # and the result becomes a new target buffer
        r, tgt = tgt, r
        width*=2

    return r

@nb.jit( nopython=True )
def _merge2( src_arr, tgt_arr, istart, imid, iend ):
    """ The merge part of the merge sort """
    i0   = istart
    i1   = imid

    ipos = istart
    v0 = src_arr[ i0 ]
    v1 = src_arr[ i1 ]
    while i0<imid and i1<iend:
        if v0<=v1:
            tgt_arr[ ipos ] = v0
            i0+=1
            v0 = src_arr[ i0 ]
        else:
            tgt_arr[ ipos ] = v1
            i1+=1
            v1 = src_arr[ i1 ]
        ipos+=1

    while i0<imid:
        tgt_arr[ ipos ] = src_arr[ i0 ]
        ipos+=1
        i0+=1

    while i1<iend:
        tgt_arr[ ipos ] = src_arr[ i1 ]
        ipos+=1
        i1+=1

Now that I have experimented a bit on my side, I can add that:

timsort will not be competitive with quicksort on quasi-random data; quicksort's inner loops are much tighter than timsort's, which is a complicated beast
reimplementing Numpy's non-recursive quicksort with Numba also ends up roughly 2x slower than the original C version; I am not sure why but that gap may be hard to fill; at least with quicksort we may be able to read the generated code, though

This doesn't answer your question about mergesort but at least adds some light to the topic :)

Ok, by using an insertion sort for small sub-arrays, Numba is only 1.15x slower asymptotically than Numpy, and is faster for n <= 500 roughly. See https://gist.github.com/pitrou/e12353a5839fb60d3fc1

I'll note that the best results are obtained with an int32 array here (Linux x86-64). With an array of int64 or int16 for example, Numba is 1.35x slower. This is unlikely due to any issues in Numba itself, rather code generation differences between gcc and LLVM.


Have you uploaded the code and data set yet? Do you have the plan and schedule of uploading the corresponding project?

Have you uploaded the code and data set yet? Do you have the plan and schedule of uploading the corresponding project?

Thanks for being interested in the paper. I've been busy with some stuff this summer. But anyway, data and code will be uploaded this month, hopefully, in the next two weeks.

Datasets and codes are updated.


Fix slow processes list update

After fix update time 20-60ms
fix #129
@Eeems

I just implemented the caching in https://github.com/Eeems/oxide/pull/98/commits/0a3cc4e322224e6de104f1ed40a3a3fd6364d0b4# (v2.1 branch) which speeds this up considerably. You could pull in some of the changes into the PR if you'd like and I can release it before v2.1 drops.

I just implemented the caching in https://github.com/Eeems/oxide/pull/98/commits/0a3cc4e322224e6de104f1ed40a3a3fd6364d0b4# (v2.1 branch) which speeds this up considerably. You could pull in some of the changes into the PR if you'd like and I can release it before v2.1 drops.

I think I did something wrong... I've tried to rebase on v2.1

I think I did something wrong... I've tried to rebase on v2.1

I think I did something wrong... I've tried to rebase on v2.1
UPD Hm or is it correct just need to request merge to another branch?
UPDUPD oh figured out just need to edit base to merge in github UI :)

I would not suggest rebasing to v2.1 as that's not ready to merge yet. You will still want to base off of master and merge into master. That way I can push out a release with this change earlier.

I think I did something wrong... I've tried to rebase on v2.1
UPD Hm or is it correct just need to request merge to another branch?
UPDUPD oh figured out just need to edit base to merge in github UI :)

I would not suggest rebasing to v2.1 as that's not ready to merge yet. You will still want to base off of master and merge into master. That way I can push out a release with this change earlier.

I think I did something wrong... I've tried to rebase on v2.1
UPD Hm or is it correct just need to request merge to another branch?
UPDUPD oh figured out just need to edit base to merge in github UI :)

I would not suggest rebasing to v2.1 as that's not ready to merge yet. You will still want to base off of master and merge into master. That way I can push out a release with this change earlier.

Hope now it's correct rebased from master and picked up this commit f4ca478 and applied my changes with fixes

I think I did something wrong... I've tried to rebase on v2.1
UPD Hm or is it correct just need to request merge to another branch?
UPDUPD oh figured out just need to edit base to merge in github UI :)

I would not suggest rebasing to v2.1 as that's not ready to merge yet. You will still want to base off of master and merge into master. That way I can push out a release with this change earlier.

Hope now it's correct rebased from master and picked up this commit f4ca478 and applied my changes with fixes


Show pictures in clipboard history

Problem description
On windows clipboard history also stores pictures which is very useful and cool

Yup, I'd love this as well: https://github.com/SUPERCILEX/gnome-clipboard-history/issues/6
Unfortunately, gnome extensions are just plain awful for writing low-level code, so this is probably never going to happen. The folks at PopOS are planning on adding a clipboard to the Cosmic DE and while I'm still pissed at them for some of their choices, they've been doing great work and I believe the clipboard they implement will be done right. So basically I'm just waiting for Cosmic DE and probably going to let this extension slow die unless someone else can take it over.

@SUPERCILEX Cosmic DE is written in Rust and isn't GNOME. GNOME isn't going anywhere! PopOS might stop using it, but Ubuntu has a larger install base which means a extension like this still has a place. I have tried gpaste and it doesn't feel clean as this extension.
I wonder if someone will maintain this then after you

I wonder if someone will maintain this then after you

Yeah, to be clear I'm not going to completely forget about the extension. If someone sends in a PR, I'll take a look. I just won't fix breakage caused by gnome updates so the community will have to step up when that happens.


Remove hashes.json check

See https://github.com/google/turbinia/issues/629#issuecomment-731263422

This would not generate a hashes.json for all files that are extract by image_exporter, correct? Not just the one for the ssh config files.

e2e test failed. Is the --no-hashes switch something added in a recent plaso release? if so, from which release is this supported?
https://github.com/google/turbinia/pull/828/checks?check_run_id=2775389325#step:9:594

e2e test failed. Is the --no-hashes switch something added in a recent plaso release? if so, from which release is this supported?
https://github.com/google/turbinia/pull/828/checks?check_run_id=2775389325#step:9:594

plaso release 20210412 has the flag

This would not generate a hashes.json for all files that are extract by image_exporter, correct? Not just the one for the ssh config files.

I believe in all cases turbinia runs image_export.py, we don't want that file to be generated. It is not something we're actually "extracting" and it can then be confused as an evidence for following tasks

Thanks for the last commit, removing that apt update fixes the e2e tests. I'll have a look tomorrow and merge.


deps: resolve CVE-2023-45133

Types of changes
CVE-2023-45133: Need to upgrade babel-traverse to >=7.23.2.
Description
Upgrade to babel v7

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

Project coverage is 70.57%. Comparing base (dfabd13) to head (8a4794a).
Report is 2 commits behind head on master.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1170   +/-   ##
=======================================
  Coverage   70.57%   70.57%
=======================================
  Files          85       85
  Lines        3392     3392
=======================================
  Hits         2394     2394
  Misses        998      998

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

發現幾個問題，重推一版

安裝 node-sass 應該會需要 python，但 production image 沒有用到
babel plugins 應該要在 babelify command 裡面指定，已補上


Contract violation error in snowplow-storage-loader archive_enriched phase

Hi all, I use Snowplow r71. When EMR job finishes I do loading to my Postgres DB with
/opt/snowplow-r71/snowplow-storage-loader -c /opt/snowplow-r71/config.yml
It downloads enriched events, loads to PG, archives from 'out' to 'storage-archive' folder, does not delete local files that used for COPY to PG, and then fails with this exception
  moving files from s3://snow-plow/out/ to s3://snow-plow/storage-archive/
(t0)    MOVE snow-plow/out/run=2015-10-16-08-30-55/_SUCCESS -> snow-plow/storage-archive/run=2015-10-16-08-30-55/_SUCCESS
      +-> snow-plow/storage-archive/run=2015-10-16-08-30-55/_SUCCESS
      x snow-plow/out/run=2015-10-16-08-30-55/_SUCCESS
Unexpected error: Contract violation for argument 1 of 1:
    Expected: String,
    Actual: nil
    Value guarded in: Sluice::Storage::S3::Location::initialize
    With Contract: String => Sluice::Storage::S3::Location
    At: /opt/snowplow-r71/snowplow-storage-loader!/gems/sluice-0.2.2/lib/sluice/storage/s3/location.rb:35
/opt/snowplow-r71/snowplow-storage-loader!/gems/contracts-0.7/lib/contracts.rb:69:in `Contract'
org/jruby/RubyProc.java:271:in `call'
/opt/snowplow-r71/snowplow-storage-loader!/gems/contracts-0.7/lib/contracts.rb:147:in `failure_callback'
/opt/snowplow-r71/snowplow-storage-loader!/gems/contracts-0.7/lib/contracts/decorators.rb:164:in `common_method_added'
/opt/snowplow-r71/snowplow-storage-loader!/gems/contracts-0.7/lib/contracts/decorators.rb:159:in `common_method_added'
/opt/snowplow-r71/snowplow-storage-loader!/storage-loader/lib/snowplow-storage-loader/s3_tasks.rb:91:in `archive_files_of_type'
/opt/snowplow-r71/snowplow-storage-loader!/storage-loader/lib/snowplow-storage-loader/s3_tasks.rb:68:in `archive_files'
file:/opt/snowplow-r71/snowplow-storage-loader!/storage-loader/bin/snowplow-storage-loader:63:in `(root)'
org/jruby/RubyKernel.java:1091:in `load'
file:/opt/snowplow-r71/snowplow-storage-loader!/META-INF/main.rb:1:in `(root)'
org/jruby/RubyKernel.java:1072:in `require'
file:/opt/snowplow-r71/snowplow-storage-loader!/META-INF/main.rb:1:in `(root)'
/tmp/jruby6807977102067423148extract/jruby-stdlib-<IP_ADDRESS>.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1:in `(root)'
: snowplow-storage-loader failed with status 1

But if I do processing with 2 separate command that mimic the whole process overall, it's okay:
/opt/snowplow-r71/snowplow-storage-loader -c $snowplow_home/config.yml -s archive_enriched
/opt/snowplow-r71/snowplow-storage-loader -c $snowplow_home/config.yml -s download,delete,load,shred,analyze

That's odd - thanks for raising. We don't use PG much so it's quite possible a regression has slipped in. Assigning to our new CLI release, please add more info when you have it.

My config looks like this:
aws:
  access_key_id: XXX
  secret_access_key: XXX
  s3:
    region: us-east-1
    buckets:
      assets: s3://snowplow-hosted-assets
      log: s3://my-snowplow-bucket/log
      raw:
        in:
        - s3://elasticbeanstalk-us-east-1-XXX/resources/environments/logs/publish/e-XXX
        processing: s3://my-snowplow-bucket/processing
        archive: s3://my-snowplow-bucket/archive
      enriched:
        good: s3://my-snowplow-bucket/out
        bad: s3://my-snowplow-bucket/bad
        errors: s3://my-snowplow-bucket/errors
        archive: s3://my-snowplow-bucket/storage-archive
      shredded:
        good: s3://my-snowplow-bucket/out
        bad: s3://my-snowplow-bucket/bad
        errors: s3://my-snowplow-bucket/errors
        archive:
      jsonpath_assets:
  emr:
    ami_version: 3.7.0
    region: us-east-1
    jobflow_role: EMR_EC2_DefaultRole
    service_role: EMR_DefaultRole
    placement: us-east-1b
    ec2_key_name: emr-keypair
    bootstrap: []
    software:
      lingual: '1.1'
    jobflow:
      master_instance_type: m1.medium
      core_instance_count: 2
      core_instance_type: m1.medium
      task_instance_count: 0
      task_instance_type: m1.medium
      task_instance_bid: 0.015
    bootstrap_failure_tries: 3
collectors:
  format: clj-tomcat
enrich:
  job_name: Snowplow ETL
  versions:
    hadoop_enrich: 1.1.0
    hadoop_shred: 0.5.0
  continue_on_unexpected_error: false
  output_compression: NONE
storage:
  download:
    folder: /var/storageloader
  targets:
  - name: My PostgreSQL database
    type: postgres
    host: localhost
    database: xxxxx
    port: 5432
    table: atomic.events
    username: postgres
    password: xxxx
    maxerror:
    comprows:
    ssl_mode: disable
monitoring:
  tags: {}
  logging:
    level: DEBUG
  snowplow:

I updated issue body bottom with result of 2 commands execution.

Thanks

Looks like this is caused by the StorageLoader expecting a non-nil value in the configuration for aws.s3.buckets.shredded.archive, even though Postgres won't need that bucket.
A workaround is to use the --skip shred option to prevent this line from executing.

Following the release of r73 in December, an archive bucket for shred is necessary even when not using Redshift. So failing if the bucket isn't provided is no longer a bug.


WIP: Data model documentation

Codecov Report

Merging #668 into master will decrease coverage by 0.02%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #668      +/-   ##
==========================================
- Coverage   81.69%   81.67%   -0.03%
==========================================
  Files          72       72
  Lines        2731     2728       -3
==========================================
- Hits         2231     2228       -3
  Misses        500      500

Flag
Coverage Δ

#py27
81.67% <ø> (ø)

#py36
?

#py37
?

Impacted Files
Coverage Δ

...ntimelineio/opentimelineio-bindings/otio_utils.cpp
87.05% <0.00%> (-0.16%)
:arrow_down:

...elineio/opentimelineio-bindings/otio_anyVector.cpp
100.00% <0.00%> (ø)

...eio/opentimelineio-bindings/otio_anyDictionary.cpp
100.00% <0.00%> (ø)

Continue to review full report at Codecov.

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

Codecov Report

Merging #668 into master will decrease coverage by 0.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #668      +/-   ##
==========================================
- Coverage   81.88%   81.86%   -0.02%
==========================================
  Files          72       72
  Lines        2755     2752       -3
==========================================
- Hits         2256     2253       -3
  Misses        499      499

Flag
Coverage Δ

#py27
81.86% <ø> (ø)

#py36
?

#py37
?

Impacted Files
Coverage Δ

...ntimelineio/opentimelineio-bindings/otio_utils.cpp
87.05% <0.00%> (-0.16%)
:arrow_down:

...elineio/opentimelineio-bindings/otio_anyVector.cpp
100.00% <0.00%> (ø)

...eio/opentimelineio-bindings/otio_anyDictionary.cpp
100.00% <0.00%> (ø)

Continue to review full report at Codecov.

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

Moved documentation project to https://github.com/sandflow/otio-core-specification for now in order to support a lighter build process. Rendered at https://sandflow.github.io/otio-core-specification/.


fix: CSS full height background

Addresses the issue mentioned here https://github.com/turbolinks/turbolinks-android/issues/43
Caused by the layout params of the WebView not having been set

I have similar problem with the height as well, where the content's height is smaller than the webview's height. Hope this PR will fix it.

@chamnap yep this PR will fix that! :) We've encountered the same problem.

thanks for this fix!
Why not merge this PR?

@kassim Thanks for this! I'll pull and try it out to ensure there are no other side effects (not expecting any).
A couple very minor suggestions:

Move the layout code to its own private method, and call it from createWebView()
Please rebase/squash your commits into one commit so we can keep the commit history clean (the updating build tools and subsequent revert in particular).

Thanks!

new PR https://github.com/turbolinks/turbolinks-android/pull/63


Sync: Fief Properties

Description

Sync the values in the Synced list below.
Create an end to end (E2E) tests for all properties (1 for server changing the value and 1 for client changing the value if applicable)
Create a command to test changing each property in game see similar command

Also see additional information at the bottom for more information and templates

Key
Server side only (only allow the running of the function on the server side)
Client side only (only allow the running of the function on the client side)
Client side sync (request the server to change the value, server then changes the value and replies to the client allowing the change)
Server side sync (only server allows running of the function and send to all clients the value changed and clients update the value/call original function)
Synced

Method/Field Name
Sync Type
Additional Information

FoodStocks
Server side sync

Deferred

None
Externally Deferred

None
Non-Synced

None
Intended Design

You are expected to only sync the property setters.
Try using the new autosync tool
Location

Create a branch based from development
Related Issues

Blocked by:

#865

Requirements

N/A
Additional information

Using the GameInterface Service Tempale create commands to test the synced values.
Definition of Done

[ ] Class level comments exist for all new classes.
[ ] XUnit E2E tests exist for every property on the server (and client if applicable)
[ ] Each property has a command getter and setter

Any reason to reopen this? Property is already synced from earlier.

Already synced


Only show titles under active Tab

Right now I have my bottombar showing icons only by overriding the styles.xml with
<style name="BB_BottomBarItem_TitleStyle" parent="BB_BottomBarItem_TitleStyle">
    <item name="android:visibility">gone</item>
</style>

I would like the active tab to show it's title. Sort of like this example on the official bottom bar Material Guidelines.

Is this currently possible?

@Cplantijn yes it is possible , build and run the sample app and you should see the behaviour . Check this class as well https://github.com/roughike/BottomBar/blob/master/app/src/main/java/com/example/bottombar/sample/FiveColorChangingTabsActivity.java

Thank you @rihantvx !


runtime(doc): fix invalid link to Open Publication License

The link in https://opencontent.org/openpub is actually invalid too:
Copyright (c) <year> by <author’s name or designee>.
This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, vX.Y or later (the latest version is presently available at https://www.opencontent.org/openpub/).

But since the text here doesn't exactly match that anyway (doesn't have the parentheses), it's probably fine to fix it.

thanks, I include this together with some more fixes of invalid links.


fix(components): badge forward ref

Fixes #1701

@miquelvir I left a comment on the issue.

I need Badge to use forwardRef so that you can drag Badges using dnd-kit.
So this might be very useful to include. :)


Enhancement: Sorting in unpacked solutions

When solutions are unpacked, it would be helpful if certain XML fragments were sorted as dynamics returns them in random orders each export. Examples are:-

MissingDependency in the solution.xml
AppModuleComponents for AppModules

This would help minimise changes when unpacked solutions are tracked in git.

this is a frustration we all share. We have work planned for the next quarter to reduce that diffing noise

It would be great to have something like that. But this a very sensible topic.
I implemented something like this myself before these kind of tools were available for the community. This needs to be implemented very carefully. For example this will change the loading order of scripts associated to forms and most likely break the functionality doing so. This is just one example were such a sorting mechanic might cause problems.
So right from the start we would need a setting to enable/disable such sorting to bypass any upcoming problems. And please let this setting consume a variable.

@SiPurdy  I'm experiencing these issues too.  Totally unsupported, unrecommended, hacks that I've used/suggested are here:
https://github.com/microsoft/coe-alm-accelerator-templates/pull/127
https://github.com/filcole/SolutionRefs
Use at your peril!

Latest version of solution packager libraries apply sorting


Automated Package Upgrade

:tada: This PR is included in version 9.4.2 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Change license to Apache 2

Possibly controversial. But I think that as part of the move to the Typelevel organisation this would make sense.

I think Apache 2 is a good choice for a license. But in the meantime, perhaps you could make the current license more visible in the Github repo? As far as I can understand, the current license is BSD-2.

Mail proposing license change sent to all current contributors. I'll update when/if I get positive responses from everyone.
@lervag fair comment ... if I don't hear back in a few days I'll add the BSD license to the repo.

All received responses approved the change. There's only one response outstanding (@yasuba :wave:), and I'll take the optimistic strategy.


devices deleted on refresh

Hi,
I have disabled the resetDevice=false in config-provider.js file so that the devices remain intact for the logged in user even though the page is refreshed or closed, still the devices are deleted on refresh. Kindly help me with this
Thanks in advance.

Yeah, I've the same issue!

Due to more than 3 months of inactivity, this issue is being closed.
If you think the resolution is in error, please re-open the request with fresh information.

I think this issue is still valid for now.

The sample has now been significantly updated. Devices will be configured with a persistent datastore like Firestore to persist across sessions.


Torso and Gimbal bringup

This PR adds changes required to get the torso and gimbal moving. vids of torso and gimbal moving are posted to the discord. moveit_python is removed from movo_third_party and added to the rosinstall instead

Seems good since just python fixes. However, why were so many files deleted here?? Did moveit get moved somewhere else or something?

i deleted moveit_python and added it as a rosinstall dependency. see movo.rosinstall

just rebased. can i get reapprovals


allows  for projects to override build script versions

Motivation
Currently, there is no way to specify the buildToolsVersion, compileSdkVersion, reactNativeVersion,  targetSdkVersion, and minimumSdkVersion. For projects that target api 27 or later, this produces warnings of multiple api's being used.  This PR utilizes the defaults already inside the build.gradle when not specified.
Test Plan (required)
An example of overriding default version, to be placed inside the project's build.gradle
allProjects{
  project.ext {
     compileSdkVersion=27
     targetSdkVersion=27
     buildToolsVersion='27.0.3'
     minSdkVersion='21'
  }
}

Thanks, it has been fixed by 8187eaf1ca308c0737ed13e96f98bd0033ca160e.


Update default Node.js version to 'lts/*'

Test: https://staging.travis-ci.org/BanzaiMan/travis_staging_test/builds/743257

Coincidentally, default on windows doesn't seem to work currently. https://travis-ci.org/BanzaiMan/travis_production_test/jobs/560066644

Testing on Windows: https://staging.travis-ci.org/BanzaiMan/travis_staging_test/builds/743259

Caching doesn't work for lts/*, so we need to fix that before changing the default.

Why doesn’t caching work for that?
Separately, you may want to hold off - I’m planning to add lts/-1 etc to nvm in the next couple weeks, so a better default might be lts/-2 which would be the oldest LTS instead of the newest one.

Because the / is the path separator and that cause the archive name to be invalid.

…or so I thought, but it seems to be working? https://travis-ci.org/BanzaiMan/travis_production_test/jobs/566660374#L181


Should RxAndroidBle integrate Android-Scanner-Compat-Library?

Library version: 1.7.0
This is more of a feature suggestion & idea to reduce work, feel free to close if the project has already decided on it.
There are now various Android SDK levels & BLE APIs, which is hard to change due to device distribution and will only be solved in the years to come.
However, I see little need for multiple open source projects to basically write the same code (and maybe bugs) rgd. BLE scanning, reading/writing etc.
For example, this project is dedicated to BLE scanning: https://github.com/NordicSemiconductor/Android-Scanner-Compat-Library
They have already catched up to API 26 (rgd. the isConnectable flag in ScanRecord), so RxAndroidBle would require a PR to add essentially the same code, as well.
Is it worth a consideration to drop all scanning code from this project and use this dependency, instead? You only need to write a Rx wrapper and done.

Hello,
Thanks for the suggestion. We were already evaluating the idea quite a long time ago and decided to reduce dependencies on outside libraries as we couldn't contact the original developers.
Best Regards


python311Packages.regenmaschine: 2023.06.0 -> 2023.08.0

Diff: https://github.com/bachya/regenmaschine/compare/refs/tags/2023.06.0...2023.08.0
Changelog: https://github.com/bachya/regenmaschine/releases/tag/2023.08.0
Description of changes

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 252399 run on x86_64-linux 1

5 packages built:

home-assistant-component-tests.rainmachine
python310Packages.regenmaschine
python310Packages.regenmaschine.dist
python311Packages.regenmaschine
python311Packages.regenmaschine.dist


enhancement: add error handling during login

Summary

Please summarize your changes, describing what they are and why they were made.

Improve core error module to include handling errors and use the new functionality to add error handling to the login function.
Changelog
- Make sure errors are bubbling up to login() catch block
- Create handleError functions in core/error/utils
- Add constants and enums to core/error to support errorHandling

Relevant Issues

Please list any related issues using development keywords.

Closes #4123 and Closes #3918
Testing
Platforms

Please select any platforms where your changes have been tested.

Desktop

[x] MacOS
[ ] Linux
[ ] Windows

Mobile

[ ] iOS
[ ] Android

Instructions

Please describe the specific instructions, configurations, and/or test cases necessary to test and verify that your changes work as intended.

...
Checklist

Please tick all of the following boxes that are relevant to your changes.

[x] I have followed the contribution guidelines for 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 added or modified tests that prove my changes work as intended
[ ] I have verified that new and existing unit tests pass locally with my changes
[ ] I have verified that my latest changes pass CI workflows for testing and linting
[ ] I have made corresponding changes to the documentation

@MarkNerdi there are a whole load of error types that can be thrown by wallet.rs. Some of them we will just have a catch all error for some we want to check the error message to see if it's a specific error we want to handle in a certain way. Because the switch statements for the regexes would potentially evaluate them all I think it's more efficient and sensible to only do the regexes for the types and messages we want. Rather than creating one linear list. Hence it's probably more efficient to filter on the type first. That's also because the fall back handling for each error type might be different. We might want to show error notification for client errors but not another type etc


fix: format balance warning

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

[x] Bugfix
[ ] Feature
[ ] Refactoring

What's new?

[x] PR closes #1817 #
[ ] <brief_description_of_what_I've_added>

occur number format error

Before submitting Pull Request, please make sure:

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

Optional

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

Had issue bounty label?

[x] Fill up your KSM address: Payout

Community participation

[x] Are you at KodaDot Discord?

Screenshot

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

Hello, @yangwao . Are there any problems ?

sending extra for tests!
pay 150 usd


Windows feature testing

Enable currently buildable feature only.

Cargo.toml modification is not mandatory to pass the test, but it speeds up windows build siginificantly.

I'd wait until we first resolve #118

#118 has been resolved now with #138. Is this PR still relevant?

It’s no longer needed.
Thanks!


vimPlugins: vim-plug, fixes and updates

Motivation for this change
I was unable to make https://github.com/fatih/vim-go work using either the "native" plugin manager, or vam, hence I added a simple vim-plug implementation, which fixed the issue.

Added vim-plug implementation of vim addon manager, accessible via configure.plug
Fixed Shougo username being spelled with lower-case. See https://github.com/Shougo
Updated some plugins along the way

Example usage can be seen here
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[x] Fits CONTRIBUTING.md.

@Mic92

Thanks!


[WIP] add annotation tutorial

Codecov Report
Patch coverage has no change and project coverage change: -0.31% :warning:

Comparison is base (3076e2e) 54.74% compared to head (17fc2cd) 54.43%.
Report is 3 commits behind head on main.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #142      +/-   ##
==========================================
- Coverage   54.74%   54.43%   -0.31%
==========================================
  Files          93       93
  Lines        3511     3529      +18
==========================================
- Hits         1922     1921       -1
- Misses       1589     1608      +19

Files Changed
Coverage Δ

src/napari_threedee/annotators/label/annotator.py
46.53% <0.00%> (ø)

... and 6 files with indirect coverage changes

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


implement fast run-array "equal" comparison

See https://github.com/RoaringBitmap/CRoaring/issues/99

Done with #162


[BUG] Juno: Error installing package ink

Error: Installing<EMAIL_ADDRESS>failed.
Details

Atom version: 1.59.0 x64
Julia version: 1.7.2
OS: WIn Pro x64 21H2
Package versions:

Atom.jl: sorry, I don't know
julia-client: I don't know
ink: 12.6

Steps to reproduce

I have installed Atom
Then I Type uber-juno in the options->Install
The installation was going without a glintch but then:
This error appears...

The path of Julia has been set to my path ; C:\Users\mario\AppData\Local\Programs\Julia-1.7.2\bin
That is where it was installed automatically
By the way, I have NordVPN <IP_ADDRESS> but please, If you think it's him the problem, specify why.
I am new to programming in Julia (I am a Python guy) and I don't know how ot use Atom and Juno. So I followed instructions on this page.
Thank you in advance for your help!
Mario

I read about it and with no NordVPM nor Kaspersky, I try this in Julia:
(@v1.7) pkg> up Atom Juno
Updating registry at C:\Users\mario\.julia\registries\General.toml
ERROR: The following package names could not be resolved:

Atom (not found in project or manifest)
Juno (not found in project or manifest)

(@v1.7) pkg> rm Atom Juno
ERROR: The following package names could not be resolved:

Atom (not found in project or manifest)
Juno (not found in project or manifest)

So it seems that an error occur in Atom when I was trying to install julia-client: (I show the beginning)
Installing ink to C:\Users\mario.atom\packages failed

<EMAIL_ADDRESS>postinstall C:\Users\mario\AppData\Local\Temp\apm-install-dir-2022121-16368-lm9g7o.d5oz\node_modules\ink
node scripts/postinstall.js

(node:12724) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
npm WARN lifecycle npm is using C:\Users\mario\AppData\Local\atom\app-1.59.0\resources\app\apm\bin\node.exe but there is no node binary in the current PATH. Use the --scripts-prepend-node-path option to include the path for the node binary npm was executed with.
'node' n'est pas reconnu en tant que commande interne
ou externe, un programme ex�cutable ou un fichier de commandes.
But the location « C:\Users\mario\AppData\Local\atom\app-1.59.0\resources\app\apm\bin\node.exe» exist and node.exe is there???
I adding that when I start Juno the first time in Julia, the localhost:1234 had something at the end that require a secret Key that appears in Julia.   But both Julia and Juno were not installed as Administrator?
  The web is full of this problem. All this seems to be related to Atom 1.59. Should I change for another Julia editor? Because Julia works when it started directle from Julia?


uploaded image not showing in cropbox in safari

uploaded image not showing in cropbox in safari

did you use safari in windows ?


lager not support OTP21 [erts-10.2]  on MacOS Mojave 10.14.2 by brew install erlang?

{erl_opts, [
debug_info,
{parse_transform, lager_transform},
]}.
{deps, [
{lager, ".*", {git, "https://github.com/erlang-lager/lager.git", {branch,"master"}}},
Erlang/OTP 21 [erts-10.2] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:30] [hipe] [dtrace]
Eshell V10.2  (abort with ^G)
(im1@<IP_ADDRESS>)1> application:start(lager, permanent).
{error,{already_started,lager}}
(im1@<IP_ADDRESS>)2> lager:error("hello world").
** exception error: undefined function lager:error/1
Why me get this exception ?

I  use lager sample config below :
{lager, [
{log_root, "../logs"},
{handlers, [
{lager_console_backend, [{level, info}]},
{lager_file_backend, [{file, "error.log"}, {level, error}]},
{lager_file_backend, [{file, "console.log"}, {level, info}]}
]}
]}

Hi. You can't call lager:error from the Erlang REPL - it exists only as a "virtual" function in your code. Lager's parse transform turns the error function into the "real" function that does all of the work at compile time. Since the REPL doesn't use or even understand parse transformations, this function call will always say that its undefined.

Thank you.  It's my fault,sorry.

No worries. It's easy to get confused about this.


[feature] any plan for implementation: authentication layer

For me the authentication layer is the missing feature to use ROAPI in my project(s).
Is there any plan for the implementation? Is there anything I could do?

I am not actively working on auth right now, but I am very open to pull requests.
What kind of auth do you need? You might be able to get it done with a simple nginx reverse proxy too.

Hi QP Hou,
unfortunately I'm too new to Rust as I could make a good implementation starting from the beginning.
What I'd looking for: basic authentication (like password.db in Trino) to restrict the access to the system for the first step.
In the second step I'd like to have a basic authorization to restrict some specific data objects for different user or user groups.
I could help by documenting the requirement or by testing the functionality or by creating the documentation.
What do you mean?

Got it, if all you need is basic auth, you could stand up a reverse proxy using nginx as a shorterm workaround, see: https://serverfault.com/questions/230749/how-to-use-nginx-to-proxy-to-a-host-requiring-authentication

But I'd need it for all interfaces. Which means this should work for JDBC/ODBC as well. And that's not possible via nginx as faar as I know?

that's correct, for JDBC, nginx based auth won't work.

@houqp I want to work on this.
I'll try to create a simple master-key authentication, where the user(admin) will specify if using a MASTER_KEY env and he can generate access-keys using it. Then the other users who are trying to access roapi will these generated keys.
routes:
POST /access_key requires MASTER_KEY in Authorization Header - create new access key
DELETE /access_key/invalidate requires MASTER_KEY in Authorization Header - invalidates access key
please let me know if this approach is ok.

@elliot14A i recommend starting with something simple that allows users to specify the secret keys in the yaml config. Since roapi doesn't persist any data in data stores, runtime dynamic key registration won't work well because we will lose all the keys on restart/redeploy.

@houqp, I was going the implementation of meilisearch https://github.com/meilisearch/meilisearch/tree/main/meilisearch-auth . Should we implement something similar?

@elliot14A you can give it a try, but keep in mind that we don't have ways to persist the dynamically generated key, so it's better to start with supporting static keys


Can I realize Few Shot Semantic Segmentation with this repo

Hello, thank you for your sharing. I would like to ask whether it is possible to conduct a Few Shot Semantic Segmentation, because SegGPT has reported a very superior result on the Few Shot Semantic Segmentation, thank you so much.

Yes of course!

So do I need to make some additional adjustments with your code? thank you so much

If your data follows this format, then you simply need to create the config file specific for your dataset (refer to configs/base.json as template). Otherwise, you need to implement the dataloader for your dataset.

Thank you very much for your reply, I will use the pascal voc dataset.


How to get this picture

Dear author,
I am finding the way to get this picuture, which can show signal before and after attack. I used waveform tool to check but it can not show this difference.

I'm sorry that I bother you again!
Thanks author.!

Ah sorry, this project was a while ago and I don't remember where I put the plotting scripts now...

Dear @rtaori ,
Thank you so much, I also dont' know how to do it yet.


[wip] feat: support for azure functions runtime v4 in preset azure-functions

🔗Linked issues

#2478
#1785

❓Type of change

[ ]  📖 Documentation (updates to the documentation, readme, or JSdoc annotations)
[ ]  🐞 Bug fix (a non-breaking change that fixes an issue)
[ ]  👌 Enhancement (improving an existing functionality like performance)
[x] ✨ New feature (a non-breaking change that adds functionality)
[ ]  🧹 Chore (updates to the build process or auxiliary tools and libraries)
[ ]  ⚠ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description
I upgraded the @azure/functions package to the latest version, and added the configuration to support the new programming model of Azure functions V4: https://learn.microsoft.com/en-us/azure/azure-functions/functions-node-upgrade-v4?tabs=v4&pivots=programming-language-javascript
This also lays the ground for HTTP Streaming in Azure Functions, which is required to host frameworks like Solid Start on Azure Functions and only supported on V4.
I implemented it with the date compatibility system, so it can be adopted progressively.
📝 Checklist

[x] I have linked an issue or discussion.
[ ]  I have updated the documentation accordingly.

Still have to do some manual checks for this one + docs

Manually verified the workings on the V4 handler by using a local build of this nitro fork and deploying a Solid Start app to Azure Functions.
Will verify the legacy runtime next.

Manually verified that the legacy V3 handler still works and is still the default.
Will do the docs update tomorrow.

verified cookies work (with Solid Start app) + updated docs

Azure Static Web Apps can use @azure/functions v4 programing model nowadays, so azure(Azure Static Web Apps) preset also needs update.

Will update the Azure Static Web Apps  preset next week too in this PR.
I've been running this preset code in production for an enterprise application for a little while now with success 👍

Hi @supersoniko, I'm currently reseraching on how to build a preset of a v4 function to a static web app with streaming support.
Can I somehow support you with building the preset or help testing it?
I'm also wondering how does this PR correlate to #2477?
From my point of view it may make sense to keep the azure and azure-function templates and add some config parameter for them, which calls app.setup({ enableHttpStream: true }); if set to true.
I'm not sure if creating two new templates azure-functions-streaming and azure-streaming may make things harder to maintain. But that's just a gut feeling, as I'm kind of new to nitro yet.

Hi @supersoniko, I'm currently reseraching on how to build a preset of a v4 function to a static web app with streaming support.
Can I somehow support you with building the preset or help testing it?
I'm also wondering how does this PR correlate to #2477?
From my point of view it may make sense to keep the azure and azure-function templates and add some config parameter for them, which calls app.setup({ enableHttpStream: true }); if set to true.
I'm not sure if creating two new templates azure-functions-streaming and azure-streaming may make things harder to maintain. But that's just a gut feeling, as I'm kind of new to nitro yet.

Hey sorry for the late response; I have been working weekends because of deadlines my company has and haven't had time to look back to this PR.
It would be great to get some support on these Azure presets!
I agree that a separate separate streaming preset would not make much sense, especially maintenance wise, like you said.
I haven't looked at Nitro in a while, but iirc there's another preset that has some kind of configuration that you can give with it.
If I have some time this weekend 🙏, I will look into the possibility of configuration options this weekend and report back here.

Any updates?


Disable MFA by default, enable via CMS setting

Installing SilverStripe modules is a developer activity, and often decided by developers where website owners don't understand the complexities of composer and dependency management. This often leads to modules not being installed by risk adverse devs, and website owners misunderstanding what they're getting e.g. in a recipe update ("I thought this was included by default"). Given how expensive any composer update can be once you factor in regression testing and vendor engagements, they're unlikely to happen often.
In the case of MFA, this means a lower adoption unless the module is installed in many codebases already, and the decision to use it can be taken by the website owner (not a developer). Currently, the opt-in happens on a dev level via a composer require, and the modules auto-register and enable. I'm proposing that we flip this around, and leave the installed modules disabled by default, with an option to enable them through a CMS setting. This way, the website owners might not even know they have the MFA module installed (through a recipe upgrade), but once they become aware of the security benefits, they can act without expensive dev time.
Context: This is currently blocking inclusion of the MFA module in default recipes on the CMS 4.x and CWP 2.x release lines, since we don't want to enable MFA on every site running a recipe upgrade (we just want to give them the option to do so without technical blockers).
By adding this to cwp/cwp-recipe-core rather than cwp/cwp-installer, we'll add this feature to more codebases over time. We also make it harder to remove this code from your own project codebase, although it's still possible. It's a tradeoff: Either we add it to cwp/cwp-installer for new projects and rely on devs and clued-up website owners to explicitly ask for the new dependency install on existing projects, or we get the dependency installed through a recipe upgrade and empower the website owners to enable it directly.
Note that I treat the three MFA modules as "one system" here. I believe that every website owner should be able to decide whether they want to allow TOTP, WebAuthn, or both. Installing silverstripe/mfa only is pointless without either of them, and I don't think it should be up to devs to decide that "TOTP is good enough". From a business perspective, website owners can still decide on which methods to allow, and website users can decide which ones suits their needs. If we leave this up to devs, it'll always be a "the least amount of code/features which has been explicitly asked for" :)
Outside of CWP, the TOTP method needs some configuration (base secret) to work, but it's already disabled if that's not present, so won't lead to a bad user experience.

Just an aside note — not sure if this sentence conveys what the author intended:

I don't think it should be up to devs to decide that "TOTP is good enough".

Devs (or better, vendors) are there to advise business owners on the options, explain implications and discuss the possibilities, and then action them as best as possible. To me, as it's written now, it sort of feels like SS makes the decision and leaves vendors out of the equation.

Can you clarify what the intended outcome of disabling it by default would be?
Bit of an essay disagreeing with this below, but TL;DR:

I think retaining existing MFA functionality of 'optional by default' is sufficient if it's included in a minor cwp/cwp-recipe-core release. Enforcing MFA is still left with CMS admin
Clear documentation in the release change logs will prompt developers doing the upgrade to have a conversation with the site owner that they'll get MFA at the same time.
Ensuring a developer is included in testing MFA with a site is important.

Current functionality will, on install, enable MFA as optional. This will present the MFA dialog to everyone the first time they log in (with the option to skip). To me this seems like a sensible default after a site upgrade which is clearly communicated will include MFA functionality.
Even if a developer doesn't read the change logs and updates the site, it would be pretty clear on UAT and discussions could be had before a site release. The above allows individuals to register MFA methods for their own account before it's enforced by a site owner. There's an included report that monitors uptake, and the registration flow gives sufficient guidance for those not familiar with MFA.
The MFA module bundles the login-forms module which will override any existing login page (Security.ss) template. This could be a detail that warrants the MFA functionality being installed but embargoed until further approval - but I'd expect this is something a development agency should be involved in, instead of a CMS admin enabling it and blindly breaking a custom login form. This discussion could easily be had at the time of a site upgrade.
However, if for whatever reason the dev agency doesn't think MFA is suitable for a site on upgrade, there is the opportunity to disable the login redirect to MFA via yaml, without having to alter their composer.json file.
Sorry for a bit of internal back and forth here, but during design and development we spent a good amount of time considering whether MFA should be enabled or disabled by default. After much deliberation we chose 'enabled but optional' as the most practical and secure default that gives individuals the option and CMS admins the responsibility for enforcing.

I think the really important distinction here is required vs available. If MFA is installed and somehow it gets past the agency without them realising there's a change, it can technically be dismissed on first login and completely ignored. The security conscious individuals may choose to configure TOTP if they want though.

There's different levels of decision making:

Vendor/Dev: Can decide to make recommendations to customer, and install the optional module and limit MFA methods by choosing not to install those modules
Website Owner: Can request the optional module (and certain MFA methods), but reliant on vendor to install. Might have heard about MFA at a meetup or blog post, and often doesn't realise they need to ask their vendor to install it ("I thought it was part of my upgrade already")
CMS Admin (sometimes the same as Website Owner): Can decide to make MFA optional or mandatory, but not enable or disable it completely once the module is installed. With my changes described above, they could do this, and wouldn't be reliant on Vendor or Website Owner opting in. Might have heard about MFA, but if the role is different from the Website Owner, they might not be in control over asking vendors to install it.
CMS User: Can decide to use MFA if available (unless it's mandatory)

Introducing the new login forms alongside MFA is making it more difficult to include it by default. Alright, I'm going to close this issue as "too hard". The responsibility remains on the Vendor, Dev and Website Owner roles to ensure that websites they operate include optional modules that make them secure.


Add support to filter queries by nested fields

Doing any queries in the API that filter by a field that contains nested attributes result in the following error:
> ayon_api.get_project(project_name, fields=["code", "taskTypes"])?
ayon_api.exceptions.GraphQlQueryFAILED: GraphQl query FAILED: Field 'taskTypes' of type '[ TaskType! ]!' must have a selection of subfields. Did you mean 'taskTypes { ... }'? (Line 4 Column 5)

This is a core functionality that should be easy to use to speed up queries. However, if you are going to implement it by querying everything and then filtering out don't even bother, the point should be to make queries faster or improve I/O because of using less memory, and if that's not the case, just document in the API that there's no point in specifying fields on the args, I would even argue that fields shouldn't even be exposed in that case.

Doing any queries in the API that filter by a field that contains nested attributes result in the following error:

I know that nested queries is currently support for attrib access, like e.g. a folder entity query with get_folders(..., fields={"attrib.frameStart"})
That nested filtering format (by dot) matches how it was in OpenPype in pymongo. I'm not sure if that works for all keys - but just wanted to state there is some nested filtering in the codebase currently.


What are the differences between MSMDFusion and MSMDFusion-base?

I note that you release the result of the model MSMDFusion (mAP 70.8, NSD 73.2) in Table 1 of your older version paper, but in the updated paper, you release the result of the model MSMDFusion-base (mAP 71.5, NSD 74.0) in Table 1. So what are the differences between these two models? Thanks in advance.

We improved the old version with novel designs. Please refer to the latest arxiv version of MSMDFusion for more details.


There is an error when I use -gb option.

Thank you for enabling me to use your fantastic tool.
However, there is an issue causing an error when I use the '-gb' option.
I've tried installing it with conda and singularity, but I keep encountering the same error, even I used the example dataset and command on the tutorial.
The error message is as follows.
The version is 1.4.2
Can you provide a solution?
mummer2circos -l -r genomes/NZ_CP008827.fna -q genomes/*.fna -gb GCF_000281535_merged.gbk -b VF.faa
Traceback (most recent call last):
File "/opt/conda/bin/mummer2circos", line 10, in
sys.exit(main())
File "/opt/conda/lib/python3.7/site-packages/mummer2circos/init.py", line 68, in main
force_data_dir=args.force)
File "/opt/conda/lib/python3.7/site-packages/mummer2circos/mummer2circos.py", line 118, in init
minus_file, plus_file = self.gbk2circos_data(gbk2orf, minus_file=f"{self.circos_data_dir}/circos_orf_minus.txt", plus_file=f"{self.circos_data_dir}/circos_orf_plus.txt")
File "/opt/conda/lib/python3.7/site-packages/mummer2circos/mummer2circos.py", line 1184, in gbk2circos_data
start = str(feature.location.start + self.contigs_add[record.id][0])
KeyError: 'NZ_CP008828.1'

Hi @fsysy
The error is due to the fact that the record ids in the genbank file have version numbers (e.g 'NZ_CP008828.1') while the record ids in the fasta file don't (e.g 'NZ_CP008828' without the '.1'). To map records between the fasta and the gbk files, we need to use the same ids in both files.
You can fix this by adding version numbers to the fasta file, either manually or with sed:
sed -ri 's/^>(.*)/>\1.1/' genomes/NZ_CP008827.fna
Thank you for reporting this problem, I will fix the example dataset.


ECIES decoder implementation incorrect

https://github.com/rust-ethereum/devp2p/blob/f00664fa84d14d217ed895ec6300f6b6b87c2937/src/ecies/proto.rs#L121
This is incorrect and causing issues in practice. The reason is returning Ok(None) tells the codec that it needs to read more bytes from the network, however it could have already read and buffered the body following the header, meaning it will just block on the socket waiting for more data which might not be coming before decoding the complete body that might already be sitting in the buffer.
https://docs.rs/tokio-util/0.5.1/tokio_util/codec/trait.Decoder.html
"If the bytes look valid, but a frame isn't fully available yet, then Ok(None) is returned. This indicates to the Framed instance that it needs to read some more bytes before calling this method again.
Note that the bytes provided may be empty. If a previous call to decode consumed all the bytes in the buffer then decode will be called again until it returns Ok(None), indicating that more bytes need to be read."
Additionally you can see in the implementation if Ok(None) is returned then the state will be toggled to not readable:
https://github.com/tokio-rs/tokio/blob/647299866a2262c8a1183adad73673e5803293ed/tokio-util/src/codec/framed_impl.rs#L144
I realize the point is to forward the state to ECIESState::Body but it can't be done like this, as decode() will not be called again after returning Ok(None). Two obvious alternatives are something like recursing into another call of decode(), or returning some kind of Item that gets ignored on the upper layer, but the first is probably the easiest (replacing Ok(None) with self.decode(buf))

Nice catch! Should be fixed in master now.


return error information from CapturePanic

We use this to log the sentry error ID and return it in our API response.

TIL that you could do this from within a defer. I guess I have never thought about it before. :) https://play.golang.org/p/jSjucJaUcG

:cake: :icecream:
Thanks!

Ha yeah I was stuck for a second until I thought to try named return vals. Thanks!


Usage with SwiftUI

Hi! The library looks really great. I was wondering if it is possible to use it with SwiftUI?
If so, would you have an example?
I tried using NSViewControllerRepresentable but without success. I'd only like to attach the Menu to a SwiftUI View (the click and the position).
Any idea? Thanks!

Hey! Unfortunately I'm not that good at SwiftUI so can't really help here. Sorry!


Use matching data text as search text

The current implementation expects an object as value when there's a dataSourceConfig. But the value is usually just a value, not an object containing the value and the text. So I believe when a value is provided and there's a dataSourceConfig the corresponding text should be looked up in the dataSource.
Maybe the case where the value is actually an object should be handled too, but I'm not sure it's a valid use case since the current behavior on change is to set only the value in the form data.

Codecov Report

Merging #141 into master will decrease coverage by 2.06%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master     #141      +/-   ##
==========================================
- Coverage   78.37%   76.31%   -2.07%
==========================================
  Files          11       11
  Lines          37       38       +1
==========================================
  Hits           29       29
- Misses          8        9       +1

Impacted Files
Coverage Δ

src/AutoComplete.js
42.85% <0%> (-7.15%)
:arrow_down:

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 61ddf94...818744f. Read the comment docs.

LGTM.


"npm i -g vue-cli" error

I'm getting an error while running
$ npm i -g vue-cli
npm ERR! Darwin 15.6.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "--global" "vue-cli"
npm ERR! node v4.6.0
npm ERR! npm  v3.10.8

npm ERR! uid must be an unsigned int
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/alvaroarregui/npm-debug.log

Similar to: #34

Uninstalling npm and installing again did the trick


Server IP blocked by Youtube, We have been receiving a large volume of requests from your network

First Thank you for your awesome contribution, have made a test site youtube37 . com which is performing very well now. But now as I have continuously gaining users so every week my IP blocked. do you have any solution for that ? also can you recommended a cheap hosting with ffmpeg support and support to add custom IP as well. currently using dreamhost's shared hosting.
Thanks once again.

But now as I have continuously gaining users so every week my IP blocked. do you have any solution for that ?

not yet... I have something built for my own personal use, but it's nowhere near ready for production.
Basically I don't believe YouTube ever really blocks your IP address, it just makes you solve a captcha which is possible to automate if running through a service like 2captcha.com.
I'll have something eventually, but I'm nowhere close. Don't do too many requests from same IP.

also can you recommended a cheap hosting with ffmpeg support and support to add custom IP as well. currently using dreamhost's shared hosting.

no idea. dreamhost is terrible, and I am not even sure if it would allow you running ffmpeg on it.
I would instead buy up a bunch of tiny VPS instances from linode or digitalocean and spread whatever you're doing over multiple servers each with its own separate IP address, so that way you don't get blocked so quickly. It gets complicated...


AJ-730: Fix for strange primary key names

Just a question for clarification -- why cast some of these values with quote() that reference a key, and not all?

Just a question for clarification -- why cast some of these values with quote() that reference a key, and not all?

Can you give me an example of what you're referring to?

Perhaps something like params.addValue("recordTypeRowIdentifier", cachedQueryDao.getPrimaryKeyColumn(recordType, instanceId));
at Line 158ish in RecordDao.java

Just a question for clarification -- why cast some of these values with quote() that reference a key, and not all?

Can you give me an example of what you're referring to?

Perhaps something like params.addValue("recordTypeRowIdentifier", cachedQueryDao.getPrimaryKeyColumn(recordType, instanceId));
at Line 158ish in RecordDao.java

TBH it was trial and error and just tweaking the code until the tests passed, but with the benefit of experience I think I can say that in cases where we're using the value to specify a column name in a SQL statement, we need to quote in the event that the user chose a column name that includes upper case letters, spaces, dashes among other reserved characters.  In cases where we we're just pulling a string out of table data like the example you cited, we don't need to quote.  We may one day regret not making users comply with postgres' restrictions on column and table names, but for now it doesn't see too unmanageable, especially now that we're adding more tests :crossed_fingers:

Just flagging two other occurrences of cachedQueryDao.getPrimaryKeyColumn that are still not casted with quote()
https://github.com/DataBiosphere/terra-workspace-data-service/blob/73286a48248274e6a49d762d34bc5da22873a9ec/service/src/main/java/org/databiosphere/workspacedataservice/dao/RecordDao.java#L526
https://github.com/DataBiosphere/terra-workspace-data-service/blob/dh-aj-730-1/service/src/main/java/org/databiosphere/workspacedataservice/dao/RecordDao.java#L234
(Perhaps a mini-thought, but is there any downside of always casting this value just to regression-proof every usage?)

Just flagging two other occurrences of cachedQueryDao.getPrimaryKeyColumn that are still not casted with quote()
https://github.com/DataBiosphere/terra-workspace-data-service/blob/dh-aj-730-1/service/src/main/java/org/databiosphere/workspacedataservice/dao/RecordDao.java#L526
and
https://github.com/DataBiosphere/terra-workspace-data-service/blob/dh-aj-730-1/service/src/main/java/org/databiosphere/workspacedataservice/dao/RecordDao.java#L234
(Perhaps a mini-thought, but is there any downside of always casting this value just to regression-proof every usage?)

In the first case, we use the value to access java.sql.Resultset data by column name  if you quote the value in that case you'll get a SQLException.  The second case you cite eventually get quoted.  We can't quote in all cases because there are instances like the one I mentioned a second ago that require the non-quoted version.  Basically, I believe it works like this.. Don't quote when it's used with a jdbc resultset, just being included in the response body, or a where clause value.  Do quote when you need to reference that column name in a sql statement.


Support multiple cursors?

Currently, I'm using phi-search for its integration with multiple-cursors. Is there an easy way to extend ctrlf to also support multiple cursors? For now, I've employed this hack:
(defmacro ctrlf-or-phi (key phi-version ctrlf-version)
  "Call ctrlf unless multiple cursors are active, in which case call phi"
  `(global-set-key (kbd ,key)
                   #'(lambda () (interactive)
                       (if multiple-cursors-mode
                           (,phi-version) (,ctrlf-version)))))
(ctrlf-or-phi "C-s" phi-search ctrlf-forward)
(ctrlf-or-phi "C-r" phi-search-backward ctrlf-backward)

There's not an easy way; that sounds like quite a complex feature. If somebody were to make CTRLF extensible in a clean way so that the feature could be implemented, I would accept a pull request. However, I do not anticipate working on it anytime soon.


collaborator s3 upload permissions

User Story
As a mod platform customer
I need to be able to give collaborators ONLY permissions to upload artifacts to s3 - in particular the mod-platform-image-artefact-bucket20230203091453221500000001 bucket inside core-shared-services-production.
So that they can keep giving us software releases for oasys
https://mojdt.slack.com/archives/C01A7QK5VM1/p1724772031490929
Value / Purpose
This is essential for the continuing collaboration with capita and their software
Useful Contacts
DSO dev - William Gibbon, capita collaborator - Carl Last, oasys product manager - Howard Smith
Additional Information
No response
Definition of Done

[ ] s3-operator or s3-uploader role created
[ ] Carl Last (CarlDevCap) ,  Martin Hiorns (martinhiorns-capita) , Morgan Boniface (morgan-boniface) added as collaborators and given the role
[ ] Confirm a collaborator can upload to mod platform artifact bucket

Creating SSO roles can be seen here: https://user-guide.modernisation-platform.service.justice.gov.uk/runbooks/adding-a-new-sso-user-role.html
However, it's worth having a think about what we're doing here. This might be more of a modernisation-platform scope where we add this in our bootstrap code and create a role across the MP member accounts? Have a look at how collaborators presently assume a role in a member account and work out from there what's required to create a role scoped to S3.


82 coordinate conversion

this adds the X/Y_COORD props to the original request, converts them and stores them as LAT_LONG property in the datasets.
I've added just one map at /landlord/low-condition-map. There are no links to it currently just cuz I wanted to get some feedback first.

Talked to @eis95 .  Going to merge so I can mess with the menu.


Cannot create task in Windows Vista and Windows Server 2003

Hello everyone,
I create a task in Windows Vista, but when it run to line RegisterTaskDefinition, it cause an exception "Access is denied 0x80070005. I granr user TEST as Administrators but cannot fix it.
The s.HighestSupportedVersion is 1.2 and ts.Connected is true.
Can anyone help me? I spend 2 days to fix it but cannot. Thanks a lot.
using (TaskService ts = new TaskService())
                {
                    TaskDefinition td = ts.NewTask();
                    td.Triggers.Clear();
DailyTrigger dailyTrig = new DailyTrigger();
                    dailyTrig.StartBoundary = DateTime.Now;
                    dailyTrig.DaysInterval = 1;
                    td.Triggers.Add(dailyTrig);
ExecAction ac = new ExecAction("D:\a.exe");
                    td.Actions.Add(ac);
if (Environment.OSVersion.Version.Major > 5)
                    {
                        td.Principal.RunLevel = TaskRunLevel.Highest;
                    }
// Register the task in the root folder
                    ts.RootFolder.RegisterTaskDefinition("TESTTASK", td, TaskCreation.CreateOrUpdate, Environment.MachineName + "\TEST", "123456", TaskLogonType.Password, null);
                }
Originally posted: 2011-09-28T19:37:41

First of all, you have a lot of extra stuff in your code.

When creating a new task, you don't need to Clear the triggers as they are already empty
The default constructor for DailyTrigger sets the StartBoundary to Now and the DaysInterval to 1. You don't need to do it again.

On your particular problem, what happens when you just call ts.RootFolder.RegisterTaskDefinition("TESTTASK", td) without any user credentials? If that works, you may have a permissions problem with the account. Do you have the same problem if you run from the debugger or from the executable?
If you don't need to supply user credentials, you can do all you're doing in many fewer lines:
using (TaskService ts = new TaskService())
{
ts.AddTask("Test", new DailyTrigger(), new ExecAction("D:\a.exe"));
}
Originally posted: 2011-09-29T08:15:10

I would strongly recommend reading the Microsoft documentation at http://msdn.microsoft.com/en-us/library/windows/desktop/aa382140(v=VS.85).aspx for even more information on Security Contexts for Tasks.
Originally posted: 2011-09-29T14:33:12


Correction for raw affiliation Educational Sciences, Aeres University of Applied Sciences Wageningen, Postbus 80, 6700 AB Wageningen, The Netherlands

Correction needed for raw affiliation Educational Sciences, Aeres University of Applied Sciences Wageningen, Postbus 80, 6700 AB Wageningen, The Netherlands
raw_affiliation_name: Educational Sciences, Aeres University of Applied Sciences Wageningen, Postbus 80, 6700 AB Wageningen, The Netherlands
new_rors: 03jnx2c74
previous_rors:
works_examples: W3207719057
contact: 24fe04b3cf80d78773f59d08fd990ad3:dac852b61cc3f2ac64bd @ hotmail.com

This issue was accepted and ingested by the OpenAlex team on 2024-10-10. The new affiliations should be visible within the next 7 days.


Making requirements tighter for "stable" packages in 0.26.1 release.

See #3579 for context.

All relevant google-cloud-datastore "stable" releases:
$ git show datastore-1.1.0:datastore/setup.py | grep -A 4 'REQUIREMENTS = \['
REQUIREMENTS = [
    'google-cloud-core >= 0.25.0, < 0.26dev',
    'google-gax>=0.15.7, <0.16dev',
    'gapic-google-cloud-datastore-v1 >= 0.15.0, < 0.16dev',
]

All relevant google-cloud-logging "stable" releases:
$ git show logging-1.1.0:logging/setup.py | grep -A 4 'REQUIREMENTS = \['
REQUIREMENTS = [
    'google-cloud-core >= 0.25.0, < 0.26dev',
    'grpcio >= 1.2.0, < 2.0dev',
    'gapic-google-cloud-logging-v2 >= 0.91.0, < 0.92dev',
]

All relevant google-cloud-storage "stable" releases:
$ git show storage-1.2.0:storage/setup.py | grep -A 5 'REQUIREMENTS = \['
REQUIREMENTS = [
    'google-cloud-core >= 0.25.0, < 0.26dev',
    'google-auth >= 1.0.0',
    'google-resumable-media >= 0.1.1',
    'requests >= 2.0.0',
]

Also a thorn in our sides, all relevant google-cloud-error-reporting "stable" releases:
$ git show error_reporting-0.25.0:error_reporting/setup.py | grep -A 4 'REQUIREMENTS = \['
REQUIREMENTS = [
    'google-cloud-core >= 0.25.0, < 0.26dev',
    'google-cloud-logging >= 1.0.0, < 2.0dev',
    'gapic-google-cloud-error-reporting-v1beta1 >= 0.15.0, < 0.16dev'
]

Merging with permission of @lukesneeringer

New release pushed:
https://github.com/GoogleCloudPlatform/google-cloud-python/releases/tag/0.26.1
Here is the CircleCI build that should push to PyPI:
https://circleci.com/gh/GoogleCloudPlatform/google-cloud-python/2330
However, I may end up having to do it by hand due to current build issues (which is "just fine").


Allow nullable type on search

Fixes  https://github.com/isoos/elastic_client/issues/23
To avoid forcing the type to be provided, and to embrace the deprecation of types on elasticsearch 8.0, its necessary to provide a way of not passing a type to the search method.
I wanted to just provide a default value, but Dart has this funny thing of putting all the optional parameters in the end. It also does not provide support for method overloading, so it can't be done by providing a new API without the parameter with the same name.
The only valid alternative I could find was to move the optional parameters, but that would break backward compatibility with positional arguments.
I think its better to not provide any "default" value for the type, but if the client wants to use _doc that can be provided explicitly. Afaik, It makes no difference in the end.

I think this is a good change for short term, but it still requires us to pass in null as the type. Maybe, we should rather have a breaking change in the API to follow the breaking change in the ElasticSearch API?

Thank you! Published as 0.1.15


Discovery of registry resource gives none-descriptive error message.

Prerequisites

[X] Write a descriptive title.
[X] Make sure you are able to repro it on the latest version
[X] Search the existing issues.

Steps to reproduce
PS C:\Onebranch\dscv3\DSC> dsc resource get -r Microsoft.Windows/Registry
Error: Command: Resource 'Microsoft.Windows/Registry' [Exit code 2] Error JSON does not match schema: EOF while parsing a value at line 1 column 0

PS C:\Onebranch\dscv3\DSC> dsc resource get -r Microsoft.Windows/*
Error: Command: Resource 'Microsoft.Windows/Registry' [Exit code 2] Error JSON does not match schema: EOF while parsing a value at line 1 column 0

PS C:\Onebranch\dscv3\DSC> dsc resource get -r Microsoft/OS*
actualState:
  $id: https://developer.microsoft.com/json-schemas/dsc/os_info/20230303/Microsoft.Dsc.OS_Info.schema.json
  family: Windows
  version: 10.0.22621
  edition: Windows 11 Enterprise
  bitness: '64'

Expected behavior
Find the resource with Partial and full name.

Actual behavior
Error

PS C:\Onebranch\dscv3\DSC> dsc resource get -r Microsoft.Windows/Registry
Error: Command: Resource 'Microsoft.Windows/Registry' [Exit code 2] Error JSON does not match schema: EOF while parsing a value at line 1 column 0

PS C:\Onebranch\dscv3\DSC> dsc resource get -r Microsoft.Windows/*
Error: Command: Resource 'Microsoft.Windows/Registry' [Exit code 2] Error JSON does not match schema: EOF while parsing a value at line 1 column 0

Error details
Empty /Null

Environment data
PS C:\Onebranch\dscv3\DSC> get-error | fl *
PS C:\Onebranch\dscv3\DSC> $psversionTable

Name                           Value
----                           -----
PSVersion                      7.3.6
PSEdition                      Core
GitCommitId                    7.3.6
OS                             Microsoft Windows 10.0.22621
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

Version
latest code as of this filing (private build)
Visuals

Any property or just the 'key' or unique identifier of the registry entry?

@BerheAbrha - right now in v3, it depends entirely on the DSC Resource's implementation. The only way to guarantee that a property is mandatory right now is to define it in the resource schema as a required property (which also makes this discoverable/surfaceable for users).
When you run registry schema (or dsc resource schema -r Microsoft.Windows/Registry), the schema declares that the keyPath property is required:
$schema: http://json-schema.org/draft-07/schema#
title: Registry
type: object
required:
- keyPath
properties:
  # snipped

In prior versions of DSC, the marking of a property as a Key property signified both that the property was mandatory for all operations and that it could be used to uniquely identify an instance of the resource. There's no built-in equivalent of the unique identification behavior yet in DSCv3, but I think it could more-or-less either follow from the required keyword or be part of an extended DSC-specific dialect of JSON Schema.


Get Authorization from Spotify

This is a conglomeration of issues #3 and #4. While some features aren't completely implemented yet (we don't have a login page, a clean way of displaying playlists, user management, etc), getting Spotify data out would be beneficial to both frontend (who will be able to use it for mock-ups) and backend (to prevent further blocking developers).
Currently, all data fetching is done in the Home component, which will show a "Login to Spotify" button if the session isn't defined (local storage is cleared) or if we previously had an error. It shows a rather ugly list of the user's playlists, but that should be enough for now.
Notes:

Removed spotify-web-api-js because it's just a thin wrapper and I don't have the mental energy to get it to play nice with React state.
We should probably figure out who is responsible for choosing which permissions the app is requesting. Currently it's the frontend, but that could be moved to backend.
I don't know where to place the SpotifyAuthContext component. It needs to be far out, as the component defining it can't use it.
I've gutted the Harmony recommendation component, Settings screen, and Library screen --- we should be able to implement them quickly as Kaiden works on the final layout.
We can probably move our Spotify-web-api-fetchers to separate files, but I don't know how to do that/what the React-y way of doing it is.

In summary: I got authentication working and I'm making this PR so we don't get further merge conflicts/so others can get work done.

Sounds good! I will be doing the code review today, and let's what we can do.

We certainly could do this, even doing something that will dynamically fetch the playlists as we reach the end of the list, I didn't include this in this PR as we haven't yet fully merged with the frontend. I didn't want to make any assumptions about what the frontend would expect and adding the limit parameter should be a trivial task. It just seemed like it wouldn't be necessary, although I can see how defining all possible parameters would be helpful.
Personally, I would have a new PR+Issue dedicated to finalizing our consuming the API---make a bunch of functions to wrap all functionality we will need, and have them correctly handle refreshing tokens, errors, etc.


Correct URL Path for Reader Connection in Dropdown Menu

Related Issue
[Cite any related issue(s) this pull request addresses. If none, simply state “None”]
Fixes:  #3830
Description

Corrected the URL path for the Reader Connection page in the "More" dropdown menu.
The link now accurately directs users to the correct page, enhancing overall navigation reliability.
Ensured the dropdown menu's functionality remains consistent across all sections.
This PR fixes the incorrect Reader Connection link, ensuring users can access the page without any issues from the dropdown
menu.

Type of PR

[ ] Bug fix
[ ] Feature enhancement
[x] Documentation update
[ ] Other (specify): _______________

Screenshots / videos (if applicable)
BEFORE
https://github.com/user-attachments/assets/3ebd3d7f-57e3-40e7-9413-73929e9b76bf
AFTER
https://github.com/user-attachments/assets/79f43232-9e81-4fa6-981c-39a71960cbe3
Checklist:

[x] I have made this change from my own.
[x] I have taken help from some online resources.
[x] My code follows the style guidelines of this project.
[x] I have performed a self-review of my own code.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] I have made corresponding changes to the documentation.
[x] My changes generate no new warnings.
[x] I have tested the changes thoroughly before submitting this pull request.
[x] I have provided relevant issue numbers and screenshots after making the changes.

resolve conflicts @SrijaVuppala295

create new PR @SrijaVuppala295

I think I said I to work with updated branch in one of your PR's @SrijaVuppala295

Since it is causing conflicts again and again

@sailaja-adapa , Ok mam i will not  repeat them again , But again it would be very much long process to do it again, hope you not close the issues.

Do u want me to reopen PR try update branch do u know that

@sailaja-adapa , Mam I didnt said like that , I have said about the issues section , not PR as some of my issues were closed before

So your recent issue closed related to this PR @SrijaVuppala295 ??

No mam


Research what changes are needed in Wave to support React 18

React@18 has just come up. Our package.json implicitly allows us to use it with Wave. We need to verify it is the case and create a migration task in case an additional effort is needed.

Linking upgrade guide: https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html
GIST and main takeouts:
May be relevant

Legacy root API replaced with completely new root API with concurrent rendering features and ReactDOM.render is no longer supported in React 18. -> https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html#updates-to-client-rendering-apis
useInsertionEffect is a new hook that allows CSS-in-JS libraries to address performance issues of injecting styles in render -> https://github.com/reactwg/react-18/discussions/110
Automatic Batching: React 18 adds out-of-the-box performance improvements by doing more batching by default. With usage of createRoot, all updates since React 19 will be automatically batched, it doesn't matter where they originate from. "This means that updates inside of timeouts, promises, native event handlers or any other event will batch the same way as updates inside of React events." We can benefit from this, we can opt-out from this (this is a breaking change) with flushSync. More about this: https://github.com/reactwg/react-18/discussions/21
StrictMode is now bit more stricter, and "not all our components may be resilient to the new checks it adds in development mode" -> https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html#updates-to-strict-mode
components / apps using server-side rendering with hydration need to update hydrate method to hydrateRoot
React 18 also introduces new APIs for concurrent rendering such as startTransition, useDeferredValue and useId, more about these on CHANGELOG
needed updates to tests and test setup files, configure testing environment to support act() method -> https://github.com/reactwg/react-18/discussions/102
but good news: React Testing Library just released V13 that supports React 18: https://github.com/testing-library/react-testing-library/issues/509#issuecomment-917989936

Other

Revamp of react-dom/server: Old Node streaming API and renderToNodeStream are deprecated. New APIs that support streaming SSR with Suspense (renderToPipeableStream, renderToReadableStream)
useSyncExternalStore is a new hook that allows external stores to support concurrent reads by forcing updates to the store to be synchronous.
completely dropping support for Internet Explorer 🥳
Components can now render undefined

Deprecations

useId is something we need to migrate to, because we're currently generating ids using an external library and it doesn't work well with SSR

One more thing to do is to update components type declarations that use React.FC because in @types/react@18x FC can't have children by default:
interface FunctionComponent<P = {}> {
-  (props: PropsWithChildren<P>, context?: any): ReactElement<any, any> | null;
+  (props: P, context?: any): ReactElement<any, any> | null;
   propTypes?: WeakValidationMap<P> | undefined;
   contextTypes?: ValidationMap<any> | undefined;
   defaultProps?: Partial<P> | undefined;
   displayName?: string | undefined;
}

PropsWithChildren now isn't used anywhere, just exported. We have to replace React.FC<Props> with React.FC<PropsWithChildren<Props>>.

I think for the current major we can just allow using Wave with react@18 without any changes (only in package.json)
For the next major we should start using the new React@18 concurrent engine in order to utilize new hooks. For example, we can remove nanoid because react@18 has useId hook with the same functionality

Since this issue was meant to be a research to see if we can support or not React 18 and we already support it in Wave 2.0 I am closing it, any other enhancements related to React 18 can be in the form of new issues


RBAC not the same for guest accounts in AAD vs local accounts

Having a guest account that is an Owner in a management group and inhereted owner of a subscription will not allow the assignment of a blueprint however a local account in the same group can. There may be an issue with how guest accounts are given RBAC specifically for this. In this case "Owner" is not the same behind the scenes.
Case for this would be a federated AAD used for general access and the invited to different directories (single sign-on) to manage assets.

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

ID: b1b33f46-674b-d3ef-7644-4422927625b3
Version Independent ID: b036a530-81bd-1d4b-d099-d485f7098ab4
Content: Overview of Azure Blueprints - Azure Blueprints
Content Source: articles/governance/blueprints/overview.md
Service: blueprints
GitHub Login: @DCtheGeek
Microsoft Alias: dacoulte

@coreyzw Thanks for the feedback. I'm looking into this with the PM.
@MicrosoftDocs/azure-cxp-triage Please assign to me, label 'product-question', label 'blueprints/svc', and #in-progress

@DCtheGeek Thanks for looking into it. Did quite a bit more digging and experimenting and it looks like the settings we had missed was extra setting buried in AAD called "Guest users permissions are limited". Once we flipped that to "No" it allowed the guest user as Owner to be equal to the local directory user Owner. Sorry for the goose chase!

@coreyzw Thanks for following up and letting me know the fix! I'll go ahead and close this.  Thanks again!
@MicrosoftDocs/azure-cxp-triage #please-close


Error in scan (file = file, ...  : line X did not have 6 elements

Describe the bug
https://github.com/EHDEN/CatalogueExport/blob/a7cdbd86e916e43ba1b67714236fc1eaf57b6320/R/CatalogueExport.R#L921
The error occurs if the log file doesn't contain 6 elements.
The log file doesn't contain 6 elements if only one of the queries doesn't work: an error is logged and the line added doesn't contain 6 elements:
ParallelLogger::logError(sprintf("Analysis %d -- ERROR %s", mainSql$analysisId, e))

This error is very annoying because it occurs at the end of all the SQL queries before the CATALOGUE_RESULTS tables are created so it seems difficult to recover from this error.
To Reproduce
Run an analysis with the CatalogueExport::catalogueExport() containing a SQL error in one of the queries, with default parameters and numThreads=1

Yes in principle no queries should fail and we may need to stop if they do to avoid these issues. Not sure about the 6 elements will try to reproduce (never happened earlier even when queries did fail for me).

I am not able to reproduce this when I simulate an error in the query.
it then adds this row:
2021-03-07 17:07:20	[Main thread]	ERROR	CatalogueExport	3	Analysis 0 -- ERROR Error: Error executing SQL: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'synpuf.personP'. An error report has been created at  /Users/Rijnbeek/Documents/Github/EHDEN/CatalogueExport/errorReportSql.txt
Which is read successfully:

Will close it when pulling in dev. Re-open if this still is an issue.


Wordpress Error | Call to undefined function

Hi Guys
I have just noticed that one of my websites doesnt run.
when i deactivated one of my plugins the error solved but now showing this error and the site is just a blank page.
Fatal error: Uncaught Error: Call to undefined function woodmart_get_content_class() in /home/radiomeh/public_html/wp-content/themes/woodmart/page.php:17 Stack trace: #0 /home/radiomeh/public_html/wp-includes/template-loader.php(106): include() #1 /home/radiomeh/public_html/wp-blog-header.php(19): require_once('/home/radiomeh/...') #2 /home/radiomeh/public_html/index.php(17): require('/home/radiomeh/...') #3 {main} thrown in /home/radiomeh/public_html/wp-content/themes/woodmart/page.php on line 17
can anyone help?

Hello Emad,
I think you created an issue in the wrong project. This is PHPMD and has nothing to do with WordPress.
If I'm looking at your error I suspect you need to check your theme.
Good luck.


matrix transpose

What the program do ?

In what programming language it is written?

This pull request do not contains files in specific folders. Please fix it and reopen


[KED-2831] Fix focus mode error when switching pipelines

Description
related ticket: https://jira.quantumblack.com/secure/RapidBoard.jspa?rapidView=525&projectKey=KED&view=detail&selectedIssue=KED-2831
This is to fix the error thrown when switching between pipelines while in focus mode.
Development notes
The bug is caused by the persistence of the focus mode state while switching between pipelines - the problem will be solved by resetting the value of the selected focus mode modular pipeline when switching between pipelines.
I have added the dispatch of the relevant action, as well as the relevant test to ensure this action to reset the focus mode state gets dispatched everytime we switch between pipelines.
QA notes
select a modular pipeline to be under focus mode, and try switching between pipelines. The error should not happen again.
Checklist

[x] Read the contributing guidelines
[ ] Opened this PR as a 'Draft Pull Request' if it is work-in-progress
[ ] Updated the documentation to reflect the code changes
[ ] Added new entries to the RELEASE.md file
[x] Added tests to cover my changes

Legal notice

[x] I acknowledge and agree that, by checking this box and clicking "Submit Pull Request":

I submit this contribution under the Apache 2.0 license and represent that I am entitled to do so on behalf of myself, my employer, or relevant third parties, as applicable.

I certify that (a) this contribution is my original creation and / or (b) to the extent it is not my original creation, I am authorised to submit this contribution on behalf of the original creator(s) or their licensees.

I certify that the use of this contribution as authorised by the Apache 2.0 license does not violate the intellectual property rights of anyone else.

This LGTM as a fix but I wonder if we can do something at a higher level, e.g. parameterise the state store based on the selected registered pipelines?
pipeline_a: <state>
pipeline_b: <state>
__default__: <state>

Heya that is an interesting suggestion! yea I see what you mean - Saving all the loaded pipeline data on a higher level in the state could even help us preserve the individual state of each pipeline ( e.g selected focus mode, etc), great idea.
I think we haven't set it up this way previously as there isn't any particular need to preserve the app state of each pipeline, but now that we are implementing more features ( i.e experiment tracking) that suggests more complicated individual states for each pipelines that would need to be preserved, it makes sense for us to revisit the data structure of our store. This would definitely require quite a bit of rewrite, but I can factor that in for the FE architecture spike and make a new ticket for implementing this ( if needed)?

@studioswong 👍  agreed. Let's track this. I really want to move away from a single state store at some point.