Caching and memory usage issues with images stored in S3

We are seeing significant memory usage on pages with a lot of images when using this module. After some investigation, it seems that the issue is that when the cache that keeps a memory of the image urls gets dropped, the next request to these pages recalculates the image url by resizing the original image first. However, these images have likely been processed previously and already live in S3 (with a __FitMax or whatever variant added to the image name).
My questions are:

Shouldn't this library check the cache, and if the image url isn't found there, check S3 to see if the file exists, then finally fall back to resizing the image to the size defined in the template?
Is this behaviour different to how the standard asset management works when storing images on the filesystem? For example, for a page that has 100 images on it, would you expect them all to get resized if the cache gets dropped even if they had previously been resized to the correct size that was required for the page?

Thinking through this issue, if I had to guess running manipulations to the images in the template is hitting the Intervention Manipulation cache first. https://github.com/silverstripe/silverstripe-assets/issues/197
If that is not present it is probably running the manipulation code and then hits the file system. Wouldn't necessarily matter if using S3 or not. Just the issue is worse using S3 as it has all the extra network requests and it's own caching. Not 100% sure on the full execution path of the template engine but it may be worth disabling the flushable cache mentioned in the bug linked to above to see if that helps.
Also are you able to profile with and without the S3 module?
There is one flysystem cache issue https://github.com/thephpleague/flysystem-cached-adapter/issues/23
If you are using a cache store like redis, it stores all the cache in one entry which then must be JSON decoded on each pull from the db.  If your site has say thousands of images this could be an issue.

Normally the CMS will not attempt to recreate image variant if they've already been created. This bit is controlled in ImageManipulation.php:
        $store = Injector::inst()->get(AssetStore::class);
        $tuple = $manipulationResult = null;
        if (!$store->exists($filename, $hash, $variant)) {

The logic for deciding if a file exist or not is controlled in FlysystemAssetStore:
    public function exists($filename, $hash, $variant = null)
    {
        if (empty($filename) || empty($hash)) {
            return false;
        }

        // If `applyToFileOnFilesystem` calls our closure we'll know for sure that a file exists
        return $this->applyToFileOnFilesystem(
            function (ParsedFileID $parsedFileID, Filesystem $fs, FileResolutionStrategy $strategy) use ($hash) {
                $parsedFileID = $strategy->stripVariant($parsedFileID);

                if ($parsedFileID && $originalFileID = $parsedFileID->getFileID()) {
                    if ($fs->has($originalFileID)) {
                        /** @var FileHashingService $hasher */
                        $hasher = Injector::inst()->get(FileHashingService::class);
                        $actualHash = $hasher->computeFromFile($originalFileID, $fs);

                        // If the hash of the file doesn't match we return false, because we want to keep looking.
                        return $hasher->compare($actualHash, $hash);
                    }
                }

                return false;
            },
            new ParsedFileID($filename, $hash, $variant)
        ) ?: false;
    }

Off the top of my head, it's not quite clear how this will interact with an S3 Adapter. In your context, it might be downloading each file and trying to compute their hashes ... which could be very painful and slow.
A quick fix, could be to to subclass FlysystemAssetStore and provide your own implementation of exists. You would then need to switch to using you own custom class with:
#---
Name: my-project-silverstripes3-assetscore
Only:
  envvarset: AWS_BUCKET_NAME
After:
  - '#silverstripes3-assetscore'
---
SilverStripe\Core\Injector\Injector:
  # Define our SS asset backend
  SilverStripe\Assets\Storage\AssetStore:
    class: App\Project\MyCustomAssetStore

Alternatively you could create a job that pre-warms your URL cache. Are you seeing this problem, when you flush the Silverstripe cache or does the League\Flysystem\Cached\CachedAdapter have a TTL that self invalidates?

Thanks for the well thought out input @obj63mc and @maxime-rainville, gives us a few things to investigate, will let you know how we get on :+1:

@maxime-rainville I'm looking a bit further into this... From what I have read if we create a variant with Fit() then should we expect that variant to be recorded anywhere?
For example in the File table in the DB there is a Variant column but even on systems where we are just using the default store this is always NULL. This seems a bit odd as if the image has already been resized then you should just record this in the DB as a new variant of the existing image an save on having to reprocess the image every time the cache is flushed.

@markstuart @sfozz did either of you figure out a solution or workaround here? This is an issue that we're experiencing and am nearing the point where I'm going to have to dig into this as the performance hit is getting ridiculous - thinking perhaps one of you solved it internally and we can get a PR going.
It does seem to really be that Variant is not being utilised when it should or could be, or at least, something is highly inefficient when checking if the files exist already as others have mentioned already. This system should absolutely not be regenerating images on each load, and separately, at least the silverstripe-cache shouldn't be ignored as much as it has been happening.
Let me know, otherwise I'll start digging into this and if solved I'll begin a PR at some point in the next weeks - but I will need some assistance from the community here.
We're having to rely a lot on CloudFront caching for this to be mitigated, but those first hits after the CF cache expires are painful - when it's only 30 or 40 images, and all of them were previously processed.

For the specific project that it was causing us problems on we moved to having the image assets on EFS as this was killing performance.
In the use case we had it was an image gallery with 400+ images, still slow but not failing.

For the specific project that it was causing us problems on we moved to having the image assets on EFS as this was killing performance.
In the use case we had it was an image gallery with 400+ images, still slow but not failing.

Okay thanks. We're currently pondering whether to utilise our own upload field and own image class to overcome some of these issues we're facing. Ideally it can be solved within this repo, though - so others can take advantage of any resolutions.

We're running into the same issues trying to integrate with Digital Ocean Spaces (S3 compatible).
I put a network proxy in between to see the requests and it's doing about 10 requests per image. For 19 images on our homepage that's 190 network requests.
When the cache is warmed up it's all HEAD requests to check for existence, and when running it from my localhost takes about 23ms per call. Add some GET and PUT requests of varying sizes to that on the initial page load...

Silverstripe's way of image handling feels odd, I don't understand why image manipulations are executed immediately instead of queued and executed on render at once.
If anyone is down to do some pair programming to try and figure this out let me know.

If anyone is down to do some pair programming to try and figure this out let me know.

Somewhat keen, but slammed at the moment with work to fully contribute, for us because we utilise a CDN and CloudFront - the issue only crops up for a visitor hitting a page that is currently uncached, all subsequent loads hit the CDN for the images and loads instantly. The CDN (also powered by CloudFront) is also using http2 so the amount of simultaneous requests are increased and the issue is lessened even if it was just down to many requests for images by the visitor.
The issue very much seems to be that SilverStripe is trying to check if the images are present (many users pointing this out including yourself), and/or even regenerating the images. I've run a quick check, and the images aren't being regenerated into S3 until a modification on SilverStripe has occurred, which is correct. However I'm unsure if the SilverStripe cache is being regenerated each time which is adding to the slow down, otherwise the slowdown is likely simply that SS is checking the existence of each variation of the file and that the file even exists at each load - which is likely very unnecessary as a URL is all that is required.
At least as an option, we should be able to assume that S3 is definitely there, and definitely has the image, and that the URL stored is correct; and only attempt these exists() if a modification has occurred on the image once it's been established. Ideally, there is some sort of understanding of URLs of each of the variants of an image, and that this is set in stone until a modification has occurred - or at least perform this same task but apply a cache timer on these, so it's not checking for the existence of these images every single time the load occurs. There has to be some layer of assumption here that the product is working as intended, as the exists() checks likely incur the same result for the visitor if the image was present or not (failure to load) and are therefore running exists() is somewhat unnecessary baggage if the URL/Variant is stored in the database and is assumed correct.
Even if the manipulations are run immediately after modification on next load - any subsequent loads should assume that everything's correct, as any other modifications to the images should have been performed via SilverStripe, and therefore has full awareness of the situation. Within the context of the CMS, the check could occur, but is unlikely unnecessary as it seems to handle 400 errors fine when images are no longer available.
I don't know quite enough here, but my expectation is that when trying to load a variant of an image, say FillMax() - SilverStripe want's to first check if the image exists before operating a function on it - however if the variant exists and was created after the image was modified last, then it should attempt to simply load the variant URL that's stored, and points directly to the object in S3 - either via the CDN or not if implemented.
I'm unsure if these variant functions are the slowdown within itself, and everything is actually operating as quickly as possible, versus some other extra check that is superfluous - but I suspect if it's a simple DB check to see if that variant url is present and up-to-date versus a full check of the image's existence itself would increase the speed dramatically.

After a little bit more digging thanks to direction from @maxime-rainville - two thoughts:

Where are the variants stored - it seems like they're simply generated on the fly, and understood through cache or something else, rather than stored in the database with the naming conventions that the functions sort of imply is occurring. If the variant is able to be checked in the database first - then we could quite easily utilise timing of last modifications on the main file and presence in the database to simply return that image instead of performing hashing checks or additional manipulations.
The exists() function is seemingly the best bet to tap into as recommended above, as we then have context of variant, and could simply use that information to check of its record in the database and what I mentioned above.
Because we're not operating with data on disk, there should be the ability to assume that the files/URLs are correct if present and not recently modified as the external requests are far more resource intensive - but this does require some awareness of the manipulated variant before hand, else it has no full context of the presence and generation timing of variant URLs.

The default flysystem cache adapter used in this module is a memory adapter which is not persistent in any way. In my experience this causes many API calls to S3 on each page load to check for file existence, metadata, mime type.
Within this there are other reasons the API calls can be slow overall. Storing lots of objects in a bucket is always a growing cause due to ListObjectsV2 only returning pages of 1000 images at once. The adapter also makes no use of prefixing to query or store items.
A solution I found was to use a semi-persistent cache like memcached. There are a few others built in to choose from including PSR-6 support which could enable filesystem caching. See league/flysystem-cached-adapter.
---
Only:
  envvarset:
    - MEMCACHED_HOST
    - AWS_BUCKET_NAME
After:
  - '#assetsflysystem'
  - '#silverstripes3-flysystem'
---
SilverStripe\Core\Injector\Injector:
  MemcachedClient:
    class: 'Memcached'
    calls:
      - [ addServer, [ '`MEMCACHED_HOST`', 11211 ] ]

  MemcachedFlysystemCache:
    class: League\Flysystem\Cached\Storage\Memcached
    constructor:
      client: '%$MemcachedClient'
      expire: 2592000

  League\Flysystem\Cached\Storage\Memory.public: '%$MemcachedFlysystemCache'
  League\Flysystem\Cached\Storage\Memory.protected: '%$MemcachedFlysystemCache'

@stnvh thanks a lot - your second example lowered loading speeds from 25 seconds to 6 seconds. It will obviously kill these cached images between container deploys, but we can solve that separately as this is an infrastructure thing rather than anything else. I'm surprised this behaviour isn't default handling on this repo - as it combines the best of SS and of S3.
I'm satisfied with this solution for the time being as it resolves the bulk of my issues as far as I can tell.

@stnvh do you happen to perform any functions with these to target specific types of files or images - currently the desire to cache items like this would be limited to images only - the desire to cache other files types is definitely not something desirable if possible to have such granular control.

Looking into this for issue #63 - @maxime-rainville - when looking at the FlysytemAssetStore.php class -
The exists function calls - applyToFileOnFilesystem - which in itself - calculates the hash of the file and ensures it is valid.
Then on the exists function - even in the comment -
    // If `applyToFileOnFilesystem` calls our closure we'll know for sure that a file exists

The file is then rehashed again to see if it matches.  this seems like it is not necessary and just provides extra overhead.  I can say for sure though when checking for the hash when uncached - SS is streaming the file and calculating the hash but at least it is cached but is extremely slow.  Is there a real reason for calculating these hashes as using the filesystem's > has function basically checks whether the file actually exists or not.  Just trying to know why we are having to run a sha1 hash for every file.  If I comment out the hashing checks on applyToFileOnFilesystem and exists - it runs super fast and I see no issues when using the filesystem.  If I try to upload a duplicate - it creates a new version (v2) file as expected.
If I replace the file using the asset admin with this commented out also no issues as well.
If these hashes are not really needed, I may subclass the FlysystemAssetStore to remove that functionality as it really does slow down the CMS admin.

@obj63mc will this PR will only be supported through SS 5.1+? We're not planning on shifting to 5 for some time (as it's still very new) as there is still "Full Support" through till April 2024 for 4.13 (and EOL April 2025). This has been an ongoing issue for a very long time and this is the first promising alternative rather than trying to manipulate existing configs for a iffy workaround.
Please advise if it's just parts that will require 5.1 or is the intention the major version which includes these caching updates will require 5.1+.

