Use @registry to inject only into one class?

I'm trying to use @registry to inject a Logger into providers, but I want the logger to have some context of where it's being injected to.
So I created this simple decorator, which will take the target.name, so that Logger knows where it was registered, and can then add a prefix to every log message of the parent class name.
export function registerLogger(): ClassDecorator {
    return (target) =>
        registry([
            {
                token: Logster,
                useFactory: () => {
                    return new Logger(target.name);
                },
            },
        ])(target);
}

// ...
// usage
@injectable()
@registerLogger()
export class SomeService {
    // ...
}

This would inject a Logger which would prefix every log message with [SomeService] . But, I realised that @registry will always overwrite the token, so wherever I call @registerLogger last, it will use that class for every instance of the logger.
Am I tackling this completely wrong? Is it possible to do this the way I imagined, or should I take some other path?

Hi @gmenih341, so this is because of how registrations work in TSyringe, they are attached to the token, not to the class you use registry() on. In order for this to work, you would need to use a token unique to the decorated class, or we would need to extend the factory function to be passed in the resolution target (so you could do target.name in the factory).
This functionality has been asked for and work started on it here https://github.com/microsoft/tsyringe/pull/56, but that PR went stale some time ago (the author never came back to update it). I'm thinking of taking a look at it and seeing if I can bring it up to date

@Xapphire13 ah, got it! So an alternative solution for this would be to generate a unique token each time and then use @inject for every use of Logger, or to create a child container and then use child.register to specify which container a token is provided in?
Yeah, looking at #56, it seems like that it wouldn't be hard to achieve what is still missing in that PR. I could definitely take it - should I continue on that branch, or start from scratch?

Let me ping in that PR to see if we can get any traction there first. If not, maybe fork it into a new branch.

Since there was no response in the original PR, I'm not entirely sure what the etiquette is haha. I would suggest forking that PR and submitting a new one

All right, I'll check it out and try to submit a PR sometime this weekend :)


Problem on sending bulk pushes for real world apps

NOTE: Please test in a least two browsers (i.e. Chrome and Firefox). This
helps with diagnosing problems quicker.

Please confirm the following:

[X ] I have read the README entirely
[ X] I have verified in the issues that my problem hasn't already been resolved

Setup

Please provide the following details, the more info you can provide the
better.

Operating System:
PHP Version: <7.2>
web-push-php Version:

Please check that you have installed and enabled these PHP extensions :

[X ] gmp
[ X] mbstring
[ X] curl
[ X] openssl

Please select any browsers that you are experiencing problems with:

[ X] Chrome
[X ] Firefox
[ X] Firefox for Mobile
[ X] Opera for Android
[X ] Samsung Internet Browser
[X ] Other

Please specify the versions (i.e. Chrome Beta, Firefox Beta etc).
All Versions

Problem

Please explain what behaviour you are seeing.

When we send bulk webpushes (lets say 500 webpushes in 1 flush call) if any of the publickey or token is wrong it fails for all webpushes. When you get endpoint info from the browser some people can see the URL that you use to save the data on server side and they can add whatever they want.
Lets say a hacker added millions of fake endpoint or wrong public key or tokens to your system. So you also have many valid subscription data. It's impossible to send WebPushes even to valid subscriber in this case. You must find wrong public keys or auth keys manually and you must delete them manually from your db. It's impossible if you have millions of subscribers data.
Expected
I think WebPush library shouldn't throw any exception on prepare or encrypt method. It can silently add some info to the result and when we get result we can see the error and eliminate these fake data by adding some code like we do for expired endpoints.
Another option is you can add some methods like validate_endpoint_data and we can control the data using this method before adding it to db.

Please explain what you expected to happen

Features Used

[ X] VAPID Support
[X ] GCM API Key
[X ] Sending with Payload

Example / Reproduce Case

Please provide a code sample that reproduces the issue. If there is a
repository that reproduces the issue please put the link here.

Other
Thanks :)

this is interesting

Hi,
Thanks for the comment. The real problem is if you are a push provider you generally add some code to your customer's website and run some script to get the token info.  They can also send a valid User-Agent string. I mean a hacker can easily send everything to your server endpoint.
Lets say you have 499 valid data and 1 invalid token data. Even in this case you can not send any webpush notification to your subscribers. Because the library doesn't fail only for invalid token it fails for all 500 webpushes and you can not send any webpushes to your subscribers.
On the third topic you mentioned above, I couldn't see any validation function in the library. If so I would be happy if you share with me.
Thanks,
Ozgur.

On the third topic you mentioned above, I couldn't see any validation function in the library. If so I would be happy if you share with me.

For sure, because I didn't write it :) What you could also do, for example, is sending a test or welcome message straight on subscription. If that fails, just don't save the subscription info. Would that work for you?

:) If our customer doesn't want to show anything on registration we can not send welcome message to the users. We are not the owner of the subscribers. We are a service provider.
Actually we solve the problem in a different way. We add a few try catch block to the prepare and encrypt method and if error occurs we send empty headers to push servers and push servers gives Invalid Token as a result. So we act them like expired token. It's a quick and dirty fix :) But I think sending invalid tokens to the push servers is not the best way.

We add a few try catch block to the prepare and encrypt method and if error occurs we send empty headers to push servers and push servers gives Invalid Token as a result

Could you please post a code sample here, just so that anyone else who encounters the same issue could use it? I mean while there is no better solution.

But I think sending invalid tokens to the push servers is not the best way.

Well, feel free to submit a pull-request then, I guess :)

So actually we changed the code so heavily. But I will try to add the code blocks we change :) I hope it helps.
WebPush.php
line 303 we don't throw an exception if GCM API Key is empty.
// if GCM
if (substr($endpoint, 0, strlen(self::GCM_URL)) === self::GCM_URL) {
if (array_key_exists('GCM', $auth)) {
$headers['Authorization'] = 'key='.$auth['GCM'];
} else {
$headers['Authorization'] = 'key='.'';
//   throw new \ErrorException('No GCM API Key specified.');
}
}
line 317 we don't throw exception if parse_url fails.
            if (!$audience_arr || !isset($audience_arr['scheme']) || !isset($audience_arr['host'])) {
               // throw new \ErrorException('Audience could not be generated.');
                $audience = ''.'://'.'';
            } else {
                $audience = $audience_arr['scheme'].'://'.$audience_arr['host'];
            }

VAPID.php line 140 : return empty if VAPID Keys are wrong
    try {
        $jsonConverter = new StandardConverter();
        $jwsCompactSerializer = new CompactSerializer($jsonConverter);
        $jwsBuilder = new JWSBuilder($jsonConverter, AlgorithmManager::create([new ES256()]));
        $jws = $jwsBuilder
            ->create()
            ->withPayload($jwtPayload)
            ->addSignature($jwk, $header)
            ->build();

        $jwt = $jwsCompactSerializer->serialize($jws, 0);
        $encodedPublicKey = Base64Url::encode($publicKey);
    } catch(\Exception $e) {
        return [
            'Authorization' => 'vapid t=, k=',
            'Crypto-Key' => 'p256ecdsa='
        ];
    }

Encryption.php our file is completely different bu we added try catch block for creation of sharedSecret.
        try {
            $sharedSecret =  self::getSharedSecret($localKeyObject, Base64Url::decode($userPublicKey));
        } catch (\Exception $e) {
            return [
                'PublicKey'=>null,
                'sharedSecret'=>null
            ];
        }

This would be an issue with the Guzzle client not being configured with the option ['http_errors' => false].

Hi @ryancco I don't think it's related with http_errors parameter because the problem occurs before http request. If endpoint or push keys are not correct library fails on encryption or prepare method just before sending WebPushes to push provider. The problem must be solved before http request also.
BTW We sent billions of web pushes and we haven't seen any problem on http request. Of course if there is a parameter to suppress http errors you can set it by default but the main problem is in encrypt and prepare methods.

@ozgurhangisi to send large amounts of pushes (more than 1 million) what value do you use for flush? do you use multi curl? how much RAM does your sever have? I'm trying to solve issues with sending bulk pushes to large amount of subs and at the moment able to send to ~500 subs in one call which takes about 12-15 seconds to complete, so sending to 1 million of subs takes at least 8 hours and that's pretty much. With FCM I was able to send to 1M in less than 1 minute (without delivery reports, but that is not what I actually care about at the moment) using 10 worker processes with multi curl, but with web push I'm constantly running in different issues: trying to allocate too much memory, too many files open, to long execution... I'm trying to find optimal values.

@ozgurhangisi to send large amounts of pushes (more than 1 million) what value do you use for flush? do you use multi curl? how much RAM does your sever have? I'm trying to solve issues with sending bulk pushes to large amount of subs and at the moment able to send to ~500 subs in one call which takes about 12-15 seconds to complete, so sending to 1 million of subs takes at least 8 hours and that's pretty much. With FCM I was able to send to 1M in less than 1 minute (without delivery reports, but that is not what I actually care about at the moment) using 10 worker processes with multi curl, but with web push I'm constantly running in different issues: trying to allocate too much memory, too many files open, to long execution... I'm trying to find optimal values.

what do you do for "With FCM I was able to send to 1M in less than 1 minute" , I have same issue with "sending to 1 million of subs takes at least 8 hours",  thanks

<?php
use Minishlink\WebPush\Encryption;

foreach ($deliveries as $delivery) {
    $subscription = Subscription::create([
        'endpoint' => $delivery[0]->endpoint,
        "keys" => [
            "auth" => $delivery[0]->key_auth,
            "p256dh" => $delivery[0]->key_p256dh
        ]
    ]);
    $payload = json_encode([
        'title' => $this->title,
        'body' => $this->body,
        'icon' => $this->icon_url,
        'data' => [
            'vibrate' => $vibrate->toArray(),
            'additionalData' => [
                'message_id' => $this->id,
                'delivery_id' => $delivery_id,
            ],
            'url' => $this->urlWithKey($delivery_id),
        ],
    ]);

    //validate keys
    try {
        $contentEncoding = $subscription->getContentEncoding();
        Encryption::encrypt($payload, $delivery[0]->key_p256dh, $delivery[0]->key_auth, $contentEncoding);
    } catch (\Exception $e) {
        continue;
    }

    $pushes[] = [
        'subscription' => $subscription,
        'payload' => $payload,
    ];
}

