Update overview picture

Close #1150.

I'm a little confused what the arrows mean. In many cases, it means are used by, (ie, the new units are needed by the convert units preprocesor), but elsewhere they indicate the order of actions. Personally, I would keep the arrows to indicate  order, and use some other kind of line to indicate "this information is needed by this preprocessor". Perhaps just a line with no arrowhead?
In the same vein, would it be a good time to put arrows between the processors, showing the default order?
Similarly, the input data should go into the top left preprocessor (currently variable definition) instead of into the middle of the preprocessor box. You may need to move the title to the centre or right hand side because of this.
In the list of preprocessors, it would be nice to differentiate between the optional preprocessors that are specified in the recipe, and the preprocessors that run every time. Also, several of the preprocessors that run every time are not shown. (Load, and save files, for instance).
In addition, the Sim card shape indicates recipe or recipe setting, the rounded corners shows a custom algorithm, but the box shape represents both data and operations. Perhaps we could use a different shape to distinguish them?
Sorry to add a ton of work - but this diagram is essential and I think it should be as clear as possible!

Also, I don't think there should be a line linking the user config and the developper config.

Personally, I think its the legend that is confusing things. We need to separate colours and shapes.

blue: data

yellow: preprocessors

purple: recipes

green: configuration

red: diagnostics

square: a specific file

sim card: preprocessor setting

rounded corner: operation

I'm not sure why we have filled and empty shapes. Any ideas?
This way, the preprocessors should be yellow rounded corners, and the diagnostics should be red rounded corners.

I'm a little confused what the arrows mean. In many cases, it means are used by, (ie, the new units are needed by the convert units preprocesor), but elsewhere they indicate the order of actions. Personally, I would keep the arrows to indicate order, and use some other kind of line to indicate "this information is needed by this preprocessor". Perhaps just a line with no arrowhead?

Good points, I changed that.

In the same vein, would it be a good time to put arrows between the processors, showing the default order?

I was not sure about this, since the order can be changed. But maybe showing the default is not a bad idea.

Similarly, the input data should go into the top left preprocessor (currently variable definition) instead of into the middle of the preprocessor box. You may need to move the title to the centre or right hand side because of this.

Done that together with the previous point.

In the list of preprocessors, it would be nice to differentiate between the optional preprocessors that are specified in the recipe, and the preprocessors that run every time. Also, several of the preprocessors that run every time are not shown. (Load, and save files, for instance).

Load and save are pretty trivial operations, and are already represented by the arrows.

In addition, the Sim card shape indicates recipe or recipe setting, the rounded corners shows a custom algorithm, but the box shape represents both data and operations. Perhaps we could use a different shape to distinguish them?

We are using different colors for them, as shown in the legend, I would not complicate this further with additional shapes.

I don't think there should be a line linking the user config and the developper config.

Actually, these are arrows converging with input data into the core: the idea was to show that one needs the information from the config files to read the data. But I removed that anyway.

We need to separate colours and shapes.

I am open to suggestions.

I'm not sure why we have filled and empty shapes. Any ideas?

No particular meaning was intended, but we can changed that as well.
See below the revised version (I also improved fonts and other things).

That looks much better!
I'd very much suggest adding Load file as an iris cube and save file as a netcdf (or something) to the start and end of the preprocessor chain, as these are important operations that everyone already understands. It would form a good starting point to help people really anchor the idea of what a preprocessor operation is.
Minor comments:

Horizontal regridding needs to be joined to the target grid scheme with a line.
I think "diagnostic and graphical scripts" could be shortened to "Diagnostics", but perhaps add ".py, .R, or .ncl  script" in small font below.
The red diagnostics colour are not in the legend.
Do we want to add settings.yml & metadata.yml to the pre-processed input data? Alternatively, these could be a green sim-card box next to pre-processed input data, and feed into the diagnostics box.

My suggestions for the shapes is:
Colours represent the different domains of ESMValTool

blue: data
yellow: preprocessor
purple: recipe
green: configuration
red: diagnostic

And the shapes represent the type of object

square: a specific file. (The config files would all need to be boxes now)
rounded corner: an operation (this would require changing the yellow preprocessor box into a yellow rounded corner box, and the diagnostics to a red rounded corner box)
sim card: a specific setting.

I'd very much suggest adding Load file as an iris cube and save file as a netcdf (or something) to the start and end of the preprocessor chain, as these are important operations that everyone already understands. It would form a good starting point to help people really anchor the idea of what a preprocessor operation is.

I added this as an extra yellow box.

Horizontal regridding needs to be joined to the target grid scheme with a line.

Fixed.

I think "diagnostic and graphical scripts" could be shortened to "Diagnostics", but perhaps add ".py, .R, or .ncl script" in small font below.

Good suggestion, thanks!

The red diagnostics colour are not in the legend.

Added.

Do we want to add settings.yml & metadata.yml to the pre-processed input data? Alternatively, these could be a green sim-card box next to pre-processed input data, and feed into the diagnostics box.

These are actually temporary files generated on-the-run, I would not show them, also to avoid making the overview too crowded.
I also changed colors and shapes as you propose, please have a look...

Thanks for your feedback!


Document how forge script works

Component
Documentation
Describe the feature you would like
forge script is a non-trivial tool and it needs better documentation of what it's actually doing.
The existing docs are very basic, it's just a dry command description, an extremely basic tutorial and a short section about best practices. From the docs I know that there's a local EVM involved, a fork of the network, some messages are packed into transactions and sent, but some logic is executed only locally. It's unclear how it's run, or what exactly happens when vm.broadcast is called. Does it send a transaction right away, or does it wait for the script to end assuming that running them on the blockchain will yield the same results? What's the data flow between what's on the local EVM inside the script and what's on the actual blockchain? Can I batch broadcasted transactions to make them safer and cheaper? Can I see the real effects of the broadcasted transactions in the script? Will its results be verified on Etherscan? There's the problem of simulating of transactions, which may end up being frontrun and probably collapse the entire deployment process, why is it like this and how to work with it? How to write unit tests, does vm.broadcast have any effects for them?
The questions don't seem to end, but they all are probably easy to answer when you understand how forge script runs, it's probably quite simple, but it needs to be documented. TBH I still don't understand how it works, and I don't feel confident writing scripts, that's why I've opened this issue.
Additional context
No response

see the linked PR into book.
closing it here and moving the discussion there


Fix Typo on Guide for scheduling Windows containers in Kubernetes Page

Fixes #36554

/lgtm

/lgtm

Hey @divya-mohan0209 Yes, I have checked it myself, and now there are no more typos on the Page. I've been constantly reviewing other pages also for such typos or mistakes.
I'm starting my open-source journey by contributing to the docs and then moving on to the bigger changes (i.e Code Changes)

This PR duplicates PR https://github.com/kubernetes/website/pull/36566
Issue https://github.com/kubernetes/website/issues/36554 that this PR fixes is now closed and solved
Closing this PR
/close


karma 4.1.0, angular/cli 8, ng test, karma.conf.js, failOnEmptyTestSuite: false is ignored. why?

Expected behaviour
The karma.conf.js conf key failOnEmptyTestSuite is documented. Setting it on false still lead to failed test if no spec files exist. Why?
Actual behaviour
Should work as aspected.
Environment Details

Karma version (output of karma --version):
4.1.0

Relevant part of your karma.config.js file
,failOnEmptyTestSuite: false,

Steps to reproduce the behaviour
10 09 2019 14:57:05.029:INFO [karma-server]: Karma v4.1.0 server started at http://<IP_ADDRESS>:9821/
10 09 2019 14:57:05.030:INFO [launcher] 63% building 443/444 modules 1 active ...TestApp\src\main\webapp\styles_src.scss10 09 2019 14:57:05.421:INFO [launcher]10 09 2019 14:57:14.540:INFO [Chrome 71.0.3563 (Windows 10.0.0)]: Connected on socket Hd16OOjub-O3-pJ3AAAA with id 73285272
Chrome 71.0.3563 (Windows 10.0.0): Executed 0 of 0 SUCCESS (0 secs / 0 secs)
Chrome 71.0.3563 (Windows 10.0.0): Executed 0 of 0 ERROR (0.017 secs / 0 secs)

This feature is tested and works for us.  Please try running with --logLevel=debug and look at the final configuration printed to verify that the flag is set.  (v4.3 has a cleaner output for the final config).

I have to wait till we are going to release the next iteration. I have worked around that by defining an dummy test on every reference app we have. Hopefully this is fixed correctly on Angular 9. But a config-switch which was only created to prevent this should work as expected :) Thank you.

Upgrading to<EMAIL_ADDRESS>fixed it for me. ng test <lib> now returns exit code 0 when all tests are pending.

Thanks for the update!


Assigning values of an attribute by using indentifier

What I'm trying to achieve
Currently, the API returns attribute values along with its id and slug, while during assigning value for the product we can use the only values or slug, which can work improperly in some cases
Describe a proposed solution
A product query returns a list of attribute values, where each has an ID. Each entry is a type of SelectedAttribute. let's reuse that approach and change  bit AttributeValueInput:
type AttributeValueInput {
  id: ID # id is an identifier

  # --- change
  values: [String!] @deprecated
  value: String # we send the value here
  # --- change

  file: String
  contentType: String
  references: [ID!]
  richText: JSONString
  plainText: String
  boolean: Boolean
  date: Date
  dateTime: DateTime
}

We can change values to value and instead of sending one AttributeValueInput with an array of values, let's send AttributeValueInput where each one is for a dedicated value. It will be more consistent with the response we get

https://saleorcommerce.slack.com/archives/C039MGJDWU8/p1666105752429509


Allow no validation on step 0?

Maybe need an option to not run validation on step 0 as it takes too long during development if you just want to run like a thousand steps to see if the loss is going down.

This makes sense -- it was the original idea behind "save_initial".   Maybe we could bring back that option.

See commit 171aee5ccda048c70e470aae17263ad371a81562


Add tabby alias (for tab).

For me, talon often turns "tab" into "ten". This alternative always seems to work.

Hm, how do people feel about this? @pokey @splondike
I'm not opposed, and tab is an easily misrecognized word, but it would be adding a new key name. We do tend to advise people to just customize their own keys.

@codecat555 Are you using conformer/beta or the public version of Talon? If it's the public version, then this issue might go away in the next couple of months when the new voice engine comes out to public.
I'd probably be inclined to think that it might make more sense for you to just have this change in your personal configuration. If other people had a similar issue with tab, they'd have to go and read the code to figure out that there was an alias anyway.
I've done a similar thing for the 'enter' key in my setup; 'return' works better for me. I've actually set this up so that it patches the 'self.special_key' list without actually needing to edit the knausj code. You can see what I've done below:
from talon import Context, registry, app