So the main PR for #63 is for SS5.1 as I had to upgrade all the flysystem stuff to work with flysytem V3.  As to v4 SS and v5.0 - I am  testing simply subclassing the FlysystemAssetStore class as noted above - https://github.com/silverstripe/silverstripe-s3/issues/48#issuecomment-929675809 - and then overwriting the YML config to use it.  The class is below that just rewrites the two methods - applyToFileOnFilesystem and the exists function.  If you look at the original in the SilverStripe-Assets repo - you will see that I have just returned true on the exists function instead of hashing, and removed the hashing from the applyToFileOnFilesystem function.
    <?php

    namespace App\Assets\Flysystem;

    use SilverStripe\Assets\FilenameParsing\FileResolutionStrategy;
    use SilverStripe\Assets\FilenameParsing\ParsedFileID;
    use SilverStripe\Assets\Flysystem\Filesystem;
    use SilverStripe\Assets\Flysystem\FlysystemAssetStore as SSFlysystemAssetStore;
    use SilverStripe\Assets\Storage\FileHashingService;
    use SilverStripe\Core\Injector\Injector;

    class FlysystemAssetStore extends SSFlysystemAssetStore{
        protected function applyToFileOnFilesystem(callable $callable, ParsedFileID $parsedFileID, $strictHashCheck = true)
        {
            $publicSet = [
                $this->getPublicFilesystem(),
                $this->getPublicResolutionStrategy(),
                self::VISIBILITY_PUBLIC
            ];

            $protectedSet = [
                $this->getProtectedFilesystem(),
                $this->getProtectedResolutionStrategy(),
                self::VISIBILITY_PROTECTED
            ];

            /** @var FileHashingService $hasher */
            $hasher = Injector::inst()->get(FileHashingService::class);

            /** @var Filesystem $fs */
            /** @var FileResolutionStrategy $strategy */
            /** @var string $visibility */

            // First we try to search for exact file id string match
            foreach ([$publicSet, $protectedSet] as $set) {
                list($fs, $strategy, $visibility) = $set;

                // Get a FileID string based on the type of FileID
                $fileID =  $strategy->buildFileID($parsedFileID);

                if ($fs->has($fileID)) {

                    // We already have a ParsedFileID, we just need to set the matching file ID string
                    $closesureParsedFileID = $parsedFileID->setFileID($fileID);

                    $response = $callable(
                        $closesureParsedFileID,
                        $fs,
                        $strategy,
                        $visibility
                    );
                    if ($response !== false) {
                        return $response;
                    }
                }
            }

            // Let's fall back to using our FileResolution strategy to see if our FileID matches alternative formats
            foreach ([$publicSet, $protectedSet] as $set) {
                list($fs, $strategy, $visibility) = $set;

                $closesureParsedFileID = $strategy->searchForTuple($parsedFileID, $fs, $strictHashCheck);

                if ($closesureParsedFileID) {
                    $response = $callable($closesureParsedFileID, $fs, $strategy, $visibility);
                    if ($response !== false) {
                        return $response;
                    }
                }
            }

            return null;
        }

        public function exists($filename, $hash, $variant = null)
        {
            if (empty($filename) || empty($hash)) {
                return false;
            }

            // If `applyToFileOnFilesystem` calls our closure we'll know for sure that a file exists
            return $this->applyToFileOnFilesystem(
                function (ParsedFileID $parsedFileID, Filesystem $fs, FileResolutionStrategy $strategy) use ($hash) {
                    $parsedFileID = $strategy->stripVariant($parsedFileID);

                    if ($parsedFileID && $originalFileID = $parsedFileID->getFileID()) {
                        if ($fs->has($originalFileID)) {
                            return true;
                        }
                    }

                    return false;
                },
                new ParsedFileID($filename, $hash, $variant)
            ) ?: false;
        }
    }

Note this is editing the SS 5 version of the file but you could do something similar with v4 on your local project.

@obj63mc Okay fair, I'll take a look at doing the exact same thing on my version of things - as this was something I mentioned higher up that should be occurring (the concept of assuming that the files exist since it's on S3.

I've got a PR which covers some of this feedback (though not all of it) at https://github.com/silverstripe/silverstripe-s3/pull/70.
Would love everyone's feedback!


aspcud: fix by updating the dependencies

Motivation for this change
This fixes issue #19950 by replacing the dependency of aspcud on standalone gringo by a dependency on clingo (which contains the gringo binary as part of a larger monolithic package).
Tagging @hakuch as the one who introduced gringo.
Things done

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

[x] NixOS
[ ] OS X
[ ] Linux

[ ] 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/)
[x] Fits CONTRIBUTING.md.

opam works for me with this patch :+1:

Looks good, thanks!

I was on vacation, so I missed most of this. Thanks to all of you for clearly documenting and taking care of all this so that we can all continue to use opam!

Has anybody tested running opam after the update of aspcud?
aspcud doesn't seem to work for me:
[WARNING] External solver failed with inconsistent return value. Request saved to
          "/home/lukas/.opam/log/solver-error-24753-1.cudf"
[ERROR] External solver failure, please fix your installation and check /home/lukas/.opam/config
        and variable $OPAMEXTERNALSOLVER.
        You may also retry with option --use-internal-solver

Has anybody got a working opam?

I was able to reproduce the problem seen by @sternenseemann. If we don't hear from @Zimmi48 in the next couple of days than I'll prepare a PR that reverts this change.

@hakuch Reverting will be no good, the build was broken back then…

@hakuch If you revert, make sure to fix at the same time the building problem that this PR was supposed to solve (#19950).
I don't have any knowledge about CUDF-solvers, thus I can't really investigate the problem that @sternenseemann is having.
My feeling is that while clingo is being maintained, aspcud isn't and it's a bit unfortunate to have to rely on an unmaintained program. The second alternative proposed by Opam is packup. We might have more luck with it but it does not look maintained either.
Maybe contacting the potassco project (developers of gringo/clingo/aspcud) or the opam team could be useful to get a better understanding of what's going on.
Then when we look at this page, we actually understand that all these solvers were intensively developed between 2010 and 2012, less so since then.

@Zimmi48 I'm in the process of reverting and fixing the compilation error of gringo. I'll have a PR up shortly.
The issue of opam's dependency on aspcud is a bit of a pain point in the OCaml community. As a user (and not a contributor), I'm eager for the situation to be better there as well.

I have a PR for this at https://github.com/NixOS/nixpkgs/pull/20365.


IDEA! jQueryUI connectWith

Hi
This plugin is amazing! I love how much customisation it has, and the power it has, it has helped me so much with my Symfony projects!
I am trying to implement jQueryUI sortable with connected lists, so that I can drag an item from one nested collection to another nested collection within the same parent collection. It doesn't appear to be possible out of the box at the moment, but I am pushing forward with it anyway.
I have implemented the following
drag_drop_options: {
    connectWith: ".child-collection"
}

and jQuery allows me to drag them about, but they don't land properly and just revert back to their original position.
If I do figure it out, I'll create a pull request, but thought I would post here in case I'm missing something.
Thanks :)

Hi bertyterty,
Thank you for the idea! Actually you're right, that's not possible for the moment.
It requires to find the right indexes when dragging and dropping the elements, and apply changes on both child collections. Looks to be quite tricky but should be doable.
You're more than welcome to throw the PR 👍
Alain


feat: delete index

implement delete for all document index backends which will clear all the data created and delete the index/table/collection
https://github.com/docarray/docarray/issues/1735 related

Hi @jupyterjazz, I can work on it. Can you please assign it to me?

Hi @jupyterjazz, I can work on it. Can you please assign it to me?

Done!


SonarCloud Lab - Updated VSTS to Azure DevOps, and updated screenshots.

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


Android - Fixed String comparisons in MyActivity.java

Fixed String comparisons to avoid using logical operators and instead
compare by String object with .equals() for more consistent behavior
and to avoid NullPointerExceptions.

Thanks!


Advanced params

