Set target for SVG links?

Would be nice to be able to specify target for SVG links.
Right now the generated links are like this:

I want to set a target (_top or _blank)

The problem with not specifying a target is that when using <embed> the link targets the embed block instead of the container frame.
I have the issue here:
https://github.com/korlibs/korlibs.soywiz.com/blob/master/index.md
<embed src="korlibs-deps.svg" />

And I am using the script I run to fix the issue:
https://github.com/korlibs/korlibs.soywiz.com/blob/master/fix_svg_target.kt
But it is a bit annoying requiring a script for this.

Thanks for the report. This option will be added in the SVG export dialog in 9.3.0.

I have tried and doesn't seems to work for me. I have tried the two exposed options: "Automatic" and "Open in new window". Neither option includes a target attribute in the a tag. Just a plain:
Also automatic would be the _top target?

Works for me. Can you share the diagram you used for testing? ("Automatic" uses no target.)

About automatic:
If automatic doesn't uses target, would be nice an option to set it to _top as I described, when embedding no target makes the new page to be loaded within the embed, which is not what most people want. Lucidchart sets it target="_top" by default and target="_blank" for new pages.
The diagram using <embed> instead of  so links work:

After clicking one item, the new page is placed insitu where the <embed> was instead of in _top.

About the target=_blank not working for me:
XML file:
<mxfile userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/8.8.0 Chrome/61.0.3163.100 Electron/2.0.2 Safari/537.36" version="9.3.0" editor="www.draw.io" type="device"><diagram id="46ab275a-1604-dfd9-995f-36f75cb7721f" name="Page-1">dZNNc4MgEIZ/DdeOwiRtrzFpeun0kOn0jLoREhQHN1X764sCfkwaDw777Be8C4QlZXc0vBYfOgdFaJR3hO0JpXSztf8B9A6wzcaBwsjcoXgGJ/kLHkae3mQOzSoQtVYo6zXMdFVBhivGjdHtOuys1bprzQu4A6eMq3v6LXMUjr7Q55m/gyxE6BxvX50n5dm1MPpW+X6EsvP4OXfJQy1/0EbwXLcLxA6EJUZrdKuyS0AN0gbZXN7bA++0bwMV/pPw1YD5TC+DZDRSPLVTG4MQGnSpSlbXmT0JLJVzhBZ02uXUvcE+CNcKiXCqeTbYrb0bhO3GGmwf2yVvajeus+zAFty52j9gELqHR4gXLY+gS0DT25CQwLyW/q7FW2+3i8l5JBZDC4z7u1JMlWe97MKfMpgLBQOapzWGL14EO/wB</diagram></mxfile>

Exported SVG file:
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="81px" height="81px" version="1.1" content="<mxfile userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/8.8.0 Chrome/61.0.3163.100 Electron/2.0.2 Safari/537.36" version="9.3.0" editor="www.draw.io" type="device"><diagram id="46ab275a-1604-dfd9-995f-36f75cb7721f" name="Page-1">dZNNc4MgEIZ/DdeOwiRtrzFpeun0kOn0jLoREhQHN1X764sCfkwaDw777Be8C4QlZXc0vBYfOgdFaJR3hO0JpXSztf8B9A6wzcaBwsjcoXgGJ/kLHkae3mQOzSoQtVYo6zXMdFVBhivGjdHtOuys1bprzQu4A6eMq3v6LXMUjr7Q55m/gyxE6BxvX50n5dm1MPpW+X6EsvP4OXfJQy1/0EbwXLcLxA6EJUZrdKuyS0AN0gbZXN7bA++0bwMV/pPw1YD5TC+DZDRSPLVTG4MQGnSpSlbXmT0JLJVzhBZ02uXUvcE+CNcKiXCqeTbYrb0bhO3GGmwf2yVvajeus+zAFty52j9gELqHR4gXLY+gS0DT25CQwLyW/q7FW2+3i8l5JBZDC4z7u1JMlWe97MKfMpgLBQOapzWGL14EO/wB</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"><defs/><g transform="translate(0.5,0.5)"><rect x="0" y="0" width="80" height="80" fill="#ffffff" stroke="#000000"/><g transform="translate(29.5,33.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="20" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">

test

</foreignObject><text x="10" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">test</text></switch></g></g></svg>

Screenshots:

We'll add another option for "_top" in the next release (automatic will not add a target).


Access to training Data

In the paper, it is mentioned that one could generate the training data using captions from images. Would it be possible to provide the training data used to train the models. I'd like to try and improve upon this work.
Also, please let us know the procedure for collection of test data, specifically the images listed in synthwildx.csv

Next weeK, I will provide the captions list of the training.

The image of the synthwildx dataset was handmade collected. In particular, we looked for images on the social network using the name of the generator as a tag. We also checked that there were no tags from other generators in the image description.

Please provide the above listed resources. Also could you tell which text to image generator was used to generate the synthetic images in the reference set ?

training data are at the page:
https://github.com/grip-unina/ClipBased-SyntheticImageDetection/tree/main/data/train_set


IE11 Support

First of all thanks for this library, I have been using it a lot in a number of production projects.
Have you done much work with this library on IE11. I have a project where on all other browsers layout works correctly but on IE11 the height of the SVG doesn't adjust when the width is changed. It looks like possibly adding preserveAspectRatio="xMinYMin" seemed to help but I don't know how to pass that down to the SVG with this library.

No worries @SCasarotto. Haven't actually used this lib on IE11 myself, but if a bug warranted it I'd be happy to fire up a VM to check it out 😅
In this case though we may be able to get what you're after by hooking into the callback prop. Using the example in this repo, you could try something like:
...
<ReactSVG
  path="atomic.svg"
  callback={svg => svg.setAttribute('preserveAspectRatio', 'xMinYMin')}
  className="class-name"
  wrapperClassName="wrapper-class-name"
/>
...

I'm not 100% sure if this will work for you use-case, but keen to hear how you get on?
(I also had a quick scan through the SVGInjector source, but it looks like the setting of attributed on the svg is pretty tightly controlled. You can set various data-* attributes but not much else.)

Thanks for the info. I didn't think about using the callback. I will try this and let you know.

Hey @SCasarotto, before I close the issue assuming everything is ok... how'd you get on using that callback?

@tanem thanks for checking in. I haven't had a chance to check back on this. I don't have a virtual machine or regular access to IE11. Feel free to close it and I can reopen it if I run into trouble testing this. Thanks!

@SCasarotto no probs, sounds good 👌


travis ci multi architecture

hello,
can you please share the Travis file used for the creation and upload
of the mutli arc releases?
The actual travis only do the build and then discards it.
tk in advance

Hi, the .travis.yml file is included in the repo, but this is not used to build releases. This is done via Gitian, using the process described here.


Add Google photo URL validation

Description
Some place may contain invalid photo URL, such as "www.google.com". see the example of "Birk's".

Solution
Add a new URL validation function, and pass it into URL extraction function.
The new validator checks if the URL starts with a desired prefix. "https://lh3.googleusercontent.com/places/"
Testing

[] Integration testing on Heroku staging
[x] Added new unit tests

Checks

[x] Have you removed commented code?
[x] Have you used gofmt to format your code?

Great news! after rebasing on the latest master, Node.js CI also passed! Thanks @timwangmusic for adding it.

Addressed all previous comments in 64bdb01

Thanks for the review!


conductor can not connected dynomite cluster

when i used dynomite cluster(Deploy locally) , conductor server can not connected.Below is my configuration ：
#dynomite-c1

dyn_o_mite:
    datacenter: us-east-2
    dyn_listen: <IP_ADDRESS>:8401
    dyn_seed_provider: simple_provider
    dyn_seeds:
    - <IP_ADDRESS>:8501:us-east-2b:us-east-2:1
    - <IP_ADDRESS>:8601:us-east-2c:us-east-2:1
    listen: <IP_ADDRESS>:8402
    rack: us-east-2a
    secure_server_option: all
    servers:
    - <IP_ADDRESS>:7004:1
    stats_listen: <IP_ADDRESS>:30003
    timeout: 150000
    tokens: 1

#dynomite-c2

dyn_o_mite:
    datacenter: us-east-2
    dyn_listen: <IP_ADDRESS>:8501
    dyn_seed_provider: simple_provider
    dyn_seeds:
    - <IP_ADDRESS>:8401:us-east-2a:us-east-2:1
    - <IP_ADDRESS>:8601:us-east-2c:us-east-2:1
    listen: <IP_ADDRESS>:8502
    rack: us-east-2b
    secure_server_option: all
    servers:
    - <IP_ADDRESS>:7005:1
    stats_listen: <IP_ADDRESS>:30004
    timeout: 150000
    tokens: 1
#dynomite-c3

dyn_o_mite:
    datacenter: us-east-2
    dyn_listen: <IP_ADDRESS>:8601
    dyn_seed_provider: simple_provider
    dyn_seeds:
    - <IP_ADDRESS>:8401:us-east-2a:us-east-2:1
    - <IP_ADDRESS>:8501:us-east-2b:us-east-2:1
    listen: <IP_ADDRESS>:8602
    rack: us-east-2c
    secure_server_option: all
    servers:
    - <IP_ADDRESS>:7006:1
    stats_listen: <IP_ADDRESS>:30005
    timeout: 1
    tokens: 1

conductor server config

# Database persistence model.  Possible values are memory, redis, redis_cluster and dynomite.
# If omitted, the persistence used is memory
#
# memory : The data is stored in memory and lost when the server dies.  Useful for testing or demo
# redis : non-Dynomite based redis instance
# redis_cluster: AWS Elasticache Redis (cluster mode enabled).See [http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Clusters.Create.CON.RedisCluster.html]
# dynomite : Dynomite cluster.  Use this for HA configuration.
db=dynomite

# Dynomite Cluster details.
# format is host:port:rack separated by semicolon
# for AWS Elasticache Redis (cluster mode enabled) the format is configuration_endpoint:port:us-east-1e. The region in this case does not matter
workflow.dynomite.cluster.hosts=<IP_ADDRESS>:8102:us-east-1a;<IP_ADDRESS>:8202:us-east-1b;<IP_ADDRESS>:8302:us-east-1c

# Dynomite cluster name
workflow.dynomite.cluster.name=dyno_cluster_name

# Maximum connections to redis/dynomite
workflow.dynomite.connection.maxConnsPerHost=31

# Namespace for the keys stored in Dynomite/Redis
workflow.namespace.prefix=conductor

# Namespace prefix for the dyno queues
workflow.namespace.queue.prefix=conductor_queues

# No. of threads allocated to dyno-queues (optional)
queues.dynomite.threads=10

