Add logic for checking config.ru file for port settings

Will resolve #8
This code is using the  add-bindport branch on occam. See https://github.com/paketo-buildpacks/occam/pull/60/files for the occam changes.
I realize the start command is complicated, I am open to other ideas for simplifying this

In a weird state.
Rack version 1.6.0 has an issue where if the port is set in config.ru, it overrides an environment variable being set regardless of what the start command is.
Using a rack version above 1.6.0 allows us to follow the order of precendece: $PORT env var, config.ru, default 9292. However, for some reason the app is not reachable even though the container logs show that the container is up on the correct port

For the logic in the start command, could we simplify it by doing some parsing of the config.ru?
We could read the file, looking for that special comment line that starts with #\. If we see that line, and it contains -p <int> or --port <int>, then we just don't include the --port flag on the start command. If it does not, then we include it as --port ${PORT:9292} allowing it to fallback to the default if $PORT is not set.

@ryanmoran that's what I was thinking too, but according to the issue the $PORT var should take precedence over the config.ru file port setting. There's no way to check that port variable at build time, so the only work around I could think of was to check $PORT in the start command.
That being said, it seems reasonable to use the config.ru port if it's set over $PORT, since that would be something the user would add intentionally. What do you think?

@sophiewigmore I see. Maybe what we can do is parse that #\ line to find the value given to -p or --port and use that as the fallback value. For example, if I have the following in my config.ru:
#\ --port 1234

Then the start command becomes bundle exec rackup --port ${PORT:-1234}.
And if there is no --port or -p flag in the config.ru, then that fallback value remains 9292.
Would that work?

@ryanmoran  I like that, good idea!!!


Fix typo in Typography initializers

Fix the typo in the documentation comments for both of the Typography initializers.
Currently they read:
    ///   - chaacterSpacing: letter spacing to use (defaults to `0`)

Please correct to:
    ///   - letterSpacing: letter spacing to use (defaults to `0`)

Yes, please do! That’s a great first issue, and it would be our first external contribution. Just fork it, make the change, and submit at PR. Let me know if you have any questions.
Best,
Mark
On Thu, Sep 8, 2022 at 17:48, taniakalaitzidis @.***> wrote:

Hi there, I would like to take this on as it's my first time contributing. Thank you!
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>


Name of user ?

Is it possible to get the name of the user who is interacting with the bot?

Please check out this issue https://github.com/hyperoslo/facebook-messenger/issues/26

@gauravtiwari Thanks for the info! We used this solution for our bot : https://github.com/rianfloo/rails-gustave/ but it looks there is an update of Facebook Messenger that allow you the collect firstname and lastname : ```

Is it possible to get all info thanks to your gem ?

What is MessengerExtensions, @rianfloo? :-)

the third question about getting name of user 😅

@jgorset : In the Facebook changelog: Added Webviews and Extensions to get user id for personalization, close the webview and call payments in the browser.
URL => https://developers.facebook.com/docs/messenger-platform/send-api-reference/webview

Okay, that's a JavaScript library provided by Facebook. It's the equivalent of using a library like Koala for Ruby. A bot's concern is to communicate with the user, so that's why we're not providing this feature in this library.


Bug in TTML parsing for div with whitespace

What version of Shaka Player are you using?
Demo v 2.0.2-debug + Latest master (2017-01-05)

Can you reproduce the issue with our latest release version?
Yes

Can you reproduce the issue with the latest code from master?
Yes

Are you using the demo app or your own custom app?
demo app

We had own content with empty ttml subtitles segment inside mp4 segments.
It contains a a body with an empty div element like
<body style="s0">
   <div region="r0">
   </div>
 </body>

The demo player shows Shaka Error INVALID_TEXT_CUE.
I've tracked this down to ttml_text_parser and its "Disregard empty elements" which does not allow white-space in an empty div.
I've made a patch and added a unit test for the patch. Will submit them.

Thanks!  Looking forward to your PR.


[Feature Request]: Creating API/fetching in card status

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description

In this i will create a API for fetching the total users and api which calculate the total posts in style share uploaded till now.
and showing in the style card at main dashboard page.
Also i will add extra card which calculate the visits and page view i will rename it.
Page views => when user reload the page.
Visits => when user will open in new tab. (For this i have to create two api)
Total Api's will be 4.

Use Case
Admin Analytics
Benefits
Tracking
Add ScreenShots
Eg:

Priority
High
Record

[X] I have read the Contributing Guidelines
[X] I'm a GSSOC'24 contributor
[X] I have starred the repository

how will you calculate page views

how will you calculate page views

I will take reference from this youtube video => https://youtu.be/mtuYmm2ITvI?si=wepoQVC7BX0yXxqT

I am thinking of only adding visits to the website and for that, a simple middleware needs to be added here which updates website visits.
https://github.com/VaibhavArora314/StyleShare/blob/93b5cb29aee44c2e9e3a155852d10a8c5e653432/backend/src/app.ts#L17
what do you think?

Okay i will not add the views, i will consider visits only


Question : Why can't I override default properties once set in config.properties ?

Hello,
I'm using hystrix. When I configure config.properties on the classpath with the property set to 1234 than setting the prop like below fails
@Test
 public void should_change_confiprop_default() {
 String key = "hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds";
 assertEquals("1234",String.valueOf(ConfigurationManager.getConfigInstance().getProperty(key)));
 ConfigurationManager.getConfigInstance().setProperty(key,"5678");
 assertEquals("5678",String.valueOf(ConfigurationManager.getConfigInstance().getProperty(key)));  //fails :-(
 }

It's seams that when doing ConfigurationManager.getConfigInstance().getProperty(key) it will retreive the property for the first source having the key.
 Snippet from com.netflix.config.ConcurrentCompositeConfiguration.getProperty(String)
  public Object getProperty(String key)
    {
        if (overrideProperties.containsKey(key)) {
            return overrideProperties.getProperty(key);
        }
        Configuration firstMatchingConfiguration = null;
        for (Configuration config : configList)
        {
            if (config.containsKey(key))
            {
                firstMatchingConfiguration = config;
                break;
            }
        }

        if (firstMatchingConfiguration != null)
        {
            return firstMatchingConfiguration.getProperty(key);
        }
        else
        {
            return null;
        }
    }

confList is : [org.apache.commons.configuration.SystemConfiguration@7fc229ab, com.netflix.config.DynamicURLConfiguration@2cbb3d47, com.netflix.config.ConcurrentMapConfiguration@527e5409]
The config.properties looks like to be loaded in the DynamicURLConfiguration [value 1234] while when i'm setting the property it happens in the last one : ConcurrentMapConfiguration [value 5678]
So the getproperty will always be returned from the DynamicURLConfiguration.
I don't see how I can change this behavior.
Thanks for your help.

DynamicURLConfiguration takes precedence over the setProperty() in configuration layers. However, if you really want to override DynamicURLConfiguration, you can use setOverrideProperty(). But remember if you want to be able to change configuration without pushing code, you don't want to override the DynamicURLConfiguration in your code.

Sorry but I don't get it. I have a config.properties file for some basic default for hystrix.
Now we 'd like a rest service to momentarily change the configuration on the fly.
How would I code that ?
I tought
ConfigurationManager.getConfigInstance().setProperty(key,value);

Would do. but it doesn't when using config.properties. If I don't use config.properties it has the behavior I except. What am I missing ? Thanks.

ConfigurationManager.getConfigInstance().setProperty(key,value); only changes the property in local configuration. But REST service is not part of Archaius. I think you configure DynamicURLConfiguration to point to config.properties? And DynamicURLConfiguration takes precedence over setProperty(). That's why your config.properties always shows up. You can write a simple REST service to host your config.proeprties and point DynamicURLConfiguration to that REST service. That should give you what you want.


Feature/read odlc

JSON File and JSON File Reader
JSON File for Bottle Attributes
Converts into array of dictionaries

Good first issue for someone to take up the fixes to this PR


Rethinking 2, Chapter 4, Code 4.39, initialise x to range of weights

I noticed that the plots for code 4.39 and 4.40 did not match the plots in the book.
I have initialised 'x' to hopefully reflect the 'R' code in the book.
I have run the pre-commit checks.
Is it preferable to submit a pull request with a notebook containing the generated output?

Thanks @madian44 - yes, if the code changes the output then I think it'd be better to re-run the notebook (I think most of the ones in this folder are quite fast to run anyway)

I've updated the output in notebook

Fixed conflicts with master


Added allowed-url option for secure allowance of custom redirection URLs

That is a small change which adding one option - "allowed-url" which able user to set regex for validate "rd" option instead of just replacing it to '/' if it contain absolute path.
Why?
Because if you have many services on different domains (as example - kubernetes cluster with tens of services) and want to protect them, you don't want to deploy many oauth2_proxy one per domain, you want to use one oauth2_proxy and validate redirection URLs for make redirection secure.
Example of usage
Adding option --allowed-url=.+\.internals\.example\.com will allow you to use one proxy for all services in subdomain .internals.example.com.
Is it tested?
I built a container with that change - onlinehead/oauth2_proxy:2.2.1 and tested it on my K8s cluster in pair of GitLab as Oauth provider. And looks like it working OK.
P.S. I am not sure that name of the option is right.

This is indeed a popular request. The current best implementation might be in #464

@ploxiln thanks for a link!
But, I think my implementation with regexp is a bit more useful because allow to set up a mask once instead of updating settings for every service and making possible to use some automation which creating new services with new FQDNs without pain with updating of relations like auth proxy.

But, I definitely have to add a test for my implementation and add support of set an option from the environment variable, looks like many peoples need it.

The implementation I linked to does support subdomain wildcard. That should cover most use cases.
I don't think supporting an environment variable is important. It's important for secret values, but not for other misc config options.

@ploxiln yes, you are right, I found that check. And I see that change in 'OAuthCallback' function is missed, because it has a same block with a check or redirection.
Anyway, I will add tests to my commit and, maybe, move detection to a separate function, for making that tests simpler.
Although I like regex and shorter implementations more than just strings with hidden magic in code, the choice is yours:)
In my cases, it will work anyway, at least now.


Do not require decimals when transfering SPL tokens

It's not needed so we shouldn't require it.

I have no idea why we have it left

Can you rebase?

I copy your commit and run them locally