ctx = Context()
ctx.matches = r"""
os: linux
"""

def _add_keys():
    """
    Put this in a launch listener so it runs after knausj
    """

    # Add return as a first class alias for enter
    my_list = {
        k: v
        for k, v in registry.lists['user.special_key'][0].items()
    }
    my_list['return'] = 'enter'
    ctx.lists['self.special_key'] = my_list
app.register("launch", _add_keys)

You should just need to change 'return' to 'tabby' and 'enter' to tab in the above. You might also need to change the "os: " matcher to match whatever you're using. Do you think something like that would work for you?

Conformer/beta. I thought this might be of general use, but I have no problem keeping it in my own tree.

Oh, that's unfortunate that you're already using the newer engine.
I guess it's hard to know if this change would be useful to others especially since discoverability wouldn't be that great. This PR should show up in searches, so if anybody else runs into the same issue and has Github set up they could put a comment in here and we can revisit the problem. In the meantime, how about we just close it out?


Adjust transpileFile to allow use in browser

This PR is an attempt to allow transpileFile to work directly in the browser.
This is done by using an in memory file system for the typescript project and using the passed in filename directly.
Resolves https://github.com/futurGH/ts-to-jsdoc/issues/45
Related to https://github.com/futurGH/ts-to-jsdoc/pull/47
Closes #47

Thanks! This will be published as 2.2.0.

Awesome, sincerely glad it worked out! I updated the concept to directly use ts-to-jsdoc and it is working as desired in the browser.


[CT-457] [Bug] Project list is not sorted alphabetically in the dbt Cloud UI

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
The project list in a dbt Cloud account is not sorted alphabetically. Current sort order appears to be based on when the project was created.
Expected Behavior
The project list should be sorted alphabetically or have an option to sort in ascending or descending order.
Steps To Reproduce

Navigate to cloud.getdbt.com
Select an account from the account list
Select and observe the project list

Relevant log output
No response
Environment
- OS: Windows 10 version 20H2 (build 19042.1586)
- Browser: Chrome 99.0.4844.51
- dbt: Cloud v<IP_ADDRESS>

What database are you using dbt with?
snowflake
Additional Context
No response

@james-stover-moe Thanks for opening the issue! I totally hear you on the ask for a way to sort, or a more intuitive sort order. I know this same request has come in from a number of users and customers, and it's on the minds of the teams working to build dbt Cloud.
Could I ask you to send this feedback to support, via the chat window inside the application, or by email to<EMAIL_ADDRESS>They handle all bug reports and requests for functionality that is specific to dbt Cloud.
In the meantime, I'm going to close this issue, because the change for it will need to take place in a codebase external to dbt-core.


VPE canvas : right click -> "open file" does not work

Describe the issue
A clear and concise description of what the issue is.
To Reproduce
Steps to reproduce the behavior:

Create pipeline
Add generic node
Right click on node and select "open file". Nothing happens.
Double click on file. It opens as expected.

Deployment information
Describe what you've deployed and how:

Elyra version: 3.0/master

I just pulled the latest master and wasn't able to recreate this issue, opening file from the menu works a expected.
Tried a new generic pipeline as well as existing ones.
I wonder if this has to do with the file path, it worked for me adding node from files on a sibling directory to the pipeline. How did you add your node?

Ok it seems like there's an issue with the pipeline path. In my previous test cases the pipelines created in the root dir work as expected. I was only able to reproduce it when creating pipelines in subdirectories.


Refactor toolbar button code into separate button classes

Toolbar button special behaviors have to be handled by separate classes under app/helpers/application_helper/button.
Turn branches for specific button IDs in build_toolbar_hide_button and similar functions to such classes.
E.g. button changes from #5884 should be implemented in a separate class representing the particular buttons.
ping @romanblanco

See #5959 #6078 #5783

@martinpovolny I see a lot of merged PRs for this issue.  Is there a way to track how many remain to be converted and what completion percentage is?

@chessbyte AFAIK, @vecerek has already finished or maybe missing last PR with toolbar buttons conversion

@chessbyte the last 3 toolbar buttons remain to be converted

@martinpovolny I believe you can close this issue now 😉


List of cities for Dropdown/Search bar

Query v2/cities from OpenAQ, and make an endpoint that shows list of cities, push to Github
json: {"cities": [city1, city2, ... cityN]}

@app.route('/api/cities')
def get_cityName():
r=requests.get("https://u50g7n0cbj.execute-api.us-east-1.amazonaws.com/v2/cities?limit=1000&page=1&offset=0&sort=asc&country=IT&order_by=city")
citiesname=[]
print(r.json()['results'][0])
# return r.json()
for result in r.json()['results']:
    try:
        cityname = result['city']
    except KeyError:
        continue
    citiesname.append(cityname)
response = json.dumps({'cities': citiesname})
return response


chore: add available

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Content path does not exist

Hi there 👋,
I was testing this repo in now v2 and for some reason I am getting the following error:
Error: Your content path does not exist! Please double check `paths.contentPath` in your custom config file e.g. config.production.json.
    at module.exports.exports.Provider.doesContentPathExist (/var/task/user/server.js:266638:15)
    at Object.loadNconf (/var/task/user/server.js:52500:11)
    at Object.<anonymous> (/var/task/user/server.js:52517:27)
    at __webpack_require__ (/var/task/user/server.js:22:30)
    at Object.module.exports.module.exports (/var/task/user/server.js:290916:16)
    at __webpack_require__ (/var/task/user/server.js:22:30)
    at Object.module.exports.Object.defineProperty.value (/var/task/user/server.js:570803:16)
    at __webpack_require__ (/var/task/user/server.js:22:30)
    at Object.<anonymous> (/var/task/user/server.js:612676:17)
    at __webpack_require__ (/var/task/user/server.js:22:30)
    at startup (/var/task/user/server.js:38:19)
    at module.exports.EMAIL_RE (/var/task/user/server.js:44:18)
    at Object.<anonymous> (/var/task/user/server.js:47:10)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)

Here's my config.production.js
"use strict";

module.exports = {
  url: "https://ghost-example.jonlov.now.sh",
  auth: {
    type: "password"
  },
  paths: {
    contentPath: undefined
  },
  logging: {
    transports: ["stdout"]
  }
};

The only thing that I didn't setup is my Google Storage. Is a requirement to have a storage solution? What do you think it could be? Did you run into a similar bug when deploying?
Some help will be appreciated. Thank you!

New ghost v2 does not support pass config as parameters anymore.
Here is one of the way to override the config.
config.js
'use strict';
const { join } = require('path');
const defualtConfig = require('./node_modules/ghost/core/server/config');
const contentPath = join(__dirname, 'content');

defualtConfig.set('paths:contentPath', contentPath);
defualtConfig.set('paths:internalStoragePath', join(contentPath, 'adapters/'));
defualtConfig.set(
  'database:connection:filename',
  join(contentPath, 'data', 'ghost-dev.db')
);
module.exports = defualtConfig;

server.js
const ghost = require('ghost');
const express = require('express');
const { join } = require('path');
require(join(__dirname, 'config.js'));

async function bootstrap() {
  const server = express();
  const ghostServer = await ghost();
  server.use('/', ghostServer.rootApp);
  ghostServer.start(server);
  return server;
}

module.exports = bootstrap();

@etamity did you manage to make Ghost v2 work on Zeit Now v2? I been trying and I still getting the same issue with the content path.

I managed to make it compiled and work locally, but not in Zeit Now V2, it always return error on server

@etamity same over here.
I figure out that when the bundle is compiled by ncc, there's some issues because of the way Ghost was build. I'm sure there's a workaround.
If you want to give a try, try to bundle the index.js file with ncc and then try to run it with node NAME_OF_THE_COMPILED_FILE_BY_NCC.js and have a look at the errors. If you find out something let me know. I'll keep trying.

@jonlov
Here is my config:
{
  "version": 2,
  "name": "website-musiz",
  "routes": [
    { "src": "/.*", "dest": "server.js" }
  ],
  "builds": [
    {
      "src": "content/*/*.*",
      "use": "@now/static"
    },
    {
      "src": ".env",
      "use": "@now/static"
    },
    {
      "src": "package.json",
      "use": "@now/static"
    },
    {
      "src": "MigratorConfig.js",
      "use": "@now/static"
    },
    {
      "src": "server.js",
      "use": "@now/node",
      "config": { "maxLambdaSize": "20mb" }
    }
  ],
  "alias": [
    "https://website-musiz.etamity.now.sh"
  ],
  "env": {
    "NODE_ENV": "production"
  },
  "regions": [
    "lhr"
  ]
}

and got these errors :
ncc: Module directory "/tmp/629f1c9f/user/node_modules/knex/lib/dialects/oracledb" attempted to require "oracledb" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/knex/lib/dialects/maria" attempted to require "mariasql" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/knex/lib/dialects/mssql" attempted to require "mssql" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/ghost/core/server/web/site" attempted to require "hbs" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/jsdom/lib/jsdom" attempted to require "canvas" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/bunyan/lib" attempted to require "source-map-support" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/ws/lib" attempted to require "utf-8-validate" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/ws/lib" attempted to require "bufferutil" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/knex/lib/dialects/mysql2" attempted to require "mysql2" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/knex/lib/dialects/oracle" attempted to require "oracle" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/knex/lib/dialects/postgres" attempted to require "pg-query-stream" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/knex/lib/dialects/postgres" attempted to require "pg" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/knex/lib/dialects/redshift" attempted to require "pg" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/knex/lib/dialects/strong-oracle" attempted to require "strong-oracle" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/ghost/node_modules/knex-migrator/node_modules/knex/lib/dialects/mysql2" attempted to require "mysql2" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/ghost/node_modules/knex-migrator/node_modules/knex/lib/dialects/oracle" attempted to require "oracle" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/ghost/node_modules/knex-migrator/node_modules/knex/lib/dialects/oracledb" attempted to require "oracledb" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/ghost/node_modules/knex-migrator/node_modules/knex/lib/dialects/mssql" attempted to require "mssql" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/ghost/node_modules/knex-migrator/node_modules/knex/lib/dialects/mssql" attempted to require "mssql" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/ghost/node_modules/knex-migrator/node_modules/knex/lib/dialects/mssql" attempted to require "mssql" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/ghost/node_modules/knex-migrator/node_modules/knex/lib/dialects/mssql" attempted to require "tedious" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/ghost/node_modules/knex-migrator/node_modules/knex/lib/dialects/postgres" attempted to require "pg-query-stream" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/ghost/node_modules/knex-migrator/node_modules/knex/lib/dialects/postgres" attempted to require "pg" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/ghost/node_modules/knex-migrator/node_modules/knex/lib/dialects/redshift" attempted to require "pg" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/node-pre-gyp/lib/util" attempted to require "npm" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/node-pre-gyp/lib/util" attempted to require "node-gyp" but could not be resolved, assuming external.
ncc: Module directory "/tmp/629f1c9f/user/node_modules/got" attempted to require "electron" but could not be resolved, assuming external.