# Non-quorum port used to connect to local redis.  Used by dyno-queues.
# When using redis directly, set this to the same port as redis server
# For Dynomite, this is 22122 by default or the local redis-server port used by Dynomite.
#queues.dynomite.nonQuorum.port=7000,7001,7003

# Transport address to elasticsearch
workflow.elasticsearch.url=localhost:9300

# Name of the elasticsearch cluster
workflow.elasticsearch.index.name=conductor

EC2_AVAILABILITY_ZONE=us-east-1b

EC2_REGION=us-east-1

Below is my logs:
0    [main] INFO  com.netflix.conductor.bootstrap.ModulesProvider  - Starting conductor server using dynomite/redis cluster.
5    [main] INFO  com.netflix.conductor.bootstrap.ModulesProvider  - External payload storage is not configured, provided: , supported values are: [S3]
java.lang.IllegalArgumentException: No enum constant com.netflix.conductor.bootstrap.ModulesProvider.ExternalPayloadStorageType.
        at java.lang.Enum.valueOf(Enum.java:238)
        at com.netflix.conductor.bootstrap.ModulesProvider$ExternalPayloadStorageType.valueOf(ModulesProvider.java:37)
        at com.netflix.conductor.bootstrap.ModulesProvider.selectModulesToLoad(ModulesProvider.java:105)
        at com.netflix.conductor.bootstrap.ModulesProvider.get(ModulesProvider.java:50)
        at com.netflix.conductor.bootstrap.Main.main(Main.java:53)
289  [main] INFO  com.netflix.conductor.core.execution.tasks.SystemTaskWorkerCoordinator  - Adding the queue for system task: HTTP
464  [main] INFO  com.netflix.conductor.contribs.http.HttpTask  - HttpTask initialized...
465  [main] INFO  com.netflix.conductor.core.execution.tasks.SystemTaskWorkerCoordinator  - Adding the queue for system task: JSON_JQ_TRANSFORM
1097 [main] INFO  com.netflix.archaius.guice.ConfigurationInjectingListener  - Initializing ConfigurationInjectingListener
1250 [main] INFO  com.netflix.dyno.jedis.DynoJedisClient  - Starting connection pool for app conductor
1250 [main] INFO  com.netflix.dyno.connectionpool.impl.ConnectionPoolImpl  - Getting Hosts from TokenMapSupplier
1260 [main] INFO  com.netflix.dyno.jedis.DynoJedisClient  - Starting connection pool for app conductor
1260 [main] INFO  com.netflix.dyno.connectionpool.impl.ConnectionPoolImpl  - Getting Hosts from TokenMapSupplier
1265 [main] INFO  com.netflix.dyno.jedis.DynoJedisClient  - Starting connection pool for app conductor
1265 [main] INFO  com.netflix.dyno.connectionpool.impl.ConnectionPoolImpl  - Getting Hosts from TokenMapSupplier
.....
.....
Caused by: java.lang.NullPointerException
        at com.netflix.dyno.connectionpool.impl.HostsUpdater.refreshHosts(HostsUpdater.java:111)
        at com.netflix.dyno.connectionpool.impl.ConnectionPoolImpl.start(ConnectionPoolImpl.java:486)
        at com.netflix.dyno.jedis.DynoJedisClient$Builder.startConnectionPool(DynoJedisClient.java:4292)
        ... 82 more
....
Caused by: java.lang.RuntimeException (same stack trace as error #37)
50 errors
        at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:470)
        at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:184)
        at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
        at com.google.inject.Guice.createInjector(Guice.java:99)
        at com.google.inject.Guice.createInjector(Guice.java:73)
        at com.netflix.conductor.bootstrap.Main.main(Main.java:53)

please help me ==!

@v1r3n please help

I believe you dont need to enter multiple quorom ports. Did you try pointing it to a single one?

I believe you dont need to enter multiple quorom ports. Did you try pointing it to a single one?

which post?Dynomite or conductor.

It seems as if it's this inside TokenMapSupplier.java:
    @Override
    public TokenMapSupplier get() {
        return new TokenMapSupplier() {

            // FIXME This isn't particularly safe, but it is equivalent to the existing code.
            // FIXME It seems like we should be supply tokens for more than one host?
            HostToken token = new HostToken(1L, Lists.newArrayList(hostSupplier.getHosts()).get(0));

            @Override
            public List<HostToken> getTokens(Set<Host> activeHosts) {
                return Arrays.asList(token);
            }

            @Override
            public HostToken getTokenForHost(Host host, Set<Host> activeHosts) {
                return token;
            }
        };
    }

I've tested by adding a second token when having more than 1 host provided and it seems to be working.

It seems as if it's this inside TokenMapSupplier.java:
    @Override
    public TokenMapSupplier get() {
        return new TokenMapSupplier() {

            // FIXME This isn't particularly safe, but it is equivalent to the existing code.
            // FIXME It seems like we should be supply tokens for more than one host?
            HostToken token = new HostToken(1L, Lists.newArrayList(hostSupplier.getHosts()).get(0));

            @Override
            public List<HostToken> getTokens(Set<Host> activeHosts) {
                return Arrays.asList(token);
            }

            @Override
            public HostToken getTokenForHost(Host host, Set<Host> activeHosts) {
                return token;
            }
        };
    }

I've tested by adding a second token when having more than 1 host provided and it seems to be working.