build(deps): Upgrade to TypeScript 5.4

Summary

See commits
Test plan

Green CI
Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information
N.A.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

694 of 694 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.4%) to 96.417%

Totals

Change from base Build<PHONE_NUMBER>:
0.4%

Covered Lines:
4589

Relevant Lines:
4688

💛  - Coveralls


(edinburgh) Delete event func for Redis misses the deletion of pushed and device collection

#2076 in Edinburgh.
Please see #2094 for verification steps and discussion on design.
Signed-off-by: Brandon Forster<EMAIL_ADDRESS>

recheck

Codecov Report

Merging #2095 into edinburgh will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           edinburgh    #2095   +/-   ##
==========================================
  Coverage      16.98%   16.98%
==========================================
  Files             78       78
  Lines           8829     8829
==========================================
  Hits            1500     1500
  Misses          7179     7179
  Partials         150      150

Continue to review full report at Codecov.

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

@brandonforster Thanks for the diligence in creating this PR. However we won't be releasing any more Edinburgh images. Fix only needed in fuji and master.


Marshaling Balances Is Broken

Looking into the actual files on disk, some of the object files haven't serialized balances correctly, instead of quantifiable amounts being json numbers, instead they're strings expressed as fractions (presumably this is the default serialization of the Go big.Rat type.
You can see an example of the problem here:
https://github.com/marstr/envelopes/blob/b90136b7e5611a429ae09c3785f4858207fddfb9/persist/filesystem/testdata/test5/.baronial/objects/de/e71d098f58bf5005d5bf3844b6c23f63e92195.json#L1C20-L1C29

Searching the repository, the only occurrences of this problem (as modeled by the Regex "\d+/\d+") are in the "testdata" folders, and all of those are on marshaled Account instances.


ajax() returns Observable<{}> instead of Observable

RxJS version: 5.0.0-beta.9
Code to reproduce:
const source = Observable.ajax({ method:"GET", url: "myurl" });

Expected behavior:
Mouse over source to see that it's type Observable<AjaxResponse>
Actual behavior:
It's type Observable<{}>.
Additional information:
What might be going on is that AjaxObservable<T>.create has
      return new AjaxObservable(urlOrRequest);

and I think it should be:
      return new AjaxObservable<AjaxResponse>(urlOrRequest);

As a workaround I was able to do:
const source = Observable.ajax<AjaxResponse>({ method:"GET", url: "myurl" });

... but ajax shouldn't really take a type at all and I'm not sure why it even can.

Seems it makes sense. Let me look bit more and create PR if necessary.

I've looked this into bit more to see if it's possible to get rid of generics for ajax creation method, found it's bit tricky.

but ajax shouldn't really take a type at all and I'm not sure why it even can.

: Main reason for this is AjaxRequest allows resultSelector makes AjaxObservable to emit other than AjaxResponse,  Observable.ajax<AjaxResponse>({ method:"GET", url: "myurl" }) is actually valid way to specify types.
While it's expected to allow generics to AjaxObservable I'm also feeling type definitions can be improved bit better to work with resultSelector as well as default, not sure about immediate changes though. I'll leave this open for couple of more days to get idea around.

Ah but here's the thing -- ajax, which is to say AjaxObservable.create -- isn't written as a generic function. That's why it's so weird that you can even give it a type. I think what's happening is that TypeScript "needs" a type for that AjaxObservable constructor, and so it lets you add one farther up the stack. Which sure sounds like a bug in TypeScript, but that's a different issue for a different rep.
On the larger subject, my two cents is this: let ajax continue to return the full AjaxResponse, just like in jQuery. It shouldn't be a generic.
If you want to access a REST JSON response as a type, you don't need to resort to resultSelector. You can just do:
const source = Observable.ajax({ method:"GET", url: "myurl" }).map(ajaxResponse => ajaxResponse.response as TheTypeOfTheRestResponse);

Ditto if you just want part of the response:
const source = Observable.ajax({ method:"GET", url: "myurl" }).map(ajaxResponse => ajaxResponse.response["foo"]);

Both are simpler and clearer (and more Rx-y) than the equivalent resultSelector code, no?
tl;dr: let ajax be ajax

I don't personally see a ton of value in the result selector (after looking at the code) which would make this problem very easy to solve.
I'll leave it up to @blesh and @kwonoj though.

I'm also leaning towards to drop off resultSelector, just unsure if there's solid usecases for those. (But as @billba mentioned, most cases map can resolve selections..)

I've filed PR #1813 to leverage as discussion point. Basically PR drops resultSelector and ensure type delivered to subscription, encourage to use map where selection needed.


Get mono building on darwin

Tested on OS X Yosemite.

Nice! Want to add darwin to meta.platforms so Hydra builds it too?

@copumpkin Ah, certainly. Forgot I had allowBroken = true.


chore(main): release 0.0.14

:robot: I have created a release beep boop
0.0.14 (2024-08-05)
Code Refactoring

Pull in core locking msg updates. (94df97e)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

v0.0.14
:sunflower:


Add definition for Operation to spec 3.0

Since version 3 elevates operations to a top level component (and spec v3 Operations have a different semantic compared to 2.x) they should have a dedicated definition in the definitions section. (Additionally, operations could also be added to the concepts)
I do not have a fleshed out proposal yet (I may create a PR if I find the time to do so), so feel free to propose a definition or create a PR.
Suggested starting point:

An operation describes a specific action an application can take to interact with the async api.
Operations are performed by sending (or receiving) messages to (or from) channels.

Related Issues:

#980
#618 Issue about the changes of operations

Hey, yes, you're right, we need it. I think your text is ok.
@smoya @fmvilas @char0n @dalelane thoughts?


feat: CSS import and allow to hook module creation

fixes https://github.com/webpack/webpack/pull/15892
Here:

new hook for override NormalModule
support supports(...) in @import at-rule
support layer(...) in @import at-rule
support media in @import at-rule
bug fixes in CSS parser
fixed allow to have multiple @import with the same url and different layer/supports(...)/media
fixes generate the same identifiers in head on windows/linux/macos
supports anonomuos layer
tests from css-loader and mini-css-extract-plugin
data: in @import
cache test
source maps test
fix bug when we have comments in media
refactor comment logic
bug with multiple ((())) and function stack

What we need to solve the next:

group top level external imports
external import with media/etc
inherit layer, supports(...) and media from parent module? i.e. nested @import
normalize @media/@supports/@layer to lowercase?
improve layer indentifier detection
supports style resolution in package.json and test it
pathinfo for @import
unstable ?hash generation in --webpack-main when you have multiple same modules
external imports with #

Summary

🤖 Generated by Copilot at 972f53a
This pull request adds a new feature of css layering, which allows grouping css modules into different layers with different conditions. It introduces a new CSS module type, a new CssModule class, and a new createModuleClass hook map. It also modifies the CssModulesPlugin, the CssParser, and the CssImportDependency classes to handle the new syntax and dependencies. It updates the internalSerializables map to support the serialization of the CssModule class. It adds several test cases and files to verify the functionality and output of the css layering feature.
Details

🤖 Generated by Copilot at 972f53a

Implement the css layering feature, which allows css modules to be grouped into different layers with different conditions (link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link, link)
Add the word "csslayer" to the cspell.json file to avoid spelling errors (link)
Add a new file CssModule.js that defines a custom module class for css files, which can store the layer, supports and media conditions of the css import dependency (link)
Add a new constant CSS to the ModuleTypeConstants.js file and export it for other modules to identify css modules (link, link)
Add a new hook map createModuleClass to the NormalModuleFactory class that allows plugins to register hooks for different module types and return a module class (link)
Modify the create method of the NormalModuleFactory class to use the createModuleClass hook map and fallback to the NormalModule class if no module class is returned (link)
Modify the CssModulesPlugin.js file to import the CssModule and PrefixSource classes and register hooks for the CSS module type (link)
Simplify the apply method of the CssModulesPlugin class by replacing the for loops for registering hooks with a single for loop that iterates over an array of css module types (link)
Add logic to the apply method of the CssModulesPlugin class to wrap the css source with layer, supports and media conditions if the module has them, using the ConcatSource and PrefixSource classes (link)
Rename the CSS_MODE_AT_IMPORT_EXPECT_SUPPORTS and CSS_MODE_AT_IMPORT_EXPECT_MEDIA constants to CSS_MODE_AT_IMPORT_EXPECT_LAYER_OR_SUPPORTS_OR_MEDIA in the CssParser.js file and update the explanation for the mode (link, link)
Remove the modePos variable from the CssParser class and use the lastPos property of the modeData object instead (link)
Modify the walkCssTokens function call in the CssParser class to add two more conditions to the isSelector callback, add logic to handle the url and string tokens depending on the mode, add logic to handle the @import at-rule and initialize the modeData object, add logic to handle the semicolon token and create a new CssImportDependency, add a new function callback to handle the var function in the CSS_MODE_IN_LOCAL_RULE mode and create a new CssSelfLocalIdentifierDependency, declare the lastFunction variable, add logic to handle the close parenthesis token depending on the mode and the last function, and remove the duplicate function callback (link, link, link, link, link, link, link, link, link)
Modify the constructor of the CssImportDependency class to add a new parameter and property called layer that stores the layer condition of the css import (link)
Modify the category getter of the CssImportDependency class to return "style" instead of "css-import" to align with the new module type for css files (link)
Add the getResourceIdentifier, serialize and deserialize methods to the CssImportDependency class to identify, serialize and deserialize the layer, supports and media conditions of the css import (link)
Add a new entry for the CssModule class to the internalSerializables.js file to enable the serialization and deserialization of the class (link)
Create test cases for css imports in the test/configCases/css/css-import folder, which verify the css layering feature (link, link, link, link, link, link)

Add a new file imported.css that defines a simple css rule that sets the background color of the body element to green (link)
Add a new file index.js that imports the style.css file and defines a test case that checks the computed style of the body element after loading the css file (link)
Add a new file print.css that defines a simple css rule that sets the background color of the body element to black (link)
Add a new file style.css that contains multiple css imports with different conditions, such as layer, supports and media, and defines a simple css rule that sets the background color of the body element to red (link)
Add a new file test.config.js that exports a moduleScope function that runs before each test case and creates a link element that loads the bundle0.css file, which is the output file of the webpack compilation (link)
Add a new file webpack.config.js that exports a webpack configuration object that sets the target to "web", the mode to "development", and enables the css experiment (link)

Fix for unstable test here https://github.com/webpack/webpack/pull/17062

@alexander-akait help @chenxsan with the plugin hooks documentation I don't want to fall behind on this as we continue to include more robust hooks for module creation


Issue with the new year

Hello I am not able to see the stats for the current month (January 2020).
I've already done some sessions.  Check the screenshot below.
Thanks!

Hello,
This issue is fixed by #7.
If you use Firefox, please download the last release 1.1.3.
If you use Google Chrome, please wait or re-download the extension on store.
Thank you!


feat: 🎸 Metric chart icons

Codecov Report

Merging #299 (72105bd) into develop (368075f) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop     #299   +/-   ##
========================================
  Coverage    86.91%   86.91%
========================================
  Files          536      536
  Lines         6758     6758
  Branches       639      639
========================================
  Hits          5874     5874
  Misses         798      798
  Partials        86       86

Continue to review full report at Codecov.

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


very minor "bug" or wanted...?

Nothing urgent !
The "zero" graphic for the scanlist is "missing" 2 bits, or is this wanted from your side to distinct number "zero" or letter "o"?

Nice to see already a 3rd version 3.0 without vox...
73 de Hans F4VSJ

Hello, Hans,
Yes, it's deliberate.
Zero, in the tiny font, is designed that way.
73'
Armel F4HWN


Vault unable to find serviceaccount token

I created the following rbac configuration
kind: ServiceAccount
apiVersion: v1
metadata:
  name: keycloak
  namespace: keycloak
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: vault-secrets
  namespace: keycloak
rules:
  - apiGroups:
      - ""
    resources:
      - secrets
    verbs:
      - "*"
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: vault-secrets
  namespace: keycloak
roleRef:
  kind: Role
  name: vault-secrets
  apiGroup: rbac.authorization.k8s.io
subjects:
  - kind: ServiceAccount
    name: keycloak
    namespace: keycloak
---
# This binding allows the deployed Vault instance to authenticate clients
# through Kubernetes ServiceAccounts (if configured so).
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: vault-auth-delegator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:auth-delegator
subjects:
  - kind: ServiceAccount
    name: keycloak
    namespace: keycloak

I created a vault with the following configuration:
apiVersion: "vault.banzaicloud.com/v1alpha1"
kind: "Vault"
metadata:
  name: "vault"
  namespace: keycloak
spec:
  size: 1
  image: vault:1.4.2
  bankVaultsImage: banzaicloud/bank-vaults:latest

  # Common annotations for all created resources
  annotations:
    common/annotation: "true"

  # Vault Pods , Services and TLS Secret annotations
  vaultAnnotations:
    type/instance: "vault"

  # Vault Configurer Pods and Services annotations
  vaultConfigurerAnnotations:
    type/instance: "vaultconfigurer"

  # Vault Pods , Services and TLS Secret labels
  vaultLabels:
    example.com/log-format: "json"

  # Vault Configurer Pods and Services labels
  vaultConfigurerLabels:
    example.com/log-format: "string"

  # Support for nodeAffinity Rules
  # nodeAffinity:
  #   requiredDuringSchedulingIgnoredDuringExecution:
  #     nodeSelectorTerms:
  #     - matchExpressions:
  #       - key : "node-role.kubernetes.io/your_role"
  #         operator: In
  #         values: ["true"]

  # Support for pod nodeSelector rules to control which nodes can be chosen to run
  # the given pods
  # nodeSelector:
  #   "node-role.kubernetes.io/your_role": "true"

  # Support for node tolerations that work together with node taints to control
  # the pods that can like on a node
  # tolerations:
  # - effect: NoSchedule
  #   key: node-role.kubernetes.io/your_role
  #   operator: Equal
  #   value: "true"

  # Specify the ServiceAccount where the Vault Pod and the Bank-Vaults configurer/unsealer is running
  serviceAccount: keycloak

  # Specify the Service's type where the Vault Service is exposed
  # Please note that some Ingress controllers like https://github.com/kubernetes/ingress-gce
  # forces you to expose your Service on a NodePort
  serviceType: ClusterIP

  # Specify existing secret contains TLS certificate (accepted secret type: kubernetes.io/tls)
  # If it is set, generating certificate will be disabled
  # existingTlsSecretName: vault-cert-tls

  # Specify threshold for renewing certificates. Valid time units are "ns", "us", "ms", "s", "m", "h".
  # tlsExpiryThreshold: 168h

  # Request an Ingress controller with the default configuration
#  ingress:
    # Specify Ingress object annotations here, if TLS is enabled (which is by default)
    # the operator will add NGINX, Traefik and HAProxy Ingress compatible annotations
    # to support TLS backends
#    annotations:
    # Override the default Ingress specification here
    # This follows the same format as the standard Kubernetes Ingress
    # See: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.13/#ingressspec-v1beta1-extensions
#    spec: {}

  # Use local disk to store Vault file data, see config section.
  volumes:
    - name: vault-file
      persistentVolumeClaim:
        claimName: vault-file

  volumeMounts:
    - name: vault-file
      mountPath: /vault/file

  # Support for distributing the generated CA certificate Secret to other namespaces.
  # Define a list of namespaces or use ["*"] for all namespaces.
  caNamespaces:
    - "vault-infra"

  # Describe where you would like to store the Vault unseal keys and root token.
  unsealConfig:
    options:
      # The preFlightChecks flag enables unseal and root token storage tests
      # This is true by default
      preFlightChecks: true
    kubernetes:
      secretNamespace: keycloak

  # A YAML representation of a final vault config file.
  # See https://www.vaultproject.io/docs/configuration/ for more information.
  config:
    storage:
      file:
        path: "${ .Env.VAULT_STORAGE_FILE }" # An example how Vault config environment interpolation can be used
    listener:
      tcp:
        address: "<IP_ADDRESS>:8200"
        # Uncommenting the following line and deleting tls_cert_file and tls_key_file disables TLS
        # tls_disable: true
        tls_cert_file: /vault/tls/server.crt
        tls_key_file: /vault/tls/server.key
    telemetry:
      statsd_address: localhost:9125
    ui: true

  # See: https://github.com/banzaicloud/bank-vaults#example-external-vault-configuration for more details.
  externalConfig:
    policies:
      - name: allow_secrets
        rules: path "secret/*" {
          capabilities = ["create", "read", "update", "delete", "list"]
          }
      - name: allow_pki
        rules: path "pki/*" {
          capabilities = ["create", "read", "update", "delete", "list"]
          }
    auth:
      - type: kubernetes
        roles:
          # Allow every pod in the default namespace to use the secret kv store
          - name: default
            bound_service_account_names: ["default", "vault-secrets-webhook", "keycloak"]
            bound_service_account_namespaces: ["vault-infra", "keycloak" ]
            policies: ["allow_secrets", "allow_pki"]
            ttl: 1h

    secrets:
      - path: secret
        type: kv
        description: General secrets.
        options:
          version: 2

      - type: pki
        description: Vault PKI Backend
        config:
          default_lease_ttl: 168h
          max_lease_ttl: 720h
        configuration:
          config:
          - name: urls
            issuing_certificates: https://vault.keycloak:8200/v1/pki/ca
            crl_distribution_points: https://vault.keycloak:8200/v1/pki/crl
          root/generate:
          - name: internal
            common_name: vault.keycloak
          roles:
          - name: default
            allowed_domains: localhost,pod,svc,keycloak
            allow_subdomains: true
            generate_lease: true
            ttl: 1m
  vaultEnvsConfig:
    - name: VAULT_LOG_LEVEL
      value: debug
    - name: VAULT_STORAGE_FILE
      value: "/vault/file"

  # Marks presence of Istio, which influences things like port namings
  istioEnabled: false

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: vault-file
spec:
  # https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1
  # storageClassName: ""
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

# ---
# apiVersion: v1
# kind: PersistentVolume
# metadata:
#   name: vault-file
# spec:
#   capacity:
#     storage: 1Gi
#   accessModes:
#   - ReadWriteOnce
#   persistentVolumeReclaimPolicy: Recycle
#   hostPath:
#     path: /vault/file

After running kubectl apply, I receive the following error:
time="2020-06-10T12:01:03Z" level=fatal msg="error creating kv store: error creating K8S Secret kv store: error creating k8s config: open /var/run/secrets/kubernetes.io/serviceaccount/token: no such file or directory"

Is there something wrong with my configuration that's preventing the vault to mount the token secret?

Great, just made this automatic in #1018


add categorical data

it will be great if on of axis data can be string

We need to add images of examples about what we would like to achieve as final plots.
One thing could be to have numerical values on the X axis and a callback that converts this numerical value to a string
There may be some other problem as well like where to place the label. In this case it is between the major tics.

I used it in this story
https://zakodium.github.io/react-plot/?path=/story/api-parallelaxis--with-tick-format

@targos can i start working on this , in order to create violin plot https://github.com/zakodium/react-plot/issues/365

I would like to evaluate all the problems that would appear creating CategorySeries (HistogramSeries ?) and if does make sense to add this in the project (meaning not make hacks everywhere).
We should expect for this kind of series a lot of data and it could be the base to add box plots (another kind of CategorySeries).
<Plot width={300} height={300}>
  <Heading title="Fruit producers" />
  <CategorySeries
    data={{ banana: 4, apple: 5, kiwi: 0 }}
    label="Colombia"
  />
  <CategorySeries data={{ banana: 0, apple: 3, orange: 2 }} label="Spain" />
  <CategorySeries
    data={{ apple: 8}}
    label="Switzerland"
  />
</Plot>

We would need a CategoryAxis. The default value would go through all the CategorySeries and append the keys if it does not yet exists to the categories array. Of course no min / max for this kind of series.
paddingStart and paddingEnd would only be allowed in the svg units (pixels) or in %.
When many bar series are present on the same axis the axis could have a property stack: boolean to define if we should stack the bars or show them side by side.
What about annotations ?
Currently we have 3 kinds of units to place annotations:

'svg unit (pixels)' this would not be a problem
'%' this should be ok as well
number corresponding to value on the axis (x / y). While y is a number so no problem, x is a category so it should be a string (not allow this case ?).

Superimposition of Series
We could have 2 axis, one with CategoryAxis and the other one 'normal'.
@targos @stropitek we could discuss this during next Thursday meeting to define if we close those issues or continue to explore. I was just working on histograms to display pellet hardness this week-end ...


i18n(es): Update of layouts.md

What kind of changes does this PR include?

New or updated content
Translated content

Description

What does this PR change? Give us a brief description. Update and translated content of layouts.md based on these commits 716cd0deaa33e1af87a55421dd061f5d7e24f00a & 6191c81493fdd0232140f052af1a8d4ffa70123e

Muchas gracias por el review @kevinzunigacuellar 💚


chore: clear logs

Coverage remained the same at 100.0% when pulling 6a47fadb0a836a6f44eb1c2e0eb3adb24abbbe92 on clear-logs into f04482677b946161a8bcb4ebade328255ba8f494 on main.


Format of Memory Addresses

I think we have two options of representing static memory addresses in temple.dll in the code.

Just copy it from IDA and keep the image base: 0x10abcdef
Remove the image base: 0xabcdef

At runtime we have to rebase the addresses either way, since temple.dll could be loaded at an address that is different from 0x10000000. To keep the addresses in the code easily comparable with the IDA diassembly however, we could just automatically subtract 0x10000000 in the code, before we rebase the address. That could make them more readable.
Any thoughts?

@Shais2304 Your thoughts on this?


Rigidbody doesn't rotate when linear movement restriction on all axis is applied

Godot version:
3.2 stable
OS/device including version:
Windows 10
Issue description:
rigidbody wont rotate when the linear movement on all the axis is locked
Steps to reproduce:

make a rigidbody
attach a collision shape as a child of the rigidbody and select a box shape
adjust the collision shape extents and translation, so the parent pivot is on the side of it
on the rigidbody, restrict the linear movement on all the axis, and restrict the angular movement on the x and z axis (see image)
use a kinematic body as the player (see image)
play the scene and try to push the rigidbody with the player: the rigidbody should rotate around its y axis, but it doesn't, instead the player goes trough it
now unlock the linear movement on one of the axis of the rigidbody
play the scene and try to push again the rigidbody with the player: it should rotate around the y axis, and move along the unlocked axis (except if you unlocked the y axis)

Minimal reproduction project:
IssueExample.zip

I believe I see your issue: you want to be able to "rotate" the door without it moving "vertically" on the y axis.
I have talked with a friend of mine who studies physics, and from what I understood, you need to always unlock the y axis if you wish to have angular velocity on that axis. So, if you want the door to rotate, you'd have to allow it to move in the Y axis (even though it doesn't make much sense).
I don't know if what I said above is entirely true (I'm no physics expert :stuck_out_tongue: ), but tinkering with your project files and looking at the math, it seems like it.