It seems didn't bundle the node modules. Any thoughts?


Use poetry instead of requirements.txt

Cairo-lang doesn't have support for poetry and it's bugging out on different OSes. Taking this pr down


[FEA] Model inference locally

🚀 Feature request
Wanted to check if it is currently possible to perform model inference locally in place of setting up Triton Server. If yes, where is the documentation available currently for the same?
Motivation

Currently, whenever I build a new model, I have to deploy it on Triton Server, but just to check the model performance of a batch of 10-20 sessions for testing, wanted to check if there was a way to see results by inferencing locally.
Secondly, to setup triton server, there's a need to download the docker image and setup the nvcr.io/nvidia/merlin/merlin-inference:21.09 image. But is there a work around to inference locally?

@Ahanmr  Do you mean model accuracy with model performance? If yes, you need to use trainer.evaluate(metric_key_prefix='eval') for PyTorch model to evaluate your model's prediction power on validation set, first (see this example). If you want to do final prediction on a test set, you can simply do the following after model training:
model.eval()
model(input_batch_test_set)

and for Tensorflow model you can do model.predict(input_batch_test_set).
you don't need inference server for that, if that's your question?

@Ahanmr Do you mean model accuracy with model performance? If yes, you need to use trainer.evaluate(metric_key_prefix='eval') for PyTorch model to evaluate your model's prediction power on validation set, first (see this example). If you want to do final prediction on a test set, you can simply do the following after model training:
model.eval()
model(input_batch_test_set)

and for Tensorflow model you can do model.predict(input_batch_test_set).
you don't need inference server for that, if that's your question?

So, the following line of code helped me get the metrics for the test_set, but I wanted to clarify if I'm doing this correctly once, so that I can go ahead and deploy this.
eval_metrics = trainer.evaluate(eval_dataset=eval_data_paths, metric_key_prefix='eval')
for key in sorted(eval_metrics.keys()):
    print("  %s = %s" % (key, str(eval_metrics[key])))

After this, to get the predictions on a batch of product_id sessions, I do the following:
eval_dataload = get_dataloader(eval_data_paths, train_args.per_device_eval_batch_size)
batch = next(iter(eval_dataload))

and batch looks like this:
{'product_id-list_seq': tensor([[   642,    642,    642,      0,      0,      0,      0,      0,      0,
               0,      0,      0,      0,      0,      0,      0,      0,      0,
               0,      0],
         [  2962,   2962,   2962,      0,      0,      0,      0,      0,      0,
               0,      0,      0,      0,      0,      0,      0,      0,      0,
               0,      0],
         [ 12252,  10221,  18489,  20159,  31245,  10221,  18885,  12252,  18885,
           12252,  18885,  12252,   2886,  20159,   2886,  20159,   2886,  31245,
           78571,  10221],
         [  5005,   1839,   3112,  15067,   3112,    455,   3503,      0,      0,
               0,      0,      0,      0,      0,      0,      0,      0,      0,
               0,      0],
         ...
         [  6589,   1881,    185,      0,      0,      0,      0,      0,      0,
               0,      0,      0,      0,      0,      0,      0,      0,      0,
               0,      0]], device='cuda:0')}

then finally, on running, model(batch), I got the following output dictionary
output = model(batch)

{'loss': tensor(12.9607, device='cuda:0', grad_fn=<NllLossBackward0>),
 'labels': tensor([   642,    642,   2962,   2962,  10221,  18489,  20159,  31245,  10221,
          18885,  12252,  18885,  12252,  18885,  12252,   2886,  20159,   2886,
          20159,   2886,  31245,  78571,  10221,   1839,   3112,  15067,   3112,
            455,   3503,  27648,  33940, 371869,   1693,   3809,   1693,   1152,
          39043,  20117, 162305,  42138,   1976,  11139,   1920,    746,    746,
            322,   3780,   3121, 185678,   3121,   3780,   3121,   3780,   3121,
           3121,  73064,  73064,  73064, 419261, 147073,  95499, 175334,  59296,
           1497,   2602,   2602, 462300,  50554,   7634,  50554,  74959,  50554,
         225943,   3525,   1264,    501,   1264,     79,   6027,   6027,  31012,
             21,      6,    306,   4363,  14283,  30137,   4363,  30137, 224529,
         143820, 224522,    925,    576,   1902,  17982,  25200, 162768, 162772,
         203166, 162772, 162768,  85980,  62426,   1881,    185],
        device='cuda:0'),
 'predictions': tensor([[ -40.8026,  -41.2528,  -13.0302,  ...,  -41.4139,  -41.3386,
           -41.0184],
         [ -40.8026,  -41.2528,  -13.0302,  ...,  -41.4139,  -41.3386,
           -41.0184],
         [ -57.8077,  -57.5196,  -21.6697,  ...,  -58.0113,  -55.8364,
           -57.8259],
         ...,
         [ -16.0957,  -16.1184,  -10.7048,  ...,  -16.0890,  -16.1076,
           -16.0958],
         [-103.6853, -102.6834,  -13.4621,  ..., -100.6037, -104.4472,
          -104.3079],
         [ -70.6631,  -70.4196,   -5.5336,  ...,  -71.1709,  -70.4627,
           -70.9110]], device='cuda:0', grad_fn=<LogSoftmaxBackward0>),
 'pred_metadata': {},
 'model_outputs': []}

So, I extracted output['predictions'], but this is a logit each of size of the original catalog. So, is there a direct function to get the reverse mapping of the product_id mapped to the top-n maximum values from this tensor. Am I correct? So if I find the top-n maximum values from this tensor, those would be products with highest score? Wanted to check is there a way to get the original product_ids from the dataframe by converting this tensor directly to a beautified output like shown in triton server notebook?

I am also confused about this. Is there a way to get sorted predictions for each session with their labels (predicted output)?

Yes I have been looking at this notebook for sometime now and after a bit of experimentation I was able to make it work for my use case. Hopefully the implementation is correct @rnyak
test_path = ['./data/sessions_by_day_mind/6/test.parquet']
trainer.eval_dataloader = get_dataloader(test_path, train_args.per_device_eval_batch_size)

#batch
batch = next(iter(trainer.get_eval_dataloader()))

The batch contains 32 sessions.
model.eval()

model(batch, training=False)

response =  model(batch, training=False)["predictions"]

Stores the prediction logits in  response variable above
Now I load the data that I have pre-processed
df = cudf.read_parquet("./data/sessions_by_day_mind/6/test.parquet")
df = df.iloc[0:32,:] # 32 sessions selected in the dataframe too correspond to the ones selected in the batch

Made a very slight change to the util function because I am not using the tritonclient inference server
def visualize_response(batch, response, top_k, session_col="session_id"):
    """
    Util function to extract top-k encoded item-ids from logits

    Parameters
    ----------
    batch : cudf.DataFrame
        the batch of raw data sent to triton server.
    response: prediction logits in a tensor
    top_k: int
        the `top_k` top items to retrieve from predictions.
    """
    sessions = batch[session_col].drop_duplicates().values
    predictions = response.cpu().detach().numpy() #changed from as_numpy to numoy()
    top_preds = np.argpartition(predictions, -top_k, axis=1)[:, -top_k:]
    for session, next_items in zip(sessions, top_preds):
        print(
            "- Top-%s predictions for session `%s`: %s\n"
            % (top_k, session, " || ".join([str(e) for e in next_items]))
        )

Finally
visualize_response(df, response , top_k=5, session_col='session_id')
Output:

how did you define method "get_dataloader"?

Yes I have been looking at this notebook for sometime now and after a bit of experimentation I was able to make it work for my use case. Hopefully the implementation is correct @rnyak
test_path = ['./data/sessions_by_day_mind/6/test.parquet']
trainer.eval_dataloader = get_dataloader(test_path, train_args.per_device_eval_batch_size)

#batch
batch = next(iter(trainer.get_eval_dataloader()))

The batch contains 32 sessions.
model.eval()

model(batch, training=False)

response =  model(batch, training=False)["predictions"]

Stores the prediction logits in response variable above
Now I load the data that I have pre-processed
df = cudf.read_parquet("./data/sessions_by_day_mind/6/test.parquet")
df = df.iloc[0:32,:] # 32 sessions selected in the dataframe too correspond to the ones selected in the batch

Made a very slight change to the util function because I am not using the tritonclient inference server
def visualize_response(batch, response, top_k, session_col="session_id"):
    """
    Util function to extract top-k encoded item-ids from logits

    Parameters
    ----------
    batch : cudf.DataFrame
        the batch of raw data sent to triton server.
    response: prediction logits in a tensor
    top_k: int
        the `top_k` top items to retrieve from predictions.
    """
    sessions = batch[session_col].drop_duplicates().values
    predictions = response.cpu().detach().numpy() #changed from as_numpy to numoy()
    top_preds = np.argpartition(predictions, -top_k, axis=1)[:, -top_k:]
    for session, next_items in zip(sessions, top_preds):
        print(
            "- Top-%s predictions for session `%s`: %s\n"
            % (top_k, session, " || ".join([str(e) for e in next_items]))
        )

Finally
visualize_response(df, response , top_k=5, session_col='session_id')
Output:

how did you define method "get_dataloader"?

@SaadAhmed433 how did you define the method "get_dataloader"?

@kontrabas380  I followed the tutorial example given in this notebook

Hi All,
First of all, thank you for sharing this awesome code with us!
Hope you don't mind me adding my two cents to the very interesting thread.
I'm afraid that there's an issue with the local inference as explained above, i.e.
model.eval()
model(input_batch_test_set)

The masking layer if retained in a trained model and not disabled (I'm not sure there's a easy way to turn it off / remove), then at inference it will be replacing an embedding of the last element of every sequence with a learnable masking embedding. To my understanding this effectively makes the model ignore the last, more recently consumed item.