Thanks,it`s worked!


Remove unnecessary commands/flags

[ ] The command line must have only the necessary flags to manage the apps.

[ ] The user must be able to query only the resources that are important for the app management.
Kubernetes version 1.4 (beta) provides the following resources:
* clusters (valid only for federation apiservers)
* componentstatuses (aka 'cs')
* configmaps (aka 'cm')
* daemonsets (aka 'ds')
* deployments (aka 'deploy')
* events (aka 'ev')
* endpoints (aka 'ep')
* horizontalpodautoscalers (aka 'hpa')
* ingress (aka 'ing')
* jobs
* limitranges (aka 'limits')
* nodes (aka 'no')
* namespaces (aka 'ns')
* petsets (alpha feature, may be unstable)
* pods (aka 'po')
* persistentvolumes (aka 'pv')
* persistentvolumeclaims (aka 'pvc')
* quota
* resourcequotas (aka 'quota')
* replicasets (aka 'rs')
* replicationcontrollers (aka 'rc')
* secrets
* serviceaccounts (aka 'sa')
* services (aka 'svc')

The koli command line it's not on the road map yet, closing for now.


Add support of fleet-level task

Fleet-level task is implemented by ignoring bid_notice msg in bid_notice_cb if the fleet_name in the task_request does not match the fleet's name.

@cwrx777 can you ensure all your commits are signed?

@cwrx777 this merging is blocked by not having signed commits.

@cwrx777 looks like something went wrong with the rebase and there are several new commits and diffs. Could you grant me push access to your fork/branch? I can clean this up and get it merged.

@cwrx777 looks like something went wrong with the rebase and there are several new commits and diffs. Could you grant me push access to your fork/branch? I can clean this up and get it merged.

@Yadunund, I've granted you contributor access. Please try. Sorry for the trouble.


What could be the reason that the model weights are not updating while finetuning?

I used this command "python run.py with data_root=/data2/dsets/dataset num_gpus=8 num_nodes=1 task_finetune_irtr_f30k_randaug per_gpu_batchsize=4 load_path="weights/vilt_200k_mlm_itm.ckpt"" to fine-tuned VILT on Flickr30k dataset, but I noticed that the model weights are not updating. Below are the VILT partial weight parameters output at each step. What could be the possible reasons causing this issue?

@dandelin I would be very grateful if you could help me with this issue.

@DDXDaniel did you solve this problem? i m facing same problem


Make waiting on condition variables error out on SWIFT_STDLIB_SINGLE_THREADED_RUNTIME

...instead of having an undefined symbol.

The changes in Mutex.h seem to be redundant, as the existing code will call through to the code in MutexSingleThreaded.h and hit the fatal error there. Should this just change MutexSingleThreaded.h?

@swift-ci please test

@swift-ci please test stdlib with toolchain

The changes in Mutex.h seem to be redundant, as the existing code will call through to the code in MutexSingleThreaded.h and hit the fatal error there. Should this just change MutexSingleThreaded.h?

Sure! I was just thinking that it would be nicer to hit the error in the layer above.

@kubamracek OK, I'm fine with that if you think it would be clearer.
One more tiny comment, while I'm bikeshedding: it would be good for the error message to say why it can't wait. Something like, "single-threaded runtime cannot wait for condition".

@swift-ci please test

Build failed
Swift Test Linux Platform
Git Sha - 35495499e3192d21e42987cdc3bdbda99b5b74a8

Build failed
Swift Test Linux Platform
Git Sha - 35495499e3192d21e42987cdc3bdbda99b5b74a8


Add Owen Jones to the design system team page

Owen Jones (me!) started with the design system team today. This adds my name to the design system team page.

@owenatgov on this team it's the author of the PR that usually merges (except for PRs from people outside of the team, or if for example the author is off on leave) – so feel free to merge this now that this has been approved.


InvalidSignInRedirectUrl in Idsrv4 to prevent back button issues after sign in

Hi,
I'm currently having issues when users are pressing the back button after sign in, such that even though they are authenticated they are placed back on the log in screen, and obviously with no sign-in cookie present in order to re-authenticate and redirect back to the app landing page.
I know this was solved using an InvalidSignInRedirectUrl property in the AuthenticationOptions object in Idsrv3 to redirect users to the specified url when arriving at the login page with no sign in message - is there an equivalent available for this or a reason why this can't also be implemented in Idsrv4?
Cheers,
Seb

Signin cookies do not exist anymore in 4.

Ah OK my bad. The issue remains though - pressing the back button returns to the login screen even if the user is authenticated when a redirect would be preferable, is this possible?

You can check on the login page if the user is already authenticated and do the redirect yourself.


Use limitMultiplier from the config rather than default

Limit multipliers are initialized in the constructor which can be configured through AzkabanProperties. However, if the requests are from flow param, then the default values of multipliers are utilized rather than the initialized ones.

Pull Request Test Coverage Report for Build 6606

0 of 0   changed or added relevant lines in 0 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage increased (+0.003%) to 45.192%

Files with Coverage Reduction
New Missed Lines
%

azkaban-common/src/main/java/azkaban/user/UserUtils.java
1
74.19%

Totals

Change from base Build 6600:
0.003%

Covered Lines:
17877

Relevant Lines:
39558

💛  - Coveralls


Fix #293

Signed-off-by: ashish<EMAIL_ADDRESS>Description
This PR fixes #293
Notes for Reviewers
Signed commits

[x] Yes, I signed my commits.

Will you describe a what the change is in this PR?  The issue identifies labels as in need of being dropped. Is that what is being done here?


403 Forbidden

After making multiple attempts with different bucket/region combinations, I still have not had any luck uploading any files. All attempts have resulted in 403 Forbidden errors. Any idea if I I'm missing something?
Headers
General
Request Method: POST
Status Code: 403 Forbidden
Response Headers
Access-Control-Allow-Methods: PUT, POST, GET, HEAD
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 3000
Connection: close
Content-Type: application/xml
Date: Fri, 22 May 2015 17:09:50 GMT
Server: AmazonS3
Transfer-Encoding: chunked
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Methods
x-amz-id-2: I2ivYOPFhufU69dRaOmr/cdqZv92DeWpxQU1rhXHsr2A2spcU+GKp7YOuB4EQHNv
x-amz-request-id: CDD39D1C16DFCCE2
Request Headers
Accept: */*
Accept-Encoding: en-US, en;q=0.8
Cache-Control: no-cache
Content-Length: keep-alive
Content-Type: 34803
Host: s3.amazonaws.com
Origin: http://localhost:3000
Pragma: no-cache
Referer: http://localhost:3000/s3test
User-Agent: Chrome/43.0.2357.65
Preview
<Error>
    AccessDenied
    <Message>Access Denied</Message>
    <RequestId>CDD39D1C16DFCCE2</RequestId>
    <HostId>I2ivYOPFhufU69dRaOmr/cdqZv92DeWpxQU1rhXHsr2A2spcU+GKp7YOuB4EQHNv</HostId>
</Error>

Step-by-step Actions:
A.) Installed meteor package
B.) Setup configuration on server
S3.config = {
    key: 'MYKEY',
    secret: 'MYSECRETKEY',
    bucket: 'jh-profile-images'
};

C.) Setup client-side code
HTML
<template name="s3test">

S3 Test

    <input type="file" class="file_bag" />
    <button class="upload">Upload</button>
    {{#each files}}

{{percent_uploaded}}

    {{/each}}
</template>

Javascript
Template.s3test.events({
    'click button.upload': function(event){
        var files = $('input.file_bag')[0].files;
        S3.upload({
            files:files
        },function(err,res){
            console.log('S3 upload err: ',err);
            console.log('S3 upload res: ',res);
        });
    }
});

Template.s3test.helpers({
    'files':function(){
        return S3.collection.find();
    }
});

D.) Created bucket in S3 called jh-profile-images
(tried leaving region alone, and later retried hard-coding the region: us-west-1)
E.) Uploaded blank index.html file to bucket. Enabled static web hosting and set index.html as the index document.
F.) Set permissions on index.html file for Everyone to open/download and view. Set permissions on jh-profile-images bucket for Everyone to List, Upload/Delete, and View Permissions.
G.) Copy & Pasted in the CORS Configuration from your docs
H.) Copy and Pasted in the Bucket Policy from your docs. Replaced YOURBUCKETNAMEHERE/* with jh-profile-images/*
And that's it. It's been over almost an hour and a half and still no luck. Any help is greatly appreciated, thank you so much!

That's strange. What region are you in?

I've tried US Standard and us-west-1 with no luck so far.

Hmm, have you tried using the slingshot package to see if it fails with that too?

Got it! After switching to the root AWS account keys everything worked great - there were some permission issues with the IAM user account I was using. I'll be able to get it resolved from here. Thank you for your help and support, I really appreciate it. Cheers!

Sweet!

Oh man, I spent so much time on this one today.. Same thing, I had permission issues with IAM user account.. After using root access key everything works.

Why we need root access key ? It's not a security issue ?

http://blogs.aws.amazon.com/security/post/Tx1JPM2L6BKDBK5/Coming-soon-An-important-change-to-how-you-manage-your-AWS-account-s-access-keys

So, what policy should I set on my account to make this work?


ENH: twitter.js: indicate retweets

An indication of retweets would be helpful.

https://dev.twitter.com/rest/tools/console

1.1 API URLs would probably work, as well
https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterapi&include_rts=1&count=2

https://github.com/christianv/jquery-lifestream/commit/573d95aa3cdc03a402732c815e48b97822cc5191

https://github.com/christianv/jquery-lifestream/blob/master/src/services/twitter.js

https://github.com/twitter/twitter-text (Apache 2.0 :+1: )

@westurner currently we scrape the data since we want to avoid our users having to generate oAuth tokens. So basically this would be an option that we need to pass to our scraper: https://github.com/christianv/twittery

How would is_quote_status / retweeted, in_reply_to data be accessed from the templates?

Because the scraper would provide those properties. If you prefer to go through the API you could e.g. always write your own service - e.g. twitterAuthenticatedService.js which would consume an API token.


[BACK-21] Implement ELI/5

Description of Issue
The idea is to use code or the README file of the project we are interested and gtp3 to get a summary of what the project is trying to archieve.
How I implemented
I implemented this using a simple HTTP requests. At the beginning I struggled with the implementation since eveything only seemed to work on my local machine. With this setup I got everything to work on a node server using the fetch library
Other
The readme files will have to be passed on to the method but everything was tested on the local server together with the project of @Maximilan. The key for API is currently still on my local machine because the last time I tried to publish it to github OPENAI blocked the key as they somehow found out that it was leaked (I still don´t know how they did it so I just kept it on my machine in an .env file)

The key will be added securly on Google once the server setup is done

This PR is ready for review after speaking @acreturs
The build error appears to come from another already PR

@acreturs address merge conflicts


Tidy up & fix EverythingLocalContext.

Summary: In the previous impl. of EverythingLocalContext, we masked a base class instance of upids_. We fix that in this patch, and align usage of the EverythingLocalContext to better match the existing work in socket_trace_bpf_test_fixture.h.
Type of change: /kind cleanup
Test Plan: Tested locally with the next diff and along with work to de-flake socket tracer tests.

This patch, #1258, is in support of the following:
stacked change in unit_connector.h.
As soon as we can land this, the next (above) will pushed up as a PR.


quest log is full

There is an issue preventing the automatic turn-in of quests when the quest log is full and you have additional quests to add.

Added in questgrabber so that if questlog is ful dont try to grab a new quest, instead try to turn in a quest.


Nested subcommands cause infinite loop

Nested subcommands render an infinite loop of no content. Is this meant to be supported?

Could you paste your main.zig and elaborate a bit on your use case so that we are on the same page?

Sorry, my bad. I ended up finding the issue. It wasn't related to nested subcommands. I had an empty .options = &.{}, which was causing the issues. When I removed that it was fine.


si.system() is not workig in windows

si.system() is not working in windows 8
Thank you for this wonderful library giving us elaborative information about the system.
I ran below code in windows 8. However, mentioned properties of data is null or empty.
si.system().then(data => {             console.log("System Serial Number - ", data.serial);             console.log("UUID                 - ", data.uuid);             console.log("Manufacturer         - ", data.manufacturer);         })
Current Output
si.system() is returning an object with empty properties
Expected behavior
si.system() is expected to return all documented properties
Environment (please complete the following information):

OS: Windows 8

Additional context
Add any other context about the problem here.

Will try to check it ... sorry for the inconvenience

@techterbium : three questions

is this the only function (that should return values for windows) that returns an empty object?
hat windows version / build you are using exactly?
you are using the latest version of systemInformation 4.5.1?

Thank you in advance

@sebhildebrandt -

I just used si.system() for now. I am not aware of other functions. Sorry.
Windows 8.1
Yes.

@techterbium : I tested it now on several windows 7 and windows 10 machines and this works. So it would be good to get some more input:

Can you tell me also, which version of node you are using?
in your command line, what would be the output of wmic csproduct get /value
can you try at least one or two more si functions using wmic e.g.:

si.bios()
    .then(data => console.log(data))
    .catch(error => console.error(error));

or
si.baseboard()
    .then(data => console.log(data))
    .catch(error => console.error(error));

Thank you in advance

@techterbium would it be possible to provide some additional information as mentioned above? Would help to identify the problem. Thank you in advance.

@techterbium : I changed now a bit using wmic (the underlying command) ... is it possible to test it once again with version 4.7.0?

@techterbium ... as all my tests are fine here and I did not get feedback, I would like to close the issue

@sebhildebrandt , sorry for my detailed response. Yes, please close the issue. I was able to resolve my issue by adding ;%SystemRoot%\System32\Wbem to window's environment variables.

@techterbium , ok, fine. Thank you for your reply. I also changed the way WMIC is called. So this should now also work without having to explicitly adding this path to your env variables.


Update to newer version of GraphiQL

Hi,
Thanks for the great Chrome extension.
If you are maintaining this extension you might consider upgrading to newer version of GraphiQL files. Much has happened with ability to "Prettify" and "Search" etc. then latest months.

Thank you for the pull @andreasekstrom!
I haven't looked into the latest version before this. Search sounds interesting, though I'm not super intrigued by the prettify tool. It also seems like they have some breaking changes with the older GraphQL servers as far as the introspection query goes. If server doesn't support subscriptionType on introspection root, introspection fails and auto-complete etc. stops working.
For that reason, I'm less inclined to just update all of it to the latest. However, I think I can, with this being a packaged extension, make multiple versions of GraphiQL available and let it be the user's choice to decide which one to use.
Let me look into this a little bit.

I would also be interested in upgrading to latest GraphiQL, but I do have a server implementation that does not support subscriptionType. Is there anything new on that topic ? or anything we could to help with that ?

I have upgraded to the latest GraphiQL (0.11.3 at the time). Closing this for now, assuming people won't have as many server/graphiql incompatibility issues as much, given that the breaking changes have been out for more than a year.


Get rid of Manifest.TestDependencies() entirely

From @sdboyer on January 12, 2017 5:36
Because the constraint decls no longer imply "requirement," having a separate method on Manifest for declaring test deps is utterly pointless. They should all be lumped in together, and #44 can deal with marking anything that comes in through tests as test-only.
Copied from original issue: sdboyer/gps#140

From @sdboyer on February 13, 2017 16:58
note to self (ish) - getting rid of this should mean that pcSliceToMap() can probably also go.

Doing this is mostly about removing the method from the interface, then removing implementations of it. There'll also be a bit of removing dead code intended to merge together test and non-test constraints.

I will take this one.


Changes to the HLZ tool

Updated the HLZ Suitability tool to take obstacles into account. Renamed
the tool to “Deliberate HLZ Analysis” to avoid confusion of the
“Suitable HLZ” tool. Created three supporting scripts for the
“Deliberate HLZ Analysis” tool. Created a “Generate Liner Obstacles”
tool for the purpose of generating Linear Obstacles. The scripts are
based on the “Generate Intermediate Layers” script.
@mfunk

Merged changes in commit https://github.com/Esri/solutions-geoprocessing-toolbox/commit/7e9ba677496ee82dcd8b07b09ae3e70a15d6b38e


Failed to mount component: template or render function not defined.  (found in component )

any ideas why is that error?
 Failed to mount component: template or render function not defined.

(found in component )
I use these versions:
"vue": "^2.0.2",
"vue-infinite-loading": "^2.0.0-rc.1"

This is the one of Vue.js changes, maybe this guide can solve your problem: Standalone-vs-Runtime-only-Build.

@PeachScript any ideas how to make it work with alisify for browserify?
still gives me same error :/

@tzookb Did you used the Runtime-only version of Vue.js 2.0?

yes I read it, but not sure if i understood how to do it.
do you use alisify? with browserify or webpack?

No I don't, but I think it maybe like this:
webpack.config.js
...
if (process.env.NODE_ENV === 'development') {
  module.exports.resolve.alias = {
    'vue$': 'vue/dist/vue.js'
  };
}
...

main.js
import Vue from 'vue';
...

The alias will replace Vue to Standalone version when the environment is development.

Hello @tzookb , is your problem solved?

had to much problems, so I stuck with vue 1 for now :/

Well, hope you use smoothly :P.
I will close this issue now, you can reopen it if you need in the future.

I am still getting this error, trying both standalone and runtime-only version. Any hint what I might be missing?

@stephanmax Could you paste your build configuration file and component file on the JSFiddle?


RFE: Support for External monitors in GSLB

Is your feature request related to a problem? Please describe.
AS3 does not currently support external monitors, we would like it added for GSLB in particular.
Describe the solution you'd like
Ideally it should be possible to install the scripts in /config/monitors, and reference the scripts in AS3. Our BIG-IP builds have the scripts pre-install so that is not the most important part. Been able to create external monitor and reference installed scripts would be sufficient for our needs.
Describe alternatives you've considered
BIG-IP is built with the external monitor scripts installed.
We use the bash REST API endpoint to execute a TMSH command to create the external monitor. We do not currently use AS3 to configure our GTMs, this is a blocking point.
Additional context
Something like this;
{
  "class": "GSLB_Monitor_External",
  "run": {"bigip": "my_external_script"},
  "timeout": 15,
  "interval": 5,
  "arguments": "",
  "variables": [{"name1": "value1"},{"name2": "value2"}]
}

Closing as duplicate of #259.


Check for hardware acceleration when using KVM on linux

Runs kvm-ok and sets the accelerator in the template accordingly.

 Hardware acceleration - KVM on Linux


Support reentrant updates

Introduction
DiffableTextField(value: $optional, style: .number.suffix(optional != nil ? “ items” : “”))

Styles such as the one above (that depend on the input/output value) resolve changes between some and none in two steps, and sometimes two frames. While somewhat difficult to notice, it is also difficult to unsee. It is less than ideal and can easily be fixed.
Proposal
When the value changes, wait for it to stabilize before applying any downstream changes.
Alternatives
A) Conditional single-pass modifiers, like nonblankSuffix(_:) (more options/complexity).

Side note: I haven’t tested it outside of Xcode 14 beta 5.

I think reentrance is definitely preferable because it introduces no end experience complexity, whereas special case styles introduce a lot and make it so you have to be aware of edge cases you may not even consider otherwise.

Added in f930ce408def0c983c6d644d19ea8964a4f6bdd0 and it’s so much nicer 🤩

On a tangent: checking !update can replace the interaction lock (even the async one!). Who’d a thunk it.

There’s some funky behavior in combination with UITextField’s normal “autocorrection” behavior, when tapping on an inactive field bound to an invalid value (an edge case among edge cases). UIKit may want to select some part of it and offer a suggestion, then the style immediately removes it because it’s invalid. This manifests as a single frame selection flash. `diffableTextViews_autocorrectionDisable()’ prevents this.