Hi everyone and thanks for a great client,
my problem is that I need to create more advanced parameteres than just simple strings - when calling a web service.
1) THE SERVICE I NEED TO USE
This is the url: http://sis.kolumbus.no:90/SXWS/SXService.svc?wsdl
The method is called GetSituationExchange
Here is a SOAP request that works(i have tested it):
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:siri="http://www.kolumbus.no/siri" xmlns:siri1="http://www.siri.org.uk/siri" xmlns:acsb="http://www.ifopt.org.uk/acsb">    <soapenv:Header/>    <soapenv:Body>       <siri:GetSituationExchange>          <ServiceRequestInfo>             <siri1:RequestTimestamp>2013-05-22T12:20:40+02:00</siri1:RequestTimestamp>             <siri1:RequestorRef>SWM</siri1:RequestorRef>          </ServiceRequestInfo>          <Request version="1.4">             <siri1:RequestTimestamp>2013-05-22T12:20:40+02:00</siri1:RequestTimestamp>          </Request>          <RequestExtension>             <!--You may enter ANY elements at this point-->          </RequestExtension>       </siri:GetSituationExchange>    </soapenv:Body> </soapenv:Envelope>
2) MY PROBLEM
Is that i need to create those three parameters; ServiceRequestInfo, Request and RequestExtension - but since they have complex parameters within them – i dont know how to do it! All examples I have found just uses strings.
2) THE CODE OF MYE CLIENT
`var easysoap = require('easysoap');
var params = {
host   : 'http://sis.kolumbus.no:90',
path   : '/SXWS/SXService.svc',
wsdl   : '/SXWS/SXService.svc?wsdl'
}
var soapClient = easysoap.createClient(params);
soapClient.getAllFunctions()
        .then((functionArray) => {
            console.log(functionArray);
        })
        .catch((err) => {

        throw new Error(err);
         });

        soapClient.getMethodParamsByName('GetSituationExchange')
            .then((methodParams) => {

            console.log(methodParams.request);
        })
        .catch((err) => { throw new Error(err); });

 soapClient.call({
        method    : 'GetSituationExchange',
        params: {
            ServiceRequestInfo: {
                params: {
                    RequestTimestamp: {
                        '_value'     : '2013-05-22T12:20:40+02:00'
                    },
                    RequestorRef: {
                        '_value'     : 'SWM'
                    }
                }
            },
            Request: {
                params: {
                    RequestTimestamp: {
                        '_value'     : '2013-05-22T12:20:40+02:00'
                    }
                }
            },
            RequestExtension: ""
        }

    })
    .then((callResponse) => {
        console.log(callResponse.data); // response data as json
        console.log(callResponse.body); // response body
        console.log(callResponse.header);  //response header

    })
    .catch((err) => {
        console.log(err);
    throw new Error(err); });`

4) THE RESULT OF THE LOG WHEN RUNNING THE CODE
`[ 'CheckStatus',
'DeleteSubscription',
'GetCapabilities',
'GetSituationExchange',
'Subscribe' ]
[ { name: 'ServiceRequestInfo',
namespace: 'q1',
type: 'ServiceRequestInfo',
'xmlns:q1': 'http://www.siri.org.uk/siri' },
{ name: 'Request',
namespace: 'q2',
type: 'SituationExchangeRequest',
'xmlns:q2': 'http://www.siri.org.uk/siri' },
{ name: 'RequestExtension',
namespace: 'tns',
type: 'ExtensionsStructure' } ]
{ Fault:
[ { faultcode: 'a:ActionNotSupported' },
{ faultstring: 'The message with Action '' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver.  Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).' } ] }`
Can anyone help me with this?
Kind Regards,
Anders

The error code you are getting is because you don't have a SOAPAction in your header:
const params = {
host: 'demo.4levers.com',
path: '/TxWs/ATPayTxWS.svc',
wsdl: '/TxWs/ATPayTxWS.svc?singleWsdl',
headers: [{
name: 'SOAPAction',
value:
}]
};

"Good things come to those who wait" ^_^
so i close this, thx!


feat: add marker for control's stop reason, false by default

Description
launcher PR for https://github.com/autowarefoundation/autoware.universe/pull/6579

Tests performed

See https://github.com/autowarefoundation/autoware.universe/pull/6579
Effects on system behavior

See https://github.com/autowarefoundation/autoware.universe/pull/6579
Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[x] I've confirmed the contribution guidelines.
[x] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.

After all checkboxes are checked, anyone who has write access can merge the PR.

@shmpwk You can enable this marker's visualization in the forked repository if you want.


Cannot add foreign key constraint in Laravel 5.8

 Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter tableattendancesadd constraintattendances_user_id_foreign foreign key (user_id) references users (id`))
at C:\laragon\www\Attendance\vendor\laravel\framework\src\Illuminate\Database\Connection.php:664
660|         // If an exception occurs when attempting to run a query, we'll format the error
661|         // message to include the bindings with SQL, which will make this exception a
662|         // lot more helpful to the developer instead of just the database's errors.
663|         catch (Exception $e) {

664|             throw new QueryException(
665|                 $query, $this->prepareBindings($bindings), $e
666|             );
667|         }
668|

Exception trace:
1   Doctrine\DBAL\Driver\PDOException::("SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint")
C:\laragon\www\Prep50Attendance\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOStatement.php:119
2   PDOException::("SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint")
C:\laragon\www\Prep50Attendance\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOStatement.php:117
`

hi, are you able to resolve this issue?

this is probably due to Laravel 5.8 using big increments in users table.

year. I have fixed it already.


Vulkan(?) not working after AQ-merge

Regression?
Yes
System Info and Version
 System/Version info
Hyprland, built from branch main at commit 4beac91cbd791657cc53d6e483eb41bf4df1ec0c  (keybinds: add safeguard to mousebinds (7034)).
Date: Thu Jul 25 00:19:15 2024
Tag: v0.41.2-94-g4beac91c, commits: 4980

flags: (if any)

System Information:
System name: Linux
Release: 6.10.0-arch1-2
Version: #1 SMP PREEMPT_DYNAMIC Mon, 22 Jul 2024 17:28:23 +0000

GPU information:
67:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt [Radeon 680M] [1002:1681] (rev 12) (prog-if 00 [VGA controller])

os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo

plugins:

======Config-Start======

Config File: /home/xxx/.config/hypr/hyprland.conf: Read Succeeded
#
# Please note not all available settings / options are set here.
# For a full list, see the wiki
#

#autogenerated = 1 # remove this line to remove the warning

# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=DP-2,2560x1440,0x0,1.25,transform,1
monitor=DP-1,3440x1440,1152x0,1
monitor=eDP-1,1920x1200,4592x0,1

# See https://wiki.hyprland.org/Configuring/Keywords/ for more

# Execute your favorite apps at launch
exec-once = hyprpaper & nm-applet --indicator & waybar & blueman-applet
exec-once = /usr/lib/geoclue-2.0/demos/agent & gammastep-indicator
exec-once = /usr/lib/polkit-kde-authentication-agent-1
exec-once = solaar --window=hide
exec-once = swayidle -w
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = wl-paste --type text --watch cliphist store #Stores only text data
exec-once = wl-paste --type image --watch cliphist store #Stores only image data
exec-once = hyprctl setcursor Catppuccin-Latte-Teal-Cursors 24
exec-once = hyprctl dispatch exec [workspace 1 silent] google-chrome-stable
exec-once = hyprctl dispatch exec [workspace 2] firefox
exec-once = hyprctl dispatch exec [workspace special silent] obsidian
exec-once = copyq --start-server

# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf

# Some default env vars.
env = XCURSOR_SIZE,24
env = QT_QPA_PLATFORM,wayland
env = GDK_BACKEND,wayland
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
env = SSH_AUTH_SOCK,$XDG_RUNTIME_DIR/ssh-agent.socket
#env = DRI_PRIME,1
#env = WLR_DRM_DEVICES,/dev/dri/card1

# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
    kb_layout = no
    kb_variant =
    kb_model =
    kb_options =
    kb_rules =

    follow_mouse = 1

    touchpad {
        natural_scroll = 1
        disable_while_typing = 1
    }

    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}

general {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    gaps_in = 2
    gaps_out = 5
    border_size = 2
    col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
    col.inactive_border = rgba(595959aa)

    layout = dwindle

}

decoration {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    rounding = 10

    # Example config for blur
    blur {
        enabled = true
	size = 3
	passes = 1
    }

    drop_shadow = yes
    shadow_range = 4
    shadow_render_power = 3
    col.shadow = rgba(1a1a1aee)
}

animations {
    enabled = yes

    # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more

    bezier = myBezier, 0.05, 0.9, 0.1, 1.05

    animation = windows, 1, 7, myBezier
    animation = windowsOut, 1, 7, default, popin 80%
    animation = border, 1, 10, default
    animation = borderangle, 1, 8, default
    animation = fade, 1, 7, default
    animation = workspaces, 1, 6, default
}

dwindle {
    # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
    pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
    preserve_split = yes # you probably want this
    no_gaps_when_only = true
    special_scale_factor = 0.9
}

master {
    # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
    new_status = master
}

gestures {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more
    workspace_swipe = on
}

misc {
    enable_swallow = true
    swallow_regex = ^(kitty)$
    disable_hyprland_logo = true
}

# unscale XWayland
xwayland {
  force_zero_scaling = true
}

# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
#device:epic-mouse-v1 {
#    sensitivity = -0.5
#}

# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more

# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER

# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
#bind = $mainMod, Q, exec, kitty --single-instance
bind = $mainMod, Q, exec, foot
bind = $mainMod, C, killactive,
bind = $mainMod, M, exit,
bind = $mainMod, E, exec, thunar
bind = $mainMod, V, togglefloating,
bind = $mainMod SHIFT, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
bind = $mainMod, F, fullscreen,
bind = $mainMod, A, togglegroup
bind = $mainMod SHIFT, A, changegroupactive, f
bind = $mainMod CTRL, A, moveoutofgroup
bind = ALT, Alt_L, exec, rofi -modes "drun,run,ssh" -show drun -show-icons -ssh-client "env TERM=xterm ssh"
bind = $mainMod, P, exec, rofi -show p -modi p:rofi-power-menu
bind = $mainMod, L, exec, swaylock --clock --indicator --screenshots --effect-scale 0.4 --effect-vignette 0.2:0.5 --effect-blur 4x2 --datestr "%a %e.%m.%Y" --timestr "%k:%M"
bind = $mainMod, S, exec, grim -g "$(slurp)" - | swappy -f -
#bind = $mainMod SHIFT, Z, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy
bind = $mainMod SHIFT, Z, exec, copyq toggle | cliphist decode | wl-copy
bind = $mainMod, K, exec, ~/.config/div/stash.sh