@SaadAhmed433: About the local prediction, in your code: "batch = next(iter(trainer.get_eval_dataloader()))" only returns 32 sessions. Do you know how to loop through the whole file to get all sessions? Does trainer.eval_dataloader remember last batch read position and we just keep calling next until batch is null, or "next(iter(" just randomly return 32 records? Thanks
test_path = ['./data/sessions_by_day_mind/6/test.parquet']
trainer.eval_dataloader = get_dataloader(test_path, train_args.per_device_eval_batch_size)
#batch
batch = next(iter(trainer.get_eval_dataloader()))

Yes you can keep calling the next and you will get the next batch in sequence, it will remember where it ended and will start from the new position.
Here is a small snippet of code
test_path = ['./data/test.parquet']
test_loader = get_dataloader(test_path )

#create iterable batch
iterable_batch = iter(test_loader)

Now you loop over the length of the test_loader and apply the next method
for j in range(len(test_loader)):
    batch = next(iterable_batch)

    with torch.no_grad():
        response = model_p(batch, training=False)["predictions"]

@SaadAhmed433 thanks for the detailed explanation. On the last section, the visualize_response function, what are those numbers in front of the session_id in the result? For example, for session 17 you have a recommendation of 230. Is that a session ID, item ID, or an index? Could you finish this last part of your example?

@rnyak Thanks for the explanation. Are you sure the printed predictions of this example are Item IDs? Or are they indices of Items? I searched in the initial dataset and cannot find some this numbers as an item id. I wish the example would go one extra step to print exactly the recommendation from the initial dataset.

@hosseinkalbasi These are categorified (encoded) item ids. you need to convert/map them back to original item ids.
in order to do that, you need to find the categories folder where you can see the parquet file unique.item_id.parquet including values for encoded item_id --> original item_id. Just read in this parquet file, and you will see the index column is the encoded item_id, and the item_id column is the original id. From there you can do the mapping yourself with a simple custom code.

Thank you @rnyak , interesting. Unfortunately I still cannot figure out the connection between the item_id and encoded item id. I unpacked the unique.item_id.parquet as you specified. The encoded-item-id is not there and the magnitude of the item ids with what we see as recommendations (encoded item ids) is different. Did I go ahead as you instructed?

The index column  from 0 to 52739 are your encoded item ids, that you get from Triton after you run visualize_response function.   Arent the values of the item ids with what we see as recommendations (encoded item ids) are within 0-52739  in your case?

Thank you @rnyak! This is so much clearer for me now. I can now resolve recommendations.
No, the full length of recommendation I get is a bit (4 items) more than the total number of item ids! Not sure if this is a BUG or how it could be explained!
Detailed comaprisons:
Let's see how many Item Ids we have in the first place
cudf.read_parquet('/workspace/data/interactions_merged_df.parquet')['item_id'].nunique()
# output: 52739

How many encoded item ids do we have after NVTabular workflow has been applied?
category_item_id = cudf.read_parquet('./workflow_etl/categories/unique.item_id.parquet').reset_index().dropna(axis=0, subset=['item_id']).rename(columns={"index": "encoded_item_id"})
category_item_id

# number of rows: 52739

All good so far! However, if we take a closer look at the prediction (Triton Inference Server response), we have 52743 logit values for each predicted session!
After running this code:
import nvtabular.inference.triton as nvt_triton
import tritonclient.grpc as grpcclient

inputs = nvt_triton.convert_df_to_triton_input(filtered_batch.columns, filtered_batch, grpcclient.InferInput)
output_names = ["output_1"]
outputs = []
for col in output_names:
    outputs.append(grpcclient.InferRequestedOutput(col))
    print(outputs)
MODEL_NAME_NVT = "t4r_tf"
with grpcclient.InferenceServerClient("<inference-server-ip>:8001") as client:
    response = client.infer(MODEL_NAME_NVT, inputs)
    response_as_numpy = response.as_numpy(col)
    print(col, ':\n', response_as_numpy)
    print("*"*8, response_as_numpy.shape)

Output:
[<tritonclient.grpc.InferRequestedOutput object at 0x7f73388d8850>]
output_1 :
 [[-15.010758  -15.9208555  -9.183845  ... -15.026     -17.51056
  -14.421532 ]
 [-14.498426  -15.743032  -10.884762  ... -15.942841  -17.284363
  -15.883841 ]
 [-19.52346   -16.099092  -11.823889  ... -16.027607  -18.37647
  -13.709213 ]
 ...
 [-15.586963  -16.59345    -9.404068  ... -21.083416  -17.071983
  -16.640312 ]
 [-16.728306  -14.76777   -10.235783  ... -18.325325  -15.863041
  -13.49     ]
 [-19.494577  -21.577778   -9.008173  ... -23.189869  -18.583168
  -19.197771 ]]
******** (15, 52743)

Is this expected @rnyak ? I expected the length of each row of prediction to be 52739 as well.

Hi everyone. May I ask you for help?
I would like to understand how trained model is going to behave in production. For that end I want to recompute RecallAt on my own by inferencing the model and compare it with recall returned by trainer.evaluate(eval_dataset=eval_path)). But I keep getting different results of metrics.
Specifically, I thought, that if eval_on_last_item_seq_only=True then trainer.evaluate() method would compute metrics by counting how many times the prediction hits the last item_id in the sequence/session (given the inputs sequence [0:N-1], where Nth item_id is the label).
I tried to replicate it. I truncated my valid.parquet dataset by splitting each sequence into new sequence [1:N-1] (as input), and last item [N] (for label) and computed RecallAt on my own by simply inferencing and counting number of hits.
predictions = model(sequence_truncated, testing=False)
correct = int(label in predictions.argsort()[:-20])

However, I am getting smaller RecallAt compared to running trainer.evaluate(eval_dataset=eval_path).
I debugged code and also found out, that the predictions inside the trainer.evaluate() differ from my predictions during the inference mainly due to testing=True, which significantly influences mask_targets and masking_scheme. Could someone explain in detail how testing variable influences inputs and outputs and why model predictions are so different when testing=True (in evaluate()) and testing=False (during the inference)? And how can I simulate evaluate method by inferencing the model (testing=False)?
Thanks a lot.


Please Update the Design to match Google's Material UI 3.0 So we can use it instead of agora

Please zeego, Update the UI to Material ui 3.0.

ok, we will think about that

discuss on https://github.com/ZEGOCLOUD/zego_uikit_prebuilt_call_flutter/issues/15, closed


Error in mode share summary table

The following table (overall_mode_shares_bytaz.bin) sums up the origin and destination trips for each TAZ including the od_veh_trips_PM_PKHR.mtx file (see .rsc snippet below).  This .mtx should be excluded since it is already accounted for in the od_veh_trips_PM.mtx matrix.  This results in too many origins and destinations by TAZ.  The description should also note that these are the sum of the trip origins and trip destinations for each TAZ. Other summary tools should be reviewed to make sure this same over counitng is not occurring.

As a follow-up, this file and the overall_mode_shares_bycounty.bin include the  productions at the external stations. Should these be excluded or if included, should a county name be assigned to them? Does 'auto' mode in this table include cv, sut and mut?

First part fixed in commit fde5bd19ea37043edbe67b16413be3f54b9d91ae
For the second part, yes, they include CV/SUT/MUT. This is because what is being summarized is the entire highway assignment matrix. Also, if you want that null record to be replaced by "externals" let me know, but I'm going to mark this closed for now.


multiprocessing

You didn't test it before in all environments (e.g. print is a function in Python 3) and numProcs was in lowerCamelCase (it should have been num_procs). The "timer" is actually just a timestamp diff (not an event trigger), it's the part that didn't work in Python 3, besides being unneeded. These aren't really big issues, with some small change I managed to get it working here in Python 2.7 and 3.5, passing with py.test. There's something buggy with either Travis CI or the Matplotlib installed with pip install --pre matplotlib (perhaps both) that isn't your fault (Travis CI + tox + Matplotlib isn't an encouraging combination), I was trying to change tox.ini and .travis.yml to fix that, but you've already deleted your fork without even commenting here, few hours before completing the 5th day after the PR. PRs can't be reopen when the author fork is deleted.


Add Data to View

Q
A

Is bugfix?
❌

New feature?
✔

Breaks BC?
❌

Fixed issues
https://github.com/yiisoft/view/issues/94

The idea itself will be considered but closing the PR since it can't be applied anymore.


using RabbitMQ and HEADERS exhange type, queue is not bound to exchange

see Q&A here:
https://stackoverflow.com/a/56737419/2924784

Duplicates #254


[placeholder] Review what goes in "tasks" vs "manage tasks" pages

We should review what we currently have in each one of the two task lists, and decide which parts are duplicated and which parts are defined only in one of the two pages (and which one).

Based e.g. on https://github.com/fractal-analytics-platform/fractal-web/issues/657#issuecomment-2514215837:
Side comment (no action needed): where should the following feature live?

As part of #658, this is within the tasks-management page, which makes sense because that's the kind of separation we introduced (a read-only page that shows all available tasks, and one for the actual operations).
At some point in the future we may want to review this, and move the "Edit single task" button to the tasks list page. But I don't have a strong opinion here, and I would wait for some additional feedback (even after the merge&release).
In general I think that editing tasks should be quite rare, for the use flows that we typically have in mind.

At some point in the future we may want to review this, and move the "Edit single task" button to the tasks list page. But I don't have a strong opinion here, and I would wait for some additional feedback (even after the merge&release).

I think it's well placed where it is. Editing tasks would be a task management operation. And it's good if the task management page has a simple overview of the task packages, while the main task page has our new fancy view on it :)

Is it OK this way, or should we add some more info into the modal of the new tasks page?

That's a good question. For the moment, the separation works well for me. The core thing users care about is the task description. If we had more relevant Docs Link, they may also care about them. And some potential future content like longer description or images.
But all the other content like command, args schema version, meta, arg schemas etc. are correctly placed on the task management page, as they shouldn't be user-relevant


Prove GA deposits match current proposals: #367

Description
This PR is to address issue #367.
Checklist

[x] Commit sequence broadly makes sense and commits have useful messages
[x] Code is formatted according to CONTRIBUTING.md
[x] Self-reviewed the diff

Hi William, I'm not seeing the latest work on this here