There are minor side-effects of reentrant updates. Given this optional number style:
.number.suffix(number != nil ? “ items" : “”)

When the value is nil and the use types a . the following happens:

resolve :: value == 0, snapshot == “0. items”
value is no longer nil (so the style changes)
interpret :: value == 0, snapshot == “0 items” (separator was removed)

There are a couple of viable solutions to this, one would be nonblankSuffix(_:).


ReplaceTokens does not work using jettyRun

Gradle:
import org.apache.tools.ant.filters.ReplaceTokens
war {
  filter(ReplaceTokens, tokens:[SPRING_PROFILE: 'dev'])
}

web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="3.1">
        <context-param>
                <param-name>spring.profiles.active</param-name>
                <param-value>@SPRING_PROFILE@</param-value>
        </context-param>
</web-app>

When running “gradle war”, the replacement happens in the generated war file.
When running “gradle jettyRun”, the replacement does not happen.
It is expected to run in all cases.

Found a solution on stack overflow:
gretty {
  webappCopy {
       filesMatching 'WEB-INF/web.xml', {
           filter(...)
       }
   }
}

This should be documented clearer, it is probably how most users would want to use it.


feat: add xpress instrument scientist comment

Description
This PR introduces a new feature that allows instrument scientists to add comments to xpress proposals.
Motivation and Context
This change is required for sample safety where instrument scientists want to manage their sample cans via a proposal's comments which must not be shown to the user.
Changes
The most important changes are:

Added a new column comment_by_scientist in the proposals table and proposal_table_view to hold the scientist's comments.
Updated the ProposalDataSource and PostgresProposalDataSource to include the new column in fetching and saving operations.
Updated the Proposal and ProposalView models to include the new field.

How Has This Been Tested?

Fixes Jira Issue
https://github.com/UserOfficeProject/issue-tracker/issues/1031
Depends On

Tests included/Docs Updated?

[x] I have added tests to cover my changes.
[ ] All relevant doc has been updated

@mutambaraf Is it possible to see a screenshot or video of this? 🙂

@mutambaraf Is it possible to see a screenshot or video of this? 🙂

I have added a video on top


Call to undefined method Laravel\Lumen\Application::configPath()

In ApiDocGeneratorServiceProvider.php line 27:
Call to undefined method Laravel\Lumen\Application::configPath()

I've got this error after i upgrade to version 4.8
im using lumen 5.8
Any idea why this happened? ive tried several debugging and reinstall all my packages but still getting this error.
i have this config on my bootstrap app.php too
$app->register(\Mpociot\ApiDoc\ApiDocGeneratorServiceProvider::class);
$app->configure('apidoc');

Hi, no new issues are being attended to in this project. Please use Scribe and see if that fixes your problem. Scribe is currently in beta, but should be in v1 stable by next week. Also see the migration guide


Windows nightly generation is broken

See https://github.com/f3d-app/f3d-superbuild/actions/runs/8164788166

Fixed


Extending footer

I am using rtd theme in a local Sphinx deployment. I would like to extend the footer to show a git commit hash similar to https://readthedocs.org/. I can see in footer.html there are a few template tags like build_url, build_id, commit. I think commit should do the trick however I am not sure how to assign a value for commit and have it display. Where can I find some more information how to do that?

These variables can be populated in conf.py via the html_context dict.
footer.html tries to display ONLY ONE of the following version lines, in order:

A link to the relevant build server build, if build_id AND build_url are set.

A datetime stamp, if last_updated is set.  But see html_last_updated_fmt instead of setting last_updated manually.

For example, let's include the latest commit hash in the footer when Travis CI crunches the docs.  Many build servers set environment variables with each build's information, so we just need to find the right one and use os.getenv() to pull it into conf.py at build time:
import os

html_context = {
    # Need to trim the commit hash to normal size since TRAVIS_COMMIT contains the full
    # length hash, which is really long!

    # Default value is empty string, which won't trigger the commit footer if TRAVIS_COMMIT
    # isn't set and won't explode on slice like None would.
    'commit': os.getenv('TRAVIS_COMMIT', '')[:7],
}

Even if your "local deployment" doesn't include a build server setting environment variables, there are other options for getting the commit hash itself.

Thanks @TomRichter your explanation was very clear. I was able to populate the hash in conf.py by using the GIT_COMMIT env variable provided by the git module in Jenkins.


[Feature Request] - Local hotkeys

It would be nice to have local hotkeys which would be triggered only if Raycast search windows is opened. For example the following use case would be used to search in Google using Google search extension:

CMD + SPACE - Open Raycast search window.
Still holding down CMD and press G - route to Google search extension.

Describe the feature and the current behavior/state.
Only global hotkeys all available. For example it is not possible to use CMD + F hotkey due to a possible collision with another application.
Will this change the current API? How?
Yes
Who will benefit from this feature?
All users. Increases usage performance.

As this issue isn't related to the Extensions API, but to the native application, I'll close this issue.
Would you mind submitting it using Raycast's Send Feedback command? That way we can track progress & keep you updated when it's fixed. ❤


Can you share the paper published on ICDE[DOC]

Can you? Thanks very much, guys.

Hey @yangjunsss , thank you for your interest. The copyright of the paper is transferred to IEEE. We can not make it public until the conference is finished (by May 15th).  After that, we will  add a paper download link on our github readme page. Plus, I will also left a message here. Please stay tuned. Thanks.

It's online now. @yangjunsss https://ieeexplore.ieee.org/document/9835158


Addition of ParCool mod.

The issue with the parcool infinite flipping can be fixed by shutting off the frontflip/dodge abilities within the config file. I dont think we need this to the other dodging/invincible frames mod that's in the mod pack. This will be a quick fix until we figure out how to truly fix the animation error.

The current plan for ParCool is to get the primary bug free server-side implementation out. I want to be sure that the mods I'm working with have their full use cases all in working order before adding them. As it is on my list, and as the creator has implemented what might be a fix, I still need to do some testing with this mod before I push it.

Finished setting up ParCool for v1.2.5. Should be good for now!

Hello, I am an author of ParCool mod.
Anyway I report that maybe I fixed the issue you refered.
It will be applied in next release. However it will support only 1.16.5, excluding 1.16.1~1.16.4.


ABI support

Is your feature request related to a problem? Please describe.
I am working on an app which uses contract-to-contract calls through ABI. Unfortunately, it seems that ABI is not supported in Algobuilder currently.
Describe the solution you'd like
I would like to see ABI supported, especially in runtime. Maybe add something like runtime.executeMethod(args)?
Additional context
PyTEAL recently added comprehensive ABI support, and a few Algorand projects (e.g. Pact) have already implemented support in their Mainnet smart contracts.

This is related to ARC-4, we are planning it.

we are working on this in the current sprint

This would be really helpful for our algobuilder adoption at a project I'm working on.
This is constraining our ability to include support for Teal version 7.


chore(binding/py): pkg rename

Update package name to ast_grep

Thanks for the contribution! But at the moment ast-grep-py looks a nice package name already.


pebble-sdk: init at 4.5

Motivation for this change
Package the Pebble SDK, the SDK for developing watchapps and watchfaces for the Pebble smartwatches. Pebble may be defunct, but there's still a solid community of us developing apps for their watches!
Most of the work in this PR was based on #35083.
Things done

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

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

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

Putting this PR on hold - investigating a possible better way to package this.

Closing in favour of https://github.com/Sorixelle/pebble.nix.


[BUG] Occasional errors in clip by ROI and bundlesection code

Whenever we clip by ROI, whether for the tract profiles or in the bundlesection code, there is sometimes errors where streamlines do not get clipped correctly or at all. I am not sure what causes this.

I am going to implement this: https://github.com/yeatmanlab/pyAFQ/issues/1137
and see if that fixes this along the way


shared: Use tsc-generated versions of shared code

zulip/zulip#22586 is now merged. Updated this to use it, and it should be ready to merge.

Looks good to me!

Are we waiting for another review on this?

Nope! Thanks for the bump (and the review); must have slid off my radar. Merging now.


Automated scheduling of creation of shared ROSA cluster and another end of business reaper

Adding two new workflow files:

rosa-cluster-auto-provision-on-schedule
rosa-cluster-auto-delete-on-schedule

Setting static values for cluster creation, as below:

CLUSTER_NAME: shared-crossdc
COMPUTE_MACHINE_TYPE: m5.xlarge
MULTI_AZ: false
REPLICAS: 2

and a Rosa cluster reaper scripts, which takes input of a list of "ready" state clusters

rosa_cluster_reaper.sh

My first attempt at GH workflow's so if something's amiss, please correct it :)
Open question, there could be cluster's which could be in other states other than ready, do we want any alert on it ? Another question is, do we want any email notification after the job is complete, alternative would be to personally tune the GH Workflow notifications to report on this workflow, reducing the email clutter.