Hi,
Thanks for the comment. The real problem is if you are a push provider you generally add some code to your customer's website and run some script to get the token info.  They can also send a valid User-Agent string. I mean a hacker can easily send everything to your server endpoint.
Lets say you have 499 valid data and 1 invalid token data. Even in this case you can not send any webpush notification to your subscribers. Because the library doesn't fail only for invalid token it fails for all 500 webpushes and you can not send any webpushes to your subscribers.
On the third topic you mentioned above, I couldn't see any validation function in the library. If so I would be happy if you share with me.
Thanks, Ozgur.

I am doing the same thing as a push provider. My solution is to double confirm the subscription.
Here is what I do.
As I have service worker codes which get the notification data and show notifications , and I also have client javascript codes which subscribe the user.
When the user subscription data posts to my backend server, I send a push notification request to test wether the subscription is valid or not. If it's not, I could simply mark it as invalid subscription.
If it is valid, cos I have add a test tag  to my backend server push request  payload, so the service worker codes know that this is just a test notification, it can simply make a fetch request to tell me that this is a valid and  alive subscriber without showing notification which my clients don't like. And I also do subscription status checking regularly, mark the unsubscribers timely.


Split interface from implementation in Context class

In GitLab by @tpaluszk on Apr 23, 2018, 09:38
This change would increase maintainability of the code and allow us to mock Context class in tests.

In GitLab by @tpaluszk on Apr 23, 2018, 09:38
created branch 88-split-interface-from-implementation-in-context-class

closed via merge request !123


Changes in save files

ERROR:tornado.access:500 POST /battles/create (<IP_ADDRESS>) 51.50ms
ERROR:whyattend.webapp:Exception on /battles/create [POST]
Traceback (most recent call last):
  File "/home/cwtracker/cw.psqd.co/cw.psycho/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/cwtracker/cw.psqd.co/cw.psycho/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/cwtracker/cw.psqd.co/cw.psycho/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/cwtracker/cw.psqd.co/cw.psycho/local/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/cwtracker/cw.psqd.co/cw.psycho/local/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/cwtracker/cw.psqd.co/whyattend/webapp.py", line 152, in decorated_function
    return f(*args, **kwargs)
  File "/home/cwtracker/cw.psqd.co/whyattend/webapp.py", line 198, in decorated_f
    return f(*args, **kwargs)
  File "/home/cwtracker/cw.psqd.co/whyattend/webapp.py", line 824, in create_battle
    battle.score_own_team, battle.score_enemy_team = replays.score(replay)
  File "/home/cwtracker/cw.psqd.co/whyattend/replays.py", line 135, in score
    if v['deathReason'] != -1:
TypeError: list indices must be integers, not str
ERROR:tornado.access:500 POST /battles/create (<IP_ADDRESS>) 46.65ms

Yep, i have the same:
2015-05-30 14:31:20,734 ERROR: Exception on /battles/create [POST]
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functionsrule.endpoint
File "/root/whyattend-master/whyattend/webapp.py", line 152, in decorated_function
return f(*args, **kwargs)
File "/root/whyattend-master/whyattend/webapp.py", line 198, in decorated_f
return f(*args, **kwargs)
File "/root/whyattend-master/whyattend/webapp.py", line 824, in create_battle
battle.score_own_team, battle.score_enemy_team = replays.score(replay)
File "/root/whyattend-master/whyattend/replays.py", line 135, in score
if v['deathReason'] != -1:
TypeError: list indices must be integers, not str
And heard that other clans too have this issue, so it seems replay structure was changed in 9.8

Thanks for the reports. Let me know if ff50d7a fixes it.
The player performance calculation won't work though, I'll have to take a closer look at that.

INFO:whyattend.webapp:Querying Wargaming server for battle schedule of clan 500026631 STRNK
/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py:324: Warning: Data truncated for column 'replay_pickle' at row 1
cursor.execute(statement, parameters)
INFO:whyattend.webapp:Gucio added the battle 608
battle adding working, but cant open recent added battles
ERROR:whyattend.webapp:Exception on /battles/608 [GET]
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functionsrule.endpoint
File "/root/whyattend-master/whyattend/webapp.py", line 152, in decorated_function
return f(*args, **kwargs)
File "/root/whyattend-master/whyattend/webapp.py", line 1048, in battle_details
return render_template('battles/battle.html', battle=battle, replays=replays)
File "/usr/local/lib/python2.7/dist-packages/flask/templating.py", line 128, in render_template
context, ctx.app)
File "/usr/local/lib/python2.7/dist-packages/flask/templating.py", line 110, in _render
rv = template.render(context)
File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 969, in render
return self.environment.handle_exception(exc_info, True)
File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 742, in handle_exception
reraise(exc_type, exc_value, tb)
File "/root/whyattend-master/whyattend/templates/battles/battle.html", line 1, in top-level template code
{% extends "layout.html" %}
File "/root/whyattend-master/whyattend/templates/layout.html", line 163, in top-level template code
{% block content %}{% endblock %}
File "/root/whyattend-master/whyattend/templates/battles/battle.html", line 128, in block "content"
{% if battle.replay.unpickle() %}
File "/root/whyattend-master/whyattend/model.py", line 266, in unpickle
return pickle.loads(self.replay_pickle)
File "/usr/lib/python2.7/pickle.py", line 1382, in loads
return Unpickler(file).load()
File "/usr/lib/python2.7/pickle.py", line 858, in load
dispatchkey
File "/usr/lib/python2.7/pickle.py", line 880, in load_eof
raise EOFError
EOFError
ERROR:tornado.access:500 GET /battles/608 (<IP_ADDRESS>) 108.42ms

"Warning: Data truncated for column 'replay_pickle' at row" makes me think  the replay_pickle column in your database is not large enough to hold the data of the first and third example, while the second still fits. Please try running "ALTER TABLE replay MODIFY replay_pickle LONGBLOB" if you are using MySQL and reupload these replays.

It helps. Thanks for solution. Now all is working as intended.
mysql> describe replay;
+----------------------+--------------+------+-----+---------+----------------+
| Field                | Type         | Null | Key | Default | Extra          |
+----------------------+--------------+------+-----+---------+----------------+
| id                   | int(11)      | NO   | PRI | NULL    | auto_increment |
| replay_pickle        | blob         | YES  |     | NULL    |                |
| replay_blob          | longblob     | YES  |     | NULL    |                |
| associated_battle_id | int(11)      | YES  | MUL | NULL    |                |
| player_name          | varchar(100) | YES  |     | NULL    |                |
+----------------------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

mysql> alter table replay modify replay_pickle longblob;
Query OK, 623 rows affected (1 min 43.44 sec)
Records: 623  Duplicates: 0  Warnings: 0

mysql> describe replay;
+----------------------+--------------+------+-----+---------+----------------+
| Field                | Type         | Null | Key | Default | Extra          |
+----------------------+--------------+------+-----+---------+----------------+
| id                   | int(11)      | NO   | PRI | NULL    | auto_increment |
| replay_pickle        | longblob     | YES  |     | NULL    |                |
| replay_blob          | longblob     | YES  |     | NULL    |                |
| associated_battle_id | int(11)      | YES  | MUL | NULL    |                |
| player_name          | varchar(100) | YES  |     | NULL    |                |
+----------------------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)


[QUESTION] "must be object" during install

Question
Hi!
Sorry if this has been raised before; I couldn't find anything with this exact issue.
I'm new to dashy and I'm not sure what I'm doing wrong. I'm running Ubuntu server with docker, and installing via docker-compose (via Portainer if that matters). First I got a huge error message when deploying, and I managed to find that it was trying to create my-config.yml as a folder. So I deleted that and beforehand created the .yml-file, then it deployed.
So it deploys and starts as it should, but when starting the logs say this (and the web GUI says "possible error, check logs".
$ node server
Checking config file against schema...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Warning: 1 issue found in config file
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

must be object

My config looks like this:

version: "3.8"
services:
dashy:
image: lissy93/dashy
container_name: dashy
volumes:
- /srv/config/dashy/my-config.yml:/app/public/conf.yml
ports:
- 4000:80
environment:
- NODE_ENV=production
- UID=1000
- GID=1000
restart: unless-stopped
healthcheck:
test: ['CMD', 'node', '/app/services/healthcheck']
interval: 1m30s
timeout: 10s
retries: 3
start_period: 40s
User and group 1000 is correct. I saw something in the troubleshooting documentation about Auth Validation Error: "should be object" - but I'm not sure this is the same thing. If it is - where is the appconfig.auth file located? It's a fresh install so I'm not sure why I should be needing to edit files from the get go. Unless that file is something in docker or the OS.
Appreciate some feedback on what I'm doing wrong here. Thanks! :)
Category
Setup and Deployment
Please tick the boxes

[X] You are using a supported version of Dashy (check the first two digits of the version number)
[X] You've checked that this question hasn't already been raised
[X] You've checked the docs and troubleshooting guide
[X] You agree to the code of conduct

This sounds like an issue with your conf.yml file. Would you mind sharing it here?

Hmm I'm not sure where to find the conf.yml file, or /app/public/ at all. Should I've edited that part too? Or didn't Portainer create the correct directories for me?
I'm kind of new to docker in general. Pretty sure this is a PEBCAK/Layer 8 error but I appreciate some input. :)

In your Docker compose, you've got this line: /srv/config/dashy/my-config.yml:/app/public/conf.yml, which is correct, but that file needs to exist in your file system.
So, in your example, touch /srv/config/dashy/my-config.yml, then just to get you started, paste the following contents in it:
---
pages:

pageInfo:

appConfig:

sections:
- name: Getting Started
  icon: fas fa-rocket
  items:
  - title: GitHub
    description: Source Code, Issues and Pull Requests
    url: https://github.com/lissy93/dashy
    icon: favicon
  - title: Docs
    description: Configuring & Usage Documentation
    provider: Dashy.to
    icon: far fa-book
    url: https://dashy.to/docs

That should work, and you'll then be able to edit it through the UI
Although I think this is also a bug, as when the config file is missing or corrupted, Dashy is meant to handle it gracefully and not just crash. So I will look into that now :)