There are still two things left to do here, which is to prove the same invariant for EPOCH (this should be much easier since removed is used to update govSt in L100, and also to remove deposits in L108 (and L89) and to lift everything to CHAIN, since this is where the invariant is supposed to hold.

In addition to the inline comments, there are tons of places where you write dom (X ˢ), but you can usually just write dom X.

This wasn't working in a few places so, because I didn't want to bother with it while struggling to get other things to work, I included the superscript... but now that other things are working, I'll remove the superscript where possible.

@WhatisRT I think we're finally good to go... although, I looked for the new cosmetic change requests you mentioned earlier, but couldn't find any new ones.  Have I missed anything?


Fix/sign transaction bug

A bug with the new offline-sign-key parameter was causing the custom GetRequiredKeys handler to set making it impossible to correctly sign transaction meant to be pushed to the chain.
The problem was the the parameter has been converted from a string to a string slice and the default value being the empty string slice.
The signing process was incorrectly checking for the parameter being nil instead of checking for being the empty slice.
This is now fixed.

Merging as this is breaking master right now.


Add GradientTexture2D

Based on #31655, co-authored-by @MarianoGnu.

(yes, this is radial gradient texture used in a Light2D node, and animated with AnimationPlayer).
Godot proposal: godotengine/godot-proposals#1677.
Changes when comparing to #31655:

creates a new GradientTexture2D rather than modifying existing GradientTexture;

if we go this route, then GradientTexture is better renamed to GradientTexture1D;

create texture placeholder for when gradient is empty, similarly to NoiseTexture (NOTE: GradientTexture needs a similar fix).
fixed get_width and get_height virtual overrides (NOTE: GradientTexture needs a similar fix).
renamed enums to just Fill and Repeat, NO_REPEAT renamed to REPEAT_NONE (conform to existing naming convention).
moved member initialization from constructor to class declaration;
grouped fill_ and repeat_ properties in the inspector.
added PROPERTY_USAGE_EDITOR_INSTANTIATE_OBJECT for gradient (doesn't work in current master, see #43015);
written documentation;
duplicated the same icon used by GradientTexture (for now);
various code style fixes;

Not sure about fill_from and fill_to. Perhaps it would be better to rename this to fill_start_offset and fill_end_offset.
To-do

[ ] Update new icon from goostengine/goost#44.
[ ] Optimize the case for generating solid color textures: https://github.com/goostengine/goost/commit/c9ff44de7a753298b26cf24c9a62e314f9300b9b.

Test project:
gradient_texture_2d.zip

Build artifacts are also available now, by the way:

🐧 Linux: https://github.com/godotengine/godot/actions/runs/311007142
🏁 Windows: https://github.com/godotengine/godot/actions/runs/311007127
🍎 macOS: https://github.com/godotengine/godot/actions/runs/311007123

@Xrayez this need to be rebased

Rebased, fixed get_width and get_height virtual overrides in the process (same issue needs to be fixed for GradientTexture...)
See also test project attached in the original post.

It runs and seems to work correctly except for the light which does not apply the color mask even if it set up - I need to set it manually - but I think this bug is unrelated to this PR:

Fixed by creating texture placeholder, similarly to how NoiseTexture does it in master:
RID GradientTexture2D::get_rid() const {
	if (!texture.is_valid()) {
		texture = RS::get_singleton()->texture_2d_placeholder_create();
	}
	return texture;
}

Invalid textures were treated as bad by Light2D so no changes were applied, should be ok now.
The same limitation exists in GradientTexture (1D), but the fix is probably not needed there.
This is another change which differs current implementation from #31655, likely it wasn't completely obvious what changes were needed to make it work in master, not sure.

I think this needs invert property, because if you use it as a radial texture for lights, then by default this will be:

In GDScript, in theory you could extend GradientTexture2D to override this to have properly defined:
@tool
class_name RadialLightTexture extends GradientTexture2D

func _init():
	fill = GradientTexture2D.FILL_RADIAL
	fill_from = Vector2(0.5, 0.5)
	fill_to = Vector2(0.5, 0.0)
	gradient = Gradient.new()
	# Invert by switching black and white.
	gradient.set_offset(0, 1.0)
	gradient.set_offset(1, 0.0)

But extending textures doesn't work because Texture is not registered as virtual class: #42830.
If you set those properties via inspector, you'll get this:

So, currently it takes a lot of steps to setup a radial texture like this... Mainly talking about use case described in godotengine/godot-proposals#1717, so perhaps adding invert property could help this process.

The 3.2 version of this PR is now merged in Goost: goostengine/goost#43.

So, currently it takes a lot of steps to setup a radial texture like this... Mainly talking about use case described in godotengine/godot-proposals#1717, so perhaps adding invert property could help this process. Alternatively, see godotengine/godot-proposals#1724.

I've added LightTexture class in Goost which helps this use case significantly: goostengine/goost#60.

[salvagable]
Sorry for closing this and my other PRs, but I'm currently in a quite bad depression right now, so I'll be unable to work on Godot for some time.


segfault on insert

I tried to append some data to an existing table, but I get the following failure (+ clickhouse-server dies):

2017.11.08 15:29:48.600076 [ 31 ]  BaseDaemon: ########################################
2017.11.08 15:29:48.600153 [ 31 ]  BaseDaemon: (from thread 28) Received signal Segmentation fault (11).
2017.11.08 15:29:48.600182 [ 31 ]  BaseDaemon: Address: 0xf8
2017.11.08 15:29:48.654616 [ 31 ]  BaseDaemon: 0. clickhouse-server(DB::LogBlockOutputStream::writeData(std::string const&, DB::IDataType const&, DB::IColumn const&, std::vector<std::pair<unsigned long, DB::Mark>, std::allocator<std::pair<unsigned long, DB::Mark> > >&, std::vector<std::pair<unsigned long, DB::Mark>, std::allocator<std::pair<unsigned long, DB::Mark> > >&, std::set<std::string, std::lessstd::string, std::allocatorstd::string >&, unsigned long)+0x505) [0x336e115]
2017.11.08 15:29:48.654642 [ 31 ]  BaseDaemon: 1. clickhouse-server(DB::LogBlockOutputStream::write(DB::Block const&)+0x120) [0x336e990]
2017.11.08 15:29:48.654661 [ 31 ]  BaseDaemon: 2. clickhouse-server(DB::PushingToViewsBlockOutputStream::write(DB::Block const&)+0x401) [0x31eaa71]
2017.11.08 15:29:48.654681 [ 31 ]  BaseDaemon: 3. clickhouse-server(DB::copyData(DB::IBlockInputStream&, DB::IBlockOutputStream&, std::atomic)+0x91) [0x35de811]
2017.11.08 15:29:48.654699 [ 31 ]  BaseDaemon: 4. clickhouse-server(DB::PushingToViewsBlockOutputStream::write(DB::Block const&)+0x3ad) [0x31eaa1d]
2017.11.08 15:29:48.654716 [ 31 ]  BaseDaemon: 5. clickhouse-server(DB::MaterializingBlockOutputStream::write(DB::Block const&)+0x28) [0x31e8268]
2017.11.08 15:29:48.654732 [ 31 ]  BaseDaemon: 6. clickhouse-server(DB::AddingDefaultBlockOutputStream::write(DB::Block const&)+0x235) [0x3507cb5]
2017.11.08 15:29:48.654749 [ 31 ]  BaseDaemon: 7. clickhouse-server(DB::ProhibitColumnsBlockOutputStream::write(DB::Block const&)+0x4f) [0x35a894f]
2017.11.08 15:29:48.654765 [ 31 ]  BaseDaemon: 8. clickhouse-server(DB::SquashingBlockOutputStream::write(DB::Block const&)+0x391) [0x35b08f1]
2017.11.08 15:29:48.654781 [ 31 ]  BaseDaemon: 9. clickhouse-server(DB::CountingBlockOutputStream::write(DB::Block const&)+0x1c) [0x352f20c]
2017.11.08 15:29:48.654798 [ 31 ]  BaseDaemon: 10. clickhouse-server(DB::TCPHandler::receiveData()+0x7f) [0x13dbf4f]
2017.11.08 15:29:48.654814 [ 31 ]  BaseDaemon: 11. clickhouse-server(DB::TCPHandler::receivePacket()+0x1b5) [0x13dc5e5]
2017.11.08 15:29:48.654830 [ 31 ]  BaseDaemon: 12. clickhouse-server(DB::TCPHandler::readData(DB::Settings const&)+0x142) [0x13dc952]
2017.11.08 15:29:48.654847 [ 31 ]  BaseDaemon: 13. clickhouse-server(DB::TCPHandler::processInsertQuery(DB::Settings const&)+0x241) [0x13dd611]
2017.11.08 15:29:48.654871 [ 31 ]  BaseDaemon: 14. clickhouse-server(DB::TCPHandler::runImpl()+0x647) [0x13dddb7]
2017.11.08 15:29:48.654887 [ 31 ]  BaseDaemon: 15. clickhouse-server(DB::TCPHandler::run()+0x1c) [0x13de93c]
2017.11.08 15:29:48.654903 [ 31 ]  BaseDaemon: 16. clickhouse-server(Poco::Net::TCPServerConnection::start()+0xf) [0x3b1313f]
2017.11.08 15:29:48.654918 [ 31 ]  BaseDaemon: 17. clickhouse-server(Poco::Net::TCPServerDispatcher::run()+0x10b) [0x3b1494b]
2017.11.08 15:29:48.654932 [ 31 ]  BaseDaemon: 18. clickhouse-server(Poco::PooledThread::run()+0x87) [0x3c1ad17]
2017.11.08 15:29:48.654947 [ 31 ]  BaseDaemon: 19. clickhouse-server(Poco::ThreadImpl::runnableEntry(void)+0x96) [0x3c158a6]
2017.11.08 15:29:48.654977 [ 31 ]  BaseDaemon: 20. /lib64/libpthread.so.0(+0x7e25) [0x7f7de62cee25]

I am using the newest release (v1.1.54304) and this error is reproducible (but I am not allowed to provide the dataset).

@inkrement , try minimizing and then mangling the dataset, so the error is still reproducible. Then post reproducible case here. This should increase chances for fixing the issue.

The data is somehow public, it's from a Kaggle competition. But I am not sure if I am allowed to upload it here. Anyway, you can download the files on kaggle: https://www.kaggle.com/c/kkbox-churn-prediction-challenge/data. The first data set was user_logs.csv.7z and then I tried to add user_logs_v2.csv.7z to the same table. The schema looks like this:
CREATE TABLE user_logs (
	msno FixedString(44),
  date_raw String,
	date Date DEFAULT toDate(concat(concat(concat(substring(date_raw, 1,4),'-') , concat(substring(date_raw, 5, 2), '-')),substring(date_raw, 7, 2))),
	num_25 UInt16,
	num_50 UInt16,
	num_75 UInt16,
	num_985 UInt16,
	num_100 UInt16,
	num_unq UInt16,
	total_secs Float64
)  ENGINE=MergeTree(date, (msno, date), 8192)

)  ENGINE=MergeTree(date, (msno, date), 8192)

Looks like it was Engine=Log table (according to stacktrace)

Steps:

Download the data from Kaggle.
unzip kkbox-churn-prediction-challenge.zip

CREATE TABLE user_logs
(
    `msno` FixedString(44),
    `date_raw` String,
    `date` Date DEFAULT toDate(concat(concat(concat(substring(date_raw, 1, 4), '-'), concat(substring(date_raw, 5, 2), '-')), substring(date_raw, 7, 2))),
    `num_25` UInt16,
    `num_50` UInt16,
    `num_75` UInt16,
    `num_985` UInt16,
    `num_100` UInt16,
    `num_unq` UInt16,
    `total_secs` Float64
)
ENGINE = Log

7z x -so user_logs.csv.7z | clickhouse-client --query "INSERT INTO user_logs (msno, date_raw, num_25, num_50, num_75, num_985, num_100, num_unq, total_secs) FORMAT CSVWithNames"
7z x -so user_logs_v2.csv.7z | clickhouse-client --query "INSERT INTO user_logs (msno, date_raw, num_25, num_50, num_75, num_985, num_100, num_unq, total_secs) FORMAT CSVWithNames"

Everything is Ok.
The issue was fixed long time ago.


Update servicegraph image

Jenkins job istio.github.io/presubmit passed

@frankbu that suggestion sounds good to me. Do you want to take a stab, or want me to add that?

Jenkins job istio.github.io/presubmit passed

@douglas-reid, you might as well push the change along with this PR. I would suggest something like changing the text:
"and executing the curl request to confirm it's working"
to
"and generating some load on the application (e.g., executing some curl requests in a while loop)"

Jenkins job istio.github.io/presubmit passed

Jenkins job istio.github.io/presubmit passed

SG. Altered text to match your suggestion.


mirror storage

When registry2 as mirror proxy,where the layers stored in local.And How to check wether the mirror woring.I map volume /root/registry/data:/var/lib/registry ,but there is nothing.

@jiashiwen : if you setup according to this
Aside from seeing the content locally, the registry logs will indicate activity when you docker pull

did the logs like this：
registry_1 | time="2015-10-27T02:59:00Z" level=info msg="Registry configured as a proxy cache to https://registry-1.docker.io" instance.id=a7a45a16-d0c0-4057-92c1-bd17aeaef16c version=v2.1.1
registry_1 | time="2015-10-27T02:59:00Z" level=info msg="listening on [::]:5000" instance.id=a7a45a16-d0c0-4057-92c1-bd17aeaef16c version=v2.1.1
nginx_1    | <IP_ADDRESS> - - [27/Oct/2015:03:01:05 +0000] "GET //v2/ HTTP/1.1" 401 194 "-" "docker/1.8.3 go/go1.4.2 git-commit/f4bf5c7 kernel/3.19.0-28-generic os/linux arch/amd64" "-"
nginx_1    | <IP_ADDRESS> - - [27/Oct/2015:03:01:05 +0000] "GET /v2/library/maven/manifests/latest HTTP/1.1" 401 194 "-" "docker/1.8.3 go/go1.4.2 git-commit/f4bf5c7 kernel/3.19.0-28-generic os/linux arch/amd64" "-"
but，when i restart the container，where the predownload content stored？

@jiashiwen , i think you use the filesystem driver, right? so, what is your configuration? if you configure your root dir of filesystem driver at /var/lib/registry, you can check that folder.
Also, to enable mirror, you must change docker daemon option and add '--registry-mirror=your_mirror_registry_addr' when daemon starts, and you can run 'docker pull golang:1.4' to test it.

thank you

thanks @hopkings2008 .  Closing ..


Add "type_separator" option to control placement of "+" in types

This adds a new type_separator option, similar to the binop_separator option, as requested in #4979. Tests for it are included in tests/{source,target}/type-separator-back/. While trying to come up with appropriate tests that included comments, I ran into #2055. I've made the necessary changes to fix that, and have included tests for it in tests/{source,target}/issue-2055.rs.
One thing I'm unsure of, and wanted to ask about: are things that are gated under Version::Two okay to change? If you look at tests/target/type-separator-back/impl-v2.rs, you can see that the behaviour of the impl keyword currently doesn't indent the lines following the first. This doesn't match the indentation behaviour of dyn and others, but I didn't want to change it without checking first since doing so would break the impl keyword test in tests/target/issue-3701/two.rs.

This adds a new type_separator option, similar to the binop_separator option, as requested in #4979. Tests for it are included in tests/{source,target}/type-separator-back/. While trying to come up with appropriate tests that included comments, I ran into #2055. I've made the necessary changes to fix that, and have included tests for it in tests/{source,target}/issue-2055.rs.

Thank your another PR!
I think it would probably be best to split these into two separate PRs given the size and dependency. Also worth noting that there is a separate branch in this repo that contains what is at this point a significantly different version of the codebase, which was intended to be used for a major/breaking v2 release of rustfmt (/rustfmt-2.0.0-rc.2 - https://github.com/rust-lang/rustfmt/tree/rustfmt-2.0.0-rc.2)
That breaking release is unlikely to happen any time soon, if ever, but it's relevant here because there were some changes/fixes applied to that branch which may be usable, or at least worth referencing. There's also some directly related changes that were proposed (at least in part) around the issues discussed in #2055 that I wanted to make sure you were aware of as well, refs #4666.
Don't feel obligated to copy/constrained by any other such changes on the 2.x side though. I haven't had a chance to look at any of the actual changes here and no matter what we need to get the fixes/improvements into the main branch so that we can actually get them out to users, but wanted to you let you know there was some prior art.

One thing I'm unsure of, and wanted to ask about: are things that are gated under Version::Two okay to change?

Great question, and the answer is yes. rustfmt is governed by constraints that don't allow us to change the default formatting produced outside a few exception paths, like genuine bug fixes and iterative formatting support for new syntax. So we can't make any changes to the codebase that would cause the formatting emitted with the default Version::One variant, but the non-default Version::Two isn't subject to those constraints.

#4711 is also likely somewhat relevant


NLB-4532: Add lua module

Proposed changes
Add lua module to crossplane. Validation reference to https://github.com/openresty/lua-nginx-module/blob/1d2aeb309c592484808f9b7313bc798461a37591/src/ngx_http_lua_module.c and https://github.com/openresty/lua-nginx-module/tree/master?tab=readme-ov-file#directives
*_by_lua and *_by_lua_block directives need additional lexer, I will do it in other PR
Checklist
Before creating a PR, run through this checklist and mark each as complete.

[ ] I have read the CONTRIBUTING document
[ ] If applicable, I have added tests that prove my fix is effective or that my feature works
[ ] If applicable, I have checked that any relevant tests pass after adding my changes
[ ] I have updated any relevant documentation (README.md)

LGTM with reference to https://github.com/openresty/lua-nginx-module/blob/1d2aeb309c592484808f9b7313bc798461a37591/src/ngx_http_lua_module.c

I think this PR is incomplete and you should add some tests for covering the lexer processing some of the more interesting looking lua directives. Here's a rather terse example test that covers this config demonstrating at least one *_by_lua directive is handled just fine:
http {
    server {
        set_by_lua $res ' return 32 + math.cos(32) ';
    }
}

diff --git a/lex_test.go b/lex_test.go
index 1b9504d..01303eb 100644
--- a/lex_test.go
+++ b/lex_test.go
@@ -226,6 +226,18 @@ var lexFixtures = []lexFixture{
 		{";", 15},
 		{"}", 16},
 	}},
+	{"lua-simple", []tokenLine{
+		{"http", 1},
+		{"{", 1},
+		{"server", 2},
+		{"{", 2},
+		{"set_by_lua", 3},
+		{"$res", 3},
+		{" return 32 + math.cos(32) ", 3},
+		{";", 3},
+		{"}", 4},
+		{"}", 5},
+	}},
 }

 func TestLex(t *testing.T) {

which don't need additional rules in the lexer

That may be, but adding some additional tests that prove that fact would be nice. My example above demonstrates at least one *_by_lua directive that works without any changes to the lexer.

Approved, but I still would like it if there were some lexer tests. The analyzer tests are great, but some more coverage to prove the lexer works as well (even though we know it should) would make this more complete.

@ornj added a lexer test for Lua

@xynicole looks good!


add support for FileSize in TB

Currently the default value of 'exceeds' attribute of 'IfAccumulatedFileSize' is Long.MAX_VALUE, which is considerably larger than 1000 TB itself. Hence adding support for specifying 'exceeds' parameter in TB (TeraBytes).


Use condition name for 'Condition' node in pipeline run child nodes

Now if task has condition we add item in the tree with task name not with condition name:

We need to use condition name for that tree item.

@siamaksade We are showing condition run as taskrun nodes, but intellij-tekton add condition run as child to taskrun, see https://github.com/redhat-developer/intellij-tekton/pull/94
Should we alight with them?

I just want to add that we display conditions in two different ways based on the position in the tree. The one Yevhen described, as children of a taskrun node under a pipelinerun node and as normal taskrun nodes under the taskruns root node.
We took this decision because we thought it would be clearer from a user perspective to understand which condition failed and what was the task it was related to when starting a pipeline, but we show them as normal taskrun nodes under taskrun root node because they are treated as taskruns in tekton.
BTW we are open to suggestion as well. If you find a better solution we are always ready to steal it from vscode ;) And also, if you need any other info, feel free to ask :)