@kami619 running out a bit of time before leaving for PTO, and not sure I explained correctly what I proposed, so will try to explain here:

rosa-cluster-create.yml when executed by default should create the default shared cluster we want
rosa-cluster-delete.yml should have an option to delete all clusters directly

Now to schedule the above you can either do:

Add schedule directly to those workflows
Add schedule in separate workflows

Personally I like separating the schedule from the workflow, so leaning towards 2. As you can see in https://github.com/keycloak/keycloak-quickstarts/blob/latest/.github/workflows/schedule.yml it's fairly simple to create a schedule workflow that is only used to execute another workflow. gh workflow run also allows passing inputs to the workflow it's running, so if we don't want to make delete all clusters the default in rosa-cluster-delete.yml it can enable this option when running that workflow.

@mhajas last round 🥊  :) review 🤞🏼


Using expression for container image name

I'd like to be able to use an expression to set the image property for a job container. eg. given a variable containerResource, do similar to:
  container:
    image: $[ variables['containerResource'] ]

Currently, if an expression / variable is supplied, it is not expanded.

Same here, but I would be fine with pipeline variables
variables:
  DOCKER_IMAGE_FULL_NAME: my-docker-image

resources:
  container:
    image: $(DOCKER_IMAGE_FULL_NAME)


Work on the scroll bar.

I made a sleek scroll-bar, with transparent scroll-track bar and sleek, round border scroll-thumb.
Before

after

Hi, Suchitra Sahoo .please assign this issue to me.
I think I can fix this issue by adding a more beatufil custom scroll bar
Allow me to work on it under GSSOC 2024.

@sau-mili I can't see your after image?

@sau-mili I can't see your after image?

is it visible now?


Fix visualization documentation

Summary
This PR fixes some bugs in the qiskit_experiments.visualization module's documentation.
Details and comments
Upon viewing the generated dev documentation for the visualization module, I noticed that some formatting was incorrect. This PR fixes these issues and correct some spelling mistakes. Below is a list of the changes, with screenshots to illustrate some changes.

Fix formatting of BaseDrawer method descriptions in class docstring.
Add options and figure_options to class docstrings for plotters and drawers. This required creating the autodoc_visualization Sphinx extension. It is based on the autodoc_experiment and autodoc_analysis extensions, which implement similar functionality.
Add proper formatting of some parameter lists in class methods (e.g., expected_series_data_keys()).
Remove types from returns docstrings as the type is present in method signatures.
Fix incorrect heading formatting for class docstrings.
Fix incorrect directives for some docs (e.g., code-block).
Remove usage of invalid :type: directive.
Fix incorrect indentation for args and returns directives.
Improve code snippets.
Fix spelling and grammar.

Comparison screenshots
Fix formatting of BaseDrawer method descriptions in class docstring.

Before
After

Fix "returns" directives and remove types

Before
After

Add proper formatting of some parameter lists in class methods (e.g., expected_series_data_keys()).

Before
After

Add options and figure_options to class docstrings for plotters and drawers.

@coruscating: I've addressed the line width, punctuation, and hyphenation issues you brought up. The report_red_chi2_label issue requires your input to determine if my solution is satisfactory. However, the PR is ready for re-review.


Deployment

Deployment
User Story
As a boot camp student
I want the prework notes to be structured on a webpage
So that I can easily find and read the information
Acceptance Criteria
GIVEN a Prework Study Guide website
WHEN I visit the website using the URL,
THEN I can access my website from any browser

Deployment through Pages seems to be taking longer than expected


RS2418+ Synology E10M20-T1 not found by script

I just install a Synology E10M20-T1 in my RS2418+. It shows up the info center, but the script is not finding it. Is there something I can do to make it work properly? Using 2x Samsung EVO drives, that were previous found using the Syno supported M.2 expansion card. Trying to add 10GBE support. Thanks for any help you can offer!

Sorry, I got it working!
I had to run the https://github.com/007revad/Synology_enable_M2_card and worked!! Both M.2 drives, and the NIC showed up. You rock!!! Thank you so much for all your work!


🤖 Add authors and contributors to Practice Exercises

With v3, we've introduced the idea of exercise authors and contributors. This information is stored in the exercises' .meta/config.json files (see the docs).
Concept Exercises, which are all new, already contain authors and contributors. Practice Exercises though are missing this information. In this PR, we attempt to populate the authors and contributors of Practice Exercises based on their commit history.
Maintainer TODO list
These are the things you, the maintainers, should do:

[ ] Check the authors and contributors, adding/removing users where the data is missing or incorrect
[ ] Double-check any renamed Practice Exercises
[ ] Check for Practice Exercises with missing authors, which are most likely due to the author not being on GitHub anymore
[ ] Add additional authors if you know that a Practice Exercise has actually been created by more than one author

For clarity, authors should be the people who originally created the exercise on this track. Contributors should be people who have substantially contributed to that exercise. PRs for typos or multiple-exercise PRs do not automatically mean someone should be considered a contributor to that exercise. Those non-exercise-specific contributions will get recognition through Exercism's reputation system in v3.
If you find something needs updating, just push a new commit to this PR.
Automatic Merging
We will automatically merge this PR before we launch v3, but will give the maximum time we can to maintainers to review it first.

The rest of this issue explains how this PR has been generated. You do not need to read it.
Algorithm
We start out by looking at the current Practice Exercises. For each Practice Exercise, we'll look at the commit history of its files to see which commits touched that Practice Exercise. How renames are handled is discussed in the "Renames" section later in this document.
Any commit that we can associate with a Practice Exercise is used to determine authorship/contributorship. Here is how we assign authorship/contributorship:
Authors

Find the Git commit author of the oldest commit linked to that Practice Exercise.
Find the GitHub username for the Git commit author of that commit
Add the GitHub username of the Git commit author to the authors key in the .meta/config.json file

Contributors

Find the Git commit authors and any co-authors of all but the oldest commit linked to that Practice Exercise. If there is only one commit, there won't be any contributors.
Exclude the Git commit author and any co-authors of the oldest commit from the list of Git commit authors (an author is not also a contributor)
Find the GitHub usernames for the Git commit authors and any co-authors of those commits
Add the GitHub usernames of the Git commit authors and any co-authors to the contributor key in the .meta/config.json file

We're using the GitHub GraphQL API to find the username of a commit author and any co-authors. In some cases though, a username cannot be found for a commit (e.g. due to the user account no longer existing), in which case we'll skip the commit.
Renames
There are a small number of Practice Exercises that might have been renamed at some point. You can ask Git to "follow" a file over its renames using git log --follow <file>, which will also return commits made before renames. Unfortunately, Git does not store renames, it just stores the contents of the renamed files and tries to guess if a file was renamed by looking at its contents. This can (and will) lead to false positives, where Git will think a file has been renamed whereas it hasn't. As we don't want to have incorrect authors/contributors for exercises, we're ignoring renames. The only exception to this are known exercise renames:

bracket-push was renamed to matching-brackets
retree was renamed to satellite
resistor-colors was renamed to resistor-color-duo
kindergarden-garden was renamed to kindergarten-garden

If you know of a rename of a Practice Exercise, please check to see if its authors and contributors are correctly set.
Exclusions
There are some commits that we skip over, which thus don't influence the authors/contributors list:

Commits authored by dependabot[bot], dependabot-preview[bot] or github-actions[bot]
Bulk update PRs made by ErikSchierboom or kytrinx to update the track

Tracking
https://github.com/exercism/v3-launch/issues/24