I personally think it doesn't make sense. If I want to just rotate on the y axis without actually moving, why do I have to unlock the linear movement on that axis too?

I totally agree with you. However, I assume the code works something like this: when you lock the three axis, it means "lock all transformation on the X, Y and Z" axis. Which makes it's impossible to move and/or rotate a door, code-wise.
I think, for your specific case, you need to use an HingeJoint. Now, whether this specific physics scenario makes sense or not in the context of the engine, I have no clue ¯_(ツ)_/¯

Yeah, I'm experimenting with the hingejoint already.
But I have to say, I tried to do the same thing within another engine (Unity 3D) and it worked as I expected: the object was not able to move in any direction (as I locked the linear movement on all the axis), but was able to rotate along the y axis (with the angular movement locked on the x and z axis). I think it should be like that in the Godot engine, unless there is something I am ignoring and it works as intended? 🤔

@Zuppor a PR was merged (#38852) that might be related to your issue as well, maybe give it another shot?

CC @AndreaCatania to review if #38852 would address this.

Interesting use case; However, I'm not able to reproduce it in the Godot version 4:

I don't think the commit #38852 solves this problem (if confirmed) since it seems related to something other. I'm going to test it with version 3.2.
However, double check that the door is not colliding with the ground. This may obstruct the movement.

I'm not able to reproduce it with the version 3.2 too. Here my sample project, hoping it will be useful to you:
DoorTest.zip

I can reproduce the issue with the original MRP in 3.2.4 beta 5.
Bullet: The player goes through the door.
Godot physics: The player collides with the door, but the door doesn't move.

I can reproduce the issue with the original MRP in 3.2.4 beta 5.
Bullet: The player goes through the door.
Godot physics: The player collides with the door, but the door doesn't move.

To clarify/reconcile the above repros/vs fail to repo above (on 3.4.3), the demo Andrea posted of two colliding rigid bodies works, but programmed collision from a KinematicBody does not.

@micimize in that case it'll probably get closed, as infinite inertia is no longer a thing in Godot 4.0


[Feature Request]: Add Dynamic Programming Solutions for Common Placement Problems

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description
I would like to contribute by adding dynamic programming solutions for important placement problems such as Longest Common Subsequence, Traveling Salesman Problem, Coin Change Problem, Knapsack Problem (0-1), Longest Common Substring (Space Optimized), Matrix Chain Multiplication, and Wildcard Pattern Matching. These problems are frequently asked in interviews, helping candidates understand core concepts like optimization and recursion. I believe this would be a valuable addition to the repository. Looking forward to your approval to work on this!
Record

[X] I agree to follow this project's Code of Conduct
[X] I want to work on this issue
[X] I'm willing to provide further clarification or assistance if needed.

Full Name
Pasam Tharun
Participant Role
Contributor for GirlScript Summer of Code 2024 - Extended Edition!

@UTSAVS26 I would like to contribute in this Please Assign it to Me!!

@UTSAVS26 I would like to contribute in this Please Assign it to Me!!

You can directly raise a PR Now.


question about tests

Hello, I'd like to ask if you have the complete code for running performance tests.

Hi! We have added the test and evaluation code for our two benchmarks! Enjoy :)