# Media binds
binde = , xf86monbrightnessup, exec, brightnessctl set 10%+
binde = , xf86monbrightnessdown, exec, brightnessctl set 10%-
binde = , xf86audioraisevolume, exec, wpctl set-volume -l 1.5 @DEFAULT_SINK@ 5%+
binde = , xf86audiolowervolume, exec, wpctl set-volume -l 1.5 @DEFAULT_SINK@ 5%-
bind = , xf86audiomute, exec, wpctl set-mute @DEFAULT_SINK@ toggle
bindl = , XF86audioplay, exec, dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
bind = , XF86audioprev, exec, dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous
bind = , XF86audionext, exec, dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next

# Move focus with mainMod + arrow keys
bind = $mainMod SHIFT, left, movefocus, l
bind = $mainMod SHIFT, right, movefocus, r
bind = $mainMod SHIFT, up, movefocus, u
bind = $mainMod SHIFT, down, movefocus, d

# Move between workspaces
bind = $mainMod, left, workspace, e-1
bind = $mainMod, right, workspace, e+1

# Using the special workspace
bind = $mainMod, up, movetoworkspace, special
bind = $mainMod, down, togglespecialworkspace

# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10

# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1
bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2
bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3
bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4
bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5
bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6
bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7
bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8
bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9
bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10

# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1

# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

# Window rules
windowrulev2 = opacity 0.8 0.8,class:^(foot|kitty|Spotify)$
#windowrulev2 = opacity 0.8 0.8,title:^(Spotify)$
windowrulev2 = opacity 0.95 0.95,class:^(code-oss|obsidian)$
windowrulev2 = float,class:^(com.github.hluk.copyq|org.kde.polkit-kde-authentication-agent-1|galculator|solaar|org.pulseaudio.pavucontrol|F5 VPN)$
windowrulev2 = workspace 7 silent,title:(F5 VPN)

layerrule = blur,waybar

======Config-End========

Description
When trying to run zed-editor or vkcube-wayland, the processes crash with the output wl_display#1: error 2: no memory.
Vkcube runs with no problems and zed in xwayland mode runs with no problems.
Tried to revert to a Hyprland version I had in cache that was from before the AQ-merge(0.41.2-r43), and here zed runs with no problems in wayland and vkcube-wayland runs with no problems.
So apparently there is something iffy with Vulkan after the AQ-merge.
How to reproduce
I'm not sure. Had some discussion with people on the discord and none of them seem to be able to reproduce it.
But since stuff work before the AQ-merge and not after, it seems probable to me that there is something here, but I have no clue what it could be.
Crash reports, logs, images, videos
vkcube-wayland_log.txt
zed_log.txt

this might be a driver bug but I'll see

i cant with either my igpu intel or dgpu nvidia one

i cant with either my igpu intel or dgpu nvidia one

reproduce i mean

it's cuz vkcube uses a legacy dmabuf protocol and fails to create a buffer

I got the same error with https://github.com/WhoStoleMyCoffee/kfiles/. For some reason using a custom wayland only mesa built from source instead of the arch linux packages fixed it temporarily.

This is happening since 0.42 on my amd gpu. Downgrading to 0.41 fixes it for me. Using amdvlk.

I'm getting the same error for vkcube-wayland i.e., wl_display#1: error 2: no memory
The same error is happening for zed too

im also getting that error
also i did get some more detailed log when using the vulkan debug layer if that helps @
log.txt

Getting the same error when trying to run mpv with the gpu-api=vulkan flag.

funny note broken on wlr

Fixed it for me, thanks @vaxerski !


Adafruit neopixel library?