cc @aarti, @abartov, @abeger, @adimasuhid, @ajwann, @aleksandrilyin, @alexbrinkman, @alexkalderimis, @alexpchin, @alliesauce, @alxndr, @anthonygreen, @architapatelis, @austinlyons, @avit, @benoittgt, @bernardoamc, @bgrabow, @bjmllr, @bmkiefer, @bmulvihill, @boddhisattva, @budmc29, @cadwallion, @callahat, @casto101, @ccouzens, @chintas1, @chrisvroberts, @claytonflesher, @clettenberg, @cloudleo, @Cohen-Carlisle, @connermcd, @connorlay, @coolbrg, @copiousfreetime, @cored, @dalexj, @dkinzer, @doncruse, @dougtebay, @dpneumo, @drueck, @durrellchamorro, @ebiven, @emcoding, @etmoore, @etrepum, @Eventlessdrop, @fabienalbi, @favrik, @fluxusfrequency, @fredrb, @Gaelan, @gatorjuice, @gchan, @gilmatic, @glamouracademy, @guygastineau, @haines, @haus, @henrik, @hilary, @iHiD, @Insti, @jbergenson, @jcasimir, @jeporcher, @JikkuJose, @jmay, @jonatas, @joshgoebel, @jpotts244, @julianandrews, @kangkyu, @kchien, @kenliu, @kewlar, @kickinbahk, @koriroys, @Kosmas, @kotp, @kvsm, @KyleMartin901, @kytrinyx, @landongrindheim, @m1kal, @mambocab, @mamenama, @markijbema, @martinsvalin, @martyhines, @mattkimmel, @McEileen, @meaganewaller, @mftaff, @mhelmetag, @mike-hewitson, @mikegehard, @mjansen401, @monkbroc, @moofkit, @moveson, @n8chz, @Nadrioc, @nathanbwright, @NeimadTL, @Nerian, @nikhiltaneja, @njbbaer, @NobbZ, @notapatch, @PatrickMcSweeny, @Pavling, @pck, @pendletons, @petertseng, @pgaspar, @prathamesh-sonpatki, @prbroadfoot, @pvcarrera, @raadler, @ramonh, @raysapida, @rcuhljr, @remcopeereboom, @repinel, @rhoprhh, @RiderSargent, @Rojo, @rpalo, @Ryan1729, @ryanplusplus, @sambev, @samjonester, @sas2job, @sbagdat, @scottcrawford03, @sebarmano, @securitylater, @seeflanigan, @shingara, @siakaramalegos, @sivabudh, @sjwarner-bp, @skeskali, @SleeplessByte, @snoozer05, @srabuini, @stevensonmt, @StevenXL, @Teapane, @thejoycekung, @Thrillberg, @toddsiegel, @tommyschaefer, @Tonkpils, @trayo, @tryantwit, @tuxagon, @Tuxified, @tylerferraro, @vitoreiji, @vosechu, @wvmitchell, @zvkemp as you are referenced in this PR

(also cc @fabienalbi, @favrik, @fluxusfrequency, @fredrb, @Gaelan, @gatorjuice, @gchan, @gilmatic, @glamouracademy, @guygastineau, @haines, @haus, @henrik, @hilary, @iHiD, @Insti, @jbergenson, @jcasimir, @jeporcher, @JikkuJose, @jmay, @jonatas, @joshgoebel, @jpotts244, @julianandrews, @kangkyu, @kchien, @kenliu, @kewlar, @kickinbahk, @koriroys, @Kosmas, @kotp, @kvsm, @KyleMartin901, @kytrinyx, @landongrindheim, @m1kal, @mambocab, @mamenama, @markijbema, @martinsvalin, @martyhines, @mattkimmel, @McEileen, @meaganewaller, @mftaff, @mhelmetag, @mike-hewitson, @mikegehard, )

(also cc @mjansen401, @monkbroc, @moofkit, @moveson, @n8chz, @Nadrioc, @nathanbwright, @NeimadTL, @Nerian, @nikhiltaneja, @njbbaer, @NobbZ, @notapatch, @PatrickMcSweeny, @Pavling, @pck, @pendletons, @petertseng, @pgaspar, @prathamesh-sonpatki, @prbroadfoot, @pvcarrera, @raadler, @ramonh, @raysapida, @rcuhljr, @remcopeereboom, @repinel, @rhoprhh, @RiderSargent, @Rojo, @rpalo, @Ryan1729, @ryanplusplus, @sambev, @samjonester, @sas2job, @sbagdat, @scottcrawford03, @sebarmano, @securitylater, @seeflanigan, @shingara, @siakaramalegos, @sivabudh, @sjwarner-bp, @skeskali, @SleeplessByte, @snoozer05, @srabuini)

(also cc @stevensonmt, @StevenXL, @Teapane, @thejoycekung, @Thrillberg, @toddsiegel, @tommyschaefer, @Tonkpils, @trayo, @tryantwit, @tuxagon, @Tuxified, @tylerferraro, @vitoreiji, @vosechu, @wvmitchell, @zvkemp)

Along the lines of Alexander's comment -- my changes were to the full Ruby codebase, not to each test.
Were I in your position I'd remove mambocab from the per-test list of contributors and perhaps bump my handle to a different area, specifying that I contributed to Ruby harness maintenance. I leave it to the active maintainers of course, but I have a slight preference for clean metadata in this case. I don't want to overshadow others' per-test contributions with my small, mostly-automatic improvement.

This PR has been open for about 3 months. As having this PR merged is important to prepare this track for Exercism v3, we'll automatically merge this PR at the end of this week. If you need a little more time, convert this PR to a draft.


"Mărculești-Gară" is listed in the drop-down menu

Description:
"Mărculești-Gară" is listed in the drop-down menu alongside its corresponding county and commune, according to the law
Precondition:
The website is up an running.

Step 1
Type "Mărculești-Gară" in the search bar.

Expected results
The location is listed in the drop-down menu as "Sat Mărculești-Gară, CĂLĂRAȘI (Perișoru)".


Fixing test_router_dhcp outside ping response as it was failing the a…

fixed small issue regarding outside ping in test_router_dhcp.
 All logs will be available here ====

=== Marvin Init Logging Successful===

==== Marvin Init Successful ====
Creating Admin Account for domain b1376fae-6e2a-11e6-bca7-000c290e77f6 on zone 7060c2b9-7ea2-475f-9b74-56ce80444feb
Creating Service Offering on zone 7060c2b9-7ea2-475f-9b74-56ce80444feb
Creating Network Offering on zone 7060c2b9-7ea2-475f-9b74-56ce80444feb
Creating Network for Account test-a-TestRouterDHCPHosts-MIM7KC using offering e9df309c-3537-4035-9168-17a5e3219415
Creating VM1 for Account test-a-TestRouterDHCPHosts-MIM7KC using offering a41fef95-7352-408a-af16-20e8573c9b47 with IP <IP_ADDRESS>
Creating VM2 for Account test-a-TestRouterDHCPHosts-MIM7KC using offering a41fef95-7352-408a-af16-20e8573c9b47 with IP <IP_ADDRESS>
Starting test_router_dhcphosts...
Creating Firewall rule for VM ID: 9e8e9843-95d4-432b-9ea2-da52ef016ffa
Creating NAT rule for VM ID: 9e8e9843-95d4-432b-9ea2-da52ef016ffa
Creating Firewall rule for VM ID: 69cbe80b-9335-40f7-8a5f-b9a72120fb1b
Creating NAT rule for VM ID: 69cbe80b-9335-40f7-8a5f-b9a72120fb1b
Testing SSH to VMs 9e8e9843-95d4-432b-9ea2-da52ef016ffa and 69cbe80b-9335-40f7-8a5f-b9a72120fb1b
SSH into VM with IP: <IP_ADDRESS>
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:222 RetryCnt:5===
SshClient: Exception under createConnection: ['Traceback (most recent call last):\n', '  File "/usr/local/lib/python2.7/site-packages/marvin/sshClient.py", line 121, in createConnection\n    timeout=self.timeout)\n', '  File "/usr/local/lib/python2.7/site-packages/paramiko/client.py", line 305, in connect\n    retry_on_signal(lambda: sock.connect(addr))\n', '  File "/usr/local/lib/python2.7/site-packages/paramiko/util.py", line 269, in retry_on_signal\n    return function()\n', '  File "/usr/local/lib/python2.7/site-packages/paramiko/client.py", line 305, in <lambda>\n    retry_on_signal(lambda: sock.connect(addr))\n', '  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 228, in meth\n    return getattr(self._sock,name)(*args)\n', 'error: [Errno 51] Network is unreachable\n']
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/marvin/sshClient.py", line 121, in createConnection
    timeout=self.timeout)
  File "/usr/local/lib/python2.7/site-packages/paramiko/client.py", line 305, in connect
    retry_on_signal(lambda: sock.connect(addr))
  File "/usr/local/lib/python2.7/site-packages/paramiko/util.py", line 269, in retry_on_signal
    return function()
  File "/usr/local/lib/python2.7/site-packages/paramiko/client.py", line 305, in <lambda>
    retry_on_signal(lambda: sock.connect(addr))
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
error: [Errno 51] Network is unreachable
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:222 RetryCnt:4===
SshClient: Exception under createConnection: ['Traceback (most recent call last):\n', '  File "/usr/local/lib/python2.7/site-packages/marvin/sshClient.py", line 121, in createConnection\n    timeout=self.timeout)\n', '  File "/usr/local/lib/python2.7/site-packages/paramiko/client.py", line 324, in connect\n    raise NoValidConnectionsError(errors)\n', 'NoValidConnectionsError: [Errno None] Unable to connect to port 222 on <IP_ADDRESS>\n']
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/marvin/sshClient.py", line 121, in createConnection
    timeout=self.timeout)
  File "/usr/local/lib/python2.7/site-packages/paramiko/client.py", line 324, in connect
    raise NoValidConnectionsError(errors)