Thanks alot @Lissy93 - that did the trick! Seems to be working now. :)
I think the main issue was that docker-compose (or if it's a special scenario with Portainer) wanted to create my-config.yml as a folder instead of a text file. So I just went ahead and created it beforehand and typed some random placeholder text in it. Not sure if the deployment would've autoconfigured the config-file with working statements otherwise, and now it did not.
I don't have the error message when creating via docker-compose (and not already having created the file beforehand) but if it's helpful I can provide it. :)
Thanks again!

Great, I'm glad that's working :)
I will put in an extra check in place, so that the app doesn't throw a random error when the config file is empty...

This issue should not actually be closed, as it is not resolved for new installations with docker compose files, or at least not with Portainer:
I was getting the same error, with Portainer trying to create a folder with name my-config.yml.
In the end, I had to do a similar workaround by:

Changing - /path/to/my-config.yml:/app/public/conf.yml to ' - /path/to:/app/public'
Creating the folder manually at 'path/to'
And creating config.yml file manually, and inserting the code from the default one at /public/conf.yml, being careful to check that no Github copyright information is also being pasted into that file

Then I created a new stack in Portainer, and it ran fine. But at least this issue did point me in the right direction to solve it.

Do you know what specifically isn't working, would you be able to submit it in a PR?

You definitely shouldn't need to put the entire public directory in there. Though not super familiar with it, I am aware that Portainer's UI is quite limited compared to normal docker CLI, so it sounds like it's trying to mound a directory instead of a file.
What do you mean by Github copyright information? Nothing should be copyrighted, it's all MIT. But if I have got something copyrighted in their, then that's a big deal and I will address it asap. Which resource(s) specifically are you referring to?

Hi there, it is basically same error as described above: "First I got a huge error message when deploying, and I managed to find that it was trying to create my-config.yml as a folder. So I chnaged that line when defining the volumes to leave out the file names, and created the .yml file manually, then it deployed." Error was thrown up by Portainer. It was trying to create an object folder with a .yml in the name.
From what I see of all my other docker compose files, what should happen is the docker compose should just map to folder names, and not include file names. Then on container start up, the app should check the folder exists, check if the config.yml exists, and if no file found, then create a default one, and go from there.
So no, I did not put whole public folder, I just took the config.yml file and copied it in there (it's the default one). Yes, if it's an issue with the config file located at the same level as the rest of the public folder, it may have to belong in a sub-folder.


Remove "is it ready"

This is a remnant of a time when the version number wasn't quite as encouraging.

How can this possibly fail travis? Must have been another commit at fault.

This didn't break the tests. Taking on board removal of "is it ready", but I'd rather it became "what is the current version?"


RRDB_PSNR_x4.pth

Hello,
Thank you for sharing the code for your great work.
Can you please point where can I take RRDB_PSNR_x4.pth pretrained model for training procedure.

Here they are:
Google Drive and Baidu Drive
@johngull You can check this project for more detail

Hello,
I want to know whether you use the pretrained model RRDB_PSNR_x4.pth or not when you train DPED? @vegetable09

Hello,
I want to know whether you use the pretrained model RRDB_PSNR_x4.pth or not when you train DPED? @vegetable09

I also encountered the same problem. Is this pre training model generated by me after training or trained by others? If it is trained by others, what is the significance of collecting noise? How is the collected noise injected into the image?


Resolves #3456 added endpoint for manual deletion of residents

Resolves #3456
Adds wipe (default=false) to the tasks deletion endpoints. Either scale or wipe may be true, never both. In case wipe=true, running tasks will be killed, and all given Ids will be expunged from the repo.
That means we will eventually receive TASK_KILLED updates, to which the code will react with a ForceExpunge TaskStateOp. This way, the expunge will be propagated to all relevant parties even though the task is already removed from the repo.
For later reference: it would be cleaner to mark these tasks as Garbage instead of expunging them immediately, and react to TASK_KILLED on a Garbage task with an Expunge operation. Follow-up subtasks are tracked in #3568

Coverage decreased (-0.2%) to 72.976% when pulling 3700daa90c0314376d422f6f7e399317028db2bd on me/3456-wipe-residents into 0e535c6d90d85b2db5f332cf1471e6806447af6d on master.

Thanks!


pull request for e2e test at 02/01/2017 13:56:13

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


docs(packaging): update the information of PyPI page

Types of changes

Documentation Update

Description

issue: #1
Checklist:

[ ] Add test cases to all the changes you introduce
[ ] Run inv lint locally to ensure all linter checks pass
[ ] Run inv test locally to ensure all test cases pass
[ ] Run inv secure locally to ensure no major vulnerability is introduced
[ ] Update the documentation if necessary

Steps to Test This Pull Request

Expected behavior

Related Issue

Additional context

Using test pypi looks good. https://test.pypi.org/project/shocktube1dcalc/1.0.1rc1/


Single country summary charts

Job story
When I am viewing a single country (#1) ...
... I want to see a high level summary charts for the 3 right dimensions (#25) ...
... so I quickly assess its performance
Additional considerations

3 dimensions are: Empowerment (subset of CPR), Physical Integrity (subset of CPR), Economic & Social rights (all ESR)
CPR scores on a scale from 0 to ~10 (scores may exceed 10 slightly due to methodology)
ESR score in percentage
ESR score could be calculated for each assessment standard (HI, CORE) and target (immediate, long-term)
Scores can be translated to grades (A to D) although bins could differ for different assessment standards (of course also for CPR and ESR)

Tasks

Consider chart options
Consider chart interactions, including

change standard or target
drill down to explore underlying rights (#6)


insert...ON DUPLICATE KEY  UPDATE  error

when execute sql that likes follow
INSERT INTO stock_age (
tenant_id,
warehouse_no,
sku_no,
lot_no,
package_no,
owner_no,
product_level,
md5_value,
qty
)
VALUES
(
'T123456',
'26',
'S011',
'1',
'1',
'ownerNo',
'1',
'asdsdfdfdfd',
5
)
ON DUPLICATE KEY
UPDATE
qty = IFNULL(qty, 0) + 1
report error:
Cause: java.sql.SQLException: No value specified for parameter 10
; bad SQL grammar []; nested exception is java.sql.SQLException: No value specified for parameter 10
Caused by: java.sql.SQLException: No value specified for parameter 10
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:924)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:870)
at com.mysql.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2281)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2261)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2191)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1165)
at org.apache.commons.dbcp2.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:198)
at org.apache.commons.dbcp2.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:198)
at org.apache.shardingsphere.shardingjdbc.executor.SQLExecuteCallbackFactory$2.executeSQL(SQLExecuteCallbackFactory.java:64)
at org.apache.shardingsphere.shardingjdbc.executor.SQLExecuteCallbackFactory$2.executeSQL(SQLExecuteCallbackFactory.java:60)
at org.apache.shardingsphere.core.execute.sql.execute.SQLExecuteCallback.execute0(SQLExecuteCallback.java:79)
at org.apache.shardingsphere.core.execute.sql.execute.SQLExecuteCallback.execute(SQLExecuteCallback.java:61)
at org.apache.shardingsphere.core.execute.engine.ShardingExecuteEngine.syncGroupExecute(ShardingExecuteEngine.java:125)
at org.apache.shardingsphere.core.execute.engine.ShardingExecuteEngine.parallelExecute(ShardingExecuteEngine.java:102)
at org.apache.shardingsphere.core.execute.engine.ShardingExecuteEngine.groupExecute(ShardingExecuteEngine.java:83)
at org.apache.shardingsphere.core.execute.sql.execute.SQLExecuteTemplate.executeGroup(SQLExecuteTemplate.java:73)
at org.apache.shardingsphere.core.execute.sql.execute.SQLExecuteTemplate.executeGroup(SQLExecuteTemplate.java:56)
at org.apache.shardingsphere.shardingjdbc.executor.AbstractStatementExecutor.executeCallback(AbstractStatementExecutor.java:140)
at org.apache.shardingsphere.shardingjdbc.executor.PreparedStatementExecutor.execute(PreparedStatementExecutor.java:153)
at org.apache.shardingsphere.shardingjdbc.jdbc.core.statement.ShardingPreparedStatement.execute(ShardingPreparedStatement.java:192)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
Which version of ShardingSphere did you use?
4.0.1
Which project did you use? Sharding-JDBC or Sharding-Proxy?
Sharding-JDBC

@fantacy2001
Hi how about sharding rule configuration?

@fantacy2001
Hi how about sharding rule configuration?
only split db
<sharding:standard-strategy id="databaseStrategy" sharding-column="tenant_id" precise-algorithm-ref="commonDBShardingAlgorithm"/>
<sharding:table-rule logic-table="stock_age" actual-data-nodes="ds_ms$->{0..1}.stock_age" database-strategy-ref="databaseStrategy"  />
sharding:master-slave-rules
<sharding:master-slave-rule id="ds_ms0" master-data-source-name="ds_0" slave-data-source-names="ds_0_slave_0, ds_0_slave_1" strategy-ref="roundStrategy" />
<sharding:master-slave-rule id="ds_ms1" master-data-source-name="ds_1" slave-data-source-names="ds_1_slave_0, ds_1_slave_1" strategy-ref="roundStrategy" />
</sharding:master-slave-rules>

the commonDBShardingAlgorithm is mapping by tenant_id, like
map.put("tenant_id","the suffix of dbname")
map.put("CP0000028","1");
map.put("CP0000030","1");

@fantacy2001 Did you use spring Namespace as the client? Or Original JDBC interface?

@geomonlin Hi, could you give this issue a simple test whether the SQL mentioned can run well in our Sharding-example project?

@geomonlin Hi, could you give this issue a simple test whether the SQL mentioned can run well in our Sharding-example project?

this sql has modified:
ON DUPLICATE KEY
UPDATE
qty = values(qty) + 1
success.

@geomonlin Hi, could you give this issue a simple test whether the SQL mentioned can run well in our Sharding-example project?

this sql has modified:
ON DUPLICATE KEY
UPDATE
qty = values(qty) + 1
success.

OK

@geomonlin Hi, could you give this issue a simple test whether the SQL mentioned can run well in our Sharding-example project?

ok

@geomonlin Hi, could you give this issue a simple test whether the SQL mentioned can run well in our Sharding-example project?

this sql has modified:
ON DUPLICATE KEY
UPDATE
qty = values(qty) + 1
success.
I also tested it  successful. So Can close this issue?