Thanks! ！
甄婷
@.***
签名由 网易灵犀办公 定制
Original:
From: Mar @.> Date: 2023-12-30 02:28:06 To: @.> Cc: @.>, @.> Subject: Re: [google/diffseg] question about tests (Issue #2)
Hi! We have added the test and evaluation code for our two benchmarks! Enjoy :)
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>


Can I update array-data dynamically?

Thanks for the great module. I am trying to replace an array that provides data to swiper cards. I tried it using setState() inside onFinish() function. But it is not working.

Related to #12

This is #12.. is it possible or not?

It's not possible as is, but you can fork and make an easy change to achieve that.
Just add componentWillReceiveProps and update the card state

I need to do something like timber with infinites swipws, adding data with lazy load and the card must have vertical scroll, do you think that i can achieve this with this lib?

Yes, but you have to fork it and make the necessary changes


FormData is not recognising form elements having name attribute as variable

Describe the bug
A clear and concise description of what the bug is.
I have created a shidoka form with just a text input and submit button. The text-input's attributes are getting it's values from Angular property binding. The attributes like caption, placeholder etc are reflecting on the UI; but the only problem is when we define name property with property binding; then FormData is giving you empty value. If we change name attribute to static value, it works fine.
Below is the code sandbox example created. Once you type some text in the textinput and click on submit button, then formData is printed as blank. If you remove property binding from "name" and use static string; it prints the value of the field.
Note: This is a contrive example, but what i meant is to read each form elements attribute from JSON.
Codesandbox link
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

This one is strange, I am unable to reproduce it in our Storybook environment using variable name assignment. @peterpham-kyndryl @maulik-thaker1 curious if you might have any ideas.


CP Sat is not optimizing my cost function

Hi,
I'm setting up a constrained optimization problem, with boolean vars, in CP Sat.
I notice that the returned solution satisfy all the constraints but returned "optimal" value f(x*) for objective function (ObjectiveValue), at the found "optimal" argument (x*) is not the real value for the objective function. E.g. f(x*) returned is 0, while the real value for f(x*) should be 23434. When I evaluate f(x*) by using the same function defined for computing the objective function, I do get the correct value. But when it is called by CP Sat through the optimization process, it seems to be computing wrongly.
I post the definition of the objective function, which calls other previously defined functions.
`
def cost_function(z):
value = 0
tc = paths_of_z(z)
time_requirements = read_times(tc, time_tables)
cn = cost_of_paths(tc, costs)
for m in np.arange(0, len(cn), 1):
    value = value + sum((np.array(cn[m]) - np.array(time_requirements[m]))**2)
return value

model.Minimize(cost_function(z))
`
In order to debug it, I'm trying to print the intermediate solutions, i.e. solutions attained during the sequence of iterations, with:
(I'm not sure if intermediate solutions, can be printed - please correct if I'm wrong)
`
class VarArrayAndObjectiveSolutionPrinter(cp_model.CpSolverSolutionCallback):
"""Print intermediate solutions."""
def __init__(self, variables):
    cp_model.CpSolverSolutionCallback.__init__(self)
    self.__variables = variables
    self.__solution_count = 0

def on_solution_callback(self):
    print('Solution %i' % self.__solution_count)
    print('  objective value = %i' % self.ObjectiveValue())
    for v in self.__variables:
        print('  %s = %i' % (v, self.Value(v)), end=' ')
    print()
    self.__solution_count += 1

def solution_count(self):
    return self.__solution_count
    # [END print_solution]`

But I get only one solution printed, which seems to be the first guess that is feasible, and for which the value f(x*) is wrongly computed.
Any help will be greatly appreciated.
Thank you very much,

You cannot pass an arbitrary function to the minimize code.
In particular **2 is not supported.


[REQ] Use of deprecated API

Version 2.0.12 reports use of deprecated API.

@farhan-ejaz  Thanks for raising this. We will add this to our roadmap.

Hello! Is this something that can be done by an external contributor like me? We'd like to get rid of deprecated warnings on our workflows.

Hi @cmotsn
The issue was on our roadmap and it is now fixed #98 . Thanks for raising it and for being willing to support us with a fix.
Version 2.0.14
Thanks

Thank you!
(You probably know but just in case, there are still uses of set-ouput in the action publishing workflow, but they should not affect users of the action.)


fix: regressions of #228

credit to @wrenix

In general in PRS yes but this was a regression for an unreleased version. So no need to explicitly include it in the changelog.