NoValidConnectionsError: [Errno None] Unable to connect to port 222 on <IP_ADDRESS>
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:222 RetryCnt:3===
===SSH to Host <IP_ADDRESS> port : 222 SUCCESSFUL===
{Cmd: ping -c 3 <IP_ADDRESS> via Host: <IP_ADDRESS>} {returns: [u'PING <IP_ADDRESS> (<IP_ADDRESS>) 56(84) bytes of data.', u'64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=58 time=2.24 ms', u'64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=58 time=1.99 ms', u'64 bytes from <IP_ADDRESS>: icmp_seq=3 ttl=58 time=1.98 ms', u'', u'--- <IP_ADDRESS> ping statistics ---', u'3 packets transmitted, 3 received, 0% packet loss, time 2000ms', u'rtt min/avg/max/mdev = 1.981/2.072/2.245/0.127 ms']}
SSH result: [u'PING <IP_ADDRESS> (<IP_ADDRESS>) 56(84) bytes of data.', u'64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=58 time=2.24 ms', u'64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=58 time=1.99 ms', u'64 bytes from <IP_ADDRESS>: icmp_seq=3 ttl=58 time=1.98 ms', u'', u'--- <IP_ADDRESS> ping statistics ---', u'3 packets transmitted, 3 received, 0% packet loss, time 2000ms', u'rtt min/avg/max/mdev = 1.981/2.072/2.245/0.127 ms']; COUNT is ==> 0
SSH into VM with IP: <IP_ADDRESS>
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:223 RetryCnt:5===
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:223 RetryCnt:5===
===SSH to Host <IP_ADDRESS> port : 223 SUCCESSFUL===
===SSH to Host <IP_ADDRESS> port : 223 SUCCESSFUL===
{Cmd: ping -c 3 <IP_ADDRESS> via Host: <IP_ADDRESS>} {returns: [u'PING <IP_ADDRESS> (<IP_ADDRESS>) 56(84) bytes of data.', u'64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=58 time=2.05 ms', u'64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=58 time=1.97 ms', u'64 bytes from <IP_ADDRESS>: icmp_seq=3 ttl=58 time=1.95 ms', u'', u'--- <IP_ADDRESS> ping statistics ---', u'3 packets transmitted, 3 received, 0% packet loss, time 2000ms', u'rtt min/avg/max/mdev = 1.957/1.993/2.050/0.065 ms']}
{Cmd: ping -c 3 <IP_ADDRESS> via Host: <IP_ADDRESS>} {returns: [u'PING <IP_ADDRESS> (<IP_ADDRESS>) 56(84) bytes of data.', u'64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=58 time=2.05 ms', u'64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=58 time=1.97 ms', u'64 bytes from <IP_ADDRESS>: icmp_seq=3 ttl=58 time=1.95 ms', u'', u'--- <IP_ADDRESS> ping statistics ---', u'3 packets transmitted, 3 received, 0% packet loss, time 2000ms', u'rtt min/avg/max/mdev = 1.957/1.993/2.050/0.065 ms']}
SSH result: [u'PING <IP_ADDRESS> (<IP_ADDRESS>) 56(84) bytes of data.', u'64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=58 time=2.05 ms', u'64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=58 time=1.97 ms', u'64 bytes from <IP_ADDRESS>: icmp_seq=3 ttl=58 time=1.95 ms', u'', u'--- <IP_ADDRESS> ping statistics ---', u'3 packets transmitted, 3 received, 0% packet loss, time 2000ms', u'rtt min/avg/max/mdev = 1.957/1.993/2.050/0.065 ms']; COUNT is ==> 0
Testing DHCP hosts for VMs 9e8e9843-95d4-432b-9ea2-da52ef016ffa and 69cbe80b-9335-40f7-8a5f-b9a72120fb1b
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' RESULT IS ==> [u'<IP_ADDRESS>']
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' RESULT IS ==> [u'<IP_ADDRESS>']
Deleting and Expunging VM 9e8e9843-95d4-432b-9ea2-da52ef016ffa with ip <IP_ADDRESS>
Creating new VM using the same IP as the one which was deleted => IP <IP_ADDRESS>
Testing DHCP hosts for VMs aca195bf-cd37-4348-9e7c-375cb14beef7 and 69cbe80b-9335-40f7-8a5f-b9a72120fb1b
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' RESULT IS ==> [u'<IP_ADDRESS>']
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
====Trying SSH Connection: Host:<IP_ADDRESS> User:root                                   Port:22 RetryCnt:60===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
===SSH to Host <IP_ADDRESS> port : 22 SUCCESSFUL===
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
{Cmd: ssh -i ~/.ssh/id_rsa.cloud -ostricthostkeychecking=no -oUserKnownHostsFile=/dev/null -p 3922 <IP_ADDRESS> cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' via Host: <IP_ADDRESS>} {returns: [u'<IP_ADDRESS>']}
cat /etc/dhcphosts.txt | grep <IP_ADDRESS> | sed 's/\,/ /g' | awk '{print $2}' RESULT IS ==> [u'<IP_ADDRESS>']
=== TestName: test_router_dhcphosts | Status : SUCCESS ===

===final results are now copied to: /tmp//MarvinLogs/test_router_dhcphosts_9144IS===

@borisstoyanov This PR can be probably closed since the issue with correct ping responses is being addressed globally in PR1651

Yes @serg38 you're tight. Closing it now.


GP2040-CE  as HID for SNES, NES ,  PC  and other controllers...

Hello!!   Im about two weeks searching info  to use the RP2040  as a stick HID to control SNES pads....
Im not a low level coder,  so I can not convert NES code to SNES using PICO.
I think it will be awesome to have different controllers implemented inside GP2040-CE.
Anyone skilled to do it?
I have samples from :
NES to USB   using PICO
https://github.com/printnplay/Pico-MicroPython/blob/main/NES2USB.py
PC-DSUB to USB  using PICO
https://www.instructables.com/Retro-9-Pin-Joystick-to-USB-Converter/
SNES to USB  using ARDUINO.....
https://dragaosemchama.com/2015/11/controller-de-super-nintendo-no-pc/
Here all my data search   (have a lot more code with SNES to USB using arduino)
THANKS A LOT FOR YOUR HARD WORK !!!!
GP2040 IS AWESOME !!!!!

Before closing this Thread,   PLEASE CONSIDER THIS:
DaemonBite for arduino SUPPORTS :

Arcade Sticks
C64 controllers
Amiga controllers
Atari controllers
NeoGeo  controllers

This request is a hard request.  Please Consider this well in the  "planning route"  for GP2040-CE.
DaemonBite

Before closing this Thread, PLEASE CONSIDER THIS:
DaemonBite for arduino SUPPORTS :

Arcade Sticks
C64 controllers
Amiga controllers
Atari controllers
NeoGeo  controllers

This request is a hard request. Please Consider this well in the "planning route" for GP2040-CE.
DaemonBite

GP2040-CE already has a drop in replacement configuration for the Daemonbite Arcade Encoder with Sparkfun Pro Micro - RP2040 support. The pin mappings are 1-to-1 for arcade sticks.

Closing this as out of scope

The NES and SNES controllers don't use a 1-to-1 pin mapping for inputs. They use a data/latch/clock system using 3 I/O pins to represent 12 possible inputs. See here: https://gamesx.com/controldata/snesdat.htm


feat: faucet api, auth key, GetHostPeerAddress

Summary

opens up ICtest to use <IP_ADDRESS> (all interfaces) instead of only localhost. I am worried about this so others inputs here would be great. Seems fine for GH actions and locally running. Required for public testnets such as Ethos
--auth-key start flag for permissioned/internal API access only
faucet endpoint to fund accounts
GetHostPeerAddress to query the chain and sync external node

This allowed me to sync an external juno node to the local-interchaintest network from genesis :partying_face:

PR 921 implements this since it is required for ETH support


Configure jsx-closing-bracket-location for self-closing and non-empty tags

Optionally, one can configure the behaviour of jsx-closing-bracket-location
when dealing with different types of tags. Additionally, it allows a simple
string config instead of the previous object with a single location property
(which is still supported).
This fixes #208

Great! Thank you very much for this!

No problem, glad I could help!

On Sep 16, 2015, at 01:52, Yannick Croissant<EMAIL_ADDRESS>wrote:
Great! Thank you very much for this!
—
Reply to this email directly or view it on GitHub.


.Truncated not true for manual summary split with no content

Given the following md file in its entirety with manual summary split:
+++
title = "3 Coin 8 GPU GTX1060 3GB Mining Rig"
date = 2017-10-11T16:29:45+08:00
description = "$3000 Mining Rig Build, 8x GTX1060 3GB Build + Performance (ETH/ZEC/XMR)"
youtube = "jMjyZl3ri1E"
build = "3-coin-8-gpu-gtx1060-3gb"
todo = [
  "add newegg referral links"
]
+++
<!--more-->

The value of the Page variable .Truncated is not true. My current workaround is to add a unicode whitespace following the manual summary split, e.g.
<!--more-->

The value of the Page variable .Truncated is not true.

So, there is no content after the summary. That is not truncated in my head. Can you explain why you mean this is wrong behaviour?

The mere presence of a manual summary split should trigger .Truncated be truthy regardless of the presence of additional content—otherwise it's not fully manual.

otherwise it's not fully manual.

Who said anything about fully manual?

My inner dialog spoke to me. If the tin says manual (as in ”manual summary split”) I'd expect more control. Of course I'm satisfied with my workaround—it is a bit of an edge case I admit. Will close this since I know you have better things to be doing @bep.

For completeness:
I, and I guess many others, have post listings with conditionals ala ´if .Truncated Read More. If we changed the meaning of Truncated` (which now means: There are content below summary) that would be a glass breaking change that would require a really good reason.


Delete Blob with blob name too long should fail

Which service(blob, file, queue, table) does this issue concern?
Blob
Which version of the Azurite was used?
3.4.0
Where do you get Azurite? (npm, DockerHub, NuGet, Visual Studio Code Extension)
npm
What's the Node.js version?
v11.10.0
What problem was encountered?
When deleting a blob with a name that is too long (more than 1024 characters) using delete if not exists, I expect the operation to fail due to the bad name. Instead, the call succeeds because the HTTP response is 404. This is different than the behavior for the Azure Storage Emulator.
Steps to reproduce the issue?
Using C++ API (or any language), call delete_blob_if_exists_async where the blob name is 1025 characters long. The call should fail, instead it reports that the blob did not exist.
Have you found a mitigation/solution?
Disabling the test we have in our code for now.

I see the same issue with checking if a blob exists when the name is longer than 1025 characters. I expect to get HTTP 400 (One of the request inputs is out of range.), which is what the emulator and the real storage service return.

Hi @mattdurak Thanks for bringing this! Azurite currently doesn't force 1025 chars. Will update in future releases. In the mean time, welcome contribution!


Fix address already in use error in NetworkingThreadPosix on macOS

If #330 is merged, this PR might be obsolete.

Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] I have updated the changelog accordingly.
[ ] I have added tests to cover my changes.

I don't know how to properly test this and am open for suggestions.

If there is any way in which I can assist in moving this PR along, feel free to reach out :)

fixed in #330


🐛 Camera preview blank screen when using Skia Frame Processors

What's happening?
Hi @mrousavy, thank you for the great work with this library.

However, I have been having issues with applying filters using useSkiaFrameProcessors, even when using the boilerplate provided in the docs.
I've tried two implementations

My own app using a grain filter (right)
Example app with an inverted colour filter (left)

The camera preview ends up being just the filter, without any image. Please refer to the code and logs from both cases below.
I'm wondering whether this might be a hardware issue? I'm currently developing on an old Huawei P10 (released in 2017, Android 9). Ive had a friend run the app on a Samsung S23 Ultra and he did not encounter this issue.
Reproduceable Code
// RECIPICS Code
  const grainFilter = Skia.RuntimeEffect.Make(`
  uniform shader image;
  half4 main(vec2 pos) {
    vec4 color = image.eval(pos);
    float grain = fract(sin(dot(pos, vec2(12.9898, 78.233))) * 43758.5453);
    color.rgb += grain * ${color};
    return color;  }`)
  const shaderBuilder = Skia.RuntimeShaderBuilder(grainFilter)
  const imageFilter = Skia.ImageFilter.MakeRuntimeShader(shaderBuilder, null, null)
  const paint = Skia.Paint()
  paint.setImageFilter(imageFilter)
  const frameProcessor = useSkiaFrameProcessor((frame) => {
    'worklet'
    frame.render(paint)
  }, [paint])
        <Camera
          style={{
            flex: 1
          }}
          ref={camera}
          style={{ width: 400, height: 400 }}
          device={device}
          isActive={true}
          frameProcessor={frameProcessor}
          pixelFormat="yuv"
          photo={false}
          format={format}
        />
      }

// Example App Code
  const invertColorsFilter = Skia.RuntimeEffect.Make(`
  uniform shader image;
  half4 main(vec2 pos) {
    vec4 color = image.eval(pos);
    return vec4((1.0 - color).rgb, 1.0);
  }
`)
  const shaderBuilder = Skia.RuntimeShaderBuilder(invertColorsFilter);

  const imageFilter = Skia.ImageFilter.MakeRuntimeShader(shaderBuilder, null, null)
  const paint = Skia.Paint()
  paint.setImageFilter(imageFilter)

  const frameProcessor = useSkiaFrameProcessor((frame) => {
    'worklet'
    frame.render(paint)
  }, [paint])

Relevant log output
2024-06-04 17:21:01.877 30369-30668 CameraView              com.recipics                         I  invokeOnAverageFpsChanged(11.42263759086189)
2024-06-04 17:21:01.921 30369-30680 GRALLOC                 com.recipics                         I  LockFlexLayout: baseFormat: 11, yStride: 640, ySize: 307200, uOffset: 307200,  uStride: 640
2024-06-04 17:21:01.952 30369-30369 GLConsumer              com.recipics                         E  [SurfaceTexture-0-30369-2] checkAndUpdateEglState: invalid current EGLContext
2024-06-04 17:21:01.952 30369-30369 surfaceTexture          com.recipics                         E  Exception updateTexImage
                                                                                java.lang.IllegalStateException: Unable to update texture contents (see logcat for details)
                                                                                at android.graphics.SurfaceTexture.nativeUpdateTexImage(Native Method)
                                                                                at android.graphics.SurfaceTexture.updateTexImage(SurfaceTexture.java:249)
                                                                                at com.shopify.reactnative.skia.PlatformContext.notifyDrawLoop(Native Method)
                                                                                at com.shopify.reactnative.skia.PlatformContext.-$$Nest$mnotifyDrawLoop(Unknown Source:0)
                                                                                at com.shopify.reactnative.skia.PlatformContext$1.doFrame(PlatformContext.java:61)
                                                                                at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1090)
                                                                                at android.view.Choreographer.doCallbacks(Choreographer.java:893)
                                                                                at android.view.Choreographer.doFrame(Choreographer.java:809)
                                                                                at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1078)
                                                                                at android.os.Handler.handleCallback(Handler.java:907)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:105)
                                                                                at android.os.Looper.loop(Looper.java:216)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:7625)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)

2024-06-04 16:49:16.970  8524-8776  CameraView              com.mrousavy.camera.example          I  invokeOnAverageFpsChanged(4.060913705583756)
2024-06-04 16:49:17.091  8524-8863  GRALLOC                 com.mrousavy.camera.example          I  LockFlexLayout: baseFormat: 11, yStride: 3840, ySize: 8294400, uOffset: 8294400,  uStride: 3840
2024-06-04 16:49:17.123  8524-8609  <no-tag>                com.mrousavy.camera.example          E  [ZeroHung]zrhung_get_config: Get config failed for wp[0x0102]
2024-06-04 16:49:17.184  8524-8524  GLConsumer              com.mrousavy.camera.example          E  [SurfaceTexture-0-8524-1] checkAndUpdateEglState: invalid current EGLContext
2024-06-04 16:49:17.185  8524-8524  surfaceTexture          com.mrousavy.camera.example          E  Exception updateTexImage
                                                                                java.lang.IllegalStateException: Unable to update texture contents (see logcat for details)
                                                                                at android.graphics.SurfaceTexture.nativeUpdateTexImage(Native Method)
                                                                                at android.graphics.SurfaceTexture.updateTexImage(SurfaceTexture.java:249)
                                                                                at com.shopify.reactnative.skia.PlatformContext.notifyDrawLoop(Native Method)
                                                                                at com.shopify.reactnative.skia.PlatformContext.-$$Nest$mnotifyDrawLoop(Unknown Source:0)
                                                                                at com.shopify.reactnative.skia.PlatformContext$1.doFrame(PlatformContext.java:61)
                                                                                at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1090)
                                                                                at android.view.Choreographer.doCallbacks(Choreographer.java:893)
                                                                                at android.view.Choreographer.doFrame(Choreographer.java:809)
                                                                                at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1078)
                                                                                at android.os.Handler.handleCallback(Handler.java:907)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:105)
                                                                                at android.os.Looper.loop(Looper.java:216)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:7625)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)

Camera Device
[
  {
    "sensorOrientation": "landscape-left",
    "hardwareLevel": "limited",
    "maxZoom": 6,
    "minZoom": 1,
    "maxExposure": 4,
    "supportsLowLightBoost": false,
    "neutralZoom": 1,
    "physicalDevices": [
      "wide-angle-camera"
    ],
    "supportsFocus": true,
    "supportsRawCapture": false,
    "isMultiCam": false,
    "minFocusDistance": 10,
    "minExposure": -4,
    "name": "0 (BACK) androidx.camera.camera2",
    "hasFlash": true,
    "hasTorch": true,
    "position": "back",
    "id": "0"
  },
  {
    "sensorOrientation": "landscape-right",
    "hardwareLevel": "limited",
    "maxZoom": 6,
    "minZoom": 1,
    "maxExposure": 4,
    "supportsLowLightBoost": false,
    "neutralZoom": 1,
    "physicalDevices": [
      "wide-angle-camera"
    ],
    "supportsFocus": true,
    "supportsRawCapture": false,
    "isMultiCam": false,
    "minFocusDistance": 0,
    "minExposure": -4,
    "name": "1 (FRONT) androidx.camera.camera2",
    "hasFlash": false,
    "hasTorch": false,
    "position": "front",
    "id": "1"
  }
]

Device
Huawei P10 (Android 9.0)
VisionCamera Version
4.0.5
Can you reproduce this issue in the VisionCamera Example app?
Yes, I can reproduce the same issue in the Example app here
Additional information

[ ] I am using Expo
[X] I have enabled Frame Processors (react-native-worklets-core)
[X] I have read the Troubleshooting Guide
[X] I agree to follow this project's Code of Conduct
[X] I searched for similar issues in this repository and found none.

Can you try setting your pixelFormat to rgb or yuv to see if there's a difference?

Trying in the Example App pixelFormat to yuv produces similar results
however rgb turns the filter grey, as seen here

Yup, it does render, but theres definitely some overhead due to the frameprocessor.

Then it surely is the paint (or the shader) that's wrong. I think this is more of a question than a VisionCamera bug report.
Overhead; yea I can see that it only runs at 3 FPS on this Android phone - is that an old phone? @wcandillon I think this is something we might need to investigate - it's either the makeNonTextureImage(), or our makeImageFromPlatformBuffer(...) function that's really slow here... 🤔

I would like to check the performance of the makeImageFromPlatformBuffer function on Android. I would be interesting to know about the phone being used here as well as parameters that would allow me to reproduce the issue (e.g a video file that has the same properties).

Hi @mrousavy I dont think its an issue with the paint or shader, as

the Example App uses the inverted colour shader from the docs
These shaders work well on newer hardware (Samsung S23 Ultra)

Granted, the device I'm testing on is very old (Huawei P10 was released 2017). I was wondering if it could be due to these 2 runtime errors as seen in the logs, and would there be any ways to catch them.
2024-06-04 16:49:17.184  8524-8524  GLConsumer              com.mrousavy.camera.example          E  [SurfaceTexture-0-8524-1] checkAndUpdateEglState: invalid current EGLContext
2024-06-04 16:49:17.185  8524-8524  surfaceTexture          com.mrousavy.camera.example          E  Exception updateTexImage                                                                                java.lang.IllegalStateException: Unable to update texture contents (see logcat for details)
@wcandillon What are some information specifically that i could provide about the phone? Also, how would i be able to check the performance of makeImageFromPlatformBuffer?

Ah interesting - i didnt read those logs my bad. It looks like an error, yep. Not sure if it's RN Skia related or VisionCamera related tho

@wcandillon there's quite a few places in the codebase where RN Skia just swallows errors and logs them to the console (and returns null, or doesnt do anything) - I think throwing an Error (which will be propagated to JS) is better, especially in this case here.

I too get a blank screen, maybe different from OP...when I start my Android device - after running a full build on EAS - I get an error on my device:

Invariant Violation: TurboModuleRegistry.getEnforcing(...): 'RNSkiaModule' could not be found. Verify that a module by this name is registered in the native binary.Bridgeless mode: false. TurboModule interop: false. Modules loaded: {"NativeModules":["PlatformConstants","LogBox","SourceCode","Timing","AppState","BlobModule","WebSocketModule","DevSettings","DevToolsSettingsManager","Networking","Appearance","DevLoadingView","HeadlessJsTaskSupport","DeviceInfo","UIManager","DeviceEventManager","RNCSafeAreaContext","IntentAndroid","NativeAnimatedModule","SoundManager","I18nManager","ImageLoader","RNCAsyncStorage","StatusBarManager","StatusBarManager"],"TurboModules":[],"NotFound":["NativePerformanceCxx","NativePerformanceObserverCxx","RedBox","BugReporting","LinkingManager","PlatformLocalStorage","RNC_AsyncSQLiteDBStorage","FrameRateLogger","KeyboardObserver","ModalManager","Worklets","RNSkiaModule"]}, js engine: hermes

I thought to try my emulator and it complains about minSdkVersion on Android needing to be on 26.
All I get is a white screen for my camera view.
    "react-native": "0.73.6",
    "react": "18.2.0",
    "react-native-vision-camera": "^4.0.1",
    "react-native-worklets-core": "^1.3.0",
    "react-native-fast-tflite": "^1.2.0",
    "vision-camera-resize-plugin": "^3.1.0"

Hi @meleffendi  you are lucky at least getting something to viewed. I am getting blank screen. @mrousavy @wcandillon wcandillon  guys anyone can help me to fix this issue?


Redirect user to home page after clicking 'return' on form submitted popup in contactus.html page

As when user fills all the detail and clicks on submit button then site takes user 405 not allowed page, I want to add an alert which will pops up and will tell the user that message was delivered successfully, thanks for their submission.
Can I work on this issue.

Hey @QAZIMAAZARSHAD  actually I have removed that feature of that user will be directed to a fresh new on submission as that was not safe now the new feature is as when user clicks on submit button a box will popup on the same page and a message will be delivered as "Message was delivered successfully!! Thanks for your submission" and also it will consists of an OK button as soon as user will click on that OK button that alert popup box will be closed and user will remain stayed on the same contact page.

Ok fine.
Try to beautify alert with css, use red and black colors.