@geomonlin Hi, could you give this issue a simple test whether the SQL mentioned can run well in our Sharding-example project?

this sql has modified:
ON DUPLICATE KEY
UPDATE
qty = values(qty) + 1
success.
I also tested it  successful. So Can close this issue?

please close it ，thank you！

@tristaZero Hi, This can be close

@geomonlin @fantacy2001
So What's the conclusion?

@geomonlin @fantacy2001
So What's the conclusion?

Sorry, didn't notice the message,

@geomonlin Hi, could you give this issue a simple test whether the SQL mentioned can run well in our Sharding-example project?

this sql has modified:
ON DUPLICATE KEY
UPDATE
qty = values(qty) + 1
success.
I also tested it  successful. So Can close this issue?

please close it ，thank you！

What's the cause of the error? Is it convenient to tell me

@fantacy2001 Hi, could you tell us what is the solution of your Issue? We need to give this issue a final answer.

Will close soon if no update anymore


@mentions not working

Not sure if the issue belongs to the plugin or the slackbot API but we were unable to mention people using this resource type.
When we do @here we get plain text in our slack channel rather than a proper mention + notification.
e.g.
  - name: test
    plan:
    - get: github
      trigger: true
    - task: test
      file: github/ci/tasks/test.yml
      on_failure:
        put: slack-alert
        params:
          channel: '#engineering'
          text: 'Hi @here, test failed.'

I believe you need to use the alternate slack syntax:
text: 'Hi <!here>, test failed.


prediction annotation format

the csv output format from SKU110K predicition is image_id,x1,y1,x2,y2,confidence,hard_score
but the prediction sample is image_name,x1,y1,x2,y2,score which score should i use? confidence or hard_score?

It doesn't matter as there's no filtering based on score while calculating the accuracy metrics.


Integrate bookmarks into overview search

With upcoming imports feature comes bookmark docs. These need to somehow fit into the overview search.
Current bookmark doc structure looks like:
interface IBookmarkDoc {
  _id: string; // 'bookmark/:timestamp/:nonce'
  title: string;
  url: string;
  page: { _id: string };
}

In the context of imports in the _id, :timestamp is set to the BookmarkTreeNode's dateAdded field while :nonce is the id field (more info on BookmarkTreeNodes in web extension API). Setting the _id like this makes the _id idempotent, in the same way visit and page docs are generated in the context of imports.
Bookmark docs will also be made whenever a user creates a new bookmark (can use browser.bookmarks.onCreated event). This is unimplemented as of yet; feel free to.
This structure is subject to change; I roughly came up with this based on the current visit doc structure, and what's available in BookmarkTreeNodes, and would very much appreciate some critique.
The most important thing is that it references a page doc, much like a visit doc, so any given page doc can have both visit and bookmark docs pointing to it. Current search logic seems to get visit docs then map their associated page doc data to them for displaying in the overview. Rough idea now is to add another db.find query for bookmark docs in the similar way, but then visits and bookmarks need to be merged someway in before passing them to the container as UI state (preferably done in a Redux selector).
Some comments from @oliversauter relating to how the UI could show this:

why dont we handle a bookmark item, if it does not have a visit item, as if it were a visit item that has a small ribbon, indicating it to be a bookmark? And if it is a visit item that also has a bookmark, we give it a ribbon as well?

This would need some way to relate bookmark docs to visit docs in the search logic.

fixed with #69


Crazy Enchantment Oxygenate not working

Oxygenate enchantment doesn't give Water Breathing when holding it.

It is set up at the moment to only give it to you when you are breaking blocks or swinging the pickaxe. I am looking into a better way to have it work.


const @ =  is not a valid expression

While it is possible to create and assign a local self variable:
@ = 123

compiles to local self = 123
These lines yuescript can't compile:
local @ = 123
const @ = 123
close @ = 123

@ = 123 is an implicit way to declare either local or global variables.
do
  global *
  @ = 123 -- create a global

do
  local *
  @ = 123 -- create a local

So I think it is OK that we can not use the aliasing name @ in the explicit ways to declare variable.
global @ = 123
local @ = 123
const @ = 123
close @ = 123


cli: Support user-provided hostedcluster annotations

This commit adds an optional --annotations flag to the create cluster
command which allows the user to provide annotations which will be
added to the hostedcluster. The flag can be passed multiple times to
add many annotations.
This is useful for things like associating a CI-generated cluster with
its CI metadata (Prow URLs, etc.)

/lgtm


FTDI4222 on-chip GPIO supported directly from mraa

So far we have the 4 on-chip GPIO's working nicely and we can now switch GPIO0 & GPIO1 between modes. Also made few other improvements that will allow new I2C expanders to be added easily.
Still left:

SPI implementation
Add the new GPIO expanders
Extend ISR to support all edge modes

So, It looks OK and it builds for me too. I don't have the chip to hand at the moments so I can't comment too much on the functionality.
One thing I have noticed is that you introduce white space in earlier patches in the PR which you then fix later, whilst the result is OK, its best that you never introduce white-space where it shouldn't be.
So if we were to only cherry-pick from a PR, the quality would still remain high. But there isn't a need to change this now, just advice for the future.

Updated gpio write function replacement so this should all be set now. Sorry about white-spaces, my editor auto-formats and I randomly press tab too at times :smile:.

set :set expandtab in vim ;-) Can you just rebase those 2 in the original commits?

There we go, on top of master too!

Merged. Please use more care when rebasing, it took me a good 20 minutes to clean that up so it doesn't look like a botch job. It's fine to commit quickly when doing dev but please clean it all up nicely before merging/PR into master.


include wsdl files to package

Codecov Report

Merging #96 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #96   +/-   ##
=======================================
  Coverage   98.98%   98.98%
=======================================
  Files          11       11
  Lines        1572     1572
=======================================
  Hits         1556     1556
  Misses         16       16

Continue to review full report at Codecov.

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

Released 3.1.2 on pypi


[DRC-372] [Feature] SQLMesh integration

SqlMesh is an alternative solution of dbt. Recce will support both dbt and sqlmesh in the same PR review journey.
Usage
Developing  process
# plan on dev env
sqlmesh plan dev

# launch recce server
recce server --sqlmesh --sqlmesh-envs prod:dev

Review process (SqlMesh is already run in some env)
recce server --sqlmesh --sqlmesh-envs prod:pr_123

see the diff between two environemnts
Review process (SqlMesh and recce are run in CI)

SqlMesh run on PR-specific env
Recce run basic row counts checks for modified models, and run the preset checks to generate the check results.
review can download the recce run result and view the the recce server.

In CI,
# run sqlmesh in ci runner
sqlmesh run ${ENV_PR}

# run recce
recce run --sqlmesh --sqlmesh-envs prod:${ENV_PR}

# Upload the artifact
upload_my_artifact.sh recce_state.json

In reviewer local, it will use the envs in the recce_state, and visualize the result.
recce server --sqlmesh --review recce_state.json

Drill down the data if you want to know more. :)
Milestones

Support to fetch environment information in the DWH, and show the lineage diff and schema diff between two environment, so that SqlMesh users can understand the env diff between any two envs.
Support to run the row count diff and query diff, So that SqlMesh users can know more more than just metadata (i.e. snapshots)
Support more diff operations. We support more profile, histogram, topk diff which sqlmesh ui currently not support.

FAQ
Q: What's the different with sqlmesh ui

Currently (Apr 11th, 2024), sqlmesh only support table_diff (like value diff in recce) to diff between two environments. Recce can provide more options to compare the change between two envs
Recce support checks to record the query/operation to validate the correctness of your PR.

Q: What's the definition of modified models for dbt and sqlmesh?
In recce, we have the definition