I was going to ask for this, @evidolob looks like you have beaten me to it. I think the way intellij-tekton shows conditions on a pipelinerun is more helpful, +1 to converge on that.


fix(ci): skip task with secrets from for PullRequest

hi @jafin , this is not perfect but it should allow to run unit test from fork pullrequest.
We may set up a working branch in order to autodeploy demo and alpha-beta after a merge.

@guillaume-chervet thanks a good improvement!


DLRS Account Trigger issue

Hello,
I received an error from the DLRS Account Trigger as below:
caused by: System.DmlException: Update failed. First exception on row 0 with id<PHONE_NUMBER>5jFDKAA2; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, dlrs_AccountTrigger: execution of AfterUpdate
Can someone help with this please?
Many thanks!

Hi, thank you we are not experiencing the issue anymore.
Best regards,
Joana
From: Heber @.>
Sent: 15 March 2023 20:42
To: SFDO-Community/declarative-lookup-rollup-summaries @.>
Cc: Joana Matos @.>; Mention @.>
Subject: Re: [SFDO-Community/declarative-lookup-rollup-summaries] DLRS Account Trigger issue (Issue #1119)
[EXTERNAL EMAIL] DO NOT CLICK links or attachments unless you recognize the sender and know the content is safe.
@JMatos99https://github.com/JMatos99 are you still experiencing this issue? Would you be able to provide additional details related to your configuration? I don't think the error message above gives us much to go on for debugging.
Thanks!
—
Reply to this email directly, view it on GitHubhttps://github.com/SFDO-Community/declarative-lookup-rollup-summaries/issues/1119#issuecomment-1470810608, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AXF2AZRMGQPGE772DS2O5PDW4ISQ3ANCNFSM5LMKMREQ.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>

Thank you for the response! Glad it is no longer a problem.


Javascript in ionic template can't working

I have no idea why the script tag can't working, here is the reproduce step: (ionic cli 1.3.10)
1.ionic start mytab
2.add following to templates/chat-detail.htm in ion-content

3.ionic serve --lab
4.navigate to chat detail page,the script couldn't work
why is that happened?

Greetings @jues!
My sensors indicate that you need to update your issue through our custom issue form. We are now requiring all issues to be submitted this way, to ensure that we have all of the information necessary to fix them as quickly as possible.
Click Here To Update Your Issue
I will have no choice but to close this issue if it is not resubmitted through the form. Please fill out the rest of the form, so that I may use my friendly robot powers to assist you.
Thank you!


Add support for PHP version "latest"

Describe the feature
Hi, for some of my GH action runs, I'd like them to run on the latest PHP (7.4 at the time of writing), without having to think about updating it in the config every time a new version is released. I imagined I would be able to specify php-version: latest, but according to the documentation, it's not so.
I would even propose making it the default choice, but that's up to you...
Version

[x] I have checked releases and the feature is missing in the latest patch version of v2.

Underlying issue
Having to remember to update the PHP version every year
Describe alternatives
Doing it by hand...
Are you willing to submit a PR?
Yes, if I know the feature is considered merge-able. But someone would probably have to maintain this...

I did not add aliases like latest for PHP versions specifically because it would not be a good practice. With aliases deprecation warning with minor releases can be missed as the workflow continues to run successfully unattended until it breaks when a major version is released.
That said, if you want to do this, here is how -

In a single job, do not specify php-version input, it will default currently to 7.4

For example: setup default version
- name: Setup PHP
  uses: shivammathur/setup-php@v2
  with:
    extensions: intl  #inputs other than php-version

In a matrix job, use null in the matrix for php versions and specify inputs using env instead of with.

For example to have a workflow with 7.3 and the default (7.4)
strategy:
  matrix:
    php-versions: [7.3, null]

- name: Setup PHP
  uses: shivammathur/setup-php@v2
  env:
    php-version: ${{ matrix.php-version }}

Hi,
well, yes and no - For things like unit tests, I wouldn't use it, but for things like building a library, where PHP is just a runtime, I see no issue with it...
I noticed the field having a default in action.yml, but it's also marked as required, wouldn't it cause an issue to omit it?
Thanks!

ok,
Although It won't have any issues to use null as it would be valid YAML. It uses the default value when php-version is not specified or it is null.
I will add support for latest in next release as that would make sense.

@marekdedic latest will work now
- name: Setup PHP
  uses: shivammathur/setup-php@v2
  env:
    php-version: latest

Thanks!


$$restProps behavior on FileUploader differs from documentation

The documentation at https://carbon-svelte.vercel.app/components/FileUploader says that:
$$restProps
FileUploaderButton spreads $$restProps to the input element.

However, $$restProps are spread over the container div, not the input element.
For example, line 79 of FileUploader.svelte has:
<div
  class:bx--form-item="{true}"
  {...$$restProps}
  on:click
  on:mouseover
  on:mouseenter
  on:mouseleave
>

Simple fix, but:

Is this intended behavior (maybe the docs are outdated/wrong)
Should this be fixed, given the api may have been used by others?

Also, would it be a good idea to check for this in other components too? I've checked all the file upload components, and this applies to all of them. TextInput and PasswordInput have $$restProps on the input element, as expected.  Maybe there are others where this error exist too.
Would be more than happy making a PR for this if it's worth it :)

I got a bit confused here I believe. The doc only says that FileUploaderButton spreads $$restProps on the input, which is correct. So maybe the spreading of $$restProps on the div is intentional, but undocumented behavior? #344 suggests that FileUploader isn't properly documented, so this is probably the case.

Those are two separate components

restProps is forwarded to the input element in FileUploaderButton, which is intended
restProps is forwarded to a div element in FileUploader, which is intended

Ah ok. Thanks!


Improve the logic behind cutting a new chunk and cap the size of a chunk

Proposal
We have been trying to fill a chunk (the one that uses the Gorilla compression for float value samples, called XORChunk internally) with up to 120 samples with some more logic around to keep the number of samples in a chunk consistent for a series within a block. Compacting multiple blocks together also caps it at 120 samples.
This is insufficient because depending on how well some samples compress, the size of the chunk can grow big, to a few KB.
We should additionally be limiting the size of the chunk. While it may or may not benefit Prometheus directly, the predictability of a chunk size can greatly help downstream users who can later backport any optimizations back to Prometheus.
Without any numbers in hand, I propose to cap at 1024B for a chunk with float samples (there is https://github.com/prometheus/prometheus/issues/11219 for histogram chunks).
cc @beorn7 @bboreham @bwplotka @pracucci @dimitarvdimitrov

I'm supportive of this change, but I'm wondering if your proposal is just about chunks cut in the TSDB head or to enforce it in the compactor too. I'm asking because both Mimir and Thanos store-gateways are very inefficient when a chunk is > 16KB (which is the max estimated size of a chunk). In Mimir we recently changed how we fetch chunks, so we probably have a bit more room to relax this requirement, but generally speaking would be very important for us knowing that the max chunks size (in bytes) is capped to a well known value, both when chunks are cut from TSDB head and rewritten by compactor (because of the deduplication).

I meant it across the board - wherever we create/merge chunks. So compaction is covered. I will update the issue description.

@codesome i would like to work on this enhancement, if nobody else is working on it


Use of Retrieve and Query in a Parameter

The expression.xsd file describes a ParameterDef as taking a possible default attribute, which is defined as an arbitrary expression. Things like
parameter IntParameter default 0
parameter DateTimeParameter default DateTime(2018, 1, 1, 0, 0, 0)

make enough sense, but the spec doesn't seem to imply that a query or retrieve wouldn't be acceptable. At least, they seem permissible to the compiler:
library Query version '1'

using FHIR version '3.0.0'

include FHIRHelpers called FHIRHelpers

parameter RetrieveParameter default [Condition]
parameter QueryParameter List<FHIR.Condition> default ([Condition] C where C.clinicalStatus = 'active')

context Patient

define GetRetrieveParameter: RetrieveParameter
define GetQueryParameter: QueryParameter

RetrieveParameter appears to compile without any warning. QueryParameter however, throws "Internal translator error" annotations starting at the default value, but still seems to compile into an AST just fine. Interestingly, if the type is removed from QueryParameter, the query still compiles as well as if it was there, but another "semantic" annotation error is thrown saying that the compiler "Could not determine parameter type for parameter QueryParameter", which seems anomalous since the AST appears to have gotten all the correct type information in the node resultTypeSpecifiers.
The big question is that since parameters have no notion of their Context, (assuming a Retrieve in a parameter is acceptable) it would seem we would only know whether it should pull all resources for one patient, or for all patients based on where the parameter is accessed. I suppose this would mean a single parameter could have two different meanings depending not on the way the value expression is declared, but depending on where that value expression is evaluated.
Since it also seems that parameters can reference previously defined parameters in their default values, this would seem to imply parameters would have to lazily evaluate, since their values in some instances are dependent on the calling context.
What are some of the expected semantics of Retrieves and Queries in parameter default values, and how should those expected to be evaluated against differing Contexts?

That's a great question, and a great analysis of the implications of having retrieves as default parameter values.  @brynrhodes should confirm, but I don't think we ever intended for retrieves to be used as default values.  While the specification is not clear about this, I think that default parameter values are intended to be static values, with perhaps the exception of the system functions: Today() and Now().
Is there a strong use case for using a retrieve as a default value?  As you noted, supporting such a thing would introduce significant implementation burden.  I believe that you could accomplish the same thing via other means.  For example, see below for an alternate approach to accomplishing what you described below:
library Query version '1'

using FHIR version '3.0.0'

include FHIRHelpers version '3.0.0' called FHIRHelpers

parameter RetrieveParameter List<FHIR.Condition> default null
parameter QueryParameter List<FHIR.Condition> default null

context Patient

define GetRetrieveParameter:
  if RetrieveParameter is not null then RetrieveParameter
  else [Condition]

define GetQueryParameter:
  if QueryParameter is not null then QueryParameter
  else [Condition] C where C.clinicalStatus = 'active'

This approach works today (I was able to successfully compile it without errors).

Thanks for the response @cmoesel. I can't personally think of a case where using a retrieve in a default value expression would be necessary, or at least any more desirable than the approach you lay out. My main concern was whether an implementation would have to support such expressions. If we don't have to, then as you say, it'll remove a major implementation concern.
If @brynrhodes confirms your assumption, it might help to log a clarifying issue to STU that requests updated doc stating parameters' default values can only be constructed from static values, or to perhaps even to log an issue to the CQL-to-ELM compiler that explicitly rejects retrieve in a parameter (just a suggestion on that one though, open to more discussion).

Hi @bdrillard, thank you for the detailed discussion. I agree with @cmoesel, parameters are intended to be "evaluable at compile-time", so they shouldn't be allowed to access retrieves, or expressions defined in the library, or other parameters. But you're right, the spec is not clear on this. I've logged an STU comment #1553 to address this issue.
Can you both take a look when you get a chance and let me know if you agree with the proposal there?

Bryn -- the change looks good.  The only thing I thought of considering was if we should allow Today() or Now() as valid default values.  That seems like something for which there might be use cases.
That said, drawing the line at compile-time evaluation makes the line very clear -- and probably simplifies implementation further -- so I'm OK w/ not supporting Today() or Now() (especially since that use case can still be accomplished via expressions in the CQL).

Thanks for submitting the STU comment, @brynrhodes. I think the definition you recommend is the proper one (purely evaluable at compile-time). I also agree with @cmoesel in that it makes sense to not allow Today() and Now() in parameters, since a DRY-enough pattern can be written using regular CQL expressions when Today() and Now() are necessary. For authors who might discover this thread later, an example is probably something like,
...

// This parameter can be overridden by the User
parameter MyYearInterval Interval<DateTime> default null

context Patient

// This expression provides the 'default', and can be used throughout the library
define DefaultYearInterval:
    Interval[DateTime((year from Today()) - 1, 1, 1, 0, 0, 0), DateTime((year from Today()), 1, 1, 0, 0, 0)]

define MyOtherExpression:
    if MyYearInterval is not null then MyYearInterval else DefaultYearInterval ...

...


Support polymorphic entity views in JAX-RS endpoint

See https://stackoverflow.com/questions/67232469/blaze-persistence-entityview-inheritance-mapping for details.
The idea is to make use of @JsonTypeInfo from Jackson to construct a subtype instead of the declared type.

Hi, I'm the one who made the question on stackoverflow. I needed to deserialize (in a jaxws operation) my entity views organized in a hierarchy. I made it work using jackson annotation for inheritance. This is the base view:
@EntityView(Content.class)
@EntityViewInheritance
@JsonTypeInfo(
        use = JsonTypeInfo.Id.NAME,
        property = "type")
@JsonSubTypes({
        @JsonSubTypes.Type(value = DescriptiveContentView.class, name = "descriptive"),
        @JsonSubTypes.Type(value = MediaContentView.class, name = "media"),
        @JsonSubTypes.Type(value = WebContentView.class, name = "web")
})
@JsonTypeName("content")
public abstract class ContentView {
    @IdMapping
    public abstract Long getId();
    public abstract boolean isPublished();
}

And here's a subview:
@EntityView(DescriptiveContent.class)
@JsonTypeName("descriptive")
public abstract class DescriptiveContentView extends ContentView {
    public abstract Set<LocalizedParagraphView> getLocalizedParagraphs();
}

Hi, so does this configuration you have there already work? Or is that what you would like to use?

This configuration already works
Il giorno lun 26 apr 2021 alle 21:08 Christian Beikov <
@.***> ha scritto:

Hi, so does this configuration you have there already work? Or is that
what you would like to use?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Blazebit/blaze-persistence/issues/1300#issuecomment-827077630,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAEOFEG4ZBXDSDWYOFQ5BZDTKW235ANCNFSM43SON32Q
.

Interesting. So what is it that does not work?

Nothing. It works like a charm. I hadn't try the Jackson annotations cause I thought they were not supported.

Ahh, that's nice. I wasn't aware that this is working correctly to be honest 😄


updated readme file

Suggestion - On clicking the city, the link should open in a new tab.

Thanks @vaibhavvijay9 :)


agdaPackages.cubical: 0.2 -> 0.3pred5030a9

Motivation for this change
0.2 does not build with agda 2.6.2
Things done

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

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

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Relase notes)

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