⚠ BeyondHD has degraded performance

In 8b4b1d4, BeyondHD ($BHD) experienced degraded performance:

HTTP code: 200
Response time: 1543 ms

Resolved: BeyondHD performance has improved in e59c48e after 6 minutes.


Which is the best stage to fetch data in a page?

@brunogonzales You can either do it in asyncData or fetch depending on your use-case. See https://nuxtjs.org/docs/2.x/features/data-fetching/


Update setup-java action to v2

Updating the setup-java action to v2.

V2 supports custom distributions and provides support for Zulu OpenJDK, Eclipse Temurin and Adopt OpenJDK. V1 supports only Zulu OpenJDK.
V1 supported legacy Java syntax such as 1.8 (same as 8) and <IP_ADDRESS> (same as 8.0.212). V2 dropped support for legacy syntax.

thx!


fix: reject JoinIdentity authorizations correctly

Adjusted how we handle third party fees
BREAKING CHANGE: PolymeshTransaction.getFees no longer returns fees as 0 when they are paid by a
third party. This is now reflected by a paidByThirdParty flag

:tada: This PR is included in version 2.0.0-alpha.43 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 2.0.0-beta.1 :tada:
The release is available on:

npm package (@beta dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[bug]: /embassyd-data/main filling up with system logs

Journald is supposed to limit logs to 1G
https://github.com/Start9Labs/embassy-os/pull/1156
[77995.436666] systemd-journald[1673]: Failed to open system journal: No space left on device
[77995.437406] systemd-journald[1673]: Failed to open system journal: No space left on device
[77995.438541] systemd-journald[1673]: Failed to open system journal: No space left on device
[77995.439436] systemd-journald[1673]: Failed to open system journal: No space left on device
[77995.518614] systemd-journald[1673]: Failed to open system journal: No space left on device
[77995.519349] systemd-journald[1673]: Failed to open system journal: No space left on device
[77996.623863] systemd-journald[1673]: Failed to open system journal: No space left on device
[77996.624564] systemd-journald[1673]: Failed to open system journal: No space left on device
[77999.440488] systemd-journald[1673]: Failed to open system journal: No space left on device
[77999.441123] systemd-journald[1673]: Failed to open system journal: No space left on device
[77999.588838] systemd-journald[1673]: Failed to open system journal: No space left on device
[77999.589465] systemd-journald[1673]: Failed to open system journal: No space left on device
[77999.601555] systemd-journald[1673]: Failed to open system journal: No space left on device
[77999.602032] systemd-journald[1673]: Failed to open system journal: No space left on device
[77999.604694] systemd-journald[1673]: Failed to open system journal: No space left on device
[77999.605225] systemd-journald[1673]: Failed to open system journal: No space left on device
[77999.654548] systemd-journald[1673]: Failed to open system journal: No space left on device
[77999.655184] systemd-journald[1673]: Failed to open system journal: No space left on device
[77999.655969] systemd-journald[1673]: Failed to open system journal: No space left on device
[77999.656570] systemd-journald[1673]: Failed to open system journal: No space left on device
[78000.142116] systemd-journald[1673]: Failed to open system journal: No space left on device
[78000.142765] systemd-journald[1673]: Failed to open system journal: No space left on device
[78000.143656] systemd-journald[1673]: Failed to open system journal: No space left on device
[78000.144120] systemd-journald[1673]: Failed to open system journal: No space left on device
[78000.437783] systemd-journald[1673]: Failed to open system journal: No space left on device
[78000.438368] systemd-journald[1673]: Failed to open system journal: No space left on device
[78000.441012] systemd-journald[1673]: Failed to open system journal: No space left on device
[78000.441486] systemd-journald[1673]: Failed to open system journal: No space left on device
root@embassy:~#
root@embassy:~#
root@embassy:~# df -h
Filesystem                                                                             Size  Used Avail Use% Mounted on
tmpfs                                                                                380M   42M  338M  12% /run
/dev/mmcblk0p3                                                                         7.1G  3.8G  3.0G  56% /media/root-ro
tmpfs-root                                                                             1.9G  333M  1.6G  18% /media/root-rw
overlayroot                                                                            1.9G  333M  1.6G  18% /
tmpfs                                                                                1.9G     0  1.9G   0% /dev/shm
tmpfs                                                                                5.0M     0  5.0M   0% /run/lock
/dev/mmcblk0p2                                                                         253M  1.5K  253M   1% /embassy-os
/dev/mmcblk0p1                                                                         253M  140M  113M  56% /media/boot-rw
tmpfs                                                                                380M  4.0K  380M   1% /run/user/1000
/dev/mapper/EMBASSY_HZ33WGRY3LEHUZQ2EY6J3D5IUXZ4CWX3BQ5D6XDD53CJMSMYBB7Q_main          7.8G  7.8G     0 100% /embassy-data/main
/dev/mapper/EMBASSY_HZ33WGRY3LEHUZQ2EY6J3D5IUXZ4CWX3BQ5D6XDD53CJMSMYBB7Q_package-data  901G  846G  8.6G  99% /embassy-data/package-data
overlay                                                                                901G  846G  8.6G  99% /var/lib/docker/overlay2/7985e01fba3ee8b0622afafeacbe9c110887841ee0abd4cd2d6a0e2acf51b9b9/merged
overlay                                                                                901G  846G  8.6G  99% /var/lib/docker/overlay2/a484fea436758b9e2bb35520d2b09b2f663c6d530de6c1935781c9b60ad7e126/merged
overlay                                                                                901G  846G  8.6G  99% /var/lib/docker/overlay2/65a58b0d521b6358d70f2ea6e707a22b2c1d4e3e5789949a2dd19adf07da133a/merged
overlay                                                                                901G  846G  8.6G  99% /var/lib/docker/overlay2/dac49ec925bf6bd21366ef095d7e9864fc5ba195819be2c3ccdc72f369eb76be/merged
overlay                                                                                901G  846G  8.6G  99% /var/lib/docker/overlay2/c98f09cb570d2e6e47ce8d79be53fd2482d01c7a4bbbf9132d996c89a43f47bc/merged
overlay                                                                                901G  846G  8.6G  99% /var/lib/docker/overlay2/0ca2ca41c993063384ae4233b02fa281278b6b9c8116e4dd839c38634f900afe/merged
overlay                                                                                901G  846G  8.6G  99% /var/lib/docker/overlay2/c6b3413d249bae13e59c477fc988edfce09c4e18b71d49bcbb18ff48687b5b90/merged
overlay                                                                                901G  846G  8.6G  99% /var/lib/docker/overlay2/e47207934aa9fe47547e21586b6d54e125bbd52421dd84d7d292b7e935cba66b/merged
overlay                                                                                901G  846G  8.6G  99% /var/lib/docker/overlay2/aabefaa9ec9777055be451b266f4afb47e50a407da30d6d4fa8483686aff7ac7/merged
overlay                                                                                901G  846G  8.6G  99% /var/lib/docker/overlay2/0ef01da5bdff94111dba2a36440979eb49410d6add8d4b0e47a3eb76bc17a3e4/merged

Your df invocation suggests the logs aren't being put in the right place...
I think @dr-bonez changed this in a recent commit, but I don't remember which one exactly.

df only shows filesystems, not individual folders. This doesn't indicate its in the wrong folder

I thought the problem was that the logs were supposed to be limited to 1G, and they are filling up a 7.8G partition.

OH I made a mistake. I had remembered that we were putting the syslog onto the external volume but we ended up rolling that change back. It should be limited to some amount though 1G seems fine.

OK new plan is this:

[ ] update initialization.sh to generate machine-id based off of product key
[ ] update initialization.sh to generate new host keys
[ ] update postimage3.sh to generate machine-id based off of product key
[ ] change update flow in embassyd to prevent host key rotation
[ ] change update flow in embassyd to prevent machine-id rotation


feat: Update docker provider pin to 2.x in docker-build submodule

Description
The goal of this PR is to resolve docker provider deprecation issues resulting from the docker provider transition to 3.x.  This major update to the provider removes interface compatibility between docker_image and docker_remote_image.
Resolves: #398
Motivation and Context
Ensure the module works out of the box, until the module can be updated to use the latest variant of the docker provider implementation.
How Has This Been Tested?

[x] I have updated at least one of the examples/* to demonstrate and validate my change(s)
[x] I have tested and validated these changes using one or more of the provided examples/* projects
[x] I have executed pre-commit run -a on my pull request

Thanks, @mbeacom !

This PR is included in version 4.8.0 :tada:

Thanks for the quick merge!

@antonbabenko Just wanted to give you a heads up...  Something may have failed in the release job.  It appears the registry hasn't received 4.8.0 yet.

Thanks for the heads up! I just hit the Registry magic button to resync this module.


Carousel needs to push a href prop

component: carousel
reactstrap version 8.0.1
import method es
react version 16.9.0
bootstrap version 4.3.1

What is happening?
The next and previous control are working correctly, but are NOT showing the "pointer" cursor when you mouse hover
What should be happening?
It should show a "pointer" cursor when you hover over the next and previous controls.
Steps to reproduce issue

Go to the reactstrap documentation and hover over the previous and next buttons. Notice how it doesn't show a pointer cursor.
https://reactstrap.github.io/components/carousel/

Go to the React Bootstrap documentation and hover over the previous and next button. It does have a pointer cursor. It achieves this simply by adding a href="#" attribute in the generated code.
https://react-bootstrap.github.io/components/carousel/

Go to the Bootstrap documentation. They achieve the same pointer cursor by  simply adding a href="#" in the html code.
https://getbootstrap.com/docs/4.3/components/carousel/#with-controls

Hey. I can take this

https://webaim.org/techniques/hypertext/

One of the most serious barriers is to create links that go nowhere. Developers sometimes use JavaScript to create dynamic menus that drop down when the user hovers over certain links with the mouse. In some cases, the link itself goes nowhere at all, and its only purpose is to expose the links in the drop-down menu, which do have real destinations. Links like this often have a pound sign as the link destination, which means that the link destination is the same page; clicking on the link accomplishes nothing. Both keyboard users and mouse users will experience nothing at all when attempting to activate the link.

things like href="#" are bad. react-bootstrap and bootstrap itself most likely only use it for their examples, but do not expect developers to use them in the real world.
Because of this, I would not hard-code herf="#" into reactstrap, but instead allow the developer to specify it in their code and pass it to reactstrap.

The pointer effect can simply be achieved with CSS. Addition of hypertext in this case is not even needed as the carousel itself works fine by navigating to the next and previous images. I'm adding the code for this

@TheSharpieOne pushed a PR for this. Please take a look 🙂


Is it possible to convert String representation of of Bech32ContractId into a ContractId?

Background

On the indexer, users want to be able to filter Receipt events based on which contract is sending the Receipt

Here is a user requesting that functionality https://github.com/FuelLabs/fuel-indexer/issues/451

The idproperty of many Receipt types, is of type ContractId (here is the where ContractId is defined in fuel-types)
However, after a user deploys a contract using Contract::deploy the contract ID that is returned to the user is of type Bech32ContractId
Users can then take the String representation of that Bech32ContractId (e.g., fuel1hpqhnm0685tsqkvqwej8v8vl6gp5j39hcnee7uxkmqnc0pxjj7kq07scwj) and add that to their index manifest, so that they can filter for only Receipt events from a particular contract
So a user's index manifest would look similar to:

namespace: fuel_examples
identifier: hello_index
contract_id: fuel1hpqhnm0685tsqkvqwej8v8vl6gp5j39hcnee7uxkmqnc0pxjj7kq07scwj
abi: greeting-abi.json
start_block: 1
graphql_schema: hello_index.schema.graphql
module:
  wasm: hello_index.wasm

The issue

However, the issue is that we on the indexer are not sure how to take the String representation of a Bech32ContractId (e.g., fuel1hpqhnm0685tsqkvqwej8v8vl6gp5j39hcnee7uxkmqnc0pxjj7kq07scwj) and convert that back into a ContractId type
Why do we need to do this?

Because we would like to compare the contract_id specified in an index manifest, with the id property of the Receipt objects, to ensure we're only sending users events from their specified contract

This has some priority for us on the indexer, since this is an issue an actual user/team is running into currently

@matt-user

Sorry I forgot to add a bit of context.
I need this to work in a [no_std] env.

@ra0x3 wait could you clarify what you mean by [no_std] env?  You should be able to turn a String representing a Bech32ContractId into a ContractId with the current functionality in the SDK

@matt-user Doh! Seems like while our ABI Tokens are generated from no_std, this particular part of our code is not. Your recommendation is working fine for me now. Closing as complete (thanks for the help)


Build failure: cmakeMinimal

Steps To Reproduce
$ nix-env -f '<nixpkgs>' -iA neovim-unwrapped
Build log
---------------------------------------------
Error when bootstrapping CMake:
Problem while running make
---------------------------------------------
Log of errors: /build/cmake-3.27.7/Bootstrap.cmk/cmake_bootstrap.log
---------------------------------------------
error: builder for '/nix/store/3i56mpxvwv6cff5gh0dw5g4gj34glvkj-cmake-minimal-3.27.7.drv' failed with exit code 9;
       last 10 log lines:
       > make: *** Waiting for unfinished jobs....
       > g++: fatal error: Killed signal terminated program cc1plus
       > compilation terminated.
       > make: *** [Makefile:80: cmComputeLinkInformation.o] Error 1
       > ---------------------------------------------
       > Error when bootstrapping CMake:
       > Problem while running make
       > ---------------------------------------------
       > Log of errors: /build/cmake-3.27.7/Bootstrap.cmk/cmake_bootstrap.log
       > ---------------------------------------------
       For full logs, run 'nix-store -l /nix/store/3i56mpxvwv6cff5gh0dw5g4gj34glvkj-cmake-minimal-3.27.7.drv'.
error: 1 dependencies of derivation '/nix/store/7dnmlifyq4j3csqwxqwd5xkqapb8ss9d-zstd-1.5.5.drv' failed to build
error: 1 dependencies of derivation '/nix/store/lnizpi4184yzznra3zgm52axwrlnfqp3-curl-8.4.0.drv' failed to build
error: 1 dependencies of derivation '/nix/store/x9cmyjnrnk3864ddfikz6rkq5b4wnpjv-libarchive-3.7.2.drv' failed to build
error: 1 dependencies of derivation '/nix/store/0sibbikl18z6dxqdjvrzjgwdmk9br4ir-cmake-3.27.7.drv' failed to build
error (ignored): error: cannot unlink '/tmp/nix-build-bison-3.8.2.drv-0/bison-3.8.2': Directory not empty
error (ignored): error: cannot unlink '/tmp/nix-build-gettext-0.21.1.drv-0/gettext-0.21.1/gettext-tools': Directory not empty
error: 1 dependencies of derivation '/nix/store/hifarhzhzy80x5fimby5m15ayzh4g5l7-luarocks-3.9.1.drv' failed to build
error: 1 dependencies of derivation '/nix/store/lqz23g5slcn9m4qjknsllyzfy9mkwjpv-neovim-unwrapped-0.9.4.drv' failed to build

Additional context
Building from source. My /etc/nixos/configuration.nix contains:
nix.settings.substitute = false;
Notify maintainers
@NickCao
Metadata
[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux <IP_ADDRESS>-microsoft-standard-WSL2, NixOS, 23.11 (Tapir), 23.11.6272.51651a540816`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.18.1`
 - channels(root): `"nixos-23.11, nixos-wsl"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

Add a :+1: reaction to issues you find important.

g++: fatal error: Killed signal terminated program cc1plus This is most likely due to your system running out of memory.

@NickCao Oh! Yes, checking journald I had an OOM kill! I increased to 16GB and now it worked. Thanks for the help!

@NickCao Oh! Yes, checking journald I had an OOM kill! I increased to 16GB and now it worked. Thanks for the help!

@eclairevoyant Rebuild the whole install from source is in fact what I am trying to do! I just needed vim to edit files sanely😂


SVG labels

Ability to add SVG labels to nodes/edges. This allows users to add links and other custom code that works in IE instead of using HTML (with ForeignObjects). This is in reference to issue #12. There's a demo called svg-labels.html.

It looks like it failed fetching some of the node modules. Can you run the build again on it?

Thanks!


[Bref] Dont use internal classes from bref/bref

This PR aims to avoid using internal classes from bref/bref.
This will make runtime/bref more stable.

Could we maybe make the public api in the bref package larger, to include more of what we need?

That is a good suggestion. I have opened prs:

https://github.com/brefphp/bref/pull/1016
https://github.com/brefphp/bref/pull/1013


Guard against not loaded packages when updating disabled keymaps

Previously an uncaught exception was thrown if core.packagesWithKeymapsDisabled was set to an array that included a package name that wasn't loaded, such as a package that was uninstalled.
Closes atom/settings-view#695

Closes #695

Is this right?

Is this right?

Right number, wrong repo, the issue was reported to settings-view, I've updated the link, thanks for pointing it out.


Remote PageHandler clears selection

remote/handlers/PageHandler.ts calls this.selected.set([]) in goto whereas the local version doesn't.
Is there a reason for that? I'd like to keep my selection model intact even through page or filter changes.

SelectHandler would need to keep track of selected rows per each page instead of a global array, to know if a current page is in "allSelected" state.
So far:
$selected = [row1, row2, row3 ...]

Required:
$selected = {
    page1: [row1, row2, row3 ...],
    page2: [row1, row2, row3 ...],
    ...
}

In your case, handler.selectAll() will only concerns rows in the current page, right?
Working on it

Yes, for selectAll i only use current page scope. That i implemented myself as remote api doesn't support it yet (i just iterate all items on the page and call handler.select).
Currently i just patched out the line in PageHandler as i couldn't find a hook that could preserve the data.
The selection model works perfectly fine for me then as i have real IDs for each row (independent from page). No change needed for that. Your suggestion might even break it for me as I don't have totalPageCount for my data model. I just want a list of IDs.
But I also need to maintain an extended selection model myself as i need to have the selected row data even when on another page.
All works fine for me without PageHandler clearing the selection.

Thank you for your feedback, a great help.
I was able to implement the selection across pages in 1.13.1.
It's still fresh, maybe a few things are missing.
In your case you can keep your implementation or use the API one, I don't know which will be more practical.
At least you'll need to define an additional parameter at the instantiation level: selectionScope
const handler = new DataHandler(data, { rowsPerPage: 10, selectionScope: 'acrossPages' })

You'll find a live example by following this link:
https://vincjo.fr/datatables/remote/examples/beer-api

Thank you for working on this!
When trying to switch to your solution i noticed you implemented it by storing the selection per page now ('acrossPages').
I think it would be better to store the IDs in a flat array.
As is, it leads to visualization bugs when filters or rowsPerPage changes the page an item belongs to.
For the sake of ID based selection, the actual page the item is on (or if any at all) doesn't really matter.
Repro on Beer API example:

select all on page 1

select first item on page 2

Filter by item name of page2 item 💥:
Item is not selected visually but is in model (clearing filter shows that)

On page 1 change to 20 per page 💥:

Indeed, thx. Wasn't the right choice.
i'm going to change the way of checking equalities

This should be better in 1.14.0
I removed the "acrossPages" option and the default behaviour now is a sticky selection as you suggested.
https://vincjo.fr/datatables/remote/examples/beer-api
I added a global parameter that allows you to define the name of the column containing the unique identifiers for each row.
const handler = new DataHandler( data, { rowsPerPage: 10, selectBy: 'id' })

This parameter is at the instantiation level because it is required to set the derived isAllSelected() store.
It is necessary to use unique identifiers for the comparison to work correctly. The equality between objects is verified by instance instead of reference which excludes their use in a context of server-side data processing.

That works as expected! Thanks!


Create a state containing post-NU5 blocks

Address https://github.com/ZcashFoundation/zebra/blob/824e5200e22438c322914cd776f0b89808a98e97/zebra-rpc/src/methods/tests/snapshot.rs#L72-L80
Being able to create a state containing blocks for which we could activate NU5 is beneficial for tests, see: #8535.
Blocks #8535.

@ZcashFoundation/zebra-team Is this still relevant?

Yes, it is. We don't have a test chain with post-NU5 blocks.

@ZcashFoundation/zebra-team does anyone know how we can do this?
If we agree that it's not feasible, we can close this issue.


Create an example for implementing the Vision Transformer (ViT) model

Hello @fchollet - Kindly review this PR. I created an example to demonstrate the implementation of the Vision Transformer model on the CIFAR-100 classification dataset.

@8bitmp3 Thank you for your comments. I have applied your suggestions.

@8bitmp3 Thank you for your comments. I have applied your suggestions.

After 100 epochs, the ViT classification model achieves more than 72% top 5
accuracy on the test data. You can try to train the model for more epochs,
use larger number of Transformer layer, or increase the projection dimensions

Based on the paper ("Visual Transformers: Token-based Image Representation and Processing for Computer Vision" https://arxiv.org/pdf/2006.03677v3.pdf), the authors used different ResNet architectures as backbones (-18, -50, -101, etc) for the classification task (they also experimented with segmentation and used "pyramids" but it's not the focus of your Keras example here, I think).

So, I think it may help new users to go into a bit more depth to clarify this:

"use larger number of Transformer layer"

given that you used ReNet-50 as your baseline.
Anyway, it's just a thought 👍
ViT is a seriously cool paper.

After 100 epochs, the ViT classification model achieves more than 72% top 5
accuracy on the test data. You can try to train the model for more epochs,
use larger number of Transformer layer, or increase the projection dimensions

Based on the paper ("Visual Transformers: Token-based Image Representation and Processing for Computer Vision" https://arxiv.org/pdf/2006.03677v3.pdf), the authors used different ResNet architectures as backbones (-18, -50, -101, etc) for the classification task (they also experimented with segmentation and used "pyramids" but it's not the focus of your Keras example here, I think).

So, I think it may help new users to go into a bit more depth to clarify this:

"use larger number of Transformer layer"

given that you used ReNet-50 as your baseline.
Anyway, it's just a thought 👍
ViT is a seriously cool paper.

@fchollet - I played a bit with the hyperparams, and this is the best I managed to achieve so far (100 epochs):

ResNet50: around 43% top 1 accuracy and 68% top 5 accuracy
ViT: around 45% top 1 accuracy and 75% top 5 accuracy
AdamW performs better than Adam (both using weight decay)
Using a validation split during training, I noticed that ResNet50 overfits after 20 iterations (training accuracy keeps on improving while validation accuracy stays the same), while both training and validation accuracy keeps improving in ViT. That means training ViT for longer would improve the accuracy.

I guess the main difficulty is to achieve decent results with ResNet50!
I did a bit of research and it seems that the SOTA results are achieved via careful hyperparameter tuning, training scheduling, and data augmentation.
Now we have a couple of options to proceed with this example:

Submit the example as-is
Use a different dataset (maybe CIFAR10).
Extensive hyperparameter tuning.

I prefer option one as I think the purpose is to show how to implement the architecture, leaving implementing a sophisticated training routine to the user. In addition, we show that ViT outperforms the baseline (without careful tuning in both). I don't mind the second option, but I am not very interested in the third one tbh (In fact, it could be a nice example - on its own - around how to implement a sophisticated training routine to achieve the best result with ResNet50 on CIFAR-100, which doesn't seem to be easy at all!).
Let me know what do you think, or if you have other suggestions.

@fchollet - I played a bit with the hyperparams, and this is the best I managed to achieve so far (100 epochs):

ResNet50: around 43% top 1 accuracy and 68% top 5 accuracy
ViT: around 45% top 1 accuracy and 75% top 5 accuracy
AdamW performs better than Adam (both using weight decay)
Using a validation split during training, I noticed that ResNet50 overfits after 20 iterations (training accuracy keeps on improving while validation accuracy stays the same), while both training and validation accuracy keeps improving in ViT. That means training ViT for longer would improve the accuracy.

I guess the main difficulty is to achieve decent results with ResNet50!
I did a bit of research and it seems that the SOTA results are achieved via careful hyperparameter tuning, training scheduling, and data augmentation.
Now we have a couple of options to proceed with this example:

Submit the example as-is
Use a different dataset (maybe CIFAR10).
Extensive hyperparameter tuning.

I prefer option one as I think the purpose is to show how to implement the architecture, leaving implementing a sophisticated training routine to the user. In addition, we show that ViT outperforms the baseline (without careful tuning in both). I don't mind the second option, but I am not very interested in the third one tbh (In fact, it could be a nice example - on its own - around how to implement a sophisticated training routine to achieve the best result with ResNet50 on CIFAR-100, which doesn't seem to be easy at all!).
Let me know what do you think, or if you have other suggestions.

I think you'll find it easier to demonstrate good ViT results on CIFAR100 than CIFAR10.
I think data augmentation is definitely a must. Try increasing a bit the random rotation factor and maybe add RandomZoom.
From what you describe you might have an overfitting problem. Try removing the MLP classifier -- a single softmax layer with dropout before it should be enough.
One thing you could do is reproduce the same learning rate schedule that was used in the best ResNet50 benchmark.
I don't think we need this example to be SotA, but it shouldn't be too low either. Given that ResNet50 is supposed to achieve 67% acc, I would recommend reaching at least 50%.
So I would recommend trying a few more configurations (no MLP, more augmentation, learning rate scheduling) and adopting the best performing one. Hopefully it will be closer to the benchmark. Then we can submit, regardless of the final results. I completely agree that it's more important to demonstrate the advantage of ViT.

I think you'll find it easier to demonstrate good ViT results on CIFAR100 than CIFAR10.
I think data augmentation is definitely a must. Try increasing a bit the random rotation factor and maybe add RandomZoom.
From what you describe you might have an overfitting problem. Try removing the MLP classifier -- a single softmax layer with dropout before it should be enough.
One thing you could do is reproduce the same learning rate schedule that was used in the best ResNet50 benchmark.
I don't think we need this example to be SotA, but it shouldn't be too low either. Given that ResNet50 is supposed to achieve 67% acc, I would recommend reaching at least 50%.
So I would recommend trying a few more configurations (no MLP, more augmentation, learning rate scheduling) and adopting the best performing one. Hopefully it will be closer to the benchmark. Then we can submit, regardless of the final results. I completely agree that it's more important to demonstrate the advantage of ViT.

@fchollet - Ok. I spent more time optimizing the ResNet50 model, but I couldn't get above 45% accuracy on the test set. I tried different combinations of removing MLP, learning rate, batch size, Adam, AdamW SGD with momentum, and several data augmentation features (including RandomCrop, RandomZoom, Normalization instead of scaling, etc.).
I found example 1, example 2, and example 3 in PyTorch using ResNet on CIFAR-100, which all achieved 60%+ accuracy (with no tricks in the learning procedures)!!. I tried the configurations they used, but with no luck! Also tried DenseNet, which produced a bit better results, but not reaching 50% accuracy.
I wonder if you have any idea of why this discrepancy? I am open for any suggestion :-)
Now I will switch to ViT to try to achieve above 50% accuracy, which I think it should be the matter if training for longer

@fchollet - Ok. I spent more time optimizing the ResNet50 model, but I couldn't get above 45% accuracy on the test set. I tried different combinations of removing MLP, learning rate, batch size, Adam, AdamW SGD with momentum, and several data augmentation features (including RandomCrop, RandomZoom, Normalization instead of scaling, etc.).
I found example 1, example 2, and example 3 in PyTorch using ResNet on CIFAR-100, which all achieved 60%+ accuracy (with no tricks in the learning procedures)!!. I tried the configurations they used, but with no luck! Also tried DenseNet, which produced a bit better results, but not reaching 50% accuracy.
I wonder if you have any idea of why this discrepancy? I am open for any suggestion :-)
Now I will switch to ViT to try to achieve above 50% accuracy, which I think it should be the matter if training for longer

I wonder if you have any idea of why this discrepancy? I am open for any suggestion :-)

If you can confirm that the architectures are identical, then any such discrepancies are usually caused by:

Different input preprocessing
Different initializations (check especially the conv layers)
Different optimizer configurations

I wonder if you have any idea of why this discrepancy? I am open for any suggestion :-)

If you can confirm that the architectures are identical, then any such discrepancies are usually caused by:

Different input preprocessing
Different initializations (check especially the conv layers)
Different optimizer configurations

So I found this tf.keras.applications.resnet.preprocess_input function, which improved the results of the ResNet model when used: accuracy = 47% - top 5 accuracy = 73%. It says that 'color channel is zero-centered with respect to the ImageNet dataset', but I am not using ImageNet weights, so I am not sure if it makes since to use it.

So I found this tf.keras.applications.resnet.preprocess_input function, which improved the results of the ResNet model when used: accuracy = 47% - top 5 accuracy = 73%. It says that 'color channel is zero-centered with respect to the ImageNet dataset', but I am not using ImageNet weights, so I am not sure if it makes since to use it.

It says that 'color channel is zero-centered with respect to the ImageNet dataset', but I am not using ImageNet weights, so I am not sure if it makes since to use it.

You're processing natural images so it makes sense anyway -- the channel statistics are similar. It's recommended to use the preprocess_input function of each application regardless of whether you're using pretrained weights.
That still leaves a significant gap though. The fact that the preprocessing function seems to have a large impact might indicate a learning rate issue. Try different learning rates and decay schedules.

It says that 'color channel is zero-centered with respect to the ImageNet dataset', but I am not using ImageNet weights, so I am not sure if it makes since to use it.

You're processing natural images so it makes sense anyway -- the channel statistics are similar. It's recommended to use the preprocess_input function of each application regardless of whether you're using pretrained weights.
That still leaves a significant gap though. The fact that the preprocessing function seems to have a large impact might indicate a learning rate issue. Try different learning rates and decay schedules.

@fchollet - I spent a lot of time doing 'manual' hyperparameter tuning, including using different types of data augmentation, optimizers, and learning rate scheduling. Normalization and RandomZooming improved the results, however, other didn't make much difference. After 100 epochs only:

ResNet50 achieved 48% accuracy and 74% top 5 accuracy
ViT achieved 52% accuracy and 80% top 5 accuracy (more epochs would lead to further improvements).

I also added this at the end of the tutorial:
"You can try to train the model  for more epochs, use larger number of Transformer layers, or increase  the projection dimensions to achieve better results. Also note that, as mentioned in  the [paper](https://arxiv.org/abs/2010.11929), the quality of the model is affected not only by the architecture choice, but also other parameters, such as training
schedule, optimizer, weight decay, etc."

IMHO, I think trying to squeeze 1-2 accuracy percentages will not increase the value of the example, as the I think the purpose is to demonstrate a simple and an effective implementation of ViT, rather than a sophisticated training/hp tuning mechanism.
I will try different other configurations (in the background, as I am working on other examples :-)) and update the example if I find better ones, but, as far as i am concerned, the example looks ready.
Let me know your thoughts. And thank you so much for your valuable suggestions!

@fchollet - I spent a lot of time doing 'manual' hyperparameter tuning, including using different types of data augmentation, optimizers, and learning rate scheduling. Normalization and RandomZooming improved the results, however, other didn't make much difference. After 100 epochs only:

ResNet50 achieved 48% accuracy and 74% top 5 accuracy
ViT achieved 52% accuracy and 80% top 5 accuracy (more epochs would lead to further improvements).

I also added this at the end of the tutorial:
"You can try to train the model  for more epochs, use larger number of Transformer layers, or increase  the projection dimensions to achieve better results. Also note that, as mentioned in  the [paper](https://arxiv.org/abs/2010.11929), the quality of the model is affected not only by the architecture choice, but also other parameters, such as training
schedule, optimizer, weight decay, etc."

IMHO, I think trying to squeeze 1-2 accuracy percentages will not increase the value of the example, as the I think the purpose is to demonstrate a simple and an effective implementation of ViT, rather than a sophisticated training/hp tuning mechanism.
I will try different other configurations (in the background, as I am working on other examples :-)) and update the example if I find better ones, but, as far as i am concerned, the example looks ready.
Let me know your thoughts. And thank you so much for your valuable suggestions!

Thanks for the update. Can you post the training and validation accuracy & loss graphs over the duration of training (epoch by epoch)?

Thanks for the update. Can you post the training and validation accuracy & loss graphs over the duration of training (epoch by epoch)?

This is the training graph for ResNet50:

This is the graph for ViT:

Also, I create two separate Colab for ResNet and ViT (that produced these graphs), in case you would like to tinker with them! Note that, in these notebooks, I used the test sets as the validation_data to show the accuracy graphs graphs.

This is the training graph for ResNet50:

This is the graph for ViT:

Also, I create two separate Colab for ResNet and ViT (that produced these graphs), in case you would like to tinker with them! Note that, in these notebooks, I used the test sets as the validation_data to show the accuracy graphs graphs.

Looks good, thank you for the information! It seems the ResNet50 starts overfitting quite early, so this might be a regularization / data augmentation problem. I think we can merge the example in this current state anyway, maybe with a caveat comment about this. I will do a last round of reviews today.

Looks good, thank you for the information! It seems the ResNet50 starts overfitting quite early, so this might be a regularization / data augmentation problem. I think we can merge the example in this current state anyway, maybe with a caveat comment about this. I will do a last round of reviews today.

In run_experiment, please add a ModelCheckpoint callback with save_best_only=True. After training, reload the best model before evaluation on the test data.

Actually, can you apply this change (as well as making sure that we use validation data in fit) to your previous examples? This should be standard.

In run_experiment, please add a ModelCheckpoint callback with save_best_only=True. After training, reload the best model before evaluation on the test data.

Actually, can you apply this change (as well as making sure that we use validation data in fit) to your previous examples? This should be standard.

Update: confirmed that we get to 67%. Based on results so far I suspect that a bit of hparam optimization would get us to 70%, but that's irrelevant. Let's just use the config I use in the notebook.

Update: confirmed that we get to 67%. Based on results so far I suspect that a bit of hparam optimization would get us to 70%, but that's irrelevant. Let's just use the config I use in the notebook.

@fchollet - Thank you so much for your input! I think the key trick was the resizing, right?
I will work on figuring out the changes required for the ViT to be comparable with these updates (as with the resizing, we need need to increase the batch size, projection dimension, the MLP head etc.). Will work one this and hoping we get better results.

@fchollet - Thank you so much for your input! I think the key trick was the resizing, right?
I will work on figuring out the changes required for the ViT to be comparable with these updates (as with the resizing, we need need to increase the batch size, projection dimension, the MLP head etc.). Will work one this and hoping we get better results.

@fchollet - I have been working on tuning the hyperparameters for ViT to improve its performance. The best I could get is 55% after 100 epochs on the original 32x32 image size with patch size of 4x4. As shown in the image, the model could benefit from training longer.

I have also tried a few configurations with resizing the image to 255x255 and make the patch size 16x16 with no luck (training is slow, can't increase the batch size due to memory limitation etc.). However, I am still trying out a few other configurations.
I also checked the paper and all the results are based on pre-training on JFT-300M dataset, then fine-tuning on CIFAR-100.
I am not sure which results to expect when training ViT from scratch on CIFAR-100.
Maybe for the scope of this example we remove ResNet and show only the implementation and the results of ViT? Also mentioning that the SOTA results are obtained by pre-training on a large, high-resolution dataset then fine-tuning.
What are your thoughts?

@fchollet - I have been working on tuning the hyperparameters for ViT to improve its performance. The best I could get is 55% after 100 epochs on the original 32x32 image size with patch size of 4x4. As shown in the image, the model could benefit from training longer.

I have also tried a few configurations with resizing the image to 255x255 and make the patch size 16x16 with no luck (training is slow, can't increase the batch size due to memory limitation etc.). However, I am still trying out a few other configurations.
I also checked the paper and all the results are based on pre-training on JFT-300M dataset, then fine-tuning on CIFAR-100.
I am not sure which results to expect when training ViT from scratch on CIFAR-100.
Maybe for the scope of this example we remove ResNet and show only the implementation and the results of ViT? Also mentioning that the SOTA results are obtained by pre-training on a large, high-resolution dataset then fine-tuning.
What are your thoughts?

Thanks for the update. So I think we should do the following:

Only include the ViT model in the example. This will make the example more focused.
Call out the fact that the model from the paper was pretrained, hence why we don't achieve the same results by training from scratch.
Call out the fact that a ResNet50V4 trained from scratch achieves 67% accuracy: hence the ViT model is clearly not ready for practical applications, and we don't recommend anyone use it in practice. We present it for demonstration only.

What do you think?

Thanks for the update. So I think we should do the following:

Only include the ViT model in the example. This will make the example more focused.
Call out the fact that the model from the paper was pretrained, hence why we don't achieve the same results by training from scratch.
Call out the fact that a ResNet50V4 trained from scratch achieves 67% accuracy: hence the ViT model is clearly not ready for practical applications, and we don't recommend anyone use it in practice. We present it for demonstration only.

What do you think?

Thanks for your suggestions. I updated the example accordingly.
Please let me know what you think about the paragraph at the end.
Cheers

Thanks for your suggestions. I updated the example accordingly.
Please let me know what you think about the paragraph at the end.
Cheers

@fchollet - Thank you for the edits. I am reluctant to draw this conclusion: "So the ViT model isn't quite competitive with regular convnets on this task", since we haven't done extensive hp-tuning nor used the config used in the paper. The author won't like it if they come across this example :-) In fact, I manage to achieve better result the more I play with the parameters.
So I prefer not to conclude with this statement, not to compare with ResNet50 results (they can refer to the paper to see the results and the comparisons).
What do you think?

@fchollet - Thank you for the edits. I am reluctant to draw this conclusion: "So the ViT model isn't quite competitive with regular convnets on this task", since we haven't done extensive hp-tuning nor used the config used in the paper. The author won't like it if they come across this example :-) In fact, I manage to achieve better result the more I play with the parameters.
So I prefer not to conclude with this statement, not to compare with ResNet50 results (they can refer to the paper to see the results and the comparisons).
What do you think?

Keras.io examples are meant to be used as guides for people building practical applications. By publishing an example, we're encouraging people to take that model and apply it in practice on new problems. If a given technique is not a best practice, we should disclose this and provide the reader with extra context to enable to judge the technique fairly.
We should definitely compare the results here to a sane CNN baseline (which ResNet50 provides). We can definitely also state that results are likely to improve with more hyperparameter tuning, but we should not just skip mentioning the baseline, which could get people to believe that ViT is preferable to a basic CNN.

Keras.io examples are meant to be used as guides for people building practical applications. By publishing an example, we're encouraging people to take that model and apply it in practice on new problems. If a given technique is not a best practice, we should disclose this and provide the reader with extra context to enable to judge the technique fairly.
We should definitely compare the results here to a sane CNN baseline (which ResNet50 provides). We can definitely also state that results are likely to improve with more hyperparameter tuning, but we should not just skip mentioning the baseline, which could get people to believe that ViT is preferable to a basic CNN.

Understood - I rephrased the conclusion a little bit. Let me know if you are happy with it.
I also generated the notebook and the md files.
Thanks a lot for all your efforts in this one!

Understood - I rephrased the conclusion a little bit. Let me know if you are happy with it.
I also generated the notebook and the md files.
Thanks a lot for all your efforts in this one!

@ksalama , thanks for your example.
There is a class token in original paper and classification head, which is the last MLP layer, is attached from it.
But it seems that your example omits it.


Remove Grunt and Gulp?

I'm looking for places we can simplify this generator, because its sprawling complexity is hurting our ability to keep it maintained and add new features.
One thing that's occurred to me is that we could remove the gulp and grunt implementations. The things they're doing could easily be handled by npm scripts (e.g. linting) and express middleware (e.g. less/sass/stylus compilation)
I think that if people want to add task runners to their projects, there are plenty of guides around to help get started and choose the best one without us supporting default configs for them all (e.g. I suspect webpack is more popular these days but we haven't got it)
Am I crazy? What do you all think of this?

At last 😉
Opt-in not opt-out should be what we aim for, i.e. set up entry and end points to allow all kinds of integration, but cut out everything we can that's not 100% necessary.

sounds very sensible to me!

Agreed!

PR for this has now been merged, closing issue.


Ability to specify Security Groups for EFS

It would be great to be able to be able to provide security groups to an efs mount, useful for when you launch services with particular security groups currently they end up in the default sg for the vpc. Currently there is no direct arg or transform for mount targets which is what the sg is passed to.

Releasing v3.3.66.
EFS no longer uses the default SG. It now creates its own SG with the same ingress/egress as the default SG, and u can transform it.