dbt: A modified is a model can be listed by [--select state:modified](https://docs.getdbt.com/reference/node-selection/methods#the-state-method)
sqlmesh: A modified model is directly modified models in SqlMesh. In the future, we would leverage the change categories (i.e breaking, non-breaking) to optimize the visualization in the lineage diff.

Q: What's the different between sqlmesh diff and recce
sqlmesh diff: diff between LOCAL state and the target REMOTE environment
recce: diff between two REMOTE enviornments
Q: What's the different between sqlmesh table_diff and recce
sqlmesh table_diff is simalr to recce's value diff. We also support the compare the models between two environments. The two table would use the primary key to identify the row find the diff rows or show the mismatch statistic.
From SyncLinear.com | DRC-372

The first version
https://datarecce.io/docs/start-with-sqlmesh/


”Jupa” is listed in the drop-down menu

Description:
"Jupa" 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 "Jupa" in the search bar.

Expected results
The location is listed in the drop-down menu as "Jupa, Caraș-Severin(Caransebeș)".


Add Surfactant Layer item type

Now that #23 exists it should be possible to construct a surfactant layer item type.

This will require working out how to make something that is a single object into two (or more) layers (which is broadly valuable for EasyReflectometry)

thinking more on this, it should just be a MultiLayer type object

This is currently in the #25 PR


MTB phylogenetics tutorial: corrected typos and some polishing

Some minor edits in the phylogenetics tutorial for the tuberculosis NGS workshop next week

Good morning, @shiltemann , would it be possible to merge this until Wednesday? It's only minor changes in content, but some of them would make it easier for course participants to follow. Many thanks!

Or maybe @bebatut?  I'd be grateful if this could be merged soon, the tutorial is scheduled for tomorrow, but some participants might be ahead of time. Apologies for these last minute edits...

Many thanks, @bebatut !


Add Range helper

Closes #22

:umbrella: The latest upstream changes (presumably #27) made this pull request unmergeable. Please resolve the merge conflicts.

@homu r+

:pushpin: Commit fc8ac46 has been approved by poteto

:hourglass: Testing commit fc8ac46 with merge a8fd88e...

:sunny: Test successful - status


[Static graph] Ability to skip isolation constraints certain references

Projects can now skip static graph constraint checks on certain references by declaring an item, ReferencesToSkipGraphIsolationConstraintsOn, which contains wildcards matching the full path of the references they want excluded. This allows static graph to build WPF projects, which generate and build an undeclared project with a random name at build time.
This PR is based on #4327. Relevant commits start with 91db31c

@cdmihai let's wait for https://github.com/microsoft/msbuild/pull/4327 to get merged and then we can review this one.


feat(grants): forecasted UI seed data - MERGE AFTER PR # 3456

Blocked from merging

Blocked by - PR #3456 - Hide forecasted grants while UI is being developed to support forecasted grants

Ticket #3645
Description
Working towards seed implementation as per this slack post
Ty's slack recommendation for seed data
From the Git issue

We want forecasted grants that meet the following scenarios:
estimated post date and estimated application due date both have date values entered
estimated post date and estimated application due date are both blank
estimated post date and estimated application due date have content entered that is not a date (i.e. text that says "This is sample text")

Screenshots / Demo Video
Sreenshot from pgAdmin

Testing
Automated and Unit Tests

[ ] Added Unit tests

Manual tests for Reviewer

[ ] Added steps to test feature/functionality manually

Checklist

[ ] Provided ticket and description
[ ] Provided screenshots/demo
[ ] Provided testing information
[ ] Provided adequate test coverage for all new code
[ ] Added PR reviewers

@lsr-explore Really nice work. I'm going to approve the PR, but would like @TylerHendrickson to take a quick look if possible in case I missed something concerning.


firestore: make a class for sentinel values

This way they'll print nicely.

@jba I'm having a hard time understanding the value here. Can you expound a bit on the motivation?

Also, depending on your motivation, the implementation is probably incomplete. At minimum we probably need a __repr__ and __eq__ method.
How does this differ from mock.sentinel (other than you probably do not want to use a thing in the mock library in production code)?

Let's say you accidently put SERVER_TIMESTAMP somewhere in your data it doesn't belong, like in a list, and then give that data to create, set or update. Currently, this is the error you get:
TypeError: ('Cannot convert to a Firestore Value', <object object at 0x7ffbcf5b1b90>, 'Invalid type', <type 'object'>)

With this change, you'll see SERVER_TIMESTAMP instead of the raw object string.
I'm not familiar with mock.sentinel, but if there's an easier way to do this that would be fine with me.
I don't see why we'd need __repr__. I don't think we need __eq__ either, because there are only two instances of this class, and they can be compared for identity with ==. What I would like to do is prevent the user from ever creating another instance. I don't know how to do that in Python.

can be compared for identity with ==

One of the points of a sentinel is that you only use is for comparison, so if anything you'd want __eq__ to error.

@dhermes Will do. I've obviously forgotten how equality works in Python.
@lukesneeringer Why do we need __repr__?

@jba I'm still not convinced of the utility, but __repr__ is more useful than __str__ for debugging, which seems to be the dominant usecase:
>>> class Foo(object):
...     def __str__(self):
...         return 'foo'
...
>>> Foo()
<__main__.Foo object at 0x7fd2b4f85b90>
>>> class Bar(object):
...     def __repr__(self):
...         return '<bar>'
...
>>> Bar()
<bar>

I'll hold off on this for now.


Can't set LINK field from select query in EMBEDDED

OrientDB Version: official docker 3.0.6
Java Version:
OS:
Expected behavior
Has to insert a record into link field.
Actual behavior
com.orientechnologies.orient.core.exception.OValidationException: The field 'OStatus.author' has been declared as LINK but the value is not a record or a record-id DB name="nvd" Error Code="4"
Steps to reproduce
CREATE CLASS TAuthors;
CREATE PROPERTY `TAuthors`.`code` STRING;

CREATE CLASS OStatus;
CREATE PROPERTY `OStatus`.`author` LINK `TAuthors`;
ALTER PROPERTY `OStatus`.`author` linkedClass "TAuthors";

CREATE CLASS TData;
CREATE PROPERTY `TData`.`status` EMBEDDEDLIST  `OStatus`;
ALTER PROPERTY `TData`.`status` linkedClass "OStatus";

update TData set status = [{
  "author": (select @rid from TAuthors where code = "123")
}]; #doesn't work

update TData set status = [{
  "author": "#1:1"
}]; #works fine

Hi @freeart
The problem here is that the result of the subquery is a collection (not a single element). I think it's reasonable for OrientDB to do an automatic conversion when it's possible, I'm checking to see if I can easily fix it
Thanks
Luigi

Ok, thanks. I wrote about embedded type because for a simple class field as LINK this syntax works. A collection casts to a single element

Hi @freeart
I pushed a fix for this today, but you have to change the query as follows (SELECT FROM instead of SELECT @rid FROM, otherwise the projection is not considered a valid record:
update TData set status = [{
  "author": (select from TAuthors where code = "123")
}];

Thanks
Luigi


Implement indirect draw and dispatch.

Describe the pull request
This PR adds support for indirect draw (both indexed and non-indexed) and dispatch. Buffers can be marked with BufferUsage::Indirect to indicate that they store indirect draw commands. New structures (IndirectBatch, IndirectIndexedBatch and IndirectDispatch) have been added, which are not required but recommended to be used to record indirect commands into indirect draw/dispatch buffers, as the command layout is defined by convention.
The Indirect sample shows how to use a compute shader to perform GPU culling to write an indirect buffer, which is then executed on the graphics pipeline to draw simple geometries.
Additionally, some improvements have been made to simplify recording of indirect draw buffers:

Buffers now support counter variables (which allows to use AppendStructuredBuffer and similar descriptor types).
In Vulkan, unbounded descriptor arrays are no longer required to have pre-defined maximum sizes.
Shader reflection has been improved to better differ between structured and byte address buffers (though they are semantically the same in Vulkan most of the times anyway).

Related issues

Closes #73.

Blocking for now, as we wait for SM 6.8 support in DXC to release (and preferably ship with Vulkan SDK). Implementing a workaround for instance indexing in DirectX backend would fragment interfaces too much, with the alternative in form of a SV_StartInstanceLocation vertex shader input waiting to be released.

I've merged all upstream changes and did some final tests, however I keep this blocked until a new Vulkan SDK ships with a recent DXC binary supporting Shader Model 6.8.


joe doesn't list any "types"

rpMacPro:~ rpn$ joe ls
rpMacPro:~ rpn$
After source install. Tried to list the types of files joe would build the .gitignore for, and the list is empty. What have I missed?

Also tried the following:
rpMacPro:~ rpn$ joe java
joe doesn't know the following gitignores:
java
Run joe ls to see list of available gitignores.
[]
rpMacPro:~ rpn$

OS? Version of joe? How did you install it?


Swift 2.0 support

Are there plans to update this project?

No plans at this point. The project works great on iOS 9 as is. If you have any questions regarding converting the project yourself to Swift 2, I would be happy to help :)


Optimising CubeWatchers unloading

Working marvelously.

I decide to use a raw array of objects as data container. This way we can remove elements right during iterations.

Considering adding elements to the start of a list I have even better idea.

Ooops.

Ehm...

Ok, now its finally working fine.

(sampling only cubicchunks.server. package)

This seems to actually be either faster to sort or slower overall than the first implementation. Can you actually measure the time it takes to run the methods on average with the first and the current version?

I made a one simple trick to use sorting algorithm in getting rid of dead elements.
Here is a results of JMH benchmarking:
Benchmark                Mode  Cnt      Score      Error  Units
MyBenchmark.testNew  thrpt   20  63730.222 ± 5343.953  ops/s
MyBenchmark.testOld  thrpt   20    771.625 ±  543.384  ops/s

"Old" - is a yesterday version of a list.
"New" - is current version of a list.
Here is a benchmark code: https://pastebin.com/7PnNZTNJ
Here is a VisualVM results:

This just tests the lists, not the whole PlayerCubeMap.tick() which is what actually counts

Done as requested.

And update the sampler/profiler screenshot

Sampling results:


Merge CAPI updates

Docs Build status updates of commit 40e90bf:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

Advertising/shopping-content/code-example-manage-products.md
:white_check_mark:Succeeded

Advertising/shopping-content/get-started.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Highlight nested PHP comments

Related to https://github.com/symfony/symfony-docs/pull/20121
This PR adds a failing test that shows the issue. This is the output change that would make test pass:
-                ), [ // wait
-                5
-                seconds before processing
+                ), [
+                // wait 5 seconds before processing

Fixed!

You are amazing Wouter 🙇🙇🙇 Thanks a lot 🙌


Export span event as trace telemetry

/check-enforcer override

API change check
API changes are not detected in this pull request.


Downvote reason: Answer should be a comment

A lot of times people "answer" a question with something that should actually be a comment, not an answer (especially new users who don't have the ability to comment. That should be something in the article, that one they have sufficient reputation they are able to make comment comments, and that they should refrain from posting a comment as an answer.)

I think there should be an entire section for down-voting answers.
One trend I'm seeing on StackOverflow is people repeating answers that were posted many years ago and only making very superficial changes.

I think there should be an entire section for down-voting answers.
One trend I'm seeing on StackOverflow is people repeating answers that were posted many years ago and only making very superficial changes.


Some improvements to ceylon.json:

Motivation: For serialization I'm trying to avoid
unnecessary buffering of information in holder objects.
In other words I want to manipulate JSON without having to
have a model.
Introduce a Visitor interface and add a toplevel visit()
function for recursively visiting a JSON model.
Add a Builder class with implemnts Visitor and builds a model
according to the called methods.
Refactor the existing Parser class to use the Visitor abstraction
and change the parse() function so it plugs together a
Parser and a Builder. Rename Parser to StringParser
(in the future we'll probably want to parse from other sources).
Make the StringParser class shared.
Write a new Emitter and StringEmitter which implement
Visitor and emit formatted JSON text according to the methods called.
Change Object.string, Object.json, Array.string and Array.json
to use the StringEmitter.
This means that the old Printer and StringPrinter aren't really used
any more, but they were shared so I haven't removed them.
Improve the tests to cover the new classes.
Add a couple of extra assertions to the parse test.
For example the tests have String minify(String json) and
String prettify(String json) which just plug together a
Parser and Emitter without needing a Builder.

So you split it in DOM/SAX styles, this is great!

So you split it in DOM/SAX styles, this is great!

Basically, yes. I've cut a corner slightly by having Visitor be the thing for visiting a model tree and also as the content handler for the parser: Arguably those could be different contracts.
About the naming, I think we made the right choice in general. But with really common names (including Object and Array, but also say String, Boolean, List) it's just confusing, and more-or-less forces the user to use an alias, at which point you might as well have chosen a non-clashing name in the first place. If we were deciding on a name today I would speak up vocally for JsonObject and JsonArray, but it's too late to change now.
I'm happy enough to change the name of Visitor to something else if people want that. But what would we chose?

But with really common names

Well, where do you draw the line? Do we publish a list of common names?

Do we publish a list of common names?

No. I think we just have to use our judgment (and update that judgment based on experience). My experience of ceylon.json having used Object and Array is that it's confusing and I always end up using an import alias.
I suppose if you forced me to define common name then it would be:

The name of a type declaration in ceylon.language that "commonly" occurs in APIs (i.e. signatures). Thus Null, String, Boolean, Integer, Float, Character, List, Array, Map, Set, Object, Anything, Nothing. Those are names that get written down an awful lot. I exclude Iterable, Sequence etc because I think it's more common to use the abbreviation for those.

And it's not like an import alias is a huge deal. It's just an annoyance, that's all.

Indeed, I'd define as anything that forces you to use import aliases in a large number of programs that don't import anything else besides the module in question itself. Using import aliases to prevent collisions between declarations in different imported modules is okay. Using them to prevent collisions with the language module proper is not okay.
And I agree it's not a huge deal, but I'd remove the "just" from "just an annoyance" ;)
Btw, we could consider adding aliases to the json module itself, so you could decide yourself to import/use either Object or JsonObject. I checked that there's no conflict if you used the name JsonObect in an import alias in older code.

but it's too late to change now.

Why? In the worst case we can rename them and create aliases for backward compatibility, which would be marked as deprecated.

So if @FroMage is happy shall I merge this?

What, about you doing work I should have done ages ago? Of course I'm happy, just merge it ;) But make sure the tests keep on passing.

But make sure the tests keep on passing.

Well of course they do, and I added some additional tests of the existing functionality too. But I forgot to mention in the PR message that this commit adds some tests for invalid JSON which was accepted by parse() before but no longer is. Basically you could have garbage after the end of the toplevel object and parse() didn't care. This commit changes the behavior to throw in that situation (see https://github.com/ceylon/ceylon-sdk/pull/335/files#diff-180e1a930406efe46f4781535eb89838R834). I assume that's OK?

Sure.


Show page access statistics

Motivation
Municipalities may want to find out which pages are being accessed most/least. We already collect this information in Matomo. This should be accessible to content managers.
Proposed Solution
Add a view that shows access numbers on pages in a time range. The time range should be rather limited for the start as generating reports over long periods takes quite a lot of time in Matomo. I'd start with 1 month max.
Alternatives
We keep generating these reports by hand or give municipalities access to Matomo.
Design Requirements
@hauf-toni
User Stories:
I, as a manager, want to see want to see page access statistics to identify and remove irrelevant content

@hauf-toni just a rough idea how i could imagine the page access overeview.

perhaps there is a need for discussion here: should the "page access statistics" page appear in the sidebar as a single item under "analysis" (same emphasis as e.g. "feedback" or "translation report") or as a sub-item under the current access figures as a new box?
imo, a more prominent placement would increase visibility, facilitate access, encourage monitoring, and demonstrate the value of the feature. on the other hand, users might overestimate the importance of the data presented and draw the wrong conclusions (access numbers are not synonymous with importance). of course, this problem could possibly be solved by training the communities to interpret the presented data in the right way.
💬 are there opinions on this that you would like to share?

@hauf-toni I think it would make sense to not show it as a tab at all but to enable users to get to this specific view from the statistics page itself...
If that is not prefered, then I think we should have one tab for overall statistics and one for page specific stats - i would not work with sub-tabs as it makes the menu more complex.

I think there are a couple of caveats:

What is the relevance of a list of the most read pages? That the content is good? That does not provide any actionable information.
Should we provide a list of pages with only 1 or 2 hits per month (even zero in probably quite a lot of instances)? What would be the actionable information here? Just delete them, because they are not being used?

I think we need to define the goals first. Then the implementation will probably be easy to derive.

the plan is to write a guide for the municipalities on how to interpret the page statistics.

So what is it going to tell? Then we can derive a good presentation of the data.

So what is it going to tell? Then we can derive a good presentation of the data. I think we also need to differentiate interpretation of data from actionable information.

We can recommend to use the data as a starting point for further questions, for example "Why does a page receive so few/many visitors?"

@hauf-toni ich hab mit Sven gesprochen und wir haben es fertig definiert - hast du morgen Zeit, um die Infos einmal durchzugehen? :)

@hauf-toni und wir sollten nochmal besprechen, wie es für die Nutzer:innen am besten ist, bzgl der Einstellungen für offline und WebApp Zugriffe, da es diese Unterscheidung ja bei den Seitenbasierten Zugriffen nicht gibt.

an updated design proposal can be found 📌 here

@svenseeberg could you update the description to say that V3 is the right version in Figma? Whether online and offline access can be moved to the side column, is something the CMS Team needs to determine. If it is techincally possible I think it makes sense to solve it the way Toni proposed.

@MizukiTemma as https://github.com/digitalfabrik/integreat-cms/issues/1436 is more important for imaoact (and it was moved to 24Q2 milestone), i would suggest to move this issue to 24Q3.

The API calls to Matomo should be sent after each other, not at the same time. This will reduce the load on the Matomo server and also reduce the waiting time for the first visible data for the user.

If a (sub-)tree is collapsed, it will show the sum of all sub pages and its own page access statistics.

These two things appear to be mutually exclusive.

If a (sub-)tree is collapsed, it will show the sum of all sub pages and its own page access statistics.

If a tree is expanded, the parent node no longer shows the sum but only its own direct access statistics.

It might be a bit confusing for users if expanding the parent changes its shown statistic.
Maybe the sum could instead be shown as an additional row once the parent has been expanded?


[Visual Studio] Working Directory of Raylib points to "bin/Debug/net6.0" instead of the project root.

Issue description
If I use LoadTexture() with a relative path like "gfx/tilemap.png" nothing is loaded and DrawTexture() does not display anything. When I use the absolute path to the texture everything works correctly. GetWorkingDirectory() points to "bin/Debug/net6.0" instead of the root folder of the project. When I download the examples and open them in Visual Studio 2022 everything works correctly, the relative path works and the working directory is the root of the project.
Now my question is how to fix the working directory. I know I can use SetWorkingDirectory() from raylib but I want to fix this with Visual Studio so all my projects can load resources correctly with a relative path.
Environment

Windows 10
Raylib - cs <IP_ADDRESS>
Visual Studio 2022 17.1.1

Code example
using Raylib_cs;
using System.Numerics;
namespace Test
{
static class Program
{
public static void Main()
{
        Raylib.InitWindow(500, 500, "Test");
        Texture2D map = Raylib.LoadTexture("gfx/tilemap.png"); //does not load anything because relative path is not the project root

        Vector2 mapPos = new(0.0f, 0.0f);

        Raylib.SetTargetFPS(60);
        while (!Raylib.WindowShouldClose())
        {

            Raylib.BeginDrawing();
            Raylib.ClearBackground(Color.BLACK);

            Raylib.DrawTextureEx(map, mapPos, 0.0f, 4.0, Color.WHITE);

            Raylib.EndDrawing();
        }

        Raylib.CloseWindow();
    }
}

}

Okay I have figured out a solution.
In Visual Studio double click your project_name.csproj file.
This will open something like this:
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

--- !!! THIS WAS MISSING IN MY PROJECT !!! ---
    <RunWorkingDirectory>$(MSBuildThisFileDirectory)</RunWorkingDirectory>

</PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Raylib-cs" Version="<IP_ADDRESS>" />
  </ItemGroup>

</Project>

When you add <RunWorkingDirectory>$(MSBuildThisFileDirectory)</RunWorkingDirectory> to the <PropertyGroup> then your working directory will be set correctly.
(Just copy the 1 line not the whole code block above because some things might be different in your project)
I hope this helps with any future problems.
PS: I will close this issues with this comment but any other solutions are welcome ;)


Exiting via GUI doesn't close backend

Description
The GUI does close, but the backend stays alive

What Platform / OS are you running?
Windows
What version are you running?
4.0.3
Anything in the logs or a references that might be useful?
No response
Additional information
No response

Fixed in #2910


A contains function would be nice

Sometimes one would not need to iterate over the complete string, when the only thing of interest is if a string contains at least one character of a given type.
Thus a function like this would be convenient:
ad.contains_alphabet_chars(u'100 漢字', 'CJK')
I know, that the following does already work, but this will iterate over the complete string:
'CJK' in ad.detect_alphabet(u'100 漢字')

Nice. I'd be open to accepting a PR for that, if you'd like to submit one. Any interest?

Could it be as simple as adding another method, switching the "all" to "any"?
def contains_alphabet_chars(self, unistr, alphabet):
    return any(self.is_in_alphabet(uchr, alphabet)
               for uchr in unistr if uchr.isalpha())

I’m dubious the speed difference with that implementation warrants creating another function and adding complexity to the library, but I’m open to being proved wrong.
To merge a PR here, I’d want to see an implementation along with a benchmark that shows it’s significantly faster than the already available ’CJK’ in ad.detect_alphabet(some_string)


Added the notification plugin vue-toastification

Can you resolve the conflict resulting from  an earlier PR? Thanks

done @LinusBorg


New Code?

Hello dear developers,
any update on the new code?
Thanks

Hi, we will release our new code in 5 days.
获取 Outlook for iOShttps://aka.ms/o0ukef

发件人: Michael-H777 @.>
发送时间: Sunday, April 30, 2023 4:41:44 AM
收件人: chenhaoxing/HDNet @.>
抄送: Subscribed @.***>
主题: [chenhaoxing/HDNet] New Code? (Issue #6)
Hello dear developers,
any update on the new code?
Thanks
―
Reply to this email directly, view it on GitHubhttps://github.com/chenhaoxing/HDNet/issues/6, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AN6YSKSGZ7SNFP5CKPOWICLXDV4IRANCNFSM6AAAAAAXQN7XPE.
You are receiving this because you are subscribed to this thread.Message ID: @.***>

Can you please update the repo. with the new code and model? Thanks!

Can you please update the repo. with the new code and model? Thanks!

Hi, we have uploaded our code. You can use it now.


Kubelet can not access rancher-metadata sometimes

I have two k8s node, one is on AWS, the other is on Azure.  The OS are both ubuntu server 16.04 LTS.
AWS is ok, but kubelet in the node of Azure can not work fine.
2/3/2017 18:29:39+ curl -s -f http://rancher-metadata/2015-12-19/stacks/Kubernetes/services/kubernetes/uuid
2/3/2017 18:29:39Waiting for metadata
2/3/2017 18:29:39+ echo Waiting for metadata
2/3/2017 18:29:39+ sleep 1
2/3/2017 18:29:40+ curl -s -f http://rancher-metadata/2015-12-19/stacks/Kubernetes/services/kubernetes/uuid
2/3/2017 18:29:40Waiting for metadata

Try to ping rancher-metadata, get unknown host error. But dig/nslookup can work fine.
root@a:/# dig rancher-metadata

; <<>> DiG 9.9.5-9+deb8u10-Debian <<>> rancher-metadata
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32129
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;rancher-metadata.		IN	A

;; ANSWER SECTION:
rancher-metadata.	600	IN	A	<IP_ADDRESS>

;; Query time: 0 msec
;; SERVER: <IP_ADDRESS>#53(<IP_ADDRESS>)
;; WHEN: Fri Mar 03 06:43:52 UTC 2017
;; MSG SIZE  rcvd: 50

root@a:/# ping rancher-metadata
ping: unknown host

Try to use strace(strace ping rancher-metadata -c 1) to diagnose it. I find the answer.
the node on Azure:

the node on AWS:

If we use dig/nslookup, system will use dns resolve first.  If we use ping, I think the system process is as follows(the nscd has been installed in OS).
ping--->nss--->nscd(cache)--->dns resolve
So we should know the essential reason. Try to uninstall nscd(the node on Azure), kubelet should work fine.
But why container kubelet  has the nscd socket(/var/run/nscd/socket), I think it is just because kubelet mount the host dir /var/run.

So we have a second solution, we can umout /var/run/nscd/socket and remove it. I will submit a PR to fix it. After all, many people want to keep nscd in  their OS.

Add more information about nscd.
If you can disable nscd hosts cache via nscd.conf:

If you do this, kubelet can also work fine.

@niusmallnan What are the contents of /etc/resolv.conf and /etc/nsswitch.conf?

@janeczku
You mean the kubelet container?
/etc/resolv.conf
root@ip-172-31-1-132:/# cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# nameserver <IP_ADDRESS>
search cn-north-1.compute.internal kubelet.kubernetes.rancher.internal kubernetes.rancher.internal rancher.internal
nameserver <IP_ADDRESS>

/etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat
gshadow:        files

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Rancher version: v1.5.2-rc2
Kubernetes version: 1.5.4
The nscd with kubernetes is still failing, the kubelet isn't starting correctly after installing nscd on the host, i think kubelet is trying to call rancher-metadata before the nscd masking happens.
3/21/2017 1:03:57 AM+ curl -s -f http://rancher-metadata/2015-12-19/stacks/Kubernetes/services/kubernetes/uuid
3/21/2017 1:03:57 AMWaiting for metadata
3/21/2017 1:03:57 AM+ echo Waiting for metadata
3/21/2017 1:03:57 AM+ sleep 1
3/21/2017 1:03:58 AM+ curl -s -f http://rancher-metadata/2015-12-19/stacks/Kubernetes/services/kubernetes/uuid
3/21/2017 1:03:58 AMWaiting for metadata
3/21/2017 1:03:58 AM+ echo Waiting for metadata
3/21/2017 1:03:58 AM+ sleep 1
3/21/2017 1:03:59 AM+ curl -s -f http://rancher-metadata/2015-12-19/stacks/Kubernetes/services/kubernetes/uuid
3/21/2017 1:03:59 AM+ echo Waiting for metadata
3/21/2017 1:03:59 AMWaiting for metadata
3/21/2017 1:03:59 AM+ sleep 1

https://github.com/rancher/kubernetes-package/pull/34/files

k8s image: rancher/k8s:v1.5.4-rancher1-1

Rancher version: 1.5.2-rc2
k8s version: rancher/k8s:v1.5.4-rancher1-3
Steps:

Install nscd on a host
Register this host to Rancher
Install kubernetes stack

I was able to ping rancher-metadata from inside kubelet, and i was able to verify that the masking for /var/run/nscd has taken place:
root@hgalal-nscd-01:/# ping rancher-metadata
PING rancher-metadata.rancher.internal (<IP_ADDRESS>): 56 data bytes
64 bytes from <IP_ADDRESS>: icmp_seq=0 ttl=64 time=0.179 ms
64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=64 time=0.091 ms

root@hgalal-nscd-01:/# mount | grep nscd
/dev/mapper/docker-253:1-258819-c784385fe099f5b77f41de0e7026c15157dd347d29d9e415
ed7b829130e49cec on /run/nscd type xfs (rw,relatime,nouuid,attr2,inode64,logbsiz
e=64k,sunit=128,swidth=128,noquota)

root@hgalal-nscd-01:/# ls /var/run/nscd/
root@hgalal-nscd-01:/#


After generating a new Let's Encrypt certificate, it still uses the default cluster certificate.

Having the following k8s config:

kind: Namespace
apiVersion: v1
metadata:
name: test
labels:
name: test

apiVersion: apps/v1
kind: Deployment
metadata:
namespace: test
name: test-depl
spec:
selector:
matchLabels:
app: test-app
template:
metadata:
labels:
app: test-app
spec:
containers:
- name: test-app
image: jfsanchez91/http-test-server

apiVersion: v1
kind: Service
metadata:
namespace: test
name: test-svc
spec:
selector:
app: test-app
ports:

name: test-app
protocol: TCP
port: 80
targetPort: 8090

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
namespace: test
name: letsencrypt-cert-issuer-test-prod
spec:
acme:
email<EMAIL_ADDRESS>server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-cert-issuer-test-prod
solvers:
- http01:
ingress:
class: public

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: test
name: ingress-routes
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: "letsencrypt-cert-issuer-test-prod"
spec:
tls:

hosts:

test.example.com
secretName: tls-secret
rules:

host: test.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: test-svc
port:
number: 80
The Let's Encrypt certificate is being issued and stored in tls-secret correctly. But then when I try to open test.example.com I get an invalid certificate (the K8s default certificate) NET::ERR_CERT_AUTHORITY_INVALID.
I would expect to get the new issued certificate when accessing test.example.com but default one is returned.

What is wrong with this?

cert-manager only goes as far as storing a certificate in a Secret. Whether and when it is picked up by ingress controller needs to be looked at separately, I suggest that you look at ingress docs for some debugging tips.

Closing as this seems to be related to ingress-controller's configuration or behaviour not cert-manager.


Editorial Changes to Wiki Page

These comments are for the page: https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address
First of all, thanks for writing the instructions. They were easy to follow and I got it to work. I have the following editorial comments on the content. My apologies if this isn't the right way to address the issue. If not please let me know how to do so in the future.
Comment 1
The paragraph right after "For Active Record:" is as follows:
"MySQL users: the use of the SQL lower function below is most likely unnecessary and will cause any index have on the email column to be ignored."
The grammar isn't right at the end of the sentence.
Comment 2
In the second example it shows ":format => { …} # etc.
I was pretty sure the ellipsis wasn't valid syntax, but I tried it any way. When it didn't work, I deleted the clause as I don't know what it is and everything appears to work without it. I'm sure I can figure it out by referring to the Rails documentation and wouldn't expect an explanation here. If it's not absolutely necessary, you might consider removing it as programmers love to cut and paste examples into there code as is.
Comment 3
In the "Modify the views" section, your example shows
   -
<%= f.label :email %>

   -  <%= f.email_field :email %>

   +
<%= f.label :login %>

   +  <%= f.text_field :login %>

Mine had:

    <%= f.label :email %>

    <%= f.email_field :email, autofocus: true %>

The same holds true for the other examples. This is a minor difference. I chose to keep the autofocus attribute
Comment 4
The instructions on changing the devise.en.ml file say to replace
invalid: "Invalid email or password."
...
not_found_in_database: "Invalid email or password."

I have the following in  my file which I installed on 19 Jan 2015:
invalid: "Invalid %{authentication_keys} or password."
…
not_found_in_database: "Invalid %{authentication_keys} or password."

Is it still necessary to change these lines given that the word "email" in no longer present?

Thank you @gcortes! The wiki is open so you can contribute your changes any time. Sometimes the examples get outdated and contributions like yours are very welcome to bring them up to date. (and yes, we no longer need the step in Comment 4). :)

I wasn't sure you wanted me to make the changes. I see it hasn't changed so I'll go ahead and make them. I'm glad to contribute.

Yes, please go ahead and make them! Sorry I was not clear!

It took me forever to get back to make the change It's done now.


Remove unnecessary buffer in fs.reader

Issue #, if available:
Description of changes:
Remove unnecessary temporary buffer content in fs.reader when reading file contents.
Testing performed:
make check && make test && make integration
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Can you please fix the linter error?


[Bug] slotRangeStart and slotRangeEnd are  wrong type

ioredis/built/cluster/index.js
this getInfoFromNode func
The slotRangeStart and slotRangeEnd are string type need convert to Number
If it is string type it will not run loop first time

If convert to Number it will run loop first time

pull request
https://github.com/luin/ioredis/pull/1396

Addressed in v5.0.0. Thanks for pointing this out!


Glossary export/import

Problem
As metadata manager, I need to export Glossary content only, process it outside of my OMD and then import again (without erasing all database).
Minimal solution
Ability to import (with overwrite) Glossary data from file format like xml/json.
Ideal solution
Ability to selectively import & export any essential kind of metadata, including

metadata limited to selected services or tables
Glossary content
user-generated content like custom tags / descriptions.
lineage data only

Alternatives
There is an option of full database backup and restore. However this will overwrite all database, including all the ingested metadata,custom tags and profiling data -  which might be costly to recover.

we will be doing import only for 0.13.1 release


Update the GitLab "quartz-baseline" pipeline to use the Quartz-specific baseline results

Use the newly updated Quartz-specific baseline results.

PR
Author
Editor
Reviewers
Assignment
Approval
Merge

#4199
@v-dobrev
@tzanio
@tzanio + @jandrej
3/17/24
3/17/24
⌛due 4/7/24

PR Checklist

[ ] Code builds.
[ ] Code passes make style.
[ ] Update CHANGELOG:

[ ] Is this a new feature users need to be aware of? New or updated example or miniapp?
[ ] Does it make sense to create a new section in the CHANGELOG to group with other related features?

[ ] Update INSTALL:

[ ] Had a new optional library been added? If so, what range of versions of this library are required? (Make sure the external library is compatible with our BSD license, e.g. it is not licensed under GPL!)
[ ] Have the version ranges for any required or optional libraries changed?
[ ] Does make or cmake have a new target?
[ ] Did the requirements or the installation process change? (rare)

[ ] Update continuous integration server configurations if necessary (e.g. with new version requirements for each of MFEM's dependencies)

[ ] .github
[ ] .appveyor.yml

[ ] Update .gitignore:

[ ] Check if make distclean; git status shows any files that were generated from the source by the project (not an IDE) but we don't want to track in the repository.
[ ] Add new patterns (just for the new files above) and re-run the above test.

[ ] New examples:

[ ] All sample runs at the top of the example source file work.
[ ] Update examples/makefile:

[ ] Add the example code to the appropriate SEQ_EXAMPLES and PAR_EXAMPLES variables.
[ ] Add any files generated by it to the clean target.
[ ] Add the example binary and any files generated by it to the top-level .gitignore file.

[ ] Update examples/CMakeLists.txt:

[ ] Add the example code to the ALL_EXE_SRCS variable.
[ ] Make sure THIS_TEST_OPTIONS is set correctly for the new example.

[ ] List the new example in doc/CodeDocumentation.dox.
[ ] If new examples directory (e.g.examples/pumi), list it in doc/CodeDocumentation.conf.in
[ ] Companion pull request for documentation in mfem/web repo:

[ ] Update or add example-specific documentation, see e.g. the src/examples.md.
[ ] Add the description, labels and screenshots in src/examples.md and src/img.
[ ] In examples.md, list the example under the appropriate categories, add new categories if necessary.
[ ] Add a short description of the example in the "Extensive Examples" section of features.md.

[ ] New miniapps:

[ ] All sample runs at the top of the miniapp source file work.
[ ] Update top-level makefile and makefile in corresponding miniapp directory.
[ ] Add the miniapp binary and any files generated by it to the top-level .gitignore file.
[ ] Update CMake build system:

[ ] Update the CMakeLists.txt file in the miniapps directory, if the new miniapp is in a new directory.
[ ] Add/update the CMakeLists.txt file in the new miniapp directory.
[ ] Consider adding a new test for the new miniapp.

[ ] List the new miniapp in doc/CodeDocumentation.dox
[ ] If new miniapps directory (e.g.miniapps/nurbs), add it to MINIAPP_SUBDIRS in the makefile.
[ ] If new miniapps directory (e.g.miniapps/nurbs), list it in doc/CodeDocumentation.conf.in
[ ] Companion pull request for documentation in mfem/web repo:

[ ] Update or add miniapp-specific documentation, see e.g. the src/meshing.md and src/electromagnetics.md files.
[ ] Add the description, labels and screenshots in src/examples.md and src/img.
[ ] The miniapps go at the end of the page, and are usually listed only under a specific "Application (PDE)" category.
[ ] Add a short description of the miniapp in the "Extensive Examples" section of features.md.

[ ] New capability:

[ ] All new public, protected, and private classes, methods, data members, and functions have full Doxygen-style documentation in source comments. Documentation should include descriptions of member data, function arguments and return values, template parameters, and prerequisites for calling new functions.
[ ] Pointer arguments and return values must specify whether ownership is being transferred or lent with the call.
[ ] Any new functions should include descriptions of their intended use e.g. for internal use only, user-facing, etc., along with references to example code whenever possible/appropriate.
[ ] Consider adding new sample runs in existing examples to highlight the new capability.
[ ] Consider saving cool simulation pictures with the new capability in the Confluence gallery (LLNL only) or submitting them, via pull request, to the gallery section of the mfem/web repo.
[ ] If this is a major new feature, consider mentioning it in the short summary inside README (rare).
[ ] List major new classes in doc/CodeDocumentation.dox (rare).

[ ] Update this checklist, if the new pull request affects it.
[ ] Run make unittest to make sure all unit tests pass.
[ ] Run the tests in tests/scripts.
[ ] (LLNL only) After merging:

[ ] Update internal tests to include the new features.

Note: I tested this on my MFEM fork on LC's GitLab.

This PR is now under review (see the table in the PR description). To help with the review process, please do not force push to the branch.

Merged in next for testing...

I found one more place where ‘${SYS_TYPE}‘ had to be replaced by ‘${MACHINE_NAME}‘ -- I just pushed a commit to fix that.

Re-merged in next for testing...


Broken link for license file in Lepton 1.3.0

The link is looking for the LICENSE.md which has however renamed to LICENSE.
https://github.com/hackjutsu/Lepton/blob/master/app/containers/settingPage/index.js#L35

I think this could be resolved by removing .md.

@passerbyid
Yes, that's it. I keep it open since it is a convenient PR, if someone wants to gain some experience on an open source project. (Like forking & send a PR on GitHub)

Got it, appreciate it.


API Deprecations should be handled (right now group -> emails_disabled changed to emails_enabled)

What happened?
We saw issues concerning the group api, after updating our gitlab instance. In our case, the group api deprecated the emails_disabled flag and inverted it as emails_enabled. This leads to failing group api requests of the gitlab provider.
For now we used a feature flag to disable the new behaviour. But this won't be the solution for long - I think June / the next major version might be the point were the flag could be removed.
Updating the go gitlab client from 0.86.0 to 0.103.0 would fix the gitlab api side changes, but how do we handle this customer facing? This would lead to breaking changes in the managed resource...
How can we reproduce it?
Just use the provider with an up to date gitlab instance
What environment did it happen in?
Crossplane version: not relevant
Crossplane Provider GitLab version: 0.7.0

Any thoughts on this?

My thoughts on this:
I would suggest not hiding Api changes from the GitLab side and introduce a breaking change for our users. Otherwise, the maintenance of this project would increase over time.
We should handle this via semver in the corresponding releases of this provider.


Homebrew formula on OS X?

This is super neat - any chance we could get a homebrew (https://brew.sh/) formula for MacOS X rather than a binary download?  It would integrate well with the way most people get dot (from the graphviz formula) and would gracefully isolate from the rest of the system.

@nbastin
Thank you for your comment.
Do you have any information to be helpful?
Or is there a repository doing the same?

I understand.
https://github.com/Homebrew/brew/blob/master/docs/Formula-Cookbook.md

I created homebrew repository.
I'll send PR to homebrew-core.
now
brew tap kaishuu0123/erd-go
brew install erd-go

https://github.com/kaishuu0123/homebrew-erd-go

This is fantastic!  Thanks for looking into it.

sent to homebrew-core. ( https://github.com/Homebrew/homebrew-core/pull/30343 )
but Unfortunately this doesn't meet our notability requirements

GitHub repository not notable enough (<30 forks, <30 watchers and <75 stars)

I wanted to provide erd-go with homebrew-core.
That's a shame.
close this issue.
@nbastin
enjoy!


Log output for headers can lead to invalid JSON

https://github.com/peppelinux/django-audit-wazuh/blob/37ee8b3f517cccd6a4c86b1cd17975e3b6edef19/auditing/middlewares.py#L52
Building up the JSON for headers in this way can lead to invalid JSON output. If any of the header field values have double quote in them (which they do for one of my javascript modules), then the double quotes are just entered as is, and cuases the json value to close prematurely and thus be invalid. Below is a example of such a header:
"Fetch-Fragments": ".top-bar-title,#pageContent,#mainOverlay [slot="content"]",

As you can see the [slot="content"] will cause the json value to close soon as it sees the double quote.

Hi andrew,
It's something not covered yet, so thank you for issuing this.
The patch would be this:
head_items = ['"{}": "{}"'.format(*[i.replace('"', '\\"') for i in hea]) for hea in response_headers]

Please do a test and let me know, if it works you can do a PR with this, I'll appreciate

Is there a particular reason this is manually formatted as a json, rather than building up a python dict and using json.dumps()?
If feels like it would make the code more readable and would avoid edge cases like this. Creating a single .replace() for every edge case (like other escape characters) could become quite cumbersome?

I agree, I wait  a PR from you if you prefer

and more, @andrewebdev fill free to enjoy in it as mantainer of this repository. I'd really appreciate your support in this!

Yup I was going to do a PR myself, just working on some other issues also.


Error on authorize

Hi, I'm getting this error:
flutter: An exception occurred during a sign-in attempt: FlutterAuthException({code: FlutterAuthExceptionCode.login, message: An unknown http error occurred, details: {code:: -1002, url: https://twitter.com/oauth/authorize}})
but my actual code is:
final auth = TwitterAuth(
    clientId: 'xxxx',
    clientSecret: 'xxxx',
    callbackUrl: 'xxxx://',
  );

  void _loginTW() async {
    try {
      final resp = await auth.login(context);
      print("Successfully logged in $resp");
       Future.delayed(const Duration(milliseconds: 500), () {
          Navigator.pushNamed(context, '/home', arguments: resp.token);
        });
    } on FlutterAuthException catch (e) {
      switch (e.code) {
        case FlutterAuthExceptionCode.cancelled:
          print('Sign-in process was cancelled by user: ${e.toString()}');
          break;
        case FlutterAuthExceptionCode.network:
          print('A network exception was thrown: ${e.toString()}');
          break;
        case FlutterAuthExceptionCode.login:
          print(
              'An exception occurred during a sign-in attempt: ${e.toString()}');
          break;
      };
    }

  }

Does it comes from my Twitter App or somewhere I can`t see ??

Hi, I've seen this before. I'd check that your callbackUrl is valid. The -1002 is an error related to the webview unable to load the page, I believe.
Also, if the url is https://twitter.com/oauth/authorize this hints that it's failed to get a request token.
Let me if you managed to get to the bottom of this. And, I'll make a note this needs to be added on the docs.


Stanza slash

Description
Allows the use of a / character as part of a stanza name in the stanza filter.
Issues Resolved
#236
Check List

[x ] A summary of changes made is included in the CHANGELOG under ## Unreleased
[x ] New functionality includes testing.
[x ] New functionality has been documented in the README if applicable.

Released as: 4.5.0