[x] Fits CONTRIBUTING.md.

agdaPackages.cubical doesn't build on master and does on this branch, merging.


To enable ASR Block abuse of exploited vulnerable signed drivers, use the following cmdlet

The code for "To enable ASR Block abuse of exploited vulnerable signed drivers, use the following cmdlet":
"& {&'Add-MpPreference' -AttackSurfaceReductionRules_Ids 56a863a9-875e-4185-98a7-b882c64b5ce5 -AttackSurfaceReductionRules_Actions Enabled"}
doesn't work.
I get
In Zeile:1 Zeichen:140
+ ... 4185-98a7-b882c64b5ce5 -AttackSurfaceReductionRules_Actions Enabled"}
+                                                                         ~
Unerwartetes Token "}" in Ausdruck oder Anweisung.
+ CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken

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

ID: 1a360dd4-bb59-9f48-b182-8eaaf9e20a82
Version Independent ID: 54c5dde8-f8f1-4dd3-5408-12d2dc480970
Content: Enable attack surface reduction rules
Content Source: microsoft-365/security/defender-endpoint/enable-attack-surface-reduction.md
Product: m365-security
Technology: mde
GitHub Login: @Dansimp
Microsoft Alias: dansimp

@beerisgood Thank you for your feedback. We have made changes to the document via PR#https://github.com/MicrosoftDocs/microsoft-365-docs/pull/5179
Thanks
Sri