Originally when I first tried to set this up, I could only get adafruit/neopixel examples working with my strip. I ended up remaking the code for that library and I was wondering if you wanted me to also add a neopixel example (makes it much simpler as there aren't 8 files with every sketch)

I'd like to only have one version of the ESP8266 firmware to keep things simple. I'm open to the possibility of replacing the ws2812_i2s library with another library such as FastLED.
The only concern I have about switching to another library is performance. Have you noticed any problems with refresh rate when using the neopixel library? If that seems to work then I'd like to try using the FastLED library.

I didnt see any even with 250 leds. I'll update my pull request and just make it use WiFiManager and responding by default if you want to only have one firmware

The NeoPixelBus library is a feature complete replacement of the NeoPixel library except it uses DMA or UART instead of bit banging output. However, the quick math libraries in FastLED are extremely useful. I tend to make use of the FastLED library and then use NeoPixelBus to output to the strip.

I'm convinced. Let's move away from the current library and replace it with NeoPixelBus.
I'll leave this issue open until the change has been made. The README documentation will need to be updated as well.
Unfortunately I won't get a chance to do this for a while, but I'd be happy to consider a pull request.

Sorry, I've been swamped and completely forgot about this, are you still interested in replacing the current ws2812 library with the neopixelbus one? If so, I will get to work with a PR for you.
Also not related but possibly still of use:
I have successfully tested the firmware on the wemos d1 mini and wemos d1, using the rx/d0 pin if you want to add that to the readme.

Yes please. If you make those changes put them in separate pull requests

I wrote the whole thing in about 10 minutes in one go... I don't know why I kept putting this off.


Basic math operator aliases

Instead of aliasing / + - * to the equivalent decimal functions can they instead be functions that operate in the same manner as clojure?
I wrote this after looking at clojure.core:
(defn +
([] (decimal 0))
([x] (decimal x))
([x y] (plus x y))
([x y & more] (reduce + (+ x y) more)))
(defn -
([x] (neg x))
([x y] (minus x y))
([x y & more] (reduce - (- x y) more)))
(defn /
([x] (div 1 x))
([x y] (div x y))
([x y & more] (reduce / (/ x y) more)))
(defn *
([] (decimal 1))
([x] (decimal x))
([x y] (mul x y))
([x y & more] (reduce * (* x y) more)))

PR welcome for that!


unity managed client auth

Not quite ready for merge

This adds

unity https support
unity authentication support (oauth24d)
unity temporary turn credential support (rest provider)
Modified UI to provide more space for status text
Rewired buttons in unity (the events were not hooked up in my scene)

This needs

hololens compatible ux for displaying oauth24d user_code

Testing

Note: Will test in Unity 5.6.3f1 (64-bit), being the latest hololens compatible.

Note: Will test with uwp10.0.14393.0 x86 binaries as per the readme, built with v140 compiler.

Note: these will be checked off as they are validated.

[ ]  http no auth
[ ]  https no auth
[ ]  http auth
[ ]  https auth
[ ]  http auth turn creds
[ ]  https auth turn creds

this will close #50 when it lands

https://github.com/CatalystCode/3dtoolkit/pull/66/commits/bd421ee8e31f05f0772bc761b07c5464cd283b1c will close https://github.com/CatalystCode/3dtoolkit/issues/87 when it lands

This improves (not completely though) #61


Invalid example in README

Hi! Thank you for the project. It seems amazing. But an example from README.md not compiled. It seems outdated.

@lowitea thank you for noticing that, it seems I forgot to update it with the examples in the examples folder after the last update.
I fixed it just now with this update 👍


Optimise patching so as changes only happen with something changes

Related to #221

/approve

/ok-to-test sha=07415bd

/merge


feat: allow to specify the managed cluster IAM role name

PR o'clock
Description
This allows to specify the IAM role name that will be managed for the cluster (allowing it to follow internal naming conventions for IAM role) and follows what is already in place with workers_role_name variable.
Checklist

[ ] CI tests are passing
[X] README.md has been updated after any changes to variables and outputs. See https://github.com/terraform-aws-modules/terraform-aws-eks/#doc-generation

Please @xavfernandez  can you please rebase your branch.

@barryib rebased


Cannot See any warnings

It does not give me the warnings, only the errors. I would like to have an option to see the warnings too,

Hi @Karachristou thanks for submitting this issue, the extension should give you warnings just like that :

Here is the html I have been using to test it :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <header>
        <!-- Warning below  -->
        <h2>

        </h2>
    </header>

</body>
<!-- Error below  -->
<script type="javascript">

</script>
</html>

Is the behaviour different on your side ?

The behaviour works like you depicted for HTML, however no warning appear for me in CSS code.

@celian-rib thanks for your response, the behaviour works like you depicted for HTML, however no warning appear for me in CSS code.

Do you have any CSS as an example on which the the problem occurs?


ESM support

To support ethers 6 and hardhat 2.14 we need to import ESM modules. Big libraries in the ecosystem are moving to ESM so I think we can/should do the same. If we export an ESM module anyone using commonjs with not be able to import the unirep libraries. I think this is reasonable at this point given that nodejs, webpack, and browsers all support ESM out of the box.
Typescript support for ESM is mediocre at this point. The configuration is complicated, especially with tests/ts-node. I think this is a good opportunity to remove some parts of our systems that are typescript, specifically:

switch @unirep/contracts deploy/build/test logic to javascript

manually write a type definition for the deploy function

This issue is a pretty big lift and I think we should break it up into the following steps:

Remove typechain support in @unirep/contracts
Refactor @unirep/contracts to javascript

Manually write a type definition file for the deploy function

Switch @unirep/core to ESM and ethers-v6
(optional) switch @unirep/utils and @unirep/circuits to ESM

Related #366

@vivianjeng let me know what you think of this

yeah I think we can support v6 first
and then figure out if there is another way to switch back to ts (I think it might be possible)


Use bitcoin_hashes::hex instead of hex

We trust and use bitcoin-rust code anyway, so by not using hex, we could get rid of one dependency.
And also hex doesn't seem to be able to write stuff out without allocating, while bitcoin_hashes::hex can https://docs.rs/bitcoin_hashes/latest/bitcoin_hashes/hex/fn.format_hex.html

I'd like to take a look at this

hex is still used here:
$ rg '^hex'
client/client-lib/Cargo.toml
24:hex = "0.4.3"

fedimint-server/Cargo.toml
23:hex = "0.4.2"

fedimintd/Cargo.toml
33:hex = "0.4.2"

fedimint-core/Cargo.toml
21:hex = "0.4.2"

fedimint-api/Cargo.toml
21:hex = { version = "0.4.3", features = [ "serde" ] }

modules/fedimint-wallet/Cargo.toml
22:hex = "0.4.3"

modules/fedimint-mint/Cargo.toml
21:hex = "0.4.2"

fedimint-dbdump/Cargo.toml
18:hex = { version = "0.4.3", features = [ "serde"] }

gateway/ln-gateway/Cargo.toml
29:hex = "0.4.3"

I'll go there next, I guess

PR #1472 removed all direct dependencies on the hex crate.
@elsirion  had a good hint though: Next time we look at removing a crate, we could check first which transitive dependencies exist for that crate; meaning which other crates depend on that crate internally.
in general this works with cargo tree --invert hex. currently we still depend transitively on hex through cln-rpc and sqlx
$ cargo tree --invert hex
hex v0.4.3
├── cln-rpc v0.1.2
│   └── ln-gateway v0.1.0 (/home/mxz/dev/mxz/fm/gateway/ln-gateway)
│       └── gateway-cli v0.1.0 (/home/mxz/dev/mxz/fm/gateway/cli)
│       [dev-dependencies]
│       ├── fedimint-tests v0.1.0 (/home/mxz/dev/mxz/fm/integrationtests)
│       └── gateway-tests v0.1.0 (/home/mxz/dev/mxz/fm/gateway/tests)
│   [dev-dependencies]
│   └── fedimint-tests v0.1.0 (/home/mxz/dev/mxz/fm/integrationtests)
├── sqlx-core v0.6.2
│   └── sqlx-macros v0.6.2 (proc-macro)
│       └── sqlx v0.6.2
│           └── fedimint-sqlite v0.1.0 (/home/mxz/dev/mxz/fm/fedimint-sqlite)
│               [dev-dependencies]
│               └── fedimint-tests v0.1.0 (/home/mxz/dev/mxz/fm/integrationtests)
└── sqlx-core v0.6.2
    └── sqlx v0.6.2 (*)

I don't think there's anything particularly wrong with hex that would make us want to go out of our way to remove it even from dependencies. It's just rust-bitcoin's code seems better, has better functionality and we're using  anyway. )


Better history UI

Description
UI improvements
Checklist

[x] The base branch of this PR is dev, rather than main
[ ] The relevant docs, if any, have been updated or created

Screenshots

HOVER STATE:

Testing
[ For new or modified features, provide step-by-step testing instructions to validate the intended behavior of the change. ]

Agreed, looks really solid! I wouldn't be opposed to just making the history "Show all" by default. Seems sensible.

My feedback is just to add a faint (0.5px, light gray) line to separate the history from the full screen chat (like in above scenario)

This is looking really good! Fits with the rest of Continue much better. Here are some other thoughts:

I think we should make the "Open New Window" icon smaller to better fit with the other icons in the top right
I think we should only have one way to go full screen

I still don't understand the "Show All" button. I also always forget that it only shows sessions from my current workspace by default. When I open Continue without a workspace, it then gives me the confusing "No past sessions found" even when I just had some sessions. I need to click "Show All" to reveal them

Agreed, looks really solid! I wouldn't be opposed to just making the history "Show all" by default. Seems sensible.

I agree, I also find that confusing. I didn't realize that's what the behavior was and it just seemed kind of random. I'd also rather see all by default, and maybe in the future we can add filters?

I think we should make the "Open New Window" icon smaller to better fit with the other icons in the top right

I'll look into it, although as far as I know we don't set the sizes of these icons, they're all VSCode defaults. I might be wrong though.

I think we should only have one way to go full screen

I think that would make sense, I just didn't want to gut existing features. Do you think we should get rid of this full screen view then?

My feedback is just to add a faint (0.5px, light gray) line to separate the history from the full screen chat (like in above scenario)

I'll look into it. What theme is this so that I can debug locally? There is a gray line but it's not visible on this theme so I might have accidentally used the wrong variable.

Yes, let's go with all by default for now and add more filters later
If we don't set size, then I think the padding should be increased around the icon if possible
Yes, I think we should pick one and roll with it

Given we're picking one full screen option, don't worry about the icon sizing (not worth us making a custom image, which is what would be required), just use the one we've previously been using
Probably use the lightGray variable. It's exactly in the middle of grayscale so should show up on any background (# 888)

Summary of the changes:

Fixed the border but used a different color. lightGray was very hard on a black background
Retained only one full screen mode, using the old icon
Removed "*" / clear all from search to display all workspaces results by default. We can restore some of these filters later, under a dedicated menu


How to delete header?

This variant doesn't work.
<!DOCTYPE html>

  {%- include head.html -%}

        {{ content }}

    {%- include footer.html -%}

What happens if you just remove that line altogether?
<!DOCTYPE html>

  {%- include head.html -%}

        {{ content }}

    {%- include footer.html -%}

@alexsmacd , the same, nothing

@alex-shef  Is your site render public yet? If yes, pls provide a link to your live site.

@ashmaroli , thank you.


Support for address labels

One of the core functionalities of this project is to provide decoded information for given UserOp and Errors and it'll be easy to understand the results of decoded UserOp and Errors, if addresses also gets a label.
There should be a service that accepts an address and networkId and returns a label string which can be used to add to decoded information of UserOp or Errors to make it more human readable.
Addresses which needs labels are smart account factories, paymasters, token addresses or any other smart contract which is involved in UserOp execution.
This service should be easily extensible in terms of adding more labels.

@tomarsachin2271 do you have examples for this?


Logstash-exporter v1.6.3 has a vulnerable dependency

Description of the Issue
As an indirect dependancy of prometheus/client_golang, logstash-rec has google.golang.org/protobuf v1.32.0 in its dependencies, which is subject to CVE-2024-24786 (fixed in 1.33.0).
A simple upgrade of prometheus/client_golang should do the trick.
Version of logstash-exporter, or logstash-exporter Image
v1.6.3
Version of Chart (if applicable)
N/A
Operating System/Environment
No response
Logs
No response

thank you, i will address it today

I already filed a PR with the prom client upgrade.

i just saw that and deleted my comment. i will create a new tag soon

@vincentlepot no problem. in case of other, more complicated security issues, where creating PR immediately is not possible feel free to send me an email to the address described in SECURITY.md file https://github.com/kuskoman/logstash-exporter/blob/master/SECURITY.md
I temporarily have not enough time to actively maintain the project in terms of new features but I always prioritize security updates.
Also, thank you for finding and fixing this problem!


fix(vue-2): rework how vue 2 plugin gets head instance

Make vue 2 plugin not reference head directly, get it from root component options instead
🔗 Linked issue
#216
❓ Type of change

[x] 📖 Documentation (updates to the documentation, readme, or JSdoc annotations)
[x] 🐞 Bug fix (a non-breaking change that fixes an issue)
[ ] 👌 Enhancement (improving an existing functionality like performance)
[ ] ✨ 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
The comment in 1dfe189e about the pinia plugin sparked a thought for an alternative way for the plugin to work. Basically instead of passing the unhead instance to Vue.use, have the plugin get it from this.$options.unhead (which would only be present on the root component).
The changes in 1dfe189e would still result in the behavior described here.
📝 Checklist

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

Thank you! I appreciate the help on this, I think I have just been going around in circles.

Glad to help! Thanks for maintaining this package!


YAML validation with JSON schema dont work fine

Create tes.libraries.yml:
test:
version: 1.0
js:
js/test.js: { preprocess: false }
Editor show warning on "preprocess", but is defined (with ref) in JSON schema Drupal libraries file.

You need to file this against the YAML extension: https://github.com/redhat-developer/vscode-yaml/issues


"the JSON should be ..." failing in JRuby

I'm using JRuby 1.6.5 with Rails 3.1.3 and Cucumber 1.1.4.
When I try to use the step 'the JSON should be ...' I get this error
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.length (NoMethodError)
/home/declan/.rvm/gems/jruby-1.6.5@neo/gems/cucumber-1.1.4/bin/../lib/cucumber/step_match.rb:73:in `replace_arguments'
...

Current workaround is to use 'the JSON at "" should be ...' instead, i.e. use the JSON at PATH step, and just give it the root path.

I haven't been able to get json_spec consistently passing in JRuby. I've removed support for JRuby in the Travis build until somebody comes forward to help keep it JRuby-compatible. Let me know if you're interested.

this might relate to https://github.com/cucumber/cucumber/issues/188


Update build

bumped to latest scala 3.0.0 version (M3), I removed cross-compile to M2, refined wasn't available
removed -source:3.0-migration scalac option from code because the Focus macro used new syntax. Can we make it specific to Focus macro?
I tried to cross-compile test modules but I got some errors regarding mixed dependency (2.13/3.0.0)
ported Focus  macro developed by @kenbot and @yilinwei in Monocly

@kenbot good to know, that settles it :)


backspace not working on windows.

This might have more to do with one of the underlying dependencies, but on windows 10 backspace is not working for me when using Prompt.Run()
Here's how I'm using it:
// This is within a loop with a new field on each iteration.

prompt := promptui.Prompt{
    Label: field,
}

result, err := prompt.Run()
if err != nil {
	panic(err)
}

@KaelBaldwin  - I hope @luizbranco doesn't mind me sharing another project (please delete this comment if so!) but I have been working on a very similar package that has full windows support which might be able to hold you over until prompt-ui has better support for windows: https://github.com/AlecAivazis/survey

@KaelBaldwin I ran into the same issue and ended up going with AlecAivazis/survey which seemed to have a lot better windows support

Thanks @meinstein

@KaelBaldwin that should fix the issue: https://github.com/manifoldco/promptui/pull/37

thanks! trying it out now!

that works! @luizbranco thanks again!

@KaelBaldwin sorry for the delay. It is now on master.
@meinstein thanks for sharing the link, seems to be a very cool lib. I will take a look


The client and server mods loading order inconsistent

Exception
I found that the loading order of the Quilt loader on the server and client is different.
I know has some client mods do not exist on the server, but after excluding this mods, they are still in inconsistent order.
The client mods order: full client logs

Index
Mod
ID
Version
Type
File Hash (SHA-1)
File(s)
Sub-File

22
Terraform Wood API (v1)
terraform-wood-api-v1
4.2.0
Fabric
5b81eda6459643db8298e28dbc29cf28dced3894
\blockus-2.5.11+1.19.2.jar
/META-INF/jars/terraform-wood-api-v1-4.2.0.jar

198
Armourer's Workshop
armourers_workshop
2.0.11-dev.192
Fabric
05c872cf84b08063568947032daa648c09378012
\armourersworkshop-fabric-1.19.2-2.0.11-dev.192.jar

277
FrozenLib
frozenlib
1.2.6-Fabric+1.19.2
Fabric
54991dce2a303ca2ad47affa9e4eebf951b34ecc
\FrozenLib-1.2.6-Fabric+1.19.2.jar

226
Fzzy Core
fzzy_core
0.2.7+1.19
Fabric
0d74ec51d8da7b8f002fedea30d34a416c8bcf8f
\fzzy_core-0.2.7+1.19.jar

The server mods order: full server logs

Index
Mod
ID
Version
Type
File Hash (SHA-1)
File(s)
Sub-File

23
Terraform Wood API (v1)
terraform-wood-api-v1
4.2.0
Fabric
5b81eda6459643db8298e28dbc29cf28dced3894
/bewitchment-1.19-7.jar
/META-INF/jars/terraform-wood-api-v1-4.2.0.jar

133
FrozenLib
frozenlib
1.2.6-Fabric+1.19.2
Fabric
71f835f32763869c10c0f45b0e88ea8b54ec00c2
/FrozenLib-1.2.6-Fabric+1.19.2.jar

227
Fzzy Core
fzzy_core
0.2.7+1.19
Fabric
0d74ec51d8da7b8f002fedea30d34a416c8bcf8f
/fzzy_core-0.2.7+1.19.jar

278
Armourer's Workshop
armourers_workshop
2.0.11-dev.192
Fabric
05c872cf84b08063568947032daa648c09378012
/armourersworkshop-fabric-1.19.2-2.0.11-dev.192.jar

Why loading order is important?
The entity serializer relies heavily on loading order, when the loading order changes, the entity serializer id will be completely different.
The client entity serializers:

Entity Serializer ID
Registered Class
Mod ID

23
com.terraformersmc.terraform.boat.impl.TerraformBoatTrackedData
Terraform Wood API (v1)

24
moe.plushie.armourers_workshop.init.platform.fabric.proxy
Armourer's Workshop

25
net.frozenblock.wilderwild.entity.variant.FireflyColor
FrozenLib

26
net.frozenblock.wilderwild.entity.variant.JellyfishVariant
FrozenLib

27
me.fzzyhmstrs.amethyst_imbuement.entity.living.HamsterVariant
Fzzy Core

The Server entity serializers:

Entity Serializer ID
Registered Class
Mod ID

23
com.terraformersmc.terraform.boat.impl.TerraformBoatTrackedData
Terraform Wood API (v1)

24
net.frozenblock.wilderwild.entity.variant.FireflyColor
FrozenLib

25
net.frozenblock.wilderwild.entity.variant.JellyfishVariant
FrozenLib

26
me.fzzyhmstrs.amethyst_imbuement.entity.living.HamsterVariant
Fzzy Core

27
moe.plushie.armourers_workshop.init.platform.fabric.proxy
Armourer's Workshop

The entity serializer register entry:
net.fabricmc.api.ModInitializer.onInitialize
org.quiltmc.loader.impl.game.minecraft.Hooks.lambda$startClient$0(Hooks.java:55)
org.quiltmc.loader.impl.entrypoint.EntrypointUtils.lambda$invoke$0(EntrypointUtils.java:36)
org.quiltmc.loader.impl.entrypoint.EntrypointUtils.invoke0(EntrypointUtils.java:62)
org.quiltmc.loader.impl.entrypoint.EntrypointUtils.invokeContainer(EntrypointUtils.java:49)
org.quiltmc.loader.impl.entrypoint.EntrypointUtils.invoke(EntrypointUtils.java:36)
org.quiltmc.loader.impl.game.minecraft.Hooks.startClient(Hooks.java:55)
net.minecraft.class_310.<init>(class_310.java:459)
net.minecraft.client.main.Main.method_44604(Main.java:205)
net.minecraft.client.main.Main.main(Main.java:51)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:568)
org.quiltmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:551)
org.quiltmc.loader.impl.launch.knot.Knot.launch(Knot.java:84)
org.quiltmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:28)
org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:87)
org.prismlauncher.EntryPoint.listen(EntryPoint.java:130)
org.prismlauncher.EntryPoint.main(EntryPoint.java:70)

have any plan?

Realistically this means doing one of the following:

Adding a flag to force a different load order algorithm.
Changing the default load order algorithm to be consistent between mod ids.
Changing the load order to be alphabetical (or similar)

Basically this needs us to add different load order algorithms.
(In theory QSL could go in and sort entity serializer IDs, but that assumes you even use QSL)

QSL does have an api for syncing these, but it does require the mods to use the api. There is effectively no way to sync the handlers without additional information, and there should be an warning printed to the log when this happens.

https://github.com/QuiltMC/quilt-loader/blob/a358422d8b72956d5aeacad1d0444ccd769e17e0/src/main/java/org/quiltmc/loader/impl/QuiltLoaderImpl.java#L342
The entity serializer IDs is just one of problems, and any code that uses mixin may face this problem.
I think the problem is here.
When the size of the mod list is inconsistent, the seed will be different.

Mod load order is undefined on fabric as well (and intentionally shuffled in dev), and that should not change.
the solution is an API that avoids order-dependent problems, which quilt has, and fabric doesn’t. Fabric needs to get one (it’s one of the oldest issues on the repo), but in the meantime, mods need to avoid using  the dangerous vanillla method.
I have a mod that finds this dangerous behavior as well as a few others. I’ve reported most of the ones you listed already.

The shuffled(although I don't know why need this) list not is a problem, the big problem is server side and client have a different load behaviors.
If QSL maintains the same loading behavior on both side (even use filename order, like forge), the mod developers will found issues and fix issue (use some QSL API).
But now that because the QSL loading behavior completely unpredictable, you can't expect a developer to fix an quantum problem (maybe exist, maybe not exist).
The my problem is one of loading problems, even though I solved the problem by using the QSL API (it still has register order issue, I don't know how you guys can solve it), it still exists.
I think the loader job is ensure loading same order, but seem your think it's the mod developer job.

A minimal changes suggestion, splite two mod list by (client only, server), use the same seed for shuffle.
var clientModLists = modList.stream().filter(it -> is client only)...
var serverModLists = modList.stream().filter(it -> has server)...
int seed = serverModLists.hasCode();
Collections.shuffle(serverModLists, new Random(seed));
Collections.shuffle(clientModLists, new Random(seed));
modList = serverModLists + clientModLists


Lagoon UI: Deploy button hover effect missing

Describe the bug
The deploy button in Lagoon UI does not have a hover effect making the button look like it is disabled.

URL: https://ui-lagoon-master.ch.amazee.io/projects/[project]/[environment]/deployments

Thanks for the report!
We have another issue with the same general complaint, #1013. We have a new design there which includes hover states, so I'll close this as a duplicate.


Add support for explicit FailsafeExecutor compose method

Adds explicit FailsafeExecutor.compose method. Fixes #254.
Notes
While the new FailsafeExecutor.compose method returns a new FailsafeExecutor, the other methods in that class (with(ExecutorService), onComplete, etc) do not. So this results in a mix of mutable and immutable methods.
The existing mutable methods don't seem to be surprising for users, but allowing the new compose method to mutate a FailsafeExecutor after it's in use could be surprising. Or maybe not? Input welcome.
That said, mutable vs immutable config can be tackled separately when the API is (possibly) re-worked for thread safety.

If anyone has input on this PR, please share it. I'll be merging this soon.

This feels like a step away from what I've been advocating. Why add composition of FailsafeExecutor? Why not use a DSL (builder) to build a FailsafeExecutor instance?

@Tembrel Looking back at a previous comment, I had thought this was along the lines of what you were thinking as well. So instead of:
Failsafe.with(retryPolicy)
  .compose(fallback)
  .with(executor)
  .get(this::connect);

were you thinking to make it more of an explicit builder?
Failsafe.with(retryPolicy)
  .compose(fallback)
  .with(executor)
  .build()
  .get(this::connect);

You're right: both about what I was thinking, and about what most users are going to want to do.
I guess I'm reacting to the way the FailsafeExecutor API has to serve both "builder" and "executor" roles, but I guess that's not different from what I was asking for with policy construction.
So I withdraw the objection.


Questions about Sec.3.2, Guided Distillation

. Could you please give me some insight? how to obtain this conclusion in Eq. (23) that satisfies for any t' <= t? Thank you very much.

Hi! Thank you for proposing the question. It is not a very strict expression indeed. What I want to express here is that we are actually letting the consistency model to learn the weighted integral (weighted summation) of epsilon prediction on the trajectory. So the learning target will be linearly influenced by the epsilon prediction of all $t' \in [s,t]$.


Add VirtualBox minimum version warning to Vagrantfile

The documentation mentions that "VirtualBox provider, version 4.3.10 or greater is required.".
When testing CoreOs with an older version of VirtualBox I had difficulties getting etcd communicate in the cluster. After upgrading to VirtualBox 4.3.10 the issues went away.
This pull-request adds a warning when the VirtualBox provider minimum version is not met. Sadly it's not possible to get the provider used from inside the Vagrantfile (https://github.com/mitchellh/vagrant/issues/1867) so the warning will show even if the vmware provider is used (and VirtualBox installed).

Please reopen this if you have a chance to address the comments above


Cleanup cw2981-royalties

With new CollectionInfo with RoyaltyInfo this should be cleanup. It may even be covered optionally covered in cw721 - TBD.
https://github.com/CosmWasm/cw-nfts/blob/e63a7bbb620e6ea39224bb5580967477066cb7ae/contracts/cw2981-royalties/src/lib.rs#L26-L46

removed contract and solved in #156


can use easegress to build high-availability kubernetes？

if yes, how to do it?

we have helm charts for k8s deployment, please refer: https://github.com/megaease/easegress/tree/main/helm-charts/easegress

we have helm charts for k8s deployment, please refer: https://github.com/megaease/easegress/tree/main/helm-charts/easegress

I want to build high-availability kubernetes, with like keepalive & haproxy. can easegress replace haproxy?

I don't think Easegress is a replacement for haproxy, Easegress could do load balance, but it is focusing on traffic orchestration.


feat: Filter file paths by allowed extensions

Hi, this pull request targets issue #84. This is my first rust open source contribution since I started learning, so it certainly is far from perfect or idiomatic.
Feel free to provide hint

Hi @christophbeberweil @egion  thanks for taking time out to contribute I appreciate it :heart:


Social discussion links

Hi!
I had an idea that I was thinking about implementing on my site that I thought would be worth suggesting for the theme in general. A number of authors I've read submit many of their posts to news aggregation sites like Hacker News and Lobste.rs for discussion. Some sites do this rather than supporting commenting, while others do and presumably submit posts mainly for increased visibility. I think it'd be cool to support this natively in the theme by allowing users to specify a hackernews and lobsters content parameter so that a "continue the discussion on Hacker News/Lobsters" link (or button) could be conditionally included at the bottom of the article. Thoughts?
If this was confusing, I can find some concrete examples.

I figure I might as well clarify with an image, so here goes (taken from Anish Athalye's blog):

Perhaps something below the title like this? Not too overbearing, and conditionally included for social site links added by the user.

Hi ! Thank you for the issue !
I think that an awesome idea, it could be really greatly integrated to the theme. It is not too complicated and flexible, I like that !

Sounds great! I'll get a pull request going, probably later today or sometime tomorrow.

Got bogged down for a few days, but the PR has been made!

Implemented in #38.


PDQm_101: Are there some elements we can get global agreement should be marked as R2

PDQm_101: Are there some elements we can get global agreement should be marked as R2 (aka, Must-Support - required to be returned if known)?

did not receive any comment.   Seems should just move this to closed, later revisions can always ask for constraints.


this version supports for Keycloak SAML 2.0

Am investigating  how to integrate keycloak SAML 2.0 with asp.net application.. Is this  Keycloak.Net version supports?  and Please provide some sample code would helps me lot.

Look here for SAML support: https://www.keycloak.org/docs/6.0/server_admin/#saml-clients


Remove $ sign from code examples to avoid prompting errors/Improve the Docs

Code of Conduct

[X] I have read and agree to the GitHub Docs project's Code of Conduct

What article on docs.github.com is affected?
All docs pages where shell includes $ (wherever applicable).

What part(s) of the article would you like to see updated?
The commands displayed within the docs pages contains the $ sign in the first place. Since there is no copy button 📄  available next to the command, a user may copy the entire command along with the $ and paste it into the shell or local terminal that prompts an error to the user.
We should Remove the $ from the commands.
Additional information
No response
https://github.com/github/docs/issues/21060#tasklist-block-5a673d88-8702-4200-af2b-62553f477804

Which File Bro ?

I would love to work on this

Thanks so much for raising an issue, @codewithdev! I agree this isn't a good experience as it currently is. As it happens we're already looking at this precise issue internally and it's being discussed within the team, so I'll close this issue out.
Thank you for your interest and passion in improving the GitHub Docs :sparkling_heart:


Delete request implmeneted

delete request implement
move title bat to separate component
add styling locally from component

fix table not scroll able
make everything flex

don't assert proxy.is_some() during development.

please merge


[Home][ArtworksRail] Favorites route + fix for WorksForYou

[x] Route 'Recently Saved Works' in emission => Favorites Artworks tab in eigen
[x] Route 'Works by Artists You Follow in emission => Notifications tab in eigen

I tested these in quicksilver and they work so I don't have to make any new routes after all! 😄
Fixes https://github.com/artsy/eigen/issues/1818

          1 Error

:no_entry_sign:
No CHANGELOG added.

          1 Warning

:warning:
The following files do not have tests: lib/components/home/artwork_rails/artwork_rail.js & lib/components/home/artwork_rails/artwork_rail_header.js

  Generated by :no_entry_sign: danger

woooop


Feature/kskip-ngram

Implemented k-skip-n-grams. Has convenience functions for bigram, trigram, ngrams, everygrams and skipgrams.
Provides the same output as the equivalent nltk functions - although nltk does generate duplicates sometimes which are omitted here. The iterator consumes the input iterator only once and holds a window of items to generate the grams. The window is stepped forward as it consumes the input. It also correctly generates left or right padding if specified.
Currently the iterator outputs Vec<Vec<&str>>. I'm unsure if this is desirable or the function should join the items into a string to output Vec<String>. e.g. Currently it does: vec![vec!["One", "Two"], vec!["Two", "Three"] ...] but it might be desirable to have vec!["One Two", "Two Three"].
The nltk implementations tend to consume the input sequence multiple times and concatenate the output (for example everygram). I wanted the struct to consume the input iterator only once and provide an output. This however considerably complicated the code. I have tried to refractor it so it is as readable as much as possible but it would be good to get a second eye on it.
There is also still the question of how to chain the different components together (which links to #21). Currently the transform method takes an input iterator and provides an iterator as output which can be consumed by the user.
Todo:

[x] Add Python interface
[ ] Benchmark against nltk
[ ] Add function for character ngrams
[ ] Further documentation

Some more information to provide some background...
Features:

"ngram" - for example if n=2 it produces bigrams for example [["One", "Two"], ["Two", "Three"] ...]
"everygram" - all ngrams within a min_n and max_n range. e.g. min_n=1, max_n=2 [["One"], ["One", "Two"], ["Two"], ["Two", "Three"] ...]
"skipgram" - skip a max total of k items. e.g. if n=2, k=2: [["One", "Two"], ["One", "Three"], ["One", "Four"], ["Two", "Three"], ["Two", "Four"], ["Two", "Five"]]
padding - pad left or right items. e.g. if n=2, k=2, pad_left="": [["", "One"], ["", "Two"], ["", "Three"]

An overview of how KSkipNGramsIter works:

On initialisation of the struct build_window populates the first few items into a window of items
The KSkipNGramsIter then has 4 modes which is executes in order exhausting each one.
The first mode is PadLeft which generates the left padding items from the pre-populated window. It essentially iterates through a number of parameters which generate different samples of items from the window:

n - the number of items i.e. 1, 2, 3. e.g. [["One"], ["One", "Two"], ["One", "Two", "Three"] ...] The range defined by min_n and max_n
p - the amount of padding. For example the gram ["<s>", "One", "Two"] has padding=1, n=3. The range is between 0 and max_n-1
sample_iter - this is a separate iterator which is initialised for each n,p combination. When there is no skipping (max_k=0) it just produces the indexes of the first elements i.e. ["One", "Two"]. But when skipping is enabled (k>0) it iterates through all possible combinations. For example if k = 2 (n=2, p=0) it would produce the index's of [["One", "Two"], ["One", "Three"], ["One", "Four"], ["Two", "Three"], ["Three", "Four"]]

Second mode is Main. For each step in the window it iterates through all possible n's and gram skipping (sample_iter i.e. k>0). Then the window is stepped one forward.
Third mode is MainEnd. This samples from the last window (when the input iterator has been exhausted). This is only necessary when n has a range (i.e. min_n != max_n). Here an offset parameter is incremented which simulates a smaller window .
Four mode is PadRight. This is similar to PadLeft as the name suggests.

Let me know if you require further clarification or information. Happy to help and take feedback 😃

It's very nice work, I'm just a bit concerned about the complexity of the implementation for future maintenance.

Fair point. I will implement a simpler version and then we can compare performance. You would also loose the ordering of tokens but this isn't such a big problem.

I have changed the approach and it now chains ngram or skipgram iterators together. Overall its much simpler to understand. Only issue is that you loose the ordering of the tokens as said before but thats not such a big issue.
I did some simple benchmarking which aren't included in this pull request and the performance is actually 2x faster which was surprising as the input iterator is split using tee and multiple caches are used. So overall much better. Let me know what you think.

I have added the Python API. Currently it takes a list and output a list. Do we want the Python interface to take a iterator as input and produce an iterator?

Thanks a lot @joshlk ! I'll review in more detail tomorrow but after a superficial glance this version does significantly less complex.

Do we want the Python interface to take a iterator as input and produce an iterator?

I think a list is fine. That's what we are doing for tokenizers. If we change that later we should do it later everywhere, but I suspect that lists won't have much performance impact and are easier to manipulate.
There is just a linting issue in the CI.

I merged one minor suggestion in the test and then had to fix issues it introduced, sorry )
There is indeed a few clippy errors that it would be good to fix,

warning: unneeded `return` statement
   --> src/token_processing/mod.rs:339:9
    |
339 |         return Some(Vec::from(self.window.clone()));
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return`: `Some(Vec::from(self.window.clone()))`
    |
    = note: `#[warn(clippy::needless_return)]` on by default
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return

warning: unneeded `return` statement
   --> src/token_processing/mod.rs:446:9
    |
446 | /         return match next_sample {
447 | |             // Generate and return samples using self.sample_iter
448 | |             Some(sample_idx) => {
449 | |                 let mut sample = Vec::with_capacity(sample_idx.len());
...   |
489 | |             }
490 | |         };
    | |__________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
    |
446 |         match next_sample {
447 |             // Generate and return samples using self.sample_iter
448 |             Some(sample_idx) => {
449 |                 let mut sample = Vec::with_capacity(sample_idx.len());
450 |                 for idx in sample_idx.iter() {
451 |                     sample.push(self.window[*idx].clone());
  ...

error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type
   --> src/token_processing/mod.rs:451:33
    |
451 |                     sample.push(self.window[*idx].clone());
    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: `#[deny(clippy::clone_double_ref)]` on by default
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref
help: try dereferencing it
    |
451 |                     sample.push(&(*self.window[*idx]).clone());
    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: or try being explicit if you are sure, that you want to clone a reference
    |
451 |                     sample.push(<&str>::clone(self.window[*idx]));
    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Otherwise we can merge, unless you wanted to add other things?

Though in terms of API it's maybe not ideal that if there are not enough tokens e.g. for KSkipNGrams(min_n=1, max_n=1, max_k=1) (here 2) it would error. It's a very typical situation to have few or zero tokens for some documents and it might be better to return an empty list.
Also I'm actually somewhat confused as to why KSkipNGrams(min_n=1, max_n=1, max_k=k) returns the input as is for any k. I would have expected skip grams to only make sense for max_n >=2 and raise an error otherwise, or am I missing something?

Though in terms of API it's maybe not ideal that if there are not enough tokens e.g. for KSkipNGrams(min_n=1, max_n=1, max_k=1) (here 2) it would error. It's a very typical situation to have few or zero tokens for some documents and it might be better to return an empty list.

Agreed. I have changed it so that empty input or input that is smaller than n gives an empty output. I have added tests for these cases. On a side note, strangely "".split(" ") does not provide an empty list in rust but gives an output of [""]. This could be one to watch out for.

Also I'm actually somewhat confused as to why KSkipNGrams(min_n=1, max_n=1, max_k=k) returns the input as is (with an extra list container) for any k. I would have expected skip grams to only make sense for max_n >=2 and raise an error otherwise, or am I missing something?

Because k can equal 0 which doesn't not require max_n >=2.

cargo clippy

I went through the cargo clippy suggestions which were very useful. Thanks for bring my attention to that tool. Might be worth adding into the CI toolchain. There were a few suggestions for other files in the package but I left those alone.

Otherwise we can merge, unless you wanted to add other things?

Do we want to change CharacterTokenizer so it uses this n-gram interface as the backend? I also noticed it uses char_indices to split the string into characters, would it be better to use grapheme_indices from the unicode segmentation package?
Also, do we want to include the connivance methods that are included in NLTK in python and rust? (e.g. bigram, everygram ...)

benchmark

I have created some benchmarks in Python and the vtext functions are currently considerably slower than the nltk equivalents. Not sure why this is the case at this point. Maybe to do with the conversion of strings from rust to python. This was the output:
# Testing 19924 documents
vtext: everygram: 133.95s [0.7 MB/s, 54 kWPS]
nltk: everygram: 5.06s [18.0 MB/s, 1419 kWPS]
vtext: skipgram: 498.58s [0.2 MB/s, 14 kWPS]
nltk: skipgram: 18.01s [5.1 MB/s, 399 kWPS]

This was the output:

Are you sure you run setup.py install and not develop to be in release mode?

Do we want to change CharacterTokenizer so it uses this n-gram interface as the backend? I also noticed it uses char_indices to split the string into characters, would it be better to use grapheme_indices from the unicode segmentation package?

Good point. Let's keep it for now and consider that in a follow up PR as this one is already getting quite large.

Also, do we want to include the convenience methods that are included in NLTK in python and rust? (e.g. bigram, everygram ...)

Well NLTK doesn't really a have too homogeneous and consistent API across modules, as far as I can tell so I would be careful not too adapt it too closely. But we certainly need to think to how to make all these parts work smoothly.

text functions are currently considerably slower than the nltk equivalents.

Hmm, yes I can confirm with setup.py install. We would need to profile (e.g. with  flamegraph to understand what's going on. I would say it's shouldn't be rust->python conversions since we are doing that for character ngrams in  CharacterTokenizer and that's working fine in Python. I can look into profiling as well in the next few days..
Another unrelated thing I was wondering about, it wouldn't be faster and to easier map tokens to an index at the beginning, pass those usize indices around and finally recover the list of n-gram string tokens at the end. Technically &str should be  equivalent I guess but we would have less issues with lifetimes and potentially the cost of making copies.


Enable full tests for python and node for build-macos-latest

Description of changes:
Python and Node tests for build-macos-latest are now the same as for ubutu build

Please add the same to amazon linux and change it to run the tests on all engine versions in the matrix like ubuntu latest.
I think since gh action added arm runner as well we can add arm to the tests, but maybe it is for post-ga, ill you guys decide. To me its sounds like it is important as adding mac.


H3 icon in custom toolbar is not displayed

I'm using vue2-editor with custom toolbar but H3 icon is not displayed in the toolbar, it shows an empty space that actually behaves as h3 when I click it.
This is my code:
<template>

    <vue-editor
    :editor-toolbar="customToolbar"
     v-model="content"></vue-editor>

</template>

CodeSandbox

This issue is stale because it has been open for 60 days with no activity.

This issue was closed because it has been inactive for 7 days since being marked as stale.

Anyone having this issue :
You can still use the headers h3, h4 ... with the following customToolbar option :
  [
    { header: [false, 2, 3, 4] }
  ],


[WIP] Add Clair package

This adds a Universe package for https://github.com/coreos/clair, the container vulnerability scanning tool from CoreOS/quay.io.
An example for dcos/examples will be prepared asap. Do not merge until then.

Example PR is here: https://github.com/dcos/examples/pull/121. I'll let you know once the package should be merged. Thanks.

This can be merged now, please check accordingly. Thanks!


e2e: add openQA test for QAM

Do a quick and simple boot test of the ISO in openQA to validate latest version of SLE Micro packages in Elemental.

This is esp. important to automate releases and verifying that SLE Micro updates don't break Elemental.

PR created in openQA tests repo: https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/17122.

Set it as blocked until the PR/MR are merged (still under review).

PRs/MRs have been merged.


Mention the need to set email address for edirect

In my experience, not setting EMAIL leads to some weird errors as elink tries to compute an email address, gets a weird result and makes a malformed URL.

Thank you for this key instruction in the readme @pvanheus !  I merged it with minor revisions.


Qt-whisper for real-time transcription

Hello, how are you. I want to use this qt wrapper in my qt application. Here is the issue, whisper.cpp has a stream.cpp function which we can use to perform real-time transcription with the ggml model. Can this also be achieved right now, by using the qt-whisper wrapper.

Your help @radkoder  would be very much appreciated in this regard

Hi,
Currently it's not supported - but it could be easly added as there are some elements that are already in place - like division of sample gathering vs inference.
Currently how things are set up: VAD collects all the samples as they come and if it decides that speech has ended it sends whole batch to the inference.
Quick and dirty way to add "streaming" would be to add condition to the VAD send samples to inference if it collects enough of them (for example 5s worth).
Better way would be to:

Bypass the current crude VAD and stream samples as they come to the inference (in batches about 5s long , with some overlap)
Add a "prompt" argument to the inference which would help model to make correct predicitons
The  resultReady signal would be fired multiple times with parts of speech as an argument then.

If you have someone moderatly skilled at C++ then I guess they could implement this in about 2-3 days, which I would welcome as a contribution.  Otherwise I will probably get back to this project in a couple of weeks and implement something like this.

@radkoder how are you. Any improvements in the realtime issue.


[Circletracer] Add style.css

Apply the styles of all classes and tags used in Circletracer.
ONE-vscode-DCO-1.0-Signed-off-by: Donggil Lee<EMAIL_ADDRESS>

from draft #179
from issue #66.

Cause of out of office today, so I'll take @CODe1995 out of the review.

As @CODe1995 is out of office, let's merge without his approval


Indexversion

@Gouthamve @brian-brazil @grobie @Bplotka
Test is a bit hacked as it just overwrites the existing data. Should be fine for this intermediate test though – alternatively we can write th 100 LOC required to copy a dir in Go of course :P

lgtm

Just discussed offline, that we'll try to make sure we put some sort of a fail safe mechanism in place to skip version 2 for the meta format, as if one would upgrade from 2.1.0 to the "next" meta version 2 then there may be possible conflicts. Therefore we should skip version 2 when we bump the meta version and go straight to 3 to avoid possible conflicts like that.

All addressed.


Trying to get date between formerly faked date and now

This is the code:
$created_at = $faker->dateBetween('-1 month', 'now');
$updated_at = $faker->dateBetween($created_at->format("U"), 'now');

I've tried several versions of the above and nothing seems to work. Any ideas would be helpful.

@mdhas for support related questions i would like to forward you to stackoverflow where this is not a bug on its own.

@mdhas
Perhaps take a look at https://stackoverflow.com/questions/tagged/php+faker!


Minor UI changes to the Dashboard

The visual changes here are fairly minor, but there are a few differences under the hood – I'll list those below.
Before
![before](https://cloud.githubusercontent.com/assets/42478/9520103/75d98394-4cc4-11e5-8798-2c6a99221dda.png)
After
![after](https://cloud.githubusercontent.com/assets/42478/9520106/78c9cbae-4cc4-11e5-8e59-2b9817928029.png)
Changes

Per-graph popups now have slightly cleaner formatting: inputs and controls use more of the available space.
Tidied up some of the spacing between elements to be more uniform, same goes for the fullscreen view.
Slightly improved use of Bootstrap classes like row and col-....
Some whitespace changes - sorry for not keeping these separate.

Please let me know if you'd like me to squash/tidy these commits. I left them separate for now, in case you take particular issue with any of them individually. There's probably more where this came from, but I thought I'd keep it simple for now.
Thanks!
/cc @juliusv @stuartnelson3 @grobie

FYI: I haven't run the tests yet!

have you checked visually between safari/chrome/firefox?

Still to do:
[ ] Check in Safari, Chrome and Firefox
[ ] Run the tests

Looks good in Firefox and Safari.

@samstarling Thanks! Taking a closer look now.
I noticed this on the index (directories) page:

The action icons look different / broken...

Hmm, same for the actions on a graph, but not sure yet why exactly.

The problem went away for me with a fresh checkout of PromDash. Apologies.

Getting this weird extra element underneath the expression in the Datasources tab of the graph now:

Looking at its DOM, it seems to be related to the typeahead autocomplete plugin...

@juliusv @samstarling the problem with the typeahead is due to it being upgraded in a previous PR. Looking at the source code, the upgraded version of the typeahead assumes a version of angular higher than what we are using in promdash.
a previous attempt at upgrading angular was abandoned after we encountered weird, linux-only errors.
the easiest solution would be to try to upgrade our copy of angular again.
the more difficult solution is either to edit our vendored copy of ui-bootstrap, or roll back to a previous version.

I noticed this PR solves the scrollbar part of https://github.com/prometheus/promdash/issues/453.
Since the autocomplete problem exists with or without this PR, I'll merge this to fix at least the scrollbar.
Thanks!

@juliusv Thanks! If there's anything here that looks like it's broken something, I tried to make the commits small and atomic, so hopefully you'll be able to pick out the "bad" commit if things break. I did also notice it had the side effect of making the drag-and-drop rearrangement a little smoother. Give me a shout if things look broken, I'm aware I didn't do too well with this last time :smile:

@samstarling No problem, thanks for this :)


angular2-recaptcha not working in production mode (RC5)

Bulding any app using angular2-recaptcha with angular2 cli console command: ng build --prod  will build, but will throw strange error of random component in runtime.
It's currently impossible to publish an app with this package (RC.5).
I've been trying to figure out what caused the problem in my production for several hours, until remove the imports to this package..

Please share more details. What error do you see?

This does not look like an error generated by this module. Please try again with the RC6 updates.


Consider changing the title in index.html from "libGDX application" to the project name

I can sort of understand why the title in html/webapp/index.html was made constant, but I feel like the biggest reasons to change this are that the (currently - don't know if liftoff will replace it in the near future) official gdx-setup does use the project name as the title (as an aside, another thing I noticed when I tested this was that gdx-setup would allow spaces in the project name while liftoff doesn't) and also because it would be more consistent to use the project name since the other platforms do for their equivalents.

That's a good point... I can't even think of a time I changed that index.html programmatically, except by using Gradle filters to conditionally remove the superdev button. Filters might be the best way here, too...