@msbemba Thank you very much for the contribution and updating the documentation with PR. @beerisgood Hope this update is helpful for you. Thanks for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.

Thanks!


Can't use cors plugin along with basic-auth one

I just discovered that when a browser is making an OPTIONS request to check which CORS operations are permitted, request headers (like the "Authorization" one) are removed by the browser.
See: http://stackoverflow.com/questions/15734031/why-does-the-preflight-options-request-of-an-authenticated-cors-request-work-in#answer-15734032
So it's not possible to use the cors plugin along with the basic-auth one, since the latter will block all the OPTIONS requests as they will always come unauthenticated.
Would it be possible to make basic-auth (and also other auth plugins I guess) not enforce authentication for OPTIONS requests?

Just retried today and could not reproduce. When have a look at the source code, the cors plugin is indeed executed before the basic-auth one.
Not sure what happened yesterday. Sorry about that.


Rule single_import_per_statement Behaving Incorrectly in PSR-12 Ruleset

Bug report
The latest release, and live docs, show that the single_import_per_statement is applied to PSR-12:
https://cs.symfony.com/doc/rules/import/single_import_per_statement.html

This rule is applied to PSR-12 and has a false-positive on grouped imports.

Example
Here's an example of a warning triggered while using only PSR-12 rules:
PHP CS Fixer rule violation: single_import_per_statement

The issue appears to be one of two things:

This rule doesn't understand grouped imports, and should
This rule is behaving correctly and shouldn't be applied to PSR-12

PSR-12 does allow group use statement syntax:
https://www.php-fig.org/psr/psr-12/

Hi,
Thanks for bringing this to our attention, I've made a proposal here to remove the rule from the PSR12 set: https://github.com/FriendsOfPHP/PHP-CS-Fixer/pull/6415


Improve page load by moving hidden navigation div the bottom of the page.

The Navigation  was one of the first things to load in browser, yet it's
hidden on page load. This means a larger "avatar" image would be one of the
first elements that the browser spends times loading, even though it may never
be viewed.
After making this change, the browser renders the page just the same, but I
saw total load times on my own blog drop from about 3 seconds to 2.5 seconds--
A notable improvement.

Why was this rejected?

Because, believe it or not... moving the navigation to the bottom of the page actually hurt page speed. I ran it against both Google Page Speed insights and WebPagetest, and both showed a dip in scoring and speed indexes after the move.
It went from scoring 70/100 (mobile) to 69/100, and on desktop 85/100 to 80/100. WebPagetest gave it a first view speed index of 1902 (lower is better) which jumped to 2102 after moving the navigation.
HPSTR - home page (nav up top)

HPSTR - home page (nav moved to bottom)

In my experience moving around bits of HTML and images doesn't really help all that much since the browsers do a lot of magic nowadays. Where the big gains come are from inlining the critical CSS into the <head> of your pages and deferring scripts, webfonts, and other assets so they aren't blocking the content from loading first.

Thanks for the testing and reply.
On Tue, Feb 9, 2016 at 11:13 AM, Michael Rose<EMAIL_ADDRESS>wrote:

Because, believe it or not... moving the navigation to the bottom of the
page actually hurt page speed. I ran it against both Google Page Speed
insights https://developers.google.com/speed/pagespeed/insights/ and
WebPagetest http://www.webpagetest.org/, and both showed a dip in
scoring and speed indexes after the move.
It went from scoring 70/100 (mobile) to 69/100, and on desktop
85/100 to 80/100. WebPagetest gave it a first view speed index of
1902 (lower is better) which jumped to 2102 after moving the
navigation.
HPSTR - home page (nav up top)
[image: hpstr-pre-mobile]
https://cloud.githubusercontent.com/assets/1376749/12921996/bbe55d1e-cf1d-11e5-9fad-c5397ae2fb4a.jpg
[image: hpstr-pre-desktop]
https://cloud.githubusercontent.com/assets/1376749/12921999/bd767500-cf1d-11e5-9676-35ab545f8348.jpg
[image: hpstr-pre-webpagetest]
https://cloud.githubusercontent.com/assets/1376749/12922006/c2297336-cf1d-11e5-974e-d9760146f2b0.jpg
HPSTR - home page (nav moved to bottom)
[image: hpstr-post-mobile]
https://cloud.githubusercontent.com/assets/1376749/12922008/c5ed0636-cf1d-11e5-934c-f43dc697a184.jpg
[image: hpstr-post-desktop]
https://cloud.githubusercontent.com/assets/1376749/12922011/c87dc476-cf1d-11e5-8249-629e350a03b6.jpg
[image: hpstr-post-webpagetest]
https://cloud.githubusercontent.com/assets/1376749/12922015/cbcd072c-cf1d-11e5-872e-b15c3d3635ec.jpg
In my experience moving around bits of HTML and images doesn't really help
all that much since the browsers do a lot of magic nowadays. Where the big
gains come are from inlining the critical CSS into the  of your
pages and deferring scripts, webfonts, and other assets so they aren't
blocking the content from loading first.
—
Reply to this email directly or view it on GitHub
https://github.com/mmistakes/hpstr-jekyll-theme/pull/121#issuecomment-181935018
.

--
Mark Stosberg
Senior Systems Engineer
RideAmigos


EarlGrey Travis Tests fail on Xcode 8.3.3 after Travis moved their 8.3 targets to it.

https://blog.travis-ci.com/2017-06-06-xcode-833-is-here

is this fixed?

Not yet, I'll have to add it to the travis matrix.


Drop measurement was taking to long due to transactions

Previously, if you had 10k series, it was creating 10k bolt transactions, which of course, takes a lot of time.  Now, it creates significantly less transactions (only as many as you have shards).  I was seeing results of DROP MEASUREMENT taking a couple minutes, and now takes less than 20ms.

As much as I would love to see tens of thousands of BoltDB transactions, this seems like a good idea to me. :shipit:

LGTM :shipit:


Fix warnings in API docs

API docs created in #388.
During building there are warnings.

[ ] Enable treating warnings as errors
[ ] Fix warnings

API docs are getting redesigned and this particular issue does not have much relevant information for actionable work


animations start outside viewport

Is there a way to pause an animation until it is available on viewport ?

i wrote a guide for doing this https://docs.rombo.co/tailwind/scroll-animations